| | |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.system.dto.EquipmentDto; |
| | | import com.ruoyi.system.dto.TMissionUserDto; |
| | | import com.ruoyi.system.mapper.TAppUserEquipmentMapper; |
| | | import com.ruoyi.system.mapper.TMissionAssignRuleMapper; |
| | | import com.ruoyi.system.mapper.TMissionMapper; |
| | | import com.ruoyi.system.mapper.TMissionUserMapper; |
| | | import com.ruoyi.system.model.TAppUserEquipment; |
| | | import com.ruoyi.system.model.TMission; |
| | | import com.ruoyi.system.model.TMissionAssignRule; |
| | | import com.ruoyi.system.model.TMissionUser; |
| | | import com.ruoyi.system.mapper.*; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.query.TMissionQuery; |
| | | import com.ruoyi.system.service.TMissionService; |
| | | import com.ruoyi.system.vo.MissionTotalVo; |
| | |
| | | import com.ruoyi.system.vo.TotalHistoryVo; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | |
| | | |
| | | @Resource |
| | | private TMissionAssignRuleMapper missionAssignRuleMapper; |
| | | |
| | | |
| | | @Resource |
| | | private TAppUserMapper appUserMapper; |
| | | |
| | | |
| | | @Override |
| | | public PageInfo<TMissionVO> pageListAssigned(TMissionQuery query) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void successMission(TMissionUserDto dto, String userId) { |
| | | TMissionUser user = missionUserMapper.selectById(dto.getId()); |
| | | user.setSuccessTime(new Date()); |
| | | BeanUtils.copyProperties(dto, user); |
| | | missionUserMapper.updateById(user); |
| | | String appUserId = user.getAppUserId(); |
| | | |
| | | TAppUser tAppUser = appUserMapper.selectById(appUserId); |
| | | tAppUser.setMissionState(1); |
| | | appUserMapper.updateById(tAppUser); |
| | | |
| | | // 判断这个任务还有正在执行的不 |
| | | Long l = missionUserMapper.selectCount(new LambdaQueryWrapper<TMissionUser>().eq(TMissionUser::getMissionId, user.getMissionId()).eq(TMissionUser::getStatus, 0)); |
| | | if (l == 0){ |
| | | // 全部执行完 任务完成 |
| | | this.update(new LambdaUpdateWrapper<TMission>().eq(TMission::getId, user.getMissionId()).set(TMission::getStatus, 4)); |
| | | |
| | | TMission tMission = this.getById(user.getMissionId()); |
| | | tMission.setFinishTime(LocalDateTime.now()); |
| | | // 判断是否全部完成 |
| | | Long unSuccessCount = missionUserMapper.selectCount(new LambdaQueryWrapper<TMissionUser>().eq(TMissionUser::getMissionId, user.getMissionId()).eq(TMissionUser::getStatus, 2)); |
| | | if(unSuccessCount>0){ |
| | | tMission.setStatus(6); |
| | | }else { |
| | | tMission.setStatus(4); |
| | | } |
| | | LocalDateTime assignTime = tMission.getAssignTime(); |
| | | tMission.setSuccessTime((double) Duration.between(assignTime, tMission.getFinishTime()).toHours()); |
| | | this.updateById(tMission); |
| | | } |
| | | |
| | | |
| | | |
| | | // 更新装备 |
| | | TAppUserEquipment tAppUserEquipment = appUserEquipmentMapper.selectOne(new LambdaQueryWrapper<TAppUserEquipment>().eq(TAppUserEquipment::getAppUserId, userId).eq(TAppUserEquipment::getAppUserId, userId)); |
| | | |
| | | if (Objects.nonNull(tAppUserEquipment)) { |
| | | |
| | | String equipmentCount1 = tAppUserEquipment.getEquipmentCount(); |
| | | List<EquipmentDto> dtos = JSONArray.parseArray(equipmentCount1, EquipmentDto.class); |
| | | String lossText = dto.getLossText(); |
| | | String victoryText = dto.getVictoryText(); |
| | | List<EquipmentDto> victoryTextDtos = JSONArray.parseArray(victoryText, EquipmentDto.class); |
| | |
| | | EquipmentDtoList.addAll(notHaveEquipment); |
| | | tAppUserEquipment.setEquipmentCount(JSON.toJSONString(EquipmentDtoList)); |
| | | appUserEquipmentMapper.updateById(tAppUserEquipment); |
| | | |
| | | |
| | | int winSum = victoryTextDtos.stream().filter(e -> !e.getId().equals("0")).mapToInt(EquipmentDto::getCount).sum(); |
| | | int oldSum = dtos.stream().mapToInt(EquipmentDto::getCount).sum(); |
| | | winSum = winSum + oldSum; |
| | | int lossSum = lossTextDtos.stream().filter(e -> !e.getId().equals("0")).mapToInt(EquipmentDto::getCount).sum(); |
| | | if(winSum!=0){ |
| | | user.setDamageRate(new BigDecimal(lossSum).divide(BigDecimal.valueOf(winSum), 4, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } else { |
| | | tAppUserEquipment = new TAppUserEquipment(); |
| | | tAppUserEquipment.setAppUserId(userId); |
| | |
| | | } |
| | | tAppUserEquipment.setEquipmentCount(JSON.toJSONString(victoryTextDtos)); |
| | | appUserEquipmentMapper.insert(tAppUserEquipment); |
| | | |
| | | int winSum = victoryTextDtos.stream().filter(e -> !e.getId().equals("0")).mapToInt(EquipmentDto::getCount).sum(); |
| | | int lossSum = lossTextDtos.stream().filter(e -> !e.getId().equals("0")).mapToInt(EquipmentDto::getCount).sum(); |
| | | if(winSum!=0){ |
| | | user.setDamageRate(new BigDecimal(lossSum).divide(BigDecimal.valueOf(winSum), 4, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | } |
| | | |
| | | } |
| | | |
| | | missionUserMapper.updateById(user); |
| | | } |
| | | |
| | | @Override |