From 39bd9f965dfb48925a66fcd80787144b7541b866 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期日, 09 二月 2025 18:30:30 +0800
Subject: [PATCH] bug修改
---
src/main/java/com/taoke/autopay/controller/client/OrderController.java | 279 +++++++++++++++++++++++++------------------------------
1 files changed, 129 insertions(+), 150 deletions(-)
diff --git a/src/main/java/com/taoke/autopay/controller/client/OrderController.java b/src/main/java/com/taoke/autopay/controller/client/OrderController.java
index 10de62d..4fe6b87 100644
--- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java
+++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java
@@ -18,6 +18,8 @@
import com.taoke.autopay.service.*;
import com.taoke.autopay.utils.*;
import com.taoke.autopay.utils.order.DYOrderApi;
+import com.taoke.autopay.utils.order.OrderChannelApiUtil;
+import com.taoke.autopay.utils.order.OrderChannelUtil;
import com.taoke.autopay.vo.AcceptData;
import com.taoke.autopay.vo.KeyOrderVO;
import com.taoke.autopay.vo.OrderFilter;
@@ -31,6 +33,7 @@
import javax.annotation.Resource;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
@@ -86,6 +89,12 @@
@Resource
private OrderPayFailProcessor orderPayFailProcessor;
+ @Resource
+ private PayMoneySettingService payMoneySettingService;
+
+ @Resource
+ private UserSettingService userSettingService;
+
@ResponseBody
@RequestMapping("listOrder")
@@ -104,7 +113,7 @@
clientInfoService.setActiveTime(filter.getUid(), new Date());
query.start = (filter.getPage() - 1) * filter.getPageSize();
query.count = filter.getPageSize();
- query.minCreateTime = new Date(System.currentTimeMillis()-1000*60*30L);
+ query.minCreateTime = new Date(System.currentTimeMillis() - 1000 * 60 * 30L);
if (filter.getState() != null) {
switch (filter.getState()) {
case OrderFilter.STATE_NOT_PROCESS:
@@ -165,117 +174,10 @@
return JsonUtil.loadTrueResult(data);
}
- /**
- * @return java.lang.String 杩斿洖鏄惁鍙互鍘绘敮浠�
- * @author hxh
- * @description 璁剧疆璁㈠崟鍙�
- * @date 23:08 2024/6/24
- * @param: acceptData
- * @param: id 璁㈠崟ID
- * @param: orderNo 璁㈠崟鍙�
- * @param: orderStatus 璁㈠崟鐘舵�侊細璁㈠崟宸插彇娑�/宸叉敮浠�
- **/
- @ResponseBody
- @RequestMapping("setOrderNo")
- public String setOrderNo(AcceptData acceptData, String id, String orderNo, String orderStatus) {
- loggerPay.info("setOrderNo: {}-{}-{}", id, orderNo, orderStatus);
- if (StringUtil.isNullOrEmpty(id)) {
- return JsonUtil.loadFalseResult("璇蜂笂浼爄d");
- }
- if (StringUtil.isNullOrEmpty(orderNo)) {
- return JsonUtil.loadFalseResult("orderNo");
- }
-
- KeyOrder order = keyOrderService.selectById(id);
- if (order == null) {
- return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�");
- }
-
- try {
- if (order.getOrderNo() != null && !order.getOrderNo().equalsIgnoreCase(orderNo)) {
- throw new KeyOrderException("宸茬粡澶勭悊杩囷紝涓庝箣鍓嶅鐞嗙殑璁㈠崟鍙蜂笉涓�鑷�");
- }
- } catch (KeyOrderException e) {
- return JsonUtil.loadFalseResult(e.getMessage());
- }
-
- try {
- if (!StringUtil.isNullOrEmpty(orderStatus)) {
- throw new KeyOrderException(orderStatus);
- }
- DYOrderDto dto = DYOrderApi.getOrderDetail(orderNo);
-// dto.setOrder_status(1);
- if (dto.getOrder_status() != DYOrderDto.ORDER_STATUS_NOT_PAY) {
- // 璁㈠崟涓嶅浜庡皻鏈粯娆剧姸鎬�
- KeyOrder orderUpdate = new KeyOrder();
- orderUpdate.setId(id);
- orderUpdate.setOrderState(dto.getOrder_status());
- orderUpdate.setOrderType(1);
- orderUpdate.setOrderNo(orderNo);
- orderUpdate.setOrderChannel(dto.getOrderChannel());
- orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO);
- if (order.getState() == KeyOrder.STATE_NOT_PROCESS) {
- if (dto.getOrder_status() == DYOrderDto.ORDER_STATUS_CANCELED) {
- orderUpdate.setState(KeyOrder.STATE_PAY);
- orderUpdate.setStateDesc(dto.getOrder_status_desc());
- } else {
- orderUpdate.setState(KeyOrder.STATE_PAY);
- orderUpdate.setStateDesc(dto.getOrder_status_desc());
- }
- }
- keyOrderService.update(orderUpdate);
- if (dto.getOrder_status() == DYOrderDto.ORDER_STATUS_CANCELED) {
- throw new Exception("璁㈠崟宸插彇娑�");
- } else {
- throw new Exception("璁㈠崟宸叉敮浠�");
- }
- }
-
- if (order.getUid() != null) {
- WxUserOrderCount countInfo = wxUserOrderCountService.get(order.getUid(), OrderCountTypeEnum.DY_ORDER_PAY, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
- if (countInfo != null) {
- WxUserSettings settings = wxUserSettingService.getUserSettings(order.getUid());
- if (settings.getDyOrderCountPerDay() <= countInfo.getOrderCount()) {
- throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay());
- }
- }
- }
-
- // 璁剧疆杩涘叆
- KeyOrder orderUpdate = new KeyOrder();
- orderUpdate.setId(id);
- orderUpdate.setOrderType(1);
- orderUpdate.setOrderState(dto.getOrder_status());
- orderUpdate.setOrderNo(orderNo);
- orderUpdate.setOrderChannel(dto.getOrderChannel());
- orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO);
- orderUpdate.setExcutePayTime(new Date());
- keyOrderService.update(orderUpdate);
- order = keyOrderService.selectById(id);
- return JsonUtil.loadTrueResult(gson.toJson(OrderFactory.create(order)));
- } catch (KeyOrderException e) {
- KeyOrder orderUpdate = new KeyOrder();
- orderUpdate.setId(id);
- orderUpdate.setOrderType(1);
- orderUpdate.setOrderState(0);
- orderUpdate.setOrderNo(orderNo);
- orderUpdate.setState(KeyOrder.STATE_REJECT_PAY);
- if (order.getExcutePayTime() == null) {
- orderUpdate.setExcutePayTime(new Date());
- }
- orderUpdate.setStateDesc(e.getMessage());
- keyOrderService.update(orderUpdate);
- return JsonUtil.loadFalseResult(e.getMessage());
- } catch (Exception e) {
- e.printStackTrace();
- return JsonUtil.loadFalseResult(e.getMessage());
- }
- }
-
@ResponseBody
@RequestMapping("setOrderNoV2")
public String setOrderNoV2(AcceptData acceptData, String id, String orderNoDesc, String orderStatus, String money) {
- loggerPay.info("setOrderNo: {}-{}-{}-{}", id, orderNoDesc, orderStatus, money);
+ loggerPay.info("setOrderNo[{}]: {}-{}-{}-{}", acceptData.getUid(), id, orderNoDesc, orderStatus, money);
if (StringUtil.isNullOrEmpty(id)) {
return JsonUtil.loadFalseResult("璇蜂笂浼爄d");
}
@@ -288,19 +190,19 @@
return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�");
}
- money = money.replace("楼","");
+ money = money.replace("楼", "");
- int orderType=Constant.ORDER_TYPE_UNKNOWN;
+ int orderType = Constant.ORDER_TYPE_UNKNOWN;
- if(orderNoDesc.contains("鎶栭煶")||orderNoDesc.contains("涓婃捣鏍肩墿鑷村搧")){
+ if (orderNoDesc.contains("鎶栭煶") || orderNoDesc.contains("涓婃捣鏍肩墿鑷村搧")) {
orderType = Constant.ORDER_TYPE_DY;
- }else if(orderNoDesc.contains("蹇墜")){
+ } else if (orderNoDesc.contains("蹇墜")) {
orderType = Constant.ORDER_TYPE_KS;
}
- String orderNo= "";
+ String orderNo = "";
try {
- if(orderType==Constant.ORDER_TYPE_UNKNOWN){
+ if (orderType == Constant.ORDER_TYPE_UNKNOWN) {
throw new KeyOrderException("鏈畾涔夌殑璁㈠崟绫诲瀷");
}
@@ -308,10 +210,11 @@
throw new KeyOrderException(orderStatus);
}
- DYOrderDto dyOrderDto =null;
+ DYOrderDto dyOrderDto = null;
try {
+ // 楠岃瘉璁㈠崟鏄惁鍙互鏀粯
dyOrderDto = keyOrderService.verifyKey(orderNoDesc, orderStatus, money, null, null);
- }catch(KeyVerifyException ve){
+ } catch (KeyVerifyException ve) {
throw new KeyOrderException("鍙d护楠岃瘉澶辫触锛�" + ve.getMessage());
}
// if(dyOrderDto!=null&&order.getOrderMoney()!=null){
@@ -320,32 +223,30 @@
// throw new KeyOrderException(String.format("璁㈠崟鎺ュ彛閲戦涓嶅尮閰嶏細%s-%s",dyOrderDto.getPay_amount(),MoneyUtil.getMoneyStr(order.getOrderMoney())));
// }
// }
- if(dyOrderDto!=null){
+ if (dyOrderDto != null) {
orderNo = dyOrderDto.getOrder_id();
}
+ OrderChannelEnum orderChannel = null;
+ if (dyOrderDto != null) {
+ orderChannel = OrderChannelUtil.getChannelByKey(dyOrderDto.getOrderChannel());
+ } else {
+ orderChannel = OrderChannelEnum.unknown;
+ }
+ // 楠岃瘉娓犻亾鏀粯娆℃暟鏄惁杈惧埌涓婇檺
if (order.getUid() != null) {
OrderCountTypeEnum orderCountType=null;
- switch (orderType){
- case Constant.ORDER_TYPE_DY:
- orderCountType= OrderCountTypeEnum.DY_ORDER_PAY;
- break;
- case Constant.ORDER_TYPE_KS:
- orderCountType= OrderCountTypeEnum.KS_ORDER_PAY;
- break;
+ if(orderType==Constant.ORDER_TYPE_DY){
+ orderCountType=OrderCountTypeEnum.DY_ORDER_PAY;
+ }else if(orderType==Constant.ORDER_TYPE_KS){
+ orderCountType=OrderCountTypeEnum.KS_ORDER_PAY;
}
-
- WxUserOrderCount countInfo = wxUserOrderCountService.get(order.getUid(), orderCountType, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
- if (countInfo != null) {
- WxUserSettings settings = wxUserSettingService.getUserSettings(order.getUid());
- int maxOrderCount = settings.getDyOrderCountPerDay();
- if(orderCountType == OrderCountTypeEnum.KS_ORDER_PAY){
- maxOrderCount = settings.getKsOrderCountPerDay();
- }
- if (maxOrderCount <= countInfo.getOrderCount()) {
- throw new Exception("鑰侀搧浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay());
- }
+ long todayCount = wxUserOrderCountService.sum(order.getUid(), orderCountType, orderChannel, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
+ long totalCount = wxUserOrderCountService.sum(order.getUid(), orderCountType, null, null);
+ int maxPayCount = userSettingService.getLimitCountByTotalCount(orderType, totalCount, orderChannel);
+ if (todayCount >= maxPayCount) {
+ throw new Exception(String.format("鑰侀搧浠婃棩宸茶揪鏀粯娆℃暟(%s)涓婇檺锛�%s", orderChannel.getName(), maxPayCount));
}
}
@@ -355,19 +256,21 @@
orderUpdate.setOrderType(orderType);
orderUpdate.setOrderNo(orderNo);
orderUpdate.setOrderMoney(new BigDecimal(money));
- if(dyOrderDto!=null){
+ if (dyOrderDto != null) {
orderUpdate.setOrderState(dyOrderDto.getOrder_status());
orderUpdate.setOrderChannel(dyOrderDto.getOrderChannel());
orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO);
- }else{
+ } else {
orderUpdate.setPayType(Constant.PAY_TYPE_WITH_MONEY);
orderUpdate.setOrderChannel(OrderChannelEnum.unknown.getKey());
}
orderUpdate.setExcutePayTime(new Date());
keyOrderService.update(orderUpdate);
order = keyOrderService.selectById(id);
+ order.setPayType(orderUpdate.getPayType());
return JsonUtil.loadTrueResult(gson.toJson(OrderFactory.create(order)));
} catch (KeyOrderException e) {
+ loggerPay.info(String.format("璁剧疆璁㈠崟鍙峰嚭閿欙細%s-%s", id, e.getMessage()));
KeyOrder orderUpdate = new KeyOrder();
orderUpdate.setId(id);
orderUpdate.setOrderType(orderType);
@@ -387,11 +290,87 @@
}
}
+ /**
+ * @author hxh
+ * @description 璁剧疆鍟嗗鏄惁鍙敮浠�
+ * @date 1:26 2025/2/8
+ * @param: acceptData
+ * @param: id
+ * @param: merchant
+ * @return java.lang.String
+ **/
+
+ @ResponseBody
+ @RequestMapping("isMerchantCanPay")
+ public String isMerchantCanPay(AcceptData acceptData, String id, String merchant) {
+ loggerPay.info("isMerchantCanPay[{}]: {}-{}", acceptData.getUid(), id, merchant);
+ // 鍒ゆ柇鏄惁涓哄崱閲戦
+ KeyOrder keyOrder = keyOrderService.selectById(id);
+ if (keyOrder == null) {
+ return JsonUtil.loadFalseResult("璁㈠崟ID涓嶅瓨鍦�");
+ }
+ OrderChannelEnum orderChannel = OrderChannelUtil.getChannelByKey(keyOrder.getOrderChannel());
+ if (orderChannel != OrderChannelEnum.unknown) {
+ // 涓嶆槸鍗¢噾棰濈殑璁㈠崟鍙洿鎺ユ敮浠�
+ return JsonUtil.loadTrueResult("");
+ }
+
+ // 鑾峰彇鍗¢噾棰濈殑璁剧疆淇℃伅
+ PayMoneySetting payMoneySetting = payMoneySettingService.getSettingByMoney(keyOrder.getOrderMoney());
+ if (payMoneySetting == null) {
+ return JsonUtil.loadFalseResult("璇ラ噾棰濅笉灞炰簬鍗¢噾棰濊寖鍥�");
+ }
+ if (payMoneySetting.getVerifyMerchantChannel() == null || payMoneySetting.getVerifyMerchantChannel() == OrderChannelEnum.unknown) {
+ // 娌℃湁璁剧疆鏍¢獙娓犻亾
+ return JsonUtil.loadTrueResult("");
+ }
+
+ try {
+ // 鐩墠鍙垽鏂秴浜剑
+ boolean isCanPay = OrderChannelApiUtil.isMerchantCanPay(payMoneySetting.getVerifyMerchantChannel(), merchant, keyOrder.getOrderMoney());
+ if (isCanPay) {
+ return JsonUtil.loadTrueResult("");
+ } else {
+ return JsonUtil.loadFalseResult("鍟嗗鏍¢獙鏈�氳繃");
+ }
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ return JsonUtil.loadFalseResult(e.getMessage());
+ }
+ }
+
+ /**
+ * @return java.lang.String
+ * @author hxh
+ * @description 鏄惁鍙互鎵ц鏀粯
+ * @date 0:22 2024/12/28
+ * @param: acceptData
+ * @param: id
+ **/
+ @ResponseBody
+ @RequestMapping("canExcutePay")
+ public String canExcutePay(AcceptData acceptData, String id) {
+ try {
+ KeyOrder keyOrder = keyOrderService.selectByIdForUpdate(id);
+ if (keyOrder == null) {
+ throw new Exception("璁㈠崟涓嶅瓨鍦�");
+ }
+ if (keyOrder.getState() == KeyOrder.STATE_PAY) {
+ throw new Exception("璁㈠崟宸叉敮浠�");
+ }
+ loggerPay.info("canExcutePay[{}]: {}-{}", acceptData.getUid(), id, "鍙互鏀粯");
+ return JsonUtil.loadTrueResult("");
+ } catch (Exception e) {
+ loggerPay.error("canExcutePay[{}]: {}-{}", acceptData.getUid(), id, "涓嶅彲浠ユ敮浠橈細" + e.getMessage());
+ return JsonUtil.loadFalseResult(e.getMessage());
+ }
+ }
+
@ResponseBody
@RequestMapping("setPayResult")
- public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg) {
- loggerPay.info("setPayResult: {}-{}-{}", id, paySuccess, msg);
+ public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg, String payMerchant) {
+ loggerPay.info("setPayResult[{}]: {}-{}-{}-{}", acceptData.getUid(), id, paySuccess, msg, payMerchant);
if (StringUtil.isNullOrEmpty(id)) {
return JsonUtil.loadFalseResult("璇蜂笂浼爄d");
}
@@ -406,21 +385,21 @@
if (order.getState() == KeyOrder.STATE_NOT_PROCESS) {
if (!paySuccess) {
// 鏀粯澶辫触
- if(msg!=null&&msg.contains("瓒呮椂"))
- {
+ if (msg != null && msg.contains("瓒呮椂")) {
loggerPay.info(String.format("鍥犱负瓒呮椂鏀粯澶辫触涓嶅鐞嗭細%s-%s", order.getId(), msg));
orderPayFailProcessor.processPayFail(order.getId(), msg);
- }else {
+ } else {
KeyOrder orderUpdate = new KeyOrder();
orderUpdate.setId(id);
orderUpdate.setState(KeyOrder.STATE_NOT_PAY);
- orderUpdate.setStateDesc("鏀粯澶辫触");
+ orderUpdate.setStateDesc("鏀粯澶辫触锛�" + msg);
+ orderUpdate.setPayMerchant(payMerchant);
keyOrderService.update(orderUpdate);
}
loggerPay.info("澶勭悊鏀粯澶辫触瀹屾垚");
} else {
try {
- keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
+ keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT), payMerchant);
loggerPay.info("澶勭悊鏀粯鎴愬姛瀹屾垚");
} catch (WxOrderCountException e) {
loggerPay.error(e.getMessage());
@@ -435,8 +414,8 @@
@ResponseBody
@RequestMapping("rejectPay")
- public String rejectPay(AcceptData acceptData, Long uid, String id) {
- loggerPay.info("rejectPay: {}-{}", uid, id);
+ public String rejectPay(AcceptData acceptData, String id) {
+ loggerPay.info("rejectPay: {}-{}", acceptData.getUid(), id);
if (StringUtil.isNullOrEmpty(id)) {
return JsonUtil.loadFalseResult("璇蜂笂浼爄d");
}
@@ -472,9 +451,9 @@
return JsonUtil.loadFalseResult("鍙湁绠$悊鍛樻墠鑳藉垹闄�");
}
- // 鍒犻櫎24灏忔椂涔嬪墠鐨勬暟鎹�
-// keyOrderService.deleteAll(new Date(System.currentTimeMillis() - 24*60*60*1000L));
- keyOrderService.deleteAll(new Date(System.currentTimeMillis()));
+ // 鍒犻櫎10澶╀箣鍓嶇殑鏁版嵁
+ keyOrderService.deleteAll(new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000L * 10));
+// keyOrderService.deleteAll(new Date(System.currentTimeMillis()));
// 鍒櫎鎵�鏈夋暩鎿�
return JsonUtil.loadTrueResult("");
}
--
Gitblit v1.8.0