admin
2020-07-22 73a3d86a47d8da711b609cd224c63526f7d00f9b
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserSystemCouponAdminController.java
@@ -1,26 +1,28 @@
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
import com.yeshi.fanli.entity.bus.user.UserSystemCouponGiveRecord;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.service.inter.count.UserSystemCouponCountService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.service.inter.user.UserSystemCouponGiveRecordService;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.vo.user.SystemCouponVO;
import com.yeshi.fanli.vo.user.UserSystemCouponCountVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@Controller
@@ -29,6 +31,9 @@
   @Resource
   private UserSystemCouponCountService userSystemCouponCountService;
   @Resource
   private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
   /**
    * 用户奖励券列表
@@ -43,8 +48,8 @@
    * @param out
    */
   @RequestMapping(value = "listRebateCoupon")
   public void listRebateCoupon(String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType,
         Integer state, Integer percent, PrintWriter out) {
   public void listRebateCoupon(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType,
                         Integer state, Integer percent, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
@@ -85,7 +90,7 @@
   }
   @RequestMapping(value = "listSystemRebateCoupon")
   public void listSystemRebateCoupon(String callback, Integer pageIndex, Integer pageSize, String key, Integer sort,
   public void listSystemRebateCoupon(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String key, Integer sort,
         PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
@@ -127,7 +132,7 @@
   }
   @RequestMapping(value = "listSystemFreeCoupon")
   public void listSystemFreeCoupon(String callback, Integer pageIndex, Integer pageSize, String key, Integer sort,
   public void listSystemFreeCoupon(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String key, Integer sort,
         PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
@@ -147,7 +152,7 @@
            return;
         }
         long count = userSystemCouponCountService.countSystemCouponFree(key);
         long count = list.size();
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
@@ -181,7 +186,7 @@
    * @param out
    */
   @RequestMapping(value = "listFreeCoupon")
   public void listFreeCoupon(String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType,
   public void listFreeCoupon(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType,
         Integer state, Integer activated, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
@@ -235,7 +240,7 @@
    * @param out
    */
   @RequestMapping(value = "listFreeCouponRecord")
   public void listFreeCouponRecord(String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType,
   public void listFreeCouponRecord(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType,
         Integer state, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
@@ -275,176 +280,118 @@
         e.printStackTrace();
      }
   }
   /**
    * 奖励券数量曲线图
    * @param callback
    * @param dateType
    * @param year
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getRebateCouponUsedNumCharts")
   public void getRebateCouponUsedNumCharts(String callback, Integer dateType, String year, String startTime,
         String endTime, PrintWriter out){
      try {
         String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
         if (validateMsg != null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
            return;
         }
         JSONObject data = getChartsData(dateType, year, startTime, endTime, 1, null);
         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 pageIndex
    * @param pageSize
    * @param key
    * @param type 1赠送免单券 、2-奖励券
    * @param state
    * @param out
    */
   @RequestMapping(value = "getRebateCouponMoneyCharts")
   public void getRebateCouponMoneyCharts(String callback, Integer dateType, String year, String startTime,
         String endTime, PrintWriter out){
      try {
         String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
         if (validateMsg != null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
            return;
         }
         JSONObject data = getChartsData(dateType, year, startTime, endTime, 2, null);
         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 = "getFreeCouponMoneyCharts")
   public void getFreeCouponMoneyCharts(String callback, Integer dateType, String year, String startTime,
         String endTime, Integer coupon, PrintWriter out){
      try {
         if (coupon == null || (coupon != 1 && coupon != 2)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("券类型不正确"));
            return;
         }
         String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
         if (validateMsg != null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
            return;
         }
         String couponType = null;
         if (coupon == 1) {
            couponType = "freeCoupon";
         } else if  (coupon == 2){
            couponType = "welfareFreeCoupon";
         }
         JSONObject data = getChartsData(dateType, year, startTime, endTime, 3, couponType);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
         e.printStackTrace();
      }
   }
   public JSONObject getChartsData(Integer dateType, String year, String startTime,
         String endTime, int source, String couponType) throws Exception {
   @RequestMapping(value = "listGiveCoupon")
   public void listGiveCoupon(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String key, Integer type,
         Integer state, PrintWriter out) {
      if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
         startTime = null;
         endTime = null;
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
      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;
         if (startTime != null)
            startTime = null;
         if (endTime != null)
            endTime = null;
      }
      Gson gson = new Gson();
      List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
      JSONObject innerList = new JSONObject();
      List<Map<String, Object>> list = null;
      if (source == 1) {
         // 奖励券数量
         innerList.put("name", "数量");
         list = userSystemCouponCountService.getRebateCouponUsedNumToCharts(dateType, year,
               startTime, endTime);
      } else if (source == 2) {
         // 奖励券金额
         innerList.put("name", "金额");
         list = userSystemCouponCountService.getRebateCouponMoneyToCharts(dateType, year,
               startTime, endTime);
      } else if (source == 3) {
         // 奖励券金额
         innerList.put("name", "金额");
         list = userSystemCouponCountService.getFreeCouponMoneyToCharts(dateType, year,
               startTime, endTime, couponType);
      if (pageSize == null || pageSize < 1) {
         pageSize = Constant.PAGE_SIZE;
      }
      
      Object objectDate = null;
      if (dateType != 3) {
         innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list)));
      } else {
         // 年视图
         Map<String, Object> map = AdminUtils.yearsDataFactory(list);
      String couponType = null;
      if (type != null) {
         if (type == 1) {
            couponType = "freeCouponGive";
         } else if  (type == 2){
            couponType = "rebatePercentCoupon";
         }
      }
         if (objectDate == null) {
            objectDate = map.get("date");
      try {
         List<UserSystemCouponGiveRecord> list = userSystemCouponGiveRecordService.listGiveRecord((pageIndex - 1) * pageSize,
               pageSize, couponType, state);
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         innerList.put("data", gson.toJson(map.get("value")));
         long count = userSystemCouponGiveRecordService.countGiveRecord(couponType, state);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", gson.toJson(list));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
      JSONArray line_list = new JSONArray();
      line_list.add(innerList);
      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);
      return data;
   }
   /**
    * 券统计
    * @param callback
    * @param uid
    * @param out
    */
   @RequestMapping(value = "statisticsCoupon")
   public void statisticsCoupon(AdminAcceptData acceptData,String callback, Long uid, PrintWriter out) {
      try {
         List<String> listSource = new ArrayList<>();
         listSource.add(UserSystemCoupon.SOURCE_EXCHANGE);
         // 免单券
         List<String> listFree = new ArrayList<>();
         listFree.add(CouponTypeEnum.freeCoupon.name());
         listFree.add(CouponTypeEnum.welfareFreeCoupon.name());
         listFree.add(CouponTypeEnum.freeCouponBuy.name());
         listFree.add(CouponTypeEnum.freeCouponGive.name());
         // 累计-金币兑换
         long freeTotal = userSystemCouponCountService.countCouponNum(uid, null, null, listFree,listSource);
         // 使用中
         long freeUseIn = userSystemCouponCountService.countCouponNum(uid, UserSystemCoupon.STATE_IN_USE, null, listFree, null);
         // 剩余
         long freeUseCan = userSystemCouponCountService.countCouponNum(uid, UserSystemCoupon.STATE_CAN_USE, null, listFree, null);
         long freeUseActive = userSystemCouponCountService.countCouponNum(uid, 0, 0, listFree, null);
         // 奖励券
         listFree.clear();
         listFree.add(CouponTypeEnum.rebatePercentCoupon.name());
         // 累计-金币兑换
         long rebateTotal = userSystemCouponCountService.countCouponNum(uid, null, null, listFree, listSource);
         // 使用中
         long rebateUseIn = userSystemCouponCountService.countCouponNum(uid, UserSystemCoupon.STATE_IN_USE, null, listFree, null);
         // 剩余
         long rebateUseCan = userSystemCouponCountService.countCouponNum(uid, UserSystemCoupon.STATE_CAN_USE, null, listFree, null);
         JSONObject data = new JSONObject();
         data.put("freeTotal", freeTotal);
         data.put("freeUseIn", freeUseIn);
         data.put("freeLeft", freeUseCan + freeUseActive);
         data.put("rebateTotal", rebateTotal);
         data.put("rebateUseIn", rebateUseIn);
         data.put("rebateLeft", rebateUseCan);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
}