package com.free.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.validation.Valid; 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.dto.UserGetInfoDTO; import com.free.entity.User; import com.free.service.UserService; import com.free.utils.JwtUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("/user") @Api(tags = "使用用户") public class UserController { @Autowired private UserService service; @PassToken @ApiOperation("用户进入智能客服获取信息") @PostMapping("/getInfo") public Object getInfo(@RequestBody UserGetInfoDTO body) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("uid", body.getUid()); Map user = service.getMap(qw); if (null == user) { // 用户首次登录,需要获取用户信息 User newUser = new User(); newUser.setUid(body.getUid()); // TODO:获取用户信息并填充,缺字段再补 newUser.setName("游客"); service.save(newUser); // 再将新创建的用户赋值回user中,后面统一处理 QueryWrapper nqw = new QueryWrapper<>(); nqw.eq("id", newUser.getId()); user = service.getMap(nqw); } // 将用户转换成token String code = JwtUtil.sign(user); return ResponseFormat.success(code); } /** 创建数据 */ @ApiOperation("创建数据") @PostMapping("") public Object save(@RequestBody @Valid User data) { QueryWrapper oqw = new QueryWrapper<>(); oqw.eq("uid", data.getUid()); Long num = service.count(oqw); if(num>0) { throw new CustomizationException(ExceptionEnum.UID_EXIST); } this.service.save(data); QueryWrapper qw = new QueryWrapper<>(); qw.eq("id", data.getId()); Map returnData = this.service.getMap(qw); return ResponseFormat.success(returnData); // return ResponseFormat.success(); } @ApiOperation("修改数据") @PostMapping("/{id}") public Object update(@PathVariable String id, @RequestBody User data) { QueryWrapper qw = new QueryWrapper<>(); qw.eq("id", id); Long num = this.service.count(qw); if (num <= 0) { throw new CustomizationException(ExceptionEnum.NOT_FOUND); } // 需要清掉uid修改,不允许修改,要改就删了再加 data.setUid(null); data.setId(id); this.service.updateById(data); Object newData = this.service.getById(id); return ResponseFormat.success(newData); } @ApiOperation("查询数据列表") @SuppressWarnings({ "unchecked" }) @GetMapping() public Object list(@RequestParam Map allParams) { Long skip = null, limit = null; Map map = new HashMap(); QueryWrapper qw = new QueryWrapper<>(); /** 参数处理处理 */ 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 { if (key.equals("name")) { qw.like(key, 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(); long total = pageResult.getTotal(); map.put("data", data); map.put("total", total); } else { List list = service.list(qw); map.put("data", list); } return ResponseFormat.success(map); } @ApiOperation("查询数据") @GetMapping("/{id}") public Object fetch(@PathVariable String id) { Object newData = service.getById(id); return ResponseFormat.success(newData); } @ApiOperation("删除数据") @DeleteMapping("/{id}") public Object delete(@PathVariable String 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(); } }