From ac33a3140ef8ef20dfd2537fce2dfdd0f374f30e Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 26 二月 2026 17:42:10 +0800
Subject: [PATCH] 调试
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 40 insertions(+), 14 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 5068fc0..dd78f76 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
@@ -727,6 +727,8 @@
goodsorder.setMemberId(member.getId());
goodsorder.setType(Constants.ZERO);
goodsorder.setStatus(Constants.ZERO);
+ goodsorder.setReceiveType(orderPayRequest.getReceiveType());
+ goodsorder.setCouponPrice(BigDecimal.ZERO);
Shop shop = null;
if(Constants.equalsInteger(orderPayRequest.getReceiveType(),Constants.ZERO)){
//鏌ヨ鏀惰揣鍦板潃
@@ -782,6 +784,7 @@
payConfirmRequest.setAddressId(orderPayRequest.getAddressId());
payConfirmRequest.setMemberId(member.getId());
payConfirmRequest.setCouponId(orderPayRequest.getCouponId());
+ payConfirmRequest.setUseIntegral(orderPayRequest.getUseIntegral());
//閫氳繃鏀粯纭鎺ュ彛鑾峰彇鐢熸垚鏀粯淇℃伅
OrderPayConfirmResponse orderPayConfirmResponse = this.orderPayConfirm(payConfirmRequest,memberCouponService);
if(Objects.isNull(orderPayConfirmResponse)){
@@ -793,6 +796,7 @@
goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount());
goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount());
goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE);
+ goodsorder.setGoodsNum(orderPayRequest.getPayDetailRequestList().stream().mapToInt(PayDetailRequest::getGoodsNum).sum());
if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
sumPrice = sumPrice.subtract(orderPayConfirmResponse.getMemberCoupon().getPrice());
goodsorder.setCouponId(orderPayConfirmResponse.getMemberCoupon().getId());
@@ -811,6 +815,7 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏃犳槑缁嗘暟鎹�,璇锋鏌ラ�夋嫨鏁版嵁锛�");
}
List<GoodsorderDetail> goodsOrderDetailList = new ArrayList<>();
+ BigDecimal shopSettlement = BigDecimal.ZERO;
for (OrderGoodsCalculateResponse payDetailRequest:goodsCalculateList) {
//鏌ヨ鍟嗗搧
GoodsSku goodsSku = goodsSkuMapper.selectById(payDetailRequest.getSkuId());
@@ -843,6 +848,7 @@
goodsOrderDetail.setCouponDeduct(payDetailRequest.getCouponDeductCash());
goodsOrderDetail.setIntegralDeduct(payDetailRequest.getIntegralDeductCash());
goodsOrderDetail.setOrderId(goodsorder.getId());
+ goodsOrderDetail.setGoodsId(goodsSku.getGoodsId());
//鍒ゆ柇闂ㄥ簵鏄惁璁剧疆鍟嗗搧鐨勪环鏍间俊鎭�
if(Objects.nonNull(goodsorder.getDistributionShopId())){
@@ -856,7 +862,6 @@
if(Objects.isNull(shopGoodsRelation)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝缁忛攢鍟嗘湭缁戝畾["+goods.getName()+"]鍟嗗搧锛岃鑱旂郴绠$悊鍛橈紒");
}
-
PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
//缁忛攢鍟嗕紭鎯犳壙鎷呭崰姣�
BigDecimal shopRate = new BigDecimal("100").subtract(platformConfigDTO.getTotalRate());
@@ -867,8 +872,11 @@
if(shop.getSaleType().equals(Constants.ONE)){
goodsOrderDetail.setShopSettlement(goodsOrderDetail.getPrice().subtract(shopDeductAmount));
}else {
+ //骞冲彴閾鸿揣
goodsOrderDetail.setShopSettlement(
- shopGoodsRelation.getPrice().subtract(shopGoodsRelation.getPrice()).subtract(shopDeductAmount));
+ goodsOrderDetail.getPrice()
+ .subtract(shopGoodsRelation.getPrice())
+ .subtract(shopDeductAmount));
}
if(goodsOrderDetail.getShopSettlement().compareTo(BigDecimal.ZERO)<Constants.ZERO){
goodsOrderDetail.setShopSettlement(BigDecimal.ZERO);
@@ -876,12 +884,16 @@
}else{
goodsOrderDetail.setShopSettlement(BigDecimal.ZERO);
}
+ shopSettlement = shopSettlement.add(goodsOrderDetail.getShopSettlement());
goodsOrderDetailList.add(goodsOrderDetail);
//鍒犻櫎璐墿杞﹀晢鍝�
shopcartMapper.delete(new QueryWrapper<Shopcart>().lambda()
.eq(Shopcart::getMemberId,member.getId())
.eq(Shopcart::getGoodsSkuId,goodsOrderDetail.getGoodsSkuId())
);
+ }
+ if(CollectionUtils.isNotEmpty(goodsOrderDetailList)){
+ goodsorderDetailMapper.insert(goodsOrderDetailList);
}
//绉垎鍙樺姩璁板綍
if(goodsorder.getUseIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
@@ -899,6 +911,8 @@
if(goodsorder.getPrice().compareTo(orderPayRequest.getTitlePrice())!=Constants.ZERO){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧浠锋牸鍙戠敓鍙樺寲锛岃鍒锋柊鍚庨噸鏂版敮浠橈紒");
}
+
+
//瀛樺湪鐜伴噾鏀粯
if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
return this.wxPay(goodsorder,member);
@@ -906,6 +920,7 @@
//鏃犵幇閲戞敮浠�
goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
.set(Goodsorder::getStatus,Constants.ONE)
+ .set(Goodsorder::getShopSettlement,shopSettlement)
.set(Goodsorder::getPayStatus,Constants.OrderStatus.PAY_DONE.getKey())
.set(Goodsorder::getPayDate,DateUtil.getCurrDateTime())
.set(Goodsorder::getId,goodsorder.getId())
@@ -993,7 +1008,7 @@
request.setBody("骞冲彴鍟嗗煄");
request.setAttach("shopGoods");
request.setOutTradeNo(goodsorder.getCode().toString());
- request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getPrice().toString()));
+ request.setTotalFee(1);//BaseWxPayRequest.yuanToFen(goodsorder.getPrice().toString()));
// request.setTotalFee(2);
request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss"));
request.setSpbillCreateIp(this.getIpAddr());
@@ -1244,8 +1259,7 @@
fundMapper.insert(fund);
}
//璁㈠崟宸叉敮浠樼姸鎬� 锛� 浣跨敤浜嗙Н鍒� 涓旂Н鍒嗕娇鐢ㄥぇ浜�0
- if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO
- &&Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())){
+ if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
//鏇存柊浣欓淇℃伅 娣诲姞绉垎鍙樺姩璁板綍
DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
dealIntegralRequest.setIntegralNum(goodsorder.getIntegral());
@@ -1291,6 +1305,8 @@
memberCouponMapper.updateById(memberCoupon);
}
}
+
+
}
public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){
@@ -1339,6 +1355,7 @@
OrderPayConfirmResponse orderPayConfirmResponse = new OrderPayConfirmResponse();
List<Goods> goodsList = goodsMapper.selectJoinList(Goods.class,
new MPJLambdaWrapper<Goods>()
+ .selectAll(Goods.class)
.selectAs(GoodsSku::getPrice,Goods::getSkuPrice)
.selectAs(GoodsSku::getId,Goods::getSkuId)
.selectAs(GoodsSku::getIntegralRate,Goods::getDeductRata)
@@ -1349,8 +1366,17 @@
if(CollectionUtils.isEmpty(goodsList)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈尮閰嶅埌鍟嗗搧淇℃伅");
}
- List<OrderGoodsCalculateResponse> goodsCalculateList = ListUtil.copyProperties(goodsList,OrderGoodsCalculateResponse::new);
+ List<OrderGoodsCalculateResponse> goodsCalculateList = ListUtil.copyProperties(goodsList,OrderGoodsCalculateResponse::new);
+ String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
+ for (OrderGoodsCalculateResponse orderGoodsCalculateResponse:goodsCalculateList) {
+ orderGoodsCalculateResponse.setSkuImg(StringUtils.isNotBlank(orderGoodsCalculateResponse.getSkuImg())?fullUrl+orderGoodsCalculateResponse.getSkuImg():null);
+ if(Objects.isNull(orderGoodsCalculateResponse.getCouponDeductCash())){
+ orderGoodsCalculateResponse.setCouponDeductCash(BigDecimal.ZERO);
+ }
+// orderGoodsCalculateResponse.setIntegralDeductCash(BigDecimal.ZERO);
+ }
//璁㈠崟鎬婚噾棰�
BigDecimal amount = BigDecimal.ZERO;
//浼樻儬鍒告姷鎵i噾棰�
@@ -1383,7 +1409,7 @@
if(CollectionUtils.isEmpty(memberCoupons)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閫夋嫨鐨勪紭鎯犲埜鏃犳晥锛岃鍒锋柊閲嶈瘯");
}
- memberCoupon = memberCouponList.get(Constants.ZERO);
+ memberCoupon = memberCoupons.get(Constants.ZERO);
couponAmount = memberCoupon.getValidAmount();
memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
orderPayConfirmResponse.setMemberCoupon(memberCoupon);
@@ -1490,12 +1516,12 @@
if(Constants.equalsInteger(type,Constants.ZERO)){
if( Constants.equalsInteger(platformConfigDTO.getReturnMemberIntegralStatus(),Constants.ZERO)
&& Objects.nonNull(platformConfigDTO.getReturnMemberIntegral())){
- integralBack = payAmount.divide(platformConfigDTO.getReturnMemberIntegral(),0,BigDecimal.ROUND_DOWN);
+ integralBack = payAmount.multiply(platformConfigDTO.getReturnMemberIntegral()).divide(BigDecimal.ONE,0,BigDecimal.ROUND_DOWN);
}
}else{
if( Constants.equalsInteger(platformConfigDTO.getReturnShopIntegralStatus(),Constants.ZERO)
&& Objects.nonNull(platformConfigDTO.getReturnShopIntegral())){
- integralBack = payAmount.divide(platformConfigDTO.getReturnShopIntegral(),0,BigDecimal.ROUND_DOWN);
+ integralBack = payAmount.multiply(platformConfigDTO.getReturnShopIntegral()).divide(BigDecimal.ONE,0,BigDecimal.ROUND_DOWN);
}
}
return integralBack;
@@ -1511,14 +1537,14 @@
*/
public BigDecimal calculateIntegralRata(OrderPayConfirmResponse orderPayConfirmResponse,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalIntegral){
//褰撳墠閫夋嫨鍟嗗搧鏈�澶у彲鐢ㄧН鍒嗘姷鎵g殑閲戦
- BigDecimal maxDeductionCash = goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(i.getCouponDeductCash())
+ 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);
- //绉垎 - 鐜伴噾 姣斾緥
+ //绉垎-鐜伴噾鍏戞崲姣斾緥锛圶XX绉垎鎶垫墸1鍏冿級
BigDecimal cashToIntegralRata = new BigDecimal(systemDictDataBiz.queryByCode(Constants.SHOP_CONFIG,Constants.INTEGRAL_EXCHANGE_CASH_RATA).getCode());
//褰撳墠閫夋嫨鍟嗗搧鎶垫墸闇�瑕佷娇鐢ㄧ殑绉垎
- BigDecimal maxDeductionIntegral = maxDeductionCash.multiply(cashToIntegralRata).multiply(new BigDecimal("100"));
+ BigDecimal maxDeductionIntegral = maxDeductionCash.multiply(cashToIntegralRata);
//鑾峰彇褰撳墠闇�瑕佹敮浠樼殑鐜伴噾鎬婚
- BigDecimal payCash = goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(i.getCouponDeductCash())).reduce(BigDecimal.ZERO,BigDecimal::add);
+ BigDecimal payCash = goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(Objects.isNull(i.getCouponDeductCash())?BigDecimal.ZERO:i.getCouponDeductCash())).reduce(BigDecimal.ZERO,BigDecimal::add);
//濡傛灉瀹為檯绉垎灏戜簬鏈�澶ч渶瑕佺Н鍒� 闇�瑕佽绠楁瘮渚嬪崰姣� 鍘诲搴旀坊鍔犺嚦瀵瑰簲鐨勫晢鍝侀噷
//寰幆涓嬪崟鍟嗗搧鍒楄〃 璁$畻搴旇浣跨敤鐨勭Н鍒嗗��
@@ -1536,7 +1562,7 @@
//鍓╀綑绉垎鍊�
orderPayConfirmResponse.setSurplusIntegral(totalIntegral);
//瀹為檯鎶垫墸浣跨敤绉垎
- orderPayConfirmResponse.setDeductIntegral(totalIntegral.compareTo(maxDeductionCash)<=Constants.ZERO?totalIntegral:maxDeductionIntegral);
+ orderPayConfirmResponse.setDeductIntegral(totalIntegral.compareTo(maxDeductionIntegral)<=Constants.ZERO?totalIntegral:maxDeductionIntegral);
return realDeductionCash;
}
--
Gitblit v1.9.3