admin
2020-11-09 2147d023563a7c9d05d97547c00d6b0162c0644c
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java
@@ -11,6 +11,8 @@
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;
@@ -43,12 +45,9 @@
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;
@@ -61,435 +60,443 @@
public class OrderAdminController {
   @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 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 ConfigService configService;
    @Resource
    private ConfigService configService;
   @Resource
   private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
   @Resource
   private CommonGoodsService commonGoodsService;
    @Resource
    private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
   /**
    * 统计历史订单-淘宝订单
    *
    * @param callback
    * @param request
    * @param out
    */
   @RequestMapping(value = "countTaoBaoOrder")
   public void countTaoBaoOrder(AdminAcceptData acceptData,String callback, HttpServletRequest request, PrintWriter out) {
    @Resource
    private CommonGoodsService commonGoodsService;
      try {
         Map<String, Object> countByOdrerType = taoBaoOrderCountService.countByOdrerType();
    /**
     * 统计历史订单-淘宝订单
     *
     * @param callback
     * @param request
     * @param out
     */
    @RequestMapping(value = "countTaoBaoOrder")
    public void countTaoBaoOrder(AdminAcceptData acceptData, String callback, HttpServletRequest request, PrintWriter out) {
         JSONObject data = new JSONObject();
         data.put("typeOrder", countByOdrerType);
        try {
            Map<String, Object> countByOdrerType = taoBaoOrderCountService.countByOdrerType();
         // 统计今日 未失效订单数量 相同订单号合并为一单
         int todayOrder = taoBaoOrderCountService.countToday();
         // 统计昨日 未失效订单数量 相同订单号合并为一单
         int yesterdayOrder = taoBaoOrderCountService.countYesterday();
            JSONObject data = new JSONObject();
            data.put("typeOrder", countByOdrerType);
         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();
      }
   }
            // 统计今日 未失效订单数量 相同订单号合并为一单
            int todayOrder = taoBaoOrderCountService.countToday();
            // 统计昨日 未失效订单数量 相同订单号合并为一单
            int yesterdayOrder = taoBaoOrderCountService.countYesterday();
   /**
    * 查询所有用户订单列表
    *
    * @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, Integer type, Integer orderState, String startTime, String endTime, Integer sourceType,
                         Integer riskType, BigDecimal payment, PrintWriter out) {
            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();
        }
    }
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
    /**
     * 查询所有用户订单列表
     *
     * @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 (pageSize == null)
         pageSize = Constant.PAGE_SIZE;
        List<Integer> typeList = null;
      if (state != null && state == 0) {
         state = null;// 所有状态
      }
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
        }
      if (type != null && type == 0) {
         type = null; // 所有类型订单
      }
        if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
      if (endTime != null && endTime.trim().length() > 0) {
         endTime += " 23:59:59";
      }
        if (state != null && state == 0) {
            state = null;// 所有状态
        }
      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 (!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));
                }
            }
        }
            if (riskType == 1) {
               listGoodsId = commonOrderCountService.getSameGoodsOrderByUidAndHongBaoType(typeList, 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(typeList, 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 = new BigDecimal(100);
               minTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 180L);
            }
         }
        if (endTime != null && endTime.trim().length() > 0) {
            endTime += " 23:59:59";
        }
         // 查询列表
         List<CommonOrderVO> list = commonOrderService.listQuery((pageIndex - 1) * pageSize, pageSize, keyType, key,
               state, type, orderState, startTime, endTime, sourceType, listShopId, listGoodsId, minTime, money, payment,acceptData.getSystem());
        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);
         // 统计总数
         long count = commonOrderService.countQuery(keyType, key, state, type, orderState, startTime, endTime,
               sourceType, listShopId, listGoodsId, minTime, money, payment,acceptData.getSystem());
                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);
                }
            }
         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;
            // 查询列表
            List<CommonOrderVO> list = commonOrderService.listQuery((pageIndex - 1) * pageSize, pageSize, 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) {// 已经退款
            // 统计总数
            long count = commonOrderService.countQuery(keyType, key, state, typeList, orderState, startTime, endTime,
                    sourceType, listShopId, listGoodsId, minTime, money, payment, acceptData.getSystem());
                  // 计算退款资金
                  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());// 未扣除
                           }
                        }
                     }
                  }
            for (CommonOrderVO order : list) {
               } 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);
         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();
      }
   }
   /**
    * 查询订单列表用户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) {
      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();
      }
   }
                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());
                            }
                        }
                    }
                }
   /**
    * 当前未收货订单数
    *
    * @param callback
    * @param type
    *            订单状态-暂未使用
    * @param out
    */
   @RequestMapping(value = "getHistoryUnreceived")
   public void getHistoryUnreceived(AdminAcceptData acceptData,String callback, Integer type, PrintWriter out) {
      try {
                if (order.getUserId() == null)
                    continue;
         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();
      }
   }
                // 查询是否维权
                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) {// 已经退款
   @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("更新失败"));
      }
   }
   @RequestMapping(value = "countOrderInfo")
   public void countOrderInfo(AdminAcceptData acceptData,String callback, Long uid, PrintWriter out) {
      JSONObject data = new JSONObject();
      /* ---------  本月累计 ------------*/
      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);
      /* ---------  历史累计 ------------*/
      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);
      /* ---------  付款金额大于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));
   }
                        // 计算退款资金
                        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());// 未扣除
                                    }
                                }
                            }
                        }
                    } 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);
            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();
        }
    }
    /**
     * 查询订单列表用户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) {
        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(AdminAcceptData acceptData, 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();
        }
    }
    @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("更新失败"));
        }
    }
    @RequestMapping(value = "countOrderInfo")
    public void countOrderInfo(AdminAcceptData acceptData, String callback, Long uid, PrintWriter out) {
        JSONObject data = new JSONObject();
        /* ---------  本月累计 ------------*/
        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);
        /* ---------  历史累计 ------------*/
        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);
        /* ---------  付款金额大于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));
    }
}