From 22aaacd9e51da58ed10221639b6bd2fd9a13c6e5 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 16 一月 2026 18:49:23 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  204 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 194 insertions(+), 10 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 afb5b60..017cbe5 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,17 +19,16 @@
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.core.wx.WxMiniConfig;
-import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.*;
 import com.doumee.dao.business.join.MemberJoinMapper;
-import com.doumee.dao.business.model.Areas;
-import com.doumee.dao.business.model.Goodsorder;
-import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.dto.MemberRechargeDTO;
 import com.doumee.dao.web.dto.MemberOwnDTO;
 import com.doumee.dao.web.dto.shop.Position;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.web.request.DealIntegralRequest;
+import com.doumee.dao.web.request.UpdMobileRequest;
 import com.doumee.dao.web.request.UpdateMemberRequest;
 import com.doumee.dao.web.request.WxPhoneRequest;
 import com.doumee.dao.web.response.AccountResponse;
@@ -64,7 +63,7 @@
 import java.util.stream.Collectors;
 
 /**
- * 鐢ㄦ埛淇℃伅琛⊿ervice瀹炵幇
+ * 瀹㈡埛淇℃伅琛⊿ervice瀹炵幇
  * @author 姹熻箘韫�
  * @date 2023/03/21 15:48
  */
@@ -74,6 +73,15 @@
 
     @Autowired
     private MemberMapper memberMapper;
+    @Autowired
+    private IntegralMapper integralMapper;
+    @Autowired
+    private ShopMapper shopMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
+
+    @Autowired
+    private SmsrecordMapper smsrecordMapper;
 
 
     @Autowired
@@ -130,6 +138,109 @@
         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
+    @Transactional
+    public void updateIntegral(Integral param) {
+        if(param.getMemberId()==null || param.getType()==null
+                || param.getType()<0
+                || param.getType()>2
+                || Constants.formatBigdecimal(param.getNum()).compareTo(new BigDecimal(0))<=0){
+            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,param.getMemberId());
+        Member model = memberMapper.selectJoinOne(Member.class,queryWrapper);
+        if(model == null ||Constants.equalsObject(model.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀹㈡埛淇℃伅鏌ヨ鏃犳晥锛�");
+        }
+
+        BigDecimal num = param.getNum();
+        if(param.getType() == 1 &&Constants.formatBigdecimal(model.getIntegral()).compareTo(param.getNum())<0){
+            //濡傛灉鏄噺灏戯紝鍒ゆ柇鐢ㄦ埛浣欓鏄惁婊¤冻
+            num = num.multiply(new BigDecimal(-1));//鍑忓皯
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄦ埛璐︽埛浣欓涓嶈冻锛�");
+        }
+
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+
+        Date date = new Date();
+        //璐︽埛浣欓
+        memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+                .eq(Member::getId,model.getId())
+                .set(Member::getEditDate,date)
+                .set(Member::getEditor,user.getId())
+                .setSql(param.getType() == 0,"total_integral = ifnull(total_integral,0)+" + num)//绱澧炲姞
+                .setSql(param.getType() == 0,"integral = ifnull(integral,0)+" + param.getNum())
+                .setSql(param.getType() == 1,"integral = ifnull(integral,0)-" + param.getNum()));
+
+        Constants.IntegralObjType integralObjType = param.getType()==0?Constants.IntegralObjType.SYSTEM_RECHARGE:Constants.IntegralObjType.SYSTEM_DEDUCT;
+
+        Integral integral = new Integral();
+        integral.setMemberId(model.getId());
+        integral.setCreateDate(new Date());
+        integral.setCreator(user.getId());
+        integral.setIsdeleted(Constants.ZERO);
+        integral.setTitle(integralObjType.getName());
+        integral.setContent(integralObjType.getNoteinfo());
+        integral.setObjId(model.getId());
+        integral.setObjType(integralObjType.getKey());
+        integral.setType(param.getType());
+        integral.setRemark(param.getRemark());
+        integral.setNum(param.getNum());
+        integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(integral.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(integral.getNum()));
+        integral.setOrderCode(null);
+        integral.setUserType(Constants.ZERO);
+        integralMapper.insert(integral);
+
+    }
 
     @Override
     public void updateByIdInBatch(List<Member> members) {
@@ -173,13 +284,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());
 
@@ -239,7 +352,7 @@
             if (member == null) {
                 member = new Member();
                 member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
-                member.setNickname("寰俊鐢ㄦ埛"+ CodeVerifyUtils.createVerificationCode(4));
+                member.setNickname("寰俊瀹㈡埛"+ CodeVerifyUtils.createVerificationCode(4));
                 member.setCreateDate(new Date());
                 member.setIsdeleted(Constants.ZERO);
                 member.setType(Constants.ZERO);
@@ -328,6 +441,12 @@
 
     @Override
     public Member 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());
@@ -339,6 +458,9 @@
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+dbMember.getImgurl());
         return dbMember;
     }
+
+
+
 
     @Override
     public MemberOwnDTO getMemberOwnDTO(Integer memberId) {
@@ -358,7 +480,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());
@@ -405,6 +527,68 @@
         memberMapper.updateById(member);
     }
 
+    @Override
+    public void verifyUserPhone(UpdMobileRequest request){
+        if(Objects.isNull(request)
+                || Objects.isNull(request.getMemberId())
+                || StringUtils.isBlank(request.getPhone())
+                || StringUtils.isBlank(request.getCode())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        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());
+    }
+
+    public void verifyPhoneCode(String code,Integer memberId){
+        //楠岃瘉鐮�
+        Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
+                .eq(Smsrecord::getIsdeleted,Constants.ZERO)
+                .eq(Smsrecord::getCode,code)
+                .eq(Smsrecord::getMemberId,memberId)
+                .last(" limit 1")
+        );
+        if(Objects.isNull(smsrecord)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"楠岃瘉鐮侀敊璇紒");
+        }
+        if(!Constants.equalsInteger(smsrecord.getStatus(),Constants.ZERO)){
+            if(Constants.equalsInteger(smsrecord.getStatus(),Constants.ONE)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"楠岃瘉鐮佸凡浣跨敤");
+            }else{
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"楠岃瘉鐮佸凡杩囨湡");
+            }
+        }
+        smsrecordMapper.update(new UpdateWrapper<Smsrecord>().lambda()
+                .set(Smsrecord::getStatus,Constants.ONE)
+                .eq(Smsrecord::getId,smsrecord.getId())
+        );
+    }
+
+    @Override
+    public void updateUserPhone(UpdMobileRequest request){
+        if(Objects.isNull(request)
+        || Objects.isNull(request.getMemberId())
+        || StringUtils.isBlank(request.getPhone())
+        || StringUtils.isBlank(request.getCode())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        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());
+        memberMapper.update(new UpdateWrapper<Member>().lambda()
+                .eq(Member::getPhone,request.getPhone())
+                .eq(Member::getId,request.getMemberId())
+        );
+    }
+
+
+
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     @Override
     public Integer importMemberRechargeBatch(MultipartFile file) {
@@ -428,7 +612,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->{
@@ -473,7 +657,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)

--
Gitblit v1.9.3