Commit b8ba18e4 b8ba18e43b6e49cbcd5390d6c5b7a1abc929e67a by xianghan@topdraw.cn

1.添加小程序绑定事件

1 parent 3a9035d7
...@@ -22,13 +22,13 @@ import io.swagger.annotations.*; ...@@ -22,13 +22,13 @@ import io.swagger.annotations.*;
22 import java.util.Objects; 22 import java.util.Objects;
23 23
24 /** 24 /**
25 * @author XiangHan /api/MemberRelatedInfo 25 * @author XiangHan
26 * @date 2021-10-22 26 * @date 2021-10-22
27 */ 27 */
28 @Slf4j 28 @Slf4j
29 @Api(tags = "MemberRelatedInfo管理") 29 @Api(tags = "MemberRelatedInfo管理")
30 @RestController 30 @RestController
31 @RequestMapping("/ucEngine/api/MemberRelatedInfo") 31 @RequestMapping("/ucEngine/api/memberRelatedInfoController")
32 @CrossOrigin 32 @CrossOrigin
33 public class MemberRelatedInfoController { 33 public class MemberRelatedInfoController {
34 34
......
...@@ -15,17 +15,17 @@ import org.springframework.web.bind.annotation.*; ...@@ -15,17 +15,17 @@ import org.springframework.web.bind.annotation.*;
15 15
16 @Api("会员处理") 16 @Api("会员处理")
17 @RestController 17 @RestController
18 @RequestMapping(value = "/ucEngine/api/memberOperation") 18 @RequestMapping(value = "/ucEngine/api/memberOperationController")
19 public class MemberOperationController { 19 public class MemberOperationController {
20 20
21 @Autowired 21 @Autowired
22 private MemberOperationService memberOperationService; 22 private MemberOperationService memberOperationService;
23 23
24 @Log("获取会员加密信息并且检查vip状态") 24 @Log("获取会员加密信息并且检查vip状态")
25 @GetMapping("/getMemberProfileAndCheckVip/{memberId}/{appid}") 25 @GetMapping("/getMemberProfileAndCheckVip/{appId}/{memberId}")
26 @ApiOperation("获取会员加密信息并且检查vip状态") 26 @ApiOperation("获取会员加密信息并且检查vip状态")
27 public IResultInfo getMemberProfileAndCheckVip(@PathVariable Long memberId, @PathVariable String appid) { 27 public IResultInfo getMemberProfileAndCheckVip(@PathVariable(value = "appId") String appId, @PathVariable(value = "memberId") Long memberId) {
28 MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appid); 28 MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId);
29 return ResultInfo.success(memberProfileDTO); 29 return ResultInfo.success(memberProfileDTO);
30 } 30 }
31 31
......
1 package com.topdraw.business.process.rest; 1 package com.topdraw.business.process.rest;
2 2
3 import cn.hutool.core.util.ObjectUtil; 3 import cn.hutool.core.util.ObjectUtil;
4 import cn.hutool.core.util.StrUtil;
5 import com.alibaba.druid.support.json.JSONUtils;
6 import com.alibaba.fastjson.JSON;
7 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
8 import com.topdraw.annotation.AnonymousAccess; 5 import com.topdraw.annotation.AnonymousAccess;
9 import com.topdraw.annotation.Log; 6 import com.topdraw.annotation.Log;
10 import com.topdraw.business.module.member.profile.domain.MemberProfile; 7 import com.topdraw.business.module.member.profile.domain.MemberProfile;
11 import com.topdraw.business.module.member.service.dto.MemberDTO; 8 import com.topdraw.business.module.member.service.dto.MemberDTO;
12 import com.topdraw.business.module.user.iptv.domain.UserTv; 9 import com.topdraw.business.module.user.iptv.domain.UserTv;
13 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
14 import com.topdraw.business.module.user.weixin.domain.UserWeixin;
15 import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO; 10 import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
16 import com.topdraw.business.process.domian.TempIptvUser; 11 import com.topdraw.business.process.domian.TempIptvUser;
17 import com.topdraw.business.process.domian.UnbindGroup; 12 import com.topdraw.business.process.domian.UnbindGroup;
...@@ -22,7 +17,6 @@ import com.topdraw.business.process.service.UserOperationService; ...@@ -22,7 +17,6 @@ import com.topdraw.business.process.service.UserOperationService;
22 import com.topdraw.common.ResultInfo; 17 import com.topdraw.common.ResultInfo;
23 import com.topdraw.config.RedisKeyUtil; 18 import com.topdraw.config.RedisKeyUtil;
24 import com.topdraw.exception.BadRequestException; 19 import com.topdraw.exception.BadRequestException;
25 import com.topdraw.module.mq.DataSyncMsg;
26 import com.topdraw.util.JSONUtil; 20 import com.topdraw.util.JSONUtil;
27 import com.topdraw.utils.RedisUtils; 21 import com.topdraw.utils.RedisUtils;
28 import com.topdraw.utils.StringUtils; 22 import com.topdraw.utils.StringUtils;
...@@ -51,8 +45,6 @@ public class UserOperationController { ...@@ -51,8 +45,6 @@ public class UserOperationController {
51 @Autowired 45 @Autowired
52 private UserOperationService userTvOperationService; 46 private UserOperationService userTvOperationService;
53 @Autowired 47 @Autowired
54 private WeiXinRequestUtil weixinRequestUtil;
55 @Autowired
56 private RedisUtils redisUtils; 48 private RedisUtils redisUtils;
57 49
58 @Log("获取大屏绑定的小屏会员列表") 50 @Log("获取大屏绑定的小屏会员列表")
...@@ -155,6 +147,15 @@ public class UserOperationController { ...@@ -155,6 +147,15 @@ public class UserOperationController {
155 return ResultInfo.success(result); 147 return ResultInfo.success(result);
156 } 148 }
157 149
150 @Log("微信小程序绑定大屏")
151 @PostMapping("/appletBind")
152 @ApiOperation("微信小程序绑定大屏")
153 @AnonymousAccess
154 public ResultInfo appletBind(@Validated @RequestBody WeiXinUserBean resources) {
155 UserWeixinDTO result = this.userTvOperationService.appletBind(resources);
156 return ResultInfo.success(result);
157 }
158
158 @Log("微信公众号关注") 159 @Log("微信公众号关注")
159 @PostMapping("/subscribe") 160 @PostMapping("/subscribe")
160 @ApiOperation("微信公众号关注") 161 @ApiOperation("微信公众号关注")
......
...@@ -107,4 +107,11 @@ public interface UserOperationService { ...@@ -107,4 +107,11 @@ public interface UserOperationService {
107 * @return 107 * @return
108 */ 108 */
109 Object serviceLogin(WeiXinUserBean resources); 109 Object serviceLogin(WeiXinUserBean resources);
110
111 /**
112 * 小程序绑定大屏
113 * @param resources
114 * @return
115 */
116 UserWeixinDTO appletBind(WeiXinUserBean resources);
110 } 117 }
......
...@@ -475,7 +475,9 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -475,7 +475,9 @@ public class UserOperationServiceImpl implements UserOperationService {
475 // 保存或者修改,微信账户信息 475 // 保存或者修改,微信账户信息
476 UserWeixinDTO userWeixinDTO = this.doCreateUserWeiXin(userWeixin, memberId); 476 UserWeixinDTO userWeixinDTO = this.doCreateUserWeiXin(userWeixin, memberId);
477 477
478 return userWeixinDTO; 478 // 为了保证返回的同一用户
479 UserWeixinDTO userWeixinDTO_0 = this.getFirstId(userWeixinDTO);
480 return userWeixinDTO_0;
479 } 481 }
480 482
481 /** 483 /**
...@@ -1188,6 +1190,51 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1188,6 +1190,51 @@ public class UserOperationServiceImpl implements UserOperationService {
1188 return userWeixinDTO_0; 1190 return userWeixinDTO_0;
1189 } 1191 }
1190 1192
1193 @Override
1194 public UserWeixinDTO appletBind(WeiXinUserBean resources) {
1195 /*Optional<UserWeixin> userWeixinOptional = userWeixinRepository.findById(criteria.getId());
1196 if (!userWeixinOptional.isPresent()) {
1197 throw new EntityNotFoundException(UserWeixin.class, "id", criteria.getId().toString());
1198 }
1199 UserWeixin userWeixin = userWeixinOptional.get();
1200 Member weixinMember = userWeixin.getMember();
1201 String unionid = criteria.getUnionid();
1202
1203 Long personId = null;
1204
1205 // 前端先校验绑定状态,若已绑定会予以提示,进一步操作,可能会产生换绑
1206 // 小屏账号关联person,且已进行了授权
1207 if (ObjectUtil.isNull(weixinMember) && StrUtil.isNotBlank(unionid)) {
1208 //第一次绑定
1209 // 微信用户unionid为空,或者与传到unionid一致,否则报错
1210 Assert.state(StrUtil.isBlank(userWeixin.getUnionid()) || ObjectUtil.equals(userWeixin.getUnionid(), unionid), "用户信息有误,请重新授权");
1211
1212 userWeixin.setUnionid(unionid);
1213 Member member = getOrGenerateMobileMember(userWeixin, null);
1214 personId = member.getId();
1215 } else if (ObjectUtil.isNotNull(weixinMember)) {
1216 personId = weixinMember.getId();
1217 personCode = weixinMember.getCode();
1218 }
1219
1220 TvUserQueryCriteria tvUserQueryCriteria = new TvUserQueryCriteria();
1221 tvUserQueryCriteria.setPlatformAccount(criteria.getPlatformUserId());
1222 List<TvUserDTO> tvUsers = tvUserService.queryAll(tvUserQueryCriteria);
1223 // 理论上,大屏账号在创建/修改时,会同步到此侧,查不到可能是传值有误,或还未同步过来
1224 Assert.notEmpty(tvUsers, "大屏账号不存在,请检查或稍后重试");
1225 TvUser tvUser = tvUserMapper.toEntity(tvUsers.get(0));
1226
1227 // 更新关联的大屏账号
1228 // personService.updateBindTvUser(personCode, tvUser.getId());
1229 weixinMember.setUserIptvId(tvUser.getId());
1230 weixinMember.setBindIptvTime(new Timestamp(System.currentTimeMillis()));
1231 weixinMember.setBindIptvPlatformType(1);
1232 memberService.update(weixinMember);
1233 userWeixin.setMemberId(personId);
1234 update(userWeixin);*/
1235 return null;
1236 }
1237
1191 /** 1238 /**
1192 * 同一用户有多个微信APP的情况下展示同一个账户信息 1239 * 同一用户有多个微信APP的情况下展示同一个账户信息
1193 * 原则:那个先创建就用那个id 1240 * 原则:那个先创建就用那个id
......