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.config.CustomizationException; import com.free.config.ExceptionEnum; import com.free.config.ResponseFormat; import com.free.dto.system.CustomerCreateDTO; import com.free.entity.system.Customer; import com.free.service.system.CustomerService; import com.free.utils.BcryptUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("/customer") @Api(tags = "客服人员") public class CustomerController { @Autowired private CustomerService service; /** 创建数据 */ @ApiOperation("创建数据") @PostMapping("") public Object save(@RequestBody @Valid CustomerCreateDTO 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(CustomerCreateDTO.class, Customer.class, false); Customer insertData = new Customer(); copier.copy(data, insertData, null); // 密码加密 String ep = BcryptUtil.encryptPassword(insertData.getPassword()); if (null != ep) { insertData.setPassword(ep); } this.service.save(insertData); // 再将数据查出来返回 Customer returnData = this.service.getById(insertData.getId()); return ResponseFormat.success(returnData); } /** 修改数据 */ @ApiOperation("修改数据") @PostMapping("/{id}") public Object update(@PathVariable long id, @RequestBody Customer 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); 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 { // 其他为查询条件 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(); } }