From 17caebabf7a6a529b7039c71e21e5a324e31ea20 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 27 九月 2024 16:23:42 +0800 Subject: [PATCH] 代理新功能完善 --- src/main/java/com/taoke/autopay/controller/client/OrderController.java | 234 +++++++++++++++++++++------------------------------------- 1 files changed, 85 insertions(+), 149 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..ace4e56 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,113 +174,6 @@ 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) { @@ -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,33 +223,25 @@ // 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(), 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(); + long todayCount = wxUserOrderCountService.sum(order.getUid(), null,orderChannel, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT)); + long totalCount = wxUserOrderCountService.sum(order.getUid(), null,orderChannel,null); + int maxPayCount = userSettingService.getLimitCountByTotalCount(totalCount, orderChannel); + if(todayCount>=maxPayCount){ + throw new Exception( String.format("鑰侀搧浠婃棩宸茶揪鏀粯娆℃暟(%s)涓婇檺锛�%s" ,orderChannel.getName(), maxPayCount)); } - if (maxOrderCount <= countInfo.getOrderCount()) { - throw new Exception("鑰侀搧浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay()); - } - } } // 璁剧疆杩涘叆 @@ -355,19 +250,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 +284,50 @@ } } + @ResponseBody + @RequestMapping("isMerchantCanPay") + public String isMerchantCanPay(AcceptData acceptData, String id, String merchant) { + loggerPay.info("isMerchantCanPay: {}-{}", 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); + if(isCanPay){ + return JsonUtil.loadTrueResult(""); + }else{ + return JsonUtil.loadFalseResult("鍟嗗鏍¢獙鏈�氳繃"); + } + } catch (UnsupportedEncodingException 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, msg); + public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg,String payMerchant) { + loggerPay.info("setPayResult: {}-{}-{}-{}", id, paySuccess, msg, payMerchant); if (StringUtil.isNullOrEmpty(id)) { return JsonUtil.loadFalseResult("璇蜂笂浼爄d"); } @@ -406,21 +342,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()); @@ -472,9 +408,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