From 80fd41ea0dc602ac3ca33778f17fce5bc2e817b1 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 16 一月 2026 18:58:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java |  152 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 152 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 5ed3b67..7838eb0 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
@@ -10,12 +10,17 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.IntegralMapper;
 import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.ShopMapper;
 import com.doumee.dao.business.join.IntegralJoinMapper;
 import com.doumee.dao.business.model.Fund;
 import com.doumee.dao.business.model.Integral;
 import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.dao.web.dto.IntegralDTO;
+import com.doumee.dao.web.dto.IntegralRecordDTO;
 import com.doumee.dao.web.request.DealIntegralRequest;
+import com.doumee.dao.web.response.IntegralDataResponse;
 import com.doumee.service.business.AreasService;
 import com.doumee.service.business.IntegralService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -58,6 +63,9 @@
 
     @Autowired
     private MemberMapper memberMapper;
+
+    @Autowired
+    private ShopMapper shopMapper;
 
     @Transactional(rollbackFor = {Exception.class, BusinessException.class})
     @Override
@@ -150,6 +158,7 @@
         integral.setNum(dealIntegralRequest.getIntegralNum());
         integral.setTotalNum(dealIntegralRequest.getDealType().equals(Constants.ZERO)? member.getIntegral().add(integral.getNum()):member.getIntegral().subtract(integral.getNum()));
         integral.setOrderCode(dealIntegralRequest.getOrderCode());
+        integral.setUserType(Constants.ZERO);
         integralMapper.insert(integral);
         if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
             memberMapper.addIntegral(member.getId(),dealIntegralRequest.getIntegralNum(),
@@ -160,7 +169,66 @@
         return integral.getId();
     }
 
+    @Override
+    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
+    public Integer dealShopIntegral(DealIntegralRequest dealIntegralRequest) {
+        Shop shop = shopMapper.selectById(dealIntegralRequest.getMemberId());
+        if(Objects.isNull(shop)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗘埛淇℃伅");
+        }
+        Integral integral = new Integral();
+        integral.setMemberId(shop.getId());
+        integral.setCreateDate(new Date());
+        integral.setIsdeleted(Constants.ZERO);
+        integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
+        integral.setContent(dealIntegralRequest.getIntegralObjType().getNoteinfo());
+        integral.setObjId(dealIntegralRequest.getObjId());
+        integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
+        integral.setType(dealIntegralRequest.getDealType());
+        integral.setNum(dealIntegralRequest.getIntegralNum());
+        integral.setTotalNum(dealIntegralRequest.getDealType().equals(Constants.ZERO)? shop.getIntegral().add(integral.getNum()):shop.getIntegral().subtract(integral.getNum()));
+        integral.setOrderCode(dealIntegralRequest.getOrderCode());
+        integral.setUserType(Constants.ONE);
+        integralMapper.insert(integral);
+        if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
+            shopMapper.addIntegral(shop.getId(),dealIntegralRequest.getIntegralNum(),
+                    dealIntegralRequest.getIntegralObjType().getAddTitle()==Constants.ZERO?dealIntegralRequest.getIntegralNum():BigDecimal.ZERO);
+        }else{
+            shopMapper.subtractIntegral(shop.getId(),dealIntegralRequest.getIntegralNum());
+        }
+        return integral.getId();
+    }
 
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
+    public Integer dealShopAmount(DealIntegralRequest dealIntegralRequest) {
+        Shop shop = shopMapper.selectById(dealIntegralRequest.getMemberId());
+        if(Objects.isNull(shop)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗘埛淇℃伅");
+        }
+        Integral integral = new Integral();
+        integral.setMemberId(shop.getId());
+        integral.setCreateDate(new Date());
+        integral.setIsdeleted(Constants.ZERO);
+        integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
+        integral.setContent(dealIntegralRequest.getIntegralObjType().getNoteinfo());
+        integral.setObjId(dealIntegralRequest.getObjId());
+        integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
+        integral.setType(dealIntegralRequest.getDealType());
+        integral.setNum(dealIntegralRequest.getIntegralNum());
+        integral.setTotalNum(dealIntegralRequest.getDealType().equals(Constants.ZERO)? shop.getAmount().add(integral.getNum()):shop.getAmount().subtract(integral.getNum()));
+        integral.setOrderCode(dealIntegralRequest.getOrderCode());
+        integral.setUserType(Constants.TWO);
+        integralMapper.insert(integral);
+        if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
+            shopMapper.addAmount(shop.getId(),dealIntegralRequest.getIntegralNum(),
+                    dealIntegralRequest.getIntegralObjType().getAddTitle()==Constants.ZERO?dealIntegralRequest.getIntegralNum():BigDecimal.ZERO);
+        }else{
+            shopMapper.subtractAmount(shop.getId(),dealIntegralRequest.getIntegralNum());
+        }
+        return integral.getId();
+    }
 
 
     @Override
@@ -274,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());
             }
@@ -319,4 +388,87 @@
         integralDTOIPage.setCurrent(result.getCurrent());
         return PageData.from(integralDTOIPage);
     }
+
+
+
+    public List<Integral> getMyIntegralList(Integer memberId) {
+
+
+
+        QueryWrapper<Integral> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Integral::getMemberId,memberId);
+        return integralMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public PageData<Integral> findIntegralRecordPage(PageWrap<IntegralRecordDTO> pageWrap) {
+        IPage<Integral> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        Utils.MP.blankToNull(pageWrap.getModel());
+        IntegralRecordDTO model = pageWrap.getModel();
+
+        IPage<Integral> result = integralMapper.selectPage(page,new QueryWrapper<Integral>()
+                .lambda()
+                .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
+                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+                .eq(Integral::getMemberId,model.getMemberId())
+                .orderByDesc(Integral::getCreateDate)
+        );
+
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(result.getRecords())){
+            for (Integral integral:result.getRecords()) {
+                integral.setStrType(Constants.IntegralObjType.getName(integral.getObjType()));
+            }
+        }
+        return PageData.from(result);
+    }
+
+
+    @Override
+    public IntegralDataResponse getIntegralData(IntegralRecordDTO model){
+        IntegralDataResponse integralDataResponse = new IntegralDataResponse();
+        integralDataResponse.setSurplusIntegral(BigDecimal.ZERO);
+        integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
+        List<Integral> list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+                .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
+                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+                .eq(Integral::getMemberId,model.getMemberId())
+                .orderByDesc(Integral::getCreateDate));
+
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
+            integralDataResponse.setSurplusIntegral(
+                    list.stream().map(i->i.getNum().multiply(new BigDecimal(i.getType().toString()))
+                    ).reduce(BigDecimal.ZERO, BigDecimal::add)
+            );
+
+            //绉垎澶辨晥鏂瑰紡 0闀挎湡鏈夋晥 1鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
+            Integer type  = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
+            //娑堣垂鑰呯Н鍒� 闇�瑕佹煡璇㈠嵆灏嗚繃鏈熺Н鍒�
+            if(Constants.equalsInteger(type,Constants.ZERO)){
+                Integer validYear  = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
+                if(validYear.compareTo(Constants.ZERO)>Constants.ZERO){
+                     list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+                            .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
+                            .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+                            .eq(Integral::getMemberId,model.getMemberId())
+                             .apply(" CREATE_DATE >= DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL "+(validYear*12)+1+" MONTH) ")
+                            .orderByDesc(Integral::getCreateDate));
+                    BigDecimal newIntegral = list.stream().map(i->i.getNum().multiply(new BigDecimal(i.getType().toString()))
+                    ).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    integralDataResponse.setExpiredIntegral(
+                            integralDataResponse.getSurplusIntegral().compareTo(newIntegral)>Constants.ZERO?integralDataResponse.getSurplusIntegral().subtract(newIntegral):BigDecimal.ZERO
+                    );
+                }
+            }
+
+        }
+        String info  = systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALRULEINFO).getCode();
+        integralDataResponse.setInfo(info);
+
+        return integralDataResponse;
+    }
+
+
+
+
+
 }

--
Gitblit v1.9.3