| | |
| | | |
| | | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
| | | import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | |
| | | |
| | | @Override |
| | | public AccountResponse wxLogin(String code,String iamId){ |
| | | public AccountResponse wxLogin(String code,String userId){ |
| | | try { |
| | | // 获取微信敏感数据 |
| | | WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code); |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员"); |
| | | } |
| | | // String openId = code; |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId)); |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).isNotNull("phone")); |
| | | Users users = new Users(); |
| | | if(StringUtils.isBlank(iamId)){ |
| | | users = usersMapper.selectOne(new QueryWrapper<Users>().lambda() |
| | | .eq(Users::getIamId,iamId) |
| | | .last("limit 1") |
| | | ); |
| | | if(StringUtils.isNotBlank(userId)){ |
| | | users = usersMapper.selectById(userId); |
| | | } |
| | | if (member == null) { |
| | | member = new Member(); |
| | |
| | | member.setAuthStatus(Constants.ZERO); |
| | | } |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(Objects.isNull(ztUserGetTokenResponse)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); |
| | | }else{ |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | } |
| | | memberMapper.insert(member); |
| | | this.saveCustomerUser(users,member.getId()); |
| | | MemberServiceImpl.saveCustomerUser(customerUserMapper,users,member.getId()); |
| | | }else{ |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(Objects.isNull(ztUserGetTokenResponse)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); |
| | | }else{ |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | this.saveCustomerUser(users,member.getId()); |
| | | MemberServiceImpl.saveCustomerUser(customerUserMapper,users,member.getId()); |
| | | member = this.getMemberInfo(member.getId()); |
| | | |
| | | } |
| | | //创建token |
| | | JwtPayLoad payLoad = new JwtPayLoad(member.getId(),Constants.ZERO); |
| | | String token = JwtTokenUtil.generateToken(payLoad); |
| | | String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate); |
| | | AccountResponse accountResponse = new AccountResponse(); |
| | | accountResponse.setToken(token); |
| | | accountResponse.setSessionKey(session.getSessionKey()); |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员"); |
| | | } |
| | | |
| | | public void saveCustomerUser(Users users,Long memberId){ |
| | | if(!(Objects.nonNull(users)&&Objects.nonNull(memberId))){ |
| | | return; |
| | | } |
| | | if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda() |
| | | .eq(CustomerUser::getIsdeleted,Constants.ZERO) |
| | | .eq(CustomerUser::getUserId,users.getId()) |
| | | .eq(CustomerUser::getMemberId,memberId)) <= Constants.ZERO ){ |
| | | CustomerUser customerUser = new CustomerUser(); |
| | | customerUser.setUserId(users.getId()); |
| | | customerUser.setCreateDate(new Date()); |
| | | customerUser.setMemberId(memberId); |
| | | customerUser.setPhone(users.getPhone()); |
| | | customerUser.setIamUserId(users.getIamId()); |
| | | customerUser.setName(users.getName()); |
| | | customerUser.setUsername(users.getIamUsername()); |
| | | customerUser.setAddr(users.getShopAddress()); |
| | | customerUserMapper.insert(customerUser); |
| | | //TODO 等待调起中台接口 |
| | | public static void saveCustomerUser(CustomerUserMapper customerUserMapper,Users users,Long memberId){ |
| | | if(Objects.nonNull(users)&&Objects.nonNull(memberId)) { |
| | | if (customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda() |
| | | .eq(CustomerUser::getIsdeleted, Constants.ZERO) |
| | | .eq(CustomerUser::getUserId, users.getId()) |
| | | .eq(CustomerUser::getMemberId, memberId)) <= Constants.ZERO) { |
| | | CustomerUser customerUser = new CustomerUser(); |
| | | customerUser.setUserId(users.getId()); |
| | | customerUser.setCreateDate(new Date()); |
| | | customerUser.setMemberId(memberId); |
| | | customerUser.setPhone(users.getPhone()); |
| | | customerUser.setIamUserId(users.getIamId()); |
| | | customerUser.setName(users.getName()); |
| | | customerUser.setUsername(users.getIamUsername()); |
| | | customerUser.setAddr(users.getShopAddress()); |
| | | customerUserMapper.insert(customerUser); |
| | | //TODO 等待调起中台接口 |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(member.getHousetype())); |
| | | ZTBaseResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest); |
| | | if(Objects.isNull(userUpdateInfo)||userUpdateInfo.getCode()!=200){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台信息更新失败,请联系管理员"); |
| | | return null; |
| | | } |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = (ZTUserGetTokenResponse) userUpdateInfo.getData(); |
| | | return ztUserGetTokenResponse; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public Member getMemberInfo(Long memberId){ |
| | |
| | | // .set(Member::getTokenDate,date)//默认有效期为两小时 |
| | | .eq(Member::getId,member.getId())); |
| | | ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); |
| | | }else{ |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员"); |
| | | } |
| | | } |
| | | ztBaseInfoResponse.setToken(member.getToken()); |
| | |
| | | ztBaseInfoResponse.setUserType(ZTConstants.BUSINESS); |
| | | ztBaseInfoResponse.setOpenId(users.getOpenid()); |
| | | if(Objects.isNull(users.getTokenDate()) || users.getTokenDate().getTime()<=System.currentTimeMillis() ){ |
| | | ZTUserGetTokenRequest param = new ZTUserGetTokenRequest(); |
| | | //查询APPID |
| | | String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); |
| | | param.setAppId(appId); |
| | | param.setOpenId(users.getOpenid()); |
| | | ZTSysuserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getSysuserToken(users.getPhone()); |
| | | if(Objects.nonNull(ztUserGetTokenResponse)){ |
| | | users.setToken(ztUserGetTokenResponse.getToken()); |
| | |
| | | .eq(Users::getId,users.getId())); |
| | | ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); |
| | | return ztBaseInfoResponse; |
| | | }else{ |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员"); |
| | | } |
| | | } |
| | | ztBaseInfoResponse.setToken(users.getToken()); |
| | | // return ztBaseInfoResponse; |
| | | }else{ |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"参数错误"); |
| | | } |
| | | return ztBaseInfoResponse; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public ZTBaseRequst logOff(Long memberId){ |
| | | public ZTBaseRequst logOff(Long memberId,String token){ |
| | | Member member = memberMapper.selectById(memberId); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(StringUtils.isBlank(member.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已注销"); |
| | | } |
| | | //校验用户token信息 |
| | | MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId(),ZTConstants.CUSTOMER); |
| | |
| | | ztBaseRequst.setOpenId(member.getOpenid()); |
| | | ztBaseRequst.setToken(member.getToken()); |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda() |
| | | .set(Member::getOpenid,null) |
| | | .set(Member::getPhone,null) |
| | | .set(Member::getEditDate,new Date()) |
| | | .eq(Member::getId,member.getId()) |
| | | .eq(Member::getOpenid,member.getOpenid()) |
| | | ); |
| | | redisTemplate.delete(token); |
| | | return ztBaseRequst; |
| | | } |
| | | |