| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.core.utils.uuid.IdUtils; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.member.domain.dto.*; |
| | | import com.ruoyi.member.domain.pojo.member.MemberNurse; |
| | |
| | | import com.ruoyi.member.service.member.MemberNurseService; |
| | | import com.ruoyi.member.service.member.MemberService; |
| | | import com.ruoyi.member.util.HttpUtils; |
| | | import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; |
| | | import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo; |
| | | import com.ruoyi.system.api.service.RemoteConfigService; |
| | | import com.ruoyi.system.api.service.RemoteOrderService; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | |
| | | @Resource |
| | | private RemoteConfigService remoteConfigService; |
| | | |
| | | @Resource |
| | | private RedisService redisService; |
| | | |
| | | /** |
| | | * @description: TODO |
| | | * @author jqs34 |
| | |
| | | sessionKey = session.getSessionKey(); |
| | | //获取用户 |
| | | Member member = memberMapper.getOneByMiniOpenid(openid); |
| | | SysUser sysUser; |
| | | if(member==null){ |
| | | //创建新用户 |
| | | String memberId = IdUtils.simpleUUID(); |
| | | sysUser = new SysUser(); |
| | | sysUser.setUserName(memberId); |
| | | sysUser.setUserType("03"); |
| | | sysUser.setNickName("鸿瑞堂用户"); |
| | | sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | String password = "hongruitang"; |
| | | sysUser.setPassword(SecurityUtils.encryptPassword(password)); |
| | | sysUser = sysUserService.registerUser(sysUser).getData(); |
| | | log.info("sysUser1-----------------"+sysUser.toString()); |
| | | member = new Member(); |
| | | member.setUserId(sysUser.getUserId()); |
| | | member.setDelFlag(0); |
| | | member.setNickName("鸿瑞堂用户"); |
| | | member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | member.setMemberId(memberId); |
| | | member.setRelationShopId(1L); |
| | | member.setWxUnionid(unionid); |
| | | member.setMiniOpenid(openid); |
| | | member.setBindingFlag(0); |
| | | member.setCreateTime(new Date()); |
| | | log.info("member-----------------"+member.toString()); |
| | | this.saveOrUpdate(member); |
| | | |
| | | }else{ |
| | | log.info("member2"+member.toString()); |
| | | R<SysUser> sysUser1 = sysUserService.getSysUser(member.getUserId()); |
| | | log.info("sysUser1"+ sysUser1.getCode() + " : " + sysUser1.getMsg()); |
| | | sysUser = sysUser1.getData(); |
| | | log.info("sysUser"+sysUser.toString()); |
| | | SysUser sysUser = null; |
| | | if(member!=null){ |
| | | sysUser = sysUserService.getSysUser(member.getUserId()).getData(); |
| | | } |
| | | appMiniLoginVo.setMiniOpenid(openid); |
| | | appMiniLoginVo.setWxUnionid(unionid); |
| | | appMiniLoginVo.setSysUser(sysUser); |
| | | appMiniLoginVo.setSessionKey(sessionKey); |
| | | stringRedisTemplate.opsForValue().set(SecurityConstant.SESSION_KEY+openid,sessionKey); |
| | | }else{ |
| | | log.info("null"); |
| | | return null; |
| | | redisService.setCacheObject(SecurityConstant.SESSION_KEY+openid,sessionKey,1L,TimeUnit.DAYS); |
| | | } |
| | | log.info("appMiniLoginVo"+appMiniLoginVo.toString()); |
| | | return appMiniLoginVo; |
| | |
| | | |
| | | /** |
| | | * 获取授权信息 |
| | | * @param appUserAuthorizeDto |
| | | * @param appUserRegisterDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public AppUserAuthorizeVo getAppUserAuthorize(AppUserAuthorizeDto appUserAuthorizeDto){ |
| | | Member member = this.getById(appUserAuthorizeDto.getUserId()); |
| | | AppUserAuthorizeVo appUserAuthorizeVo = new AppUserAuthorizeVo(); |
| | | public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto){ |
| | | AppMiniRegisterVo appUserRegisterVo = new AppMiniRegisterVo(); |
| | | String mobile = null; |
| | | if(StringUtils.isBlank(member.getMobile())){ |
| | | //获取code接口在redis里存放的sessionkey用于解密 |
| | | String sessionkey = stringRedisTemplate.opsForValue().get(SecurityConstant.SESSION_KEY+ member.getMiniOpenid()); |
| | | if(StringUtils.isBlank(sessionkey)){ |
| | | throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN); |
| | | } |
| | | try { |
| | | String accessToken = stringRedisTemplate.opsForValue().get("wx_access_token"); |
| | | if (StringUtils.isBlank(accessToken)) { |
| | | String responseAccessToken = getAccessTokenByWX(); |
| | | JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken); |
| | | accessToken = jsonAccessToken.getString("access_token"); |
| | | String errmsg = jsonAccessToken.getString("errmsg"); |
| | | Long expiresIn = jsonAccessToken.getLong("expires_in"); |
| | | if (StringUtils.isBlank(accessToken)) { |
| | | throw new ServiceException(errmsg); |
| | | } else { |
| | | expiresIn = expiresIn - 100; |
| | | stringRedisTemplate.opsForValue().set("wx_access_token", accessToken, expiresIn.intValue(), TimeUnit.SECONDS); |
| | | } |
| | | } |
| | | String responseUserPhoneNumber = getMobileByWX(accessToken, appUserAuthorizeDto.getMobileCode()); |
| | | JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber); |
| | | String errcode = jsonUserPhoneNumber.getString("errcode"); |
| | | String errmsg = jsonUserPhoneNumber.getString("errmsg"); |
| | | if (!errcode.equals("0")) { |
| | | throw new ServiceException(errmsg); |
| | | } |
| | | String phoneInfo = jsonUserPhoneNumber.getString("phone_info"); |
| | | JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo); |
| | | mobile = jsonUserPhoneInfo.getString("purePhoneNumber"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Member oldMember = this.getByMobile(mobile); |
| | | if(oldMember!=null){ |
| | | member.setNickName(oldMember.getNickName()); |
| | | member.setGender(oldMember.getGender()); |
| | | member.setReferrer(oldMember.getReferrer()); |
| | | member.setBirthday(oldMember.getBirthday()); |
| | | member.setBindingFlag(1); |
| | | member.setRelationShopId(oldMember.getRelationShopId()); |
| | | oldMember.setDelFlag(1); |
| | | oldMember.setMiniOpenid(oldMember.getMiniOpenid()+"已删除"); |
| | | this.saveOrUpdate(oldMember); |
| | | }else{ |
| | | //更新用户手机信息 |
| | | SysUser sysUser = new SysUser(); |
| | | sysUser.setUserId(appUserAuthorizeDto.getUserId()); |
| | | sysUser.setPhonenumber(mobile); |
| | | sysUserService.updateUserMobile(sysUser); |
| | | member.setNickName(sysUser.getNickName()); |
| | | } |
| | | member.setMobile(mobile); |
| | | this.saveOrUpdate(member); |
| | | }else{ |
| | | mobile = member.getMobile(); |
| | | //获取code接口在redis里存放的sessionkey用于解密 |
| | | String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY+ appUserRegisterDto.getMiniOpenid()); |
| | | if(StringUtils.isBlank(sessionkey)){ |
| | | throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN); |
| | | } |
| | | appUserAuthorizeVo.setMobile(mobile); |
| | | appUserAuthorizeVo.setNickName(member.getNickName()); |
| | | appUserAuthorizeVo.setOpenid(member.getMiniOpenid()); |
| | | appUserAuthorizeVo.setUnionid(member.getWxUnionid()); |
| | | return appUserAuthorizeVo; |
| | | try { |
| | | //获取微信token用于解密手机 |
| | | String accessToken = redisService.getCacheObject(SecurityConstant.WX_TOKEN); |
| | | if (StringUtils.isBlank(accessToken)) { |
| | | String responseAccessToken = getAccessTokenByWX(); |
| | | JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken); |
| | | accessToken = jsonAccessToken.getString("access_token"); |
| | | String errmsg = jsonAccessToken.getString("errmsg"); |
| | | Long expiresIn = jsonAccessToken.getLong("expires_in"); |
| | | if (StringUtils.isBlank(accessToken)) { |
| | | throw new ServiceException(errmsg); |
| | | } else { |
| | | expiresIn = expiresIn - 100; |
| | | redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS); |
| | | } |
| | | } |
| | | //解密手机 |
| | | String responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode()); |
| | | JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber); |
| | | String errcode = jsonUserPhoneNumber.getString("errcode"); |
| | | String errmsg = jsonUserPhoneNumber.getString("errmsg"); |
| | | if (!errcode.equals("0")) { |
| | | throw new ServiceException(errmsg); |
| | | } |
| | | String phoneInfo = jsonUserPhoneNumber.getString("phone_info"); |
| | | JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo); |
| | | mobile = jsonUserPhoneInfo.getString("purePhoneNumber"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if(StringUtils.isBlank(mobile)){ |
| | | return null; |
| | | } |
| | | //判断openid是否被其他手机号占用 |
| | | Member checkMember = memberMapper.getOneByMiniOpenid(appUserRegisterDto.getMiniOpenid()); |
| | | if(checkMember!=null&&!checkMember.getMobile().equals(mobile)){ |
| | | throw new ServiceException("微信号换绑手机需联系客服"); |
| | | } |
| | | Member member = memberMapper.selectMemberByMobile(mobile); |
| | | SysUser sysUser; |
| | | //获取用户为空则新建 |
| | | if(member == null){ |
| | | //创建新用户 |
| | | sysUser = new SysUser(); |
| | | sysUser.setUserName(mobile+"-3"); |
| | | sysUser.setUserType("03"); |
| | | sysUser.setNickName("鸿瑞堂用户"); |
| | | sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | String password = "hongruitang"; |
| | | sysUser.setPassword(SecurityUtils.encryptPassword(password)); |
| | | sysUser = sysUserService.registerUser(sysUser).getData(); |
| | | member = new Member(); |
| | | String memberId = IdUtils.simpleUUID(); |
| | | member.setUserId(sysUser.getUserId()); |
| | | member.setDelFlag(0); |
| | | member.setNickName("鸿瑞堂用户"); |
| | | member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | member.setMemberId(memberId); |
| | | member.setRelationShopId(1L); |
| | | member.setBindingFlag(0); |
| | | member.setCreateTime(new Date()); |
| | | }else{ |
| | | sysUser = sysUserService.getSysUser(member.getUserId()).getData(); |
| | | } |
| | | member.setWxUnionid(appUserRegisterDto.getWxUnionid()); |
| | | member.setMiniOpenid(appUserRegisterDto.getMiniOpenid()); |
| | | log.info("member-----------------"+member.toString()); |
| | | this.saveOrUpdate(member); |
| | | appUserRegisterVo.setMobile(mobile); |
| | | appUserRegisterVo.setNickName(member.getNickName()); |
| | | appUserRegisterVo.setOpenid(member.getMiniOpenid()); |
| | | appUserRegisterVo.setUnionid(member.getWxUnionid()); |
| | | appUserRegisterVo.setSysUser(sysUser); |
| | | return appUserRegisterVo; |
| | | } |
| | | |
| | | public static String getAccessTokenByWX() throws Exception { |