fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java
@@ -33,7 +33,6 @@ 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.IntegralTaskClass; import com.yeshi.fanli.entity.integral.IntegralTaskClass.UniqueKeyEnum; import com.yeshi.fanli.entity.integral.IntegralTaskRecord; import com.yeshi.fanli.exception.integral.IntegralExchangeException; @@ -120,8 +119,18 @@ list = new ArrayList<IntegralTaskClassVO>(); } long count = integralTaskClassService.countTaskClass(); // 用户签到 Integer signState = 0; 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 +148,65 @@ 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); 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); } } 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)); fanli/src/main/java/com/yeshi/fanli/mapping/integral/IntegralTaskRecordMapper.xml
@@ -85,7 +85,7 @@ </select> <select id="getTotalGoldCoin" resultType="Integer"> SELECT SUM(tr.`ir_gold_coin`) FROM yeshi_ec_integral_task_record tr SELECT IFNULL(SUM(tr.`ir_gold_coin`),0) FROM yeshi_ec_integral_task_record tr WHERE tr.ir_uid = #{uid} AND tr.`ir_cid`=#{cid} <!-- tr.ir_state <![CDATA[<>]]>2 AND --> <if test="dateType == 1"> AND TO_DAYS(tr.ir_create_time) = TO_DAYS(NOW()) fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralTaskClassServiceImpl.java
@@ -25,7 +25,6 @@ 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.util.StringUtil; import com.yeshi.fanli.vo.integral.DailySignVO; import com.yeshi.fanli.vo.integral.IntegralTaskClassVO; import com.yeshi.fanli.vo.integral.SignDateVO; @@ -54,63 +53,7 @@ @Override public List<IntegralTaskClassVO> getIntegralTaskClassVO(Long uid, long start, int count) { // 用户签到 Integer baseGoldCoin = 5; boolean dailySign = false; if (start == 0) { // 第一页签到 try { baseGoldCoin = finishedDailySign(uid); dailySign = true; } catch (Exception e) { e.printStackTrace(); } } List<IntegralTaskClassVO> listVo = integralTaskClassMapper.getIntegralTaskClassVO(start, count); if (listVo == null || listVo.size() == 0) { return listVo; } for (IntegralTaskClassVO taskClassVO : listVo) { 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) { taskClassVO.setTotalCoin(baseGoldCoin); taskClassVO.setLightUp(dailySign); } 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 (!dailySign && uniqueKey == UniqueKeyEnum.dailySign) { progress = "未签到"; taskClassVO.setBtnName("签到"); } taskClassVO.setProgress(progress); } return listVo; return integralTaskClassMapper.getIntegralTaskClassVO(start, count); } @@ -132,39 +75,34 @@ */ @Transactional public Integer finishedDailySign(long uid) throws Exception{ Integer baseGoldCoin = 5; IntegralTaskClass taskClass = getByUniqueKey(UniqueKeyEnum.dailySign.name()); if (taskClass == null || taskClass.getState() == null || taskClass.getState() != 1) return baseGoldCoin; throw new Exception("抛出异常:任务分类不存在"); Long cid = taskClass.getId(); // 今日已签到完成 if (integralTaskRecordService.isToDaySign(uid, cid)) return baseGoldCoin; return 2; // 任务 Integer num = integralTaskRecordService.getNowdaySignNum(uid, cid); String uniqueKey = UniqueKeyEnum.dailySign.name() + num; IntegralTask integralTask = integralTaskService.getByCidAndUniqueKey(cid, uniqueKey); if (integralTask == null) return baseGoldCoin; throw new Exception("抛出异常:任务不存在"); UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null) return baseGoldCoin; throw new Exception("抛出异常:额外信息不存在"); UserRank userRank = userInfoExtra.getUserRank(); if (userRank == null) return baseGoldCoin; throw new Exception("抛出异常:等级信息不存在"); Integer goldCoin = integralTask.getGoldCoin(); Integer baseDoubleNum = integralTask.getDoubleNum(); if (baseDoubleNum != null && baseDoubleNum > 0) goldCoin = goldCoin * baseDoubleNum; baseGoldCoin = goldCoin; // 根据等级计算是否增加或加倍 Long taskId = integralTask.getId(); @@ -181,7 +119,8 @@ } // 加入记录 integralTaskRecordService.finishedTask(uid, cid, taskId, goldCoin); return baseGoldCoin; return 1; }