From b6fdf185c7e8fb1f06da0e609e39aecaef6b66f5 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期日, 30 六月 2024 01:42:31 +0800 Subject: [PATCH] 微信强授权/后台管理 --- src/main/java/com/taoke/autopay/controller/client/OrderController.java | 253 +++++++++++++++++++++++++++++++++++--------------- 1 files changed, 178 insertions(+), 75 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 c30d8c8..2d430a6 100644 --- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java +++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java @@ -8,16 +8,19 @@ 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.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.utils.order.DYOrderApi; import com.taoke.autopay.vo.AcceptData; import com.taoke.autopay.vo.KeyOrderVO; import com.taoke.autopay.vo.OrderFilter; @@ -42,18 +45,19 @@ @RequestMapping("api/order") public class OrderController { - private Logger loggerPay= LoggerFactory.getLogger("payLogger"); + private Logger loggerPay = LoggerFactory.getLogger("payLogger"); - private Gson gson=new GsonBuilder().registerTypeAdapter(Date.class, new TypeAdapter<Date>() { + private Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new TypeAdapter<Date>() { @Override public void write(JsonWriter out, Date value) throws IOException { String desc = ""; if (value != null) { // 鍒ゆ柇鏄惁鏄悓涓�澶� - desc = TimeUtil.getGernalTime(value.getTime(),"yyyy-MM-dd HH:mm:ss"); + desc = TimeUtil.getGernalTime(value.getTime(), "yyyy-MM-dd HH:mm:ss"); out.value(desc); - } else + } else { out.value(""); + } } @Override @@ -68,30 +72,37 @@ @Resource private ClientInfoService clientInfoService; + @Resource + private WxUserOrderCountService wxUserOrderCountService; + + @Resource + private WxUserSettingService wxUserSettingService; + + @ResponseBody @RequestMapping("listOrder") - public String listOrder(AcceptData acceptData, OrderFilter filter){ - KeyOrderMapper.DaoQuery query=new KeyOrderMapper.DaoQuery(); + public String listOrder(AcceptData acceptData, OrderFilter filter) { + KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery(); Long uid = filter.getUid(); ClientInfo info = clientInfoService.selectByPrimaryKey(uid); query.distributeClientUid = filter.getUid(); - if(info==null){ + if (info == null) { return JsonUtil.loadFalseResult("瀹㈡埛绔疘D涓嶅瓨鍦�"); - } - if(info.getRule()==1){ - // 瓒呯骇绠$悊鍛� - query.distributeClientUid = null; - } - clientInfoService.setActiveTime(filter.getUid(),new Date()); - query.start = (filter.getPage()-1)*filter.getPageSize(); + } + if (info.getRule() == 1) { + // 瓒呯骇绠$悊鍛� + query.distributeClientUid = null; + } + clientInfoService.setActiveTime(filter.getUid(), new Date()); + query.start = (filter.getPage() - 1) * filter.getPageSize(); query.count = filter.getPageSize(); - if(filter.getState()!=null) { + if (filter.getState() != null) { switch (filter.getState()) { case OrderFilter.STATE_NOT_PROCESS: query.stateList = Arrays.asList(new Integer[]{KeyOrder.STATE_NOT_PROCESS}); break; case OrderFilter.STATE_PROCESSED: - query.stateList = Arrays.asList(new Integer[]{KeyOrder.STATE_PAY}); + query.stateList = Arrays.asList(new Integer[]{KeyOrder.STATE_PAY, KeyOrder.STATE_REJECT_PAY}); break; case OrderFilter.STATE_PROCESS_ERROR: query.stateList = Arrays.asList(new Integer[]{KeyOrder.STATE_NOT_PAY}); @@ -99,65 +110,75 @@ } } - if(filter.getTimeType()!=null){ + if (filter.getTimeType() != null) { long now = System.currentTimeMillis(); - String nowDay = TimeUtil.getGernalTime(now,"yyyy-MM-dd"); - switch(filter.getTimeType()){ + String nowDay = TimeUtil.getGernalTime(now, "yyyy-MM-dd"); + switch (filter.getTimeType()) { case OrderFilter.TIME_TYPE_TODAY: - query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(nowDay,"yyyy-MM-dd")); + query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(nowDay, "yyyy-MM-dd")); break; case OrderFilter.TIME_TYPE_YESTERDAY: - query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(nowDay,"yyyy-MM-dd")); - query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now - 24*60*60*1000L,"yyyy-MM-dd"),"yyyy-MM-dd")); + query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(nowDay, "yyyy-MM-dd")); + query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now - 24 * 60 * 60 * 1000L, "yyyy-MM-dd"), "yyyy-MM-dd")); break; case OrderFilter.TIME_TYPE_WEEK: Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(now)); int day = calendar.get(Calendar.DAY_OF_WEEK); - day-=1; - if(day==0){ + day -= 1; + if (day == 0) { // 鏄熸湡澶� - day=7; + day = 7; } - query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now - 24*60*60*1000L*(day-1),"yyyy-MM-dd"),"yyyy-MM-dd")); + query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now - 24 * 60 * 60 * 1000L * (day - 1), "yyyy-MM-dd"), "yyyy-MM-dd")); break; case OrderFilter.TIME_TYPE_MONTH: - query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now,"yyyy-MM"),"yyyy-MM")); + query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now, "yyyy-MM"), "yyyy-MM")); break; } } - if(filter.getSort()==0) { + if (filter.getSort() == 0) { query.sortList = Arrays.asList(new String[]{"create_time asc"}); - }else{ + } else { query.sortList = Arrays.asList(new String[]{"create_time desc"}); } List<KeyOrder> list = keyOrderService.list(query); - List<KeyOrderVO> voList=new ArrayList<>(); - for(KeyOrder order:list){ + List<KeyOrderVO> voList = new ArrayList<>(); + for (KeyOrder order : list) { voList.add(OrderFactory.create(order)); } long count = keyOrderService.count(query); - JSONObject data=new JSONObject(); - data.put("count",count); - data.put("list",gson.toJson(voList)); + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", gson.toJson(voList)); 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){ - loggerPay.info("setOrderNo: {}-{}",id,orderNo); - if(StringUtil.isNullOrEmpty(id)){ + 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)){ + if (StringUtil.isNullOrEmpty(orderNo)) { return JsonUtil.loadFalseResult("orderNo"); } KeyOrder order = keyOrderService.selectById(id); - if(order==null){ + if (order == null) { return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�"); } @@ -165,39 +186,73 @@ if (order.getOrderNo() != null && !order.getOrderNo().equalsIgnoreCase(orderNo)) { throw new KeyOrderException("宸茬粡澶勭悊杩囷紝涓庝箣鍓嶅鐞嗙殑璁㈠崟鍙蜂笉涓�鑷�"); } - }catch(KeyOrderException e){ + } catch (KeyOrderException e) { return JsonUtil.loadFalseResult(e.getMessage()); } try { - DYOrderDto dto = new DYOrderDto(); // DYOrderApi.getOrderDetail(orderNo); - dto.setOrder_status(1); - if(dto.getOrder_status() !=DYOrderDto.ORDER_STATUS_NOT_PAY){ - KeyOrder orderUpdate=new KeyOrder(); + 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); - if(order.getState() == KeyOrder.STATE_NOT_PROCESS){ - orderUpdate.setState(KeyOrder.STATE_NOT_PAY); - orderUpdate.setStateDesc("璁㈠崟涓嶅浜庡緟浠樻鐘舵��"); + 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){ + if (dto.getOrder_status() == DYOrderDto.ORDER_STATUS_CANCELED) { throw new Exception("璁㈠崟宸插彇娑�"); - }else { + } else { 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.selectByUid(order.getUid()); + if (settings.getDyOrderCountPerDay() <= countInfo.getOrderCount()) { + throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay()); + } + } + } + // 璁剧疆杩涘叆 - KeyOrder orderUpdate=new KeyOrder(); + KeyOrder orderUpdate = new KeyOrder(); orderUpdate.setId(id); orderUpdate.setOrderType(1); orderUpdate.setOrderState(dto.getOrder_status()); orderUpdate.setOrderNo(orderNo); + 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()); @@ -206,53 +261,101 @@ @ResponseBody @RequestMapping("setPayResult") - public String setPayResult(AcceptData acceptData, String id,boolean paySuccess,String msg){ - loggerPay.info("setPayResult: {}-{}",id,paySuccess); - if(StringUtil.isNullOrEmpty(id)){ + public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg) { + loggerPay.info("setPayResult: {}-{}", id, paySuccess); + if (StringUtil.isNullOrEmpty(id)) { return JsonUtil.loadFalseResult("璇蜂笂浼爄d"); } KeyOrder order = keyOrderService.selectById(id); - if(order==null){ + if (order == null) { return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�"); } - if(StringUtil.isNullOrEmpty(order.getOrderNo())){ + if (StringUtil.isNullOrEmpty(order.getOrderNo())) { return JsonUtil.loadFalseResult("娌℃湁鍖归厤鍒拌鍗曞彿"); } - 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); - orderUpdate.setStateDesc("鏀粯鎴愬姛"); - keyOrderService.update(orderUpdate); + 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()); + } + orderUpdate.setStateDesc("鏀粯鎴愬姛"); + try { + keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd")); + } catch (WxOrderCountException e) { + e.printStackTrace(); + return JsonUtil.loadFalseResult(e.getMessage()); + } + } } return JsonUtil.loadTrueResult(""); } + @ResponseBody + @RequestMapping("rejectPay") + public String rejectPay(AcceptData acceptData, Long uid, String id) { + loggerPay.info("rejectPay: {}-{}", uid, id); + if (StringUtil.isNullOrEmpty(id)) { + return JsonUtil.loadFalseResult("璇蜂笂浼爄d"); + } + KeyOrder order = keyOrderService.selectById(id); + if (order == null) { + return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�"); + } + + if (order.getState() != KeyOrder.STATE_NOT_PROCESS) { + return JsonUtil.loadFalseResult("鍙兘椹冲洖鏈墽琛岀姸鎬佺殑鍙d护"); + } + + KeyOrder orderUpdate = new KeyOrder(); + orderUpdate.setId(id); + orderUpdate.setState(KeyOrder.STATE_REJECT_PAY); + orderUpdate.setStateDesc("浜哄伐椹冲洖"); + keyOrderService.update(orderUpdate); + + return JsonUtil.loadTrueResult(""); + } + @ResponseBody @RequestMapping("deleteAll") - public String deleteAll(AcceptData acceptData){ + public String deleteAll(AcceptData acceptData, Long uid) { + + ClientInfo user = clientInfoService.selectByPrimaryKey(uid); + if (user == null) { + return JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�"); + } + + if (user.getRule() != ClientInfo.RULE_ADMIN) { + return JsonUtil.loadFalseResult("鍙湁绠$悊鍛樻墠鑳藉垹闄�"); + } + + // 鍒犻櫎24灏忔椂涔嬪墠鐨勬暟鎹� +// keyOrderService.deleteAll(new Date(System.currentTimeMillis() - 24*60*60*1000L)); + keyOrderService.deleteAll(new Date(System.currentTimeMillis())); // 鍒櫎鎵�鏈夋暩鎿� return JsonUtil.loadTrueResult(""); } - public static void main(String[] args){ + public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); - for(int i=0;i<7;i++) { - calendar.setTime(new Date(System.currentTimeMillis() - 24*60*60*1000L*i)); + for (int i = 0; i < 7; i++) { + calendar.setTime(new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000L * i)); int day = calendar.get(Calendar.DAY_OF_WEEK); - System.out.println(day-1); + System.out.println(day - 1); } } } -- Gitblit v1.8.0