1.优化
Showing
4 changed files
with
72 additions
and
24 deletions
| ... | @@ -2,6 +2,7 @@ package com.topdraw.business.module.user.iptv.domain; | ... | @@ -2,6 +2,7 @@ package com.topdraw.business.module.user.iptv.domain; |
| 2 | 2 | ||
| 3 | import com.topdraw.business.module.common.domain.AsyncMqModule; | 3 | import com.topdraw.business.module.common.domain.AsyncMqModule; |
| 4 | import com.topdraw.business.module.common.validated.CreateGroup; | 4 | import com.topdraw.business.module.common.validated.CreateGroup; |
| 5 | import com.topdraw.business.module.common.validated.UpdateGroup; | ||
| 5 | import lombok.Data; | 6 | import lombok.Data; |
| 6 | import lombok.experimental.Accessors; | 7 | import lombok.experimental.Accessors; |
| 7 | import cn.hutool.core.bean.BeanUtil; | 8 | import cn.hutool.core.bean.BeanUtil; |
| ... | @@ -51,7 +52,7 @@ public class UserTv extends AsyncMqModule implements Serializable { | ... | @@ -51,7 +52,7 @@ public class UserTv extends AsyncMqModule implements Serializable { |
| 51 | 52 | ||
| 52 | /** 运营商平台账号 */ | 53 | /** 运营商平台账号 */ |
| 53 | @Column(name = "platform_account") | 54 | @Column(name = "platform_account") |
| 54 | @NotNull(message = "platformAccount can't be null !",groups = {CreateGroup.class}) | 55 | @NotNull(message = "platformAccount can't be null !",groups = {CreateGroup.class, UpdateGroup.class}) |
| 55 | private String platformAccount; | 56 | private String platformAccount; |
| 56 | 57 | ||
| 57 | /** 手机号 */ | 58 | /** 手机号 */ | ... | ... |
| ... | @@ -101,8 +101,8 @@ public class UserOperationController { | ... | @@ -101,8 +101,8 @@ public class UserOperationController { |
| 101 | SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(data.getContent(), SubscribeBean.class); | 101 | SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(data.getContent(), SubscribeBean.class); |
| 102 | // 解析参数 | 102 | // 解析参数 |
| 103 | this.parseSubscribe(subscribeBean); | 103 | this.parseSubscribe(subscribeBean); |
| 104 | boolean result = this.userOperationService.subscribe(subscribeBean); | 104 | this.userOperationService.subscribe(subscribeBean); |
| 105 | return ResultInfo.success(result); | 105 | return ResultInfo.success(); |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | /** | 108 | /** |
| ... | @@ -112,19 +112,15 @@ public class UserOperationController { | ... | @@ -112,19 +112,15 @@ public class UserOperationController { |
| 112 | */ | 112 | */ |
| 113 | private void parseSubscribe(SubscribeBean subscribeBean) throws IOException { | 113 | private void parseSubscribe(SubscribeBean subscribeBean) throws IOException { |
| 114 | 114 | ||
| 115 | String appId = subscribeBean.getAppId(); | 115 | String appId = subscribeBean.getAppid(); |
| 116 | Assert.notNull(appId, GlobeExceptionMsg.APP_ID_IS_NULL); | 116 | Assert.notNull(appId, GlobeExceptionMsg.APP_ID_IS_NULL); |
| 117 | // openId | 117 | // openId |
| 118 | String openId = subscribeBean.getOpenId(); | 118 | String openId = subscribeBean.getOpenid(); |
| 119 | Assert.notNull(openId, GlobeExceptionMsg.OPEN_ID_IS_NULL); | 119 | Assert.notNull(openId, GlobeExceptionMsg.OPEN_ID_IS_NULL); |
| 120 | // unionId | 120 | // unionId |
| 121 | String unionId = subscribeBean.getUnionid(); | 121 | String unionId = subscribeBean.getUnionid(); |
| 122 | Assert.notNull(openId, GlobeExceptionMsg.UNION_ID_IS_NULL); | 122 | Assert.notNull(openId, GlobeExceptionMsg.UNION_ID_IS_NULL); |
| 123 | 123 | ||
| 124 | subscribeBean.setAppid(appId); | ||
| 125 | subscribeBean.setOpenid(openId); | ||
| 126 | subscribeBean.setUnionid(unionId); | ||
| 127 | |||
| 128 | // 匹配配置文件中的微信列表信息 | 124 | // 匹配配置文件中的微信列表信息 |
| 129 | Map<String, String> wxInfoMap = WeixinUtil.getWeixinInfoByAppid(appId); | 125 | Map<String, String> wxInfoMap = WeixinUtil.getWeixinInfoByAppid(appId); |
| 130 | 126 | ||
| ... | @@ -206,7 +202,7 @@ public class UserOperationController { | ... | @@ -206,7 +202,7 @@ public class UserOperationController { |
| 206 | @AnonymousAccess | 202 | @AnonymousAccess |
| 207 | public ResultInfo saveUserInfo(@RequestBody String data) { | 203 | public ResultInfo saveUserInfo(@RequestBody String data) { |
| 208 | 204 | ||
| 209 | log.info("saveUserInfo ==> input ==> [{}]",data); | 205 | log.info("UserOperationController ==> saveUserInfo ==>> param ==>> [{}]",data); |
| 210 | Assert.notNull(data, "用户数据不可为空"); | 206 | Assert.notNull(data, "用户数据不可为空"); |
| 211 | 207 | ||
| 212 | JSONObject json = JSONObject.parseObject(data); | 208 | JSONObject json = JSONObject.parseObject(data); |
| ... | @@ -327,7 +323,7 @@ public class UserOperationController { | ... | @@ -327,7 +323,7 @@ public class UserOperationController { |
| 327 | @RequestMapping(value = "/changeMainAccount") | 323 | @RequestMapping(value = "/changeMainAccount") |
| 328 | @ApiOperation("大屏更换主账号") | 324 | @ApiOperation("大屏更换主账号") |
| 329 | @AnonymousAccess | 325 | @AnonymousAccess |
| 330 | public ResultInfo changeMainAccount(@Validated @RequestBody UserTv resources) { | 326 | public ResultInfo changeMainAccount(@Validated(value = {UpdateGroup.class}) @RequestBody UserTv resources) { |
| 331 | log.info("UserOperationController ==> changeMainAccount ==>> param ==> [{}]",resources); | 327 | log.info("UserOperationController ==> changeMainAccount ==>> param ==> [{}]",resources); |
| 332 | 328 | ||
| 333 | this.userOperationService.changeMainAccount(resources); | 329 | this.userOperationService.changeMainAccount(resources); | ... | ... |
| ... | @@ -131,4 +131,11 @@ public interface UserOperationService { | ... | @@ -131,4 +131,11 @@ public interface UserOperationService { |
| 131 | * @return | 131 | * @return |
| 132 | */ | 132 | */ |
| 133 | UserTvDTO checkBind(MemberDTO memberDTO); | 133 | UserTvDTO checkBind(MemberDTO memberDTO); |
| 134 | |||
| 135 | /** | ||
| 136 | * | ||
| 137 | * @param platformAccount | ||
| 138 | * @return | ||
| 139 | */ | ||
| 140 | UserTvDTO findByPlatformAccount(String platformAccount); | ||
| 134 | } | 141 | } | ... | ... |
| ... | @@ -37,8 +37,9 @@ import com.topdraw.exception.GlobeExceptionMsg; | ... | @@ -37,8 +37,9 @@ import com.topdraw.exception.GlobeExceptionMsg; |
| 37 | import com.topdraw.util.TimestampUtil; | 37 | import com.topdraw.util.TimestampUtil; |
| 38 | import com.topdraw.utils.QueryHelp; | 38 | import com.topdraw.utils.QueryHelp; |
| 39 | import com.topdraw.utils.RedisUtils; | 39 | import com.topdraw.utils.RedisUtils; |
| 40 | import com.topdraw.utils.StringUtils; | ||
| 41 | import lombok.extern.slf4j.Slf4j; | 40 | import lombok.extern.slf4j.Slf4j; |
| 41 | import org.apache.commons.collections4.CollectionUtils; | ||
| 42 | import org.apache.commons.lang3.StringUtils; | ||
| 42 | import org.springframework.beans.BeanUtils; | 43 | import org.springframework.beans.BeanUtils; |
| 43 | import org.springframework.beans.factory.annotation.Autowired; | 44 | import org.springframework.beans.factory.annotation.Autowired; |
| 44 | import org.springframework.beans.factory.annotation.Value; | 45 | import org.springframework.beans.factory.annotation.Value; |
| ... | @@ -359,15 +360,21 @@ public class UserOperationServiceImpl implements UserOperationService { | ... | @@ -359,15 +360,21 @@ public class UserOperationServiceImpl implements UserOperationService { |
| 359 | 360 | ||
| 360 | // 会员编码 | 361 | // 会员编码 |
| 361 | String memberCode = resources.getMemberCode(); | 362 | String memberCode = resources.getMemberCode(); |
| 363 | this.findMemberByCode(memberCode); | ||
| 362 | 364 | ||
| 363 | UserTvDTO userTvDTO = this.findByPriorityMemberCode(memberCode); | 365 | String platformAccount = resources.getPlatformAccount(); |
| 366 | this.findByPlatformAccount(platformAccount); | ||
| 367 | |||
| 368 | UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount); | ||
| 364 | 369 | ||
| 365 | if (Objects.nonNull(userTvDTO)) { | 370 | if (Objects.nonNull(userTvDTO)) { |
| 366 | 371 | ||
| 367 | if (userTvDTO.getPriorityMemberCode().equalsIgnoreCase(memberCode)) | 372 | if (userTvDTO.getPriorityMemberCode().equalsIgnoreCase(memberCode)) |
| 368 | throw new BadRequestException("会员已是主账户"); | 373 | throw new BadRequestException("会员已是主账户"); |
| 369 | 374 | ||
| 370 | throw new BadRequestException("该会员已绑定其他账户"); | 375 | } else { |
| 376 | |||
| 377 | throw new EntityNotFoundException(UserTvDTO.class , "platformAccount" , GlobeExceptionMsg.IPTV_IS_NULL); | ||
| 371 | 378 | ||
| 372 | } | 379 | } |
| 373 | 380 | ||
| ... | @@ -383,16 +390,18 @@ public class UserOperationServiceImpl implements UserOperationService { | ... | @@ -383,16 +390,18 @@ public class UserOperationServiceImpl implements UserOperationService { |
| 383 | @Override | 390 | @Override |
| 384 | public void unbind(UserTv resources) { | 391 | public void unbind(UserTv resources) { |
| 385 | 392 | ||
| 393 | String platformAccount = resources.getPlatformAccount(); | ||
| 386 | String memberCode = resources.getMemberCode(); | 394 | String memberCode = resources.getMemberCode(); |
| 387 | 395 | ||
| 388 | // 大屏会员 | 396 | UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount); |
| 389 | MemberDTO memberDTOS = this.findMemberByCode(memberCode); | 397 | if (Objects.isNull(userTvDTO)) |
| 398 | throw new EntityNotFoundException(UserTvDTO.class, "PlatformAccount", GlobeExceptionMsg.IPTV_IS_NULL); | ||
| 390 | 399 | ||
| 391 | // 解绑(置空大屏信息) | 400 | // 解绑(置空大屏信息) |
| 392 | this.resetIptvColumn(memberDTOS); | 401 | this.resetIptvColumn(this.findMemberByCode(memberCode)); |
| 393 | 402 | ||
| 394 | // 置空主账号 | 403 | // 置空主账号 |
| 395 | this.resetMainAccount(memberCode); | 404 | this.resetMainAccount(memberCode, userTvDTO.getId()); |
| 396 | } | 405 | } |
| 397 | 406 | ||
| 398 | @Override | 407 | @Override |
| ... | @@ -865,19 +874,49 @@ public class UserOperationServiceImpl implements UserOperationService { | ... | @@ -865,19 +874,49 @@ public class UserOperationServiceImpl implements UserOperationService { |
| 865 | } | 874 | } |
| 866 | 875 | ||
| 867 | /** | 876 | /** |
| 868 | * 置空主账号 | 877 | * 重置主账号 |
| 869 | * @param memberCode | 878 | * @param memberCode |
| 870 | */ | 879 | */ |
| 871 | private void resetMainAccount(String memberCode) { | 880 | private void resetMainAccount(String memberCode, Long id) { |
| 881 | |||
| 872 | UserTvDTO userTvDTO = this.userTvService.findByPriorityMemberCode(memberCode); | 882 | UserTvDTO userTvDTO = this.userTvService.findByPriorityMemberCode(memberCode); |
| 873 | if (Objects.nonNull(userTvDTO)) { | 883 | if (Objects.nonNull(userTvDTO)) { |
| 874 | userTvDTO.setPriorityMemberCode(null); | ||
| 875 | 884 | ||
| 885 | List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id); | ||
| 886 | if (CollectionUtils.isNotEmpty(memberDTOList)) { | ||
| 887 | |||
| 888 | // 过滤解绑的会员 | ||
| 889 | List<MemberDTO> memberDTOS = memberDTOList.stream().filter(memberDTO -> !memberDTO.getCode().equalsIgnoreCase(memberCode)) | ||
| 890 | .collect(Collectors.toList()); | ||
| 891 | |||
| 892 | if (CollectionUtils.isNotEmpty(memberDTOS)) { | ||
| 893 | |||
| 894 | // 按绑定时间倒排 | ||
| 895 | memberDTOS.sort(new Comparator<MemberDTO>() { | ||
| 896 | @Override | ||
| 897 | public int compare(MemberDTO memberDTO, MemberDTO t1) { | ||
| 898 | return t1.getBindIptvTime().compareTo(memberDTO.getBindIptvTime()); | ||
| 899 | } | ||
| 900 | }); | ||
| 901 | |||
| 902 | // 绑定新的主账号 | ||
| 903 | this.bondPriorityMember(userTvDTO, memberDTOS.get(0).getCode() , "manual"); | ||
| 904 | |||
| 905 | } | ||
| 906 | |||
| 907 | } else { | ||
| 908 | |||
| 909 | // 没有绑定其他会员,直接解绑,不换绑 | ||
| 910 | userTvDTO.setPriorityMemberCode(null); | ||
| 876 | UserTv userTv = new UserTv(); | 911 | UserTv userTv = new UserTv(); |
| 877 | BeanUtils.copyProperties(userTvDTO,userTv); | 912 | BeanUtils.copyProperties(userTvDTO,userTv); |
| 878 | 913 | ||
| 879 | this.userTvService.unbindPriorityMemberCode(userTv); | 914 | this.userTvService.unbindPriorityMemberCode(userTv); |
| 915 | |||
| 916 | } | ||
| 917 | |||
| 880 | } | 918 | } |
| 919 | |||
| 881 | } | 920 | } |
| 882 | 921 | ||
| 883 | /** | 922 | /** |
| ... | @@ -885,8 +924,9 @@ public class UserOperationServiceImpl implements UserOperationService { | ... | @@ -885,8 +924,9 @@ public class UserOperationServiceImpl implements UserOperationService { |
| 885 | * @param memberDTOS | 924 | * @param memberDTOS |
| 886 | */ | 925 | */ |
| 887 | private void resetIptvColumn(MemberDTO memberDTOS) { | 926 | private void resetIptvColumn(MemberDTO memberDTOS) { |
| 927 | |||
| 888 | // 若无关系,不做处理 | 928 | // 若无关系,不做处理 |
| 889 | if (Objects.nonNull(memberDTOS)) | 929 | if (Objects.nonNull(memberDTOS) && Objects.isNull(memberDTOS.getUserIptvId())) |
| 890 | return; | 930 | return; |
| 891 | 931 | ||
| 892 | Member member = new Member(); | 932 | Member member = new Member(); |
| ... | @@ -903,8 +943,7 @@ public class UserOperationServiceImpl implements UserOperationService { | ... | @@ -903,8 +943,7 @@ public class UserOperationServiceImpl implements UserOperationService { |
| 903 | * @return | 943 | * @return |
| 904 | */ | 944 | */ |
| 905 | private MemberDTO findMemberByCode(String memberCode) { | 945 | private MemberDTO findMemberByCode(String memberCode) { |
| 906 | MemberDTO memberDTO = memberService.findByCode(memberCode); | 946 | return memberService.findByCode(memberCode); |
| 907 | return memberDTO; | ||
| 908 | } | 947 | } |
| 909 | 948 | ||
| 910 | /** | 949 | /** |
| ... | @@ -1083,4 +1122,9 @@ public class UserOperationServiceImpl implements UserOperationService { | ... | @@ -1083,4 +1122,9 @@ public class UserOperationServiceImpl implements UserOperationService { |
| 1083 | } | 1122 | } |
| 1084 | return null; | 1123 | return null; |
| 1085 | } | 1124 | } |
| 1125 | |||
| 1126 | @Override | ||
| 1127 | public UserTvDTO findByPlatformAccount(String platformAccount) { | ||
| 1128 | return this.userTvService.findByPlatformAccount(platformAccount); | ||
| 1129 | } | ||
| 1086 | } | 1130 | } | ... | ... |
-
Please register or sign in to post a comment