From 320e9165ac6cc6d90978fbef3074a8ed9add1790 Mon Sep 17 00:00:00 2001
From: Administrator <1101184511@qq.com>
Date: 星期五, 09 五月 2025 01:21:32 +0800
Subject: [PATCH] 后台管理页面完成
---
src/main/java/com/taoke/autopay/controller/client/OrderController.java | 301 ++++++++++++++++++++++++-------------------------
1 files changed, 148 insertions(+), 153 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 49bc15a..dc44d01 100644
--- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java
+++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java
@@ -14,9 +14,13 @@
import com.taoke.autopay.exception.KeyVerifyException;
import com.taoke.autopay.exception.WxOrderCountException;
import com.taoke.autopay.factory.OrderFactory;
+import com.taoke.autopay.manager.OrderPayFailProcessor;
+import com.taoke.autopay.manager.PayCountVerifyManager;
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;
@@ -30,6 +34,7 @@
import javax.annotation.Resource;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
@@ -82,6 +87,18 @@
@Resource
private SystemConfigService systemConfigService;
+ @Resource
+ private OrderPayFailProcessor orderPayFailProcessor;
+
+ @Resource
+ private PayMoneySettingService payMoneySettingService;
+
+ @Resource
+ private UserSettingService userSettingService;
+
+ @Resource
+ private PayCountVerifyManager payCountVerifyManager;
+
@ResponseBody
@RequestMapping("listOrder")
@@ -100,6 +117,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);
if (filter.getState() != null) {
switch (filter.getState()) {
case OrderFilter.STATE_NOT_PROCESS:
@@ -160,117 +178,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(), "yyyyMMdd"));
- 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");
}
@@ -283,19 +194,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("鎶栭煶")){
+ 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("鏈畾涔夌殑璁㈠崟绫诲瀷");
}
@@ -303,10 +214,11 @@
throw new KeyOrderException(orderStatus);
}
- DYOrderDto dyOrderDto =null;
+ DYOrderDto dyOrderDto = null;
try {
- dyOrderDto = keyOrderService.verifyKey(orderNoDesc, orderStatus, money);
- }catch(KeyVerifyException ve){
+ // 楠岃瘉璁㈠崟鏄惁鍙互鏀粯
+ dyOrderDto = keyOrderService.verifyKey(orderNoDesc, orderStatus, money, null, null);
+ } catch (KeyVerifyException ve) {
throw new KeyOrderException("鍙d护楠岃瘉澶辫触锛�" + ve.getMessage());
}
// if(dyOrderDto!=null&&order.getOrderMoney()!=null){
@@ -315,33 +227,20 @@
// 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;
- }
-
- WxUserOrderCount countInfo = wxUserOrderCountService.get(order.getUid(), orderCountType, TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"));
- 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());
- }
- }
+ payCountVerifyManager.verifyPayCount(order.getUid(), orderType, orderChannel);
}
// 璁剧疆杩涘叆
@@ -350,18 +249,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);
@@ -381,11 +283,103 @@
}
}
+ /**
+ * @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) {
+ keyOrderService.rejectPay(keyOrder.getId(),"浠樻閲戦涓嶅睘浜庡崱閲戦鑼冨洿");
+ 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) {
+ // 閫氳繃鍟嗗鏍¢獙
+ try {
+ payCountVerifyManager.verifyPayCount(keyOrder.getUid(), keyOrder.getOrderType(), payMoneySetting.getVerifyMerchantChannel());
+ }catch (KeyOrderException ee){
+ // 鎷掔粷鏀粯
+ keyOrderService.rejectPay(keyOrder.getId(), ee.getMessage());
+ return JsonUtil.loadFalseResult(ee.getMessage());
+ }finally {
+ // 鏇存柊娓犻亾
+ KeyOrder update = new KeyOrder();
+ update.setId(keyOrder.getId());
+ update.setOrderChannel(payMoneySetting.getVerifyMerchantChannel().getKey());
+ keyOrderService.update(update);
+ }
+ return JsonUtil.loadTrueResult("");
+ } else {
+ // 鏈�氳繃鍟嗗鏍¢獙
+ keyOrderService.rejectPay(keyOrder.getId(),"鍟嗗鏍¢獙鏈�氳繃");
+ return JsonUtil.loadFalseResult("鍟嗗鏍¢獙鏈�氳繃");
+ }
+ } catch (UnsupportedEncodingException e) {
+ 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");
}
@@ -400,20 +394,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));
- }else {
+ orderPayFailProcessor.processPayFail(order.getId(), msg);
+ } 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(), "yyyyMMdd"));
+ keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT), payMerchant);
loggerPay.info("澶勭悊鏀粯鎴愬姛瀹屾垚");
} catch (WxOrderCountException e) {
loggerPay.error(e.getMessage());
@@ -428,8 +423,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");
}
@@ -465,9 +460,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