From 417e33605dda0f28366a1d6e13c41198a156e3a7 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 27 二月 2026 16:33:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java | 221 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 137 insertions(+), 84 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 5cf3eb0..b71f22a 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
@@ -7,15 +7,11 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
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.*;
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.business.model.*;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.web.dto.IntegralDTO;
import com.doumee.dao.web.dto.IntegralRecordDTO;
@@ -67,6 +63,12 @@
@Autowired
private ShopMapper shopMapper;
+
+ @Autowired
+ private WithdrawRecordMapper withdrawRecordMapper;
+
+ @Autowired
+ private GoodsorderMapper goodsorderMapper;
@Autowired
private NoticeService noticeService;
@@ -144,8 +146,10 @@
@Override
@Transactional(rollbackFor = {Exception.class, BusinessException.class})
- public Integer dealIntegral(DealIntegralRequest dealIntegralRequest) {
- Member member = memberMapper.selectById(dealIntegralRequest.getMemberId());
+ public Integer dealIntegral(DealIntegralRequest dealIntegralRequest,Member member) {
+ if(member == null){
+ member = memberMapper.selectById(dealIntegralRequest.getMemberId());
+ }
if(Objects.isNull(member)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢ㄦ埛淇℃伅");
}
@@ -161,6 +165,7 @@
info = info .replace("${param1}",dealIntegralRequest.getParam1());
}
integral.setContent(info);
+ integral.setRemark(dealIntegralRequest.getRemark());
integral.setObjId(dealIntegralRequest.getObjId());
integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
integral.setType(dealIntegralRequest.getDealType());
@@ -169,27 +174,29 @@
integral.setOrderCode(dealIntegralRequest.getOrderCode());
integral.setUserType(Constants.ZERO);
integralMapper.insert(integral);
- if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
- memberMapper.addIntegral(member.getId(),dealIntegralRequest.getIntegralNum(),
- dealIntegralRequest.getIntegralObjType().getAddTitle()==Constants.ZERO?dealIntegralRequest.getIntegralNum():BigDecimal.ZERO);
- }else{
- memberMapper.subtractIntegral(member.getId(),dealIntegralRequest.getIntegralNum());
- }
+ LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+ .eq(Member::getId,member.getId())
+ .set(Member::getEditDate,new Date())
+ .set(Member::getEditor,user!=null ? user.getId():null)
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"total_integral = ifnull(total_integral,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"integral = ifnull(integral,0)+" + dealIntegralRequest.getIntegralNum())
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"integral = ifnull(integral,0)-" + dealIntegralRequest.getIntegralNum()));
//绔欏唴淇�
noticeService.saveMemberIntegralNotice(
dealIntegralRequest.getIntegralObjType(),Constants.ZERO,member.getId(),dealIntegralRequest.getIntegralNum(),
integral.getId(), info
);
-
-
return integral.getId();
}
@Override
- @Transactional(rollbackFor = {Exception.class, BusinessException.class})
- public Integer dealShopIntegral(DealIntegralRequest dealIntegralRequest) {
- Shop shop = shopMapper.selectById(dealIntegralRequest.getMemberId());
+ public Integer dealShopIntegral(DealIntegralRequest dealIntegralRequest,Shop shop) {
+ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ if(shop ==null){
+ shop = shopMapper.selectById(dealIntegralRequest.getMemberId());
+ }
if(Objects.isNull(shop)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗘埛淇℃伅");
}
@@ -197,7 +204,7 @@
integral.setMemberId(shop.getId());
integral.setCreateDate(new Date());
integral.setIsdeleted(Constants.ZERO);
- integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
+ integral.setTitle( dealIntegralRequest.getIntegralObjType()!=null?dealIntegralRequest.getIntegralObjType().getName():"");
String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toString());
if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
@@ -207,19 +214,28 @@
integral.setObjId(dealIntegralRequest.getObjId());
integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
integral.setType(dealIntegralRequest.getDealType());
+ integral.setRemark(dealIntegralRequest.getRemark());
integral.setNum(dealIntegralRequest.getIntegralNum());
+ shop.setIntegral(Constants.formatBigdecimal(shop.getIntegral()));
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.update(null,new UpdateWrapper<Shop>().lambda()
+ .eq(Shop::getId,shop.getId())
+ .set(Shop::getEditDate,new Date())
+ .set(Shop::getEditor,user!=null ? user.getId():null)
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"total_integral = ifnull(total_integral,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"integral = ifnull(integral,0)+" + dealIntegralRequest.getIntegralNum())
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"integral = ifnull(integral,0)-" + dealIntegralRequest.getIntegralNum()));
+ /* 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());
- }
+ }*/
//绔欏唴淇�
noticeService.saveMemberIntegralNotice(
@@ -256,12 +272,23 @@
integral.setOrderCode(dealIntegralRequest.getOrderCode());
integral.setUserType(Constants.TWO);
integralMapper.insert(integral);
- if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
+
+ LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+ .eq(Shop::getId,shop.getId())
+ .set(Shop::getEditDate,new Date())
+ .set(Shop::getEditor,user!=null ? user.getId():null)
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"total_integral = ifnull(total_integral,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"integral = ifnull(integral,0)+" + dealIntegralRequest.getIntegralNum())
+ .setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"integral = ifnull(integral,0)-" + dealIntegralRequest.getIntegralNum()));
+
+
+ /* 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();
}
@@ -445,6 +472,10 @@
.lambda()
.eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
.eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+ .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
+ .ge(Objects.nonNull(model.getStartDate()),Integral::getCreateDate, model.getStartDate()+" 00:00:00")
+ .le(Objects.nonNull(model.getEndDate()),Integral::getCreateDate, model.getEndDate()+" 23:59:59")
+ .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
.eq(Integral::getMemberId,model.getMemberId())
.orderByDesc(Integral::getCreateDate)
);
@@ -452,9 +483,46 @@
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(result.getRecords())){
for (Integral integral:result.getRecords()) {
integral.setStrObjType(Constants.IntegralObjType.getName(integral.getObjType()));
+ //浣欓鎻愮幇 鍏宠仈 鎻愮幇璁板綍
+ if(Constants.equalsInteger(integral.getObjType(),Constants.IntegralObjType.WITHDRAW_APPLY.getKey())){
+ WithdrawRecord withdrawRecord = withdrawRecordMapper.selectById(integral.getObjId());
+ if(Objects.nonNull(withdrawRecord)){
+ integral.setWithdrawStatus(withdrawRecord.getStatus());
+ }
+ }
}
}
- return PageData.from(result);
+ PageData<Integral> rr = PageData.from(result);
+ if(pageWrap.getPage() == 1 && Constants.equalsInteger(model.getUserType(),Constants.TWO)){
+ //濡傛灉鏌ヨ绗竴椤碉紝鍋氭暟鎹粺璁�
+ rr.setCountData(dealCountIntegralNum(pageWrap));
+ }
+
+ return rr;
+ }
+
+ private Integral dealCountIntegralNum(PageWrap<IntegralRecordDTO> pageWrap) {
+ IntegralRecordDTO model = pageWrap.getModel();
+ List<Integral> result = 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(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
+ .ge(Objects.nonNull(model.getStartDate()),Integral::getCreateDate, model.getStartDate()+" 00:00:00")
+ .le(Objects.nonNull(model.getEndDate()),Integral::getCreateDate, model.getEndDate()+" 23:59:59")
+ .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
+ .eq(Integral::getMemberId,model.getMemberId())
+ .orderByDesc(Integral::getCreateDate)
+ );
+ Integral integral = new Integral();
+ integral.setInAmount(BigDecimal.ZERO);
+ integral.setOutAmount(BigDecimal.ZERO);
+ if(CollectionUtils.isEmpty( result)){
+ return integral;
+ }
+ integral.setInAmount(result.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
+ integral.setOutAmount(result.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
+ return integral;
}
@Override
@@ -468,9 +536,13 @@
}
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- Date date = new Date();
- Integral integral = new Integral();
+// Date date = new Date();
+// Integral integral = new Integral();
Constants.IntegralObjType integralObjType =null;
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralNum(param.getNum());
+ dealIntegralRequest.setRemark(param.getRemark());
+ dealIntegralRequest.setDealType(param.getType());
if(Constants.equalsInteger(param.getUserType(), Constants.ZERO)){//鐢ㄦ埛璐﹀彿
MPJLambdaWrapper<Member> queryWrapper =new MPJLambdaWrapper<>();
queryWrapper.selectAll(Member.class);
@@ -489,28 +561,11 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄦ埛璐︽埛浣欓涓嶈冻锛�");
}
integralObjType = param.getType()==0?Constants.IntegralObjType.SYSTEM_RECHARGE:Constants.IntegralObjType.SYSTEM_DEDUCT;
- DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
- dealIntegralRequest.setIntegralNum(num);
- dealIntegralRequest.setDealType(param.getType());
dealIntegralRequest.setMemberId(model.getId());
- dealIntegralRequest.setObjId(null);
- dealIntegralRequest.setOrderCode(null);
+ dealIntegralRequest.setRemark(param.getRemark());
dealIntegralRequest.setIntegralObjType(integralObjType);
- this.dealIntegral(dealIntegralRequest);
+ this.dealIntegral(dealIntegralRequest,model);
-
- //璐︽埛浣欓
-// 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(param.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(param.getNum()));
-// integral.setUserType(Constants.ZERO);
}else{//缁忛攢鍟嗚处鎴�
Shop model = shopMapper.selectById(param.getMemberId());
if(model == null ||Constants.equalsObject(model.getIsdeleted(),Constants.ONE)){
@@ -522,42 +577,15 @@
// 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(param.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(param.getNum()));
-// integral.setUserType(Constants.ONE);
- DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
- dealIntegralRequest.setIntegralNum(num);
- dealIntegralRequest.setDealType(param.getType());
+ integralObjType = param.getType()==0?Constants.IntegralObjType.SHOP_SYSTEM_RECHARGE:Constants.IntegralObjType.SHOP_SYSTEM_DEDUCT;
dealIntegralRequest.setMemberId(model.getId());
- dealIntegralRequest.setObjId(null);
- dealIntegralRequest.setOrderCode(null);
dealIntegralRequest.setIntegralObjType(integralObjType);
- this.dealShopIntegral(dealIntegralRequest);
+ this.dealShopIntegral(dealIntegralRequest,model);
}
-// 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);
-// integralMapper.insert(integral);
+
}
@Override
public IntegralDataResponse getIntegralData(IntegralRecordDTO model){
@@ -569,22 +597,47 @@
IntegralDataResponse integralDataResponse = new IntegralDataResponse();
integralDataResponse.setSurplusIntegral(BigDecimal.ZERO);
integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
+ Shop shop = shopMapper.selectById(model.getMemberId());
+ if (Objects.nonNull(shop)) {
+ integralDataResponse.setSurplusIntegral(
+ Constants.equalsInteger(model.getUserType(),Constants.TWO)?shop.getAmount():shop.getIntegral());
+ }
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)
- );
-
+ //鎻愮幇涓氬姟鏁版嵁
+ if(Constants.equalsInteger(model.getUserType(),Constants.TWO)){
+ integralDataResponse.setWithdrawAmount(
+ withdrawRecordMapper.selectList(new QueryWrapper<WithdrawRecord>().lambda()
+ .eq(WithdrawRecord::getMemberId,model.getMemberId())
+ .eq(WithdrawRecord::getStatus,Constants.ONE)
+ ).stream().map(WithdrawRecord::getAmount)
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
+ );
+ integralDataResponse.setWithdrawIngAmount(
+ withdrawRecordMapper.selectList(new QueryWrapper<WithdrawRecord>().lambda()
+ .eq(WithdrawRecord::getMemberId,model.getMemberId())
+ .eq(WithdrawRecord::getStatus,Constants.ZERO)
+ ).stream().map(WithdrawRecord::getAmount)
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
+ );
+ integralDataResponse.setWaitPayAmount(
+ goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
+ .eq(Goodsorder::getDistributionShopId,model.getMemberId())
+ .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey(),
+ Constants.OrderStatus.PAY_DONE.getKey(),
+ Constants.OrderStatus.WAIT_RECEIVE.getKey())
+ ).stream().map(Goodsorder::getShopSettlement)
+ .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.ONE)){
+ if(Constants.equalsInteger(type,Constants.ONE)&& Constants.equalsInteger(model.getUserType(),Constants.ONE)){
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()
--
Gitblit v1.9.3