From c0fa314702c6bb19b0c8975dfaee8e39d1896844 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 26 七月 2024 22:15:18 +0800 Subject: [PATCH] 代理新功能完善 --- src/main/java/com/taoke/autopay/controller/client/OrderController.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 153 insertions(+), 24 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 2d430a6..18aa07e 100644 --- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java +++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java @@ -11,19 +11,17 @@ import com.taoke.autopay.entity.*; import com.taoke.autopay.exception.KeyOrderException; +import com.taoke.autopay.exception.KeyVerifyException; import com.taoke.autopay.exception.WxOrderCountException; import com.taoke.autopay.factory.OrderFactory; -import com.taoke.autopay.service.ClientInfoService; -import com.taoke.autopay.service.KeyOrderService; -import com.taoke.autopay.service.WxUserOrderCountService; -import com.taoke.autopay.service.WxUserSettingService; -import com.taoke.autopay.utils.JsonUtil; -import com.taoke.autopay.utils.StringUtil; -import com.taoke.autopay.utils.TimeUtil; +import com.taoke.autopay.manager.OrderPayFailProcessor; +import com.taoke.autopay.service.*; +import com.taoke.autopay.utils.*; import com.taoke.autopay.utils.order.DYOrderApi; import com.taoke.autopay.vo.AcceptData; import com.taoke.autopay.vo.KeyOrderVO; import com.taoke.autopay.vo.OrderFilter; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +31,11 @@ import javax.annotation.Resource; import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author hxh @@ -77,6 +79,12 @@ @Resource private WxUserSettingService wxUserSettingService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private OrderPayFailProcessor orderPayFailProcessor; @ResponseBody @@ -203,6 +211,8 @@ 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); @@ -223,7 +233,7 @@ 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.selectByUid(order.getUid()); + WxUserSettings settings = wxUserSettingService.getUserSettings(order.getUid()); if (settings.getDyOrderCountPerDay() <= countInfo.getOrderCount()) { throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay()); } @@ -236,6 +246,8 @@ 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); @@ -260,9 +272,124 @@ } @ResponseBody + @RequestMapping("setOrderNoV2") + public String setOrderNoV2(AcceptData acceptData, String id, String orderNoDesc, String orderStatus, String money) { + loggerPay.info("setOrderNo: {}-{}-{}-{}", id, orderNoDesc, orderStatus, money); + if (StringUtil.isNullOrEmpty(id)) { + return JsonUtil.loadFalseResult("璇蜂笂浼爄d"); + } + if (StringUtil.isNullOrEmpty(money)) { + return JsonUtil.loadFalseResult("璇蜂笂浼爉oney"); + } + + KeyOrder order = keyOrderService.selectById(id); + if (order == null) { + return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�"); + } + + money = money.replace("楼",""); + + int orderType=Constant.ORDER_TYPE_UNKNOWN; + + if(orderNoDesc.contains("鎶栭煶")){ + orderType = Constant.ORDER_TYPE_DY; + }else if(orderNoDesc.contains("蹇墜")){ + orderType = Constant.ORDER_TYPE_KS; + } + + String orderNo= ""; + try { + if(orderType==Constant.ORDER_TYPE_UNKNOWN){ + throw new KeyOrderException("鏈畾涔夌殑璁㈠崟绫诲瀷"); + } + + if (!StringUtil.isNullOrEmpty(orderStatus)) { + throw new KeyOrderException(orderStatus); + } + + DYOrderDto dyOrderDto =null; + try { + dyOrderDto = keyOrderService.verifyKey(orderNoDesc, orderStatus, money); + }catch(KeyVerifyException ve){ + throw new KeyOrderException("鍙d护楠岃瘉澶辫触锛�" + ve.getMessage()); + } +// if(dyOrderDto!=null&&order.getOrderMoney()!=null){ +// // 鍒ゆ柇璁㈠崟鏀粯閲戦涓庣敤鎴锋彁浜ょ殑閲戦鏄惁鍖归厤 +// if(dyOrderDto.getPay_amount()!=order.getOrderMoney().multiply(new BigDecimal(100)).setScale(0, RoundingMode.FLOOR).intValue()){ +// throw new KeyOrderException(String.format("璁㈠崟鎺ュ彛閲戦涓嶅尮閰嶏細%s-%s",dyOrderDto.getPay_amount(),MoneyUtil.getMoneyStr(order.getOrderMoney()))); +// } +// } + if(dyOrderDto!=null){ + orderNo = dyOrderDto.getOrder_id(); + } + + + 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()); + } + } + } + + // 璁剧疆杩涘叆 + KeyOrder orderUpdate = new KeyOrder(); + orderUpdate.setId(id); + orderUpdate.setOrderType(orderType); + orderUpdate.setOrderNo(orderNo); + orderUpdate.setOrderMoney(new BigDecimal(money)); + if(dyOrderDto!=null){ + orderUpdate.setOrderState(dyOrderDto.getOrder_status()); + orderUpdate.setOrderChannel(dyOrderDto.getOrderChannel()); + orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO); + }else{ + orderUpdate.setPayType(Constant.PAY_TYPE_WITH_MONEY); + } + 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(orderType); + orderUpdate.setOrderNo(orderNo); + orderUpdate.setOrderMoney(new BigDecimal(money)); + orderUpdate.setOrderState(0); + 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("setPayResult") public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg) { - loggerPay.info("setPayResult: {}-{}", id, paySuccess); + loggerPay.info("setPayResult: {}-{}-{}", id, paySuccess, msg); if (StringUtil.isNullOrEmpty(id)) { return JsonUtil.loadFalseResult("璇蜂笂浼爄d"); } @@ -270,29 +397,31 @@ if (order == null) { return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�"); } - if (StringUtil.isNullOrEmpty(order.getOrderNo())) { - return JsonUtil.loadFalseResult("娌℃湁鍖归厤鍒拌鍗曞彿"); - } +// if (StringUtil.isNullOrEmpty(order.getOrderNo())) { +// return JsonUtil.loadFalseResult("娌℃湁鍖归厤鍒拌鍗曞彿"); +// } if (order.getState() == KeyOrder.STATE_NOT_PROCESS) { if (!paySuccess) { // 鏀粯澶辫触 - KeyOrder orderUpdate = new KeyOrder(); - orderUpdate.setId(id); - orderUpdate.setState(KeyOrder.STATE_NOT_PAY); - orderUpdate.setStateDesc("鏀粯澶辫触"); - keyOrderService.update(orderUpdate); - } else { - KeyOrder orderUpdate = new KeyOrder(); - orderUpdate.setId(id); - orderUpdate.setState(KeyOrder.STATE_PAY); - if (order.getPayTime() == null) { - orderUpdate.setPayTime(new Date()); + if(msg!=null&&msg.contains("瓒呮椂")) + { + loggerPay.info(String.format("鍥犱负瓒呮椂鏀粯澶辫触涓嶅鐞嗭細%s-%s", order.getId(), msg)); + orderPayFailProcessor.processPayFail(order.getId(), msg); + }else { + KeyOrder orderUpdate = new KeyOrder(); + orderUpdate.setId(id); + orderUpdate.setState(KeyOrder.STATE_NOT_PAY); + orderUpdate.setStateDesc("鏀粯澶辫触"); + keyOrderService.update(orderUpdate); } - orderUpdate.setStateDesc("鏀粯鎴愬姛"); + loggerPay.info("澶勭悊鏀粯澶辫触瀹屾垚"); + } else { try { keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd")); + loggerPay.info("澶勭悊鏀粯鎴愬姛瀹屾垚"); } catch (WxOrderCountException e) { + loggerPay.error(e.getMessage()); e.printStackTrace(); return JsonUtil.loadFalseResult(e.getMessage()); } -- Gitblit v1.8.0