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 | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 165 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 16cf274..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
@@ -16,8 +16,11 @@
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;
@@ -385,4 +388,166 @@
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
+ @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();
+ 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