From 7b005ca364613c9738dbc66f3e4fe3fb7bec043d Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 17 五月 2023 17:02:30 +0800 Subject: [PATCH] demo补完 --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 216 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 149 insertions(+), 67 deletions(-) diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java index 13f5a73..e704f1e 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java @@ -2,8 +2,9 @@ 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; @@ -11,10 +12,7 @@ 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; @@ -34,17 +32,12 @@ 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; @@ -191,66 +184,65 @@ 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()); @@ -358,7 +350,7 @@ /** - * @description: TODO + * @description: 商户获取会员信息 * @author jqs34 * @date 2023/5/4 22:50 * @version 1.0 @@ -391,7 +383,7 @@ } /** - * + * 更新会员绑定商户 * @param appMemberBindingDto */ @Override @@ -403,7 +395,7 @@ } /** - * + * 获取会员基础档案 * @param userId * @return */ @@ -422,7 +414,7 @@ } /** - * + * 获取会员标签 * @param userId * @return */ @@ -455,7 +447,7 @@ } /** - * + * 编辑会员标签 * @param merMemberTagEditDto */ @Override @@ -464,4 +456,94 @@ 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; + } } -- Gitblit v1.7.1