admin
2020-11-09 2147d023563a7c9d05d97547c00d6b0162c0644c
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java
@@ -10,15 +10,15 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import com.yeshi.fanli.util.OrderConstant;
import net.sf.json.JSONArray;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
import com.yeshi.fanli.dto.ChartTDO;
import com.yeshi.fanli.dto.common.CategoryInfoDTO;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.goods.CommonGoods;
@@ -45,628 +45,458 @@
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.vo.order.CommonOrderVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/order")
public class OrderAdminController {
   @Resource
   private OrderService orderService;
   @Resource
   private HongBaoV2CountService hongBaoV2CountService;
    @Resource
    private HongBaoV2CountService hongBaoV2CountService;
   @Resource
   private CommonOrderCountService commonOrderCountService;
    @Resource
    private CommonOrderCountService commonOrderCountService;
   @Resource
   private CommonOrderService commonOrderService;
    @Resource
    private CommonOrderService commonOrderService;
   @Resource
   private TaoBaoOrderService taoBaoOrderService;
   @Resource
   private TaoBaoOrderCountService taoBaoOrderCountService;
    @Resource
    private TaoBaoOrderCountService taoBaoOrderCountService;
   @Resource
   private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService;
    @Resource
    private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService;
   @Resource
   private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
    @Resource
    private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
   @Resource
   private UserMoneyDetailService userMoneyDetailService;
    @Resource
    private UserMoneyDetailService userMoneyDetailService;
   @Resource
   private OrderProcessService orderProcessService;
    @Resource
    private OrderProcessService orderProcessService;
   @Resource
   private HongBaoOrderService hongBaoOrderService;
    @Resource
    private HongBaoOrderService hongBaoOrderService;
   @Resource
   private UserMoneyDebtService userMoneyDebtService;
    @Resource
    private UserMoneyDebtService userMoneyDebtService;
   @Resource
   private UserSystemCouponRecordService userSystemCouponRecordService;
    @Resource
    private ConfigService configService;
   @Resource
   private ConfigService configService;
    @Resource
    private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
   @Resource
   private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
   @Resource
   private CommonGoodsService commonGoodsService;
    @Resource
    private CommonGoodsService commonGoodsService;
   /**
    * 统计历史订单-淘宝订单
    *
    * @param callback
    * @param request
    * @param out
    */
   @RequestMapping(value = "countTaoBaoOrder")
   public void countTaoBaoOrder(String callback, HttpServletRequest request, PrintWriter out) {
    /**
     * 统计历史订单-淘宝订单
     *
     * @param callback
     * @param request
     * @param out
     */
    @RequestMapping(value = "countTaoBaoOrder")
    public void countTaoBaoOrder(AdminAcceptData acceptData, String callback, HttpServletRequest request, PrintWriter out) {
      try {
         Map<String, Object> countByOdrerType = taoBaoOrderCountService.countByOdrerType();
        try {
            Map<String, Object> countByOdrerType = taoBaoOrderCountService.countByOdrerType();
         JSONObject data = new JSONObject();
         data.put("typeOrder", countByOdrerType);
            JSONObject data = new JSONObject();
            data.put("typeOrder", countByOdrerType);
         // 统计今日 未失效订单数量 相同订单号合并为一单
         int todayOrder = taoBaoOrderCountService.countToday();
         // 统计昨日 未失效订单数量 相同订单号合并为一单
         int yesterdayOrder = taoBaoOrderCountService.countYesterday();
            // 统计今日 未失效订单数量 相同订单号合并为一单
            int todayOrder = taoBaoOrderCountService.countToday();
            // 统计昨日 未失效订单数量 相同订单号合并为一单
            int yesterdayOrder = taoBaoOrderCountService.countYesterday();
         data.put("todayOrder", todayOrder);
         data.put("yesterdayOrder", yesterdayOrder);
         data.put("genzong", yesterdayOrder);
         data.put("yesterdayOrder", yesterdayOrder);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
         e.printStackTrace();
      }
   }
            data.put("todayOrder", todayOrder);
            data.put("yesterdayOrder", yesterdayOrder);
            data.put("genzong", yesterdayOrder);
            data.put("yesterdayOrder", yesterdayOrder);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
            e.printStackTrace();
        }
    }
   /**
    * 查询所有用户订单列表
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param uid
    * @param state
    * @param type
    * @param orderState
    * @param orderNo
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getUserOrderList")
   public void getUserOrderList(String callback, Integer pageIndex, Integer pageSize, Integer keyType, String key,
         Integer state, Integer type, Integer orderState, String startTime, String endTime, Integer sourceType,
         Integer riskType, BigDecimal payment, PrintWriter out) {
    /**
     * 查询所有用户订单列表
     *
     * @param callback
     * @param pageIndex
     * @param pageSize
     * @param state
     * @param type
     * @param orderState
     * @param startTime
     * @param endTime
     * @param out
     */
    @RequestMapping(value = "getUserOrderList")
    public void getUserOrderList(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, Integer keyType, String key,
                                 Integer state, String type, Integer orderState, String startTime, String endTime, Integer sourceType,
                                 Integer riskType, BigDecimal payment, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
        List<Integer> typeList = null;
      if (pageSize == null)
         pageSize = Constant.PAGE_SIZE;
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
        }
      if (state != null && state == 0) {
         state = null;// 所有状态
      }
        if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
      if (type != null && type == 0) {
         type = null; // 所有类型订单
      }
        if (state != null && state == 0) {
            state = null;// 所有状态
        }
      if (endTime != null && endTime.trim().length() > 0) {
         endTime += " 23:59:59";
      }
        if (!StringUtil.isNullOrEmpty(type)) {
            JSONArray array = JSONArray.fromObject(type);
            if (array.size() > 0) {
                typeList = new ArrayList<>();
                for (int i = 0; i < array.size(); i++) {
                    if (!StringUtil.isNullOrEmpty(array.optString(i)))
                        typeList.add(array.optInt(i));
                }
            }
        }
      try {
         Date minTime = null;
         BigDecimal money = null;
         List<Long> listShopId = null;
         List<Long> listGoodsId = null;
         // 风险
         if (riskType != null && !StringUtil.isNullOrEmpty(key) && keyType != null && keyType == 2) {
            long uid = Long.parseLong(key);
            // 查询同店铺商品,同商品订单超过一定数量的
            List<Integer> typeList = new ArrayList<>();
            typeList.add(HongBaoV2.TYPE_ZIGOU);
        if (endTime != null && endTime.trim().length() > 0) {
            endTime += " 23:59:59";
        }
            if (riskType == 1) {
               listGoodsId = commonOrderCountService.getSameGoodsOrderByUidAndHongBaoType(typeList, uid,
                     Integer.parseInt(configService.get(ConfigKeyEnum.adminMinSameGoodsOrderCount.getKey())));
               if (listGoodsId == null || listGoodsId.isEmpty()) {
                  JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无同商品订单"));
                  return;
               }
            } else if (riskType == 2) {
               listShopId = commonOrderCountService.getSameShopOrderByUidAndHongBaoType(typeList, uid,
                     Integer.parseInt(configService.get(ConfigKeyEnum.adminMinSameShopOrderCount.getKey())));
               if (listShopId == null || listShopId.isEmpty()) {
                  JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无同店铺订单"));
                  return;
               }
            } else if (riskType == 3) {
               money = new BigDecimal(100);
               minTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 180L);
            }
         }
        try {
            Date minTime = null;
            BigDecimal money = null;
            List<Long> listShopId = null;
            List<Long> listGoodsId = null;
            // 风险
            if (riskType != null && !StringUtil.isNullOrEmpty(key) && keyType != null && keyType == 2) {
                long uid = Long.parseLong(key);
                // 查询同店铺商品,同商品订单超过一定数量的
                List<Integer> hongBaoTypeList = new ArrayList<>();
                hongBaoTypeList.add(HongBaoV2.TYPE_ZIGOU);
         // 查询列表
         List<CommonOrderVO> list = commonOrderService.listQuery((pageIndex - 1) * pageSize, pageSize, keyType, key,
               state, type, orderState, startTime, endTime, sourceType, listShopId, listGoodsId, minTime, money, payment);
                if (riskType == 1) {
                    listGoodsId = commonOrderCountService.getSameGoodsOrderByUidAndHongBaoType(hongBaoTypeList, uid,
                            Integer.parseInt(configService.getValue(ConfigKeyEnum.adminMinSameGoodsOrderCount.getKey(), acceptData.getSystem())));
                    if (listGoodsId == null || listGoodsId.isEmpty()) {
                        JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无同商品订单"));
                        return;
                    }
                } else if (riskType == 2) {
                    listShopId = commonOrderCountService.getSameShopOrderByUidAndHongBaoType(hongBaoTypeList, uid,
                            Integer.parseInt(configService.getValue(ConfigKeyEnum.adminMinSameShopOrderCount.getKey(), acceptData.getSystem())));
                    if (listShopId == null || listShopId.isEmpty()) {
                        JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无同店铺订单"));
                        return;
                    }
                } else if (riskType == 3) {
                    money = OrderConstant.BIG_ORDER_MONEY;
                    minTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 180L);
                }
            }
         // 统计总数
         long count = commonOrderService.countQuery(keyType, key, state, type, orderState, startTime, endTime,
               sourceType, listShopId, listGoodsId, minTime, money, payment);
            // 查询列表
            List<CommonOrderVO> list = commonOrderService.listQuery((pageIndex - 1) * pageSize, pageSize, keyType, key,
                    state, typeList, orderState, startTime, endTime, sourceType, listShopId, listGoodsId, minTime, money, payment, acceptData.getSystem());
         for (CommonOrderVO order : list) {
            CommonOrderGoods goods = order.getCommonOrderGoods();
            if (goods != null) {
               CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(Long.parseLong(goods.getGoodsId()),
                     goods.getGoodsType());
               if (commonGoods != null) {
                  String categoryInfo = commonGoods.getCategoryInfo();
                  if (!StringUtil.isNullOrEmpty(categoryInfo)) {
                     JSONObject json = JSONObject.fromObject(categoryInfo);
                     CategoryInfoDTO otherDTO = (CategoryInfoDTO) JSONObject.toBean(json, CategoryInfoDTO.class);
                     if (otherDTO != null) {
                        goods.setCategory1(otherDTO.getCid1Name());
                        goods.setCategory2(otherDTO.getCid2Name());
                        goods.setCategory3(otherDTO.getCid3Name());
                     }
                  }
               }
            }
            if (order.getUserId() == null)
               continue;
            // 统计总数
            long count = commonOrderService.countQuery(keyType, key, state, typeList, orderState, startTime, endTime,
                    sourceType, listShopId, listGoodsId, minTime, money, payment, acceptData.getSystem());
            // 查询是否维权
            TaoBaoWeiQuanOrder weiQuanOrder = taoBaoWeiQuanOrderService.listByorderItemId(order.getTradeId());
            if (weiQuanOrder != null)// 有维权
            {
               order.setWeiQuanState(weiQuanOrder.getState());
               order.setState(CommonOrder.STATE_WQ);
               TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(
                     weiQuanOrder.getOrderItemId(), Long.parseLong(order.getUserId()));
               if (drawBack != null) {// 已经退款
            for (CommonOrderVO order : list) {
                  // 计算退款资金
                  UserMoneyDetail detail = null;
                  switch (order.getHongBaoType()) {
                  case 1:
                     detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                           UserMoneyDetailTypeEnum.fanliWeiQuan, Long.parseLong(order.getUserId()),
                           drawBack.getId());
                     if (detail == null)
                        detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                              UserMoneyDetailTypeEnum.weiQuan, Long.parseLong(order.getUserId()),
                              drawBack.getId());
                     break;
                  case 3:
                     detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                           UserMoneyDetailTypeEnum.inviteWeiQuan, Long.parseLong(order.getUserId()),
                           drawBack.getId());
                     break;
                  case 2:
                     detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                           UserMoneyDetailTypeEnum.shareWeiQuan, Long.parseLong(order.getUserId()),
                           drawBack.getId());
                     break;
                  }
                  if (detail != null) {
                     // 退款成功
                     order.setWeiQuanBackMoney(detail.getMoney().abs().toString());
                  } else {// 尚未退款
                     order.setWeiQuanBackMoney(drawBack.getDrawBackMoney().toString());
                     // 查询出对应的hongBaoId
                     CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(
                           Constant.SOURCE_TYPE_TAOBAO, drawBack.getOrderItemId());
                     if (commonOrder != null) {
                        HongBaoOrder hongBaoOrder = hongBaoOrderService
                              .selectDetailByCommonOrderId(commonOrder.getId());
                        if (hongBaoOrder != null) {
                           UserMoneyDebt debt = userMoneyDebtService.selectByTypeAndSourceId(
                                 UserMoneyDebtTypeEnum.order, hongBaoOrder.getHongBaoV2().getId());
                           if (debt != null && debt.getLeftMoney().compareTo(new BigDecimal(0)) > 0) {
                              order.setWeiQuanBackMoney(
                                    new BigDecimal(0).subtract(debt.getLeftMoney()).toString());// 未扣除
                           }
                        }
                     }
                  }
                CommonOrderGoods goods = order.getCommonOrderGoods();
                if (goods != null) {
                    CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(Long.parseLong(goods.getGoodsId()),
                            goods.getGoodsType());
                    if (commonGoods != null) {
                        String categoryInfo = commonGoods.getCategoryInfo();
                        if (!StringUtil.isNullOrEmpty(categoryInfo)) {
                            JSONObject json = JSONObject.fromObject(categoryInfo);
                            CategoryInfoDTO otherDTO = (CategoryInfoDTO) JSONObject.toBean(json, CategoryInfoDTO.class);
                            if (otherDTO != null) {
                                goods.setCategory1(otherDTO.getCid1Name());
                                goods.setCategory2(otherDTO.getCid2Name());
                                goods.setCategory3(otherDTO.getCid3Name());
                            }
                        }
                    }
                }
               } else {// 尚未退款
                  UserOrderWeiQuanRecord record = userOrderWeiQuanRecordService.selectByOrderInfoAndUid(
                        Long.parseLong(order.getUserId()), weiQuanOrder.getOrderItemId(),
                        Constant.SOURCE_TYPE_TAOBAO);
                  if (record != null)
                     order.setWeiQuanBackMoney("-" + record.getMoney());
                  else {
                     order.setWeiQuanBackMoney("-" + order.getHongBao());
                  }
               }
            }
         }
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
                if (order.getUserId() == null)
                    continue;
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (CommonOrderException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
         e.printStackTrace();
      }
   }
                // 查询是否维权
                TaoBaoWeiQuanOrder weiQuanOrder = taoBaoWeiQuanOrderService.listByorderItemId(order.getTradeId());
                if (weiQuanOrder != null)// 有维权
                {
                    order.setWeiQuanState(weiQuanOrder.getState());
                    order.setState(CommonOrder.STATE_WQ);
                    TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(
                            weiQuanOrder.getOrderItemId(), Long.parseLong(order.getUserId()));
                    if (drawBack != null) {// 已经退款
   /**
    * 查询订单列表用户uid
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param uid
    * @param state
    * @param type
    * @param orderState
    * @param orderNo
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getHistoryOrder")
   public void getHistoryOrder(String callback, Integer pageIndex, Integer pageSize, Long uid, Integer state,
         Integer type, Integer orderState, String orderNo, String startTime, String endTime, PrintWriter out) {
                        // 计算退款资金
                        UserMoneyDetail detail = null;
                        switch (order.getHongBaoType()) {
                            case 1:
                                detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                                        UserMoneyDetailTypeEnum.fanliWeiQuan, Long.parseLong(order.getUserId()),
                                        drawBack.getId());
                                if (detail == null)
                                    detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                                            UserMoneyDetailTypeEnum.weiQuan, Long.parseLong(order.getUserId()),
                                            drawBack.getId());
                                break;
                            case 3:
                                detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                                        UserMoneyDetailTypeEnum.inviteWeiQuan, Long.parseLong(order.getUserId()),
                                        drawBack.getId());
                                break;
                            case 2:
                                detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                                        UserMoneyDetailTypeEnum.shareWeiQuan, Long.parseLong(order.getUserId()),
                                        drawBack.getId());
                                break;
                        }
                        if (detail != null) {
                            // 退款成功
                            order.setWeiQuanBackMoney(detail.getMoney().abs().toString());
                        } else {// 尚未退款
                            order.setWeiQuanBackMoney(drawBack.getDrawBackMoney().toString());
                            // 查询出对应的hongBaoId
                            CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(
                                    Constant.SOURCE_TYPE_TAOBAO, drawBack.getOrderItemId());
                            if (commonOrder != null) {
                                HongBaoOrder hongBaoOrder = hongBaoOrderService
                                        .selectDetailByCommonOrderId(commonOrder.getId());
                                if (hongBaoOrder != null) {
                                    UserMoneyDebt debt = userMoneyDebtService.selectByTypeAndSourceId(
                                            UserMoneyDebtTypeEnum.order, hongBaoOrder.getHongBaoV2().getId());
                                    if (debt != null && debt.getLeftMoney().compareTo(new BigDecimal(0)) > 0) {
                                        order.setWeiQuanBackMoney(
                                                new BigDecimal(0).subtract(debt.getLeftMoney()).toString());// 未扣除
                                    }
                                }
                            }
                        }
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("uid不能为空"));
         return;
      }
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
      if (pageSize == null)
         pageSize = Constant.PAGE_SIZE;
      if (state != null && state == 0) {
         state = null;// 所有状态
      }
      if (type != null && type == 0) {
         type = null; // 所有类型订单
      }
      if (endTime != null && endTime.trim().length() > 0) {
         endTime += " 23:59:59";
      }
      try {
         long count = 0;
         // 查询列表
         List<CommonOrderVO> list = commonOrderService.listQueryByUid((pageIndex - 1) * pageSize, pageSize, uid,
               state, type, orderState, orderNo, startTime, endTime, null);
         if (list != null && list.size() > 0) {
            // 统计总数
            count = commonOrderService.countQueryByUid(uid, state, type, orderState, orderNo, startTime, endTime,
                  null);
         }
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (CommonOrderException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
         e.printStackTrace();
      }
   }
   /**
    * 当前未收货订单数
    *
    * @param callback
    * @param type
    *            订单状态-暂未使用
    * @param out
    */
   @RequestMapping(value = "getHistoryUnreceived")
   public void getHistoryUnreceived(String callback, Integer type, PrintWriter out) {
      try {
         Long total = commonOrderCountService.countByState(1);
         if (total == null) {
            total = 0L;
         }
         JSONObject data = new JSONObject();
         data.put("total", total);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 维权订单数
    *
    * @param callback
    * @param dateType
    * @param year
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getWeiQaunOrderNumber")
   public void getWeiQaunOrderNumber(String callback, Integer dateType, String year, String startTime, String endTime,
         PrintWriter out) {
      String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
      if (validateMsg != null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
         return;
      }
      try {
         JSONObject data = countWeiQaunOrder(dateType, year, startTime, endTime, 1);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
         e.printStackTrace();
      }
   }
   /**
    * 维权订单金额
    *
    * @param callback
    * @param dateType
    * @param year
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getWeiQaunOrderMoney")
   public void getWeiQaunOrderMoney(String callback, Integer dateType, String year, String startTime, String endTime,
         PrintWriter out) {
      String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
      if (validateMsg != null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
         return;
      }
      try {
         JSONObject data = countWeiQaunOrder(dateType, year, startTime, endTime, 2);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
         e.printStackTrace();
      }
   }
   /**
    * 统计红包信息
    *
    * @param channelArray
    * @param dateType
    * @param state
    * @param year
    * @param startTime
    * @param endTime
    * @return
    * @throws Exception
    */
   public JSONObject countWeiQaunOrder(Integer dateType, String year, String startTime, String endTime, int countType)
         throws Exception {
      if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
         startTime = null;
         endTime = null;
      }
      if (dateType == 1 && year != null) {
         year = null; // 设置为空
      } else if (dateType == 2) {
         if (startTime != null)
            startTime = null;
         if (endTime != null)
            endTime = null;
      } else if (dateType == 3) {
         if (year != null)
            year = null;
                    } else {// 尚未退款
                        UserOrderWeiQuanRecord record = userOrderWeiQuanRecordService.selectByOrderInfoAndUid(
                                Long.parseLong(order.getUserId()), weiQuanOrder.getOrderItemId(),
                                Constant.SOURCE_TYPE_TAOBAO);
                        if (record != null)
                            order.setWeiQuanBackMoney("-" + record.getMoney());
                        else {
                            order.setWeiQuanBackMoney("-" + order.getHongBao());
                        }
                    }
                }
            }
         if (startTime != null)
            startTime = null;
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         if (endTime != null)
            endTime = null;
      }
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("result_list", list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (CommonOrderException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
            e.printStackTrace();
        }
    }
      Gson gson = new Gson();
      Object objectDate = null;
      List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
    /**
     * 查询订单列表用户uid
     *
     * @param callback
     * @param pageIndex
     * @param pageSize
     * @param uid
     * @param state
     * @param type
     * @param orderState
     * @param orderNo
     * @param startTime
     * @param endTime
     * @param out
     */
    @RequestMapping(value = "getHistoryOrder")
    public void getHistoryOrder(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, Long uid, Integer state,
                                Integer type, Integer orderState, String orderNo, String startTime, String endTime, PrintWriter out) {
      JSONArray line_list = new JSONArray();
      List<ChartTDO> list = null;
      if (countType == 1) {
         list = commonOrderCountService.countWeiQaunOrderNumber(dateType, year, startTime, endTime);
      } else if (countType == 2) {
         list = commonOrderCountService.countWeiQaunOrderMoney(dateType, year, startTime, endTime);
      }
        if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("uid不能为空"));
            return;
        }
      JSONObject innerList = new JSONObject();
      innerList.put("name", "总计");
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
        }
      if (dateType != 3) {
         innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list)));
      } else {
         // 年视图
         Map<String, Object> map = AdminUtils.yearsDataFactory(list);
        if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         if (objectDate == null) {
            objectDate = map.get("date");
         }
         innerList.put("data", gson.toJson(map.get("value")));
      }
        if (state != null && state == 0) {
            state = null;// 所有状态
        }
      line_list.add(innerList);
        if (type != null && type == 0) {
            type = null; // 所有类型订单
        }
      JSONObject data = new JSONObject();
      if (objectDate != null) {
         data.put("xAxis_list", gson.toJson(objectDate));
      } else {
         data.put("xAxis_list", gson.toJson(dateList));
      }
        if (endTime != null && endTime.trim().length() > 0) {
            endTime += " 23:59:59";
        }
      data.put("line_list", line_list);
        try {
            long count = 0;
      return data;
   }
            // 查询列表
            List<CommonOrderVO> list = commonOrderService.listQueryByUid((pageIndex - 1) * pageSize, pageSize, uid,
                    state, type, orderState, orderNo, startTime, endTime, null);
   @RequestMapping(value = "uploadTaoBaoWeiQuanOrder")
   public void uploadWeiQuanOrder(String callback, HttpServletRequest request, PrintWriter out) {
      try {
         // 1. 先判断httpRequest 是否含有文件类型
         if (request instanceof MultipartHttpServletRequest) {
            MultipartHttpServletRequest fileRequest = (MultipartHttpServletRequest) request;
            MultipartFile file = fileRequest.getFile("file");
            List<TaoBaoWeiQuanOrder> orderList = TaoBaoOrderUtil.getWeiQuanOrders(file.getInputStream());
            for (TaoBaoWeiQuanOrder order : orderList)
               taoBaoWeiQuanOrderService.addWeiQuanOrder(order);// 添加维权订单到数据库
            // 处理维权订单
            orderProcessService.weiQuanOrder(orderList);
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("更新成功"));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("更新失败"));
      }
   }
   /**
    * 订单跟踪准确率(板栗快省用户订单/淘宝联盟订单)
    *
    * @param callback
    * @param dateType
    * @param year
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getTrackAccuracyRate")
   public void getTrackAccuracyRate(String callback, Integer dateType, String year, String startTime, String endTime,
         int sourceType, PrintWriter out) {
            if (list != null && list.size() > 0) {
                // 统计总数
                count = commonOrderService.countQueryByUid(uid, state, type, orderState, orderNo, startTime, endTime,
                        null);
            }
      if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
         startTime = null;
         endTime = null;
      }
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
      if (dateType == 1 && year != null) {
         year = null; // 设置为空
      } else if (dateType == 2) {
         if (startTime != null)
            startTime = null;
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("result_list", list);
         if (endTime != null)
            endTime = null;
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } else if (dateType == 3) {
         if (year != null)
            year = null;
        } catch (CommonOrderException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
            e.printStackTrace();
        }
    }
         if (startTime != null)
            startTime = null;
         if (endTime != null)
            endTime = null;
      }
    /**
     * 当前未收货订单数
     *
     * @param callback
     * @param type     订单状态-暂未使用
     * @param out
     */
    @RequestMapping(value = "getHistoryUnreceived")
    public void getHistoryUnreceived(AdminAcceptData acceptData, String callback, Integer type, PrintWriter out) {
        try {
      try {
            Long total = commonOrderCountService.countByState(1);
            if (total == null) {
                total = 0L;
            }
            JSONObject data = new JSONObject();
            data.put("total", total);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
         Gson gson = new Gson();
         Object objectDate = null;
         List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
         JSONArray line_list = new JSONArray();
    @RequestMapping(value = "uploadTaoBaoWeiQuanOrder")
    public void uploadWeiQuanOrder(AdminAcceptData acceptData, String callback, HttpServletRequest request, PrintWriter out) {
        try {
            // 1. 先判断httpRequest 是否含有文件类型
            if (request instanceof MultipartHttpServletRequest) {
                MultipartHttpServletRequest fileRequest = (MultipartHttpServletRequest) request;
                MultipartFile file = fileRequest.getFile("file");
                List<TaoBaoWeiQuanOrder> orderList = TaoBaoOrderUtil.getWeiQuanOrders(file.getInputStream());
                for (TaoBaoWeiQuanOrder order : orderList)
                    taoBaoWeiQuanOrderService.addWeiQuanOrder(order);// 添加维权订单到数据库
                // 处理维权订单
                orderProcessService.weiQuanOrder(orderList);
            }
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("更新成功"));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("更新失败"));
        }
    }
         List<ChartTDO> list = commonOrderCountService.getTrackAccuracyRate(dateType, year, startTime, endTime,
               sourceType);
         JSONObject innerList = new JSONObject();
         innerList.put("name", "总计");
    @RequestMapping(value = "countOrderInfo")
    public void countOrderInfo(AdminAcceptData acceptData, String callback, Long uid, PrintWriter out) {
        JSONObject data = new JSONObject();
         if (dateType != 3) {
            innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list)));
         } else {
            // 年视图
            Map<String, Object> map = AdminUtils.yearsDataFactory(list);
        /* ---------  本月累计 ------------*/
        JSONObject month = new JSONObject();
        // 自购已到账
        month.put("selfNumEnd", hongBaoV2CountService.countOrderByCashArrival(uid, null, 1, 1));
        // 分享已到账
        month.put("shareNumEnd", hongBaoV2CountService.countOrderByCashArrival(uid, null, 2, 1));
        // 邀请已到账
        month.put("inviteNumEnd", hongBaoV2CountService.countOrderByCashArrival(uid, null, 3, 1));
        // 自购未到账
        month.put("selfNum", hongBaoV2CountService.countOrderByCashNotArrival(uid, null, 1, 1));
        // 分享未到账
        month.put("shareNum", hongBaoV2CountService.countOrderByCashNotArrival(uid, null, 2, 1));
        // 邀请未到账
        month.put("inviteNum", hongBaoV2CountService.countOrderByCashNotArrival(uid, null, 3, 1));
        data.put("month", month);
            if (objectDate == null) {
               objectDate = map.get("date");
            }
            innerList.put("data", gson.toJson(map.get("value")));
         }
         line_list.add(innerList);
        /* ---------  历史累计 ------------*/
        JSONObject history = new JSONObject();
        // 自购已到账
        history.put("selfNumEnd", hongBaoV2CountService.countOrderByCashArrival(uid, null, 1, null));
        // 分享已到账
        history.put("shareNumEnd", hongBaoV2CountService.countOrderByCashArrival(uid, null, 2, null));
        // 邀请已到账
        history.put("inviteNumEnd", hongBaoV2CountService.countOrderByCashArrival(uid, null, 3, null));
        // 自购未到账
        history.put("selfNum", hongBaoV2CountService.countOrderByCashNotArrival(uid, null, 1, null));
        // 分享未到账
        history.put("shareNum", hongBaoV2CountService.countOrderByCashNotArrival(uid, null, 2, null));
        // 邀请未到账
        history.put("inviteNum", hongBaoV2CountService.countOrderByCashNotArrival(uid, null, 3, null));
        data.put("history", history);
         JSONObject data = new JSONObject();
         if (objectDate != null) {
            data.put("xAxis_list", gson.toJson(objectDate));
         } else {
            data.put("xAxis_list", gson.toJson(dateList));
         }
         data.put("line_list", line_list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        /* ---------  付款金额大于1 ------------*/
        // 自购已到账
        long selfAccountEnd = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY, 1);
        // 分享已到账
        long shareAccountEnd = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY, 2);
        // 自购未到账
        long selfAccount = hongBaoV2CountService.countOrderByCashNotArrival(uid, Constant.VIP_ORDER_PAY, 1, null);
        // 分享未到账
        long shareAccount = hongBaoV2CountService.countOrderByCashNotArrival(uid, Constant.VIP_ORDER_PAY, 2, null);
        data.put("selfAccountEnd", selfAccountEnd);
        data.put("shareAccountEnd", shareAccountEnd);
        data.put("selfAccount", selfAccount);
        data.put("shareAccount", shareAccount);
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
    }
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
}