ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TMissionController.java
@@ -7,11 +7,14 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.MissionIdDto; import com.ruoyi.system.dto.TMissionUserDto; import com.ruoyi.system.model.TAppUser; import com.ruoyi.system.model.TMission; import com.ruoyi.system.model.TMissionAssignRule; import com.ruoyi.system.model.TMissionReassign; import com.ruoyi.system.service.TAppUserService; import com.ruoyi.system.service.TMissionAssignRuleService; import com.ruoyi.system.service.TMissionReassignService; import com.ruoyi.system.service.TMissionService; import com.ruoyi.system.vo.MissionTotalVo; @@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; import java.util.List; /** * <p> @@ -42,14 +46,17 @@ private final TAppUserService appUserService; private final TMissionService missionService; private final TMissionReassignService missionReassignService; private final TMissionAssignRuleService missionAssignRuleService; @Autowired public TMissionController(TokenService tokenService, TAppUserService appUserService, TMissionService missionService, RedisCache redisCache, TMissionReassignService missionReassignService) { public TMissionController(TokenService tokenService, TAppUserService appUserService, TMissionService missionService, RedisCache redisCache, TMissionReassignService missionReassignService, TMissionAssignRuleService missionAssignRuleService) { this.tokenService = tokenService; this.appUserService = appUserService; this.missionService = missionService; this.missionReassignService = missionReassignService; this.missionAssignRuleService = missionAssignRuleService; } @@ -61,7 +68,7 @@ } /** * 获取任务列表 * 获取待执行任务 任务列表 */ // @PreAuthorize("@ss.hasPermi('system:mission:list')") @ApiOperation(value = "获取任务列表--待执行任务",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = TMission.class) @@ -72,17 +79,17 @@ return R.ok(missionService.pageNowList(query,userId)); } /** * 获取任务列表 * 获取抢单任务列表 任务列表 */ // @PreAuthorize("@ss.hasPermi('system:mission:list')") @ApiOperation(value = "获取任务列表--抢单任务",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = BasePage.class) @ApiOperation(value = "获取任务列表--抢单任务列表",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = BasePage.class) @PostMapping(value = "/api/t-mission/pageGrabList") public R<PageInfo<TMission>> pageGrabList(@RequestBody String param) { BasePage query = JSON.parseObject(param, BasePage.class); return R.ok(missionService.pageGrabList(query)); } /** * 获取任务列表 * 获取历史任务 任务列表 */ // @PreAuthorize("@ss.hasPermi('system:mission:list')") @ApiOperation(value = "获取任务列表--历史任务",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = TMission.class) @@ -128,9 +135,9 @@ @ApiOperation(value = "获取任务列表--抢单任务", response = TMission.class) @PostMapping(value = "/api/t-mission/grabMission") public R<String> grabMission(@RequestBody String param) { String missionId = JSON.parseObject(param, String.class); MissionIdDto missionId = JSON.parseObject(param, MissionIdDto.class); String userId = tokenService.getLoginUserApplet().getUserId(); return R.ok( missionService.grabMission(missionId,userId)); return R.ok( missionService.grabMission(missionId.getMissionId(),userId)); } /** @@ -165,5 +172,30 @@ return R.ok(); } /** * 获取任务类型 */ @ApiOperation(value = "获取任务列表--获取任务类型", response = TMissionAssignRule.class) @PostMapping(value = "/api/t-mission/missionTypeList") public R<List<TMissionAssignRule>> missionTypeList() { List<TMissionAssignRule> list = missionAssignRuleService.list(); return R.ok(list); } /** * 获取任务详情 */ @ApiOperation(value = "获取任务列表--获取任务详情", response = TMission.class) @PostMapping(value = "/api/t-mission/detailMission") public R<TMission> detailMission(@RequestBody String param) { MissionIdDto missionId = JSON.parseObject(param, MissionIdDto.class); TMission tMission = missionService.getById(missionId.getMissionId()); TMissionAssignRule byId = missionAssignRuleService.getById(tMission.getMissionTypeId()); tMission.setMissionType(byId.getTypeName()); return R.ok(tMission); } } ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -67,7 +67,8 @@ // 生成令牌 LoginUserApplet loginUser = loginService.loginCodeApplet(loginAppBody.getAccount(), loginAppBody.getPassword()); ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser)); ajax.put("userInfo",loginUser); ajax.put("data",loginUser); return ajax; } ruoyi-system/src/main/java/com/ruoyi/system/dto/MissionIdDto.java
New file @@ -0,0 +1,8 @@ package com.ruoyi.system.dto; import lombok.Data; @Data public class MissionIdDto { private String missionId; } ruoyi-system/src/main/java/com/ruoyi/system/model/TMission.java
@@ -134,4 +134,18 @@ @ApiModelProperty(value = "任务类型") @TableField(exist = false) private String missionType; @TableField(exist = false) @ApiModelProperty(value = "任务结果 1已完成 2未完成") private Integer missionStatus; @TableField(exist = false) @ApiModelProperty(value = "任务评分 ") private Double score; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java
@@ -13,10 +13,12 @@ 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.query.TMissionQuery; import com.ruoyi.system.service.TMissionService; @@ -61,6 +63,9 @@ @Resource private TAppUserEquipmentMapper appUserEquipmentMapper; @Resource private TMissionAssignRuleMapper missionAssignRuleMapper; @Override public PageInfo<TMissionVO> pageListAssigned(TMissionQuery query) { @@ -160,7 +165,12 @@ TMissionUser user = missionUserMapper.selectById(dto.getId()); BeanUtils.copyProperties(dto, user); missionUserMapper.updateById(user); // 判断这个任务还有正在执行的不 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)); } // 更新装备 TAppUserEquipment tAppUserEquipment = appUserEquipmentMapper.selectOne(new LambdaQueryWrapper<TAppUserEquipment>().eq(TAppUserEquipment::getAppUserId, userId).eq(TAppUserEquipment::getAppUserId, userId)); if (Objects.nonNull(tAppUserEquipment)) { @@ -250,6 +260,9 @@ try { boolean b = redisCache.trylockLoop(missionId, UUID.randomUUID().toString(), 30); if (b) { TMission tMission = this.baseMapper.selectById(missionId); tMission.setStatus(2); this.baseMapper.updateById(tMission); TMissionUser tMissionUser = new TMissionUser(); tMissionUser.setAppUserId(userId); tMissionUser.setMissionId(missionId); @@ -269,6 +282,15 @@ public PageInfo<TMission> pageNowList(BasePage query, String userId) { PageInfo<TMission> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TMission> list = this.baseMapper.pageNowList(pageInfo, userId); if(!list.isEmpty()){ List<TMissionAssignRule> tMissionAssignRules = missionAssignRuleMapper.selectBatchIds(list.stream().map(TMission::getMissionTypeId).collect(Collectors.toList())); list.forEach(e -> { TMissionAssignRule tMissionAssignRule = tMissionAssignRules.stream().filter(rule -> rule.getId().equals(e.getMissionTypeId())).findFirst().orElse(null); if(tMissionAssignRule != null){ e.setMissionType(tMissionAssignRule.getTypeName()); } }); } pageInfo.setRecords(list); return pageInfo; } @@ -277,6 +299,16 @@ public PageInfo<TMission> pageGrabList(BasePage query) { PageInfo<TMission> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); PageInfo<TMission> tMissionPageInfo = this.baseMapper.selectPage(pageInfo, new LambdaQueryWrapper<TMission>().eq(TMission::getStatus, 1).eq(TMission::getIsMissionPool, 1).orderByDesc(BaseModel::getCreateTime)); List<TMission> records = tMissionPageInfo.getRecords(); if(!records.isEmpty()){ List<TMissionAssignRule> tMissionAssignRules = missionAssignRuleMapper.selectBatchIds(records.stream().map(TMission::getMissionTypeId).collect(Collectors.toList())); records.forEach(e -> { TMissionAssignRule tMissionAssignRule = tMissionAssignRules.stream().filter(rule -> rule.getId().equals(e.getMissionTypeId())).findFirst().orElse(null); if(tMissionAssignRule != null){ e.setMissionType(tMissionAssignRule.getTypeName()); } }); } return tMissionPageInfo; } @@ -284,6 +316,15 @@ public PageInfo<TMission> pageHistoryList(BasePage query, String userId) { PageInfo<TMission> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TMission> list = this.baseMapper.pageHistoryList(pageInfo, userId); if(!list.isEmpty()){ List<TMissionAssignRule> tMissionAssignRules = missionAssignRuleMapper.selectBatchIds(list.stream().map(TMission::getMissionTypeId).collect(Collectors.toList())); list.forEach(e -> { TMissionAssignRule tMissionAssignRule = tMissionAssignRules.stream().filter(rule -> rule.getId().equals(e.getMissionTypeId())).findFirst().orElse(null); if(tMissionAssignRule != null){ e.setMissionType(tMissionAssignRule.getTypeName()); } }); } pageInfo.setRecords(list); return pageInfo; } ruoyi-system/src/main/resources/mapper/system/TMissionMapper.xml
@@ -44,12 +44,12 @@ </sql> <select id="pageNowList" resultType="com.ruoyi.system.model.TMission"> select t1.id as userMissionId,t2.* from t_mission_user t1 left join t_mission t2 on t1.mission_id =t2.id where t1.status =0 and t1.app_user_id = #{userId} and t2.status = 2 where t1.status =0 and t1.app_user_id = #{userId} order by t2.create_time desc </select> <select id="pageHistoryList" resultType="com.ruoyi.system.model.TMission"> select t2.* from t_mission_user t1 left join t_mission t2 on t1.mission_id =t2.id where t1.status =1 and t1.app_user_id = #{userId} select t2.*,t1.score,t1.status missionStatus from t_mission_user t1 left join t_mission t2 on t1.mission_id =t2.id where t1.status !=0 and t1.app_user_id = #{userId} order by t2.create_time desc </select> <select id="pageListAssigned" resultType="com.ruoyi.system.vo.TMissionVO">