yujian
2020-05-21 1e1ae4f19489644c9ff35125d075a30f89536d16
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -41,6 +41,7 @@
import com.yeshi.fanli.service.inter.money.extract.ExtractService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService;
import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderUserMapService;
import com.yeshi.fanli.service.inter.user.PreviewInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
@@ -53,6 +54,8 @@
import com.yeshi.fanli.vo.money.MoneyPredictVO;
import com.yeshi.fanli.vo.money.MoneyStatisticVO;
import com.yeshi.fanli.vo.money.TeamPredictVO;
import com.yeshi.fanli.vo.order.OrderRankingVO;
import com.yeshi.fanli.vo.order.TeamDividentsVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -96,6 +99,9 @@
   
   @Resource
   private PreviewInfoService previewInfoService;
   @Resource
   private TeamDividentsSourceOrderUserMapService teamDividentsSourceOrderUserMapService;
   
   private Gson getGson() {
@@ -557,9 +563,9 @@
    * @param out
    */
   @RequestMapping(value = "getTeamDividendStatistic")
   public void getTeamDividendStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
   public void getTeamDividendStatistic(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
@@ -592,7 +598,7 @@
      object.put("subsidy", subsidy.setScale(2).toString());
      object.put("today", gson.toJson(todayVO));
      object.put("month", gson.toJson(monthVO));
      out.print(JsonUtil.loadTrueResult(object));
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
   }
   private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) {
@@ -627,15 +633,15 @@
    * @param out
    */
   @RequestMapping(value = "getTeamDividendHistory")
   public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype,
   public void getTeamDividendHistory(String callback, AcceptData acceptData, Long uid, String date, Integer datetype,
         PrintWriter out) {
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (StringUtil.isNullOrEmpty(date) || datetype == null) {
         out.print(JsonUtil.loadFalseResult(1, "参数不完整"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整"));
         return;
      }
@@ -727,9 +733,92 @@
         JSONObject object = new JSONObject();
         object.put("count", list.size());
         object.put("list", gson.toJson(list));
         out.print(JsonUtil.loadTrueResult(object));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
      } catch (ParseException e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
      }
   }
   /**
    *  分红详情
    *
    * @param acceptData
    * @param uid
    * @param datetype   1-天 - 2月
    * @param out
    */
   @RequestMapping(value = "getTeamDividendDetail")
   public void getTeamDividendDetail(String callback, AcceptData acceptData, Integer page, Long uid,
         String date, Integer datetype, String key, PrintWriter out) {
      if (uid == null || uid == 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (StringUtil.isNullOrEmpty(date) || datetype == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整"));
         return;
      }
      if (page == null)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      try {
         Date minDay = new Date();
         Date maxDay = new Date();
         if (datetype == 1) {
            minDay = TimeUtil.parseYYYYMMDD(date);
            maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59");
         } else if (datetype == 2) {
            minDay = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date));
            maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59");
         }
         List<TeamDividentsVO> list = teamDividentsSourceOrderUserMapService.listByDateAndTargetUid((page-1) * pageSize, pageSize, uid, minDay, maxDay);
         if (list == null) {
            list = new ArrayList<>();
         }
         long count = teamDividentsSourceOrderUserMapService.countByDateAndTargetUid(uid, minDay, maxDay);
         GsonBuilder builder = new GsonBuilder();
         builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
            @Override
            public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
               if (value == null) {
                  return new JsonPrimitive("0.000");
               } else {
                  // 保留2位小数
                  value = value.setScale(3);
                  return new JsonPrimitive(value.toString());
               }
            }
         });
         Gson gson = builder.create();
         JSONObject object = new JSONObject();
         if (page == 1) {
            TeamDividentsVO teamDividentsVO = teamDividentsSourceOrderUserMapService.sumByDateAndTargetUid(uid, minDay, maxDay);
            if (teamDividentsVO == null) {
               teamDividentsVO = new TeamDividentsVO();
               teamDividentsVO.setSubsidy(BigDecimal.ZERO);
               teamDividentsVO.setDividents(BigDecimal.ZERO);
            }
            object.put("subsidy", teamDividentsVO.getSubsidy().setScale(3).toString());
            object.put("dividents", teamDividentsVO.getDividents().setScale(3).toString());
         }
         object.put("count", count);
         object.put("list", gson.toJson(list));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
      }
   }
@@ -810,7 +899,6 @@
   
   private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) {
      OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0,0,0);
      if (list != null && list.size() > 0) {
         for (OrderMoneyDailyCount record: list) {
            totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum());
@@ -818,7 +906,67 @@
            totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum());
         }
      }  
      return totalityRecord;
   }
   /**
    * 订单排行榜
    * @param callback
    * @param acceptData
    * @param uid
    * @param dateType
    * @param out
    */
   @RequestMapping(value = "getRanking")
   public void getRanking(String callback, AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) {
      if (uid == null || dateType == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数缺失"));
         return;
      }
      try {
         Date minDate = null;
         Date maxDate = null;
         long timeStamp = System.currentTimeMillis();
         Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(timeStamp);
         if (dateType == 1) {
            // 今日
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
         } else if (dateType == 2) {
            // 昨日
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
            minDate = DateUtil.reduceDay(1, maxDate);
         } else {
            // 本月
            maxDate = new Date(timeStamp);
            calendar = Calendar.getInstance();
            minDate = new Date(TimeUtil
                  .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
            calendar.add(Calendar.MONTH, -1);
         }
         List<OrderRankingVO> list = orderMoneyDailyCountService.getRankingByOrderNum(uid, minDate, maxDate);
         if (list.size() > 0) {
            for (OrderRankingVO vo: list) {
               UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid());
               vo.setNickName(user.getNickName());
               vo.setPortrait(user.getPortrait());
            }
         }
         JSONObject json = new JSONObject();
         json.put("list", list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
         e.printStackTrace();
      }
   }
}