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/admin/AdminOrderController.java | 287 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 251 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/taoke/autopay/controller/admin/AdminOrderController.java b/src/main/java/com/taoke/autopay/controller/admin/AdminOrderController.java index 3186117..b6a6414 100644 --- a/src/main/java/com/taoke/autopay/controller/admin/AdminOrderController.java +++ b/src/main/java/com/taoke/autopay/controller/admin/AdminOrderController.java @@ -1,17 +1,25 @@ package com.taoke.autopay.controller.admin; +import com.alibaba.excel.EasyExcel; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.taoke.autopay.dao.KeyOrderMapper; -import com.taoke.autopay.entity.*; +import com.taoke.autopay.dto.admin.OrderExcelDataDto; +import com.taoke.autopay.entity.ClientInfo; +import com.taoke.autopay.entity.KeyOrder; +import com.taoke.autopay.entity.OrderChannelEnum; +import com.taoke.autopay.entity.agent.ChannelAgent; import com.taoke.autopay.factory.OrderFactory; import com.taoke.autopay.service.ClientInfoService; import com.taoke.autopay.service.KeyOrderService; +import com.taoke.autopay.service.agent.ChannelAgentService; +import com.taoke.autopay.utils.Constant; import com.taoke.autopay.utils.TimeUtil; import com.taoke.autopay.vo.admin.AdminOrderVO; +import com.taoke.autopay.vo.admin.OrderSearchVO; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -21,7 +29,10 @@ import org.yeshi.utils.StringUtil; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.*; @Controller @@ -51,51 +62,255 @@ private KeyOrderService keyOrderService; @Resource private ClientInfoService clientInfoService; + @Resource + private ChannelAgentService channelAgentService; + + private KeyOrderMapper.DaoQuery createOrderQuery(OrderSearchVO vo) throws Exception { +// <option value="0">鎸夎�侀搧ID</option> +// <option value="1">鎸変唬鐞咺D</option> +// <option value="2">鎸夎鍗曞彿</option> + KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery(); + if (!StringUtil.isNullOrEmpty(vo.getKey())) { + switch (vo.getKeyType()) { + case 0: + // 鑰侀搧ID + if (!NumberUtil.isNumeric(vo.getKey().trim())) { + throw new Exception("鑰侀搧ID蹇呴』涓烘暟瀛�"); + } + query.uid = Long.parseLong(vo.getKey()); + break; + case 1: + // 浠g悊ID + if (!NumberUtil.isNumeric(vo.getKey().trim())) { + throw new Exception("浠g悊ID蹇呴』涓烘暟瀛�"); + } + query.agentId = Long.parseLong(vo.getKey().trim()); + break; + case 2: + // 璁㈠崟鍙� + query.orderNo = vo.getKey().trim(); + break; + case 3: + // 鏀粯璁惧ID + if (!NumberUtil.isNumeric(vo.getKey().trim())) { + throw new Exception("鏀粯璁惧ID蹇呴』涓烘暟瀛�"); + } + query.distributeClientUid = Long.parseLong(vo.getKey().trim()); + break; + } + + } + + if (!StringUtil.isNullOrEmpty(vo.getState())) { + query.state = Integer.parseInt(vo.getState()); + } + + if (!StringUtil.isNullOrEmpty(vo.getOrderChannel())) { + + query.orderChannel = OrderChannelEnum.valueOf(vo.getOrderChannel()).getKey(); + + } + + if (!StringUtil.isNullOrEmpty(vo.getStartDate())) { + query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(vo.getStartDate(), "yyyy-MM-dd")); + } + if (!StringUtil.isNullOrEmpty(vo.getEndDate())) { + query.maxCreateTime = TimeUtil.getNextDay(1, new Date(TimeUtil.convertToTimeTemp(vo.getEndDate(), "yyyy-MM-dd")).getTime()); + } + + return query; + + } @ResponseBody @RequestMapping("list") - public String listOrder(String key, int page, int limit) { + public String listOrder(OrderSearchVO search, int page, int limit) { //鍏堟煡璇㈡墍鏈夌殑鏁版嵁 - KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery(); - query.sortList=Arrays.asList(new String[]{"create_time desc"}); - query.start = (page - 1) * limit; - query.count = limit; - if (!StringUtil.isNullOrEmpty(key)) { - if (key.length() > 10 || !NumberUtil.isNumeric(key.trim())) { - // 璁㈠崟鍙� - query.orderNo = key.trim(); - } else { - // 鐢ㄦ埛ID - query.uid = Long.parseLong(key.trim()); - } - } - - List<KeyOrder> orderList = keyOrderService.list(query); - long count = keyOrderService.count(query); - Map<Long, ClientInfo> clientMap = new HashMap<>(); - if (orderList.size() > 0) { - List<Long> cids = new ArrayList<>(); - for (KeyOrder u : orderList) { - if (u.getDistributeClientUid() != null) { - cids.add(u.getDistributeClientUid()); + try { + KeyOrderMapper.DaoQuery query = createOrderQuery(search); + query.sortList = Arrays.asList(new String[]{"create_time desc"}); + query.start = (page - 1) * limit; + query.count = limit; + List<KeyOrder> orderList = keyOrderService.list(query); + long count = keyOrderService.count(query); + // 缁熻璁惧 + Map<Long, ClientInfo> clientMap = new HashMap<>(); + if (orderList.size() > 0) { + List<Long> cids = new ArrayList<>(); + for (KeyOrder u : orderList) { + if (u.getDistributeClientUid() != null) { + cids.add(u.getDistributeClientUid()); + } + } + List<ClientInfo> clients = clientInfoService.listByIds(cids); + for (ClientInfo client : clients) { + clientMap.put(client.getId(), client); } } - List<ClientInfo> clients = clientInfoService.listByIds(cids); - for (ClientInfo client : clients) { - clientMap.put(client.getId(), client); + // 缁熻浠g悊淇℃伅 + Map<Long, ChannelAgent> agentMap = new HashMap<>(); + List<Long> agengIds = new ArrayList<>(); + for (KeyOrder u : orderList) { + if (u.getAgentId() != null) { + agengIds.add(u.getAgentId()); + } } - } + List<ChannelAgent> agents = channelAgentService.listByIds(agengIds); + for (ChannelAgent agent : agents) { + agentMap.put(agent.getId(), agent); + } - // 杞瑅o - List<AdminOrderVO> voList = new ArrayList<>(); - for (KeyOrder order : orderList) { - voList.add(OrderFactory.createAdminVO(order, clientMap.get(order.getDistributeClientUid()))); + + // 杞瑅o + List<AdminOrderVO> voList = new ArrayList<>(); + for (KeyOrder order : orderList) { + voList.add(OrderFactory.createAdminVO(order, clientMap.get(order.getDistributeClientUid()), agentMap.get(order.getAgentId()))); + } + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", gson.toJson(voList)); + return JsonUtil.loadTrueResult(data); + }catch(Exception e){ + return JsonUtil.loadFalseResult(e.getMessage()); } - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("list", gson.toJson(voList)); - return JsonUtil.loadTrueResult(data); } + + @RequestMapping("downLoadOrder") + public void downLoadOrder(OrderSearchVO search, HttpServletResponse response) throws IOException { + try { + KeyOrderMapper.DaoQuery query = createOrderQuery(search); + query.sortList = Arrays.asList(new String[]{"create_time desc"}); + long count = keyOrderService.count(query); + + query.start = 0; + query.count = (int) count; + List<KeyOrder> orderList = keyOrderService.list(query); + // 缁熻璁㈠崟涓庨噾棰� + Map<Long, Integer> userOrderCountMap = new HashMap<>(); + Map<Long, BigDecimal> userOrderMoneyMap = new HashMap<>(); + Map<Long, ClientInfo> payDeviceMap = new HashMap<>(); + // 缁熻浠g悊淇℃伅 + Map<Long, ChannelAgent> agentMap = new HashMap<>(); + List<Long> agengIds = new ArrayList<>(); + for (KeyOrder u : orderList) { + if (u.getAgentId() != null) { + agengIds.add(u.getAgentId()); + } + } + List<ChannelAgent> agents = channelAgentService.listByIds(agengIds); + for (ChannelAgent agent : agents) { + agentMap.put(agent.getId(), agent); + } + + List<OrderExcelDataDto> dataList = new ArrayList<>(); + for (KeyOrder order : orderList) { + if (!userOrderCountMap.containsKey(order.getUid())) { + userOrderCountMap.put(order.getUid(), 1); + } else { + userOrderCountMap.put(order.getUid(), userOrderCountMap.get(order.getUid()) + 1); + } + if (!userOrderMoneyMap.containsKey(order.getUid())) { + userOrderMoneyMap.put(order.getUid(), new BigDecimal(0)); + } + if (order.getOrderMoney() != null) { + userOrderMoneyMap.put(order.getUid(), userOrderMoneyMap.get(order.getUid()).add(order.getOrderMoney())); + } + if (!payDeviceMap.containsKey(order.getDistributeClientUid()) && order.getDistributeClientUid() != null) { + ClientInfo clientInfo = clientInfoService.selectByPrimaryKey(order.getDistributeClientUid()); + if (clientInfo != null) { + payDeviceMap.put(clientInfo.getId(), clientInfo); + } + } + + } + for (KeyOrder order : orderList) { + OrderExcelDataDto dto = new OrderExcelDataDto(); + dto.setId(order.getId()); + dto.setAgent(agentMap.get(order.getAgentId()) == null ? "" : agentMap.get(order.getAgentId()).getName()); + dto.setCreateTime(TimeUtil.getGernalTime(order.getCreateTime())); + dto.setOrderMoney(order.getOrderMoney() == null ? "" : order.getOrderMoney().toString()); + if (order.getOrderChannel() != null) { + switch (order.getOrderChannel()) { + case Constant + .ORDER_CHANNEL_CYX: + dto.setOrderChannel("瓒呬剑浜�"); + break; + case Constant + .ORDER_CHANNEL_BPS: + dto.setOrderChannel("鐖嗗搧绀�"); + break; + default: + dto.setOrderChannel(""); + } + } else { + dto.setOrderChannel(""); + } + dto.setOrderNo(order.getOrderNo()); + if (order.getOrderType() != null) { + switch (order.getOrderType()) { + case Constant.ORDER_TYPE_DY: + dto.setPlatform("鎶栭煶"); + break; + case Constant.ORDER_TYPE_KS: + dto.setPlatform("蹇墜"); + break; + default: + dto.setPlatform(""); + } + } else { + dto.setPlatform(""); + } + + if (order.getPayType() != null) { + switch (order.getPayType()) { + case Constant.PAY_TYPE_WITH_ORDER_NO: + dto.setPayType("鎸夎鍗�"); + break; + case Constant.PAY_TYPE_WITH_MONEY: + dto.setPayType("鎸夐噾棰�"); + break; + default: + dto.setPayType(""); + } + } else { + dto.setPayType(""); + } + + dto.setUid(order.getUid()); + if (order.getState() == KeyOrder.STATE_PAY) { + dto.setPaySuccess("鏄�"); + } else { + dto.setPaySuccess("鍚�"); + } + dto.setStateDesc(order.getStateDesc()); + dto.setTotalCount(userOrderCountMap.get(order.getUid())); + dto.setTotalMoney(userOrderMoneyMap.get(order.getUid()).toString()); + dto.setKey(order.getKey()); + if (order.getPayTime() != null) { + dto.setPayTime(TimeUtil.getGernalTime(order.getPayTime().getTime(), "yyyy-MM-dd HH:mm:ss")); + } + ClientInfo device = payDeviceMap.get(order.getDistributeClientUid()); + if (device != null) { + dto.setPayDevice(device.getAccount()); + } else { + dto.setPayDevice(""); + } + dto.setPayMerchant(order.getPayMerchant()); + dataList.add(dto); + } + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode(TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd_HHmmss"), "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), OrderExcelDataDto.class).sheet("璁㈠崟").doWrite(dataList); + }catch(Exception e){ + response.sendError(402,e.getMessage()); + } + } + + } -- Gitblit v1.8.0