From e13b68163f13019bea2d6c84f92ff07a5a9f15ec Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 29 九月 2025 18:17:46 +0800 Subject: [PATCH] app任务 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 49 insertions(+), 1 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java index 07df7fe..0e94d2f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.core.domain.BasePage; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.system.dto.TMissionUserDto; import com.ruoyi.system.mapper.TMissionMapper; import com.ruoyi.system.mapper.TMissionUserMapper; import com.ruoyi.system.model.TMission; @@ -15,10 +16,14 @@ import com.ruoyi.system.vo.MissionTotalVo; import com.ruoyi.system.vo.TMissionReassignVO; import com.ruoyi.system.vo.TMissionVO; +import com.ruoyi.system.vo.TotalHistoryVo; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.text.SimpleDateFormat; import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @@ -111,6 +116,46 @@ } @Override + public TotalHistoryVo totalHistory(String userId) { + TotalHistoryVo totalHistoryVo = new TotalHistoryVo(); + List<TMissionUser> tMissionUsers = missionUserMapper.selectList(new LambdaQueryWrapper<TMissionUser>().eq(TMissionUser::getAppUserId, userId)); + if(tMissionUsers.isEmpty()){ + return totalHistoryVo; + } + long count = tMissionUsers.stream().filter(e -> e.getStatus() == 1).count(); + BigDecimal successRate = new BigDecimal(count).divide(new BigDecimal(tMissionUsers.size()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + totalHistoryVo.setSuccessRate(successRate); + + long count1 = tMissionUsers.stream().filter(e -> e.getStatus() == 2).count(); + BigDecimal failRate = new BigDecimal(count1).divide(new BigDecimal(tMissionUsers.size()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + totalHistoryVo.setFailRate(failRate); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM"); + // 查询当前时间的年月日 + String now = LocalDate.now().toString(); + List<TMissionUser> todayMissionUsers = tMissionUsers.stream().filter(e -> now.equals(simpleDateFormat.format(e.getSuccessTime()))).collect(Collectors.toList()); + totalHistoryVo.setTodaySuccessNum(todayMissionUsers.size()); + // 查询当前时间的年月 + String firstDayOfMonth = LocalDate.now().withDayOfMonth(1).toString().substring(0, 7); + + List<TMissionUser> monthMissionUsers = tMissionUsers.stream().filter(e -> firstDayOfMonth.equals(simpleDateFormat1.format(e.getSuccessTime()))).collect(Collectors.toList()); + totalHistoryVo.setMonthSuccessNum(monthMissionUsers.size()); + return totalHistoryVo; + } + + @Override + public void successMission(TMissionUserDto dto) { + + } + + @Override + public PageInfo<TMissionVO> pageList(TMissionQuery query) { + + return null; + } + + @Override public MissionTotalVo missionTotal(String userId) { MissionTotalVo missionTotalVo = new MissionTotalVo(); List<TMissionUser> tMissionUsers = missionUserMapper.selectList(new LambdaQueryWrapper<TMissionUser>().eq(TMissionUser::getAppUserId, userId).eq(TMissionUser::getStatus, 0)); @@ -130,7 +175,7 @@ } @Override - public void grabMission(String missionId, String userId) { + public String grabMission(String missionId, String userId) { try { boolean b = redisCache.trylockLoop(missionId, UUID.randomUUID().toString(), 30); if(b){ @@ -140,10 +185,13 @@ tMissionUser.setStatus(0); tMissionUser.setUserType(1); missionUserMapper.insert(tMissionUser); + return tMissionUser.getMissionId(); + } }finally { redisCache.unlock(missionId, UUID.randomUUID().toString()); } + return null; } @Override -- Gitblit v1.7.1