admin
2024-08-04 bc56870059cca013649077af0e53891cba8dbfd1
src/main/java/com/taoke/autopay/controller/admin/AdminOrderController.java
@@ -10,9 +10,12 @@
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;
@@ -59,35 +62,77 @@
    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">按代理ID</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:
                    // 代理ID
                    if (!NumberUtil.isNumeric(vo.getKey().trim())) {
                        throw new Exception("代理ID必须为数字");
                    }
                    query.agentId = Long.parseLong(vo.getKey().trim());
                    break;
                case 2:
                    // 订单号
                    query.orderNo = vo.getKey().trim();
                case 3:
                    // 支付设备ID
                    if (!NumberUtil.isNumeric(vo.getKey().trim())) {
                        throw new Exception("支付设备ID必须为数字");
                    }
                    query.distributeClientUid = Long.parseLong(vo.getKey().trim());
            }
        }
        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(OrderSearchVO search, int page, int limit) {
        //先查询所有的数据
        KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery();
        try {
            KeyOrderMapper.DaoQuery query = createOrderQuery(search);
        query.sortList=Arrays.asList(new String[]{"create_time desc"});
        query.start = (page - 1) * limit;
        query.count = limit;
        if (!StringUtil.isNullOrEmpty(search.getKey())) {
            if (search.getKey().length() > 10 || !NumberUtil.isNumeric(search.getKey().trim())) {
                // 订单号
                query.orderNo = search.getKey().trim();
            } else {
                // 用户ID
                query.uid = Long.parseLong(search.getKey().trim());
            }
        }
        if (!StringUtil.isNullOrEmpty(search.getStartDate())) {
            query.minCreateTime =new Date(TimeUtil.convertToTimeTemp(search.getStartDate(),"yyyy-MM-dd"));
        }
        if (!StringUtil.isNullOrEmpty(search.getEndDate())) {
            query.maxCreateTime =TimeUtil.getNextDay(1,new Date(TimeUtil.convertToTimeTemp(search.getEndDate(),"yyyy-MM-dd")).getTime());
        }
        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<>();
@@ -101,40 +146,40 @@
                clientMap.put(client.getId(), client);
            }
        }
            // 统计代理信息
            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);
            }
        // 转vo
        List<AdminOrderVO> voList = new ArrayList<>();
        for (KeyOrder order : orderList) {
            voList.add(OrderFactory.createAdminVO(order, clientMap.get(order.getDistributeClientUid())));
                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());
    }
    }
    @RequestMapping("downLoadOrder")
    public void downLoadOrder(OrderSearchVO search, HttpServletResponse response) throws IOException {
        KeyOrderMapper.DaoQuery query = new KeyOrderMapper.DaoQuery();
        if (!StringUtil.isNullOrEmpty(search.getKey())) {
            if (search.getKey().length() > 10 || !NumberUtil.isNumeric(search.getKey().trim())) {
                // 订单号
                query.orderNo = search.getKey().trim();
            } else {
                // 用户ID
                query.uid = Long.parseLong(search.getKey().trim());
            }
        }
        if (!StringUtil.isNullOrEmpty(search.getStartDate())) {
            query.minCreateTime =new Date(TimeUtil.convertToTimeTemp(search.getStartDate(),"yyyy-MM-dd"));
        }
        if (!StringUtil.isNullOrEmpty(search.getEndDate())) {
            query.maxCreateTime =TimeUtil.getNextDay(1,new Date(TimeUtil.convertToTimeTemp(search.getEndDate(),"yyyy-MM-dd")).getTime());
        }
        try {
            KeyOrderMapper.DaoQuery query = createOrderQuery(search);
        query.sortList=Arrays.asList(new String[]{"create_time desc"});
        long count = keyOrderService.count(query);
        query.start=0;
@@ -144,6 +189,18 @@
        Map<Long,Integer> userOrderCountMap=new HashMap<>();
        Map<Long, BigDecimal> userOrderMoneyMap=new HashMap<>();
        Map<Long, ClientInfo> payDeviceMap=new HashMap<>();
            // 统计代理信息
            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){
@@ -169,6 +226,7 @@
        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) {
@@ -246,8 +304,10 @@
        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());
    }
    }
}