| | |
| | | |
| | | import cn.binarywang.wx.miniapp.api.WxMaService; |
| | | 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.LambdaQueryWrapper; |
| | | 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.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.core.utils.uuid.IdUtils; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.member.domain.dto.AppUserAuthorizeDto; |
| | | import com.ruoyi.member.domain.dto.MerCashMemberPageDto; |
| | | import com.ruoyi.member.domain.dto.MerMemberPageDto; |
| | | import com.ruoyi.member.domain.dto.MerMemberTagEditDto; |
| | | import com.ruoyi.member.domain.dto.*; |
| | | import com.ruoyi.member.domain.pojo.member.MemberNurse; |
| | | import com.ruoyi.member.domain.vo.*; |
| | | import com.ruoyi.member.mapper.member.MemberMapper; |
| | |
| | | import com.ruoyi.system.api.domain.poji.shop.Shop; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysUser; |
| | | import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; |
| | | import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; |
| | | import com.ruoyi.system.api.model.AppMiniLoginDto; |
| | | import com.ruoyi.system.api.model.AppMiniLoginVo; |
| | | import lombok.extern.log4j.Log4j; |
| | | import lombok.extern.log4j.Log4j2; |
| | | import lombok.val; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import org.apache.commons.lang3.ArrayUtils; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.http.client.HttpClient; |
| | | import org.apache.http.client.methods.HttpGet; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | public AppUserAuthorizeVo getAppUserAuthorize(AppUserAuthorizeDto appUserAuthorizeDto){ |
| | | Member member = this.getById(appUserAuthorizeDto.getUserId()); |
| | | AppUserAuthorizeVo appUserAuthorizeVo = new AppUserAuthorizeVo(); |
| | | //获取code接口在redis里存放的sessionkey用于解密 |
| | | String sessionkey = stringRedisTemplate.opsForValue().get(SecurityConstant.SESSION_KEY+ member.getMiniOpenid()); |
| | | if(StringUtils.isBlank(sessionkey)){ |
| | | throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN); |
| | | } |
| | | String mobile = null; |
| | | try { |
| | | //解密微信加密用户信息和手机号 |
| | | /*WxMaPhoneNumberInfo wxPhoneInfo; |
| | | if(StringUtils.isNotBlank(appUserAuthorizeDto.getPhoneEncryptedData())&&StringUtils.isNotBlank(appUserAuthorizeDto.getPhoneIv())){ |
| | | wxPhoneInfo = wxMaService.getUserService().getPhoneNoInfo(sessionkey, appUserAuthorizeDto.getPhoneEncryptedData(), appUserAuthorizeDto.getPhoneIv()); |
| | | }else{ |
| | | throw new ServiceException(AppErrorConstant.AUTHORIZE_MISS); |
| | | 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); |
| | | } |
| | | if(StringUtils.isBlank(wxPhoneInfo.getPhoneNumber())){ |
| | | throw new ServiceException(AppErrorConstant.AUTHORIZE_FAILED); |
| | | } |
| | | mobile = wxPhoneInfo.getPhoneNumber();*/ |
| | | 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"); |
| | | try { |
| | | String accessToken = stringRedisTemplate.opsForValue().get("wx_access_token"); |
| | | if (StringUtils.isBlank(accessToken)) { |
| | | throw new ServiceException(errmsg); |
| | | } else { |
| | | expiresIn = expiresIn - 100; |
| | | stringRedisTemplate.opsForValue().set("wx_access_token", accessToken, expiresIn.intValue(), TimeUnit.SECONDS); |
| | | 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(); |
| | | } |
| | | 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); |
| | | 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()); |
| | | } |
| | | String phoneInfo = jsonUserPhoneNumber.getString("phone_info"); |
| | | JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo); |
| | | mobile = jsonUserPhoneInfo.getString("purePhoneNumber"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | SysUser sysUser1 = sysUserService.getSysUserBYmobile(mobile).getData(); |
| | | if(sysUser1!=null){ |
| | | member.setUserId(sysUser1.getUserId()); |
| | | member.setNickName(sysUser1.getNickName()); |
| | | member.setMobile(mobile); |
| | | this.saveOrUpdate(member); |
| | | }else{ |
| | | //更新用户手机信息 |
| | | SysUser sysUser = new SysUser(); |
| | | sysUser.setUserId(appUserAuthorizeDto.getUserId()); |
| | | sysUser.setPhonenumber(mobile); |
| | | sysUserService.updateUserMobile(sysUser); |
| | | member.setNickName(sysUser.getNickName()); |
| | | mobile = member.getMobile(); |
| | | } |
| | | member.setMobile(mobile); |
| | | this.saveOrUpdate(member); |
| | | appUserAuthorizeVo.setMobile(mobile); |
| | | appUserAuthorizeVo.setNickName(member.getNickName()); |
| | | appUserAuthorizeVo.setOpenid(member.getMiniOpenid()); |
| | |
| | | |
| | | |
| | | /** |
| | | * @description: TODO |
| | | * @description: 商户获取会员信息 |
| | | * @author jqs34 |
| | | * @date 2023/5/4 22:50 |
| | | * @version 1.0 |
| | |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * 更新会员绑定商户 |
| | | * @param appMemberBindingDto |
| | | */ |
| | | @Override |
| | |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * 获取会员基础档案 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * 获取会员标签 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * 编辑会员标签 |
| | | * @param merMemberTagEditDto |
| | | */ |
| | | @Override |
| | |
| | | member.setUserTags(merMemberTagEditDto.getUserTags()); |
| | | this.saveOrUpdate(member); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 添加会员 |
| | | * @param merMemberAddDto |
| | | */ |
| | | @Override |
| | | public void addMerMember(MerMemberAddDto merMemberAddDto){ |
| | | String phonenumber = merMemberAddDto.getPhonenumber(); |
| | | Member oldMember = this.getByMobile(phonenumber); |
| | | if(oldMember!=null){ |
| | | throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE); |
| | | } |
| | | SysUser sysUser = sysUserService.getSysUserByMobile(phonenumber).getData(); |
| | | if(sysUser==null){ |
| | | sysUser = new SysUser(); |
| | | sysUser.setUserName(phonenumber); |
| | | sysUser.setUserType("03"); |
| | | sysUser.setNickName(merMemberAddDto.getNickName()); |
| | | sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | String password = "hongruitang"; |
| | | sysUser.setPassword(SecurityUtils.encryptPassword(password)); |
| | | log.debug("sysUser"+sysUser.toString()); |
| | | sysUser = sysUserService.registerUser(sysUser).getData(); |
| | | } |
| | | log.info("sysUser1-----------------"+sysUser.toString()); |
| | | String memberId = IdUtils.simpleUUID(); |
| | | Member member = new Member(); |
| | | member.setUserId(sysUser.getUserId()); |
| | | member.setDelFlag(0); |
| | | member.setNickName(merMemberAddDto.getNickName()); |
| | | member.setGender(merMemberAddDto.getGender()); |
| | | member.setMobile(phonenumber); |
| | | member.setReferrer(merMemberAddDto.getReferrer()); |
| | | member.setBirthday(merMemberAddDto.getBirthday()); |
| | | member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | member.setMemberId(memberId); |
| | | member.setRelationShopId(1L); |
| | | member.setWxUnionid(null); |
| | | member.setMiniOpenid(null); |
| | | member.setBindingFlag(1); |
| | | member.setRelationShopId(merMemberAddDto.getShopId()); |
| | | member.setCreateTime(new Date()); |
| | | log.info("member-----------------"+member.toString()); |
| | | this.saveOrUpdate(member); |
| | | } |
| | | |
| | | /** |
| | | * 编辑会员 |
| | | * @param merMemberEditDto |
| | | */ |
| | | @Override |
| | | public void editMerMember(MerMemberEditDto merMemberEditDto){ |
| | | |
| | | Member member = this.getByUserId(merMemberEditDto.getEditUserId()); |
| | | if(!member.getMobile().equals(merMemberEditDto.getPhonenumber())){ |
| | | Member memberOld = getByMobile(merMemberEditDto.getPhonenumber()); |
| | | if(memberOld!=null){ |
| | | throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE); |
| | | } |
| | | } |
| | | member.setRealName(merMemberEditDto.getNickName()); |
| | | member.setMobile(merMemberEditDto.getPhonenumber()); |
| | | member.setGender(merMemberEditDto.getGender()); |
| | | member.setReferrer(merMemberEditDto.getReferrer()); |
| | | member.setCustomerSource(merMemberEditDto.getCustomerSource()); |
| | | member.setLevel(merMemberEditDto.getLevel()); |
| | | member.setBirthday(merMemberEditDto.getBirthday()); |
| | | member.setUpdateUserId(merMemberEditDto.getUserId()); |
| | | member.setUpdateTime(new Date()); |
| | | log.info("member-----------------"+member.toString()); |
| | | this.saveOrUpdate(member); |
| | | SysUser sysUser = new SysUser(); |
| | | sysUser.setUserId(merMemberEditDto.getEditUserId()); |
| | | sysUser.setPhonenumber(merMemberEditDto.getPhonenumber()); |
| | | sysUserService.updateUserMobile(sysUser); |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @param mobile |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Member getByMobile(String mobile){ |
| | | LambdaQueryWrapper<Member> queryWrapper = Wrappers.lambdaQuery(); |
| | | queryWrapper.eq(Member::getDelFlag, 0).eq(Member::getMobile, mobile); |
| | | Member member = this.getOne(queryWrapper); |
| | | return member; |
| | | } |
| | | } |