package com.free.controller; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.validation.Valid; import com.free.service.HistoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.free.annotation.PassToken; import com.free.config.CustomizationException; import com.free.config.ExceptionEnum; import com.free.config.ResponseFormat; import com.free.entity.History; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("/history") @Api(tags = "历史记录") public class HistoryController { @Autowired private HistoryService service; @PassToken /** 创建数据 */ @ApiOperation("创建数据") @PostMapping("") public Object save(@RequestBody @Valid History data) { QueryWrapper checkHasQw = new QueryWrapper<>(); checkHasQw.eq("user_id", data.getUser_id()); checkHasQw.eq("question_id", data.getQuestion_id()); History dbData = this.service.getOne(checkHasQw); if (null == dbData) { // 没有数据,创建新的数据 data.setTime(LocalDateTime.now()); this.service.save(data); QueryWrapper qw = new QueryWrapper<>(); qw.eq("id", data.getId()); Map returnData = this.service.getMap(qw); return ResponseFormat.success(returnData); } else { // 有数据, 浏览次数加1 dbData.setViews(dbData.getViews() + 1); dbData.setTime(LocalDateTime.now()); this.service.updateById(dbData); Object newData = this.service.getById(dbData.getId()); return ResponseFormat.success(newData); } } /** 修改数据, 接口不需要 */ @PassToken @ApiOperation("修改数据") // @PostMapping("/{id}") public Object update(@PathVariable long id, @RequestBody History data) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("id", id); Long num = this.service.count(qw); if (num <= 0) { throw new CustomizationException(ExceptionEnum.NOT_FOUND); } data.setId(id); this.service.updateById(data); Object newData = this.service.getById(id); return ResponseFormat.success(newData); } /** 列表查询 */ @PassToken @ApiOperation("查询数据列表") @SuppressWarnings({ "unchecked" }) @GetMapping() public Object list(@RequestParam Map allParams) { Long skip = null, limit = null; Map map = new HashMap(); QueryWrapper qw = new QueryWrapper<>(); qw.orderByDesc("time"); /** 参数处理处理 */ for (String key : allParams.keySet()) { Object value = allParams.get(key); if (key.equals("skip")) { skip = Long.valueOf(String.valueOf(value)); } else if (key.equals("limit")) { limit = Long.valueOf(String.valueOf(value)); } else { // 其他为查询条件 qw.eq(key, value); } } /** 分页处理 */ if (null != skip && null != limit) { IPage page = new Page<>(skip, limit); IPage pageResult = service.page(page, qw); List data = pageResult.getRecords(); List newData = service.getQuestionsName(data); long total = pageResult.getTotal(); map.put("data", newData); map.put("total", total); } else { List list = service.list(qw); List newData = service.getQuestionsName(list); map.put("data", newData); } return ResponseFormat.success(map); } /** 根据id查询 */ @PassToken @ApiOperation("查询数据") @GetMapping("/{id}") public Object fetch(@PathVariable long id) { Object newData = service.getById(id); return ResponseFormat.success(newData); } /** 根据id删除数据 */ @PassToken @ApiOperation("删除数据") @DeleteMapping("/{id}") public Object delete(@PathVariable long id) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("id", id); Long num = service.count(qw); if (num <= 0) { throw new CustomizationException(ExceptionEnum.NOT_FOUND); } service.removeById(id); return ResponseFormat.success(); } /** 根据user_id删除数据 */ @PassToken @ApiOperation("清空用户数据") @DeleteMapping("/clear/{user_id}") public Object clear(@PathVariable long user_id) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("user_id", user_id); service.remove(qw); return ResponseFormat.success(); } }