yujian
2019-08-27 d8359ddb48dab5cc797a9d552e11fde571f4920c
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java
@@ -30,21 +30,29 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.integral.CodePublishRecord;
import com.yeshi.fanli.entity.integral.IntegralExchange;
import com.yeshi.fanli.entity.integral.IntegralTask;
import com.yeshi.fanli.entity.integral.IntegralTaskClass.UniqueKeyEnum;
import com.yeshi.fanli.entity.integral.IntegralTaskRecord;
import com.yeshi.fanli.exception.integral.IntegralExchangeException;
import com.yeshi.fanli.exception.integral.IntegralGetException;
import com.yeshi.fanli.exception.integral.IntegralTaskRecordException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.integral.CodePublishRecordService;
import com.yeshi.fanli.service.inter.integral.IntegralDetailService;
import com.yeshi.fanli.service.inter.integral.IntegralExchangeRecordService;
import com.yeshi.fanli.service.inter.integral.IntegralExchangeService;
import com.yeshi.fanli.service.inter.integral.IntegralGetService;
import com.yeshi.fanli.service.inter.integral.IntegralTaskClassService;
import com.yeshi.fanli.service.inter.integral.IntegralTaskRankService;
import com.yeshi.fanli.service.inter.integral.IntegralTaskRecordService;
import com.yeshi.fanli.service.inter.integral.IntegralTaskService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
@@ -82,12 +90,24 @@
   @Resource
   private IntegralExchangeRecordService integralExchangeRecordService;
   @Resource
   private IntegralDetailService integralDetailService;
   @Resource
   private IntegralTaskRankService integralTaskRankService;
   @Resource
   private CodePublishRecordService codePublishRecordService;
   @Resource
   private IntegralTaskService integralTaskService;
   @Resource
   private IntegralGetService integralGetService;
   @Resource
   private JumpDetailV2Service jumpDetailV2Service;
   /**
    * 获取任务列表
@@ -97,6 +117,7 @@
    * @param page
    * @param out
    */
   // @RequestSerializableByKey(key="#acceptData.device")
   @RequestMapping(value = "getTaskList", method = RequestMethod.POST)
   public void getTaskList(AcceptData acceptData, Long uid, Integer page, PrintWriter out) {
      if (uid == null || uid <= 0) {
@@ -119,18 +140,18 @@
            list = new ArrayList<IntegralTaskClassVO>();
         }
         long count = integralTaskClassService.countTaskClass();
         // 用户签到
         Integer signState = 0;
         if (page == 1) {
            // 签到
            try {
            try {
               signState = integralTaskClassService.finishedDailySign(uid);
            } catch (Exception e) {
               e.printStackTrace();
            }
            UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
            if (extraVO == null) {
               out.print(JsonUtil.loadFalseResult(1, "用户相关信息不存在"));
@@ -148,12 +169,12 @@
               out.print(JsonUtil.loadFalseResult(1, "用户等级不存在"));
               return;
            }
            // 签到日期信息
            DailySignVO dailySignVO = integralTaskClassService.getDailySignList(uid, userRank.getId());
            boolean ejectSign = false;
            if (signState == 1)
            if (signState == 1)
               ejectSign = true;
            data.put("signState", ejectSign);
@@ -163,17 +184,26 @@
            data.put("dailySign", dailySignVO);
         }
         for (IntegralTaskClassVO taskClassVO : list) {
            UniqueKeyEnum uniqueKey = taskClassVO.getUniqueKey();
            UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
            if (extraVO == null || StringUtil.isNullOrEmpty(extraVO.getInviteCode())) {
               JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache("invite_activate",
                     Constant.getPlatformCode(acceptData.getPlatform()),
                     Integer.parseInt(acceptData.getVersion()));
               taskClassVO.setJumpDetail(jumpDetailV2);
            }
            String progress = taskClassVO.getProgress();
            if (StringUtil.isNullOrEmpty(progress))
               continue;
            Integer taskNum = taskClassVO.getTaskNum();
            if (taskNum == null)
               continue;
            UniqueKeyEnum uniqueKey = taskClassVO.getUniqueKey();
            if (uniqueKey == UniqueKeyEnum.dailySign) {
               if (signState == 0) {
                  taskClassVO.setLightUp(true); // 签到失败
@@ -182,10 +212,25 @@
               } else if (signState == 2) {
                  taskClassVO.setLightUp(false);
               }
               // 根据天数变化更改签到金额
               Integer num = integralTaskRecordService.getNowdaySignNum(uid, taskClassVO.getId());
               String uniqueKeyTask = UniqueKeyEnum.dailySign.name() + num;
               IntegralTask integralTask = integralTaskService.getByCidAndUniqueKey(taskClassVO.getId(),
                     uniqueKeyTask);
               Integer goldCoin = 0;
               if (integralTask != null) {
                  goldCoin = integralTask.getGoldCoin();
                  Integer baseDoubleNum = integralTask.getDoubleNum();
                  if (baseDoubleNum != null && baseDoubleNum > 0)
                     goldCoin = goldCoin * baseDoubleNum;
               }
               taskClassVO.setTotalCoin(goldCoin);
            } else {
               taskClassVO.setLightUp(true);
            }
            Integer dateType = 1; // 查询当日
            if (uniqueKey == UniqueKeyEnum.orderReward)
               dateType = null; // 查询历史
@@ -199,14 +244,14 @@
                  countFinished = integralTaskRecordService.countFinished(uid, id, dateType);
            }
            progress = progress.replace("{已完成}", countFinished + "").replace("{总任务}", taskNum + "");
            if (signState == 0 && uniqueKey == UniqueKeyEnum.dailySign) {
               progress = "未签到";
               taskClassVO.setBtnName("签到");
            }
            }
            taskClassVO.setProgress(progress);
         }
         data.put("count", count);
         data.put("list", gson.toJson(list));
         out.print(JsonUtil.loadTrueResult(data));
@@ -233,7 +278,7 @@
      if ("android".equalsIgnoreCase(acceptData.getPlatform())) {
         count = Integer.MAX_VALUE;
      }
      List<IntegralTaskRecord> list = integralTaskRecordService.listNotReceived(count, uid);
      if (list == null) {
         list = new ArrayList<IntegralTaskRecord>();
@@ -252,17 +297,20 @@
    * 
    * @param acceptData
    * @param uid
    * @param ids  // 领取id
    * @param gids // 未领取id
    * @param ids
    *            // 领取id
    * @param gids
    *            // 未领取id
    * @param out
    */
   @RequestMapping(value = "receiveGoldCoin", method = RequestMethod.POST)
   public void receiveGoldCoin(AcceptData acceptData, Long uid, Integer type, String ids, String gids, PrintWriter out) {
   public void receiveGoldCoin(AcceptData acceptData, Long uid, Integer type, String ids, String gids,
         PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      try {
         // 全部领取
         if (type != null && type == 1) {
@@ -271,8 +319,8 @@
            data.put("goldCoin", goldCoin);
            out.print(JsonUtil.loadTrueResult(data));
            return;
         }
         }
         // 部分领取
         Gson gson = new Gson();
         Set<Long> idList = gson.fromJson(ids, new TypeToken<HashSet<Long>>() {
@@ -282,20 +330,21 @@
            return;
         }
         Integer goldCoin = integralTaskRecordService.receiveGoldCoin(uid, idList);
         Set<Long> gidList = gson.fromJson(gids, new TypeToken<HashSet<Long>>() {}.getType());
         Set<Long> gidList = gson.fromJson(gids, new TypeToken<HashSet<Long>>() {
         }.getType());
         List<IntegralTaskRecord> list = null;
         if (gidList != null && gidList.size() > 0) {
            list = integralTaskRecordService.listNotReceivedExcludeId(5 - gidList.size(), uid, gidList);
         } else {
            list = integralTaskRecordService.listNotReceivedExcludeId(5, uid, null);
         }
         if (list == null) {
            list = new ArrayList<IntegralTaskRecord>();
         }
         GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
         Gson gson2 = gsonBuilder.create();
         JSONObject data = new JSONObject();
         data.put("goldCoin", goldCoin);
         data.put("list", gson2.toJson(list));
@@ -336,7 +385,7 @@
      if (list == null)
         list = new ArrayList<IntegralExchange>();
      //Long count = integralExchangeService.countValid();
      // Long count = integralExchangeService.countValid();
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      Gson gson = gsonBuilder.create();
@@ -363,7 +412,6 @@
         GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
         Gson gson = gsonBuilder.create();
         JSONObject data = new JSONObject();
         data.put("result", gson.toJson(exchange));
         out.print(JsonUtil.loadTrueResult(data));
@@ -385,11 +433,14 @@
      try {
         IntegralExchange exchange = integralExchangeService.exchange(uid, id);
         UserInfoExtra extraVO = userInfoExtraService.getUserInfoExtra(uid);
         GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
         Gson gson = gsonBuilder.create();
         JSONObject data = new JSONObject();
         data.put("result", gson.toJson(exchange));
         data.put("goldCoin", extraVO.getGoldCoin() + "枚");
         out.print(JsonUtil.loadTrueResult(data));
      } catch (IntegralExchangeException e) {
         out.print(JsonUtil.loadFalseResult(1, e.getMsg()));
@@ -431,8 +482,11 @@
   @RequestMapping(value = "exchangeInviteCode", method = RequestMethod.POST)
   public void exchangeInviteCode(AcceptData acceptData, Long uid, Long id, PrintWriter out) {
      try {
         integralExchangeService.exchangeInviteCode(uid, id);
         out.print(JsonUtil.loadTrueResult("邀请码激活成功"));
         String inviteCode = integralExchangeService.exchangeInviteCode(uid, id);
         JSONObject data = new JSONObject();
         data.put("msg", "兑换成功,金币已消耗 ");
         data.put("inviteCode", inviteCode);
         out.print(JsonUtil.loadTrueResult(data));
      } catch (IntegralExchangeException e) {
         out.print(JsonUtil.loadFalseResult(1, e.getMsg()));
      }
@@ -452,19 +506,24 @@
         return;
      }
      List<CodePublishRecord> list = codePublishRecordService.listValid((page - 1) * Constant.PAGE_SIZE,
            Constant.PAGE_SIZE);
      if (list == null) {
         list = new ArrayList<CodePublishRecord>();
      try {
         List<CodePublishRecord> list = codePublishRecordService.listValid((page - 1) * Constant.PAGE_SIZE,
               Constant.PAGE_SIZE);
         if (list == null) {
            list = new ArrayList<CodePublishRecord>();
         }
         long count = codePublishRecordService.countValid();
         JSONObject data = new JSONObject();
         data.put("count", count);
         data.put("list", getGson().toJson(list));
         data.put("helpLink", configService.get("publish_list_help_link"));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "获取失败"));
         return;
      }
      long count = codePublishRecordService.countValid();
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", getGson().toJson(list));
      data.put("helpLink", configService.get("publish_list_help_link"));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
@@ -481,9 +540,18 @@
         out.print(JsonUtil.loadFalseResult("用户尚未登录"));
         return;
      }
      if (StringUtil.isNullOrEmpty(event)) {
         out.print(JsonUtil.loadFalseResult("事件为空"));
         return;
      }
      IntegralTaskRecord record = null;
      try {
         record = integralGetService.addEventStatistic(uid, event);
      } catch (IntegralGetException e) {
      }
      if (record == null) {
         out.print(JsonUtil.loadFalseResult("添加失败"));
         return;
      }
@@ -492,21 +560,17 @@
            || "scanTBCart".equalsIgnoreCase(event)) {
         JSONObject notify = new JSONObject();
         switch (event) {
         case "recommendSearch":
            notify.put("name", "完成一次智能搜索");
            notify.put("score", "+20金币");
            break;
         case "scanGoods":
            notify.put("name", "完成一次商品浏览");
            notify.put("score", "+100金币");
            break;
         case "scanTBCart":
            notify.put("name", "完成一次购物车浏览");
            notify.put("score", "+300金币");
            break;
         }
         notify.put("score", String.format("+%s金币", record.getGoldCoin()));
         data.put("notify", notify);
      }
      out.print(JsonUtil.loadTrueResult(data));
@@ -578,7 +642,6 @@
      return gson;
   }
   /**
    * 明细详情
    * 
@@ -590,7 +653,8 @@
    *            年份
    * @param month
    *            月份
    *  @param type  统计类型  0全部  1
    * @param type
    *            统计类型 0全部 1
    * @param out
    */
   @RequestMapping(value = "getDetails")
@@ -605,7 +669,7 @@
         out.print(JsonUtil.loadFalseResult(1, "日期不完整"));
         return;
      }
      Date date = null;
      if (year != null && month != null) {