yujian
2020-01-07 1b3856e8f5431508d944a3b9c7a444dac3536bb6
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserOrderController.java
@@ -3,6 +3,7 @@
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -21,11 +22,13 @@
import com.yeshi.fanli.entity.AppVersionInfo;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.LostOrder;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.log.LogHelper;
@@ -35,13 +38,15 @@
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.vo.order.CommonOrderVO;
@@ -83,6 +88,9 @@
   @Resource
   private LostOrderService lostOrderService;
   @Resource
   private RedisManager redisManager;
   /**
    * 订单列表
    * 
@@ -110,17 +118,24 @@
    */
   @RequestMapping(value = "getorder", method = RequestMethod.POST)
   public void getOrder(AcceptData acceptData, Integer page, Long uid, Integer state,
         @RequestParam("type") String type1, Integer orderState, String orderNo, String startTime, String endTime,
         Integer slotTime, boolean needCount, Integer dateType, Integer goodsType, PrintWriter out) {
         @RequestParam(name = "type", required = false) String type1, Integer orderState, String orderNo,
         String startTime, String endTime, Integer slotTime, Boolean needCount, Integer dateType, Integer goodsType,
         PrintWriter out) {
      Integer type = null;
      if (StringUtil.isNullOrEmpty(type1))
      if (StringUtil.isNullOrEmpty(type1)) {
         type = null;
      } else {
         type = Integer.parseInt(type1);
      }
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      if (needCount == null)
         needCount = false;
      if (page == null || page < 1) {
         page = 1;
@@ -146,12 +161,24 @@
         type = null; // 所有类型订单
      }
      Integer tempState = state;
      // 转换状态
      if (state != null && orderState != null && (orderState == 2 || orderState == 3)) {
         state = null; // 清空
      }
      if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
         goodsType = Constant.SOURCE_TYPE_TAOBAO;
      } else if (goodsType != null && goodsType == 0) {
         goodsType = null; // 所有平台订单
      }
      List<Integer> listSource = new ArrayList<>();
      if (goodsType != null) {
         listSource.add(goodsType);
      }
      try {
         if (slotTime != null) {
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
@@ -166,22 +193,25 @@
         endTime += " 23:59:59";
      }
      String orderFindUrl = null;
      try {
         long count = 0;
         int totalValid = 0;
         int totalProces = 0;
         int totalInvite = 0;
         long totalValid = 0;
         long totalProces = 0;
         long totalInvite = 0;
         long todayTotal = 0;
         BigDecimal todayMoney = null;
         // 查询列表
         List<CommonOrderVO> list = commonOrderService.getOrderByUid(acceptData, page, uid, state, type, orderState,
               orderNo, startTime, endTime, dateType, goodsType);
               orderNo, startTime, endTime, dateType, listSource);
         if (list != null && list.size() > 0) {
            // 统计总数
            count = commonOrderService.countGroupOrderNoByUid(uid, state, type, orderState, orderNo, startTime,
                  endTime, dateType, goodsType);
                  endTime, dateType, listSource);
         }
         // 需要统计筛选信息 :未失效的总金额 以及订单
@@ -193,34 +223,35 @@
            todayTotal = commonOrderService.countBonusOrderNumber(uid, type, dateType, startTime, endTime,
                  goodsType);
            // 统计有效的订单数量 、 失效订单数量 、维权订单数量
            Map<String, BigDecimal> countOrder = commonOrderService.countByUidAndOrderState(uid, type, startTime,
                  endTime, dateType, goodsType);
            // 有效订单
            totalValid = commonOrderService.countUserOrderToApp(uid, type, startTime, endTime, dateType, goodsType,
                  tempState, 1);
            if (countOrder.get("totalValid") != null) {
               totalValid = countOrder.get("totalValid").intValue();
            }
            // 维权订单
            totalProces = commonOrderService.countUserOrderToApp(uid, type, startTime, endTime, dateType, goodsType,
                  null, 2);
            if (countOrder.get("totalProces") != null) {
               totalProces = countOrder.get("totalProces").intValue();
            }
            if (countOrder.get("totalInvite") != null) {
               totalInvite = countOrder.get("totalInvite").intValue();
            }
            // 失效订单
            totalInvite = commonOrderService.countUserOrderToApp(uid, type, startTime, endTime, dateType, goodsType,
                  null, 3);
         }
         if (todayMoney == null) {
            todayMoney = new BigDecimal(0.00);
         }
         String helpUrl = configService.get("order_list_help");
         // 判断是否需要显示订单找回提示
         if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion()))
            if (state ==null && page == 1) {
               if (redisManager.frequencyLimit("orderlist-" + acceptData.getDevice(), 8, 4)||count==0L) {// 8秒内请求3次触发
                  orderFindUrl = configService.get(ConfigKeyEnum.orderFindNotifyUrl.getKey());
               }
            }
         JSONObject data = new JSONObject();
         data.put("count", count);
         data.put("result_list", JsonUtil.getApiCommonGson().toJson(list));
         data.put("helpUrl", helpUrl);
         data.put("helpUrl", configService.get(ConfigKeyEnum.orderListHelp.getKey()));
         if (type != null && type == 1) {
            data.put("todayMoney", "预估返利总额 ¥" + todayMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
@@ -234,16 +265,15 @@
         data.put("totalValid", totalValid); // 有效数量
         data.put("totalProces", totalProces); // 维权数量
         data.put("totalInvite", totalInvite); // 失效数量
         if (orderFindUrl != null)
            data.put("findOrderHelpUrl", orderFindUrl);
         out.print(JsonUtil.loadTrueResult(data));
      } catch (CommonOrderException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "查询失败"));
         e.printStackTrace();
         LogHelper.errorDetailInfo(e);
      }
   }
   /**
@@ -473,50 +503,74 @@
    */
   @RequestMapping(value = "countBonus", method = RequestMethod.POST)
   public void countBonus(AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      try {
      long nowTime = System.currentTimeMillis();
      long recievedTime = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTime, "yyyy-MM") + "-25 10",
            "yyyy-MM-dd HH");
      try {
         Object shareCount = 0;
         BigDecimal sharemoney = new BigDecimal(0.00);
         Object inviteCount = 0;
         BigDecimal inviteMoney = new BigDecimal(0.00);
         Integer goodsType = null; // 版本区分
         if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
            goodsType = Constant.SOURCE_TYPE_TAOBAO;
         }
         if (nowTime > recievedTime && dateType == 4) {// 实际到账
            List<Integer> inviteTypes = new ArrayList<>();
            inviteTypes.add(HongBaoV2.TYPE_YIJI);
            inviteTypes.add(HongBaoV2.TYPE_ERJI);
            inviteTypes.add(HongBaoV2.TYPE_SHARE_YIJI);
            inviteTypes.add(HongBaoV2.TYPE_SHARE_ERJI);
         Map<String, Object> shareMap = commonOrderService.countBonusOrderMoneyAndNumber(uid, 2, dateType, null,
               null, goodsType);
         if (shareMap != null) {
            Object totalNum = shareMap.get("totalNum");
            if (totalNum != null) {
               shareCount = totalNum;
            List<Integer> shareTypes = new ArrayList<>();
            shareTypes.add(HongBaoV2.TYPE_SHARE_GOODS);
            Date minGetTime = new Date(
                  TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTime, "yyyy-MM") + "-25", "yyyy-MM-dd"));
            Date maxGetTime = new Date(nowTime);
            inviteMoney = hongBaoV2CountService.sumAlreadyGetMoneyByUid(uid, inviteTypes, minGetTime, maxGetTime);
            inviteCount = hongBaoV2CountService.countAlreadyGetMoneyByUid(uid, inviteTypes, minGetTime, maxGetTime);
            sharemoney = hongBaoV2CountService.sumAlreadyGetMoneyByUid(uid, shareTypes, minGetTime, maxGetTime);
            shareCount = hongBaoV2CountService.countAlreadyGetMoneyByUid(uid, shareTypes, minGetTime, maxGetTime);
         } else {// 预估到账
            Integer goodsType = null; // 版本区分
            if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
               goodsType = Constant.SOURCE_TYPE_TAOBAO;
            }
            Map<String, Object> shareMap = commonOrderService.countBonusOrderMoneyAndNumber(uid, 2, dateType, null,
                  null, goodsType);
            if (shareMap != null) {
               Object totalNum = shareMap.get("totalNum");
               if (totalNum != null) {
                  shareCount = totalNum;
               }
               Object totalmoney = shareMap.get("totalmoney");
               if (totalmoney != null) {
                  sharemoney = (BigDecimal) totalmoney;
               }
            }
            Object totalmoney = shareMap.get("totalmoney");
            if (totalmoney != null) {
               sharemoney = (BigDecimal) totalmoney;
            }
         }
            // 邀请统计
         // 邀请统计
         Map<String, Object> inviteMap = commonOrderService.countBonusOrderMoneyAndNumber(uid, 3, dateType, null,
               null, goodsType);
         if (inviteMap != null) {
            Object totalNum = inviteMap.get("totalNum");
            if (totalNum != null) {
               inviteCount = totalNum;
            }
            Map<String, Object> inviteMap = commonOrderService.countBonusOrderMoneyAndNumber(uid, 3, dateType, null,
                  null, goodsType);
            if (inviteMap != null) {
               Object totalNum = inviteMap.get("totalNum");
               if (totalNum != null) {
                  inviteCount = totalNum;
               }
            Object totalmoney = inviteMap.get("totalmoney");
            if (totalmoney != null) {
               inviteMoney = (BigDecimal) totalmoney;
               Object totalmoney = inviteMap.get("totalmoney");
               if (totalmoney != null) {
                  inviteMoney = (BigDecimal) totalmoney;
               }
            }
         }