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 | 233 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 199 insertions(+), 34 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 77140b3..18aa07e 100644 --- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java +++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java @@ -8,20 +8,20 @@ import com.google.gson.stream.JsonWriter; import com.taoke.autopay.dao.KeyOrderMapper; import com.taoke.autopay.dto.DYOrderDto; -import com.taoke.autopay.entity.ClientInfo; -import com.taoke.autopay.entity.KeyOrder; +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.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; @@ -31,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 @@ -53,8 +57,9 @@ // 鍒ゆ柇鏄惁鏄悓涓�澶� desc = TimeUtil.getGernalTime(value.getTime(), "yyyy-MM-dd HH:mm:ss"); out.value(desc); - } else + } else { out.value(""); + } } @Override @@ -68,6 +73,19 @@ @Resource private ClientInfoService clientInfoService; + + @Resource + private WxUserOrderCountService wxUserOrderCountService; + + @Resource + private WxUserSettingService wxUserSettingService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private OrderPayFailProcessor orderPayFailProcessor; + @ResponseBody @RequestMapping("listOrder") @@ -147,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") @@ -181,6 +199,9 @@ } 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) { @@ -190,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 { @@ -206,12 +229,26 @@ 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))); @@ -222,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()); @@ -232,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"); } @@ -242,24 +397,34 @@ 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("鏀粯鎴愬姛"); - keyOrderService.update(orderUpdate); + 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()); + } } } return JsonUtil.loadTrueResult(""); @@ -294,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