From bd014bc7bfbc43a071f682f25b473a1cf103027e Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 25 七月 2024 12:41:52 +0800 Subject: [PATCH] 代理新功能完善 --- src/main/java/com/taoke/autopay/controller/client/OrderController.java | 114 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 91 insertions(+), 23 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 5e769d7..49bc15a 100644 --- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java +++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java @@ -11,17 +11,16 @@ 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.*; -import com.taoke.autopay.utils.JsonUtil; -import com.taoke.autopay.utils.MoneyUtil; -import com.taoke.autopay.utils.StringUtil; -import com.taoke.autopay.utils.TimeUtil; +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; @@ -31,7 +30,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 @@ -204,6 +207,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); @@ -237,6 +242,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); @@ -276,21 +283,63 @@ 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); } - money = money.replace("楼",""); - // 鍖归厤閲戦 - if(!MoneyUtil.getMoneyStr(order.getOrderMoney()).equalsIgnoreCase(money)){ - throw new KeyOrderException("閲戦涓嶅尮閰�"); - } + + 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) { - WxUserOrderCount countInfo = wxUserOrderCountService.get(order.getUid(), OrderCountTypeEnum.DY_ORDER_PAY, TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd")); + 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()); - if (settings.getDyOrderCountPerDay() <= countInfo.getOrderCount()) { - throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay()); + int maxOrderCount = settings.getDyOrderCountPerDay(); + if(orderCountType == OrderCountTypeEnum.KS_ORDER_PAY){ + maxOrderCount = settings.getKsOrderCountPerDay(); + } + if (maxOrderCount <= countInfo.getOrderCount()) { + throw new Exception("鑰侀搧浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay()); } } } @@ -298,7 +347,16 @@ // 璁剧疆杩涘叆 KeyOrder orderUpdate = new KeyOrder(); orderUpdate.setId(id); - orderUpdate.setOrderType(1); + 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); @@ -306,7 +364,9 @@ } catch (KeyOrderException e) { KeyOrder orderUpdate = new KeyOrder(); orderUpdate.setId(id); - orderUpdate.setOrderType(1); + orderUpdate.setOrderType(orderType); + orderUpdate.setOrderNo(orderNo); + orderUpdate.setOrderMoney(new BigDecimal(money)); orderUpdate.setOrderState(0); orderUpdate.setState(KeyOrder.STATE_REJECT_PAY); if (order.getExcutePayTime() == null) { @@ -325,7 +385,7 @@ @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"); } @@ -333,22 +393,30 @@ 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); + if(msg!=null&&msg.contains("瓒呮椂")) + { + loggerPay.info(String.format("鍥犱负瓒呮椂鏀粯澶辫触涓嶅鐞嗭細%s-%s", order.getId(), msg)); + }else { + KeyOrder orderUpdate = new KeyOrder(); + orderUpdate.setId(id); + orderUpdate.setState(KeyOrder.STATE_NOT_PAY); + orderUpdate.setStateDesc("鏀粯澶辫触"); + keyOrderService.update(orderUpdate); + } + 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