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 | 215 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 176 insertions(+), 39 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 be07e1e..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 @@ -55,8 +57,9 @@ // 鍒ゆ柇鏄惁鏄悓涓�澶� desc = TimeUtil.getGernalTime(value.getTime(), "yyyy-MM-dd HH:mm:ss"); out.value(desc); - } else + } else { out.value(""); + } } @Override @@ -76,6 +79,12 @@ @Resource private WxUserSettingService wxUserSettingService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private OrderPayFailProcessor orderPayFailProcessor; @ResponseBody @@ -156,14 +165,14 @@ } /** - * @author hxh + * @return java.lang.String 杩斿洖鏄惁鍙互鍘绘敮浠� + * @author hxh * @description 璁剧疆璁㈠崟鍙� * @date 23:08 2024/6/24 * @param: acceptData * @param: id 璁㈠崟ID * @param: orderNo 璁㈠崟鍙� * @param: orderStatus 璁㈠崟鐘舵�侊細璁㈠崟宸插彇娑�/宸叉敮浠� - * @return java.lang.String 杩斿洖鏄惁鍙互鍘绘敮浠� **/ @ResponseBody @RequestMapping("setOrderNo") @@ -190,7 +199,7 @@ } try { - if(!StringUtil.isNullOrEmpty(orderStatus)){ + if (!StringUtil.isNullOrEmpty(orderStatus)) { throw new KeyOrderException(orderStatus); } DYOrderDto dto = DYOrderApi.getOrderDetail(orderNo); @@ -202,8 +211,10 @@ 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) { + if (dto.getOrder_status() == DYOrderDto.ORDER_STATUS_CANCELED) { orderUpdate.setState(KeyOrder.STATE_PAY); orderUpdate.setStateDesc(dto.getOrder_status_desc()); } else { @@ -219,12 +230,12 @@ } } - if(order.getUid()!=null) { + 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()); - if (settings.getDyOrderCountPerDay()<=countInfo.getOrderCount()){ - throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�"+settings.getDyOrderCountPerDay()); + WxUserSettings settings = wxUserSettingService.getUserSettings(order.getUid()); + if (settings.getDyOrderCountPerDay() <= countInfo.getOrderCount()) { + throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay()); } } } @@ -235,6 +246,9 @@ 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))); @@ -245,6 +259,9 @@ 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()); @@ -255,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"); } @@ -265,26 +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 (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)); + orderPayFailProcessor.processPayFail(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 { - KeyOrder orderUpdate = new KeyOrder(); - orderUpdate.setId(id); - orderUpdate.setState(KeyOrder.STATE_PAY); - orderUpdate.setStateDesc("鏀粯鎴愬姛"); try { - keyOrderService.paySuccess(id,"鏀粯鎴愬姛",TimeUtil.getGernalTime(System.currentTimeMillis(),"yyyyMMdd")); + keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd")); + loggerPay.info("澶勭悊鏀粯鎴愬姛瀹屾垚"); } catch (WxOrderCountException e) { + loggerPay.error(e.getMessage()); e.printStackTrace(); return JsonUtil.loadFalseResult(e.getMessage()); } @@ -322,16 +459,16 @@ @ResponseBody @RequestMapping("deleteAll") - public String deleteAll(AcceptData acceptData,Long uid) { + public String deleteAll(AcceptData acceptData, Long uid) { - ClientInfo user= clientInfoService.selectByPrimaryKey(uid); - if(user==null){ - return JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�"); - } + ClientInfo user = clientInfoService.selectByPrimaryKey(uid); + if (user == null) { + return JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�"); + } - if(user.getRule() != ClientInfo.RULE_ADMIN){ - return JsonUtil.loadFalseResult("鍙湁绠$悊鍛樻墠鑳藉垹闄�"); - } + if (user.getRule() != ClientInfo.RULE_ADMIN) { + return JsonUtil.loadFalseResult("鍙湁绠$悊鍛樻墠鑳藉垹闄�"); + } // 鍒犻櫎24灏忔椂涔嬪墠鐨勬暟鎹� // keyOrderService.deleteAll(new Date(System.currentTimeMillis() - 24*60*60*1000L)); -- Gitblit v1.8.0