From 580f4d3c2ca9eee53eee95a4de2f6610b790780a Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 12 二月 2026 18:24:13 +0800
Subject: [PATCH] 小程序   接口开发

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  357 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 236 insertions(+), 121 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index f3e00a0..fce1c9a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -19,6 +19,7 @@
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.core.wx.WxMiniConfig;
+import com.doumee.dao.business.*;
 import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.ShopMapper;
 import com.doumee.dao.business.SmsrecordMapper;
@@ -26,6 +27,7 @@
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.dto.MemberRechargeDTO;
+import com.doumee.dao.system.dto.PlatformConfigDTO;
 import com.doumee.dao.web.dto.MemberOwnDTO;
 import com.doumee.dao.web.dto.shop.Position;
 import com.doumee.dao.system.model.SystemUser;
@@ -41,6 +43,7 @@
 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.service.system.SystemDictDataService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import io.swagger.models.auth.In;
 import io.swagger.util.Yaml;
@@ -54,6 +57,7 @@
 import org.apache.shiro.SecurityUtils;
 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.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -67,7 +71,7 @@
 import java.util.stream.Collectors;
 
 /**
- * 鐢ㄦ埛淇℃伅琛⊿ervice瀹炵幇
+ * 瀹㈡埛淇℃伅琛⊿ervice瀹炵幇
  * @author 姹熻箘韫�
  * @date 2023/03/21 15:48
  */
@@ -77,9 +81,17 @@
 
     @Autowired
     private MemberMapper memberMapper;
-
+    @Autowired
+    private CouponMapper couponMapper;
+    @Autowired
+    private MemberCouponJoinMapper memberCouponJoinMapper;
+    @Autowired
+    private IntegralMapper integralMapper;
     @Autowired
     private ShopMapper shopMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
+
 
     @Autowired
     private SmsrecordMapper smsrecordMapper;
@@ -87,6 +99,9 @@
 
     @Autowired
     private MemberJoinMapper memberJoinMapper;
+
+    @Autowired
+    private InviteRecordMapper inviteRecordMapper;
 
 
     @Autowired
@@ -96,6 +111,9 @@
     private SystemDictDataBiz systemDictDataBiz;
 
     @Autowired
+    private SystemDictDataService systemDictDataService;
+
+    @Autowired
     private UploadFileService uploadFileService;
 
     @Autowired
@@ -103,6 +121,9 @@
 
     @Autowired
     private IntegralService integralService;
+
+    @Autowired
+    private RedisTemplate<String,Object> redisTemplate;
 
     @Override
     public Integer create(Member member) {
@@ -138,6 +159,50 @@
         member.setEditDate(new Date());
         member.setEditor(user.getId());
         memberMapper.updateById(member);
+    }
+    @Override
+    @Transactional
+    public void updateShop(Member member) {
+        if(member.getBindShopId()==null || member.getId()==null){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        MPJLambdaWrapper<Member> queryWrapper =new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Member.class);
+        queryWrapper.selectAs(Shop::getName,Member::getShopName);
+        queryWrapper.leftJoin(Shop.class, Shop::getId,Member::getBindShopId);
+        queryWrapper.eq(Member::getId,member.getId());
+        Member model = memberMapper.selectJoinOne(Member.class,queryWrapper);
+        if(model == null ||Constants.equalsObject(model.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀹㈡埛淇℃伅鏌ヨ鏃犳晥锛�");
+        }
+        if(model.getBindShopId() == null){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀹㈡埛灏氭湭缁戝畾缁忛攢鍟嗕俊鎭紝鏃犳硶鏇存崲锛�");
+        }
+        if(Constants.equalsInteger(model.getBindShopId() ,member.getBindShopId())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"璇烽�夋嫨鏂扮殑缁忛攢鍟嗭紒");
+        }
+
+        Shop shop = shopMapper.selectById(member.getBindShopId());
+        if(shop == null ||Constants.equalsObject(shop.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"缁忛攢鍟嗕俊鎭煡璇㈡棤鏁堬紒");
+        }
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+
+        Date date = new Date();
+        memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                .eq(Member::getId,member.getId())
+                .set(Member::getEditDate,date)
+                .set(Member::getEditor,user.getId())
+                .set(Member::getBindShopId,member.getBindShopId())
+        );
+        //鏇存崲鏃ュ織璁板綍
+        UserActionServiceImpl.saveUserActionBiz(user,member.getId(),
+                Constants.UserActionType.CHANGE_SHOP,
+                userActionMapper,
+                date,
+                new String[]{user.getUsername(),DateUtil.getPlusTime2(date)},
+                JSONObject.toJSONString(member) ,
+                model.getShopName(), shop.getName());
     }
 
     @Override
@@ -182,13 +247,15 @@
         MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.selectAll(Member.class);
+        queryWrapper.selectAs(Shop::getName,Member::getShopName);
+        queryWrapper.leftJoin(Shop.class, Shop::getId,Member::getBindShopId);
         queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickname()),ms->ms.like(Member::getNickname,pageWrap.getModel().getNickname())
                  .or().like(Member::getName,pageWrap.getModel().getNickname())
                 .or().like(Member::getPhone,pageWrap.getModel().getNickname())
         );
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getStatus,pageWrap.getModel().getShopName());
         queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Member::getStatus,pageWrap.getModel().getStatus());
         queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
-
         queryWrapper.ge(pageWrap.getModel().getStarttime()!=null, Member::getCreateDate,pageWrap.getModel().getStarttime());
         queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Member::getCreateDate, pageWrap.getModel().getEndtime());
 
@@ -236,7 +303,7 @@
 
 
     @Override
-    public AccountResponse wxLogin(String code,Integer recId){
+    public AccountResponse wxLogin(String code){
         try {
             //鑾峰彇寰俊鏁忔劅鏁版嵁
             WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
@@ -247,19 +314,17 @@
             Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
                             .eq(Member::getIsdeleted,Constants.ZERO)
                     .last(" limit 1"));
-            //鍒涘缓token
-            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
-            String token = JwtTokenUtil.generateToken(payLoad);
             AccountResponse accountResponse = new AccountResponse();
-            accountResponse.setSessionKey(session.getSessionKey());
             if(Objects.nonNull(member)){
-                if(Objects.isNull(member.getRecId())){
-                    member.setRecId(recId);
-                }
                 memberMapper.updateById(member);
                 member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                         systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
+                //鍒涘缓token
+//                JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
+//                String token = JwtTokenUtil.generateToken(payLoad);
+                String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
                 accountResponse.setToken(token);
+                accountResponse.setOpenid(openId);
                 accountResponse.setMember(member);
             }else{
                 accountResponse.setOpenid(openId);
@@ -272,98 +337,22 @@
     }
 
 
-    @Override
-    public AccountResponse wxLoginTest( Integer memberId){
-        //鍒涘缓token
-        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
-        String token = JwtTokenUtil.generateToken(payLoad);
-        AccountResponse accountResponse = new AccountResponse();
-        accountResponse.setToken(token);
-        return accountResponse;
-    }
-
-
-    /**
-     * 鏍规嵁openid鑾峰彇鏄惁缁戝畾浜嗗晢鎴�
-     * @param openid
-     * @param memberId
-     * @return
-     */
-    public AccountResponse shopOpenidLogin(String openid, Integer memberId){
-        Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getOpenId, openid)
-                .eq(Shop::getIsdeleted,Constants.ZERO)
-                .last("limit 1")
-        );
-        AccountResponse accountResponse = new AccountResponse();
-        accountResponse.setOpenid(openid);
-        if(Objects.nonNull(shop)){
-            if(Objects.isNull(memberId)
-             && ( Objects.isNull(shop.getMemberId())
-                    || !Constants.equalsInteger(shop.getMemberId(),memberId))){
-                shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                        .set(Shop::getMemberId,memberId)
-                        .eq(Shop::getId,shop.getId())
-                );
-            }
-            JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
-            String token = JwtTokenUtil.generateToken(payLoad);
-            accountResponse.setToken(token);
-        }
-        return accountResponse;
-    }
-
-
-    /**
-     * 鍟嗘埛璐﹀彿瀵嗙爜鐧诲綍
-     * @param userName
-     * @param password
-     * @param openid
-     * @param memberId
-     * @return
-     */
-    public AccountResponse shopPasswordLogin(String userName,String password,String openid,String memberId){
-        if(StringUtils.isBlank(userName)
-             || StringUtils.isBlank(password)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
-        }
-        Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getUsername, userName)
-                .eq(Shop::getIsdeleted,Constants.ZERO)
-                .last("limit 1")
-        );
-        if(shop==null){
-            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
-        }
-        //鍔犲瘑瀵嗙爜
-        String pwd = Utils.Secure.encryptPassword(password, shop.getSalt());
-        if(!pwd.equals(shop.getPassword())){
-            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
-        }
-        //鍒涘缓token
-        JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
-        String token = JwtTokenUtil.generateToken(payLoad);
-        AccountResponse accountResponse = new AccountResponse();
-        accountResponse.setToken(token);
-        shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                .set(Shop::getOpenId,openid)
-                .set(Shop::getMemberId,memberId)
-                .eq(Shop::getId,shop.getId())
-        );
-        shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                .set(Shop::getOpenId,null)
-                .eq(Shop::getOpenId,openid)
-                .ne(Shop::getId,shop.getId())
-        );
-        return accountResponse;
-    }
-
+//    @Override
+//    public AccountResponse wxLoginTest( Integer memberId){
+//        //鍒涘缓token
+////        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
+////        String token = JwtTokenUtil.generateToken(payLoad);
+//        String token = JwtTokenUtil.generateTokenForRedis(memberId, Constants.ZERO, JSONObject.toJSONString(null), redisTemplate);
+//        AccountResponse accountResponse = new AccountResponse();
+//        accountResponse.setToken(token);
+//        return accountResponse;
+//    }
 
     @Override
     public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
         try {
-            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(
-                    wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv());
-            //鑾峰彇鎵嬫満鍙�
-            String phone= userPhoneInfo.getPurePhoneNumber();
+            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNumber(wxPhoneRequest.getCode());
+            String phone = userPhoneInfo.getPhoneNumber();
             if(Objects.isNull(phone)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈幏鍙栧埌鎵嬫満鍙�");
             }
@@ -378,8 +367,11 @@
                 member.setIsdeleted(Constants.ZERO);
                 member.setType(Constants.ZERO);
                 member.setOrigin(Constants.ZERO);
-                member.setRecId(wxPhoneRequest.getRecId());
+                if(!this.checkIsCreateInvite(phone)){
+                    member.setRecId(Constants.getInviteCode(wxPhoneRequest.getRecId()));
+                }
                 member.setOpenId(wxPhoneRequest.getOpenid());
+                member.setIntegral(BigDecimal.ZERO);
             }
             member.setPhone(phone);
             member.setEditDate(new Date());
@@ -387,6 +379,11 @@
                     systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
             if(Objects.isNull(member.getId())){
                 memberMapper.insert(member);
+
+                PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
+                this.createRegionReward(member,platformConfigDTO);
+                //鍒涘缓閭�璇疯褰�
+                this.createInviteRecord(member,platformConfigDTO);
                 member.setSharingCode(this.createShareCode(member.getId()));
                 memberMapper.updateById(member);
             }else{
@@ -395,8 +392,9 @@
                 }
                 memberMapper.updateById(member);
             }
-            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
-            String token = JwtTokenUtil.generateToken(payLoad);
+//            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
+//            String token = JwtTokenUtil.generateToken(payLoad);
+            String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
             AccountResponse accountResponse = new AccountResponse();
             accountResponse.setToken(token);
             accountResponse.setMember(member);
@@ -406,6 +404,100 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏇存柊鎵嬫満鍙峰け璐�");
         }
     }
+
+
+    /**
+     * 鍙戞斁娉ㄥ唽濂栧姳淇℃伅
+     * @param member
+     * @param platformConfigDTO
+     */
+    public void createRegionReward(Member member,PlatformConfigDTO platformConfigDTO){
+        //鏌ヨ鐢ㄦ埛鏄惁娉ㄩ攢杩�
+        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
+                .eq(Member::getIsdeleted,Constants.ONE)
+                .eq(Member::getPhone,member.getPhone())
+        )>Constants.ZERO){
+            return;
+        }
+        //寮�鍚敞鍐岄�佺Н鍒�
+        if(Constants.equalsInteger(platformConfigDTO.getRegIntegralRewardStatus(),Constants.ZERO)){
+            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+            dealIntegralRequest.setIntegralNum(platformConfigDTO.getRegIntegralReward());
+            dealIntegralRequest.setDealType(Constants.ZERO);
+            dealIntegralRequest.setMemberId(member.getId());
+            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.REGISTER);
+            integralService.dealIntegral(dealIntegralRequest);
+        }
+        //寮�鍚敞鍐岄�佷紭鎯犲埜
+        if(Constants.equalsInteger(platformConfigDTO.getRegCouponRewardStatus(),Constants.ZERO)){
+            List<JSONObject> regCouponRewardList = platformConfigDTO.getRegCouponRewardList();
+            //[{"num":"2","couponId":6},{"num":"3","couponId":5}]
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(regCouponRewardList)){
+                List<MemberCoupon> memberCouponList = new ArrayList<>();
+                for (JSONObject jsonObject:regCouponRewardList) {
+                    Integer couponId = jsonObject.getInteger("couponId");
+                    Integer num = jsonObject.getInteger("num");
+                    Coupon coupon =  couponMapper.selectById(couponId);
+                    if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
+                        continue;
+                    }
+                    MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,new Date(),Constants.ZERO,null);
+                    for (int i = 0; i < num; i++) {
+                        memberCouponList.add(memberCoupon);
+                    }
+                }
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
+                    memberCouponJoinMapper.insert(memberCouponList);
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 鍒涘缓閭�璇疯褰�
+     * @param member
+     */
+    public void createInviteRecord(Member member,PlatformConfigDTO platformConfigDTO){
+        if(Objects.isNull(member.getRecId())){
+            return;
+        }
+        InviteRecord inviteRecord = new InviteRecord();
+        inviteRecord.setCreateDate(new Date());
+        inviteRecord.setIsdeleted(Constants.ZERO);
+        inviteRecord.setInviteId(member.getRecId());
+        inviteRecord.setMemberId(member.getId());
+        inviteRecord.setPhone(member.getPhone());
+        inviteRecord.setRewardIntegral(Objects.nonNull(platformConfigDTO)&&Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)?
+                platformConfigDTO.getShareIntegralReward():BigDecimal.ZERO);
+        inviteRecord.setFirstOrderStatus(Constants.ZERO);
+        inviteRecordMapper.insert(inviteRecord);
+        //璧犻�侀個璇风Н鍒�
+        //寮�鍚個璇锋敞鍐岄�佺Н鍒�
+        if(Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)){
+            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+            dealIntegralRequest.setIntegralNum(platformConfigDTO.getShareIntegralReward());
+            dealIntegralRequest.setDealType(Constants.ZERO);
+            dealIntegralRequest.setMemberId(member.getRecId());
+            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.INVITENEWUSER);
+            dealIntegralRequest.setParam1(member.getNickname());
+            integralService.dealIntegral(dealIntegralRequest);
+        }
+    }
+
+
+    /**
+     * 鏌ヨ鏄惁鍒涘缓杩囬個璇�
+     * @param mobile
+     * @return
+     */
+    public Boolean checkIsCreateInvite(String mobile){
+        return inviteRecordMapper.selectCount(new QueryWrapper<InviteRecord>()
+                .lambda()
+                .eq(InviteRecord::getPhone,mobile)
+        )>Constants.ZERO?true:false;
+    }
+
 
 
 
@@ -442,23 +534,20 @@
 
 
     @Override
-    public Member updateMember(UpdateMemberRequest updateMemberRequest){
+    public void updateMember(UpdateMemberRequest updateMemberRequest){
         if(StringUtils.isBlank(updateMemberRequest.getImgurl())
                 && StringUtils.isBlank(updateMemberRequest.getNickname())
                 && StringUtils.isBlank(updateMemberRequest.getName())
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        Member member  = new Member();
-        BeanUtils.copyProperties(updateMemberRequest,member);
-        member.setId(updateMemberRequest.getMemberId());
-        member.setEditor(updateMemberRequest.getMemberId());
-        member.setEditDate(new Date());
-        memberMapper.updateById(member);
-        Member dbMember = memberMapper.selectById(updateMemberRequest.getMemberId());
-        dbMember.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+dbMember.getImgurl());
-        return dbMember;
+        memberMapper.update(new UpdateWrapper<Member>().lambda()
+                .set(StringUtils.isNotBlank(updateMemberRequest.getImgurl()),Member::getImgurl,updateMemberRequest.getImgurl())
+                .set(StringUtils.isNotBlank(updateMemberRequest.getNickname()),Member::getNickname,updateMemberRequest.getNickname())
+                .set(StringUtils.isNotBlank(updateMemberRequest.getName()),Member::getName,updateMemberRequest.getName())
+                .set(Member::getEditDate,DateUtil.getCurrDateTime())
+                .eq(Member::getId,updateMemberRequest.getMemberId())
+        );
     }
 
 
@@ -482,7 +571,7 @@
 
         Integer mId = Optional.ofNullable(userInfo)
                 .map(s -> s.getMemberId())
-                .orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鐢ㄦ埛ID缂哄け"));
+                .orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀹㈡埛ID缂哄け"));
         Member member = new Member();
         member.setId(mId);
         member.setEditor(userInfo.getId());
@@ -542,15 +631,15 @@
         if(StringUtils.isNotBlank(member.getPhone())&&!member.getPhone().equals(request.getPhone())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎵嬫満鍙烽敊璇�");
         }
-        this.verifyPhoneCode(request.getCode(),request.getMemberId());
+        this.verifyPhoneCode(request.getCode(),request.getPhone());
     }
 
-    public void verifyPhoneCode(String code,Integer memberId){
+    public void verifyPhoneCode(String code,String phone){
         //楠岃瘉鐮�
         Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
                 .eq(Smsrecord::getIsdeleted,Constants.ZERO)
                 .eq(Smsrecord::getCode,code)
-                .eq(Smsrecord::getMemberId,memberId)
+                .eq(Smsrecord::getPhone,phone)
                 .last(" limit 1")
         );
         if(Objects.isNull(smsrecord)){
@@ -578,11 +667,15 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        //鍒ゆ柇鏂版墜鏈哄彿鏄惁宸茶浣跨敤
+        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getPhone,request.getPhone()))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,鏂版墜鏈哄彿宸茶缁戝畾,鏃犳硶杩涜鎹㈢粦锛�");
+        }
         Member member = memberMapper.selectById(request.getMemberId());
         if(StringUtils.isNotBlank(member.getPhone())&&member.getPhone().equals(request.getPhone())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳硶鏇存崲鐩稿悓鎵嬫満鍙�");
         }
-        this.verifyPhoneCode(request.getCode(),request.getMemberId());
+        this.verifyPhoneCode(request.getCode(),request.getPhone());
         memberMapper.update(new UpdateWrapper<Member>().lambda()
                 .eq(Member::getPhone,request.getPhone())
                 .eq(Member::getId,request.getMemberId())
@@ -614,7 +707,7 @@
             if(phoneNums.size() != members.size()){
                 List<String> collect = members.stream().map(s -> s.getPhone()).collect(Collectors.toList());
                 List<String> unFindMember = phoneNums.stream().filter(s -> !collect.contains(s)).collect(Collectors.toList());
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),unFindMember.toString()+"涓嶅瓨鍦ㄨ鎵嬫満鍙风爜鐢ㄦ埛");
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),unFindMember.toString()+"涓嶅瓨鍦ㄨ鎵嬫満鍙风爜瀹㈡埛");
             }
             Map<String, MemberRechargeDTO> collect = dataList.stream().collect(Collectors.toMap(s -> s.getPhone(), s -> s));
             members.forEach(s->{
@@ -659,7 +752,7 @@
 
         Member member = memberMapper.selectById(memberRechargeDTO.getMemberId());
 
-        //濡傛灉鎵i櫎閲戦澶т簬鐢ㄦ埛鎷ラ噾棰� 鍙栫敤鎴峰墿浣欓噾棰�
+        //濡傛灉鎵i櫎閲戦澶т簬瀹㈡埛鎷ラ噾棰� 鍙栧鎴峰墿浣欓噾棰�
         BigDecimal integralNum = new BigDecimal(memberRechargeDTO.getNum());
         if (Constants.equalsInteger(memberRechargeDTO.getIntegralType(),Constants.ONE)
         && (member.getIntegral().compareTo(integralNum) == -1)
@@ -682,9 +775,31 @@
     }
 
 
+    @Override
+    public void logOut(String token,Integer memberId){
+        Member  member = memberMapper.selectById(memberId);
+        if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
+            memberMapper.update(new UpdateWrapper<Member>().lambda()
+                    .set(Member::getOpenId,null)
+                    .eq(Member::getId,member.getId())
+            );
+        }
+        redisTemplate.delete(token);
+    }
 
 
-
+    @Override
+    public void logOff(String token,Integer memberId){
+        Member  member = memberMapper.selectById(memberId);
+        if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
+            memberMapper.update(new UpdateWrapper<Member>().lambda()
+                    .set(Member::getOpenId,null)
+                    .set(Member::getPhone,null)
+                    .eq(Member::getId,member.getId())
+            );
+        }
+        redisTemplate.delete(token);
+    }
 
 
 

--
Gitblit v1.9.3