From fa7ac16021db8d9a6a5bc214f50600420876325e Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 08 九月 2025 10:57:41 +0800
Subject: [PATCH] jtt808初始化
---
server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java | 97 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 75 insertions(+), 22 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
index e414e88..de6b416 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
@@ -9,6 +9,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.core.wx.WxPayProperties;
+import com.doumee.dao.business.GoodsorderMapper;
import com.doumee.dao.business.WxBillDetailMapper;
import com.doumee.dao.business.WxBillMapper;
import com.doumee.dao.business.model.Goodsorder;
@@ -33,6 +34,7 @@
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.*;
/**
@@ -45,6 +47,8 @@
@Autowired
private WxBillMapper wxBillMapper;
+ @Autowired
+ private GoodsorderMapper goodsorderMapper;
@Autowired
private WxBillDetailMapper wxBillDetailMapper;
@Override
@@ -112,6 +116,7 @@
bill1.setSumTotalFee(bill.getSumTotalFee());//浜ゆ槗閲戦
bill1.setSumCmmsAmt(bill.getSumCmmsAmt());//浜ゆ槗鎵嬬画璐�
bill1.setSumSuccessFee(bill.getSumSuccessFee());//鎴愬姛浜ゆ槗閲戦
+ bill1.setDiscountFee(bill.getDiscountFee());//鎴愬姛浜ゆ槗閲戦
WxBill bill2 = initBillData();//璁板綍閫�娆剧粺璁℃暟鎹�
bill2.setSumRefundBill(bill.getSumRefundBill());//閫�娆剧瑪鏁�
@@ -127,11 +132,13 @@
bill3.setSumRefundCmmsAmt(Constants.formatDecimalNum(bill.getSumRefundCmmsAmt()).add(Constants.formatDecimalNum(bill.getSumCmmsAmt())));//鎵嬬画璐�
bill3.setSumRefundFee(bill.getSumRefundFee());//閫�娆鹃噾棰�
bill3.setTotal(bill.getTotal());
+ bill3.setBikeFee(bill.getBikeFee());
+ bill3.setDiscountFee(bill.getDiscountFee());//鎴愬姛浜ゆ槗閲戦
QueryWrapper<WxBillDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().ge(param.getStartDate() !=null,WxBillDetail::getPid,DateUtil.getShortDateStr(param.getStartDate()));
queryWrapper.lambda().le(param.getEndDate() !=null,WxBillDetail::getPid,DateUtil.getShortDateStr(param.getEndDate()));
- queryWrapper.lambda().ne(WxBillDetail::getAppid, WxMiniConfig.wxPayService.getConfig().getAppId());//闈炶嚜琛岃溅鏀跺叆缁熻
+ queryWrapper.lambda().ne(WxBillDetail::getAppid, WxMiniConfig.wxPayV2Service.getConfig().getSubAppId());//闈炶嚜琛岃溅鏀跺叆缁熻
queryWrapper.lambda().groupBy(WxBillDetail::getBillStatus);
queryWrapper.select( "count(id) as sum_bill"
,"sum(settlement_total_fee) as settlement_total_fee"
@@ -143,13 +150,14 @@
for(WxBillDetail detail : detailList){
if(StringUtils.equals(detail.getBillStatus(), "SUCCESS")){
//瀹炴敹鏁版嵁
- bill4.setSumBill(detail.getSumBill());//浜ゆ槗绗旀暟
+ bill4.setSumBill( detail.getSumBill());//浜ゆ槗绗旀暟
bill4.setSumSuccessFee(Constants.formatDecimalNum(detail.getSettlementTotalFee()));//浜ゆ槗閲戦
bill4.setSumCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//浜ゆ槗鎵嬬画璐�
- } else if(StringUtils.equals(detail.getBillStatus(), "REFUND")){
+ } else if(StringUtils.equals(detail.getBillStatus(), "REFUND") || StringUtils.equals(detail.getBillStatus(), "REVOKED")){
//閫�娆炬暟鎹�
- bill4.setSumRefundBill(detail.getSumBill());//閫�娆剧瑪鏁�
- bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//閫�娆炬墜缁垂
+ bill4.setSumRefundBill(Constants.formatIntegerNum(bill4.getSumRefundBill())+detail.getSumBill());//閫�娆剧瑪鏁�
+ bill4.setSumRefundFee(Constants.formatDecimalNum(bill4.getSumRefundFee()).add(Constants.formatDecimalNum(detail.getRefundFee())));
+ bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(bill4.getSumRefundCmmsAmt()).add(Constants.formatDecimalNum(Constants.formatDecimalNum(detail.getCmmsAmt()))));//閫�娆炬墜缁垂
}
}
//缁撶畻閲戦
@@ -237,6 +245,7 @@
,"sum(total) as total"
,"sum(sum_refund_cmms_amt) as sum_refund_cmms_amt"
,"sum(bike_fee) as bike_fee"
+ ,"sum(discount_fee) as discount_fee"
);
WxBill bill = wxBillMapper.selectOne(param.last("limit 1"));
if(bill == null){
@@ -259,6 +268,11 @@
bill.setSumRefundCmmsAmt(new BigDecimal(0.00));
bill.setTotal(new BigDecimal(0.00));
bill.setBikeFee(new BigDecimal(0.00));
+ bill.setDiscountFee(new BigDecimal(0.00));
+ bill.setBikeRefundFee(new BigDecimal(0.00));
+ bill.setDiscountRefundFee(new BigDecimal(0.00));
+ bill.setDiscountRefundCmmsAmt(new BigDecimal(0.00));
+ bill.setBikeRefundCmmsAmt(new BigDecimal(0.00));
return bill;
}
@Override
@@ -277,9 +291,11 @@
// Date ydate = DateUtil.addDaysToDate(new Date(), -1);
request.setBillDate(billDate);
request.setBillType("SUCCESS");
+ request.setSubMchId(WxMiniConfig.wxProperties.getSubMchId());
+
WxPayBillResult response = null;
try {
- response = WxMiniConfig.wxPayService.downloadBill(request);
+ response = WxMiniConfig.wxPayV2Service.downloadBill(request);
}catch (WxPayException e){
}
@@ -287,7 +303,7 @@
//璇锋眰閫�娆惧崟浜ゆ槗璁板綍姹囨�绘暟鎹�
WxPayBillResult responseRefund = null;
try {
- responseRefund = WxMiniConfig.wxPayService.downloadBill(request);
+ responseRefund = WxMiniConfig.wxPayV2Service.downloadBill(request);
}catch (WxPayException e){
}
@@ -304,10 +320,6 @@
bill.setSumTotalFee(formatStringToDecimal(response.getTotalAmount()));
//搴旂粨璁㈠崟鎬婚噾棰�
bill.setSumSuccessFee(formatStringToDecimal(response.getTotalFee()));
- //閫�娆炬�婚噾棰�
- bill.setSumRefundFee(formatStringToDecimal(response.getTotalFee()));
- //閫�娆炬�婚噾棰�
- bill.setSumApplyRefundFee(formatStringToDecimal(response.getTotalAppliedRefundFee()));
//浜ゆ槗鎬绘墜缁垂閲戦
bill.setSumCmmsAmt(formatStringToDecimal(response.getTotalPoundageFee()));
detailList.addAll(getDetialModelByInfo(bill,response.getBillInfoList()));
@@ -316,8 +328,12 @@
//閫�娆惧崟鎬绘暟绱杩涘叆
// bill.setSumBill(bill.getSumBill()+(Integer.parseInt(response.getTotalRecord()));
bill.setSumRefundBill(Integer.parseInt(responseRefund.getTotalRecord()));//閫�娆剧殑璁㈠崟鏁�
+ //閫�娆炬�婚噾棰�
+ bill.setSumRefundFee(formatStringToDecimal(responseRefund.getTotalRefundFee()));
+ //閫�娆炬�婚噾棰�
+ bill.setSumApplyRefundFee(formatStringToDecimal(responseRefund.getTotalAppliedRefundFee()));
bill.setSumRefundCmmsAmt(formatStringToDecimal(responseRefund.getTotalPoundageFee()));//閫�娆炬�绘墜缁垂
- bill.setSumCouponRefundFee(formatStringToDecimal(responseRefund.getTotalCouponFee()));//閫�娆炬�绘墜缁垂
+ bill.setSumCouponRefundFee(formatStringToDecimal(responseRefund.getTotalCouponFee()));//閫�娆炬�婚噾棰�
detailList.addAll(getDetialModelByInfo(bill,responseRefund.getBillInfoList()));
}
wxBillMapper.delete(new UpdateWrapper<WxBill>().lambda().eq( WxBill::getId, bill.getId()));
@@ -330,7 +346,22 @@
// bill.setBikeFee(bill.getSumSuccessFee().subtract(bill.getSumRefundFee()));
wxBillMapper.insert(bill);
if(detailList.size()>0){
- wxBillDetailMapper.insertBatch(detailList);
+ int sublistSize = 500;
+ int startIndex = 0;
+ int endIndex = sublistSize;
+ while (startIndex < detailList.size()) {
+ if (endIndex > detailList.size()) {
+ endIndex = detailList.size();
+ }
+
+ List<WxBillDetail> sublist = detailList.subList(startIndex, endIndex);
+ if(sublist.size()>0){
+// wxBillDetailMapper.insertBatch(sublist);
+ wxBillDetailMapper.insert(sublist);
+ }
+ startIndex = endIndex;
+ endIndex += sublistSize;
+ }
}
}
@@ -348,7 +379,7 @@
//鍙兘鍚屾鏄ㄥぉ10涔嬪墠鐨勬暟鎹�
Calendar caln = Calendar.getInstance();
caln.setTime(ydate);
- if(caln.get(Calendar.HOUR_OF_DAY) <= 9){
+ if(caln.get(Calendar.HOUR_OF_DAY) > 10){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈�杩戝悓姝ユ椂闂村彧鑳芥埅姝㈠埌鏄ㄥぉ10鐐瑰墠锛�");
}
}
@@ -368,7 +399,7 @@
if(billInfoList!=null){
for (int i = 0; i <billInfoList.size(); i++) {
WxPayBillInfo info =billInfoList.get(i);
- if(StringUtils.equals(info.getTradeType(),"REFUND" ) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){
+ if((StringUtils.equals(info.getTradeType(),"REFUND" )||StringUtils.equals(info.getTradeType(),"REVOKED" )) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){
//濡傛灉鏄潪鎴愬姛鐨勯��娆炬暟鎹紝涓嶈繘琛屽悓姝�
continue;
}
@@ -406,15 +437,37 @@
detail.setRefundSuccessDate(DateUtil.getDateFromString2(info.getRefundSuccessTime()));//鎴愬姛閫�娆炬椂闂�
detail.setRefundApplyDate(DateUtil.getDateFromString2(info.getRefundTime())); //鐢宠閫�娆炬椂闂�
//璁$畻鑷杞︽敹鍏ワ紝鍖归厤鏉ヨ嚜鑷杞﹀皬绋嬪簭鐨勬墍鏈夋敮浠樻垚鍔熷拰閫�娆炬垚鍔熺殑閲戦锛屼綔涓鸿嚜琛岃溅鏀跺叆锛堢疮璁℃敹娆鹃噾棰�-绱閫�娆炬垚鍔熼噾棰濓級
- if(StringUtils.equals(detail.getAppid(), WxMiniConfig.wxPayService.getConfig().getAppId())){
- //鑷杞︽敹鍏ョ疮璁℃敹娆鹃噾棰�
- bill.setBikeFee(bill.getBikeFee().add(detail.getSettlementTotalFee()));
- if(StringUtils.equals(detail.getRefundSuccessStatus(),"SUCCESS")){
- //濡傛灉閫�娆炬垚鍔燂紝鎵i櫎閫�娆鹃噾棰�
- bill.setBikeFee(bill.getBikeFee().subtract(detail.getApplyRefundFee()));
+ if(StringUtils.equals(detail.getAppid(), WxMiniConfig.wxPayV2Service.getConfig().getSubAppId())){
+ Goodsorder order = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda()
+ .eq(Goodsorder::getId,info.getOutTradeNo()));
+ if(Constants.equalsInteger(order.getType(),Constants.ZERO)){
+ //鑷杞︽敹鍏ョ疮璁℃敹娆鹃噾棰�(鏀粯鎴愬姛鎬婚噾棰�-閫�娆炬�婚噾棰濓級
+ if(StringUtils.equals(info.getTradeState(),"SUCCESS")){
+ //濡傛灉鏄氦鏄擄紙鍖呭惈鎵嬬画璐癸級
+ bill.setBikeFee(bill.getBikeFee().add(detail.getSettlementTotalFee()));
+// bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
+ }else if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){
+ //濡傛灉閫�娆炬垚鍔燂紝鎵i櫎閫�娆鹃噾棰�(鍖呭惈鎵嬬画璐癸級
+ bill.setBikeFee(bill.getBikeFee().subtract(detail.getRefundFee()) );
+ bill.setBikeRefundFee(bill.getBikeRefundFee().add(detail.getRefundFee()) );
+ bill.setBikeRefundCmmsAmt(bill.getBikeRefundCmmsAmt().add(detail.getCmmsAmt()) );
+// bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
+ }
+ }else{
+ //鑷杞︽敹鍏ョ疮璁℃敹娆鹃噾棰�(鏀粯鎴愬姛鎬婚噾棰�-閫�娆炬�婚噾棰濓級
+ if(StringUtils.equals(info.getTradeState(),"SUCCESS")){
+ //濡傛灉鏄氦鏄擄紙鍖呭惈鎵嬬画璐癸級
+ bill.setDiscountFee(bill.getDiscountFee().add(detail.getSettlementTotalFee()));
+// bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
+ }else if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){
+ //濡傛灉閫�娆炬垚鍔燂紝鎵i櫎閫�娆鹃噾棰�(鍖呭惈鎵嬬画璐癸級
+ bill.setDiscountFee(bill.getDiscountFee().subtract(detail.getRefundFee()) );
+ bill.setDiscountRefundFee(bill.getDiscountRefundFee().add(detail.getRefundFee()) );
+ bill.setDiscountRefundCmmsAmt(bill.getDiscountRefundCmmsAmt().add(detail.getCmmsAmt()) );
+// bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) );
+ }
}
}
-
detailList.add(detail);
}
}
--
Gitblit v1.9.3