controller:
@PostMapping("/save")
@ApiOperation(value = "保存游戏记录")
public Object saveGameRecord(HttpServletRequest request, @RequestParam @ApiParam(value = "游戏记录", required = true) String gameRecord,
@RequestParam @ApiParam(value = "扔错记录", required = true) String errorRecords) {
//传参格式为主表对象,从表json对象,需把json对象转换为list
TGameRecord tGameRecord = JSON.parseObject(gameRecord,TGameRecord.class);
List<TGameErrorSort> errorSortList = JSON.parseArray(errorRecords,TGameErrorSort.class);
ModelMap modelMap = new ModelMap();
return setSuccessModelMap(modelMap, gameRecordService.saveRecord(tGameRecord,errorSortList));
}
//service层实现
@Transactional
@Override
public Long saveRecord(TGameRecord gameRecord,List<TGameErrorSort> errorSortList) throws BusinessException, ValidateException {
TGameRecord tGameRecordDb = gRecordMapper.selectRecordByGameNo(gameRecord.getGameNo());
Long gameRecordId = null;
if(tGameRecordDb == null){//新增
gameRecord.setCreateBy(gameRecord.getUserId());
gameRecord.setCreateTime(new Date());
this.mapper.insert(gameRecord);
gameRecordId = gameRecord.getId();
}else {//修改
gameRecordId = tGameRecordDb.getId();
gameRecord.setId(gameRecordId);
gameRecord.setUpdateBy(gameRecord.getUserId());
gameRecord.setCreateTime(new Date());
this.mapper.updateById(gameRecord);
gErrorSortMapper.deleteByRecordId(gameRecordId);
}
if(errorSortList != null && errorSortList.size() >0) {
for (TGameErrorSort tGameErrorSort : errorSortList) {
tGameErrorSort.setRecordId(gameRecordId);//设置多对一的关系
tGameErrorSort.setCreateBy(gameRecord.getUserId());
tGameErrorSort.setCreateTime(new Date());
}
gErrorSortMapper.addBatch(errorSortList);
}
TUser user=userMapper.selectById(gameRecord.getUserId());
if(user!=null && gameRecord.getGrade()!=null && gameRecord.getGrade()>user.getScore()){
user.setScore(gameRecord.getGrade());
userMapper.updateById(user);
}
return gameRecord.getId();
}