Commit f916b030 f916b030f805fdb406d9071fb08b291e4e022763 by xianghan

1.优化sql

2.添加缓存
1 parent 31b1400d
Showing 52 changed files with 1223 additions and 824 deletions
...@@ -32,10 +32,8 @@ public class MemberProfileController { ...@@ -32,10 +32,8 @@ public class MemberProfileController {
32 @RequestMapping(value = "/update") 32 @RequestMapping(value = "/update")
33 @ApiOperation("修改会员属性") 33 @ApiOperation("修改会员属性")
34 @AnonymousAccess 34 @AnonymousAccess
35 @Deprecated
36 public ResultInfo update(@Validated(value = {UpdateGroup.class}) @RequestBody MemberProfile resources) { 35 public ResultInfo update(@Validated(value = {UpdateGroup.class}) @RequestBody MemberProfile resources) {
37 36 log.info("memberProfile ==>> update ==>> resources ===>> {}",resources);
38 log.info("memberProfile ==>> update ==>> resources ===>> [{}]",resources);
39 MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.updateMemberProfileAndMember(resources); 37 MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.updateMemberProfileAndMember(resources);
40 return ResultInfo.success(memberProfileDTO); 38 return ResultInfo.success(memberProfileDTO);
41 } 39 }
...@@ -44,8 +42,7 @@ public class MemberProfileController { ...@@ -44,8 +42,7 @@ public class MemberProfileController {
44 @ApiOperation("修改会员属性并同步会员信息") 42 @ApiOperation("修改会员属性并同步会员信息")
45 @AnonymousAccess 43 @AnonymousAccess
46 public ResultInfo updateMemberProfileAndMember(@Validated @RequestBody MemberProfile resources) { 44 public ResultInfo updateMemberProfileAndMember(@Validated @RequestBody MemberProfile resources) {
47 log.info("MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]",resources); 45 log.info("MemberProfileServiceImpl ==>> update ==>> resources ===>> {}",resources);
48
49 MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.updateMemberProfileAndMember(resources); 46 MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.updateMemberProfileAndMember(resources);
50 return ResultInfo.success(memberProfileDTO); 47 return ResultInfo.success(memberProfileDTO);
51 } 48 }
...@@ -55,9 +52,7 @@ public class MemberProfileController { ...@@ -55,9 +52,7 @@ public class MemberProfileController {
55 @AnonymousAccess 52 @AnonymousAccess
56 @Deprecated 53 @Deprecated
57 public ResultInfo create(@Validated(value = {CreateGroup.class}) @RequestBody MemberProfile resources) { 54 public ResultInfo create(@Validated(value = {CreateGroup.class}) @RequestBody MemberProfile resources) {
58 55 log.info("memberProfile ==>> update ==>> resources ===>> {}",resources);
59 log.info("memberProfile ==>> update ==>> resources ===>> [{}]",resources);
60
61 MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.createMemberProfileAndSyncMember(resources); 56 MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.createMemberProfileAndSyncMember(resources);
62 return ResultInfo.success(memberProfileDTO); 57 return ResultInfo.success(memberProfileDTO);
63 } 58 }
......
...@@ -175,27 +175,26 @@ public class MemberProfileServiceImpl implements MemberProfileService { ...@@ -175,27 +175,26 @@ public class MemberProfileServiceImpl implements MemberProfileService {
175 return memberProfileDTO; 175 return memberProfileDTO;
176 } 176 }
177 177
178 private void synchronizedMemberData(MemberProfile resources, MemberDTO memberDTO) { 178 private void synchronizedMemberData(MemberProfile memberProfile, MemberDTO memberDTO) {
179 179
180 log.info("updateMemberProfileAndMember ==>> resources ==>> [{}]",resources); 180 log.info("updateMemberProfileAndMember ==>> resources ==>> [{}]",memberProfile);
181 181
182 memberDTO.setId(resources.getMemberId()); 182 Member member = new Member();
183 if(StringUtils.isNotBlank(resources.getRealname())) { 183 member.setId(memberDTO.getId());
184 memberDTO.setNickname(resources.getRealname()); 184 member.setCode(memberDTO.getCode());
185 if(StringUtils.isNotBlank(memberProfile.getRealname())) {
186 member.setNickname(memberProfile.getRealname());
185 } 187 }
186 if(Objects.nonNull(resources.getGender()) && resources.getGender() != -1) { 188 if(Objects.nonNull(memberProfile.getGender()) && memberProfile.getGender() != -1) {
187 memberDTO.setGender(resources.getGender()); 189 member.setGender(memberProfile.getGender());
188 } 190 }
189 if(StringUtils.isNotBlank(resources.getBirthday())) { 191 if(StringUtils.isNotBlank(memberProfile.getBirthday())) {
190 memberDTO.setBirthday(resources.getBirthday()); 192 member.setBirthday(memberProfile.getBirthday());
191 } 193 }
192 if(StringUtils.isNotBlank(resources.getAvatarUrl())) { 194 if(StringUtils.isNotBlank(memberProfile.getAvatarUrl())) {
193 memberDTO.setAvatarUrl(resources.getAvatarUrl()); 195 member.setAvatarUrl(memberProfile.getAvatarUrl());
194 } 196 }
195 197
196 Member member = new Member(); 198 this.memberService.doUpdateMemberAvatarUrlAndNicknameAndGender(member);
197 BeanUtils.copyProperties(memberDTO,member);
198
199 this.memberService.update(member);
200 } 199 }
201 } 200 }
......
...@@ -23,24 +23,48 @@ public interface MemberRepository extends JpaRepository<Member, Long>, JpaSpecif ...@@ -23,24 +23,48 @@ public interface MemberRepository extends JpaRepository<Member, Long>, JpaSpecif
23 23
24 Optional<Member> findByIdOrCode(Long id,String code); 24 Optional<Member> findByIdOrCode(Long id,String code);
25 25
26
27 @Modifying 26 @Modifying
28 @Query(value = "UPDATE `uc_member` SET `user_iptv_id` = ?2, `update_time` = ?3 , `bind_iptv_platform_type`= 0, " + 27 @Query(value = "UPDATE `uc_member` SET `user_iptv_id` = ?2, `update_time` = ?3 , `bind_iptv_platform_type`= 0, " +
29 "`bind_iptv_time`=?3 WHERE `id` = ?1", nativeQuery = true) 28 "`bind_iptv_time`=?3 WHERE `id` = ?1", nativeQuery = true)
30 void updateUserIptvIdById(Long id, Long userIptvId, LocalDateTime now); 29 void updateUserIptvIdById(Long id, Long userIptvId, LocalDateTime now);
31 30
32 @Modifying 31 @Modifying
33 @Query(value = "UPDATE `uc_member` SET `exp` = :#{#resources.exp}, `level` = :#{#resources.level} , `update_time`= now() " + 32 @Query(value = "UPDATE `uc_member` SET `exp` = :#{#resources.exp}, " +
33 "`level` = :#{#resources.level} , `update_time`= now() " +
34 " WHERE `id` = :#{#resources.id}", nativeQuery = true) 34 " WHERE `id` = :#{#resources.id}", nativeQuery = true)
35 void updateExpAndLevel(@Param("resources") Member member); 35 Integer updateExpAndLevel(@Param("resources") Member member);
36 36
37 @Modifying 37 @Modifying
38 @Query(value = "UPDATE `uc_member` SET `points` = :#{#resources.points}, `due_points` = :#{#resources.duePoints} , `update_time`= now() " + 38 @Query(value = "UPDATE `uc_member` SET `points` = :#{#resources.points}, " +
39 "`due_points` = :#{#resources.duePoints} , `update_time`= now() " +
39 " WHERE `id` = :#{#resources.id}", nativeQuery = true) 40 " WHERE `id` = :#{#resources.id}", nativeQuery = true)
40 void updatePointAndDuePoint(@Param("resources") Member resources); 41 Integer updatePointAndDuePoint(@Param("resources") Member resources);
42
43 @Modifying
44 @Query(value = "UPDATE `uc_member` SET `coupon_amount` = :#{#resources.couponAmount}, " +
45 "`due_coupon_amount` = :#{#resources.dueCouponAmount} , `update_time`= now() " +
46 " WHERE `id` = :#{#resources.id}", nativeQuery = true)
47 Integer doUpdateMemberCoupon(@Param("resources") Member member);
48
49 @Query(value = "SELECT um.* FROM uc_member um LEFT JOIN uc_user_tv tv ON um.id = tv.member_id " +
50 " WHERE tv.platform_account = ?1 ", nativeQuery = true)
51 Optional<Member> findByPlatformAccount(String platformAccount);
41 52
42 @Modifying 53 @Modifying
43 @Query(value = "UPDATE `uc_member` SET `coupon_amount` = :#{#resources.couponAmount}, `due_coupon_amount` = :#{#resources.dueCouponAmount} , `update_time`= now() " + 54 @Query(value = "UPDATE `uc_member` SET `vip` = :#{#resources.vip}, " +
55 "`vip_expire_time` = :#{#resources.vipExpireTime} , `update_time`= now() " +
44 " WHERE `id` = :#{#resources.id}", nativeQuery = true) 56 " WHERE `id` = :#{#resources.id}", nativeQuery = true)
45 void doUpdateMemberCoupon(@Param("resources") Member member); 57 Integer updateMemberVipAndVipExpireTime(@Param("resources") Member member);
58
59 @Modifying
60 @Query(value = "UPDATE `uc_member` SET `user_iptv_id` = :#{#resources.userIptvId}, `update_time` = now() , " +
61 " `bind_iptv_platform_type`= :#{#resources.bindIptvPlatformType}, " +
62 " `bind_iptv_time`=:#{#resources.bindIptvTime} WHERE `id` = :#{#resources.id}", nativeQuery = true)
63 Integer updateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(@Param("resources") Member member);
64
65 @Modifying
66 @Query(value = "UPDATE `uc_member` SET `avatar_url` = :#{#resources.avatarUrl}, `update_time` = now() , " +
67 " `nickname`= :#{#resources.nickname}, " +
68 " `gender`=:#{#resources.gender} WHERE `id` = :#{#resources.id}", nativeQuery = true)
69 Integer updateMemberAvatarUrlAndNicknameAndGender(@Param("resources") Member resource);
46 } 70 }
......
...@@ -52,8 +52,8 @@ public class MemberController { ...@@ -52,8 +52,8 @@ public class MemberController {
52 @AnonymousAccess 52 @AnonymousAccess
53 @ApiOperation("手动修改vip") 53 @ApiOperation("手动修改vip")
54 public ResultInfo doUpdateVipByCode(@Validated(value = {UpdateGroup.class}) @RequestBody Member resources) { 54 public ResultInfo doUpdateVipByCode(@Validated(value = {UpdateGroup.class}) @RequestBody Member resources) {
55 log.info("member ==>> doUpdateVipByCode ==>> param ==>> [{}]",resources); 55 log.info("member ==>> doUpdateVipByCode ==>> param ==>> {}",resources);
56 this.memberOperationService.updateMemberVip(resources); 56 this.memberOperationService.doUpdateMemberVipAndVipExpireTime(resources);
57 return ResultInfo.success(); 57 return ResultInfo.success();
58 } 58 }
59 59
...@@ -67,7 +67,6 @@ public class MemberController { ...@@ -67,7 +67,6 @@ public class MemberController {
67 if (StringUtils.isNotBlank(code)) { 67 if (StringUtils.isNotBlank(code)) {
68 MemberDTO memberDTO = this.memberOperationService.findByCode(code); 68 MemberDTO memberDTO = this.memberOperationService.findByCode(code);
69 resources.setId(memberDTO.getId()); 69 resources.setId(memberDTO.getId());
70 // BeanUtils.copyProperties(resources, memberDTO);
71 } 70 }
72 71
73 MemberDTO memberDTO = this.memberOperationService.update(resources); 72 MemberDTO memberDTO = this.memberOperationService.update(resources);
......
...@@ -40,13 +40,6 @@ public interface MemberService { ...@@ -40,13 +40,6 @@ public interface MemberService {
40 MemberDTO create(Member resources); 40 MemberDTO create(Member resources);
41 41
42 /** 42 /**
43 * 创建并返回会员
44 * @param resources 会员
45 * @return Member
46 */
47 MemberDTO createAndReturnMember(Member resources);
48
49 /**
50 * 修改会员 43 * 修改会员
51 * @param resources 44 * @param resources
52 */ 45 */
...@@ -91,4 +84,31 @@ public interface MemberService { ...@@ -91,4 +84,31 @@ public interface MemberService {
91 * @return 84 * @return
92 */ 85 */
93 MemberDTO doUpdateMemberCoupon(Member member); 86 MemberDTO doUpdateMemberCoupon(Member member);
87
88 /**
89 *
90 * @param platformAccount
91 * @return
92 */
93 MemberDTO findByPlatformAccount(String platformAccount);
94
95 /**
96 *
97 * @param member
98 * @return
99 */
100 MemberDTO doUpdateMemberVipAndVipExpireTime(Member member);
101
102 /**
103 *
104 * @param member
105 * @return
106 */
107 MemberDTO doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(Member member);
108
109 /**
110 *
111 * @param member
112 */
113 MemberDTO doUpdateMemberAvatarUrlAndNicknameAndGender(Member member);
94 } 114 }
......
...@@ -9,17 +9,14 @@ import com.topdraw.business.module.member.repository.MemberRepository; ...@@ -9,17 +9,14 @@ import com.topdraw.business.module.member.repository.MemberRepository;
9 import com.topdraw.business.module.member.service.MemberService; 9 import com.topdraw.business.module.member.service.MemberService;
10 import com.topdraw.business.module.member.service.dto.MemberDTO; 10 import com.topdraw.business.module.member.service.dto.MemberDTO;
11 import com.topdraw.business.module.member.service.mapper.MemberMapper; 11 import com.topdraw.business.module.member.service.mapper.MemberMapper;
12 import com.topdraw.config.RedisKeyConstants;
12 import com.topdraw.exception.BadRequestException; 13 import com.topdraw.exception.BadRequestException;
13 import com.topdraw.exception.GlobeExceptionMsg; 14 import com.topdraw.exception.GlobeExceptionMsg;
14 import com.topdraw.utils.RedisUtils; 15 import com.topdraw.utils.RedisUtils;
15 import com.topdraw.utils.ValidationUtil;
16 import lombok.extern.slf4j.Slf4j; 16 import lombok.extern.slf4j.Slf4j;
17 import org.apache.commons.lang3.StringUtils; 17 import org.apache.commons.lang3.StringUtils;
18 import org.springframework.beans.BeanUtils; 18 import org.springframework.beans.BeanUtils;
19 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.cache.annotation.CacheEvict;
21 import org.springframework.cache.annotation.CachePut;
22 import org.springframework.cache.annotation.Cacheable;
23 import org.springframework.stereotype.Service; 20 import org.springframework.stereotype.Service;
24 import org.springframework.transaction.annotation.Propagation; 21 import org.springframework.transaction.annotation.Propagation;
25 import org.springframework.transaction.annotation.Transactional; 22 import org.springframework.transaction.annotation.Transactional;
...@@ -45,7 +42,6 @@ public class MemberServiceImpl implements MemberService { ...@@ -45,7 +42,6 @@ public class MemberServiceImpl implements MemberService {
45 @Autowired 42 @Autowired
46 private RedisUtils redisUtils; 43 private RedisUtils redisUtils;
47 44
48
49 @Override 45 @Override
50 public String findCodeById(Long id) { 46 public String findCodeById(Long id) {
51 MemberDTO memberDTO = this.findById(id); 47 MemberDTO memberDTO = this.findById(id);
...@@ -56,35 +52,18 @@ public class MemberServiceImpl implements MemberService { ...@@ -56,35 +52,18 @@ public class MemberServiceImpl implements MemberService {
56 public MemberDTO findById(Long id) { 52 public MemberDTO findById(Long id) {
57 Member member = this.memberRepository.findById(id).orElseGet(Member::new); 53 Member member = this.memberRepository.findById(id).orElseGet(Member::new);
58 return this.memberMapper.toDto(member); 54 return this.memberMapper.toDto(member);
59
60 } 55 }
61 56
62 @Override 57 @Override
63 public MemberDTO findByCode(String code) { 58 public MemberDTO findByCode(String code) {
64
65 Member member = this.memberRepository.findFirstByCode(code).orElseGet(Member::new); 59 Member member = this.memberRepository.findFirstByCode(code).orElseGet(Member::new);
66 ValidationUtil.isNull(member.getId(),"Member","id",code);
67
68 return this.memberMapper.toDto(member);
69
70 }
71
72 private MemberDTO findByIdOrCode(Long id,String code) {
73
74 Member member = this.memberRepository.findByIdOrCode(id,code).orElseGet(Member::new);
75 ValidationUtil.isNull(member.getId(),"Member","param",code);
76
77 return this.memberMapper.toDto(member); 60 return this.memberMapper.toDto(member);
78
79 } 61 }
80 62
81 @Override 63 @Override
82 public List<MemberDTO> findByUserIptvId(Long id) { 64 public List<MemberDTO> findByUserIptvId(Long id) {
83
84 List<Member> memberList = this.memberRepository.findByUserIptvId(id); 65 List<Member> memberList = this.memberRepository.findByUserIptvId(id);
85
86 return this.memberMapper.toDto(memberList); 66 return this.memberMapper.toDto(memberList);
87
88 } 67 }
89 68
90 @Override 69 @Override
...@@ -94,11 +73,11 @@ public class MemberServiceImpl implements MemberService { ...@@ -94,11 +73,11 @@ public class MemberServiceImpl implements MemberService {
94 throw new BadRequestException(GlobeExceptionMsg.MEMBER_ID_AND_CODE_ARE_NULL); 73 throw new BadRequestException(GlobeExceptionMsg.MEMBER_ID_AND_CODE_ARE_NULL);
95 74
96 if (StringUtils.isNotBlank(memberCode)) { 75 if (StringUtils.isNotBlank(memberCode)) {
97 MemberDTO memberDTO = this.findByCode(memberCode); 76 Member member = this.memberRepository.findFirstByCode(memberCode).orElseGet(Member::new);
98 return memberDTO; 77 return this.memberMapper.toDto(member);
99 } else if (Objects.nonNull(id)) { 78 } else if (Objects.nonNull(id)) {
100 MemberDTO memberDTO = this.findById(id); 79 Member member = this.memberRepository.findById(id).orElseGet(Member::new);
101 return memberDTO; 80 return this.memberMapper.toDto(member);
102 } 81 }
103 82
104 return null; 83 return null;
...@@ -106,53 +85,122 @@ public class MemberServiceImpl implements MemberService { ...@@ -106,53 +85,122 @@ public class MemberServiceImpl implements MemberService {
106 85
107 @Override 86 @Override
108 public MemberDTO checkMember(Member member) { 87 public MemberDTO checkMember(Member member) {
109
110 String memberCode = member.getCode(); 88 String memberCode = member.getCode();
111 Long memberId = member.getId(); 89 Long memberId = member.getId();
112
113 return this.checkMember(memberId,memberCode); 90 return this.checkMember(memberId,memberCode);
91 }
92
93 @Override
94 @Transactional(rollbackFor = Exception.class)
95 public MemberDTO doUpdateMemberExpAndLevel(Member resource) {
114 96
97 Integer count = this.memberRepository.updateExpAndLevel(resource);
98 if (Objects.nonNull(count) && count > 0) {
99 Member member = this.memberRepository.findById(resource.getId()).orElseGet(Member::new);
100 return this.memberMapper.toDto(member);
101 }
102
103 return this.memberMapper.toDto(resource);
115 } 104 }
116 105
117 @Override 106 @Override
118 @Transactional(rollbackFor = Exception.class) 107 @Transactional(rollbackFor = Exception.class)
119 public MemberDTO doUpdateMemberExpAndLevel(Member resources) { 108 public MemberDTO doUpdateMemberCoupon(Member resource) {
120 this.redisUtils.doLock("member::code" + resources.getCode()); 109 log.info("修改会员优惠券 =>> {}", resource);
121 try { 110 try {
122 MemberDTO memberDTO = this.findById(resources.getId()); 111 this.redisUtils.doLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
123 if (Objects.nonNull(memberDTO)) { 112
124 this.memberRepository.updateExpAndLevel(resources); 113 Integer count = this.memberRepository.doUpdateMemberCoupon(resource);
114 if (Objects.nonNull(count) && count > 0) {
115 Member member = this.memberRepository.findById(resource.getId()).orElseGet(Member::new);
116 return this.memberMapper.toDto(member);
125 } 117 }
126 return memberDTO; 118
127 } catch (Exception e) { 119 } catch (Exception e) {
128 e.printStackTrace(); 120 log.info("修改会员优惠券,"+e.getMessage());
129 throw e;
130 } finally { 121 } finally {
131 this.redisUtils.doUnLock("member::code" + resources.getCode()); 122 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
132 } 123 }
124
125 return this.memberMapper.toDto(resource);
126 }
127
128 @Override
129 public MemberDTO findByPlatformAccount(String platformAccount) {
130 log.info("从数据库中检索大屏账号对应的会员, platformAccount ==>> {}", platformAccount);
131 Member member = this.memberRepository.findByPlatformAccount(platformAccount).orElseGet(Member::new);
132 return this.memberMapper.toDto(member);
133 } 133 }
134 134
135 @Override 135 @Override
136 @Transactional(rollbackFor = Exception.class) 136 @Transactional(rollbackFor = Exception.class)
137 public MemberDTO doUpdateMemberCoupon(Member member) { 137 public MemberDTO doUpdateMemberVipAndVipExpireTime(Member resource) {
138 // MemberDTO memberDTO = this.update(member); 138 log.info("修改会员vip和vip过期时间 ==>> {}", resource);
139 this.redisUtils.doLock("member::code" + member.getCode());
140 try { 139 try {
141 MemberDTO memberDTO = this.findById(member.getId()); 140 this.redisUtils.doLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
142 if (Objects.nonNull(memberDTO)) { 141
143 this.memberRepository.doUpdateMemberCoupon(member); 142 Integer count = this.memberRepository.updateMemberVipAndVipExpireTime(resource);
143 if (Objects.nonNull(count) && count > 0) {
144 Member member = this.memberRepository.findById(resource.getId()).orElseGet(Member::new);
145 return this.memberMapper.toDto(member);
144 } 146 }
145 return memberDTO; 147
146 } catch (Exception e) { 148 } catch (Exception e) {
147 e.printStackTrace(); 149 log.info("修改会员vip和vip过期时间,"+e.getMessage());
148 throw e;
149 } finally { 150 } finally {
150 this.redisUtils.doUnLock("member::code" + member.getCode()); 151 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
151 } 152 }
153
154 return this.memberMapper.toDto(resource);
152 } 155 }
153 156
154 @Override 157 @Override
155 @Transactional(rollbackFor = Exception.class) 158 @Transactional(rollbackFor = Exception.class)
159 public MemberDTO doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(Member resource) {
160 log.info("修改会员绑定大屏信息 ==>> {}", resource);
161 try {
162 this.redisUtils.doLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
163
164 Integer count = this.memberRepository.updateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(resource);
165 if (Objects.nonNull(count) && count > 0) {
166 Member member = this.memberRepository.findById(resource.getId()).orElseGet(Member::new);
167 return this.memberMapper.toDto(member);
168 }
169
170 } catch (Exception e) {
171 log.info("修改会员绑定大屏信息,"+e.getMessage());
172 } finally {
173 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
174 }
175
176 return this.memberMapper.toDto(resource);
177 }
178
179 @Override
180 @Transactional(rollbackFor = Exception.class)
181 public MemberDTO doUpdateMemberAvatarUrlAndNicknameAndGender(Member resource) {
182 log.info("修改会员头像、昵称、性别 ==>> {}", resource);
183 try {
184 this.redisUtils.doLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
185
186 Integer count = this.memberRepository.updateMemberAvatarUrlAndNicknameAndGender(resource);
187 if (Objects.nonNull(count) && count > 0) {
188 Member member = this.memberRepository.findById(resource.getId()).orElseGet(Member::new);
189 return this.memberMapper.toDto(member);
190 }
191
192 } catch (Exception e) {
193 log.info("修改会员头像、昵称、性别异常,"+e.getMessage());
194 } finally {
195 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheMemberById + resource.getId());
196 }
197
198 return this.memberMapper.toDto(resource);
199 }
200
201
202 @Override
203 @Transactional(rollbackFor = Exception.class)
156 public MemberDTO create(Member resources) { 204 public MemberDTO create(Member resources) {
157 205
158 Member member = MemberBuilder.build(resources); 206 Member member = MemberBuilder.build(resources);
...@@ -170,38 +218,25 @@ public class MemberServiceImpl implements MemberService { ...@@ -170,38 +218,25 @@ public class MemberServiceImpl implements MemberService {
170 218
171 @Override 219 @Override
172 @Transactional(rollbackFor = Exception.class) 220 @Transactional(rollbackFor = Exception.class)
173 public MemberDTO createAndReturnMember(Member resources) {
174
175 MemberDTO memberDTO = this.create(MemberBuilder.build(resources));
176
177 return memberDTO;
178
179 }
180
181 @Override
182 @Transactional(rollbackFor = Exception.class)
183 public MemberDTO update(Member resources) { 221 public MemberDTO update(Member resources) {
184 222 log.info("修改会员信息 ==>> {}", resources);
185 log.info("MemberServiceImpl ==>> update ==>> resources ==>> [{}]" , resources);
186 this.redisUtils.doLock("member::code" + resources.getCode());
187 try { 223 try {
188 MemberDTO memberDTO = this.checkMember(resources); 224 this.redisUtils.doLock(RedisKeyConstants.updateCacheMemberById + resources.getId());
189 225
226 MemberDTO memberDTO = this.checkMember(resources);
190 Member member = new Member(); 227 Member member = new Member();
191 BeanUtils.copyProperties(memberDTO,member); 228 BeanUtils.copyProperties(memberDTO,member);
192 member.copy(resources); 229 member.copy(resources);
193
194 Member _member = this.save(member); 230 Member _member = this.save(member);
195
196 return this.memberMapper.toDto(_member); 231 return this.memberMapper.toDto(_member);
197 232
198 } catch (Exception e) { 233 } catch (Exception e) {
199 e.printStackTrace(); 234 log.info(e.getMessage());
200 throw e;
201 } finally { 235 } finally {
202 this.redisUtils.doUnLock("member::code" + resources.getCode()); 236 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheMemberById + resources.getId());
203 } 237 }
204 238
239 return this.memberMapper.toDto(resources);
205 } 240 }
206 241
207 @Transactional(propagation = Propagation.REQUIRES_NEW) 242 @Transactional(propagation = Propagation.REQUIRES_NEW)
...@@ -212,26 +247,14 @@ public class MemberServiceImpl implements MemberService { ...@@ -212,26 +247,14 @@ public class MemberServiceImpl implements MemberService {
212 @Override 247 @Override
213 @Transactional(rollbackFor = Exception.class) 248 @Transactional(rollbackFor = Exception.class)
214 public MemberDTO doUpdateMemberPoints(Member resources) { 249 public MemberDTO doUpdateMemberPoints(Member resources) {
215 try {
216 this.redisUtils.doLock("member::code" + resources.getCode());
217
218 /*ValidationUtil.isNull(member.getId(), "Member", "id", resources.getId());
219 member.copy(resources);
220
221 Member _member = this.save(member);*/
222 MemberDTO memberDTO = this.findById(resources.getId());
223 if (Objects.nonNull(memberDTO)) {
224 this.memberRepository.updatePointAndDuePoint(resources);
225 }
226 250
227 return memberDTO; 251 Integer count = this.memberRepository.updatePointAndDuePoint(resources);
228 252 if (Objects.nonNull(count) && count > 0) {
229 } catch (Exception e) { 253 Member member = this.memberRepository.findById(resources.getId()).orElseGet(Member::new);
230 e.printStackTrace(); 254 return this.memberMapper.toDto(member);
231 throw e;
232 } finally {
233 this.redisUtils.doUnLock("member::code" + resources.getCode());
234 } 255 }
256
257 return this.memberMapper.toDto(resources);
235 } 258 }
236 259
237 } 260 }
......
1 package com.topdraw.business.process.domian.constant; 1 package com.topdraw.business.module.rights.constant;
2 2
3 public enum RightType { 3 public enum RightType {
4 /**积分*/ 4 /**积分*/
......
1 package com.topdraw.business.module.rights.constant;
2
3 public class RightsType {
4
5 public static String TYPE_1 = "1";
6 Integer TYPE_2 = 2;
7 Integer TYPE_3 = 3;
8
9 }
...@@ -47,7 +47,7 @@ public class Rights implements Serializable { ...@@ -47,7 +47,7 @@ public class Rights implements Serializable {
47 47
48 /** 权益的实体类型 1:积分;2成长值;3优惠券 */ 48 /** 权益的实体类型 1:积分;2成长值;3优惠券 */
49 @Column(name = "entity_type", nullable = false) 49 @Column(name = "entity_type", nullable = false)
50 private String entityType; 50 private Integer entityType;
51 51
52 /** 实体id */ 52 /** 实体id */
53 @Column(name = "entity_id", nullable = false) 53 @Column(name = "entity_id", nullable = false)
......
...@@ -28,7 +28,7 @@ public class RightsDTO implements Serializable { ...@@ -28,7 +28,7 @@ public class RightsDTO implements Serializable {
28 private Integer type; 28 private Integer type;
29 29
30 /** 权益的实体类型 1:积分;2成长值;3优惠券 */ 30 /** 权益的实体类型 1:积分;2成长值;3优惠券 */
31 private String entityType; 31 private Integer entityType;
32 32
33 /** 实体id */ 33 /** 实体id */
34 private Long entityId; 34 private Long entityId;
......
...@@ -16,5 +16,5 @@ public interface TrTaskProgressRepository extends JpaRepository<TrTaskProgress, ...@@ -16,5 +16,5 @@ public interface TrTaskProgressRepository extends JpaRepository<TrTaskProgress,
16 @Query(value = "select id, member_id, task_id , current_action_amount , \n" + 16 @Query(value = "select id, member_id, task_id , current_action_amount , \n" +
17 " target_action_amount , `status` , completion_time,create_time,update_time from uc_tr_task_progress where member_id = ?1 \n" + 17 " target_action_amount , `status` , completion_time,create_time,update_time from uc_tr_task_progress where member_id = ?1 \n" +
18 " and task_id = ?2 and Date(completion_time) = ?3 ",nativeQuery = true) 18 " and task_id = ?2 and Date(completion_time) = ?3 ",nativeQuery = true)
19 List<TrTaskProgress> findByMemberIdAndTaskIdAndCompletionTime(Long memberId, Long taskId, String time1); 19 TrTaskProgress findByMemberIdAndTaskIdAndCompletionTime(Long memberId, Long taskId, String time1);
20 } 20 }
......
...@@ -2,6 +2,8 @@ package com.topdraw.business.module.task.progress.service; ...@@ -2,6 +2,8 @@ package com.topdraw.business.module.task.progress.service;
2 2
3 import com.topdraw.business.module.task.progress.domain.TrTaskProgress; 3 import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
4 import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO; 4 import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
5
6 import java.time.LocalDateTime;
5 import java.util.List; 7 import java.util.List;
6 8
7 /** 9 /**
...@@ -21,13 +23,13 @@ public interface TrTaskProgressService { ...@@ -21,13 +23,13 @@ public interface TrTaskProgressService {
21 * 23 *
22 * @param resources 24 * @param resources
23 */ 25 */
24 void create(TrTaskProgress resources); 26 TrTaskProgress create(TrTaskProgress resources, String date);
25 27
26 /** 28 /**
27 * 29 *
28 * @param resources 30 * @param resources
29 */ 31 */
30 void update(TrTaskProgress resources); 32 TrTaskProgress update(TrTaskProgress resources, String date);
31 33
32 /** 34 /**
33 * 35 *
...@@ -42,5 +44,6 @@ public interface TrTaskProgressService { ...@@ -42,5 +44,6 @@ public interface TrTaskProgressService {
42 * @param time1 44 * @param time1
43 * @return 45 * @return
44 */ 46 */
45 List<TrTaskProgressDTO> findByMemberIdAndTaskIdAndCompletionTime(Long memberId, Long taskId, String time1); 47 TrTaskProgressDTO findByMemberIdAndTaskIdAndCompletionTime(Long memberId, Long taskId, String time1);
48
46 } 49 }
......
1 package com.topdraw.business.module.task.progress.service.impl; 1 package com.topdraw.business.module.task.progress.service.impl;
2 2
3 import com.topdraw.business.module.task.progress.domain.TrTaskProgress; 3 import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
4 import com.topdraw.config.RedisKeyConstants;
4 import com.topdraw.utils.ValidationUtil; 5 import com.topdraw.utils.ValidationUtil;
5 import com.topdraw.business.module.task.progress.repository.TrTaskProgressRepository; 6 import com.topdraw.business.module.task.progress.repository.TrTaskProgressRepository;
6 import com.topdraw.business.module.task.progress.service.TrTaskProgressService; 7 import com.topdraw.business.module.task.progress.service.TrTaskProgressService;
7 import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO; 8 import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
8 import com.topdraw.business.module.task.progress.service.mapper.TrTaskProgressMapper; 9 import com.topdraw.business.module.task.progress.service.mapper.TrTaskProgressMapper;
10 import lombok.extern.slf4j.Slf4j;
9 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.cache.annotation.CachePut;
13 import org.springframework.cache.annotation.Cacheable;
10 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
11 import org.springframework.transaction.annotation.Propagation; 15 import org.springframework.transaction.annotation.Propagation;
12 import org.springframework.transaction.annotation.Transactional; 16 import org.springframework.transaction.annotation.Transactional;
13 import org.springframework.dao.EmptyResultDataAccessException; 17 import org.springframework.dao.EmptyResultDataAccessException;
14 import org.springframework.util.Assert; 18 import org.springframework.util.Assert;
15 19
20 import java.time.LocalDateTime;
16 import java.util.List; 21 import java.util.List;
17 22
18 /** 23 /**
...@@ -21,6 +26,7 @@ import java.util.List; ...@@ -21,6 +26,7 @@ import java.util.List;
21 */ 26 */
22 @Service 27 @Service
23 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) 28 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
29 @Slf4j
24 public class TrTaskProgressServiceImpl implements TrTaskProgressService { 30 public class TrTaskProgressServiceImpl implements TrTaskProgressService {
25 31
26 @Autowired 32 @Autowired
...@@ -38,17 +44,21 @@ public class TrTaskProgressServiceImpl implements TrTaskProgressService { ...@@ -38,17 +44,21 @@ public class TrTaskProgressServiceImpl implements TrTaskProgressService {
38 44
39 @Override 45 @Override
40 @Transactional(rollbackFor = Exception.class) 46 @Transactional(rollbackFor = Exception.class)
41 public void create(TrTaskProgress resources) { 47 @Cacheable(cacheNames = RedisKeyConstants.cacheTaskProcessByMemberId, key = "#resources.memberId+':'+#resources.taskId+':'+#date", unless = "#result == null ")
42 this.trTaskProgressRepository.save(resources); 48 public TrTaskProgress create(TrTaskProgress resources, String date) {
49 TrTaskProgress trTaskProgress = this.trTaskProgressRepository.save(resources);
50 return trTaskProgress;
43 } 51 }
44 52
45 @Override 53 @Override
46 @Transactional(rollbackFor = Exception.class) 54 @Transactional(rollbackFor = Exception.class)
47 public void update(TrTaskProgress resources) { 55 @Cacheable(cacheNames = RedisKeyConstants.cacheTaskProcessByMemberId, key = "#resources.memberId+':'+#resources.taskId+':'+#date", unless = "#result == null ")
48 TrTaskProgress TrTaskProgress = this.trTaskProgressRepository.findById(resources.getId()).orElseGet(TrTaskProgress::new); 56 public TrTaskProgress update(TrTaskProgress resources, String date) {
49 ValidationUtil.isNull( TrTaskProgress.getId(),"TrTaskProgress","id",resources.getId()); 57 TrTaskProgress trTaskProgress = this.trTaskProgressRepository.findById(resources.getId()).orElseGet(TrTaskProgress::new);
50 TrTaskProgress.copy(resources); 58 ValidationUtil.isNull( trTaskProgress.getId(),"TrTaskProgress","id",resources.getId());
51 this.trTaskProgressRepository.save(TrTaskProgress); 59 trTaskProgress.copy(resources);
60 TrTaskProgress save = this.trTaskProgressRepository.save(trTaskProgress);
61 return save;
52 } 62 }
53 63
54 @Override 64 @Override
...@@ -61,9 +71,12 @@ public class TrTaskProgressServiceImpl implements TrTaskProgressService { ...@@ -61,9 +71,12 @@ public class TrTaskProgressServiceImpl implements TrTaskProgressService {
61 } 71 }
62 72
63 @Override 73 @Override
64 public List<TrTaskProgressDTO> findByMemberIdAndTaskIdAndCompletionTime(Long memberId, Long taskId, String time1) { 74 @Cacheable(cacheNames = RedisKeyConstants.cacheTaskProcessByMemberId, key = "#memberId+':'+#taskId+':'+#time1", unless = "#result == null")
75 public TrTaskProgressDTO findByMemberIdAndTaskIdAndCompletionTime(Long memberId, Long taskId, String time1) {
76 log.info("从数据库查询当前会员今天是否完成了此任务, memberId ==>> {} || taskId ==>> {}", memberId, taskId);
65 return this.trTaskProgressMapper.toDto(this.trTaskProgressRepository.findByMemberIdAndTaskIdAndCompletionTime(memberId,taskId,time1)); 77 return this.trTaskProgressMapper.toDto(this.trTaskProgressRepository.findByMemberIdAndTaskIdAndCompletionTime(memberId,taskId,time1));
66 } 78 }
67 79
68 80
81
69 } 82 }
......
...@@ -21,7 +21,13 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat ...@@ -21,7 +21,13 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
21 @Modifying 21 @Modifying
22 @Transactional 22 @Transactional
23 @Query(value = "UPDATE `tr_task` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1", nativeQuery = true) 23 @Query(value = "UPDATE `tr_task` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1", nativeQuery = true)
24 void updateDeleteMark(Long id); 24 Integer updateDeleteMark(Long id);
25 25
26 Optional<Task> findByCode(String code); 26 Optional<Task> findByCode(String code);
27
28 @Query(value = "SELECT ta.*, attr.attr_str AS attr FROM tr_task ta LEFT JOIN tr_task_template tm ON ta.task_template_id = tm.id " +
29 " LEFT JOIN tr_task_attr attr ON attr.task_id = ta.id " +
30 " WHERE ta.`status` = 1 AND ta.valid_time <= now() and ta.expire_time >= now() AND ta.delete_mark = 0 AND " +
31 " tm.type = ?1 ", nativeQuery = true)
32 List<Task> findByEvent(Integer event);
27 } 33 }
......
1 package com.topdraw.business.module.task.service; 1 package com.topdraw.business.module.task.service;
2 2
3 import com.topdraw.business.module.task.domain.Task; 3 import com.topdraw.business.module.task.domain.Task;
4 import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
4 import com.topdraw.business.module.task.service.dto.TaskDTO; 5 import com.topdraw.business.module.task.service.dto.TaskDTO;
6
7 import java.time.LocalDateTime;
5 import java.util.List; 8 import java.util.List;
6 9
7 /** 10 /**
...@@ -47,11 +50,19 @@ public interface TaskService { ...@@ -47,11 +50,19 @@ public interface TaskService {
47 * 50 *
48 * @param task 51 * @param task
49 */ 52 */
50 void delete(Task task); 53 Integer delete(Task task);
51 54
52 /** 55 /**
53 * 56 *
54 * @param id 57 * @param id
55 */ 58 */
56 void delete(Long id); 59 Integer delete(Long id);
60
61 /**
62 *
63 * @param event
64 * @return
65 */
66 List<Task> findByEvent(Integer event);
67
57 } 68 }
......
...@@ -5,11 +5,15 @@ import com.topdraw.business.module.task.repository.TaskRepository; ...@@ -5,11 +5,15 @@ import com.topdraw.business.module.task.repository.TaskRepository;
5 import com.topdraw.business.module.task.service.TaskService; 5 import com.topdraw.business.module.task.service.TaskService;
6 import com.topdraw.business.module.task.service.dto.TaskDTO; 6 import com.topdraw.business.module.task.service.dto.TaskDTO;
7 import com.topdraw.business.module.task.service.mapper.TaskMapper; 7 import com.topdraw.business.module.task.service.mapper.TaskMapper;
8 import com.topdraw.config.RedisKeyConstants;
9 import lombok.extern.slf4j.Slf4j;
8 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.cache.annotation.Cacheable;
9 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
10 import org.springframework.transaction.annotation.Propagation; 13 import org.springframework.transaction.annotation.Propagation;
11 import org.springframework.transaction.annotation.Transactional; 14 import org.springframework.transaction.annotation.Transactional;
12 15
16 import java.util.ArrayList;
13 import java.util.List; 17 import java.util.List;
14 import java.util.Objects; 18 import java.util.Objects;
15 19
...@@ -19,6 +23,7 @@ import java.util.Objects; ...@@ -19,6 +23,7 @@ import java.util.Objects;
19 */ 23 */
20 @Service 24 @Service
21 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) 25 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
26 @Slf4j
22 public class TaskServiceImpl implements TaskService { 27 public class TaskServiceImpl implements TaskService {
23 28
24 @Autowired 29 @Autowired
...@@ -56,14 +61,20 @@ public class TaskServiceImpl implements TaskService { ...@@ -56,14 +61,20 @@ public class TaskServiceImpl implements TaskService {
56 } 61 }
57 62
58 @Override 63 @Override
59 public void delete(Task task) { 64 public Integer delete(Task task) {
60 Long id = task.getId(); 65 Long id = task.getId();
61 this.delete(id); 66 return this.delete(id);
62 } 67 }
63 68
64 @Override 69 @Override
65 public void delete(Long id) { 70 public Integer delete(Long id) {
66 this.taskRepository.updateDeleteMark(id); 71 return this.taskRepository.updateDeleteMark(id);
67 } 72 }
68 73
74 @Override
75 // @Cacheable(value = RedisKeyConstants.cacheTaskByTaskTemplateId, key = "#event" , unless = "#result.size() == 0")
76 public List<Task> findByEvent(Integer event) {
77 log.info("从数据库查询事件列表 ==>> {}", event);
78 return Objects.nonNull(event) ? this.taskRepository.findByEvent(event) : new ArrayList<>();
79 }
69 } 80 }
......
...@@ -26,4 +26,6 @@ public interface TaskTemplateRepository extends JpaRepository<TaskTemplate, Long ...@@ -26,4 +26,6 @@ public interface TaskTemplateRepository extends JpaRepository<TaskTemplate, Long
26 @Transactional 26 @Transactional
27 @Query(value = "UPDATE `tr_task_template` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1", nativeQuery = true) 27 @Query(value = "UPDATE `tr_task_template` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1", nativeQuery = true)
28 void updateDeleteMark(Long id); 28 void updateDeleteMark(Long id);
29
30 Long countByCodeAndType(String code, Integer type);
29 } 31 }
......
...@@ -61,4 +61,11 @@ public interface TaskTemplateService { ...@@ -61,4 +61,11 @@ public interface TaskTemplateService {
61 * @return 61 * @return
62 */ 62 */
63 TaskTemplateDTO findByType(Integer event); 63 TaskTemplateDTO findByType(Integer event);
64
65 /**
66 *
67 * @param taskTemplate
68 * @return
69 */
70 Long countByCodeAndType(TaskTemplate taskTemplate);
64 } 71 }
......
...@@ -83,4 +83,10 @@ public class TaskTemplateServiceImpl implements TaskTemplateService { ...@@ -83,4 +83,10 @@ public class TaskTemplateServiceImpl implements TaskTemplateService {
83 return Objects.nonNull(event) ? this.taskTemplateMapper.toDto(this.taskTemplateRepository.findByType(event).orElseGet(TaskTemplate::new)) : new TaskTemplateDTO(); 83 return Objects.nonNull(event) ? this.taskTemplateMapper.toDto(this.taskTemplateRepository.findByType(event).orElseGet(TaskTemplate::new)) : new TaskTemplateDTO();
84 } 84 }
85 85
86 @Override
87 public Long countByCodeAndType(TaskTemplate taskTemplate) {
88 Long count = this.taskTemplateRepository.countByCodeAndType(taskTemplate.getCode(), taskTemplate.getType());
89 return count;
90 }
91
86 } 92 }
......
...@@ -5,6 +5,8 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,6 +5,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
5 import org.springframework.data.jpa.repository.JpaSpecificationExecutor; 5 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
6 import org.springframework.data.jpa.repository.Modifying; 6 import org.springframework.data.jpa.repository.Modifying;
7 import org.springframework.data.jpa.repository.Query; 7 import org.springframework.data.jpa.repository.Query;
8 import org.springframework.data.repository.query.Param;
9 import org.springframework.transaction.annotation.Transactional;
8 10
9 import java.time.LocalDateTime; 11 import java.time.LocalDateTime;
10 import java.util.Optional; 12 import java.util.Optional;
...@@ -24,4 +26,9 @@ public interface UserTvRepository extends JpaRepository<UserTv, Long>, JpaSpecif ...@@ -24,4 +26,9 @@ public interface UserTvRepository extends JpaRepository<UserTv, Long>, JpaSpecif
24 @Modifying 26 @Modifying
25 @Query(value = "UPDATE `uc_user_tv` SET `vis_user_id` = ?2, `update_time` = ?3 WHERE `id` = ?1", nativeQuery = true) 27 @Query(value = "UPDATE `uc_user_tv` SET `vis_user_id` = ?2, `update_time` = ?3 WHERE `id` = ?1", nativeQuery = true)
26 Integer updateUserTvVisUserId(Long id, Long visUserId, LocalDateTime now); 28 Integer updateUserTvVisUserId(Long id, Long visUserId, LocalDateTime now);
29
30 @Modifying
31 @Query(value = "UPDATE `uc_user_tv` SET `priority_member_code` = :#{#resources.priorityMemberCode}, `update_time` = now()" +
32 " WHERE `id` = :#{#resources.id}", nativeQuery = true)
33 Integer updatePriorityMemberCode(@Param("resources") UserTv resources);
27 } 34 }
......
...@@ -69,7 +69,7 @@ public interface UserTvService { ...@@ -69,7 +69,7 @@ public interface UserTvService {
69 * @param memberCode 69 * @param memberCode
70 * @return 70 * @return
71 */ 71 */
72 boolean checkPriorityMemberByMemberIdOrMemberCode(Long memberId,String memberCode); 72 boolean checkPriorityMemberByMemberIdOrMemberCode(Long memberId, String memberCode);
73 73
74 /** 74 /**
75 * 75 *
...@@ -84,4 +84,11 @@ public interface UserTvService { ...@@ -84,4 +84,11 @@ public interface UserTvService {
84 * @return 84 * @return
85 */ 85 */
86 UserTvDTO updateUserTvVisUserId(UserTv resources); 86 UserTvDTO updateUserTvVisUserId(UserTv resources);
87
88 /**
89 *
90 * @param resources
91 * @return
92 */
93 UserTvDTO doUpdatePriorityMemberCode(UserTv resources);
87 } 94 }
......
...@@ -5,6 +5,7 @@ import com.topdraw.business.module.member.service.MemberService; ...@@ -5,6 +5,7 @@ import com.topdraw.business.module.member.service.MemberService;
5 import com.topdraw.business.module.member.service.dto.MemberDTO; 5 import com.topdraw.business.module.member.service.dto.MemberDTO;
6 import com.topdraw.business.module.user.iptv.domain.UserTv; 6 import com.topdraw.business.module.user.iptv.domain.UserTv;
7 import com.topdraw.business.process.service.impl.UserOperationServiceImpl; 7 import com.topdraw.business.process.service.impl.UserOperationServiceImpl;
8 import com.topdraw.config.RedisKeyConstants;
8 import com.topdraw.exception.EntityNotFoundException; 9 import com.topdraw.exception.EntityNotFoundException;
9 import com.topdraw.exception.GlobeExceptionMsg; 10 import com.topdraw.exception.GlobeExceptionMsg;
10 import com.topdraw.utils.ValidationUtil; 11 import com.topdraw.utils.ValidationUtil;
...@@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
16 import org.apache.commons.lang3.StringUtils; 17 import org.apache.commons.lang3.StringUtils;
17 import org.springframework.aop.framework.AopContext; 18 import org.springframework.aop.framework.AopContext;
18 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.cache.annotation.Cacheable;
19 import org.springframework.stereotype.Service; 21 import org.springframework.stereotype.Service;
20 import org.springframework.transaction.annotation.Propagation; 22 import org.springframework.transaction.annotation.Propagation;
21 import org.springframework.transaction.annotation.Transactional; 23 import org.springframework.transaction.annotation.Transactional;
...@@ -96,6 +98,16 @@ public class UserTvServiceImpl implements UserTvService { ...@@ -96,6 +98,16 @@ public class UserTvServiceImpl implements UserTvService {
96 return null; 98 return null;
97 } 99 }
98 100
101 @Override
102 @Transactional(rollbackFor = Exception.class)
103 public UserTvDTO doUpdatePriorityMemberCode(UserTv resources) {
104 Integer count = this.userTvRepository.updatePriorityMemberCode(resources);
105 if (Objects.nonNull(count) && count > 0) {
106 UserTv userTv = this.userTvRepository.findById(resources.getId()).orElseGet(UserTv::new);
107 return this.userTvMapper.toDto(userTv);
108 }
109 return this.userTvMapper.toDto(resources);
110 }
99 111
100 112
101 private MemberDTO findMemberByMemberCode(String memberCode) { 113 private MemberDTO findMemberByMemberCode(String memberCode) {
...@@ -157,7 +169,9 @@ public class UserTvServiceImpl implements UserTvService { ...@@ -157,7 +169,9 @@ public class UserTvServiceImpl implements UserTvService {
157 } 169 }
158 170
159 @Override 171 @Override
172 @Cacheable(cacheNames = RedisKeyConstants.cacheUserTvByPlatformAccount, key = "#platformAccount")
160 public UserTvDTO findByPlatformAccount(String platformAccount) { 173 public UserTvDTO findByPlatformAccount(String platformAccount) {
174 log.info("从数据库通过大屏账号检索大屏账号信息");
161 Optional<UserTv> userTv = this.userTvRepository.findByPlatformAccount(platformAccount); 175 Optional<UserTv> userTv = this.userTvRepository.findByPlatformAccount(platformAccount);
162 if (userTv.isPresent()) { 176 if (userTv.isPresent()) {
163 ValidationUtil.isNull( userTv.get().getId(),"UserTv","id",userTv.get().getId()); 177 ValidationUtil.isNull( userTv.get().getId(),"UserTv","id",userTv.get().getId());
......
...@@ -29,9 +29,7 @@ public interface UserWeixinRepository extends JpaRepository<UserWeixin, Long>, J ...@@ -29,9 +29,7 @@ public interface UserWeixinRepository extends JpaRepository<UserWeixin, Long>, J
29 Optional<UserWeixin> findFirstByMemberId(Long memberId); 29 Optional<UserWeixin> findFirstByMemberId(Long memberId);
30 30
31 @Modifying 31 @Modifying
32 @Transactional 32 @Query(value = "UPDATE `uc_user_weixin` SET update_time = now(), `status` = :#{#resources.status}" +
33 @Query(value = "update `uc_user_weixin` set update_time = :#{#resources.updateTime} " + 33 " WHERE `id` = :#{#resources.id}", nativeQuery = true)
34 "where appid = :#{#resources.appid} and openid = :#{#resources.openid}", nativeQuery = true) 34 Integer updateWeixinStatus(@Param("resources") UserWeixin resource);
35 void updateTime(@Param("resources") UserWeixin resources);
36
37 } 35 }
......
...@@ -31,12 +31,6 @@ public interface UserWeixinService { ...@@ -31,12 +31,6 @@ public interface UserWeixinService {
31 31
32 /** 32 /**
33 * 33 *
34 * @param resources
35 */
36 void updateTime(UserWeixin resources);
37
38 /**
39 *
40 * @param id 34 * @param id
41 */ 35 */
42 void delete(Long id); 36 void delete(Long id);
...@@ -87,4 +81,11 @@ public interface UserWeixinService { ...@@ -87,4 +81,11 @@ public interface UserWeixinService {
87 * @return 81 * @return
88 */ 82 */
89 UserWeixinDTO findFirstByMemberId(Long memberId); 83 UserWeixinDTO findFirstByMemberId(Long memberId);
84
85 /**
86 *
87 * @param userWeixin
88 * @return
89 */
90 UserWeixinDTO doUpdateWeixinStatus(UserWeixin userWeixin);
90 } 91 }
......
...@@ -14,6 +14,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -14,6 +14,8 @@ import org.springframework.transaction.annotation.Transactional;
14 import org.springframework.dao.EmptyResultDataAccessException; 14 import org.springframework.dao.EmptyResultDataAccessException;
15 import org.springframework.util.Assert; 15 import org.springframework.util.Assert;
16 16
17 import java.util.Objects;
18
17 /** 19 /**
18 * @author XiangHan 20 * @author XiangHan
19 * @date 2021-12-16 21 * @date 2021-12-16
...@@ -54,11 +56,6 @@ public class UserWeixinServiceImpl implements UserWeixinService { ...@@ -54,11 +56,6 @@ public class UserWeixinServiceImpl implements UserWeixinService {
54 } 56 }
55 57
56 @Override 58 @Override
57 public void updateTime(UserWeixin resources) {
58 this.userWeixinRepository.updateTime(resources);
59 }
60
61 @Override
62 @Transactional(rollbackFor = Exception.class) 59 @Transactional(rollbackFor = Exception.class)
63 public void delete(Long id) { 60 public void delete(Long id) {
64 Assert.notNull(id, "The given id must not be null!"); 61 Assert.notNull(id, "The given id must not be null!");
...@@ -104,4 +101,15 @@ public class UserWeixinServiceImpl implements UserWeixinService { ...@@ -104,4 +101,15 @@ public class UserWeixinServiceImpl implements UserWeixinService {
104 return this.userWeixinMapper.toDto(userWeixin); 101 return this.userWeixinMapper.toDto(userWeixin);
105 } 102 }
106 103
104 @Override
105 @Transactional(rollbackFor = Exception.class)
106 public UserWeixinDTO doUpdateWeixinStatus(UserWeixin resource) {
107 Integer count = this.userWeixinRepository.updateWeixinStatus(resource);
108 if (Objects.nonNull(count) && count > 0) {
109 UserWeixin userWeixin = this.userWeixinRepository.findById(resource.getId()).orElseGet(UserWeixin::new);
110 return this.userWeixinMapper.toDto(userWeixin);
111 }
112 return this.userWeixinMapper.toDto(resource);
113 }
114
107 } 115 }
......
...@@ -5,6 +5,7 @@ import com.topdraw.business.process.service.ExpOperationService; ...@@ -5,6 +5,7 @@ import com.topdraw.business.process.service.ExpOperationService;
5 import com.topdraw.common.ResultInfo; 5 import com.topdraw.common.ResultInfo;
6 import io.swagger.annotations.Api; 6 import io.swagger.annotations.Api;
7 import io.swagger.annotations.ApiOperation; 7 import io.swagger.annotations.ApiOperation;
8 import lombok.extern.slf4j.Slf4j;
8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.validation.annotation.Validated; 10 import org.springframework.validation.annotation.Validated;
10 import org.springframework.web.bind.annotation.PostMapping; 11 import org.springframework.web.bind.annotation.PostMapping;
...@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
14 15
15 import java.util.Arrays; 16 import java.util.Arrays;
16 import java.util.List; 17 import java.util.List;
18 import java.util.Objects;
17 19
18 /** 20 /**
19 * @author XiangHan 21 * @author XiangHan
...@@ -22,14 +24,27 @@ import java.util.List; ...@@ -22,14 +24,27 @@ import java.util.List;
22 @Api(tags = "成长值管理") 24 @Api(tags = "成长值管理")
23 @RestController 25 @RestController
24 @RequestMapping("/uce/expOperation") 26 @RequestMapping("/uce/expOperation")
27 @Slf4j
25 public class ExpOperationController { 28 public class ExpOperationController {
26 29
27 @Autowired 30 @Autowired
28 private ExpOperationService expOperationService; 31 private ExpOperationService expOperationService;
29 32
30 @PostMapping(value = "/grantExpByManual") 33 @PostMapping(value = "/addExp")
31 @ApiOperation("手动发放成长值") 34 @ApiOperation("手动发放成长值")
32 public ResultInfo grantExpByManual(@Validated @RequestBody TempExp tempExp) { 35 public ResultInfo grantExpByManual(@Validated @RequestBody TempExp tempExp) {
36 log.info("手动发放成长值,参数 ==>> {}", tempExp);
37 Long memberId = tempExp.getMemberId();
38 if (Objects.isNull(memberId)) {
39 log.error("发放成长值失败,参数错误,无会员id");
40 return ResultInfo.failure("发放成长值失败,参数错误,无会员id");
41 }
42
43 Long rewardExp = tempExp.getRewardExp();
44 if (Objects.isNull(rewardExp) || rewardExp <= 0L) {
45 log.error("发放成长值失败,参数错误,成长值为空或者小于0 ==>> {}", rewardExp);
46 return ResultInfo.failure("发放成长值失败,参数错误,成长值为空或者小于0");
47 }
33 List<TempExp> tempExpList = Arrays.asList(tempExp); 48 List<TempExp> tempExpList = Arrays.asList(tempExp);
34 this.expOperationService.grantExpByManual(tempExpList); 49 this.expOperationService.grantExpByManual(tempExpList);
35 return ResultInfo.success(); 50 return ResultInfo.success();
......
...@@ -14,6 +14,7 @@ import com.topdraw.exception.BadRequestException; ...@@ -14,6 +14,7 @@ import com.topdraw.exception.BadRequestException;
14 import io.swagger.annotations.Api; 14 import io.swagger.annotations.Api;
15 import io.swagger.annotations.ApiOperation; 15 import io.swagger.annotations.ApiOperation;
16 import lombok.extern.slf4j.Slf4j; 16 import lombok.extern.slf4j.Slf4j;
17 import org.apache.commons.lang3.StringUtils;
17 import org.springframework.beans.BeanUtils; 18 import org.springframework.beans.BeanUtils;
18 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.validation.annotation.Validated; 20 import org.springframework.validation.annotation.Validated;
...@@ -50,7 +51,7 @@ public class MemberOperationController { ...@@ -50,7 +51,7 @@ public class MemberOperationController {
50 if (Objects.nonNull(vipExpireTime)) { 51 if (Objects.nonNull(vipExpireTime)) {
51 member.setVipExpireTime(vipExpireTime); 52 member.setVipExpireTime(vipExpireTime);
52 } 53 }
53 this.memberOperationService.update(member); 54 this.memberOperationService.doUpdateMemberVipAndVipExpireTime(member);
54 return ResultInfo.success(); 55 return ResultInfo.success();
55 } 56 }
56 57
...@@ -59,23 +60,28 @@ public class MemberOperationController { ...@@ -59,23 +60,28 @@ public class MemberOperationController {
59 @AnonymousAccess 60 @AnonymousAccess
60 public ResultInfo updateVipByMemberCode(@Validated(value = {UpdateGroup.class}) @RequestBody MemberOperationBean resources) { 61 public ResultInfo updateVipByMemberCode(@Validated(value = {UpdateGroup.class}) @RequestBody MemberOperationBean resources) {
61 log.info("member ==>> doUpdateVipByCode ==>> param ==>> [{}]",resources); 62 log.info("member ==>> doUpdateVipByCode ==>> param ==>> [{}]",resources);
63 String memberCode = resources.getMemberCode();
64 if (StringUtils.isBlank(memberCode)) {
65 log.error("参数错误,memberCode 不存在");
66 return ResultInfo.failure("参数错误,memberCode 不存在");
67 }
68
62 Integer vip = resources.getVip(); 69 Integer vip = resources.getVip();
70 if (Objects.isNull(vip) || vip < 0) {
71 log.error("参数错误,vip为空或者小于0 , vip ==>> {}", vip);
72 return ResultInfo.failure("参数错误,vip为空或者小于0");
73 }
63 Timestamp vipExpireTime = resources.getVipExpireTime(); 74 Timestamp vipExpireTime = resources.getVipExpireTime();
64 String memberCode = resources.getMemberCode(); 75
65 MemberDTO memberDTO = this.memberOperationService.findByCode(memberCode);
66 76
67 Member member = new Member(); 77 Member member = new Member();
68 BeanUtils.copyProperties(memberDTO, member); 78 member.setCode(memberCode);
69 if (Objects.nonNull(vip)) { 79 member.setVip(vip);
70 member.setVip(vip); 80 member.setVipExpireTime(vipExpireTime);
71 }
72 if (Objects.nonNull(vipExpireTime)) {
73 member.setVipExpireTime(vipExpireTime);
74 }
75 81
82 MemberDTO memberDTO = this.memberOperationService.doUpdateMemberVipAndVipExpireTime(member);
76 this.createVipHistory(memberDTO.getId(), memberDTO.getCode(), vip, vipExpireTime); 83 this.createVipHistory(memberDTO.getId(), memberDTO.getCode(), vip, vipExpireTime);
77 84
78 this.memberOperationService.updateMemberVip(member);
79 return ResultInfo.success(); 85 return ResultInfo.success();
80 } 86 }
81 87
...@@ -93,6 +99,7 @@ public class MemberOperationController { ...@@ -93,6 +99,7 @@ public class MemberOperationController {
93 @GetMapping("/getMemberProfileAndCheckVip/{appId}/{memberId}") 99 @GetMapping("/getMemberProfileAndCheckVip/{appId}/{memberId}")
94 @ApiOperation("获取会员基本信息并且检查vip状态") 100 @ApiOperation("获取会员基本信息并且检查vip状态")
95 @AnonymousAccess 101 @AnonymousAccess
102 @Deprecated
96 public IResultInfo getMemberProfileAndCheckVip(@PathVariable(value = "appId") String appId, @PathVariable(value = "memberId") Long memberId) { 103 public IResultInfo getMemberProfileAndCheckVip(@PathVariable(value = "appId") String appId, @PathVariable(value = "memberId") Long memberId) {
97 MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId); 104 MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId);
98 return ResultInfo.success(memberProfileDTO); 105 return ResultInfo.success(memberProfileDTO);
......
...@@ -49,6 +49,7 @@ public class PointsOperationController { ...@@ -49,6 +49,7 @@ public class PointsOperationController {
49 @GetMapping(value = "/cleanInvalidPointsAndCalculateCurrentPoints/{id}") 49 @GetMapping(value = "/cleanInvalidPointsAndCalculateCurrentPoints/{id}")
50 @ApiOperation("清除过期积分并计算总积分,供客户端会员查询积分时调用") 50 @ApiOperation("清除过期积分并计算总积分,供客户端会员查询积分时调用")
51 @AnonymousAccess 51 @AnonymousAccess
52 @Deprecated
52 public ResultInfo cleanInvalidPointsAndCalculateCurrentPoints(@PathVariable("id") Long id) { 53 public ResultInfo cleanInvalidPointsAndCalculateCurrentPoints(@PathVariable("id") Long id) {
53 Long aLong = this.pointsOperationService.cleanInvalidPointsAndCalculateCurrentPoints(id); 54 Long aLong = this.pointsOperationService.cleanInvalidPointsAndCalculateCurrentPoints(id);
54 return ResultInfo.success(Objects.isNull(aLong) ? 0L : aLong); 55 return ResultInfo.success(Objects.isNull(aLong) ? 0L : aLong);
...@@ -59,15 +60,22 @@ public class PointsOperationController { ...@@ -59,15 +60,22 @@ public class PointsOperationController {
59 @ApiOperation("手动发放积分") 60 @ApiOperation("手动发放积分")
60 @AnonymousAccess 61 @AnonymousAccess
61 public ResultInfo addPoints(@Validated @RequestBody TempPoints tempPoints) { 62 public ResultInfo addPoints(@Validated @RequestBody TempPoints tempPoints) {
63 log.info("手动发放积分,参数 ==>>{} ", tempPoints);
62 Long memberId = tempPoints.getMemberId(); 64 Long memberId = tempPoints.getMemberId();
65 if (Objects.isNull(memberId)) {
66 log.error("积分发放失败,参数错误,会员id 不存在");
67 return ResultInfo.failure("积分发放失败,参数错误");
68 }
63 Long points = tempPoints.getPoints(); 69 Long points = tempPoints.getPoints();
64 Assert.notNull(memberId,"memberId can't be null!"); 70 if (Objects.isNull(points) || points <= 0L) {
65 Assert.notNull(points,"points can't be null!"); 71 log.error("积分发放失败,参数错误,积分不存在或者积分小于0");
72 return ResultInfo.failure("积分发放失败,参数错误");
73 }
66 MemberDTO memberDTO = this.memberService.findById(memberId); 74 MemberDTO memberDTO = this.memberService.findById(memberId);
67 if (Objects.nonNull(memberDTO)) { 75 if (Objects.nonNull(memberDTO)) {
68 String code = memberDTO.getCode(); 76 String code = memberDTO.getCode();
69 Assert.notNull(code,"code can't be null!");
70 tempPoints.setMemberCode(code); 77 tempPoints.setMemberCode(code);
78 tempPoints.setMemberId(memberDTO.getId());
71 this.pointsOperationService.grantPointsByManualByTempPoints(tempPoints); 79 this.pointsOperationService.grantPointsByManualByTempPoints(tempPoints);
72 } 80 }
73 return ResultInfo.success(); 81 return ResultInfo.success();
...@@ -176,7 +184,6 @@ public class PointsOperationController { ...@@ -176,7 +184,6 @@ public class PointsOperationController {
176 return ResultInfo.success(Arrays.asList(b),description); 184 return ResultInfo.success(Arrays.asList(b),description);
177 } 185 }
178 186
179 // @Log("积分兑换商品")
180 @PostMapping(value = "/consumeItemPoints") 187 @PostMapping(value = "/consumeItemPoints")
181 @ApiOperation("积分兑换商品") 188 @ApiOperation("积分兑换商品")
182 @AnonymousAccess 189 @AnonymousAccess
......
...@@ -42,11 +42,11 @@ public class TaskOperationController { ...@@ -42,11 +42,11 @@ public class TaskOperationController {
42 long l = System.currentTimeMillis(); 42 long l = System.currentTimeMillis();
43 43
44 // 任务处理 44 // 任务处理
45 this.taskOperationService.dealTask(criteria.getContent()); 45 ResultInfo resultInfo = this.taskOperationService.dealTask(criteria.getContent());
46 long l2 = System.currentTimeMillis(); 46 long l2 = System.currentTimeMillis();
47 log.info("事件处理,结束,总耗时 ==>> {}", (l2-l)); 47 log.info("事件处理,结束,总耗时 ==>> {}", (l2-l));
48 48
49 return ResultInfo.success(); 49 return resultInfo;
50 } 50 }
51 51
52 /** 52 /**
...@@ -99,12 +99,17 @@ public class TaskOperationController { ...@@ -99,12 +99,17 @@ public class TaskOperationController {
99 @PostMapping(value = "/deleteTask") 99 @PostMapping(value = "/deleteTask")
100 @ApiOperation("删除任务") 100 @ApiOperation("删除任务")
101 @AnonymousAccess 101 @AnonymousAccess
102 public void deleteTask(@RequestBody @Validated Task task) { 102 public ResultInfo deleteTask(@RequestBody @Validated Task task) {
103 log.info("taskOperation ==>> deleteTask ==>> param ==>> {}", task); 103 log.info("taskOperation ==>> deleteTask ==>> param ==>> {}", task);
104 104
105 Long id = task.getId(); 105 Long id = task.getId();
106 // 删除任务 106 // 删除任务
107 this.taskOperationService.deleteTask(id); 107 Integer integer = this.taskOperationService.deleteTask(id);
108 if (integer > 1) {
109 return ResultInfo.success("删除成功");
110 } else {
111 return ResultInfo.failure("删除失败");
112 }
108 } 113 }
109 114
110 /** 115 /**
......
...@@ -34,9 +34,8 @@ public class TaskTemplateOperationController { ...@@ -34,9 +34,8 @@ public class TaskTemplateOperationController {
34 log.info("taskTemplateOperation ==>> create ==>> param ==>> {}", taskTemplate); 34 log.info("taskTemplateOperation ==>> create ==>> param ==>> {}", taskTemplate);
35 String code = taskTemplate.getCode(); 35 String code = taskTemplate.getCode();
36 Integer type = taskTemplate.getType(); 36 Integer type = taskTemplate.getType();
37 TaskTemplateDTO taskTemplateDTO_ = this.taskTemplateOperationService.findByCode(code); 37 Long count = this.taskTemplateOperationService.countByCodeAndType(taskTemplate);
38 TaskTemplateDTO taskTemplateDTO_1 = this.taskTemplateOperationService.findByType(type); 38 if (count < 1) {
39 if (Objects.isNull(taskTemplateDTO_.getId()) && Objects.isNull(taskTemplateDTO_1.getId())) {
40 // 新增任务 39 // 新增任务
41 this.taskTemplateOperationService.create(taskTemplate); 40 this.taskTemplateOperationService.create(taskTemplate);
42 } 41 }
......
...@@ -38,6 +38,7 @@ import org.springframework.util.Assert; ...@@ -38,6 +38,7 @@ import org.springframework.util.Assert;
38 import org.springframework.validation.annotation.Validated; 38 import org.springframework.validation.annotation.Validated;
39 import org.springframework.web.bind.annotation.*; 39 import org.springframework.web.bind.annotation.*;
40 40
41 import javax.validation.constraints.NotNull;
41 import java.io.IOException; 42 import java.io.IOException;
42 import java.net.URLDecoder; 43 import java.net.URLDecoder;
43 import java.sql.Timestamp; 44 import java.sql.Timestamp;
...@@ -89,7 +90,8 @@ public class UserOperationController { ...@@ -89,7 +90,8 @@ public class UserOperationController {
89 MemberDTO memberDTO = this.memberService.findById(memberId); 90 MemberDTO memberDTO = this.memberService.findById(memberId);
90 91
91 Member member = new Member(); 92 Member member = new Member();
92 BeanUtils.copyProperties(memberDTO, member); 93 member.setId(memberDTO.getId());
94 member.setCode(memberDTO.getCode());
93 if (Objects.nonNull(vip)) { 95 if (Objects.nonNull(vip)) {
94 member.setVip(vip); 96 member.setVip(vip);
95 } 97 }
...@@ -97,9 +99,9 @@ public class UserOperationController { ...@@ -97,9 +99,9 @@ public class UserOperationController {
97 member.setVipExpireTime(vipExpireTime); 99 member.setVipExpireTime(vipExpireTime);
98 } 100 }
99 101
100 this.createVipHistory(userId, vip, vipExpireTime); 102 this.memberOperationService.doUpdateMemberVipAndVipExpireTime(member);
101 103
102 this.memberOperationService.updateMemberVip(member); 104 this.createVipHistory(userId, vip, vipExpireTime);
103 105
104 return ResultInfo.success(); 106 return ResultInfo.success();
105 } 107 }
...@@ -152,8 +154,12 @@ public class UserOperationController { ...@@ -152,8 +154,12 @@ public class UserOperationController {
152 SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(data.getContent(), SubscribeBean.class); 154 SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(data.getContent(), SubscribeBean.class);
153 // 解析参数 155 // 解析参数
154 this.parseSubscribe(subscribeBean); 156 this.parseSubscribe(subscribeBean);
155 this.userOperationService.subscribe(subscribeBean); 157 boolean subscribe = this.userOperationService.subscribe(subscribeBean);
156 return ResultInfo.success(); 158 if (subscribe) {
159 return ResultInfo.success("关注成功");
160 } else {
161 return ResultInfo.failure("关注失败");
162 }
157 } 163 }
158 164
159 /** 165 /**
...@@ -266,6 +272,16 @@ public class UserOperationController { ...@@ -266,6 +272,16 @@ public class UserOperationController {
266 public ResultInfo minaBind(@Validated(value = {BindGroup.class}) @RequestBody BindBean resources) { 272 public ResultInfo minaBind(@Validated(value = {BindGroup.class}) @RequestBody BindBean resources) {
267 log.info("UserOperationController ==> appletBind ==>> param ==> [{}]",resources); 273 log.info("UserOperationController ==> appletBind ==>> param ==> [{}]",resources);
268 274
275 Long memberId = resources.getMemberId();
276 if (Objects.isNull(memberId)) {
277 return ResultInfo.failure("参数错误,memberId 不存在");
278 }
279
280 String platformAccount = resources.getPlatformAccount();
281 if (StringUtils.isBlank(platformAccount)) {
282 return ResultInfo.failure("参数错误,大屏账号不存在");
283 }
284
269 boolean result = this.userOperationService.minaBind(resources); 285 boolean result = this.userOperationService.minaBind(resources);
270 return ResultInfo.success(result); 286 return ResultInfo.success(result);
271 } 287 }
...@@ -276,8 +292,17 @@ public class UserOperationController { ...@@ -276,8 +292,17 @@ public class UserOperationController {
276 public ResultInfo minaUnbind(@Validated(value = {UnbindGroup.class}) @RequestBody WeixinUnBindBean weixinUnBindBean) { 292 public ResultInfo minaUnbind(@Validated(value = {UnbindGroup.class}) @RequestBody WeixinUnBindBean weixinUnBindBean) {
277 log.info("UserOperationController ==> minaUnbind ==>> param ==> [{}]", weixinUnBindBean); 293 log.info("UserOperationController ==> minaUnbind ==>> param ==> [{}]", weixinUnBindBean);
278 294
279 this.userOperationService.minaUnbind(weixinUnBindBean); 295 Long memberId = weixinUnBindBean.getMemberId();
280 return ResultInfo.success(); 296 if (Objects.isNull(memberId)) {
297 log.error("小屏解绑失败,参数错误,memberId不存在");
298 return ResultInfo.failure("参数错误,会员id不存在");
299 }
300 boolean b = this.userOperationService.minaUnbind(weixinUnBindBean);
301 if (b) {
302 return ResultInfo.success("解绑成功");
303 } else {
304 return ResultInfo.failure("解绑失败");
305 }
281 } 306 }
282 307
283 /** 308 /**
...@@ -293,12 +318,18 @@ public class UserOperationController { ...@@ -293,12 +318,18 @@ public class UserOperationController {
293 public ResultInfo memberPreprocess(@RequestBody String data) { 318 public ResultInfo memberPreprocess(@RequestBody String data) {
294 319
295 log.info("UserOperationController ==> saveUserInfo ==>> param ==>> [{}]",data); 320 log.info("UserOperationController ==> saveUserInfo ==>> param ==>> [{}]",data);
296 Assert.notNull(data, "用户数据不可为空"); 321 if (StringUtils.isBlank(data)) {
322 log.error("预存大小屏账号信息失败,无参数");
323 return ResultInfo.failure("参数错误");
324 }
297 325
298 JSONObject json = JSONObject.parseObject(data); 326 JSONObject json = JSONObject.parseObject(data);
299 327
300 String unionid = json.getString("unionid"); 328 String unionid = json.getString("unionid");
301 Assert.state(StrUtil.isNotBlank(unionid), "unionid不可为空"); 329 if (StringUtils.isBlank(unionid)) {
330 log.error("预存大小屏账号信息失败,参数错误,unionid不存在");
331 return ResultInfo.failure("参数错误,unionid不存在");
332 }
302 333
303 334
304 List<Object> resultList = new ArrayList<>(); 335 List<Object> resultList = new ArrayList<>();
...@@ -471,8 +502,10 @@ public class UserOperationController { ...@@ -471,8 +502,10 @@ public class UserOperationController {
471 throw new BadRequestException(GlobeExceptionMsg.IPTV_PLATFORM_ACCOUNT_IS_NULL); 502 throw new BadRequestException(GlobeExceptionMsg.IPTV_PLATFORM_ACCOUNT_IS_NULL);
472 } 503 }
473 504
474 this.userOperationService.tvUnbind(resources); 505 boolean b = this.userOperationService.tvUnbind(resources);
475 return ResultInfo.success(); 506 if (b) {
507 return ResultInfo.success("解绑成功");
508 } else return ResultInfo.failure("解绑失败");
476 } 509 }
477 510
478 @RequestMapping(value = "/changeMainAccount") 511 @RequestMapping(value = "/changeMainAccount")
...@@ -493,9 +526,9 @@ public class UserOperationController { ...@@ -493,9 +526,9 @@ public class UserOperationController {
493 UserTv userTv = new UserTv(); 526 UserTv userTv = new UserTv();
494 userTv.setMemberCode(memberCode); 527 userTv.setMemberCode(memberCode);
495 userTv.setPlatformAccount(platformAccount); 528 userTv.setPlatformAccount(platformAccount);
496 this.userOperationService.changeMainAccount(userTv); 529 boolean b = this.userOperationService.changeMainAccount(userTv);
497 530
498 return ResultInfo.success(); 531 return ResultInfo.success(b);
499 } 532 }
500 533
501 @PostMapping(value = "/deleteAllCollection") 534 @PostMapping(value = "/deleteAllCollection")
......
...@@ -13,13 +13,6 @@ import java.util.List; ...@@ -13,13 +13,6 @@ import java.util.List;
13 public interface PointsOperationService { 13 public interface PointsOperationService {
14 14
15 /** 15 /**
16 * 手动发放积分
17 * @param memberId 会员id
18 * @param tempPoints 积分详情
19 */
20 void grantPointsByManual(Long memberId , TempPoints tempPoints);
21
22 /**
23 * 16 *
24 * @param tempPoints 17 * @param tempPoints
25 */ 18 */
...@@ -44,5 +37,6 @@ public interface PointsOperationService { ...@@ -44,5 +37,6 @@ public interface PointsOperationService {
44 * @param memberId 37 * @param memberId
45 * @return 38 * @return
46 */ 39 */
40 @Deprecated
47 Long cleanInvalidPointsAndCalculateCurrentPoints(Long memberId); 41 Long cleanInvalidPointsAndCalculateCurrentPoints(Long memberId);
48 } 42 }
......
1 package com.topdraw.business.process.service; 1 package com.topdraw.business.process.service;
2 2
3 import com.topdraw.business.module.rights.history.domain.RightsHistory; 3 import com.topdraw.business.module.rights.history.domain.RightsHistory;
4 import com.topdraw.business.process.domian.constant.RightType; 4 import com.topdraw.business.module.rights.constant.RightType;
5 5
6 import java.util.List; 6 import java.util.List;
7 import java.util.Map; 7 import java.util.Map;
......
...@@ -11,8 +11,18 @@ import com.topdraw.common.ResultInfo; ...@@ -11,8 +11,18 @@ import com.topdraw.common.ResultInfo;
11 */ 11 */
12 public interface TaskOperationService { 12 public interface TaskOperationService {
13 13
14 /**
15 *
16 * @param id
17 * @return
18 */
14 TaskDTO findById(Long id); 19 TaskDTO findById(Long id);
15 20
21 /**
22 *
23 * @param code
24 * @return
25 */
16 TaskDTO findByCode(String code); 26 TaskDTO findByCode(String code);
17 27
18 /** 28 /**
...@@ -26,25 +36,25 @@ public interface TaskOperationService { ...@@ -26,25 +36,25 @@ public interface TaskOperationService {
26 * 36 *
27 * @param task 37 * @param task
28 */ 38 */
29 void createTask(Task task); 39 TaskDTO createTask(Task task);
30 40
31 /** 41 /**
32 * 42 *
33 * @param task 43 * @param task
34 */ 44 */
35 void updateTask(Task task); 45 TaskDTO updateTask(Task task);
36 46
37 /** 47 /**
38 * 48 *
39 * @param task 49 * @param task
40 */ 50 */
41 void deleteTask(Task task); 51 Integer deleteTask(Task task);
42 52
43 /** 53 /**
44 * 54 *
45 * @param id 55 * @param id
46 */ 56 */
47 void deleteTask(Long id); 57 Integer deleteTask(Long id);
48 58
49 /** 59 /**
50 * 60 *
...@@ -54,6 +64,4 @@ public interface TaskOperationService { ...@@ -54,6 +64,4 @@ public interface TaskOperationService {
54 */ 64 */
55 boolean createPoint2ChongQing(String platformAccount, Long points); 65 boolean createPoint2ChongQing(String platformAccount, Long points);
56 66
57
58
59 } 67 }
......
...@@ -43,6 +43,13 @@ public interface TaskTemplateOperationService { ...@@ -43,6 +43,13 @@ public interface TaskTemplateOperationService {
43 43
44 /** 44 /**
45 * 45 *
46 * @param taskTemplate
47 * @return
48 */
49 Long countByCodeAndType(TaskTemplate taskTemplate);
50
51 /**
52 *
46 * @param id 53 * @param id
47 * @return 54 * @return
48 */ 55 */
......
...@@ -52,13 +52,13 @@ public interface UserOperationService { ...@@ -52,13 +52,13 @@ public interface UserOperationService {
52 * 大屏解绑 52 * 大屏解绑
53 * @param userTv 53 * @param userTv
54 */ 54 */
55 void tvUnbind(TvUnBindBean userTv); 55 boolean tvUnbind(TvUnBindBean userTv);
56 56
57 /** 57 /**
58 * 大屏切换主账户(会员) 58 * 大屏切换主账户(会员)
59 * @param userTv 59 * @param userTv
60 */ 60 */
61 void changeMainAccount(UserTv userTv); 61 boolean changeMainAccount(UserTv userTv);
62 62
63 /** 63 /**
64 * 微信公众号关注 64 * 微信公众号关注
...@@ -114,20 +114,6 @@ public interface UserOperationService { ...@@ -114,20 +114,6 @@ public interface UserOperationService {
114 114
115 /** 115 /**
116 * 116 *
117 * @param memberCode
118 * @param platformAccount
119 */
120 void bind(String memberCode, String platformAccount);
121
122 /**
123 *
124 * @param memberDTO
125 * @param userTvDTO
126 */
127 void bind(MemberDTO memberDTO, UserTvDTO userTvDTO);
128
129 /**
130 *
131 * @param memberDTO 117 * @param memberDTO
132 * @param platformAccount 118 * @param platformAccount
133 * @return 119 * @return
...@@ -152,7 +138,7 @@ public interface UserOperationService { ...@@ -152,7 +138,7 @@ public interface UserOperationService {
152 * 小屏解绑 138 * 小屏解绑
153 * @param weixinUnBindBean 139 * @param weixinUnBindBean
154 */ 140 */
155 void minaUnbind(WeixinUnBindBean weixinUnBindBean); 141 boolean minaUnbind(WeixinUnBindBean weixinUnBindBean);
156 142
157 /** 143 /**
158 * 144 *
......
...@@ -12,6 +12,7 @@ import com.topdraw.business.process.service.CouponOperationService; ...@@ -12,6 +12,7 @@ import com.topdraw.business.process.service.CouponOperationService;
12 import com.topdraw.business.process.service.member.MemberOperationService; 12 import com.topdraw.business.process.service.member.MemberOperationService;
13 import com.topdraw.business.process.domian.TempCoupon; 13 import com.topdraw.business.process.domian.TempCoupon;
14 import com.topdraw.business.process.service.RightsOperationService; 14 import com.topdraw.business.process.service.RightsOperationService;
15 import com.topdraw.config.RedisKeyConstants;
15 import com.topdraw.util.TimestampUtil; 16 import com.topdraw.util.TimestampUtil;
16 import com.topdraw.utils.RedisUtils; 17 import com.topdraw.utils.RedisUtils;
17 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
...@@ -73,7 +74,6 @@ public class CouponOperationServiceImpl implements CouponOperationService { ...@@ -73,7 +74,6 @@ public class CouponOperationServiceImpl implements CouponOperationService {
73 } 74 }
74 } 75 }
75 76
76
77 /** 77 /**
78 * 优惠券领取历史记录表 78 * 优惠券领取历史记录表
79 * 79 *
...@@ -92,11 +92,10 @@ public class CouponOperationServiceImpl implements CouponOperationService { ...@@ -92,11 +92,10 @@ public class CouponOperationServiceImpl implements CouponOperationService {
92 * @param tempCoupon 账号id 92 * @param tempCoupon 账号id
93 */ 93 */
94 private void refreshMemberCoupon(TempCoupon tempCoupon) { 94 private void refreshMemberCoupon(TempCoupon tempCoupon) {
95 // Long userId = tempCoupon.getUserId();
96 Long memberId = tempCoupon.getMemberId(); 95 Long memberId = tempCoupon.getMemberId();
97 Integer rightsAmount = tempCoupon.getRightsAmount(); 96 Integer rightsAmount = tempCoupon.getRightsAmount();
98 try { 97 try {
99 98 this.redisUtils.doLock(RedisKeyConstants.updateCacheCouponByMemberId + memberId.toString());
100 // 1.历史总优惠券数量 99 // 1.历史总优惠券数量
101 Long historyCouponCount = this.getTotalHistoryCoupon(memberId); 100 Long historyCouponCount = this.getTotalHistoryCoupon(memberId);
102 // 1.当前总优惠券数量 101 // 1.当前总优惠券数量
...@@ -107,15 +106,12 @@ public class CouponOperationServiceImpl implements CouponOperationService { ...@@ -107,15 +106,12 @@ public class CouponOperationServiceImpl implements CouponOperationService {
107 Long expireSoonCouponCount = this.getTotalExpireSoonCoupon(memberId, EXPIRE_FACTOR_DAY); 106 Long expireSoonCouponCount = this.getTotalExpireSoonCoupon(memberId, EXPIRE_FACTOR_DAY);
108 // 4.当前优惠券数量 = 总优惠券-已过期的优惠券 107 // 4.当前优惠券数量 = 总优惠券-已过期的优惠券
109 Long currentCoupon = this.getCurrentCoupon(totalCouponCount, expireCouponCount); 108 Long currentCoupon = this.getCurrentCoupon(totalCouponCount, expireCouponCount);
110
111 this.redisUtils.doLock("right::member::id::" + memberId.toString());
112 // 5.更新用户信息(优惠券数量、即将过期的优惠券数量) 109 // 5.更新用户信息(优惠券数量、即将过期的优惠券数量)
113 this.doUpdateMemberInfo(memberId,currentCoupon,expireSoonCouponCount); 110 this.doUpdateMemberInfo(memberId,currentCoupon,expireSoonCouponCount);
114 } catch (Exception e) { 111 } catch (Exception e) {
115 e.printStackTrace(); 112 log.error(e.getMessage());
116 throw e;
117 } finally { 113 } finally {
118 this.redisUtils.doUnLock("right::member::id::" + memberId.toString()); 114 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheCouponByMemberId + memberId.toString());
119 } 115 }
120 } 116 }
121 117
...@@ -134,7 +130,6 @@ public class CouponOperationServiceImpl implements CouponOperationService { ...@@ -134,7 +130,6 @@ public class CouponOperationServiceImpl implements CouponOperationService {
134 MemberDTO memberDTO = this.findMemberByMemberId(memberId); 130 MemberDTO memberDTO = this.findMemberByMemberId(memberId);
135 131
136 Member member = new Member(); 132 Member member = new Member();
137 // BeanUtils.copyProperties(memberDTO,member);
138 member.setId(memberDTO.getId()); 133 member.setId(memberDTO.getId());
139 member.setCode(memberDTO.getCode()); 134 member.setCode(memberDTO.getCode());
140 member.setCouponAmount(currentCoupon); 135 member.setCouponAmount(currentCoupon);
......
...@@ -11,6 +11,7 @@ import com.topdraw.business.module.member.service.dto.MemberDTO; ...@@ -11,6 +11,7 @@ import com.topdraw.business.module.member.service.dto.MemberDTO;
11 import com.topdraw.business.process.service.ExpOperationService; 11 import com.topdraw.business.process.service.ExpOperationService;
12 import com.topdraw.business.process.service.member.MemberOperationService; 12 import com.topdraw.business.process.service.member.MemberOperationService;
13 import com.topdraw.business.process.domian.TempExp; 13 import com.topdraw.business.process.domian.TempExp;
14 import com.topdraw.config.RedisKeyConstants;
14 import com.topdraw.util.IdWorker; 15 import com.topdraw.util.IdWorker;
15 import com.topdraw.util.TimestampUtil; 16 import com.topdraw.util.TimestampUtil;
16 import com.topdraw.utils.RedisUtils; 17 import com.topdraw.utils.RedisUtils;
...@@ -76,6 +77,7 @@ public class ExpOperationServiceImpl implements ExpOperationService { ...@@ -76,6 +77,7 @@ public class ExpOperationServiceImpl implements ExpOperationService {
76 */ 77 */
77 private void refresh(TempExp tempExp) { 78 private void refresh(TempExp tempExp) {
78 try { 79 try {
80 this.redisUtils.doLock(RedisKeyConstants.updateCacheExpByMemberId + tempExp.getMemberId());
79 81
80 // 原始经验值 82 // 原始经验值
81 long originExp = this.getExpByMemberId(tempExp); 83 long originExp = this.getExpByMemberId(tempExp);
...@@ -84,7 +86,6 @@ public class ExpOperationServiceImpl implements ExpOperationService { ...@@ -84,7 +86,6 @@ public class ExpOperationServiceImpl implements ExpOperationService {
84 long totalExp = this.calculateTotalExp(originExp, tempExp); 86 long totalExp = this.calculateTotalExp(originExp, tempExp);
85 log.info("----计算总经验值 ==>> {}", totalExp); 87 log.info("----计算总经验值 ==>> {}", totalExp);
86 88
87 this.redisUtils.doLock("right::member::id::" + tempExp.getMemberId());
88 // 2.更新成长值与等级 89 // 2.更新成长值与等级
89 log.info("----更新会员经验值与对应等级 ==>> {}", totalExp); 90 log.info("----更新会员经验值与对应等级 ==>> {}", totalExp);
90 this.refreshMemberExpAndLevel(tempExp, totalExp); 91 this.refreshMemberExpAndLevel(tempExp, totalExp);
...@@ -93,10 +94,9 @@ public class ExpOperationServiceImpl implements ExpOperationService { ...@@ -93,10 +94,9 @@ public class ExpOperationServiceImpl implements ExpOperationService {
93 this.doInsertExpDetail(tempExp, originExp, totalExp); 94 this.doInsertExpDetail(tempExp, originExp, totalExp);
94 95
95 } catch (Exception e) { 96 } catch (Exception e) {
96 e.printStackTrace(); 97 log.error("成长值发放失败,"+e.getMessage());
97 throw e;
98 } finally { 98 } finally {
99 this.redisUtils.doUnLock("right::member::id::" + tempExp.getMemberId()); 99 this.redisUtils.doUnLock(RedisKeyConstants.updateCacheExpByMemberId + tempExp.getMemberId());
100 } 100 }
101 } 101 }
102 102
...@@ -148,7 +148,6 @@ public class ExpOperationServiceImpl implements ExpOperationService { ...@@ -148,7 +148,6 @@ public class ExpOperationServiceImpl implements ExpOperationService {
148 MemberDTO memberDTO = this.findMemberByMemberId(memberId); 148 MemberDTO memberDTO = this.findMemberByMemberId(memberId);
149 149
150 Member member = new Member(); 150 Member member = new Member();
151 // BeanUtils.copyProperties(memberDTO, member);
152 member.setId(memberDTO.getId()); 151 member.setId(memberDTO.getId());
153 member.setCode(memberDTO.getCode()); 152 member.setCode(memberDTO.getCode());
154 member.setExp(totalExp); 153 member.setExp(totalExp);
......
...@@ -17,6 +17,8 @@ import com.topdraw.business.process.service.dto.CustomPointsResult; ...@@ -17,6 +17,8 @@ import com.topdraw.business.process.service.dto.CustomPointsResult;
17 import com.topdraw.business.process.service.member.MemberOperationService; 17 import com.topdraw.business.process.service.member.MemberOperationService;
18 import com.topdraw.business.process.service.PointsOperationService; 18 import com.topdraw.business.process.service.PointsOperationService;
19 import com.topdraw.business.process.domian.TempPoints; 19 import com.topdraw.business.process.domian.TempPoints;
20 import com.topdraw.config.RedisKeyConstants;
21 import com.topdraw.mq.producer.MessageProducer;
20 import com.topdraw.util.DateUtil; 22 import com.topdraw.util.DateUtil;
21 import com.topdraw.util.IdWorker; 23 import com.topdraw.util.IdWorker;
22 import com.topdraw.util.TimestampUtil; 24 import com.topdraw.util.TimestampUtil;
...@@ -83,25 +85,12 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -83,25 +85,12 @@ public class PointsOperationServiceImpl implements PointsOperationService {
83 public void asyncPointsDetail(PointsDetail pointsDetail) {} 85 public void asyncPointsDetail(PointsDetail pointsDetail) {}
84 86
85 @Override 87 @Override
86 @Transactional(rollbackFor = Exception.class)
87 public void grantPointsByManual(Long memberId, TempPoints tempPoints){
88 if (Objects.nonNull(tempPoints) && Objects.nonNull(tempPoints.getPoints())) {
89 MemberDTO memberDTo = this.memberService.findById(memberId);
90 String memberCode = memberDTo.getCode();
91 tempPoints.setMemberCode(memberCode);
92 this.refresh(tempPoints);
93 }
94 }
95
96 @Override
97 public void grantPointsByManualByTempPoints(TempPoints tempPoints) { 88 public void grantPointsByManualByTempPoints(TempPoints tempPoints) {
98 if (Objects.nonNull(tempPoints) && Objects.nonNull(tempPoints.getPoints())) { 89 Timestamp expireTime = tempPoints.getExpireTime();
99 Timestamp expireTime = tempPoints.getExpireTime(); 90 if (Objects.isNull(expireTime)){
100 if (Objects.isNull(expireTime)){ 91 tempPoints.setExpireTime(TimestampUtil.localDateTime2Timestamp(DateUtil.getLastDateTimeSecondYear()));
101 tempPoints.setExpireTime(TimestampUtil.localDateTime2Timestamp(DateUtil.getLastDateTimeSecondYear()));
102 }
103 this.refresh(tempPoints);
104 } 92 }
93 this.refresh(tempPoints);
105 } 94 }
106 95
107 /** 96 /**
...@@ -118,7 +107,7 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -118,7 +107,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
118 Long memberId = tempPoints.getMemberId(); 107 Long memberId = tempPoints.getMemberId();
119 108
120 try { 109 try {
121 this.redisUtils.doLock("member::id::" + memberId.toString()); 110 this.redisUtils.doLock(RedisKeyConstants.cacheMemberById + memberId.toString());
122 //1.删除过期的积分 111 //1.删除过期的积分
123 this.cleanInvalidAvailablePointsByMemberId(memberId); 112 this.cleanInvalidAvailablePointsByMemberId(memberId);
124 log.info("删除过期的积分 ==>> cleanInvalidAvailablePointsByMemberId ==>> "); 113 log.info("删除过期的积分 ==>> cleanInvalidAvailablePointsByMemberId ==>> ");
...@@ -153,11 +142,10 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -153,11 +142,10 @@ public class PointsOperationServiceImpl implements PointsOperationService {
153 customPointsResult.setPoint(currentPoints); 142 customPointsResult.setPoint(currentPoints);
154 } 143 }
155 144
156 }catch (Exception e) { 145 } catch (Exception e) {
157 e.printStackTrace(); 146 log.error("消耗积分失败,"+e.getMessage());
158 throw e;
159 } finally { 147 } finally {
160 this.redisUtils.doUnLock("member::id::" + memberId.toString()); 148 this.redisUtils.doUnLock(RedisKeyConstants.cacheMemberById + memberId.toString());
161 } 149 }
162 150
163 return customPointsResult; 151 return customPointsResult;
...@@ -445,7 +433,7 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -445,7 +433,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
445 Long memberId = tempPoints.getMemberId(); 433 Long memberId = tempPoints.getMemberId();
446 log.info("----------->> 会员id ===>>>>" + memberId); 434 log.info("----------->> 会员id ===>>>>" + memberId);
447 try { 435 try {
448 436 this.redisUtils.doLock(RedisKeyConstants.updateCachePointsByMemberId + memberId.toString());
449 // 1.可用总积分 437 // 1.可用总积分
450 Long currentPoints = this.findAvailablePointsByMemberId(memberId); 438 Long currentPoints = this.findAvailablePointsByMemberId(memberId);
451 log.info("----------->> 获取会员当前可用总积分 --->>>> {}", currentPoints); 439 log.info("----------->> 获取会员当前可用总积分 --->>>> {}", currentPoints);
...@@ -466,8 +454,6 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -466,8 +454,6 @@ public class PointsOperationServiceImpl implements PointsOperationService {
466 long soonExpirePoints = this.getSoonExpirePoints(memberId, tempPoints); 454 long soonExpirePoints = this.getSoonExpirePoints(memberId, tempPoints);
467 log.info("----------->> 即将过期的积分 ------->>>>> {}", soonExpirePoints); 455 log.info("----------->> 即将过期的积分 ------->>>>> {}", soonExpirePoints);
468 456
469 this.redisUtils.doLock("right::member::id::" + memberId.toString());
470
471 // 6.更新会员的总积分 457 // 6.更新会员的总积分
472 log.info("----------->> 更新会员的总积分 ------->>>>> 总积分--->>> {}", totalPoints); 458 log.info("----------->> 更新会员的总积分 ------->>>>> 总积分--->>> {}", totalPoints);
473 this.freshMemberCurrentPoints(memberId, totalPoints, soonExpirePoints); 459 this.freshMemberCurrentPoints(memberId, totalPoints, soonExpirePoints);
...@@ -476,7 +462,7 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -476,7 +462,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
476 e.printStackTrace(); 462 e.printStackTrace();
477 throw e; 463 throw e;
478 } finally { 464 } finally {
479 this.redisUtils.doUnLock("right::member::id::" + memberId.toString()); 465 this.redisUtils.doUnLock(RedisKeyConstants.updateCachePointsByMemberId + memberId.toString());
480 } 466 }
481 } 467 }
482 468
...@@ -530,7 +516,6 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -530,7 +516,6 @@ public class PointsOperationServiceImpl implements PointsOperationService {
530 MemberDTO memberDTO = this.findMemberByMemberId(memberId); 516 MemberDTO memberDTO = this.findMemberByMemberId(memberId);
531 517
532 Member member = new Member(); 518 Member member = new Member();
533 // BeanUtils.copyProperties(memberDTO, member);
534 member.setId(memberDTO.getId()); 519 member.setId(memberDTO.getId());
535 member.setCode(memberDTO.getCode()); 520 member.setCode(memberDTO.getCode());
536 member.setPoints(Objects.nonNull(currentPoints) ? currentPoints:0); 521 member.setPoints(Objects.nonNull(currentPoints) ? currentPoints:0);
...@@ -541,7 +526,7 @@ public class PointsOperationServiceImpl implements PointsOperationService { ...@@ -541,7 +526,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
541 526
542 ((PointsOperationServiceImpl) AopContext.currentProxy()).asyncMemberPoint(member); 527 ((PointsOperationServiceImpl) AopContext.currentProxy()).asyncMemberPoint(member);
543 } catch (Exception e){ 528 } catch (Exception e){
544 throw e; 529 log.error("同步会员积分异常,"+e.getMessage());
545 } 530 }
546 } 531 }
547 532
......
...@@ -6,7 +6,8 @@ import com.topdraw.business.module.rights.history.domain.RightsHistory; ...@@ -6,7 +6,8 @@ import com.topdraw.business.module.rights.history.domain.RightsHistory;
6 import com.topdraw.business.module.rights.history.service.RightsHistoryService; 6 import com.topdraw.business.module.rights.history.service.RightsHistoryService;
7 import com.topdraw.business.module.rights.service.RightsService; 7 import com.topdraw.business.module.rights.service.RightsService;
8 import com.topdraw.business.module.rights.service.dto.RightsDTO; 8 import com.topdraw.business.module.rights.service.dto.RightsDTO;
9 import com.topdraw.business.process.domian.constant.RightType; 9 import com.topdraw.business.module.rights.constant.RightType;
10 import com.topdraw.business.module.rights.constant.RightTypeConstants;
10 import com.topdraw.business.process.service.CouponOperationService; 11 import com.topdraw.business.process.service.CouponOperationService;
11 import com.topdraw.business.process.service.ExpOperationService; 12 import com.topdraw.business.process.service.ExpOperationService;
12 import com.topdraw.business.process.service.PointsOperationService; 13 import com.topdraw.business.process.service.PointsOperationService;
...@@ -14,8 +15,6 @@ import com.topdraw.business.process.service.RightsOperationService; ...@@ -14,8 +15,6 @@ import com.topdraw.business.process.service.RightsOperationService;
14 import com.topdraw.business.process.domian.*; 15 import com.topdraw.business.process.domian.*;
15 import com.topdraw.util.TimestampUtil; 16 import com.topdraw.util.TimestampUtil;
16 import lombok.extern.slf4j.Slf4j; 17 import lombok.extern.slf4j.Slf4j;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 19 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
21 import org.springframework.stereotype.Service; 20 import org.springframework.stereotype.Service;
...@@ -24,7 +23,6 @@ import org.springframework.util.StringUtils; ...@@ -24,7 +23,6 @@ import org.springframework.util.StringUtils;
24 23
25 import java.sql.Timestamp; 24 import java.sql.Timestamp;
26 import java.util.*; 25 import java.util.*;
27 import java.util.concurrent.ThreadPoolExecutor;
28 26
29 /** 27 /**
30 * 权益处理 28 * 权益处理
...@@ -148,54 +146,7 @@ public class RightsOperationServiceImpl implements RightsOperationService { ...@@ -148,54 +146,7 @@ public class RightsOperationServiceImpl implements RightsOperationService {
148 * @param tempRightsMap 146 * @param tempRightsMap
149 */ 147 */
150 private void refresh(Map<RightType, Object> tempRightsMap) { 148 private void refresh(Map<RightType, Object> tempRightsMap) {
151 /*FutureTask<Map<Long,Long>> futureTask1 = new FutureTask(()->{ 149
152 log.info(Thread.currentThread().getName() + "=========>> start");
153 // 积分
154 this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
155 log.info(Thread.currentThread().getName() + "=========>>grantPoint end");
156 // 成长值
157 // this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
158 // 优惠券
159 // this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
160 return null;
161 });
162 FutureTask<Map<Long,Long>> futureTask2 = new FutureTask(()->{
163 // 积分
164 // this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
165 // 成长值
166 this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
167 // 优惠券
168 // this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
169 return null;
170 });
171 FutureTask<Map<Long,Long>> futureTask3 = new FutureTask(()->{
172 // 积分
173 // this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
174 // 成长值
175 // this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
176 // 优惠券
177 this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
178 return null;
179 });
180 this.threadPoolTaskExecutor.execute(futureTask1);
181 this.threadPoolTaskExecutor.execute(futureTask2);
182 this.threadPoolTaskExecutor.execute(futureTask3);*/
183 /*this.threadPoolTaskExecutor.execute(() -> {
184 // 积分
185 this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
186 // 成长值
187 this.grantExp((List<TempExp>) tempRightsMap.get(RightType.EXP));
188 // 优惠券
189 this.grantCoupon((List<TempCoupon>) tempRightsMap.get(RightType.COUPON));
190 });*/
191
192
193 /*this.threadPoolTaskExecutor.execute(() -> {
194 log.info(Thread.currentThread().getName() + "=========>> start");
195 // 积分
196 this.grantPoint((List<TempPoints>) tempRightsMap.get(RightType.POINTS));
197 log.info(Thread.currentThread().getName() + "=========>> end");
198 });*/
199 this.threadPoolTaskExecutor.execute(() -> { 150 this.threadPoolTaskExecutor.execute(() -> {
200 List<TempPoints> tempPointsList = (List<TempPoints>) tempRightsMap.get(RightType.POINTS); 151 List<TempPoints> tempPointsList = (List<TempPoints>) tempRightsMap.get(RightType.POINTS);
201 if (!CollectionUtils.isEmpty(tempPointsList)) { 152 if (!CollectionUtils.isEmpty(tempPointsList)) {
...@@ -209,15 +160,15 @@ public class RightsOperationServiceImpl implements RightsOperationService { ...@@ -209,15 +160,15 @@ public class RightsOperationServiceImpl implements RightsOperationService {
209 }); 160 });
210 161
211 this.threadPoolTaskExecutor.execute(()-> { 162 this.threadPoolTaskExecutor.execute(()-> {
212 List<TempExp> tempExpList = (List<TempExp>) tempRightsMap.get(RightType.EXP); 163 List<TempExp> tempExpList = (List<TempExp>) tempRightsMap.get(RightType.EXP);
213 if (!CollectionUtils.isEmpty(tempExpList)) { 164 if (!CollectionUtils.isEmpty(tempExpList)) {
214 log.info("发放成长值开始 ==>> [{}]", tempExpList); 165 log.info("发放成长值开始 ==>> [{}]", tempExpList);
215 long l = System.currentTimeMillis(); 166 long l = System.currentTimeMillis();
216 // 成长值 167 // 成长值
217 this.grantExp(tempExpList); 168 this.grantExp(tempExpList);
218 long l2 = System.currentTimeMillis(); 169 long l2 = System.currentTimeMillis();
219 log.info("发放成长值结束,总耗时 ==>> {}", (l2 - l)); 170 log.info("发放成长值结束,总耗时 ==>> {}", (l2 - l));
220 } 171 }
221 }); 172 });
222 173
223 this.threadPoolTaskExecutor.execute(()-> { 174 this.threadPoolTaskExecutor.execute(()-> {
...@@ -252,7 +203,7 @@ public class RightsOperationServiceImpl implements RightsOperationService { ...@@ -252,7 +203,7 @@ public class RightsOperationServiceImpl implements RightsOperationService {
252 203
253 // 活动机会 204 // 活动机会
254 case ACTIVITYCHANCE: 205 case ACTIVITYCHANCE:
255 206 // TODO MOSS 增加活动机会接口
256 break; 207 break;
257 208
258 // 积分商品 209 // 积分商品
...@@ -298,7 +249,7 @@ public class RightsOperationServiceImpl implements RightsOperationService { ...@@ -298,7 +249,7 @@ public class RightsOperationServiceImpl implements RightsOperationService {
298 // 权益类型 249 // 权益类型
299 RightsDTO rightsDTO = this.getRights(rightId); 250 RightsDTO rightsDTO = this.getRights(rightId);
300 // 权益的实体类型 1:积分;2成长值;3优惠券 251 // 权益的实体类型 1:积分;2成长值;3优惠券
301 String type = rightsDTO.getEntityType(); 252 Integer type = rightsDTO.getEntityType();
302 Long expireTime1 = rightsDTO.getExpireTime(); 253 Long expireTime1 = rightsDTO.getExpireTime();
303 Timestamp expireTime = null; 254 Timestamp expireTime = null;
304 if (Objects.nonNull(expireTime1)){ 255 if (Objects.nonNull(expireTime1)){
...@@ -307,7 +258,8 @@ public class RightsOperationServiceImpl implements RightsOperationService { ...@@ -307,7 +258,8 @@ public class RightsOperationServiceImpl implements RightsOperationService {
307 258
308 switch (type) { 259 switch (type) {
309 // 优惠券 260 // 优惠券
310 case "1": 261 case RightTypeConstants
262 .DISCOUNT_COUPON:
311 Long entityId = rightsDTO.getEntityId(); 263 Long entityId = rightsDTO.getEntityId();
312 CouponDTO couponDTO = this.findCouponById(entityId); 264 CouponDTO couponDTO = this.findCouponById(entityId);
313 if (Objects.nonNull(couponDTO)) { 265 if (Objects.nonNull(couponDTO)) {
...@@ -319,16 +271,15 @@ public class RightsOperationServiceImpl implements RightsOperationService { ...@@ -319,16 +271,15 @@ public class RightsOperationServiceImpl implements RightsOperationService {
319 tempCoupon.setRightsSendStrategy(0); 271 tempCoupon.setRightsSendStrategy(0);
320 tempCoupon.setCode(couponDTO.getCode()); 272 tempCoupon.setCode(couponDTO.getCode());
321 if (Objects.nonNull(expireTime)) 273 if (Objects.nonNull(expireTime))
322 // tempCoupon.setExpireTime(TimestampUtil.long2LocalDateTime(expireTime));
323 tempCoupon.setExpireTime(expireTime); 274 tempCoupon.setExpireTime(expireTime);
324 tempCouponList.add(tempCoupon); 275 tempCouponList.add(tempCoupon);
325 } 276 }
326 break; 277 break;
327 // 观影券 278 // 观影券
328 case "2": 279 case RightTypeConstants.VIEW_COUPON:
329 break; 280 break;
330 // 活动参与机会 281 // 活动参与机会
331 case "3": 282 case RightTypeConstants.JOIN_ACTIVITY:
332 break; 283 break;
333 284
334 default: 285 default:
......
...@@ -23,7 +23,7 @@ import com.topdraw.business.module.user.iptv.domain.UserTv; ...@@ -23,7 +23,7 @@ import com.topdraw.business.module.user.iptv.domain.UserTv;
23 import com.topdraw.business.module.user.iptv.service.UserTvService; 23 import com.topdraw.business.module.user.iptv.service.UserTvService;
24 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO; 24 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
25 import com.topdraw.business.process.domian.constant.TaskTemplateType; 25 import com.topdraw.business.process.domian.constant.TaskTemplateType;
26 import com.topdraw.business.process.domian.constant.RightType; 26 import com.topdraw.business.module.rights.constant.RightType;
27 import com.topdraw.business.process.service.PointsOperationService; 27 import com.topdraw.business.process.service.PointsOperationService;
28 import com.topdraw.business.process.service.RightsOperationService; 28 import com.topdraw.business.process.service.RightsOperationService;
29 import com.topdraw.business.process.service.TaskOperationService; 29 import com.topdraw.business.process.service.TaskOperationService;
...@@ -36,14 +36,21 @@ import com.topdraw.business.module.task.template.service.TaskTemplateService; ...@@ -36,14 +36,21 @@ import com.topdraw.business.module.task.template.service.TaskTemplateService;
36 import com.topdraw.business.process.domian.*; 36 import com.topdraw.business.process.domian.*;
37 import com.topdraw.business.process.service.UserOperationService; 37 import com.topdraw.business.process.service.UserOperationService;
38 import com.topdraw.common.ResultInfo; 38 import com.topdraw.common.ResultInfo;
39 import com.topdraw.exception.BadRequestException; 39 import com.topdraw.config.LocalConstants;
40 import com.topdraw.business.module.rights.constant.RightTypeConstants;
41 import com.topdraw.business.module.task.template.constant.TaskEventType;
42 import com.topdraw.config.RedisKeyConstants;
40 import com.topdraw.mq.module.mq.DataSyncMsg; 43 import com.topdraw.mq.module.mq.DataSyncMsg;
41 import com.topdraw.util.*; 44 import com.topdraw.util.*;
45 import com.topdraw.utils.RedisUtils;
42 import lombok.extern.slf4j.Slf4j; 46 import lombok.extern.slf4j.Slf4j;
43 import org.apache.commons.lang3.StringUtils; 47 import org.apache.commons.lang3.StringUtils;
44 import org.springframework.aop.framework.AopContext; 48 import org.springframework.aop.framework.AopContext;
45 import org.springframework.beans.BeanUtils; 49 import org.springframework.beans.BeanUtils;
46 import org.springframework.beans.factory.annotation.Autowired; 50 import org.springframework.beans.factory.annotation.Autowired;
51 import org.springframework.beans.factory.annotation.Value;
52 import org.springframework.cache.annotation.CacheEvict;
53 import org.springframework.cache.annotation.CachePut;
47 import org.springframework.data.redis.core.StringRedisTemplate; 54 import org.springframework.data.redis.core.StringRedisTemplate;
48 import org.springframework.data.redis.core.ValueOperations; 55 import org.springframework.data.redis.core.ValueOperations;
49 import org.springframework.stereotype.Service; 56 import org.springframework.stereotype.Service;
...@@ -89,6 +96,12 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -89,6 +96,12 @@ public class TaskOperationServiceImpl implements TaskOperationService {
89 @Autowired 96 @Autowired
90 private RightsOperationService rightsOperationService; 97 private RightsOperationService rightsOperationService;
91 98
99 @Autowired
100 private RedisUtils redisUtils;
101
102 @Value("${uc.validPriorityMember}")
103 private int validPriorityMember;
104
92 private static final Integer TASK_FINISH_STATUS = 1; 105 private static final Integer TASK_FINISH_STATUS = 1;
93 private static final Integer TASK_UNFINISH_STATUS = 2; 106 private static final Integer TASK_UNFINISH_STATUS = 2;
94 private static final Integer POINTS_TYPE_RANDOM = 1; 107 private static final Integer POINTS_TYPE_RANDOM = 1;
...@@ -103,9 +116,11 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -103,9 +116,11 @@ public class TaskOperationServiceImpl implements TaskOperationService {
103 public void asyncDeleteTask(Task task) {} 116 public void asyncDeleteTask(Task task) {}
104 117
105 @Override 118 @Override
106 public void createTask(Task task) { 119 /* @CachePut(cacheNames = RedisKeyConstants.cacheTaskByTaskTemplateId, key = "#task.taskTemplateId",
120 unless = "#result.id == null")*/
121 public TaskDTO createTask(Task task) {
107 Long taskTemplateId = task.getTaskTemplateId(); 122 Long taskTemplateId = task.getTaskTemplateId();
108 TaskTemplateDTO taskTemplateDTO = this.findByTemplateId(taskTemplateId); 123 TaskTemplateDTO taskTemplateDTO = this.taskTemplateService.findById(taskTemplateId);
109 124
110 task.setTaskTemplateCode(taskTemplateDTO.getCode()); 125 task.setTaskTemplateCode(taskTemplateDTO.getCode());
111 Task task_ = TaskBuilder.build(task); 126 Task task_ = TaskBuilder.build(task);
...@@ -116,15 +131,8 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -116,15 +131,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
116 } 131 }
117 132
118 ((TaskOperationServiceImpl) AopContext.currentProxy()).asyncCreateTask(task_); 133 ((TaskOperationServiceImpl) AopContext.currentProxy()).asyncCreateTask(task_);
119 }
120 134
121 /** 135 return taskDTO;
122 *
123 * @param taskTemplateId
124 * @return
125 */
126 private TaskTemplateDTO findByTemplateId(Long taskTemplateId){
127 return this.taskTemplateService.findById(taskTemplateId);
128 } 136 }
129 137
130 /** 138 /**
...@@ -139,9 +147,11 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -139,9 +147,11 @@ public class TaskOperationServiceImpl implements TaskOperationService {
139 } 147 }
140 148
141 @Override 149 @Override
142 public void updateTask(Task task) { 150 /*@CachePut(cacheNames = RedisKeyConstants.cacheTaskByTaskTemplateId, key = "#task.taskTemplateId",
151 unless = "#result.id == null")*/
152 public TaskDTO updateTask(Task task) {
143 Long taskTemplateId = task.getTaskTemplateId(); 153 Long taskTemplateId = task.getTaskTemplateId();
144 TaskTemplateDTO taskTemplateDTO = this.findByTemplateId(taskTemplateId); 154 TaskTemplateDTO taskTemplateDTO = this.taskTemplateService.findById(taskTemplateId);
145 task.setTaskTemplateCode(taskTemplateDTO.getCode()); 155 task.setTaskTemplateCode(taskTemplateDTO.getCode());
146 TaskDTO update = this.taskService.update(task); 156 TaskDTO update = this.taskService.update(task);
147 if (Objects.nonNull(update.getId())) { 157 if (Objects.nonNull(update.getId())) {
...@@ -149,6 +159,8 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -149,6 +159,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
149 } 159 }
150 160
151 ((TaskOperationServiceImpl) AopContext.currentProxy()).asyncUpdateTask(task); 161 ((TaskOperationServiceImpl) AopContext.currentProxy()).asyncUpdateTask(task);
162
163 return update;
152 } 164 }
153 165
154 /** 166 /**
...@@ -167,26 +179,33 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -167,26 +179,33 @@ public class TaskOperationServiceImpl implements TaskOperationService {
167 } 179 }
168 180
169 @Override 181 @Override
170 public void deleteTask(Task task) { 182 /*@CacheEvict(cacheNames = "", key = "")*/
183 public Integer deleteTask(Task task) {
171 Long id = task.getId(); 184 Long id = task.getId();
172 TaskDTO taskDTO = this.findById(id); 185 TaskDTO taskDTO = this.findById(id);
173 if (Objects.nonNull(taskDTO.getId())) { 186 if (Objects.nonNull(taskDTO.getId())) {
174 task.setId(taskDTO.getId()); 187 task.setId(taskDTO.getId());
175 this.taskService.delete(task); 188 Integer delete = this.taskService.delete(task);
176 task.setCode(taskDTO.getCode()); 189 task.setCode(taskDTO.getCode());
177 ((TaskOperationServiceImpl) AopContext.currentProxy()).asyncDeleteTask(task); 190 ((TaskOperationServiceImpl) AopContext.currentProxy()).asyncDeleteTask(task);
191
192 return delete;
178 } 193 }
194
195 return 0;
179 } 196 }
180 197
181 @Override 198 @Override
182 public void deleteTask(Long id) { 199 public Integer deleteTask(Long id) {
183 TaskDTO taskDTO = this.findById(id); 200 TaskDTO taskDTO = this.findById(id);
184 if (Objects.nonNull(taskDTO.getId())) { 201 if (Objects.nonNull(taskDTO.getId())) {
185 Task task = new Task(); 202 Task task = new Task();
186 task.setId(taskDTO.getId()); 203 task.setId(taskDTO.getId());
187 task.setCode(taskDTO.getCode()); 204 task.setCode(taskDTO.getCode());
188 this.deleteTask(task); 205 return this.deleteTask(task);
189 } 206 }
207
208 return 0;
190 } 209 }
191 210
192 @Override 211 @Override
...@@ -211,50 +230,97 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -211,50 +230,97 @@ public class TaskOperationServiceImpl implements TaskOperationService {
211 public ResultInfo dealTask(String content) { 230 public ResultInfo dealTask(String content) {
212 231
213 DataSyncMsg dataSyncMsg = JSONUtil.parseMsg2Object(content, DataSyncMsg.class); 232 DataSyncMsg dataSyncMsg = JSONUtil.parseMsg2Object(content, DataSyncMsg.class);
214 Integer event = dataSyncMsg.getEvent(); 233 log.info("事件dataSyncMsg ==>> {}", dataSyncMsg);
215 String msgData1 = dataSyncMsg.getMsgData(); 234 DataSyncMsg.MsgData msgData = JSON.parseObject(dataSyncMsg.getMsgData(), DataSyncMsg.MsgData.class);
216 DataSyncMsg.MsgData msgData = JSON.parseObject(msgData1, DataSyncMsg.MsgData.class); 235 log.info("事件消息体解析后msgData ==>> {}", msgData);
236 if (Objects.isNull(msgData)) {
237 log.error("参数错误,事件消息体为空");
238 return ResultInfo.failure("参数错误,事件消息体为空");
239 }
217 240
218 String memberCode = msgData.getMemberCode(); 241 // 小屏侧传递的参数是memberId
219 Long memberId = msgData.getMemberId(); 242 Long memberId = msgData.getMemberId();
243 // 大屏侧传递的参数是platformAccount
244 String platformAccount = msgData.getPlatformAccount();
245
246 // 参数校验
247 if (Objects.isNull(memberId) && StringUtils.isBlank(platformAccount)) {
248 log.error("参数错误,memberId 和 platformAccount 都为null");
249 return ResultInfo.failure("参数错误");
250 }
220 251
252 // 获取会员信息,小屏会员信息通过memberId进行检索,大屏会员信息通过platformAccount进行检索
221 long l = System.currentTimeMillis(); 253 long l = System.currentTimeMillis();
222 if (StringUtils.isNotBlank(memberCode)) { 254 MemberDTO memberDTO = null;
255 if (Objects.nonNull(memberId)) {
256
257 memberDTO = this.memberService.findById(memberId);
258 log.info("获取小屏会员信息 ==>> memberId ==>> {} || 会员信息 ==>> {}",memberId, memberDTO);
259
260 } else if (StringUtils.isNotBlank(platformAccount)) {
261
262 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
263 if (Objects.nonNull(userTvDTO.getId())) {
264 // 开启积分自动同步至小屏主会员
265 if (validPriorityMember == 0) {
266
267 String priorityMemberCode = userTvDTO.getPriorityMemberCode();
223 268
224 MemberDTO memberDTO = this.memberService.findByCode(memberCode); 269 if (StringUtils.isNotBlank(priorityMemberCode)) {
225 log.info("获取会员信息 ==>> {}", memberDTO); 270 memberDTO = this.memberService.findByCode(priorityMemberCode);
271 log.info("查询绑定的小屏的主会员信息, member ==>> {}", memberDTO);
272 } else if (Objects.nonNull(userTvDTO.getMemberId())) {
273 memberDTO = this.memberService.findById(userTvDTO.getMemberId());
274 log.info("查询大屏自身的会员信息, member ==>> {}", memberDTO);
275 }
276
277 } else {
278
279 memberDTO = this.memberService.findById(userTvDTO.getMemberId());
280
281 }
226 282
227 // 检查当前会员的黑名单状态 283 } else {
228 boolean b = this.validatedMemberBlackStatus(memberDTO); 284 log.error("大屏账号不存在,请检查数据, platformAccount ==>> {}", platformAccount);
229 log.info("会员信息 ==>> {} || 会员id ==>> {} || 黑名单状态 ==>> {}", memberDTO, memberDTO.getId(), memberDTO.getBlackStatus()); 285 return ResultInfo.failure("大屏账号不存在,请检查数据");
230 if (!b) {
231 return ResultInfo.forbidden("会员已被加入黑名单");
232 } 286 }
233 287
234 memberId = memberDTO.getId(); 288 log.info("获取大屏会员信息 ==>> platformAccount ==>> {} || 会员信息 ==>> {}", platformAccount, memberDTO);
289
235 } 290 }
236 291
237 // 1.通过任务标识获取任务模板,通过模板参数获取具体的模板 292 if (Objects.isNull(memberDTO.getId())) {
238 TaskTemplate taskTemplate = this.getTaskTemplate(event, dataSyncMsg); 293 log.error("会员信息不存在 ==>> {}" + memberDTO);
239 log.info("获取任务模板 taskTemplate ==>> {} ", taskTemplate); 294 return ResultInfo.failure("会员信息不存在");
295 }
240 296
241 // 2.通过任务模板获取对应的任务列表 297 // 检查黑名单状态 0:正常 1:黑名单
242 List<Task> taskList = this.loadListTaskByTaskTemplate(taskTemplate, dataSyncMsg); 298 Long blackStatus = memberDTO.getBlackStatus();
243 log.info("获取任务 taskList ==>> [{}] ", taskList); 299 if (Objects.nonNull(blackStatus) && blackStatus.equals(LocalConstants.BLACK_STATUS)) {
300 log.error("会员已被加入黑名单 ==>> {}" + memberDTO);
301 return ResultInfo.forbidden("会员已被加入黑名单");
302 }
303
304 // 检索满足条件的任务 1.先检查redis中是否存在符合条件的任务 2.从redis中获取当前会员未完成的任务
305 List<Task> tasks = this.findValidTasksAndRefreshTaskProcess(memberDTO, dataSyncMsg.getEvent(), msgData);
306 log.info("查询出来的任务列表 tasks ==>> [{}] ", tasks);
307 if (CollectionUtils.isEmpty(tasks)) {
308 // 类型 1:登录;2:观影;3:参加活动;4:订购;5:优享会员;6:签到;7:完成设置;8:播放记录;
309 // 10:跨屏绑定;11:积分转移;30:积分兑换商品;98:系统操作;99:其他
310 log.warn("无可执行的任务, 请检查配置,任务模板类型 eventType ==>> {} || 消息体 ==>> msgData {}", dataSyncMsg.getEvent(), msgData);
311 return ResultInfo.failure("无可执行的任务");
312 }
244 313
245 // 4.判断当前用户是否满足任务完成条件 314 if (!CollectionUtils.isEmpty(tasks)) {
246 boolean checkResult = this.checkTaskCompletion(memberId, taskList, event, msgData);
247 log.info("检查当前会员的任务完成情况 ==>> {} , true:未完成", checkResult);
248 if (checkResult) {
249 // 5.权益区分(积分、权益、成长值) 315 // 5.权益区分(积分、权益、成长值)
250 Map<RightType,Object> tempRightsMap = this.distinguishRight(memberId, taskList, msgData, dataSyncMsg); 316 Map<RightType,Object> tempRightsMap = this.distinguishRight(memberDTO, tasks, msgData, dataSyncMsg);
251 log.info("获取当前任务对应的权益 tempRightsMap ==>> {} ", tempRightsMap); 317 log.info("获取当前任务对应的权益 tempRightsMap ==>> {} ", tempRightsMap);
252 318
253 // 6.风控检查 319 // 6.风控检查 TODO
254 boolean result = this.checkRiskManagement(memberId, tempRightsMap); 320 // boolean result = this.checkRiskManagement(memberId, tempRightsMap);
255 log.info("针对各项权益检查当前会员是否达到风控值 ==>> {},true:已达到风控指标 ", result); 321 // log.info("针对各项权益检查当前会员是否达到风控值 ==>> {},true:已达到风控指标 ", result);
256 322
257 if (result) throw new BadRequestException("发放失败,已达风控上限"); 323 // if (result) throw new BadRequestException("发放失败,已达风控上限");
258 324
259 long l1 = System.currentTimeMillis(); 325 long l1 = System.currentTimeMillis();
260 log.info("各项检查总耗时 ==>> {}", (l1-l)); 326 log.info("各项检查总耗时 ==>> {}", (l1-l));
...@@ -265,12 +331,204 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -265,12 +331,204 @@ public class TaskOperationServiceImpl implements TaskOperationService {
265 this.grantRight(tempRightsMap); 331 this.grantRight(tempRightsMap);
266 long l3 = System.currentTimeMillis(); 332 long l3 = System.currentTimeMillis();
267 log.info("下发结束,总耗时 ==>> {}", (l3-l2)); 333 log.info("下发结束,总耗时 ==>> {}", (l3-l2));
268
269 } 334 }
270 return ResultInfo.success(); 335 return ResultInfo.success();
271 336
272 } 337 }
273 338
339 private void saveOrUpdateTaskProcess(Long memberId, Task task, Integer currentActionAmount) {
340 TrTaskProgress trTaskProgress = new TrTaskProgress();
341 trTaskProgress.setCurrentActionAmount(currentActionAmount);
342 trTaskProgress.setCompletionTime(TimestampUtil.now());
343 trTaskProgress.setStatus(1);
344 trTaskProgress.setTaskId(task.getId());
345 trTaskProgress.setMemberId(memberId);
346 trTaskProgress.setTargetActionAmount(task.getActionAmount());
347
348 // 更新任务完成情况
349 log.info("更新任务完成情况 ==>> {}", trTaskProgress);
350 this.doRefreshTrTaskProcess(trTaskProgress);
351 }
352
353 /**
354 * 获取满足条件的任务列表
355 * @param memberDTO 会员
356 * @param msgData 事件消息体
357 * @param event 任务模板类型
358 * @return
359 */
360 private List<Task> findValidTasksAndRefreshTaskProcess(MemberDTO memberDTO, Integer event, DataSyncMsg.MsgData msgData) {
361
362 // 任务是否存在
363 List<Task> tasks = this.taskService.findByEvent(event);
364 if (Objects.isNull(tasks) || CollectionUtils.isEmpty(tasks)) {
365 return Collections.singletonList(null);
366 }
367
368 // 用户行为量
369 String param = msgData.getParam();
370 JSONObject paramJsonObject = null;
371 if (StringUtils.isNotBlank(param)) {
372 paramJsonObject = JSONObject.parseObject(param, JSONObject.class);
373 }
374
375 List<Task> tasksResult = new ArrayList<>();
376 // 检查当前会员针对这些任务的完成情况
377 for (Task task : tasks) {
378
379 /*// 校验用户分组
380 if (StringUtils.isNotBlank(task.getGroups()) && !task.getGroups().contains(memberDTO.getGroups())) {
381 log.warn("此用户分组不满足任务要求,任务分组 ==>> {} || 会员分组 ==>> {}",task.getGroups(), memberDTO.getGroups());
382 continue;
383 }
384 // 校验会员等级
385 if (Objects.nonNull(task.getMemberLevel()) && task.getMemberLevel() < memberDTO.getLevel()) {
386 log.warn("此用户等级不满足任务要求,任务要求会员等级 ==>> {} || 会员等级 ==>> {}",task.getMemberLevel(), memberDTO.getLevel());
387 continue;
388 }
389 // 校验会员vip
390 if (Objects.nonNull(task.getMemberVip()) && task.getMemberVip() < memberDTO.getVip()) {
391 log.warn("此用户vip不满足任务要求,任务要求会员vip ==>> {} || 会员vip ==>> {}",task.getMemberVip(), memberDTO.getVip());
392 continue;
393 }*/
394
395 TrTaskProgressDTO trTaskProgressDTO =
396 this.trTaskProgressService.findByMemberIdAndTaskIdAndCompletionTime(memberDTO.getId(), task.getId(), LocalDateTimeUtil.todayStart());
397 log.info("当前任务完成的情况,trTaskProgressDTO ==>> {}", trTaskProgressDTO);
398
399 // 任务未完成
400 if (Objects.isNull(trTaskProgressDTO) || !trTaskProgressDTO.getStatus().equals(TASK_FINISH_STATUS)) {
401
402 // 任务最低行为量
403 int actionAmount = task.getActionAmount();
404 // 任务属性
405 String attr = task.getAttr();
406
407 switch (event) {
408 // 开机、登录
409 case TaskEventType.LOGIN:
410 if (Objects.nonNull(paramJsonObject)) {
411 // 登录天数
412 int continueLogin = paramJsonObject.getInteger("CONTINUE_LOGIN");
413 if (continueLogin >= actionAmount) {
414 tasksResult.add(task);
415
416 log.info("保存开机、登录任务进度");
417 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, continueLogin);
418 }
419 }
420 break;
421 // 观影
422 case TaskEventType.VIEW:
423 if (Objects.nonNull(paramJsonObject)) {
424 // 观影总时长
425 int playDuration_ = paramJsonObject.getInteger("PLAYDURATION");
426 if (playDuration_ >= actionAmount) {
427 tasksResult.add(task);
428
429 log.info("保存观影任务进度");
430 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, playDuration_);
431 }
432 }
433 break;
434 // 参加活动
435 case TaskEventType.ACTIVITY:
436 if (Objects.nonNull(paramJsonObject)) {
437 }
438 break;
439 // 订购
440 case TaskEventType.ORDER:
441 if (Objects.nonNull(paramJsonObject)) {
442 }
443 break;
444 // 优享会员
445 case TaskEventType.MEMBER_PRIORITY:
446 if (Objects.nonNull(paramJsonObject)) {
447 }
448 break;
449 // 签到
450 case TaskEventType.SIGN:
451 if (Objects.nonNull(paramJsonObject)) {
452 // 签到天数
453 int signDays = paramJsonObject.getInteger("SIGN");
454 if (signDays >= actionAmount) {
455 tasksResult.add(task);
456
457 log.info("保存签到天数任务进度");
458 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, signDays);
459 }
460 }
461 break;
462 // 完成设置
463 case TaskEventType.COMPLETE_INFO:
464 if (Objects.nonNull(paramJsonObject)) {
465 // 完成设置次数
466 int completeCount = paramJsonObject.getInteger("COMPLETECOUNT");
467 if (completeCount >= actionAmount) {
468 tasksResult.add(task);
469
470 log.info("保存完成用户信息设置任务进度");
471 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, completeCount);
472 }
473 }
474 break;
475 // 播放时长
476 case TaskEventType.PLAY:
477 // 用户播放总时长
478 if (Objects.nonNull(paramJsonObject)) {
479 int playDuration = paramJsonObject.getInteger("PLAYDURATION");
480 if (playDuration >= actionAmount) {
481 tasksResult.add(task);
482
483 log.info("保存用户播放总时长任务进度");
484 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, playDuration);
485 }
486 }
487 break;
488 // 跨屏绑定
489 case TaskEventType.BINDING:
490 // 跨屏绑定次数
491 if (Objects.nonNull(paramJsonObject)) {
492 int bindCount = paramJsonObject.getInteger("BINDCOUNT");
493 if (bindCount >= actionAmount) {
494 tasksResult.add(task);
495
496 log.info("保存跨屏绑定任务进度");
497 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, bindCount);
498 }
499 }
500 break;
501 // 积分转移
502 case TaskEventType.POINTS_TRANS:
503
504 break;
505 // 积分兑换商品
506 case TaskEventType.POINTS_EXCHANGE_GOODS:
507 // 完成设置次数
508 if (Objects.nonNull(paramJsonObject)) {
509 int exchangeCount = paramJsonObject.getInteger("EXCHANGCOUNT");
510 if (exchangeCount >= actionAmount) {
511 tasksResult.add(task);
512
513 log.info("保存积分兑换商品任务进度");
514 this.saveOrUpdateTaskProcess(memberDTO.getId(), task, exchangeCount);
515 }
516 }
517
518 break;
519 // 系统操作
520 case TaskEventType.SYSTEM_OPERATE:
521 break;
522 default:
523 log.warn("没有找到对应的任务,findValidTasks");
524 break;
525 }
526 }
527 }
528
529
530 return tasksResult;
531 }
274 532
275 533
276 /** 534 /**
...@@ -285,30 +543,17 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -285,30 +543,17 @@ public class TaskOperationServiceImpl implements TaskOperationService {
285 } 543 }
286 544
287 /** 545 /**
288 * 验证会员信息
289 * @param memberDTO
290 * @return
291 */
292 private boolean validatedMemberBlackStatus(MemberDTO memberDTO) {
293 Long blackStatus = memberDTO.getBlackStatus();
294 if (Objects.nonNull(blackStatus) && blackStatus == 1) {
295 log.error("validatedMember -->> 会员已被加入黑名单 【blackStatus】 -->> " + blackStatus);
296 return false;
297 }
298 return true;
299 }
300
301 /**
302 * 任务完成情况 546 * 任务完成情况
303 * @param resources 任务完成情况 547 * @param resources 任务完成情况
304 */ 548 */
305 private void doRefreshTrTaskProcess(TrTaskProgress resources) { 549 private void doRefreshTrTaskProcess(TrTaskProgress resources) {
550 String date = LocalDateTimeUtil.todayStart();
306 Long id = resources.getId(); 551 Long id = resources.getId();
307 if (Objects.nonNull(id)) { 552 if (Objects.nonNull(id)) {
308 resources.setUpdateTime(TimestampUtil.now()); 553 resources.setUpdateTime(TimestampUtil.now());
309 this.trTaskProgressService.update(resources); 554 this.trTaskProgressService.update(resources, date);
310 } else { 555 } else {
311 this.trTaskProgressService.create(resources); 556 this.trTaskProgressService.create(resources, date);
312 } 557 }
313 } 558 }
314 559
...@@ -326,25 +571,27 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -326,25 +571,27 @@ public class TaskOperationServiceImpl implements TaskOperationService {
326 * @param taskList 任务列表 571 * @param taskList 任务列表
327 * @return Map<RightType,Object> 权益分类 572 * @return Map<RightType,Object> 权益分类
328 */ 573 */
329 private Map<RightType,Object> distinguishRight(Long memberId, List<Task> taskList, DataSyncMsg.MsgData msgData, DataSyncMsg dataSyncMsg) { 574 private Map<RightType,Object> distinguishRight(MemberDTO memberDTO, List<Task> taskList, DataSyncMsg.MsgData msgData, DataSyncMsg dataSyncMsg) {
330 575
331 Map<RightType,Object> map = new HashMap<>(); 576 Map<RightType,Object> map = new HashMap<>();
332 577
333 // 区分权益类型(成长值(reward_exp)、积分(reward_points)、实体券),并发放权益 578 // 区分权益类型(成长值(reward_exp)、积分(reward_points)、实体券),并发放权益
579 List<TempPoints> tempPoints = new ArrayList<>();
580 List<TempExp> tempExps = new ArrayList<>();
334 for (Task task : taskList) { 581 for (Task task : taskList) {
335 582
336 // 积分 583 // 积分
337 List<TempPoints> tempPointsList = this.getTempPoints(memberId, msgData, task, dataSyncMsg); 584 this.getTempPoints(memberDTO, msgData, task, dataSyncMsg, tempPoints);
338 if (!CollectionUtils.isEmpty(tempPointsList)) 585 if (!CollectionUtils.isEmpty(tempPoints))
339 map.put(RightType.POINTS,tempPointsList); 586 map.put(RightType.POINTS, tempPoints);
340 587
341 // 成长值 588 // 成长值
342 List<TempExp> tempExpList = this.getTempExp(memberId,msgData,task, dataSyncMsg); 589 this.getTempExp(memberDTO,msgData,task, dataSyncMsg, tempExps);
343 if (!CollectionUtils.isEmpty(tempExpList)) 590 if (!CollectionUtils.isEmpty(tempExps))
344 map.put(RightType.EXP,tempExpList); 591 map.put(RightType.EXP, tempExps);
345 592
346 // 权益 593 // 权益
347 map = this.getTempRight(memberId, task, map); 594 this.getTempRight(memberDTO, task, map);
348 595
349 } 596 }
350 597
...@@ -368,8 +615,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -368,8 +615,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
368 Long expireTime1 = rightsDTO.getExpireTime(); 615 Long expireTime1 = rightsDTO.getExpireTime();
369 if (Objects.nonNull(expireTime1)) { 616 if (Objects.nonNull(expireTime1)) {
370 Timestamp expireTime = TimestampUtil.long2Timestamp(expireTime1); 617 Timestamp expireTime = TimestampUtil.long2Timestamp(expireTime1);
371 if (Objects.nonNull(expireTime)) 618 tempRights.setExpireTime(expireTime);
372 tempRights.setExpireTime(expireTime);
373 } 619 }
374 return tempRights; 620 return tempRights;
375 } 621 }
...@@ -395,17 +641,17 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -395,17 +641,17 @@ public class TaskOperationServiceImpl implements TaskOperationService {
395 641
396 /** 642 /**
397 * 权益1 643 * 权益1
398 * @param task 644 * @param task 任务
645 * @param memberDTO 会员
646 * @param map 权益分类
399 * @return 647 * @return
400 */ 648 */
401 private Map<RightType,Object> getTempRight(Long memberId , Task task , Map<RightType,Object> map) { 649 private Map<RightType,Object> getTempRight(MemberDTO memberDTO, Task task, Map<RightType,Object> map) {
402 650
403 // 优惠券 651 // 优惠券
404 List<TempCoupon> tempCouponList = new ArrayList<>(); 652 List<TempCoupon> tempCouponList = new ArrayList<>();
405 // 权益列表,用以保存权益记录 653 // 权益列表,用以保存权益记录
406 List<TempRights> rightsList = new ArrayList<>(); 654 List<TempRights> rightsList = new ArrayList<>();
407 // 会员信息
408 MemberDTO memberDTO = this.findMemberById(memberId);
409 655
410 // 权益1 656 // 权益1
411 Long rights1Id = task.getRightsId(); 657 Long rights1Id = task.getRightsId();
...@@ -437,27 +683,9 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -437,27 +683,9 @@ public class TaskOperationServiceImpl implements TaskOperationService {
437 // 权益分类 683 // 权益分类
438 this.getTempRightType(memberDTO,rights3Id,rights3Amount,rightsSendStrategy,tempCouponList,rightsList,map); 684 this.getTempRightType(memberDTO,rights3Id,rights3Amount,rightsSendStrategy,tempCouponList,rightsList,map);
439 } 685 }
440 // 优惠券
441 /*if (!CollectionUtils.isEmpty(tempCouponList)) {
442 map.put(RightType.COUPON,tempCouponList);
443 }*/
444 // 权益
445 /*if (!CollectionUtils.isEmpty(rightsList)) {
446 map.put(RightType.RIGHTS,rightsList);
447 }*/
448 return map; 686 return map;
449 } 687 }
450 688
451
452 /**
453 * 会员对象
454 * @param memberId
455 * @return
456 */
457 private MemberDTO findMemberById(Long memberId) {
458 return this.memberService.findById(memberId);
459 }
460
461 /** 689 /**
462 * 权益分类 690 * 权益分类
463 * @param memberDTO 691 * @param memberDTO
...@@ -486,10 +714,10 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -486,10 +714,10 @@ public class TaskOperationServiceImpl implements TaskOperationService {
486 } 714 }
487 715
488 // 权益类型 716 // 权益类型
489 String type = rightsDTO.getEntityType(); 717 Integer type = rightsDTO.getEntityType();
490 switch (type) { 718 switch (type) {
491 // 优惠券 719 // 优惠券
492 case "1": 720 case RightTypeConstants.DISCOUNT_COUPON:
493 Long entityId1 = rightsDTO.getEntityId(); 721 Long entityId1 = rightsDTO.getEntityId();
494 if (Objects.nonNull(entityId1)) { 722 if (Objects.nonNull(entityId1)) {
495 CouponDTO couponDTO = this.findCouponById(entityId1); 723 CouponDTO couponDTO = this.findCouponById(entityId1);
...@@ -505,7 +733,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -505,7 +733,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
505 } 733 }
506 break; 734 break;
507 // 观影券 735 // 观影券
508 case "2": 736 case RightTypeConstants.VIEW_COUPON:
509 Long entityId2 = rightsDTO.getEntityId(); 737 Long entityId2 = rightsDTO.getEntityId();
510 if (Objects.nonNull(entityId2)) { 738 if (Objects.nonNull(entityId2)) {
511 CouponDTO couponDTO = this.findCouponById(entityId2); 739 CouponDTO couponDTO = this.findCouponById(entityId2);
...@@ -521,19 +749,19 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -521,19 +749,19 @@ public class TaskOperationServiceImpl implements TaskOperationService {
521 } 749 }
522 break; 750 break;
523 // 活动参与机会 751 // 活动参与机会
524 case "3": 752 case RightTypeConstants.JOIN_ACTIVITY:
525 map.put(RightType.ACTIVITYCHANCE, tempRights); 753 map.put(RightType.ACTIVITYCHANCE, tempRights);
526 break; 754 break;
527 // 积分商品 755 // 积分商品
528 case "4": 756 case RightTypeConstants.POINTS_GOODS:
529 map.put(RightType.POINTGOODS, tempRights); 757 map.put(RightType.POINTGOODS, tempRights);
530 break; 758 break;
531 // IPTV产品包 759 // IPTV产品包
532 case "5": 760 case RightTypeConstants.IPTV_PRODUCT:
533 map.put(RightType.IPTVPRODUCT, tempRights); 761 map.put(RightType.IPTVPRODUCT, tempRights);
534 break; 762 break;
535 // IPTV观影权益 763 // IPTV观影权益
536 case "6": 764 case RightTypeConstants.IPTV_VIEW:
537 map.put(RightType.IPTVVIEW, tempRights); 765 map.put(RightType.IPTVVIEW, tempRights);
538 break; 766 break;
539 default: 767 default:
...@@ -567,15 +795,15 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -567,15 +795,15 @@ public class TaskOperationServiceImpl implements TaskOperationService {
567 * @param task 795 * @param task
568 * @return 796 * @return
569 */ 797 */
570 private List<TempExp> getTempExp(Long memberId, DataSyncMsg.MsgData msgData, Task task, DataSyncMsg dataSyncMsg) { 798 private void getTempExp(MemberDTO memberDTO, DataSyncMsg.MsgData msgData, Task task, DataSyncMsg dataSyncMsg, List<TempExp> tempExps) {
799
571 Long rewardExp = task.getRewardExp(); 800 Long rewardExp = task.getRewardExp();
572 if (Objects.nonNull(rewardExp) && rewardExp > 0L) { 801 if (Objects.nonNull(rewardExp) && rewardExp > 0L) {
573 802
574 TempExp tempExp = new TempExp(); 803 TempExp tempExp = new TempExp();
575 tempExp.setMemberId(memberId); 804 tempExp.setMemberId(memberDTO.getId());
576 tempExp.setAppCode(msgData.getAppCode()); 805 tempExp.setAppCode(msgData.getAppCode());
577 tempExp.setMemberId(memberId); 806 tempExp.setMemberCode(memberDTO.getCode());
578 tempExp.setMemberCode(msgData.getMemberCode());
579 tempExp.setItemId(msgData.getItemId()); 807 tempExp.setItemId(msgData.getItemId());
580 tempExp.setAccountId(msgData.getAccountId()); 808 tempExp.setAccountId(msgData.getAccountId());
581 tempExp.setRewardExp(task.getRewardExp()); 809 tempExp.setRewardExp(task.getRewardExp());
...@@ -586,12 +814,8 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -586,12 +814,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
586 tempExp.setActivityId(msgData.getOrderId()); 814 tempExp.setActivityId(msgData.getOrderId());
587 Integer rightsSendStrategy = task.getRightsSendStrategy(); 815 Integer rightsSendStrategy = task.getRightsSendStrategy();
588 tempExp.setRightsSendStrategy(Objects.isNull(rightsSendStrategy) ? 0 : rightsSendStrategy); 816 tempExp.setRightsSendStrategy(Objects.isNull(rightsSendStrategy) ? 0 : rightsSendStrategy);
589 return Arrays.asList(tempExp); 817 tempExps.add(tempExp);
590
591 } 818 }
592
593 return null;
594
595 } 819 }
596 820
597 /** 821 /**
...@@ -599,8 +823,8 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -599,8 +823,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
599 * @param task 823 * @param task
600 * @return 824 * @return
601 */ 825 */
602 private List<TempPoints> getTempPoints(Long memberId, DataSyncMsg.MsgData msgData, Task task, DataSyncMsg dataSyncMsg) { 826 private void getTempPoints(MemberDTO memberDTO, DataSyncMsg.MsgData msgData, Task task,
603 827 DataSyncMsg dataSyncMsg, List<TempPoints> tempPoints) {
604 // 积分: 数值、过期时间、积分类型(定值、随机)、随机积分最大值 828 // 积分: 数值、过期时间、积分类型(定值、随机)、随机积分最大值
605 Long rewardPoints = task.getRewardPoints(); 829 Long rewardPoints = task.getRewardPoints();
606 // 过期时间 830 // 过期时间
...@@ -610,32 +834,32 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -610,32 +834,32 @@ public class TaskOperationServiceImpl implements TaskOperationService {
610 Integer pointsType = task.getPointsType(); 834 Integer pointsType = task.getPointsType();
611 // 随机积分的最大值 835 // 随机积分的最大值
612 Integer rewardMaxPoints = task.getRewardMaxPoints(); 836 Integer rewardMaxPoints = task.getRewardMaxPoints();
613 if (Objects.nonNull(rewardPoints)) { 837 if (Objects.nonNull(rewardPoints) && rewardPoints > 0) {
614 TempPoints tempPoints = new TempPoints(); 838 TempPoints tempPoint = new TempPoints();
615 // 如果积分是随机的,则取随机值 839 // 如果积分是随机的,则取随机值
616 if (pointsType == POINTS_TYPE_RANDOM) { 840 if (pointsType.equals(POINTS_TYPE_RANDOM)) {
617 rewardPoints = RandomUtil.getRandomPoints(POINTS_MIN,rewardMaxPoints); 841 rewardPoints = RandomUtil.getRandomPoints(POINTS_MIN, rewardMaxPoints);
618 } 842 }
619 tempPoints.setRewardPointsExpireTime(rewardPointsExpireTime); 843 tempPoint.setRewardPointsExpireTime(rewardPointsExpireTime);
620 tempPoints.setMemberId(memberId); 844 tempPoint.setMemberId(memberDTO.getId());
621 tempPoints.setMemberCode(msgData.getMemberCode()); 845 tempPoint.setMemberCode(memberDTO.getCode());
622 tempPoints.setAppCode(msgData.getAppCode()); 846 tempPoint.setAppCode(msgData.getAppCode());
623 tempPoints.setPoints(rewardPoints); 847 tempPoint.setPoints(rewardPoints);
624 tempPoints.setPointsType(pointsType); 848 tempPoint.setPointsType(pointsType);
625 tempPoints.setDeviceType(dataSyncMsg.getDeviceType()); 849 tempPoint.setDeviceType(dataSyncMsg.getDeviceType());
626 tempPoints.setExpireTime(expireTime); 850 tempPoint.setExpireTime(expireTime);
627 tempPoints.setOrderId(msgData.getOrderId()); 851 tempPoint.setOrderId(msgData.getOrderId());
628 tempPoints.setActivityId(msgData.getOrderId()); 852 tempPoint.setActivityId(msgData.getActivityId());
629 tempPoints.setMediaId(msgData.getMediaId()); 853 tempPoint.setMediaId(msgData.getMediaId());
630 tempPoints.setItemId(msgData.getItemId()); 854 tempPoint.setItemId(msgData.getItemId());
631 tempPoints.setAccountId(msgData.getAccountId()); 855 tempPoint.setAccountId(msgData.getAccountId());
632 tempPoints.setEvtType(dataSyncMsg.getEvent()); 856 tempPoint.setEvtType(dataSyncMsg.getEvent());
633 Integer rightsSendStrategy = task.getRightsSendStrategy(); 857 Integer rightsSendStrategy = task.getRightsSendStrategy();
634 tempPoints.setRightsSendStrategy(Objects.isNull(rightsSendStrategy) ? 0 : rightsSendStrategy); 858 tempPoint.setRightsSendStrategy(Objects.isNull(rightsSendStrategy) ? 0 : rightsSendStrategy);
635 return Arrays.asList(tempPoints); 859
860 tempPoints.add(tempPoint);
636 } 861 }
637 862
638 return null;
639 } 863 }
640 864
641 /** 865 /**
...@@ -675,6 +899,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -675,6 +899,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
675 899
676 // 验证会员分组 900 // 验证会员分组
677 boolean result1 = this.validatedMemberGroup(memberId,taskList); 901 boolean result1 = this.validatedMemberGroup(memberId,taskList);
902 log.info("验证会员分组结果,==>> {}, true:验证通过", result1);
678 if (!result1) 903 if (!result1)
679 return false; 904 return false;
680 905
...@@ -802,7 +1027,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -802,7 +1027,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
802 Long taskId = task.getId(); 1027 Long taskId = task.getId();
803 // 任务完成记录 1028 // 任务完成记录
804 List<TrTaskProgressDTO> trTaskProgressDTOS = 1029 List<TrTaskProgressDTO> trTaskProgressDTOS =
805 this.trTaskProgressService.findByMemberIdAndTaskIdAndCompletionTime(memberId,taskId,time1); 1030 null;//this.trTaskProgressService.findByMemberIdAndTaskIdAndCompletionTime(memberId,taskId,time1);
806 1031
807 Long id = null; 1032 Long id = null;
808 Integer currentActionAmount = null; 1033 Integer currentActionAmount = null;
...@@ -817,10 +1042,13 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -817,10 +1042,13 @@ public class TaskOperationServiceImpl implements TaskOperationService {
817 case 8: 1042 case 8:
818 if (!CollectionUtils.isEmpty(trTaskProgressDTOS)) { 1043 if (!CollectionUtils.isEmpty(trTaskProgressDTOS)) {
819 TrTaskProgressDTO trTaskProgressDTO_0 = trTaskProgressDTOS.get(0); 1044 TrTaskProgressDTO trTaskProgressDTO_0 = trTaskProgressDTOS.get(0);
1045 id = trTaskProgressDTO_0.getId();
820 Integer status_0 = trTaskProgressDTO_0.getStatus(); 1046 Integer status_0 = trTaskProgressDTO_0.getStatus();
821 Integer currentActionAmount_0 = trTaskProgressDTO_0.getCurrentActionAmount(); 1047 Integer currentActionAmount_0 = trTaskProgressDTO_0.getCurrentActionAmount();
822 Timestamp completionTime_0 = trTaskProgressDTO_0.getCompletionTime(); 1048 Timestamp completionTime_0 = trTaskProgressDTO_0.getCompletionTime();
1049 log.info("当前任务完成情况,trTaskProgressDTO_0 ==>> {}", trTaskProgressDTO_0);
823 if (status_0 == 1 && currentActionAmount_0 != null && Objects.nonNull(completionTime_0)) { 1050 if (status_0 == 1 && currentActionAmount_0 != null && Objects.nonNull(completionTime_0)) {
1051 log.info("任务已完成,返回false");
824 return false; 1052 return false;
825 } 1053 }
826 } 1054 }
...@@ -828,7 +1056,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -828,7 +1056,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
828 JSONObject jsonObject = JSON.parseObject(param); 1056 JSONObject jsonObject = JSON.parseObject(param);
829 Integer value = Integer.valueOf(jsonObject.get("playDuration").toString()); 1057 Integer value = Integer.valueOf(jsonObject.get("playDuration").toString());
830 if (value >= actionAmount) { 1058 if (value >= actionAmount) {
831 currentActionAmount = actionAmount; 1059 currentActionAmount = value;
832 completionTime = TimestampUtil.now(); 1060 completionTime = TimestampUtil.now();
833 status = TASK_FINISH_STATUS; 1061 status = TASK_FINISH_STATUS;
834 } 1062 }
...@@ -931,9 +1159,14 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -931,9 +1159,14 @@ public class TaskOperationServiceImpl implements TaskOperationService {
931 trTaskProgress.setTargetActionAmount(actionAmount); 1159 trTaskProgress.setTargetActionAmount(actionAmount);
932 1160
933 // 更新任务完成情况 1161 // 更新任务完成情况
1162 log.info("更新任务完成情况 ==>> {}", trTaskProgress);
934 this.doRefreshTrTaskProcess(trTaskProgress); 1163 this.doRefreshTrTaskProcess(trTaskProgress);
1164 if (status == TASK_FINISH_STATUS) {
1165 log.info("任务已完成, trTaskProgress ==>> {}", trTaskProgress);
1166 return true;
1167 }
935 1168
936 return true; 1169 return false;
937 } 1170 }
938 1171
939 return false; 1172 return false;
...@@ -945,6 +1178,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -945,6 +1178,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
945 * @param taskTemplate 任务模板 1178 * @param taskTemplate 任务模板
946 * @return List<task> 任务列表 1179 * @return List<task> 任务列表
947 */ 1180 */
1181 @Deprecated
948 private List<Task> loadListTaskByTaskTemplate(TaskTemplate taskTemplate, DataSyncMsg dataSyncMsg) { 1182 private List<Task> loadListTaskByTaskTemplate(TaskTemplate taskTemplate, DataSyncMsg dataSyncMsg) {
949 1183
950 if (Objects.nonNull(taskTemplate)) { 1184 if (Objects.nonNull(taskTemplate)) {
...@@ -972,7 +1206,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -972,7 +1206,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
972 private List<Task> pickUpTask(List<Task> taskList,DataSyncMsg dataSyncMsg,Integer type) { 1206 private List<Task> pickUpTask(List<Task> taskList,DataSyncMsg dataSyncMsg,Integer type) {
973 1207
974 List<Task> taskList1 = new ArrayList<>(); 1208 List<Task> taskList1 = new ArrayList<>();
975 String msgData1 = dataSyncMsg.getMsgData(); 1209 String msgData1 = null;//dataSyncMsg.getMsgData();
976 DataSyncMsg.MsgData msgData = JSON.parseObject(msgData1, DataSyncMsg.MsgData.class); 1210 DataSyncMsg.MsgData msgData = JSON.parseObject(msgData1, DataSyncMsg.MsgData.class);
977 1211
978 if (Objects.nonNull(msgData.getParam())) { 1212 if (Objects.nonNull(msgData.getParam())) {
...@@ -1104,7 +1338,7 @@ public class TaskOperationServiceImpl implements TaskOperationService { ...@@ -1104,7 +1338,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
1104 * @return TaskTemplate 任务模板 1338 * @return TaskTemplate 任务模板
1105 */ 1339 */
1106 private TaskTemplate getTaskTemplate(Integer event, DataSyncMsg dataSyncMsg) { 1340 private TaskTemplate getTaskTemplate(Integer event, DataSyncMsg dataSyncMsg) {
1107 String msgData1 = dataSyncMsg.getMsgData(); 1341 String msgData1 = null;//dataSyncMsg.getMsgData();
1108 DataSyncMsg.MsgData msg = JSON.parseObject(msgData1, DataSyncMsg.MsgData.class); 1342 DataSyncMsg.MsgData msg = JSON.parseObject(msgData1, DataSyncMsg.MsgData.class);
1109 1343
1110 if (Objects.nonNull(msg.getParam())) { 1344 if (Objects.nonNull(msg.getParam())) {
......
...@@ -82,6 +82,11 @@ public class TaskTemplateOperationServiceImpl implements TaskTemplateOperationSe ...@@ -82,6 +82,11 @@ public class TaskTemplateOperationServiceImpl implements TaskTemplateOperationSe
82 } 82 }
83 83
84 @Override 84 @Override
85 public Long countByCodeAndType(TaskTemplate taskTemplate) {
86 return this.taskTemplateService.countByCodeAndType(taskTemplate);
87 }
88
89 @Override
85 public TaskTemplateDTO findById(Long id) { 90 public TaskTemplateDTO findById(Long id) {
86 return this.taskTemplateService.findById(id); 91 return this.taskTemplateService.findById(id);
87 } 92 }
......
...@@ -114,6 +114,8 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -114,6 +114,8 @@ public class UserOperationServiceImpl implements UserOperationService {
114 @AsyncMqSend 114 @AsyncMqSend
115 public void asyncUserTv(UserTvDTO userTvDTO) {} 115 public void asyncUserTv(UserTvDTO userTvDTO) {}
116 @AsyncMqSend 116 @AsyncMqSend
117 public void asyncUserTvChangeMainAccount(UserTvDTO userTvDTO) {}
118 @AsyncMqSend
117 public void asyncAppletBind(MemberAndUserTvDTO memberAndUserTvDTO) {} 119 public void asyncAppletBind(MemberAndUserTvDTO memberAndUserTvDTO) {}
118 @AsyncMqSend 120 @AsyncMqSend
119 public void asyncUnbind(MemberAndUserTvDTO memberAndUserTvDTO) {} 121 public void asyncUnbind(MemberAndUserTvDTO memberAndUserTvDTO) {}
...@@ -427,66 +429,61 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -427,66 +429,61 @@ public class UserOperationServiceImpl implements UserOperationService {
427 String headImgUrl = resources.getHeadimgurl(); 429 String headImgUrl = resources.getHeadimgurl();
428 430
429 // 小屏账户 431 // 小屏账户
430 UserWeixinDTO _userWeixinDTO = this.findFirstByUnionIdAndAppIdAndOpenId(unionId,appId, openId); 432 UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByUnionIdAndAppIdAndOpenId(unionId, appId, openId);
431 433
432 MemberDTO memberDTO = null; 434 MemberDTO memberDTO = null;
433 if (Objects.isNull(_userWeixinDTO.getId()) || StringUtils.isBlank(_userWeixinDTO.getUnionid()) || 435 if (Objects.isNull(userWeixinDTO.getId()) || StringUtils.isBlank(userWeixinDTO.getUnionid()) ||
434 Objects.isNull(_userWeixinDTO.getMemberId())) { 436 Objects.isNull(userWeixinDTO.getMemberId())) {
435 437
436 UserWeixin userWeixin = new UserWeixin(); 438 UserWeixin userWeixin = new UserWeixin();
437 BeanUtils.copyProperties(resources, userWeixin); 439 BeanUtils.copyProperties(resources, userWeixin);
438 userWeixin.setStatus(SUBSCRIBE_STATUS); 440 userWeixin.setStatus(SUBSCRIBE_STATUS);
439 441
440 // 创建小屏账户同时创建会员 442 // 创建小屏账户同时创建会员
441 _userWeixinDTO = this.createWeixinUserAndMember(userWeixin, 1); 443 userWeixinDTO = this.createWeixinUserAndMember(userWeixin, 1);
442 444 Long memberId = userWeixinDTO.getMemberId();
443 Long memberId = _userWeixinDTO.getMemberId();
444 memberDTO = this.memberService.findById(memberId); 445 memberDTO = this.memberService.findById(memberId);
445 memberDTO.setVip(SUBSCRIBE_STATUS);
446 446
447 } else { 447 } else {
448 448
449 // 修改微信账户关注状态 449 // 修改微信账户关注状态
450 _userWeixinDTO = this.doUpdateUserWeiXinStatus(_userWeixinDTO, SUBSCRIBE_STATUS); 450 UserWeixin userWeixin = new UserWeixin();
451 451 userWeixin.setId(userWeixinDTO.getId());
452 userWeixin.setStatus(SUBSCRIBE_STATUS);
453 userWeixinDTO = this.userWeixinService.doUpdateWeixinStatus(userWeixin);
452 // 小屏会员 454 // 小屏会员
453 memberDTO = this.findMemberByAppIdAndOpenId(appId,openId); 455 memberDTO = this.memberService.findById(userWeixinDTO.getMemberId());
454 456
455 if (memberDTO != null) { 457 }
456
457 if (StringUtils.isNotBlank(headImgUrl) && StringUtils.isNotBlank(nickname)) {
458 memberDTO.setAvatarUrl(headImgUrl);
459 memberDTO.setNickname(nickname);
460 }
461
462 Integer vip = memberDTO.getVip();
463 // 未购买付费会员
464 if (Objects.isNull(vip) || vip < 1) {
465 memberDTO.setVip(1);
466 }
467 458
459 Member member = new Member();
460 member.setId(memberDTO.getId());
461 if (Objects.nonNull(memberDTO.getId())) {
462 Integer vip = memberDTO.getVip();
463 // 未购买付费会员
464 if (Objects.isNull(vip) || vip < 1) {
465 member.setVip(1);
466 member.setVipExpireTime(null);
467 } else {
468 member.setVip(vip);
468 } 469 }
469 } 470 }
470
471 // 修改会员信息 471 // 修改会员信息
472 MemberDTO _memberDTO1 = this.doUpdateMemberByMemberDTO(memberDTO); 472 memberDTO = this.memberService.doUpdateMemberVipAndVipExpireTime(member);
473 log.info("发送关注消息至大屏侧,发送的账号信息 ==>> {} || 会员信息 ==>> {}", _userWeixinDTO , _memberDTO1); 473 log.info("发送关注消息至大屏侧,发送的账号信息 ==>> {} || 会员信息 ==>> {}", userWeixinDTO , memberDTO);
474 // 同步至iptv 474 // 同步至iptv
475 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncSubscribe(new MemberAndWeixinUserDTO(_memberDTO1, _userWeixinDTO)); 475 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncSubscribe(new MemberAndWeixinUserDTO(memberDTO, userWeixinDTO));
476
477 476
478 // 大屏信息 477 // 大屏信息
479 JSONObject iptvUserInfo = resources.getIptvUserInfo(); 478 JSONObject iptvUserInfo = resources.getIptvUserInfo();
480 log.info("存储的大小屏账号信息 iptvUserInfo ==>> {}" , iptvUserInfo); 479 log.info("存储的大小屏账号信息 iptvUserInfo ==>> {}" , iptvUserInfo);
481
482 if (Objects.nonNull(iptvUserInfo)) { 480 if (Objects.nonNull(iptvUserInfo)) {
483 // 大屏账户 481 // 大屏账户
484 String platformAccount = iptvUserInfo.getString("platformAccount"); 482 String platformAccount = iptvUserInfo.getString("platformAccount");
485 log.info("存储的大屏账号信息 platformAccount ==>> {}" , platformAccount); 483 log.info("存储的大屏账号信息 platformAccount ==>> {}" , platformAccount);
486 log.info("绑定开始");
487 484
488 if (StringUtils.isBlank(platformAccount)) { 485 if (StringUtils.isBlank(platformAccount)) {
489 log.warn("绑定失败,platformAccount is null "); 486 log.error("关注后绑定失败,platformAccount is null ");
490 return false; 487 return false;
491 } 488 }
492 489
...@@ -563,20 +560,44 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -563,20 +560,44 @@ public class UserOperationServiceImpl implements UserOperationService {
563 String openId = resources.getOpenid(); 560 String openId = resources.getOpenid();
564 561
565 // 修改关注状态 0:未关注 562 // 修改关注状态 0:未关注
566 UserWeixinDTO userWeixinDTO = this.doUpdateUserWeiXinStatus(appId, openId, UNSUBSCRIBE_STATUS); 563 UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByAppIdAndOpenId(appId, openId);
564
565 if (Objects.isNull(userWeixinDTO.getId())) {
566 log.error("取关失败,通过appid ==>> {} 和 openId ==>> {} 无法查询到指定的微信账号", appId, openId);
567 return false;
568 }
569
570 if (Objects.isNull(userWeixinDTO.getMemberId())) {
571 log.error("取关失败,该微信账号无会员id ==>> {}", userWeixinDTO);
572 return false;
573 }
574
575 UserWeixin userWeixin = new UserWeixin();
576 userWeixin.setId(userWeixinDTO.getId());
577 userWeixin.setStatus(UNSUBSCRIBE_STATUS);
578 userWeixinDTO = this.userWeixinService.doUpdateWeixinStatus(userWeixin);
567 579
568 // 会员 580 // 会员
569 MemberDTO memberDTO = this.findMemberByUserWeixinDTO(userWeixinDTO); 581 MemberDTO memberDTO = this.memberService.findById(userWeixinDTO.getMemberId());
570 582
571 memberDTO.setUserIptvId(null);
572 // 修改会员vip,如果没有购买会员则取消团粉 583 // 修改会员vip,如果没有购买会员则取消团粉
573 MemberDTO _memberDTO = this.doUpdateMemberVip(memberDTO, 0); 584 Integer vip = memberDTO.getVip();
574 585 vip = (vip == null ? 0 : vip);
575 // 同步至iptv 586 // 未购买付费会员
576 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnsubscribe(new MemberAndWeixinUserDTO(_memberDTO, userWeixinDTO)); 587 if (vip <= 1) {
588 Member member = new Member();
589 member.setId(memberDTO.getId());
590 member.setCode(memberDTO.getCode());
591 member.setVipExpireTime(null);
592 member.setVip(0);
593 memberDTO = this.memberService.doUpdateMemberVipAndVipExpireTime(member);
594 }
577 595
578 // 关注记录 596 // 关注记录
579 this.saveWechatSubscribeRecord(_memberDTO, "",2); 597 this.saveWechatSubscribeRecord(memberDTO, "",2);
598
599 // 同步至iptv
600 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnsubscribe(new MemberAndWeixinUserDTO(memberDTO, userWeixinDTO));
580 601
581 return true; 602 return true;
582 } 603 }
...@@ -656,31 +677,35 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -656,31 +677,35 @@ public class UserOperationServiceImpl implements UserOperationService {
656 * @param resources 677 * @param resources
657 */ 678 */
658 @Override 679 @Override
659 public void changeMainAccount(UserTv resources) { 680 public boolean changeMainAccount(UserTv resources) {
660 681
661 // 会员编码 682 // 会员编码
662 String memberCode = resources.getMemberCode(); 683 String memberCode = resources.getMemberCode();
663 this.findMemberByCode(memberCode); 684 MemberDTO memberDTO = this.memberService.findByCode(memberCode);
685 if (Objects.isNull(memberDTO.getId())) {
686 log.error("会员信息不存在, memberCode ==>> {}", memberCode);
687 return false;
688 }
664 689
665 String platformAccount = resources.getPlatformAccount(); 690 String platformAccount = resources.getPlatformAccount();
666 691 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
667 UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount);
668
669 if (Objects.nonNull(userTvDTO)) { 692 if (Objects.nonNull(userTvDTO)) {
670 if (StringUtils.isNotBlank(userTvDTO.getPriorityMemberCode()) && userTvDTO.getPriorityMemberCode().equalsIgnoreCase(memberCode)) 693 if (StringUtils.isNotBlank(userTvDTO.getPriorityMemberCode()) && userTvDTO.getPriorityMemberCode().equalsIgnoreCase(memberCode))
671 throw new BadRequestException("会员已是主账户"); 694 throw new BadRequestException("会员已是主账户");
672
673 } else { 695 } else {
674
675 throw new EntityNotFoundException(UserTvDTO.class , "platformAccount" , GlobeExceptionMsg.IPTV_IS_NULL); 696 throw new EntityNotFoundException(UserTvDTO.class , "platformAccount" , GlobeExceptionMsg.IPTV_IS_NULL);
676
677 } 697 }
678 698
679 // 设置主会员 699 // 设置主会员
680 UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, memberCode, "manual"); 700 // UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, memberCode, "manual");
681 701 UserTv userTv = new UserTv();
702 userTv.setId(userTvDTO.getId());
703 userTv.setPriorityMemberCode(memberCode);
704 userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
682 // 同步至iptv 705 // 同步至iptv
683 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUserTv(_userTvDTO); 706 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUserTvChangeMainAccount(userTvDTO);
707
708 return true;
684 } 709 }
685 710
686 /** 711 /**
...@@ -688,41 +713,47 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -688,41 +713,47 @@ public class UserOperationServiceImpl implements UserOperationService {
688 * @param resources 713 * @param resources
689 */ 714 */
690 @Override 715 @Override
691 public void tvUnbind(TvUnBindBean resources) { 716 public boolean tvUnbind(TvUnBindBean resources) {
692 717
693 Boolean autoModel = resources.getAutoModel(); 718 // 希望绑定的会员code
694 String bindMemberCode = resources.getBindMemberCode(); 719 String bindMemberCode = resources.getBindMemberCode();
695 String platformAccount = resources.getPlatformAccount(); 720 String platformAccount = resources.getPlatformAccount();
696 String memberCode = resources.getMemberCode(); 721 String memberCode = resources.getMemberCode();
697 722
698 UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount); 723 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
699 log.info("大屏解绑,通过大屏账号查询大屏账号信息,结果 userTvDTO ==>> {}", userTvDTO); 724 log.info("大屏解绑,通过大屏账号查询大屏账号信息,结果 userTvDTO ==>> {}", userTvDTO);
700 if (Objects.isNull(userTvDTO.getId())) 725 if (Objects.isNull(userTvDTO.getId())) {
701 throw new EntityNotFoundException(UserTvDTO.class, "PlatformAccount", GlobeExceptionMsg.IPTV_IS_NULL); 726 log.error("大屏解绑失败,无对应的大屏账号信息, platformAccount ==>> {}", platformAccount);
727 return false;
728 }
702 729
703 MemberDTO memberDTO = this.memberService.findByCode(memberCode); 730 MemberDTO memberDTO = this.memberService.findByCode(memberCode);
704 log.info("大屏解绑,通过会员code查询会员信息,结果memberDTO==>>{}", memberDTO); 731 log.info("大屏解绑,通过会员code查询会员信息,结果memberDTO==>>{}", memberDTO);
705 732 if (Objects.isNull(memberDTO.getId())) {
733 log.error("大屏解绑失败,无对应的会员信息, memberCode ==>> {}", memberCode);
734 return false;
735 }
706 736
707 // 解绑(置空大屏信息) 737 // 解绑(置空大屏信息)
708 log.info("开始置空会员的user_iptv_id ==>> {}", memberDTO); 738 Member member = new Member();
709 MemberDTO _memberDTO = this.minaUnbind_(memberDTO); 739 member.setId(memberDTO.getId());
710 if (Objects.isNull(_memberDTO)) { 740 member.setCode(memberDTO.getCode());
711 _memberDTO = memberDTO; 741 member.setBindIptvTime(null);
712 } 742 member.setUserIptvId(null);
713 log.info("会员信息置空大屏的结果,_memberDTO ==>> {}", _memberDTO); 743 member.setBindIptvPlatformType(null);
744 log.info("置空会员绑定的大屏信息, member ==>> {}", member);
745 memberDTO = this.memberService.doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(member);
746 log.info("会员信息置空大屏的结果,memberDTO ==>> {}", memberDTO);
747 memberDTO.setPlatformAccount(platformAccount);
714 748
715 // 置空主账号 749 // 置空主账号
716 log.info("开始置空大屏账号的主会员priorityMemberCode"); 750 userTvDTO = this.resetMainAccount(memberDTO, userTvDTO, bindMemberCode);
717 UserTvDTO _userTvDTO = this.resetMainAccount(memberCode, userTvDTO.getId(), autoModel, bindMemberCode); 751 userTvDTO.setMemberCode(memberCode);
718 if (Objects.isNull(_userTvDTO)){
719 _userTvDTO = userTvDTO;
720 }
721 log.info("大屏账号置空主会员的结果,_userTvDTO ==>> {}", _userTvDTO);
722 752
723 // 同步至iptv 753 log.info("大屏账号置空主会员的结果,userTvDTO ==>> {}", userTvDTO);
724 log.info("开始同步解绑,参数 ==>> {} ",new MemberAndUserTvDTO(_memberDTO, _userTvDTO)); 754 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, userTvDTO));
725 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(_memberDTO, _userTvDTO)); 755
756 return true;
726 } 757 }
727 758
728 759
...@@ -919,57 +950,60 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -919,57 +950,60 @@ public class UserOperationServiceImpl implements UserOperationService {
919 @Override 950 @Override
920 public boolean minaBind(BindBean resources) { 951 public boolean minaBind(BindBean resources) {
921 952
922 Long _memberId = resources.getMemberId(); 953 Long memberId = resources.getMemberId();
923 954
924 String platformAccount = resources.getPlatformAccount(); 955 String platformAccount = resources.getPlatformAccount();
925 956
926 // 大屏账户 957 // 大屏账户
927 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount); 958 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
959 log.info("查询大屏账号信息, userTvDTO ==>> {}", userTvDTO);
928 // 账户是否存在 960 // 账户是否存在
929 if (Objects.isNull(userTvDTO.getId())) { 961 if (Objects.isNull(userTvDTO.getId())) {
930 log.error("appletBind ==> platformAccount ==> [{}]",platformAccount); 962 log.error("大屏账号信息不存在,platformAccount ==> {}",platformAccount);
931 throw new EntityNotFoundException(UserTvDTO.class,"id",GlobeExceptionMsg.IPTV_IS_NULL); 963 return false;
932 } 964 }
933 965
934 resources.setPlatformUserId(userTvDTO.getId());
935
936 UserWeixinDTO userWeixinDTO = null;
937 // 微信账户 966 // 微信账户
938 if (Objects.nonNull(_memberId)) { 967 if (Objects.nonNull(memberId)) {
939 userWeixinDTO = this.userWeixinService.findFirstByMemberId(_memberId); 968 UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByMemberId(memberId);
940 } 969 log.info("检查小屏账号是否存在, userWeixinDTO ==>> {}", userWeixinDTO);
941 // 账户是否存在 970 // 账户是否存在
942 if (Objects.isNull(userWeixinDTO.getId())) { 971 if (Objects.isNull(userWeixinDTO.getId())) {
943 log.error("appletBind ==> weixinId ==> [{}]",userWeixinDTO.getId()); 972 log.error("通过会员id无法找到对应的微信账号,memberId ==> {}", memberId);
944 throw new EntityNotFoundException(UserWeixinDTO.class, "id", userWeixinDTO.getId().toString()); 973 return false;
974 }
945 } 975 }
946 976
947 // 会员 977 MemberDTO memberDTO = this.memberService.findById(memberId);
948 Long memberId = userWeixinDTO.getMemberId(); 978 log.info("检查会员是否存在, memberDTO ==>> {}", memberDTO);
949 if (Objects.isNull(memberId)) { 979 if (Objects.nonNull(memberDTO.getId())) {
950 log.error("appletBind ==> memberId ==> [{}]",memberId); 980 Long userIptvId = memberDTO.getUserIptvId();
951 throw new EntityNotFoundException(UserWeixinDTO.class, "memberId", memberId.toString()); 981 if (Objects.nonNull(userIptvId)) {
982 log.error("该会员已绑定,大屏id ==> {}", userIptvId);
983 throw new BadRequestException(GlobeExceptionMsg.ALREADY_BIND);
984 }
985 } else {
986 log.error("会员信息不存在,请检查数据, memberId ==>> {}", memberId);
987 return false;
952 } 988 }
953 989
954 MemberDTO memberDTO = this.findMemberById(memberId);
955
956 Long userIptvId = memberDTO.getUserIptvId();
957 if (Objects.nonNull(userIptvId))
958 throw new BadRequestException(GlobeExceptionMsg.ALREADY_BIND);
959
960 // 主账户会员
961 String code = memberDTO.getCode();
962
963 // 更新大屏信息,同步大屏信息时使用
964 userTvDTO.setMemberCode(code);
965 // 主账户 990 // 主账户
966 String priorityMemberCode = userTvDTO.getPriorityMemberCode(); 991 String priorityMemberCode = userTvDTO.getPriorityMemberCode();
967 992
968 if (StringUtils.isBlank(priorityMemberCode)) { 993 if (StringUtils.isBlank(priorityMemberCode)) {
969 // 设置主账号 994 priorityMemberCode = memberDTO.getCode();
970 userTvDTO.setPriorityMemberCode(code); 995 log.info("大屏账号为绑定主账号,开始设置主会员 priorityMemberCode ==>> {}", priorityMemberCode);
996 UserTv userTv = new UserTv();
997 userTv.setId(userTvDTO.getId());
998 userTv.setPriorityMemberCode(priorityMemberCode);
999 // 更新大屏账户
1000 userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
1001 userTvDTO.setMemberCode(memberDTO.getCode());
971 } 1002 }
972 1003
1004 Member member = new Member();
1005 member.setId(memberDTO.getId());
1006 member.setCode(memberDTO.getCode());
973 String platform = userTvDTO.getPlatform(); 1007 String platform = userTvDTO.getPlatform();
974 // 绑定IPTV平台 0:未知;1:电信;2:移动;3:联通 1008 // 绑定IPTV平台 0:未知;1:电信;2:移动;3:联通
975 Integer bindIptvPlatformType = 0; 1009 Integer bindIptvPlatformType = 0;
...@@ -985,54 +1019,23 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -985,54 +1019,23 @@ public class UserOperationServiceImpl implements UserOperationService {
985 if (UserConstant.platform_dx.contains(platform)) { 1019 if (UserConstant.platform_dx.contains(platform)) {
986 bindIptvPlatformType = PLATFORM_LIST[1]; 1020 bindIptvPlatformType = PLATFORM_LIST[1];
987 } 1021 }
988 memberDTO.setUserIptvId(userTvDTO.getId()); 1022 member.setUserIptvId(userTvDTO.getId());
989 memberDTO.setBindIptvTime(TimestampUtil.now()); 1023 member.setBindIptvTime(TimestampUtil.now());
990 memberDTO.setBindIptvPlatformType(bindIptvPlatformType); 1024 member.setBindIptvPlatformType(bindIptvPlatformType);
991 memberDTO.setPlatformAccount(platformAccount); 1025 log.info("修改小屏会员对应的绑定关系,member ==>> {}", member);
992
993 // 更新大屏账户
994 UserTvDTO _userTvDTO = this.doUpdateUserTv(userTvDTO);
995 // 修改会员信息 1026 // 修改会员信息
996 MemberDTO _memberDTO = this.doUpdateMemberByMemberDTO(memberDTO); 1027 memberDTO = this.memberService.doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(member);
997 1028
1029 memberDTO.setPlatformAccount(platformAccount);
998 // 同步至iptv 1030 // 同步至iptv
999 ((UserOperationServiceImpl)AopContext.currentProxy()) 1031 ((UserOperationServiceImpl)AopContext.currentProxy())
1000 .asyncAppletBind(new MemberAndUserTvDTO(_memberDTO, _userTvDTO)); 1032 .asyncAppletBind(new MemberAndUserTvDTO(memberDTO, userTvDTO));
1001 1033
1002 return true; 1034 return true;
1003 } 1035 }
1004 1036
1005 /** 1037 /**
1006 * 1038 *
1007 * @param memberCode
1008 * @param platformAccount
1009 */
1010 @Override
1011 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
1012 public void bind(String memberCode, String platformAccount) {
1013 MemberDTO memberDTO = this.memberService.findByCode(memberCode);
1014 this.bind(memberDTO,platformAccount);
1015 }
1016
1017 /**
1018 *
1019 * @param memberDTO
1020 * @param userTvDTO
1021 */
1022 @Override
1023 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
1024 public void bind(MemberDTO memberDTO, UserTvDTO userTvDTO) {
1025 String platformAccount = userTvDTO.getPlatformAccount();
1026
1027 if (StringUtils.isBlank(platformAccount)) {
1028 return;
1029 }
1030 // 绑定
1031 this.bind(memberDTO,platformAccount);
1032 }
1033
1034 /**
1035 *
1036 * @param memberDTO 1039 * @param memberDTO
1037 * @param platformAccount 1040 * @param platformAccount
1038 * @return 1041 * @return
...@@ -1119,8 +1122,11 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1119,8 +1122,11 @@ public class UserOperationServiceImpl implements UserOperationService {
1119 memberDTO.setVip(vip1); 1122 memberDTO.setVip(vip1);
1120 1123
1121 Member member = new Member(); 1124 Member member = new Member();
1122 BeanUtils.copyProperties(memberDTO, member); 1125 member.setId(memberDTO.getId());
1123 this.memberService.update(member); 1126 member.setCode(memberDTO.getCode());
1127 member.setVipExpireTime(null);
1128 // this.memberService.update(member);
1129 this.memberService.doUpdateMemberVipAndVipExpireTime(member);
1124 1130
1125 return memberDTO; 1131 return memberDTO;
1126 } 1132 }
...@@ -1153,13 +1159,11 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1153,13 +1159,11 @@ public class UserOperationServiceImpl implements UserOperationService {
1153 1159
1154 if (Objects.nonNull(userWeixinDTO.getId())) { 1160 if (Objects.nonNull(userWeixinDTO.getId())) {
1155 1161
1156 userWeixinDTO.setStatus(status);
1157
1158 UserWeixin userWeixin = new UserWeixin(); 1162 UserWeixin userWeixin = new UserWeixin();
1159 BeanUtils.copyProperties(userWeixinDTO,userWeixin); 1163 userWeixin.setId(userWeixinDTO.getId());
1160 1164 userWeixin.setStatus(status);
1161 this.userWeixinService.update(userWeixin); 1165 userWeixinDTO = this.userWeixinService.doUpdateWeixinStatus(userWeixin);
1162 1166 return userWeixinDTO;
1163 } 1167 }
1164 1168
1165 return userWeixinDTO; 1169 return userWeixinDTO;
...@@ -1245,58 +1249,47 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1245,58 +1249,47 @@ public class UserOperationServiceImpl implements UserOperationService {
1245 1249
1246 /** 1250 /**
1247 * 重置主账号 1251 * 重置主账号
1248 * @param memberCode 会员code 1252 * @param memberDTO 会员code
1249 * @param id 大屏id 1253 * @param userTvDTO 大屏id
1250 * @param autoModel true:自动设置主账号 false: 手动设置 1254 * @param bindMemberCode true:自动设置主账号 false: 手动设置
1251 */ 1255 */
1252 private UserTvDTO resetMainAccount(String memberCode, Long id, Boolean autoModel, String bindMemberCode) { 1256 private UserTvDTO resetMainAccount(MemberDTO memberDTO, UserTvDTO userTvDTO, String bindMemberCode) {
1253 1257
1254 UserTvDTO userTvDTO = this.userTvService.findByPriorityMemberCode(memberCode);
1255 log.info("大屏解绑,重置大屏账号的主会员,查看当前会员是否是主账号 ==>>memberCode ==>> {} || 大屏账号 ==>> userTvDTO ==>> {}", userTvDTO); 1258 log.info("大屏解绑,重置大屏账号的主会员,查看当前会员是否是主账号 ==>>memberCode ==>> {} || 大屏账号 ==>> userTvDTO ==>> {}", userTvDTO);
1256 if (Objects.nonNull(userTvDTO.getId())) { 1259 if (StringUtils.isBlank(bindMemberCode)) {
1257 log.info("主账号存在"); 1260 // 有其他绑定的小程序会员,排除自己
1258 if (StringUtils.isBlank(bindMemberCode)) { 1261 /*List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id);
1259 // 有其他绑定的小程序会员,排除自己 1262 log.info("后台指定一个默认主会员,通过大屏id查询到的绑定的小屏会员memberDTOList ==>> {}", memberDTOList);
1260 /*List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id); 1263 if (!CollectionUtils.isEmpty(memberDTOList)) {
1261 log.info("后台指定一个默认主会员,通过大屏id查询到的绑定的小屏会员memberDTOList ==>> {}", memberDTOList); 1264
1262 if (!CollectionUtils.isEmpty(memberDTOList)) { 1265 Long memberId = userTvDTO.getMemberId();
1263 1266 MemberDTO memberDTO1 = this.memberService.findById(memberId);
1264 Long memberId = userTvDTO.getMemberId(); 1267
1265 MemberDTO memberDTO1 = this.memberService.findById(memberId); 1268 List<MemberDTO> collect =
1266 1269 memberDTOList.stream().filter(memberDTO ->
1267 List<MemberDTO> collect = 1270 !memberDTO.getCode().equalsIgnoreCase(memberCode) &&
1268 memberDTOList.stream().filter(memberDTO -> 1271 !memberDTO.getCode().equalsIgnoreCase(memberDTO1.getCode())).collect(Collectors.toList());
1269 !memberDTO.getCode().equalsIgnoreCase(memberCode) && 1272 log.info("过滤掉当前需要解绑的会员以及绑定的大屏会员之后剩余的会员列表 ==>> {}", memberDTOList);
1270 !memberDTO.getCode().equalsIgnoreCase(memberDTO1.getCode())).collect(Collectors.toList()); 1273
1271 log.info("过滤掉当前需要解绑的会员以及绑定的大屏会员之后剩余的会员列表 ==>> {}", memberDTOList); 1274 if (!CollectionUtils.isEmpty(collect)) {
1272 1275
1273 if (!CollectionUtils.isEmpty(collect)) { 1276 // 按绑定时间倒排
1274 1277 collect.sort(new Comparator<MemberDTO>() {
1275 // 按绑定时间倒排 1278 @Override
1276 collect.sort(new Comparator<MemberDTO>() { 1279 public int compare(MemberDTO memberDTO, MemberDTO t1) {
1277 @Override 1280 return t1.getBindIptvTime().compareTo(memberDTO.getBindIptvTime());
1278 public int compare(MemberDTO memberDTO, MemberDTO t1) { 1281 }
1279 return t1.getBindIptvTime().compareTo(memberDTO.getBindIptvTime()); 1282 });
1280 }
1281 });
1282
1283 // 绑定新的主账号
1284 UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, memberDTOList.get(0).getCode(), "manual");
1285 log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO);
1286
1287 return _userTvDTO;
1288
1289 }
1290
1291 } else {
1292 1283
1293 log.info("无其他绑定的小屏会员信息 ");
1294 // 绑定新的主账号 1284 // 绑定新的主账号
1295 UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, null, "manual"); 1285 UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, memberDTOList.get(0).getCode(), "manual");
1296 log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO); 1286 log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO);
1287
1297 return _userTvDTO; 1288 return _userTvDTO;
1298 1289
1299 }*/ 1290 }
1291
1292 } else {
1300 1293
1301 log.info("无其他绑定的小屏会员信息 "); 1294 log.info("无其他绑定的小屏会员信息 ");
1302 // 绑定新的主账号 1295 // 绑定新的主账号
...@@ -1304,50 +1297,30 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1304,50 +1297,30 @@ public class UserOperationServiceImpl implements UserOperationService {
1304 log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO); 1297 log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO);
1305 return _userTvDTO; 1298 return _userTvDTO;
1306 1299
1307 } else { 1300 }*/
1308 1301
1309 this.memberService.findByCode(bindMemberCode); 1302 // 绑定新的主账号
1303 // UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, null, "manual");
1304 UserTv userTv = new UserTv();
1305 userTv.setId(userTvDTO.getId());
1306 userTv.setPlatform(userTvDTO.getPlatformAccount());
1307 userTv.setPriorityMemberCode(null);
1308 UserTvDTO _userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
1309 log.info("绑定新的主账号 ==>> _userTvDTO ==>> {}", _userTvDTO);
1310 return _userTvDTO;
1310 1311
1311 // 绑定新的主账号 1312 } else {
1312 UserTvDTO _userTvDTO = this.bondPriorityMember(userTvDTO, bindMemberCode, "manual");
1313 1313
1314 return _userTvDTO; 1314 UserTv userTv = new UserTv();
1315 userTv.setId(userTvDTO.getId());
1316 userTv.setPlatform(userTvDTO.getPlatformAccount());
1317 userTv.setPriorityMemberCode(bindMemberCode);
1318 // 绑定新的主账号
1319 UserTvDTO _userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
1315 1320
1316 } 1321 return _userTvDTO;
1317 1322
1318 } 1323 }
1319
1320 return userTvDTO;
1321
1322 }
1323
1324 /**
1325 * 解绑(置空大屏信息)
1326 * @param memberDTOS
1327 */
1328 private MemberDTO minaUnbind_(MemberDTO memberDTOS) {
1329
1330 // 若无关系,不做处理
1331 if (Objects.nonNull(memberDTOS) && Objects.isNull(memberDTOS.getUserIptvId()))
1332 return null;
1333
1334 Member member = new Member();
1335 memberDTOS.setBindIptvTime(null);
1336 memberDTOS.setUserIptvId(null);
1337 memberDTOS.setBindIptvPlatformType(null);
1338 BeanUtils.copyProperties(memberDTOS, member);
1339 log.info("大屏绑定,置空绑定的大屏信息, member ==>> {}", member);
1340 MemberDTO memberDTO = this.memberService.update(member);
1341 return memberDTO;
1342 }
1343
1344 /**
1345 *
1346 * @param memberCode 会员编码
1347 * @return
1348 */
1349 private MemberDTO findMemberByCode(String memberCode) {
1350 return memberService.findByCode(memberCode);
1351 } 1324 }
1352 1325
1353 /** 1326 /**
...@@ -1380,17 +1353,6 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1380,17 +1353,6 @@ public class UserOperationServiceImpl implements UserOperationService {
1380 } 1353 }
1381 1354
1382 /** 1355 /**
1383 * 更新大屏
1384 * @param userTvDTO
1385 */
1386 private UserTvDTO doUpdateUserTv(UserTvDTO userTvDTO) {
1387 UserTv userTv = new UserTv();
1388 BeanUtils.copyProperties(userTvDTO,userTv);
1389 userTv.setUpdateTime(TimestampUtil.now());
1390 return this.userTvService.update(userTv);
1391 }
1392
1393 /**
1394 * 同一用户有多个微信APP的情况下展示同一个账户信息 1356 * 同一用户有多个微信APP的情况下展示同一个账户信息
1395 * 原则:那个先创建就用那个id 1357 * 原则:那个先创建就用那个id
1396 * @param userWeixinDTO 1358 * @param userWeixinDTO
...@@ -1440,17 +1402,6 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1440,17 +1402,6 @@ public class UserOperationServiceImpl implements UserOperationService {
1440 1402
1441 /** 1403 /**
1442 * 获取小屏账户 1404 * 获取小屏账户
1443 * @param unionId
1444 * @param appId
1445 * @param openId
1446 * @return
1447 */
1448 private UserWeixinDTO findFirstByUnionIdAndAppIdAndOpenId(String unionId, String appId, String openId) {
1449 return this.userWeixinService.findFirstByUnionIdAndAppIdAndOpenId(unionId,appId,openId);
1450 }
1451
1452 /**
1453 * 获取小屏账户
1454 * @param appId 1405 * @param appId
1455 * @param openId 1406 * @param openId
1456 * @return 1407 * @return
...@@ -1524,21 +1475,86 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1524,21 +1475,86 @@ public class UserOperationServiceImpl implements UserOperationService {
1524 } 1475 }
1525 1476
1526 @Override 1477 @Override
1527 public void minaUnbind(WeixinUnBindBean weixinUnBindBean) { 1478 public boolean minaUnbind(WeixinUnBindBean weixinUnBindBean) {
1528 1479
1529 Long memberId = weixinUnBindBean.getMemberId(); 1480 Long memberId = weixinUnBindBean.getMemberId();
1530 MemberDTO memberDTO = this.memberService.findById(memberId); 1481 MemberDTO memberDTO = this.memberService.findById(memberId);
1482 if (Objects.isNull(memberDTO.getId())) {
1483 log.error("小屏解绑失败,会员信息不存在 memberId ==>> {}", memberId);
1484 return false;
1485 }
1531 1486
1532 Assert.notNull(memberDTO.getUserIptvId(), GlobeExceptionMsg.IPTV_IS_NULL); 1487 if (Objects.isNull(memberDTO.getUserIptvId())) {
1488 log.error("小屏解绑失败,未查询到大屏的大屏信息, memberId ==>> {}", memberId);
1489 return false;
1490 }
1533 1491
1534 UserTvDTO userTvDTO = this.userTvService.findById(memberDTO.getUserIptvId()); 1492 UserTvDTO userTvDTO = this.userTvService.findById(memberDTO.getUserIptvId());
1493 if (Objects.isNull(userTvDTO.getId())) {
1494 log.info("小屏解绑失败,绑定的大屏账号不存在 userIptvId ==>> {}", memberDTO.getUserIptvId());
1495 return false;
1496 }
1497
1498 boolean b = this.tvUnbindAndSetNewPriorityMemberCode(memberDTO, userTvDTO);
1499 return b;
1500 }
1535 1501
1536 TvUnBindBean tvUnBindBean = new TvUnBindBean(); 1502 private boolean tvUnbindAndSetNewPriorityMemberCode(MemberDTO memberDTO, UserTvDTO userTvDTO) {
1537 tvUnBindBean.setMemberId(memberId); 1503
1538 tvUnBindBean.setAutoModel(weixinUnBindBean.getAutoModel()); 1504 // 解绑(置空大屏信息)
1539 String platformAccount = userTvDTO.getPlatformAccount(); 1505 Member member = new Member();
1540 tvUnBindBean.setPlatformAccount(platformAccount); 1506 member.setId(memberDTO.getId());
1541 this.tvUnbind(tvUnBindBean); 1507 member.setCode(memberDTO.getCode());
1508 member.setBindIptvTime(null);
1509 member.setUserIptvId(null);
1510 member.setBindIptvPlatformType(null);
1511 log.info("置空会员绑定的大屏信息, member ==>> {}", member);
1512 memberDTO = this.memberService.doUpdateMemberUserIptvIdAndBindIptvPlatformAndBindIptvTime(member);
1513 log.info("会员信息置空大屏的结果,memberDTO ==>> {}", memberDTO);
1514 memberDTO.setPlatformAccount(userTvDTO.getPlatformAccount());
1515
1516 // 有其他绑定的小程序会员,排除自己
1517 List<MemberDTO> memberDTOS = this.memberService.findByUserIptvId(userTvDTO.getId());
1518 log.info("后台指定一个默认主会员,通过大屏id查询到的绑定的小屏会员memberDTOList ==>> {}", memberDTOS);
1519 if (!CollectionUtils.isEmpty(memberDTOS)) {
1520 String oldMemberCode = memberDTO.getCode();
1521 List<MemberDTO> collect =
1522 memberDTOS.stream().filter(memberDTO_ ->
1523 !memberDTO_.getCode().equalsIgnoreCase(oldMemberCode)).collect(Collectors.toList());
1524 log.info("过滤掉当前会员 ==>> {}", collect);
1525
1526 if (!CollectionUtils.isEmpty(collect)) {
1527
1528 // 按绑定时间倒排
1529 collect.sort(new Comparator<MemberDTO>() {
1530 @Override
1531 public int compare(MemberDTO memberDTO, MemberDTO t1) {
1532 return t1.getBindIptvTime().compareTo(memberDTO.getBindIptvTime());
1533 }
1534 });
1535 // 绑定新的主账号
1536 UserTv userTv = new UserTv();
1537 userTv.setId(userTvDTO.getId());
1538 userTv.setPlatform(userTvDTO.getPlatformAccount());
1539 userTv.setPriorityMemberCode(collect.get(0).getCode());
1540 userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
1541 log.info("大屏账号绑定新的主账号 ==>> userTvDTO ==>> {}", userTvDTO);
1542 }
1543
1544 } else {
1545 log.info("无其他绑定的小屏会员信息 ");
1546 // 绑定新的主账号
1547 UserTv userTv = new UserTv();
1548 userTv.setId(userTvDTO.getId());
1549 userTv.setPlatform(userTvDTO.getPlatformAccount());
1550 userTv.setPriorityMemberCode(null);
1551 userTvDTO = this.userTvService.doUpdatePriorityMemberCode(userTv);
1552 log.info("大屏账号置空主会员的结果,userTvDTO ==>> {}", userTvDTO);
1553 }
1554
1555 log.info("同步绑定信息至大屏侧, 参数 ==>> {}", new MemberAndUserTvDTO(memberDTO, userTvDTO));
1556 ((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnbind(new MemberAndUserTvDTO(memberDTO, userTvDTO));
1557 return true;
1542 } 1558 }
1543 1559
1544 @Override 1560 @Override
......
...@@ -3,58 +3,53 @@ package com.topdraw.business.process.service.impl.member; ...@@ -3,58 +3,53 @@ package com.topdraw.business.process.service.impl.member;
3 import cn.hutool.core.util.ObjectUtil; 3 import cn.hutool.core.util.ObjectUtil;
4 import com.topdraw.aspect.AsyncMqSend; 4 import com.topdraw.aspect.AsyncMqSend;
5 import com.topdraw.business.module.member.domain.Member; 5 import com.topdraw.business.module.member.domain.Member;
6 import com.topdraw.business.module.member.profile.domain.MemberProfile;
7 import com.topdraw.business.module.member.profile.service.MemberProfileService; 6 import com.topdraw.business.module.member.profile.service.MemberProfileService;
8 import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO; 7 import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
9 import com.topdraw.business.module.member.service.MemberService; 8 import com.topdraw.business.module.member.service.MemberService;
10 import com.topdraw.business.module.member.service.dto.MemberDTO; 9 import com.topdraw.business.module.member.service.dto.MemberDTO;
11 import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory; 10 import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
12 import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService; 11 import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
13 import com.topdraw.business.module.task.domain.Task;
14 import com.topdraw.business.module.user.weixin.domain.UserWeixin; 12 import com.topdraw.business.module.user.weixin.domain.UserWeixin;
15 import com.topdraw.business.module.user.weixin.service.UserWeixinService; 13 import com.topdraw.business.module.user.weixin.service.UserWeixinService;
16 import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO; 14 import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
17 import com.topdraw.business.process.domian.weixin.BuyVipBean; 15 import com.topdraw.business.process.domian.weixin.BuyVipBean;
18 import com.topdraw.business.process.service.member.MemberOperationService; 16 import com.topdraw.business.process.service.member.MemberOperationService;
19 import com.topdraw.business.process.service.member.MemberProfileOperationService; 17 import com.topdraw.config.RedisKeyConstants;
20 import com.topdraw.exception.EntityNotFoundException; 18 import com.topdraw.exception.EntityNotFoundException;
21 import com.topdraw.util.TimestampUtil; 19 import com.topdraw.util.TimestampUtil;
20 import lombok.extern.slf4j.Slf4j;
22 import org.springframework.aop.framework.AopContext; 21 import org.springframework.aop.framework.AopContext;
23 import org.springframework.beans.BeanUtils; 22 import org.springframework.beans.BeanUtils;
24 import org.springframework.beans.factory.annotation.Autowired; 23 import org.springframework.beans.factory.annotation.Autowired;
25 import org.springframework.cache.annotation.CacheConfig; 24 import org.springframework.cache.annotation.CacheConfig;
26 import org.springframework.cache.annotation.CacheEvict;
27 import org.springframework.cache.annotation.CachePut; 25 import org.springframework.cache.annotation.CachePut;
28 import org.springframework.cache.annotation.Cacheable;
29 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
30 import org.springframework.stereotype.Service; 26 import org.springframework.stereotype.Service;
31 import org.springframework.util.Assert; 27 import org.springframework.util.Assert;
32 28
33 import java.sql.Timestamp; 29 import java.sql.Timestamp;
34 import java.time.LocalDateTime; 30 import java.time.LocalDateTime;
35 import java.time.ZoneOffset;
36 import java.util.Objects; 31 import java.util.Objects;
37 32
38 @Service 33 @Service
39 //@CacheConfig(cacheNames = "member") 34 @Slf4j
35 @CacheConfig(cacheNames = RedisKeyConstants.cacheMemberById)
40 public class MemberOperationServiceImpl implements MemberOperationService { 36 public class MemberOperationServiceImpl implements MemberOperationService {
41 37
38
42 @Autowired 39 @Autowired
43 private MemberService memberService; 40 private MemberService memberService;
44 @Autowired 41 @Autowired
42 private UserWeixinService userWeixinService;
43 @Autowired
45 private MemberProfileService memberProfileService; 44 private MemberProfileService memberProfileService;
46 @Autowired 45 @Autowired
47 private MemberVipHistoryService memberVipHistoryService; 46 private MemberVipHistoryService memberVipHistoryService;
48 @Autowired 47
49 private UserWeixinService userWeixinService;
50 @Autowired
51 private ThreadPoolTaskExecutor threadPoolTaskExecutor;
52 48
53 49
54 @AsyncMqSend 50 @AsyncMqSend
55 public void asyncUpdateMemberVip(MemberDTO me) {} 51 public void asyncUpdateMemberVip(MemberDTO memberDTO) {}
56 52
57 // @CachePut(key = "#resources.memberId")
58 @Override 53 @Override
59 public MemberDTO buyVipByUserId(BuyVipBean resources) { 54 public MemberDTO buyVipByUserId(BuyVipBean resources) {
60 // 小程序账户id 55 // 小程序账户id
...@@ -96,12 +91,12 @@ public class MemberOperationServiceImpl implements MemberOperationService { ...@@ -96,12 +91,12 @@ public class MemberOperationServiceImpl implements MemberOperationService {
96 91
97 } 92 }
98 93
99 memberDTO.setVip(vip1);
100 memberDTO.setVipExpireTime(vipExpireTime);
101 94
102 Member member = new Member(); 95 Member member = new Member();
103 BeanUtils.copyProperties(memberDTO,member); 96 member.setVip(vip1);
104 this.update(member); 97 member.setVipExpireTime(vipExpireTime);
98
99 this.doUpdateMemberVipAndVipExpireTime(member);
105 100
106 MemberVipHistory memberVipHistory = new MemberVipHistory(); 101 MemberVipHistory memberVipHistory = new MemberVipHistory();
107 memberVipHistory.setMemberId(memberId).setVip(vip1).setBeforeVip(vip); 102 memberVipHistory.setMemberId(memberId).setVip(vip1).setBeforeVip(vip);
...@@ -148,7 +143,6 @@ public class MemberOperationServiceImpl implements MemberOperationService { ...@@ -148,7 +143,6 @@ public class MemberOperationServiceImpl implements MemberOperationService {
148 return this.update(resources); 143 return this.update(resources);
149 } 144 }
150 145
151 // @CachePut(key = "#resources.id")
152 @Override 146 @Override
153 public MemberDTO doInsertMember(Member resources) { 147 public MemberDTO doInsertMember(Member resources) {
154 return this.memberService.create(resources); 148 return this.memberService.create(resources);
...@@ -160,34 +154,39 @@ public class MemberOperationServiceImpl implements MemberOperationService { ...@@ -160,34 +154,39 @@ public class MemberOperationServiceImpl implements MemberOperationService {
160 return Objects.nonNull(memberId) ? memberDTO : null; 154 return Objects.nonNull(memberId) ? memberDTO : null;
161 } 155 }
162 156
163 // @CachePut(key = "#resources.id")
164 @Override 157 @Override
165 public MemberDTO doUpdateMemberExpAndLevel(Member resources) { 158 public MemberDTO doUpdateMemberExpAndLevel(Member resources) {
166 return this.memberService.doUpdateMemberExpAndLevel(resources); 159 return this.memberService.doUpdateMemberExpAndLevel(resources);
167 } 160 }
168 161
169 // @CachePut(key = "#resources.id") 162
170 @Override 163 @Override
171 public MemberDTO doUpdateMemberPoints(Member resources) { 164 public MemberDTO doUpdateMemberPoints(Member resources) {
172 return this.memberService.doUpdateMemberPoints(resources); 165 return this.memberService.doUpdateMemberPoints(resources);
173 } 166 }
174 167
175 // @CachePut(key = "#resources.id") 168
176 @Override 169 @Override
170 @CachePut(cacheNames = RedisKeyConstants.cacheMemberById, key = "#member.id")
177 public MemberDTO doUpdateMemberCoupon(Member member) { 171 public MemberDTO doUpdateMemberCoupon(Member member) {
178 return this.memberService.doUpdateMemberCoupon(member); 172 return this.memberService.doUpdateMemberCoupon(member);
179 } 173 }
180 174
181 @Override 175 @Override
182 public MemberDTO updateMemberVip(Member member) { 176 // @CachePut(cacheNames = RedisKeyConstants.cacheMemberById, key = "#member.id")
177 public MemberDTO doUpdateMemberVipAndVipExpireTime(Member member) {
183 MemberDTO memberDTO1 = this.memberService.findByCode(member.getCode()); 178 MemberDTO memberDTO1 = this.memberService.findByCode(member.getCode());
179
184 Member member1 = new Member(); 180 Member member1 = new Member();
185 BeanUtils.copyProperties(memberDTO1, member1); 181 member1.setId(memberDTO1.getId());
182 member1.setCode(memberDTO1.getCode());
186 member1.setVip(member.getVip()); 183 member1.setVip(member.getVip());
187 member1.setVipExpireTime(member.getVipExpireTime()); 184 member1.setVipExpireTime(member.getVipExpireTime());
188 MemberDTO memberDTO = this.update(member1); 185 MemberDTO memberDTO_ = this.memberService.doUpdateMemberVipAndVipExpireTime(member1);
189 ((MemberOperationServiceImpl) AopContext.currentProxy()).asyncUpdateMemberVip(memberDTO); 186
190 return memberDTO; 187 ((MemberOperationServiceImpl) AopContext.currentProxy()).asyncUpdateMemberVip(memberDTO_);
188
189 return memberDTO_;
191 } 190 }
192 191
193 @Override 192 @Override
...@@ -225,11 +224,12 @@ public class MemberOperationServiceImpl implements MemberOperationService { ...@@ -225,11 +224,12 @@ public class MemberOperationServiceImpl implements MemberOperationService {
225 MemberDTO memberDTO1 = this.checkVipStatus(memberDTO,vipExpireTime,appid); 224 MemberDTO memberDTO1 = this.checkVipStatus(memberDTO,vipExpireTime,appid);
226 225
227 // 更新会员信息 226 // 更新会员信息
228 this.threadPoolTaskExecutor.execute(()->{ 227 Member member = new Member();
229 Member member = new Member(); 228 member.setId(memberDTO1.getId());
230 BeanUtils.copyProperties(memberDTO1,member); 229 member.setCode(memberDTO1.getCode());
231 this.update(member); 230 member.setVip(memberDTO1.getVip());
232 }); 231 member.setVipExpireTime(memberDTO1.getVipExpireTime());
232 this.doUpdateMemberVipAndVipExpireTime(member);
233 233
234 vip = memberDTO1.getVip(); 234 vip = memberDTO1.getVip();
235 Timestamp vipExpireTime1 = memberDTO1.getVipExpireTime(); 235 Timestamp vipExpireTime1 = memberDTO1.getVipExpireTime();
......
...@@ -111,12 +111,15 @@ public class MemberProfileOperationServiceImpl implements MemberProfileOperation ...@@ -111,12 +111,15 @@ public class MemberProfileOperationServiceImpl implements MemberProfileOperation
111 } 111 }
112 112
113 private void syncMember(MemberProfileDTO memberProfileDTO, MemberDTO memberDTO) { 113 private void syncMember(MemberProfileDTO memberProfileDTO, MemberDTO memberDTO) {
114 memberDTO.setAvatarUrl(memberProfileDTO.getAvatarUrl());
115 memberDTO.setNickname(memberProfileDTO.getRealname());
116 memberDTO.setGender(memberProfileDTO.getGender());
117 Member member = new Member(); 114 Member member = new Member();
118 BeanUtils.copyProperties(memberDTO, member); 115
119 this.memberService.update(member); 116 member.setId(memberDTO.getId());
117 member.setCode(memberDTO.getCode());
118 member.setAvatarUrl(memberProfileDTO.getAvatarUrl());
119 member.setNickname(memberProfileDTO.getRealname());
120 member.setGender(memberProfileDTO.getGender());
121 // this.memberService.update(member);
122 this.memberService.doUpdateMemberAvatarUrlAndNicknameAndGender(member);
120 } 123 }
121 124
122 125
......
...@@ -90,5 +90,5 @@ public interface MemberOperationService { ...@@ -90,5 +90,5 @@ public interface MemberOperationService {
90 * 90 *
91 * @param member 91 * @param member
92 */ 92 */
93 MemberDTO updateMemberVip(Member member); 93 MemberDTO doUpdateMemberVipAndVipExpireTime(Member member);
94 } 94 }
......
...@@ -28,4 +28,10 @@ public class LocalConstants { ...@@ -28,4 +28,10 @@ public class LocalConstants {
28 28
29 // 事件类型 3:参加活动 29 // 事件类型 3:参加活动
30 public static final Integer EVT_TYPE_ACTIVITY = 3; 30 public static final Integer EVT_TYPE_ACTIVITY = 3;
31
32
33
34
35 // 会员黑名单状态
36 public static final Long BLACK_STATUS = 1L;
31 } 37 }
......
1 package com.topdraw.config;
2
3 import cn.hutool.core.util.ObjectUtil;
4 import org.springframework.beans.factory.annotation.Value;
5 import org.springframework.stereotype.Component;
6
7 @Component
8 public class ServiceEnvConfig {
9
10 // uc两侧部署,需配置位于哪一侧 mobile小屏侧 vis大屏侧
11 public static String UC_SERVICE_TYPE;
12
13 @Value("${uc.service.type:mobile}")
14 public void setUcServiceType(String ucServiceType) {
15 UC_SERVICE_TYPE = ucServiceType;
16 }
17
18 public static boolean isMobile() {
19 return ObjectUtil.equals(UC_SERVICE_TYPE, LocalConstants.ENV_MOBILE);
20 }
21
22 public static boolean isVis() {
23 return ObjectUtil.equals(UC_SERVICE_TYPE, LocalConstants.ENV_VIS);
24 }
25
26 }
...@@ -23,10 +23,9 @@ public class DataSyncMsg implements Serializable { ...@@ -23,10 +23,9 @@ public class DataSyncMsg implements Serializable {
23 // 具体事件 行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;11:积分转移;30:积分兑换商品;98:系统操作;99:其他 23 // 具体事件 行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;11:积分转移;30:积分兑换商品;98:系统操作;99:其他
24 private Integer event; 24 private Integer event;
25 //设备类型 1:大屏;2:小屏(微信)3.小屏(xx) 25 //设备类型 1:大屏;2:小屏(微信)3.小屏(xx)
26 @NotNull
27 private Integer deviceType; 26 private Integer deviceType;
28 // 发送时间 27 // 发送时间
29 private LocalDateTime time; 28 private String time;
30 // 消息体 29 // 消息体
31 private String msgData; 30 private String msgData;
32 31
...@@ -37,20 +36,32 @@ public class DataSyncMsg implements Serializable { ...@@ -37,20 +36,32 @@ public class DataSyncMsg implements Serializable {
37 @AllArgsConstructor 36 @AllArgsConstructor
38 @NoArgsConstructor 37 @NoArgsConstructor
39 public static class MsgData { 38 public static class MsgData {
40 private String remarks; //备注 39 /**备注*/
41 @NotNull 40 private String remarks;
42 private Long memberId; // 会员id 41 // 会员id
43 private Long userId; // 账户id 42 private Long memberId;
44 @NotNull 43 // 账户id
45 private String appCode; //用户对应的应用code 44 private Long userId;
45 //用户对应的应用code
46 private String appCode;
47 // 会员code
46 private String memberCode; 48 private String memberCode;
47 private Long accountId; // 账号id 49 // 账号id
50 private Long accountId;
51 // 订单Id
48 private Long orderId; 52 private Long orderId;
53 // 活动id
49 private Long activityId; 54 private Long activityId;
55 // 节目id
50 private Long mediaId; 56 private Long mediaId;
57 // 产品id
51 private Long itemId; 58 private Long itemId;
59 // 模板参数
52 private String param; 60 private String param;
61 // 描述
53 private String description; 62 private String description;
63 // 大屏账号
64 private String platformAccount;
54 } 65 }
55 66
56 } 67 }
......
1 package com.topdraw.mq.producer; 1 package com.topdraw.mq.producer;
2 2
3 import com.topdraw.business.process.service.impl.PointsOperationServiceImpl;
3 import lombok.extern.slf4j.Slf4j; 4 import lombok.extern.slf4j.Slf4j;
4 import org.springframework.amqp.core.AmqpTemplate; 5 import org.springframework.amqp.core.AmqpTemplate;
6 import org.springframework.aop.framework.AopContext;
5 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.beans.factory.annotation.Value; 8 import org.springframework.beans.factory.annotation.Value;
7 import org.springframework.stereotype.Component; 9 import org.springframework.stereotype.Component;
...@@ -57,4 +59,5 @@ public class MessageProducer { ...@@ -57,4 +59,5 @@ public class MessageProducer {
57 amqpTemplate.convertAndSend(exchange, queue, msg); 59 amqpTemplate.convertAndSend(exchange, queue, msg);
58 log.info("send sendMessage msg || exchange: {} || queue: {} || msg:{} ", exchange, queue, msg); 60 log.info("send sendMessage msg || exchange: {} || queue: {} || msg:{} ", exchange, queue, msg);
59 } 61 }
62
60 } 63 }
......
...@@ -142,4 +142,8 @@ weixin: ...@@ -142,4 +142,8 @@ weixin:
142 env: dev 142 env: dev
143 143
144 api: 144 api:
145 uc-service: http://127.0.0.1:8446
...\ No newline at end of file ...\ No newline at end of file
145 uc-service: http://127.0.0.1:8446
146
147 uc:
148 # 主会员是否启用,如果启用任务获得的积分将添加至小屏会员上
149 validPriorityMember: 0
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -179,6 +179,13 @@ public class TaskOperationControllerTest extends BaseTest { ...@@ -179,6 +179,13 @@ public class TaskOperationControllerTest extends BaseTest {
179 this.taskOperationController.deleteTask(task); 179 this.taskOperationController.deleteTask(task);
180 } 180 }
181 181
182 @Test
183 public void dealTask() {
184 String content = "{\"deviceType\":1,\"event\":8,\"evt\":\"PLAY\",\"msgData\":\"{\\\"description\\\":\\\"{\\\\\\\"playDuration\\\\\\\":1,\\\\\\\"time\\\\\\\":\\\\\\\"2022-05-03 23:10:09\\\\\\\",\\\\\\\"mediaId\\\\\\\":432,\\\\\\\"mediaCode\\\\\\\":\\\\\\\"media_123\\\\\\\",\\\\\\\"mediaName\\\\\\\":\\\\\\\"白宫陷落\\\\\\\"}\\\",\\\"mediaId\\\":432,\\\"platformAccount\\\":\\\"6002110106@ITVP\\\",\\\"param\\\":\\\"{\\\\\\\"playDuration\\\\\\\":1}\\\"}\",\"time\":\"2022-06-17T13:07:16.433\"}\n";
185 TaskOperationQueryCriteria task = new TaskOperationQueryCriteria();
186 task.setContent(content);
187 this.taskOperationController.dealTask(task);
188 }
182 189
183 190
184 } 191 }
......