From 77fc61a25c14071584e45731476207959137d6b6 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 04 三月 2026 17:17:39 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 42 ++++++++++++++++++++++++++----------------
1 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 4ffb780..9c0c299 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -857,12 +857,14 @@
if(!Constants.equalsInteger(goods.getStatus(),Constants.ZERO)||!Constants.equalsInteger(goods.getIsdeleted(),Constants.ZERO)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧宸插垹闄ゆ垨宸蹭笅鏋讹紝鏃犳硶涓嬪崟");
}
- if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧搴撳瓨涓嶈冻锛屾棤娉曚笅鍗曪紒");
+ if(Objects.nonNull(goodsSku.getStock())){
+ if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧搴撳瓨涓嶈冻锛屾棤娉曚笅鍗曪紒");
+ }
+ //鍟嗗搧搴撳瓨鎵i櫎
+ goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum()))));
+ goodsSkuMapper.updateById(goodsSku);
}
- //鍟嗗搧搴撳瓨鎵i櫎
- goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum()))));
- goodsSkuMapper.updateById(goodsSku);
GoodsorderDetail goodsOrderDetail = new GoodsorderDetail();
goodsOrderDetail.setCreator(member.getId());
goodsOrderDetail.setCreateDate(new Date());
@@ -1418,7 +1420,6 @@
if(Objects.isNull(orderGoodsCalculateResponse.getCouponDeductCash())){
orderGoodsCalculateResponse.setCouponDeductCash(BigDecimal.ZERO);
}
-// orderGoodsCalculateResponse.setIntegralDeductCash(BigDecimal.ZERO);
}
//璁㈠崟鎬婚噾棰�
BigDecimal amount = BigDecimal.ZERO;
@@ -1444,8 +1445,12 @@
orderPayConfirmResponse.setCouponAmount(couponAmount);
//鑾峰彇鍙互浣跨敤鐨勪紭鎯犲埜
List<MemberCoupon> memberCouponList = memberCouponService.getApplyCoupon(request.getPayDetailRequestList(),request.getMemberId());
+
if(CollectionUtils.isNotEmpty(memberCouponList)){
orderPayConfirmResponse.setMemberCouponList(memberCouponList);
+ if(Objects.nonNull(request.getCouponId())&&Constants.equalsInteger(request.getCouponId(),-Constants.ONE)&&Objects.nonNull(memberCouponList)){
+ request.setCouponId(memberCouponList.get(Constants.ZERO).getId());
+ }
//濡傛灉閫夋嫨浜嗕紭鎯犲埜锛屽垯鍒ゆ柇閫夋嫨鐨勪紭鎯犲埜鏄惁鏈夋晥
if(Objects.nonNull(request.getCouponId())){
List<MemberCoupon> memberCoupons = memberCouponList.stream().filter(i->Constants.equalsInteger(i.getId(),request.getCouponId())).collect(Collectors.toList());
@@ -1454,18 +1459,18 @@
}
memberCoupon = memberCoupons.get(Constants.ZERO);
couponAmount = memberCoupon.getValidAmount();
- memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
+// memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
orderPayConfirmResponse.setMemberCoupon(memberCoupon);
}
}else {
- if(Objects.nonNull(request.getCouponId())){
+ if(Objects.nonNull(request.getCouponId())&&!Constants.equalsInteger(request.getCouponId(),-Constants.ONE)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犲彲鐢ㄤ紭鎯犲埜锛岃鍒锋柊鏌ョ湅");
}
}
//鏌ヨ鐢ㄦ埛鎬荤Н鍒�
Member member = memberMapper.selectById(request.getMemberId());
//鏈�浣庡彲鐢ㄥ惎鐢ㄧН鍒�
- BigDecimal minimumIntegral = new BigDecimal(systemDictDataBiz.queryByCode(Constants.SHOP_CONFIG,Constants.MINIMUM_AVAILABLE_INTEGRAL).getCode());
+ BigDecimal minimumIntegral = new BigDecimal(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET,Constants.INTERALSET_MININTEGRALPRICELIMIT).getCode());
//绉垎鍙娇鐢ㄧ姸鎬� 澶т簬0 澶т簬鏈�灏忓彲鐢ㄩ厤缃Н鍒嗗��
orderPayConfirmResponse.setIntegralStatus(
(member.getIntegral().compareTo(BigDecimal.ZERO)<=Constants.ZERO||
@@ -1476,6 +1481,8 @@
orderPayConfirmResponse.setIntegralAmount(integralAmount);
if(Constants.equalsInteger(orderPayConfirmResponse.getIntegralStatus(),Constants.ZERO)){
integralAmount = this.calculateIntegralRata(orderPayConfirmResponse,goodsCalculateList,member.getIntegral());
+ }else{
+ orderPayConfirmResponse.setSurplusIntegral(member.getIntegral());
}
//閭垂閲戦
@@ -1489,7 +1496,7 @@
}
Areas areas = areasMapper.selectOne(new QueryWrapper<Areas>().lambda()
.eq(Areas::getIsdeleted,Constants.ZERO)
- .eq(Areas::getId,StringUtils.leftPad(addr.getAreaId().toString().substring(0,2),6,"0"))
+ .eq(Areas::getId,StringUtils.rightPad(addr.getAreaId().toString().substring(0,2),6,"0"))
.isNotNull(Areas::getYunFeeId)
.last(" limit 1 ")
);
@@ -1506,7 +1513,7 @@
BigDecimal totalWeight = goodsCalculateList.stream().map(i->
i.getWeight().multiply(new BigDecimal(i.getGoodsNum().toString()))
).reduce(BigDecimal.ZERO,BigDecimal::add);
- if(totalWeight.compareTo(mailConfigResponse.getWeight0())>=Constants.ZERO){
+ if(totalWeight.compareTo(mailConfigResponse.getWeight0())<=Constants.ZERO){
mailAmount = mailConfigResponse.getFee0();
}else{
//瓒呴噸閲嶉噺
@@ -1529,7 +1536,7 @@
orderPayConfirmResponse.setIntegralAmount(integralAmount);
}
//浣跨敤浼樻儬鍒� 鍑忓幓浼樻儬鍒告姷鎵i噾棰�
- if(Objects.nonNull(request.getCouponId())){
+ if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
orderPayConfirmResponse.setCouponAmount(couponAmount);
}
//瀹為檯鏀粯閲戦 鍑忓幓浼樻儬鍒搞�佺Н鍒嗘姷鎵i噾棰�
@@ -1581,9 +1588,9 @@
public BigDecimal calculateIntegralRata(OrderPayConfirmResponse orderPayConfirmResponse,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalIntegral){
//褰撳墠閫夋嫨鍟嗗搧鏈�澶у彲鐢ㄧН鍒嗘姷鎵g殑閲戦
BigDecimal maxDeductionCash = goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(Objects.isNull(i.getCouponDeductCash())?BigDecimal.ZERO:i.getCouponDeductCash())
- .multiply(i.getDeductRata()).multiply(new BigDecimal("0.01"))).reduce(BigDecimal.ZERO,BigDecimal::add);
+ .multiply(i.getDeductRata()).divide(new BigDecimal("100"),2,RoundingMode.DOWN)).reduce(BigDecimal.ZERO,BigDecimal::add);
//绉垎-鐜伴噾鍏戞崲姣斾緥锛圶XX绉垎鎶垫墸1鍏冿級
- BigDecimal cashToIntegralRata = new BigDecimal(systemDictDataBiz.queryByCode(Constants.SHOP_CONFIG,Constants.INTEGRAL_EXCHANGE_CASH_RATA).getCode());
+ BigDecimal cashToIntegralRata = new BigDecimal(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET,Constants.INTERALSET_DEDUCTINTEGRALLIMIT).getCode());
//褰撳墠閫夋嫨鍟嗗搧鎶垫墸闇�瑕佷娇鐢ㄧ殑绉垎
BigDecimal maxDeductionIntegral = maxDeductionCash.multiply(cashToIntegralRata);
//鑾峰彇褰撳墠闇�瑕佹敮浠樼殑鐜伴噾鎬婚
@@ -1593,7 +1600,9 @@
//寰幆涓嬪崟鍟嗗搧鍒楄〃 璁$畻搴旇浣跨敤鐨勭Н鍒嗗��
BigDecimal realDeductionCash = BigDecimal.ZERO;
for (int j = 0; j < goodsCalculateList.size(); j++) {
- BigDecimal deductionCash = goodsCalculateList.get(j).getSkuAmount().subtract(goodsCalculateList.get(j).getCouponDeductCash());
+ //鑾峰彇鏈�澶у彲鎶垫墸閲戦
+ BigDecimal deductionCash = goodsCalculateList.get(j).getSkuAmount().subtract(goodsCalculateList.get(j).getCouponDeductCash())
+ .multiply(goodsCalculateList.get(j).getDeductRata()).divide(new BigDecimal("100"),2,RoundingMode.DOWN);
goodsCalculateList.get(j).setIntegralMaxDeductCash(deductionCash);
//濡傛灉鍓╀綑绉垎澶т簬鍙互浣跨敤绉垎 鍒欑洿鎺ユ弧棰濊绠� 鍙嶄箣 鍓╀綑绉垎涓嶈兘婊¤冻鍏ㄩ儴鎶垫墸 鍗曠嫭璁$畻姣忎釜鍟嗗搧鍗犳瘮
if(totalIntegral.compareTo(maxDeductionIntegral)<Constants.ZERO){
@@ -2279,6 +2288,7 @@
List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
.eq(Goodsorder::getIsdeleted,Constants.ZERO)
.eq(Goodsorder::getReceiveType,Constants.ONE)
+ .isNotNull(Goodsorder::getExchangeCode)
.in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey(),
Constants.OrderStatus.WAIT_PAY.getKey(),
Constants.OrderStatus.PAY_DONE.getKey())
@@ -2319,7 +2329,7 @@
List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
.eq(Goodsorder::getIsdeleted, Constants.ZERO)
.eq(Goodsorder::getStatus, Constants.OrderStatus.WAIT_PAY.getKey())
- .ge(Goodsorder::getCreateDate, "DATE_SUB(NOW(), INTERVAL 15 MINUTE)")
+ .apply(" CREATE_DATE > DATE_SUB(NOW(), INTERVAL 15 MINUTE) ")
);
if(CollectionUtils.isNotEmpty(goodsorderList)){
for (Goodsorder goodsorder:goodsorderList) {
--
Gitblit v1.9.3