package com.free.controller.system; 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.cglib.beans.BeanCopier; 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.system.AdminCreateDTO; import com.free.entity.system.Admin; import com.free.service.system.AdminService; import com.free.utils.BcryptUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("/admin") @Api(tags = "管理员用户") public class AdminController { @Autowired private AdminService service; /** 创建数据 */ @ApiOperation("创建数据") @PostMapping("") public Object save(@RequestBody @Valid AdminCreateDTO data) { // 检查账号是否重复 QueryWrapper qw = new QueryWrapper(); qw.eq("account", data.getAccount()); Long num = this.service.count(qw); // 重复抛出异常 if (num > 0) { throw new CustomizationException(ExceptionEnum.ACCOUNT_IS_EXIST); } BeanCopier copier = BeanCopier.create(AdminCreateDTO.class, Admin.class, false); Admin adminData = new Admin(); copier.copy(data, adminData, null); // 密码加密 String ep = BcryptUtil.encryptPassword(adminData.getPassword()); if (null != ep) { adminData.setPassword(ep); } this.service.save(adminData); // 再将数据查出来返回 Admin returnData = this.service.getById(adminData.getId()); return ResponseFormat.success(returnData); } /** 修改数据 */ @ApiOperation("修改数据") @PostMapping("/{id}") public Object update(@PathVariable long id, @RequestBody Admin 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); // 密码,账号不在修改范围内,清空 data.setPassword(null); data.setAccount(null); 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("nick_name")||key.equals("account")){ 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); } /** 根据id查询 */ @ApiOperation("查询数据") @GetMapping("/{id}") public Object fetch(@PathVariable long id) { Object newData = service.getById(id); return ResponseFormat.success(newData); } /** 根据id删除数据 */ @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(); } @PassToken @PostMapping("/initData") public Object initSuperAdmin() { Admin admin = new Admin(); admin.setAccount("sadmin"); admin.setIs_super("0"); admin.setNick_name("超级管理员"); String pwd = "1qaz2wsx"; String cpwd = BcryptUtil.encryptPassword(pwd); admin.setPassword(cpwd); this.service.save(admin); return ResponseFormat.success(); } }