| | |
| | | |
| | | 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.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.oss.FileModel; |
| | | import com.doumee.core.utils.*; |
| | | 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.InterfaceLog; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Users; |
| | | import com.doumee.dao.system.model.SystemDictData; |
| | | 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.CustomerService; |
| | | import com.doumee.service.business.MemberService; |
| | | 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.hikvision.artemis.sdk.util.HttpUtils; |
| | | import me.chanjar.weixin.common.error.WxErrorException; |
| | | import okhttp3.OkHttpClient; |
| | | import okhttp3.Request; |
| | | import okhttp3.Response; |
| | | import org.apache.catalina.User; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.util.ThreadContext; |
| | | import org.apache.shiro.web.mgt.DefaultWebSecurityManager; |
| | | 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.io.ByteArrayInputStream; |
| | | import java.io.InputStream; |
| | | import java.util.*; |
| | | import java.util.Date; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 用户信息表Service实现 |
| | |
| | | |
| | | |
| | | @Override |
| | | public AccountResponse wxLogin(String code){ |
| | | public AccountResponse wxLogin(String code,String iamId){ |
| | | try { |
| | | // 获取微信敏感数据 |
| | | WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code); |
| | |
| | | } |
| | | // String openId = code; |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId)); |
| | | Users users = new Users(); |
| | | if(StringUtils.isBlank(iamId)){ |
| | | users = usersMapper.selectOne(new QueryWrapper<Users>().lambda() |
| | | .eq(Users::getIamId,iamId) |
| | | .last("limit 1") |
| | | ); |
| | | } |
| | | if (member == null) { |
| | | member = new Member(); |
| | | member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4)); |
| | |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setOpenid(openId); |
| | | member.setType(Constants.ZERO); |
| | | member.setAuthStatus(Constants.ZERO); |
| | | //如果绑定了导购 则直接使用已绑定导购信息 跳过手机号绑定的状态 |
| | | if(Objects.nonNull(users)){ |
| | | member.setAuthStatus(Constants.TWO); |
| | | }else{ |
| | | member.setAuthStatus(Constants.ZERO); |
| | | } |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(Objects.isNull(ztUserGetTokenResponse)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!"); |
| | |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | } |
| | | memberMapper.insert(member); |
| | | member = this.getMemberInfo(member.getId()); |
| | | this.saveCustomerUser(users,member.getId()); |
| | | }else{ |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member); |
| | | if(Objects.isNull(ztUserGetTokenResponse)){ |
| | |
| | | }else{ |
| | | member.setToken(ztUserGetTokenResponse.getToken()); |
| | | } |
| | | this.saveCustomerUser(users,member.getId()); |
| | | member = this.getMemberInfo(member.getId()); |
| | | |
| | | } |
| | | //创建token |
| | | JwtPayLoad payLoad = new JwtPayLoad(member.getId(),Constants.ZERO); |
| | |
| | | } |
| | | 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 等待调起中台接口 |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String getWxMiniPhone(WxPhoneRequest wxPhoneRequest){ |
| | |
| | | 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::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; |
| | | } |
| | | |
| | |
| | | param.setOpenId(member.getOpenid()); |
| | | ZTUserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getUserToken(param); |
| | | if(Objects.nonNull(ztUserGetTokenResponse)){ |
| | | Date date =new Date(System.currentTimeMillis()+(Constants.formatLongNum(ztUserGetTokenResponse.getExpire())<=0?2*60*60*1000:ztUserGetTokenResponse.getExpire()*1000)); |
| | | // 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::getTokenDate,date)//默认有效期为两小时 |
| | | // .set(Member::getTokenDate,date)//默认有效期为两小时 |
| | | .eq(Member::getId,member.getId())); |
| | | ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken()); |
| | | }else{ |