| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.InterfaceLog; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.service.business.MemberService; |
| | | 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; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.biz.zbom.ZbomZhongTaiService; |
| | | import com.doumee.biz.zbom.model.zhongtai.ZTBaseRequst; |
| | | import com.doumee.biz.zbom.model.zhongtai.ZTConstants; |
| | | import com.doumee.biz.zbom.model.zhongtai.ZTUserGetTokenRequest; |
| | | import com.doumee.biz.zbom.model.zhongtai.ZTUserInfoUpdateRequest; |
| | | import com.doumee.biz.zbom.model.zhongtai.response.ZTBaseResponse; |
| | | import com.doumee.biz.zbom.model.zhongtai.response.ZTCustomerBindingUsersRequest; |
| | | import com.doumee.biz.zbom.model.zhongtai.response.ZTSysuserGetTokenResponse; |
| | | import com.doumee.biz.zbom.model.zhongtai.response.ZTUserGetTokenResponse; |
| | | import com.doumee.config.Jwt.JwtPayLoad; |
| | | import com.doumee.config.Jwt.JwtTokenUtil; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.CodeVerifyUtils; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.core.wx.WxMiniConfig; |
| | | import com.doumee.dao.business.CustomerUserMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.UsersMapper; |
| | | import com.doumee.dao.business.model.CustomerUser; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Users; |
| | | import com.doumee.dao.web.reqeust.EditMemberRequest; |
| | | import com.doumee.dao.web.reqeust.WxPhoneRequest; |
| | | import com.doumee.dao.web.response.AccountResponse; |
| | | import com.doumee.dao.web.response.ZTBaseInfoResponse; |
| | | import com.doumee.service.business.MemberService; |
| | | import me.chanjar.weixin.common.error.WxErrorException; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 用户信息表Service实现 |
| | |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private UsersMapper usersMapper; |
| | | |
| | | @Autowired |
| | | private CustomerUserMapper customerUserMapper; |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | @Autowired |
| | | private ZbomZhongTaiService zbomZhongTaiService; |
| | | |
| | | @Autowired |
| | | private RedisTemplate<String,Object> redisTemplate; |
| | | |
| | | @Override |
| | | public Long create(Member member) { |
| | |
| | | if (pageWrap.getModel().getAreaName() != null) { |
| | | queryWrapper.lambda().eq(Member::getAreaName, pageWrap.getModel().getAreaName()); |
| | | } |
| | | if (pageWrap.getModel().getProvicneCode() != null) { |
| | | queryWrapper.lambda().eq(Member::getProvicneCode, pageWrap.getModel().getProvicneCode()); |
| | | if (pageWrap.getModel().getProvinceCode() != null) { |
| | | queryWrapper.lambda().eq(Member::getProvinceCode, pageWrap.getModel().getProvinceCode()); |
| | | } |
| | | if (pageWrap.getModel().getCityCode() != null) { |
| | | queryWrapper.lambda().eq(Member::getCityCode, pageWrap.getModel().getCityCode()); |
| | |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | return memberMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public AccountResponse wxLogin(String code,String userId){ |
| | | try { |
| | | // 获取微信敏感数据 |
| | | WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code); |
| | | String openId = session.getOpenid(); |
| | | if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员"); |
| | | } |
| | | // String openId = code; |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId) |
| | | .last(" limit 1 ")); |
| | | Users users = null; |
| | | if(StringUtils.isNotBlank(userId)){ |
| | | users = usersMapper.selectById(userId); |
| | | } |
| | | if (member == null) { |
| | | member = new Member(); |
| | | member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4)); |
| | | member.setCreateDate(new Date()); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setOpenid(openId); |
| | | member.setType(Constants.ZERO); |
| | | member.setAuthStatus(Constants.ZERO); |
| | | member.setStatus(Constants.ZERO); |
| | | //如果绑定了导购 则直接使用已绑定导购信息 跳过手机号绑定的状态 |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken())); |
| | | MemberServiceImpl.saveCustomerUser(zbomZhongTaiService,customerUserMapper,null,users,member); |
| | | } |
| | | memberMapper.insert(member); |
| | | }else{ |
| | | ZTBaseInfoResponse ztBaseInfoResponse = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz, |
| | | member.getId(),ZTConstants.CUSTOMER); |
| | | if(!Objects.isNull(ztBaseInfoResponse)){ |
| | | member.setToken(ztBaseInfoResponse.getToken()); |
| | | member.setZtUserId(StringUtils.defaultString(ztBaseInfoResponse.getZtUserId(),ztBaseInfoResponse.getToken())); |
| | | Member update = new Member(); |
| | | update.setZtUserId(StringUtils.defaultString(ztBaseInfoResponse.getZtUserId(),ztBaseInfoResponse.getToken())); |
| | | update.setToken(member.getToken()); |
| | | update.setToken(member.getToken()); |
| | | update.setId(member.getId()); |
| | | update.setAuthStatus(member.getAuthStatus()); |
| | | MemberServiceImpl.saveCustomerUser(zbomZhongTaiService,customerUserMapper,null,users,member); |
| | | memberMapper.updateById(update);//缓存中台token信息 |
| | | } |
| | | member = this.getMemberInfo(member.getId()); |
| | | } |
| | | String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate); |
| | | AccountResponse accountResponse = new AccountResponse(); |
| | | accountResponse.setToken(token); |
| | | accountResponse.setSessionKey(session.getSessionKey()); |
| | | accountResponse.setMember(member); |
| | | return accountResponse; |
| | | } catch (WxErrorException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员"); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public AccountResponse testLogin(String openid){ |
| | | String openId = openid; |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId)); |
| | | if (member == null) { |
| | | member = new Member(); |
| | | member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4)); |
| | | member.setCreateDate(new Date()); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setOpenid(openId); |
| | | member.setType(Constants.ZERO); |
| | | //如果绑定了导购 则直接使用已绑定导购信息 跳过手机号绑定的状态 |
| | | member.setAuthStatus(Constants.ZERO); |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken())); |
| | | } |
| | | memberMapper.insert(member); |
| | | }else{ |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken())); |
| | | memberMapper.updateById(member); |
| | | } |
| | | member = this.getMemberInfo(member.getId()); |
| | | } |
| | | String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate); |
| | | AccountResponse accountResponse = new AccountResponse(); |
| | | accountResponse.setToken(token); |
| | | accountResponse.setMember(member); |
| | | return accountResponse; |
| | | } |
| | | |
| | | // public static void saveCustomerUser(ZbomZhongTaiService zbomZhongTaiService,CustomerUserMapper customerUserMapper,Users users,Member member){ |
| | | // if(Objects.nonNull(users)&&Objects.nonNull(member.getId())) { |
| | | // CustomerUser customerUser = null; |
| | | // if (customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda() |
| | | // .eq(CustomerUser::getIsdeleted, Constants.ZERO) |
| | | // .eq(CustomerUser::getUserId, users.getId()) |
| | | // .eq(CustomerUser::getMemberId, member.getId()) |
| | | // ) <= Constants.ZERO) { |
| | | // customerUser = new CustomerUser(); |
| | | // customerUser.setIsdeleted(Constants.ZERO); |
| | | // customerUser.setUserId(users.getId()); |
| | | // customerUser.setCreateDate(new Date()); |
| | | // customerUser.setMemberId(member.getId()); |
| | | // customerUser.setPhone(users.getPhone()); |
| | | // customerUser.setIamUserId(users.getIamId()); |
| | | // customerUser.setName(users.getName()); |
| | | // customerUser.setUsername(users.getIamUsername()); |
| | | // customerUser.setAddr(users.getShopAddress()); |
| | | // } |
| | | // //等待调起中台接口 |
| | | // ZTCustomerBindingUsersRequest ztCustomerBindingUsersRequest = new ZTCustomerBindingUsersRequest(); |
| | | // ztCustomerBindingUsersRequest.setName(member.getName()); |
| | | // ztCustomerBindingUsersRequest.setNickName(member.getNickname()); |
| | | // ztCustomerBindingUsersRequest.setPhone(member.getPhone()); |
| | | // ztCustomerBindingUsersRequest.setAvatarUrl(member.getImgurl()); |
| | | // ztCustomerBindingUsersRequest.setUptown(member.getDistrict()); |
| | | // ztCustomerBindingUsersRequest.setFullAddress(member.getAddress()); |
| | | // if(Objects.nonNull(member.getHousearea())){ |
| | | // ztCustomerBindingUsersRequest.setHouseArea(member.getHousearea().toString()); |
| | | // } |
| | | // ztCustomerBindingUsersRequest.setOpenId(member.getOpenid()); |
| | | // ztCustomerBindingUsersRequest.setToken(member.getToken()); |
| | | // ztCustomerBindingUsersRequest.setUserType(ZTConstants.CUSTOMER); |
| | | // ztCustomerBindingUsersRequest.setSourceCustomerId(member.getId().toString()); |
| | | // ztCustomerBindingUsersRequest.setDaoGouUserId(users.getIamId()); |
| | | // ztCustomerBindingUsersRequest.setDaoGouAccount(users.getIamUsername()); |
| | | // ztCustomerBindingUsersRequest.setPlatSource("2"); |
| | | // ZTBaseResponse ztBaseResponse = zbomZhongTaiService.customerBinDingUsers(ztCustomerBindingUsersRequest); |
| | | // if(Objects.nonNull(customerUser)){ |
| | | // if(Objects.nonNull(ztBaseResponse)){ |
| | | // if(ztBaseResponse.getSuccess()){ |
| | | // customerUser.setZtStatus(1); |
| | | // customerUser.setZtDate(new Date()); |
| | | // }else{ |
| | | // customerUser.setZtStatus(2); |
| | | // customerUser.setZtDate(new Date()); |
| | | // customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse)); |
| | | // } |
| | | // } else{ |
| | | // customerUser.setZtStatus(2); |
| | | // customerUser.setZtDate(new Date()); |
| | | // customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse)); |
| | | // } |
| | | // customerUserMapper.insert(customerUser); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | |
| | | public static void saveCustomerUser(ZbomZhongTaiService zbomZhongTaiService, CustomerUserMapper customerUserMapper, MemberMapper memberMapper,Users users, Member member) { |
| | | if (Objects.nonNull(users) && Objects.nonNull(member.getId())) { |
| | | CustomerUser customerUser = customerUserMapper.selectOne(new QueryWrapper<CustomerUser>().lambda() |
| | | .eq(CustomerUser::getIsdeleted, Constants.ZERO) |
| | | .eq(CustomerUser::getUserId, users.getId()) |
| | | .eq(CustomerUser::getMemberId, member.getId()) |
| | | .orderByDesc(CustomerUser::getCreateDate) |
| | | .last(" limit 1") |
| | | ); |
| | | if (Objects.isNull(customerUser)) { |
| | | customerUser = new CustomerUser(); |
| | | customerUser.setIsdeleted(Constants.ZERO); |
| | | customerUser.setUserId(users.getId()); |
| | | customerUser.setCreateDate(new Date()); |
| | | customerUser.setMemberId(member.getId()); |
| | | customerUser.setPhone(users.getPhone()); |
| | | customerUser.setIamUserId(users.getIamId()); |
| | | customerUser.setName(users.getName()); |
| | | customerUser.setUsername(users.getIamUsername()); |
| | | customerUser.setAddr(users.getShopAddress()); |
| | | } |
| | | ZTBaseResponse ztBaseResponse = null; |
| | | if ( !Constants.equalsInteger(customerUser.getZtStatus(),Constants.ONE)) { |
| | | ztBaseResponse = syncZtCustomerUserSendRequest(zbomZhongTaiService,memberMapper,member, users,customerUser); |
| | | } |
| | | //未绑定过 |
| | | if (Objects.isNull(customerUser.getId())) { |
| | | customerUserMapper.insert(customerUser); |
| | | member.setAuthStatus(Constants.TWO); |
| | | } else if(ztBaseResponse !=null) { |
| | | member.setAuthStatus(Constants.TWO); |
| | | customerUserMapper.updateById(customerUser); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private static ZTBaseResponse syncZtCustomerUserSendRequest(ZbomZhongTaiService zbomZhongTaiService,MemberMapper memberMapper, Member member, Users users,CustomerUser customerUser) { |
| | | ZTBaseResponse ztBaseResponse = MemberServiceImpl.syncZtCustomerUser(zbomZhongTaiService,member, users); |
| | | customerUser.setZtStatus(2); |
| | | customerUser.setZtInfo(JSONObject.toJSONString(ztBaseResponse)); |
| | | if (Objects.nonNull(ztBaseResponse) && ztBaseResponse.getSuccess()) { |
| | | customerUser.setZtStatus(1);//同步成功 |
| | | member.setAuthStatus(Constants.TWO);//用户导购绑定状态 |
| | | if(memberMapper!=null){ |
| | | //如果需要更新用户绑定导购状态 |
| | | Member update = new Member(); |
| | | update.setAuthStatus(Constants.TWO); |
| | | update.setEditDate(new Date()); |
| | | update.setId(member.getId()); |
| | | memberMapper.updateById(update);//更新用户同步状态 |
| | | } |
| | | |
| | | } |
| | | return ztBaseResponse; |
| | | } |
| | | |
| | | |
| | | public static ZTBaseResponse syncZtCustomerUser(ZbomZhongTaiService zbomZhongTaiService,Member member,Users users){ |
| | | //等待调起中台接口 |
| | | ZTCustomerBindingUsersRequest ztCustomerBindingUsersRequest = new ZTCustomerBindingUsersRequest(); |
| | | ztCustomerBindingUsersRequest.setName(member.getName()); |
| | | ztCustomerBindingUsersRequest.setNickName(member.getNickname()); |
| | | ztCustomerBindingUsersRequest.setPhone(member.getPhone()); |
| | | ztCustomerBindingUsersRequest.setAvatarUrl(member.getImgurl()); |
| | | ztCustomerBindingUsersRequest.setUptown(member.getDistrict()); |
| | | ztCustomerBindingUsersRequest.setFullAddress(member.getAddress()); |
| | | if(Objects.nonNull(member.getHousearea())){ |
| | | ztCustomerBindingUsersRequest.setHouseArea(member.getHousearea().toString()); |
| | | } |
| | | ztCustomerBindingUsersRequest.setOpenId(member.getOpenid()); |
| | | ztCustomerBindingUsersRequest.setToken(member.getToken()); |
| | | ztCustomerBindingUsersRequest.setUserType(ZTConstants.CUSTOMER); |
| | | ztCustomerBindingUsersRequest.setSourceCustomerId(member.getId().toString()); |
| | | ztCustomerBindingUsersRequest.setDaoGouUserId(users.getIamId()); |
| | | ztCustomerBindingUsersRequest.setDaoGouAccount(users.getIamUsername()); |
| | | ztCustomerBindingUsersRequest.setPlatSource("2"); |
| | | ZTBaseResponse ztBaseResponse = zbomZhongTaiService.customerBinDingUsers(ztCustomerBindingUsersRequest); |
| | | return ztBaseResponse; |
| | | } |
| | | |
| | | @Override |
| | | public String getWxMiniPhone(WxPhoneRequest wxPhoneRequest){ |
| | | try { |
| | | WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxCustomerService.getUserService().getPhoneNoInfo( |
| | | wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv()); |
| | | //获取手机号 |
| | | String phone= userPhoneInfo.getPurePhoneNumber(); |
| | | if(Objects.isNull(phone)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未获取到手机号"); |
| | | } |
| | | return phone; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取手机号失败"); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Member updMemberDetail(EditMemberRequest editMemberRequest){ |
| | | Member member = memberMapper.selectById(editMemberRequest.getId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(Objects.isNull(editMemberRequest)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | BeanUtils.copyProperties(editMemberRequest,member); |
| | | //同步中台用户信息 |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken())); |
| | | } |
| | | if(StringUtils.isNotBlank(member.getPhone())){ |
| | | if(!Constants.equalsInteger(member.getPhone().length(),11)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"手机号错误!"); |
| | | } |
| | | if(Constants.equalsInteger(member.getAuthStatus(),Constants.ZERO)){ |
| | | member.setAuthStatus(Constants.ONE); |
| | | } |
| | | } |
| | | memberMapper.updateById(member); |
| | | return this.getMemberInfo(member.getId()); |
| | | } |
| | | |
| | | @Override |
| | | public Member updMemberPhone(EditMemberRequest editMemberRequest){ |
| | | if(Objects.isNull(editMemberRequest)||StringUtils.isBlank(editMemberRequest.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda().set(Member::getPhone,null) |
| | | .set(Member::getEditDate,new Date()) |
| | | .ne(Member::getId,editMemberRequest.getId()) |
| | | .eq(Member::getPhone,editMemberRequest.getPhone())); |
| | | |
| | | Member member = memberMapper.selectById(editMemberRequest.getId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | Member memberDto = new Member(); |
| | | BeanUtils.copyProperties(editMemberRequest,memberDto); |
| | | memberDto.setOpenid(member.getOpenid()); |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto); |
| | | if(!Objects.isNull(ztUserGetTokenResponse)){ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | member.setZtUserId(StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken())); |
| | | } |
| | | if(Constants.equalsInteger(member.getAuthStatus(),Constants.ZERO)){ |
| | | memberDto.setAuthStatus(Constants.ONE); |
| | | } |
| | | memberMapper.updateById(memberDto); |
| | | return this.getMemberInfo(member.getId()); |
| | | } |
| | | |
| | | |
| | | public static ZTUserGetTokenResponse syncZhongTaiUserNew(Member member,SystemDictDataBiz systemDictDataBiz,ZbomZhongTaiService zbomZhongTaiService){ |
| | | ZTUserInfoUpdateRequest ztUserInfoUpdateRequest = new ZTUserInfoUpdateRequest(); |
| | | ztUserInfoUpdateRequest.setOpenId(member.getOpenid()); |
| | | String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); |
| | | ztUserInfoUpdateRequest.setAppId(appId); |
| | | ztUserInfoUpdateRequest.setPlatform(Constants.PLATFORM); |
| | | ztUserInfoUpdateRequest.setPhone(member.getPhone()); |
| | | ztUserInfoUpdateRequest.setName(member.getName()); |
| | | ztUserInfoUpdateRequest.setNickName(member.getNickname()); |
| | | if(StringUtils.isNotBlank(member.getProvinceName()) |
| | | && StringUtils.isNotBlank(member.getCityName()) |
| | | && StringUtils.isNotBlank(member.getAreaName())){ |
| | | ztUserInfoUpdateRequest.setAddress(member.getProvinceName()+member.getCityName()+member.getAreaName()); |
| | | } |
| | | ztUserInfoUpdateRequest.setProvince(member.getProvinceCode()); |
| | | ztUserInfoUpdateRequest.setCity(member.getCityCode()); |
| | | ztUserInfoUpdateRequest.setCounty(member.getAreaCode()); |
| | | ztUserInfoUpdateRequest.setFullAddress(member.getAddress()); |
| | | String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode(); |
| | | if(StringUtils.isNotBlank(member.getImgurl())){ |
| | | ztUserInfoUpdateRequest.setAvatarUrl(prefix + member.getImgurl()); |
| | | } |
| | | ztUserInfoUpdateRequest.setUptown(member.getDistrict()); |
| | | if(Objects.nonNull(member.getHousearea())){ |
| | | ztUserInfoUpdateRequest.setHouseArea(member.getHousearea().toString()); |
| | | } |
| | | ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(member.getHousetype())); |
| | | ZTBaseResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest); |
| | | if(Objects.isNull(userUpdateInfo)||userUpdateInfo.getCode()!=200){ |
| | | return null; |
| | | } |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = (ZTUserGetTokenResponse) userUpdateInfo.getData(); |
| | | return ztUserGetTokenResponse; |
| | | } |
| | | public ZTUserGetTokenResponse syncZhongTaiUser(Member member){ |
| | | ZTUserInfoUpdateRequest ztUserInfoUpdateRequest = new ZTUserInfoUpdateRequest(); |
| | | ztUserInfoUpdateRequest.setOpenId(member.getOpenid()); |
| | | String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); |
| | | ztUserInfoUpdateRequest.setAppId(appId); |
| | | ztUserInfoUpdateRequest.setPlatform(Constants.PLATFORM); |
| | | ztUserInfoUpdateRequest.setPhone(member.getPhone()); |
| | | ztUserInfoUpdateRequest.setName(member.getName()); |
| | | ztUserInfoUpdateRequest.setNickName(member.getNickname()); |
| | | |
| | | if(StringUtils.isNotBlank(member.getProvinceName()) |
| | | && StringUtils.isNotBlank(member.getCityName()) |
| | | && StringUtils.isNotBlank(member.getAreaName())){ |
| | | ztUserInfoUpdateRequest.setAddress(member.getProvinceName()+member.getCityName()+member.getAreaName()); |
| | | } |
| | | ztUserInfoUpdateRequest.setProvince(member.getProvinceCode()); |
| | | ztUserInfoUpdateRequest.setCity(member.getCityCode()); |
| | | ztUserInfoUpdateRequest.setCounty(member.getAreaCode()); |
| | | |
| | | ztUserInfoUpdateRequest.setFullAddress(member.getAddress()); |
| | | String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode(); |
| | | if(StringUtils.isNotBlank(member.getImgurl())){ |
| | | ztUserInfoUpdateRequest.setAvatarUrl(prefix + member.getImgurl()); |
| | | } |
| | | ztUserInfoUpdateRequest.setUptown(member.getDistrict()); |
| | | if(Objects.nonNull(member.getHousearea())){ |
| | | ztUserInfoUpdateRequest.setHouseArea(member.getHousearea().toString()); |
| | | } |
| | | ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(member.getHousetype())); |
| | | ZTBaseResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest); |
| | | if(Objects.isNull(userUpdateInfo)||userUpdateInfo.getCode()!=200){ |
| | | return null; |
| | | } |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = (ZTUserGetTokenResponse) userUpdateInfo.getData(); |
| | | return ztUserGetTokenResponse; |
| | | } |
| | | |
| | | @Override |
| | | public Member getMemberInfo(Long memberId){ |
| | | Member member = memberMapper.selectById(memberId); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode(); |
| | | member.setPrefix(prefix); |
| | | /* if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>() |
| | | .lambda().eq(CustomerUser::getIsdeleted,Constants.ZERO).eq(CustomerUser::getZtStatus,Constants.ONE).eq(CustomerUser::getMemberId,member.getId()))>0){ |
| | | member.setAuthStatus(Constants.TWO); |
| | | }else{ |
| | | if(StringUtils.isBlank(member.getPhone())){ |
| | | member.setAuthStatus(Constants.ZERO); |
| | | }else{ |
| | | member.setAuthStatus(Constants.ONE); |
| | | } |
| | | }*/ |
| | | return member; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public static ZTBaseInfoResponse getZTToken(ZbomZhongTaiService zbomZhongTaiService, |
| | | MemberMapper memberMapper, UsersMapper usersMapper, SystemDictDataBiz systemDictDataBiz, Long id, String userType){ |
| | | ZTBaseInfoResponse ztBaseInfoResponse = new ZTBaseInfoResponse(); |
| | | if(userType.equals(ZTConstants.CUSTOMER)){ |
| | | Member member = memberMapper.selectById(id); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | ztBaseInfoResponse.setUserType(ZTConstants.CUSTOMER); |
| | | ztBaseInfoResponse.setOpenId(member.getOpenid()); |
| | | //如果无有效期/已过期 重新获取 |
| | | if(Objects.isNull(member.getZtUserId()) ||Objects.isNull(member.getTokenDate()) || member.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(member.getOpenid()); |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse =null; |
| | | if(StringUtils.isNotBlank(member.getZtUserId())){ |
| | | //如果是已同步的用户 |
| | | ztUserGetTokenResponse = zbomZhongTaiService.getUserToken(param); |
| | | } |
| | | if(ztUserGetTokenResponse == null){ |
| | | //如果获取失败,尝试重新同步重新获取 |
| | | ztUserGetTokenResponse = syncZhongTaiUserNew(member,systemDictDataBiz,zbomZhongTaiService); |
| | | } |
| | | if(Objects.nonNull(ztUserGetTokenResponse)){ |
| | | // Date date =new Date(System.currentTimeMillis()+(Constants.formatLongNum(ztUserGetTokenResponse.getExpire())<=0?2*60*60*1000:ztUserGetTokenResponse.getExpire()*1000)); |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda() |
| | | .set(Member::getToken,ztUserGetTokenResponse.getToken()) |
| | | .set(Member::getZtUserId,StringUtils.defaultString(ztUserGetTokenResponse.getZtUserId(),ztUserGetTokenResponse.getToken())) |
| | | // .set(Member::getTokenDate,date)//默认有效期为两小时 |
| | | .eq(Member::getId,member.getId())); |
| | | ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); |
| | | } |
| | | } |
| | | ztBaseInfoResponse.setToken(member.getToken()); |
| | | return ztBaseInfoResponse; |
| | | }else if(userType.equals(ZTConstants.BUSINESS)){ |
| | | Users users = usersMapper.selectById(id); |
| | | if(Objects.isNull(users)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | ztBaseInfoResponse.setUserType(ZTConstants.BUSINESS); |
| | | ztBaseInfoResponse.setOpenId(users.getOpenid()); |
| | | if(Objects.isNull(users.getTokenDate()) || users.getTokenDate().getTime()<=System.currentTimeMillis() ){ |
| | | ZTSysuserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getSysuserToken(users.getPhone()); |
| | | if(Objects.nonNull(ztUserGetTokenResponse)){ |
| | | users.setToken(ztUserGetTokenResponse.getToken()); |
| | | Date date =new Date(System.currentTimeMillis()+(Constants.formatLongNum(ztUserGetTokenResponse.getExpire())<=0?2*60*60*1000:ztUserGetTokenResponse.getExpire()*1000)); |
| | | usersMapper.update(new UpdateWrapper<Users>().lambda().set(Users::getToken,ztUserGetTokenResponse.getToken()) |
| | | .set(Users::getTokenDate,date)//默认有效期为两小时 |
| | | .eq(Users::getId,users.getId())); |
| | | ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); |
| | | return ztBaseInfoResponse; |
| | | } |
| | | } |
| | | ztBaseInfoResponse.setToken(users.getToken()); |
| | | } |
| | | return ztBaseInfoResponse; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public ZTBaseRequst logOff(Long memberId,String token){ |
| | | Member member = memberMapper.selectById(memberId); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | //校验用户token信息 |
| | | MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId(),ZTConstants.CUSTOMER); |
| | | //调起中台注销接口 |
| | | ZTBaseRequst ztBaseRequst = new ZTBaseRequst(); |
| | | ztBaseRequst.setUserType(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::getOpenid,member.getOpenid()) |
| | | ); |
| | | redisTemplate.delete(token); |
| | | return ztBaseRequst; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |