yujian
2019-08-21 7f2f5ef5637a6871f4329e464eeba97eb59e94a3
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java
@@ -33,7 +33,9 @@
import com.yeshi.fanli.entity.bus.user.UserRank;
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;
import com.yeshi.fanli.entity.integral.IntegralTaskRank;
import com.yeshi.fanli.entity.integral.IntegralTaskClass.UniqueKeyEnum;
import com.yeshi.fanli.entity.integral.IntegralTaskRecord;
import com.yeshi.fanli.exception.integral.IntegralExchangeException;
@@ -45,7 +47,9 @@
import com.yeshi.fanli.service.inter.integral.IntegralExchangeRecordService;
import com.yeshi.fanli.service.inter.integral.IntegralExchangeService;
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;
@@ -86,9 +90,15 @@
   
   @Resource
   private IntegralDetailService integralDetailService;
   @Resource
   private IntegralTaskRankService integralTaskRankService;
   @Resource
   private CodePublishRecordService codePublishRecordService;
   @Resource
   private IntegralTaskService integralTaskService;
   /**
    * 获取任务列表
@@ -120,8 +130,19 @@
            list = new ArrayList<IntegralTaskClassVO>();
         }
         long count = integralTaskClassService.countTaskClass();
         // 用户签到
         Integer signState = 0;
         int signDays = 1;
         if (page == 1) {
            // 签到
            try {
               signState = integralTaskClassService.finishedDailySign(uid);
            } catch (Exception e) {
               e.printStackTrace();
            }
            UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
            if (extraVO == null) {
               out.print(JsonUtil.loadFalseResult(1, "用户相关信息不存在"));
@@ -139,21 +160,82 @@
               out.print(JsonUtil.loadFalseResult(1, "用户等级不存在"));
               return;
            }
            boolean signState = false;
            IntegralTaskClass taskClass = integralTaskClassService.getByUniqueKey(UniqueKeyEnum.dailySign.name());
            if (taskClass != null)
               signState = integralTaskRecordService.isToDaySign(uid, taskClass.getId());
            // 签到日期
            // 签到日期信息
            DailySignVO dailySignVO = integralTaskClassService.getDailySignList(uid, userRank.getId());
            data.put("signState", signState);
            if (dailySignVO != null) {
               signDays = dailySignVO.getDays();
            }
            boolean ejectSign = false;
            if (signState == 1)
               ejectSign = true;
            data.put("signState", ejectSign);
            data.put("goldCoin", extraVO.getGoldCoin());
            data.put("portrait", userInfo.getPortrait());
            data.put("userRank", gson.toJson(userRank));
            data.put("dailySign", dailySignVO);
         }
         for (IntegralTaskClassVO taskClassVO : list) {
            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); // 签到失败
               } else if (signState == 1) {
                  taskClassVO.setLightUp(false);
               } 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; // 查询历史
            Long id = taskClassVO.getId();
            int countFinished = 0;
            Integer totalGoldCoin = integralTaskRecordService.getTotalGoldCoin(uid, id, dateType);
            if (totalGoldCoin != null && totalGoldCoin > 0) {
               taskClassVO.setFinishedCoin("+" + totalGoldCoin);
               if (uniqueKey != UniqueKeyEnum.dailySign)
                  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));
@@ -564,9 +646,9 @@
      }
      // 查询列表
      List<IntegralDetailVO> list = integralDetailService.listDetailForClient(uid, index, date);
      List<IntegralDetailVO> list = integralDetailService.listDetailForClient(uid, index, date, type);
      // 统计总条数
      long count = integralDetailService.countDetailForClient(uid, index, date);
      long count = integralDetailService.countDetailForClient(uid, index, date, type);
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      gsonBuilder.registerTypeAdapter(TaoLiJinDetailTypeEnum.class, new TypeAdapter<TaoLiJinDetailTypeEnum>() {