Commit 54123f73 authored by liming's avatar liming

课程章节查询接口

parent bedfce85
package com.antai.sport.http.server.constants;
//课程训练记录状态
public class CourseRecordStatus {
//未提交
public final static Integer UNCOMMITTED = 10;
//已提交
public final static Integer COMMITTED = 20;
}
package com.antai.sport.http.server.server.api.business.course.controller;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.server.api.business.course.dto.CourseRecordInitDTO;
import com.antai.sport.http.server.server.api.business.course.service.CourseService;
import com.antai.sport.http.server.server.api.business.course.vo.CourseItemVO;
import com.antai.sport.http.server.server.api.business.course.vo.CourseRecordInitVO;
import com.antai.sport.http.server.server.api.business.course.vo.CourseTypeVO;
import com.antai.sport.http.server.server.api.business.tour.dto.ReqTourRecordInit;
import com.antai.sport.http.server.server.api.business.tour.dto.RespTourRecordInit;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
......@@ -36,4 +38,18 @@ public class CourseController {
public ResponseEntity<Result<List<CourseItemVO>>> getCourseItemList(@PathVariable("courseId") Long courseId) {
return success(courseService.getCourseItemList(courseId));
}
@ApiOperation("初始化课程训练记录")
@PostMapping("/init")
public ResponseEntity<Result<CourseRecordInitVO>> init(@RequestBody CourseRecordInitDTO initData) {
return success(courseService.init(initData));
}
@ApiOperation(value = "课程训练记录上传")
@PostMapping("/record/upload")
public ResponseEntity<Result> recordUpload(@RequestBody List<CyclingDataDTO> dataList) {
courseService.upload(dataList);
return success();
}
}
package com.antai.sport.http.server.server.api.business.course.converter;
import com.antai.sport.http.server.repository.course.entity.CourseRecord;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
@Mapper(componentModel = "spring")
public interface CourseRecordConverter {
@Mappings({
@Mapping(source = "source.recordId", target = "id"),
@Mapping(source = "status", target = "status")
})
CourseRecord convertToCourseRecord(CyclingDataDTO source, Integer status);
}
package com.antai.sport.http.server.server.api.business.course.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("课程训练记录初始化对象")
public class CourseRecordInitDTO {
@ApiModelProperty("用户id")
private Long playerId;
@ApiModelProperty("课程id")
private Long courseId;
@ApiModelProperty("地图")
private String map;
@ApiModelProperty("赛道")
private String path;
}
package com.antai.sport.http.server.server.api.business.course.dto;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel("课程训练记录上传DTO")
public class CourseRecordUploadDTO extends CyclingDataDTO {
private Long playerId;
private Long courseId;
}
......@@ -2,14 +2,28 @@ package com.antai.sport.http.server.server.api.business.course.service;
import com.antai.sport.http.server.common.service.CommonCodeService;
import com.antai.sport.http.server.common.vo.SysCodeDetailVO;
import com.antai.sport.http.server.constants.CourseType;
import com.antai.sport.http.server.constants.*;
import com.antai.sport.http.server.repository.course.entity.Course;
import com.antai.sport.http.server.repository.course.entity.CourseRecord;
import com.antai.sport.http.server.repository.course.mapper.CourseMapper;
import com.antai.sport.http.server.repository.course.mapper.CourseRecordMapper;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import com.antai.sport.http.server.repository.sport.mapper.SportUserMapper;
import com.antai.sport.http.server.server.api.business.course.converter.CourseRecordConverter;
import com.antai.sport.http.server.server.api.business.course.dto.CourseRecordInitDTO;
import com.antai.sport.http.server.server.api.business.course.mapper.CourseBusinessMapper;
import com.antai.sport.http.server.server.api.business.course.vo.CourseItemVO;
import com.antai.sport.http.server.server.api.business.course.vo.CourseRecordInitVO;
import com.antai.sport.http.server.server.api.business.course.vo.CourseTypeVO;
import com.antai.sport.http.server.server.api.business.course.vo.CourseVO;
import com.antai.sport.http.server.server.api.business.praise.service.PraiseService;
import com.antai.sport.http.server.server.api.business.traininglog.service.SportUserTrainingLogService;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -21,6 +35,20 @@ public class CourseService {
private CommonCodeService commonCodeService;
@Resource
private CourseBusinessMapper courseBusinessMapper;
@Resource
private CourseMapper courseMapper;
@Resource
private CourseRecordMapper courseRecordMapper;
@Resource
private SportUserMapper sportUserMapper;
@Resource
private CourseRecordConverter courseRecordConverter;
@Resource
private PraiseService praiseService;
@Resource
private SportUserTrainingLogService sportUserTrainingLogService;
public List<CourseTypeVO> getCourseTree() {
List<CourseTypeVO> resultList = new ArrayList<>();
......@@ -48,4 +76,54 @@ public class CourseService {
public List<CourseItemVO> getCourseItemList(Long courseId) {
return courseBusinessMapper.getCourseItemList(courseId);
}
/**
* 初始化漫游记录
*
* @param initData
* @return
*/
public CourseRecordInitVO init(CourseRecordInitDTO initData) {
CourseRecordInitVO resp = new CourseRecordInitVO();
CourseRecord record = new CourseRecord();
record.setPlayerId(initData.getPlayerId());
record.setMap(initData.getMap());
record.setPath(initData.getPath());
record.setCreateTime(LocalDateTime.now());
record.setStatus(TourRecordStatus.UNCOMMITTED);
record.setCourseId(initData.getCourseId());
Course course = courseMapper.selectById(initData.getCourseId());
record.setCourseName(course.getName());
courseRecordMapper.insert(record);
resp.setRecordId(record.getId());
resp.setSportType(SportType.BICYCLE);
resp.setGameMode(GameMode.COURSE_TRAINING);
return resp;
}
/**
* 课程训练记录上传
*
* @param recordList
*/
@Transactional
public void upload(List<CyclingDataDTO> recordList) {
recordList.forEach(item -> {
CourseRecord oldRecord = courseRecordMapper.selectById(item.getRecordId());
if (oldRecord != null && oldRecord.getStatus().equals(CourseRecordStatus.UNCOMMITTED)) {
SportUser user = sportUserMapper.selectById(oldRecord.getPlayerId());
item.setWeight(user.getWeight());
CourseRecord record = courseRecordConverter.convertToCourseRecord(item, CourseRecordStatus.COMMITTED);
record.setPraiseNum(praiseService.getPraiseByGameModeAndRecordId(GameMode.COURSE_TRAINING,
item.getRecordId()));
courseRecordMapper.updateById(record);
//生成骑行日志
sportUserTrainingLogService.createBicycleTrainingLog(oldRecord.getPlayerId(),
GameMode.COURSE_TRAINING, oldRecord.getId(), oldRecord.getCourseName(), oldRecord.getMap(),
oldRecord.getPath(), record.getPraiseNum(), item);
}
});
}
}
package com.antai.sport.http.server.server.api.business.course.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("课程训练记录初始化返回结果")
public class CourseRecordInitVO {
@ApiModelProperty("记录id")
private Long recordId;
@ApiModelProperty("运动类型")
private Integer sportType;
@ApiModelProperty("游戏模式")
private Integer gameMode;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment