Commit b8ba18e4 b8ba18e43b6e49cbcd5390d6c5b7a1abc929e67a by xianghan@topdraw.cn

1.添加小程序绑定事件

1 parent 3a9035d7
......@@ -22,13 +22,13 @@ import io.swagger.annotations.*;
import java.util.Objects;
/**
* @author XiangHan /api/MemberRelatedInfo
* @author XiangHan
* @date 2021-10-22
*/
@Slf4j
@Api(tags = "MemberRelatedInfo管理")
@RestController
@RequestMapping("/ucEngine/api/MemberRelatedInfo")
@RequestMapping("/ucEngine/api/memberRelatedInfoController")
@CrossOrigin
public class MemberRelatedInfoController {
......
......@@ -15,17 +15,17 @@ import org.springframework.web.bind.annotation.*;
@Api("会员处理")
@RestController
@RequestMapping(value = "/ucEngine/api/memberOperation")
@RequestMapping(value = "/ucEngine/api/memberOperationController")
public class MemberOperationController {
@Autowired
private MemberOperationService memberOperationService;
@Log("获取会员加密信息并且检查vip状态")
@GetMapping("/getMemberProfileAndCheckVip/{memberId}/{appid}")
@GetMapping("/getMemberProfileAndCheckVip/{appId}/{memberId}")
@ApiOperation("获取会员加密信息并且检查vip状态")
public IResultInfo getMemberProfileAndCheckVip(@PathVariable Long memberId, @PathVariable String appid) {
MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appid);
public IResultInfo getMemberProfileAndCheckVip(@PathVariable(value = "appId") String appId, @PathVariable(value = "memberId") Long memberId) {
MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId);
return ResultInfo.success(memberProfileDTO);
}
......
package com.topdraw.business.process.rest;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.TempIptvUser;
import com.topdraw.business.process.domian.UnbindGroup;
......@@ -22,7 +17,6 @@ import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.config.RedisKeyUtil;
import com.topdraw.exception.BadRequestException;
import com.topdraw.module.mq.DataSyncMsg;
import com.topdraw.util.JSONUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.StringUtils;
......@@ -51,8 +45,6 @@ public class UserOperationController {
@Autowired
private UserOperationService userTvOperationService;
@Autowired
private WeiXinRequestUtil weixinRequestUtil;
@Autowired
private RedisUtils redisUtils;
@Log("获取大屏绑定的小屏会员列表")
......@@ -155,6 +147,15 @@ public class UserOperationController {
return ResultInfo.success(result);
}
@Log("微信小程序绑定大屏")
@PostMapping("/appletBind")
@ApiOperation("微信小程序绑定大屏")
@AnonymousAccess
public ResultInfo appletBind(@Validated @RequestBody WeiXinUserBean resources) {
UserWeixinDTO result = this.userTvOperationService.appletBind(resources);
return ResultInfo.success(result);
}
@Log("微信公众号关注")
@PostMapping("/subscribe")
@ApiOperation("微信公众号关注")
......
......@@ -107,4 +107,11 @@ public interface UserOperationService {
* @return
*/
Object serviceLogin(WeiXinUserBean resources);
/**
* 小程序绑定大屏
* @param resources
* @return
*/
UserWeixinDTO appletBind(WeiXinUserBean resources);
}
......
......@@ -475,7 +475,9 @@ public class UserOperationServiceImpl implements UserOperationService {
// 保存或者修改,微信账户信息
UserWeixinDTO userWeixinDTO = this.doCreateUserWeiXin(userWeixin, memberId);
return userWeixinDTO;
// 为了保证返回的同一用户
UserWeixinDTO userWeixinDTO_0 = this.getFirstId(userWeixinDTO);
return userWeixinDTO_0;
}
/**
......@@ -1188,6 +1190,51 @@ public class UserOperationServiceImpl implements UserOperationService {
return userWeixinDTO_0;
}
@Override
public UserWeixinDTO appletBind(WeiXinUserBean resources) {
/*Optional<UserWeixin> userWeixinOptional = userWeixinRepository.findById(criteria.getId());
if (!userWeixinOptional.isPresent()) {
throw new EntityNotFoundException(UserWeixin.class, "id", criteria.getId().toString());
}
UserWeixin userWeixin = userWeixinOptional.get();
Member weixinMember = userWeixin.getMember();
String unionid = criteria.getUnionid();
Long personId = null;
// 前端先校验绑定状态,若已绑定会予以提示,进一步操作,可能会产生换绑
// 小屏账号关联person,且已进行了授权
if (ObjectUtil.isNull(weixinMember) && StrUtil.isNotBlank(unionid)) {
//第一次绑定
// 微信用户unionid为空,或者与传到unionid一致,否则报错
Assert.state(StrUtil.isBlank(userWeixin.getUnionid()) || ObjectUtil.equals(userWeixin.getUnionid(), unionid), "用户信息有误,请重新授权");
userWeixin.setUnionid(unionid);
Member member = getOrGenerateMobileMember(userWeixin, null);
personId = member.getId();
} else if (ObjectUtil.isNotNull(weixinMember)) {
personId = weixinMember.getId();
personCode = weixinMember.getCode();
}
TvUserQueryCriteria tvUserQueryCriteria = new TvUserQueryCriteria();
tvUserQueryCriteria.setPlatformAccount(criteria.getPlatformUserId());
List<TvUserDTO> tvUsers = tvUserService.queryAll(tvUserQueryCriteria);
// 理论上,大屏账号在创建/修改时,会同步到此侧,查不到可能是传值有误,或还未同步过来
Assert.notEmpty(tvUsers, "大屏账号不存在,请检查或稍后重试");
TvUser tvUser = tvUserMapper.toEntity(tvUsers.get(0));
// 更新关联的大屏账号
// personService.updateBindTvUser(personCode, tvUser.getId());
weixinMember.setUserIptvId(tvUser.getId());
weixinMember.setBindIptvTime(new Timestamp(System.currentTimeMillis()));
weixinMember.setBindIptvPlatformType(1);
memberService.update(weixinMember);
userWeixin.setMemberId(personId);
update(userWeixin);*/
return null;
}
/**
* 同一用户有多个微信APP的情况下展示同一个账户信息
* 原则:那个先创建就用那个id
......