From eec6d612475e5080a9d3148d9c6ef20104a77b13 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 19 一月 2026 11:06:38 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
index 06eff63..0ba089a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -342,6 +342,7 @@
 
         String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
         for (Integral model : result.getRecords()) {
+            model.setStrObjType(Constants.IntegralObjType.getName(model.getObjType()));
             if (StringUtils.isNotBlank(model.getImgurl())) {
                 model.setImgurl(path + model.getImgurl());
             }
@@ -421,7 +422,86 @@
         return PageData.from(result);
     }
 
+    @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);
+        }
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
 
+        Date date = new Date();
+        Integral integral = new Integral();
+        Constants.IntegralObjType integralObjType =null;
+        if(Constants.equalsInteger(param.getUserType(), Constants.ZERO)){
+            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(),"鐢ㄦ埛璐︽埛浣欓涓嶈冻锛�");
+            }
+            //璐︽埛浣欓
+            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()));
+
+            integralObjType = param.getType()==0?Constants.IntegralObjType.SYSTEM_RECHARGE:Constants.IntegralObjType.SYSTEM_DEDUCT;
+            integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(integral.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(integral.getNum()));
+        }else{
+            Shop model = shopMapper.selectById(param.getMemberId());
+            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(),"缁忛攢鍟嗚处鎴风Н鍒嗕綑棰濅笉瓒筹紒");
+            }
+            //璐︽埛浣欓
+            shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+                    .eq(Shop::getId,model.getId())
+                    .set(Shop::getEditDate,date)
+                    .set(Shop::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()));
+
+             integralObjType = param.getType()==0?Constants.IntegralObjType.SHOP_SYSTEM_RECHARGE:Constants.IntegralObjType.SHOP_SYSTEM_DEDUCT;
+            integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(integral.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(integral.getNum()));
+        }
+        integral.setCreateDate(new Date());
+        integral.setCreator(user.getId());
+        integral.setIsdeleted(Constants.ZERO);
+        integral.setNum(param.getNum());
+        integral.setTitle(integralObjType.getName());
+        integral.setContent(integralObjType.getNoteinfo().replace("${param}",integral.getNum().toString()));
+        integral.setMemberId(param.getMemberId());
+        integral.setObjId(param.getMemberId());
+        integral.setObjType(integralObjType.getKey());
+        integral.setType(param.getType());
+        integral.setRemark(param.getRemark());
+        integral.setOrderCode(null);
+        integral.setUserType(Constants.ZERO);
+        integralMapper.insert(integral);
+    }
     @Override
     public IntegralDataResponse getIntegralData(IntegralRecordDTO model){
         IntegralDataResponse integralDataResponse = new IntegralDataResponse();

--
Gitblit v1.9.3