一、实现逻辑
Controller接收请求,先根据id查询信息,再调用Service层的edit()方法修改员工数据,规定只能允许修改员工的性别,状态,头像。
二、具体实现之基础准备
1、编写员工修改请求 EmployeeEditReq.java
@Getter
@Setter
@ApiModel(value = "员工修改")
public class EmployeeEditReq {
@ApiModelProperty(value = "主键")
@NotNull(message = "主键不能为空")
private Long id;
/**
* 性别(0 女 1 男)
*/
@ApiModelProperty(value = "性别(0 女 1 男)")
@NotBlank(message = "性别不能为空")
private String gender;
/**
* 状态(1停用,0正常)
*/
@ApiModelProperty(value = "状态(1停用,0正常)")
@NotBlank(message = "状态不能为空")
private String status;
/**
* 头像
*/
@ApiModelProperty(value = "头像")
@NotBlank(message = "头像不能为空")
private String avatar;
}
三、具体实现
1、Controller层
逻辑:先根据id查询到数据,再修改数据的内容。
@ApiOperation(value = "修改")
@PutMapping
public R edit(@RequestBody @Valid EmployeeEditReq req){
//调用service层的edit()方法修改数据
boolean result=this.employeeService.edit(req);
return result?R.ok():R.build(AckCode.DATABASE_ERROR);
}
/**
* 根据id查询数据
* @param id
* @return
*/
@ApiOperation(value = "根据主键查询")
@GetMapping(value = "{id}")
public R<EmployeeResp> findById(@PathVariable(value = "id") Long id){
//判断id是否为空
if (Objects.isNull(id)){
return R.build(AckCode.USER_PARAM_IS_NOT_NULL);
}
//根据Id获取数据
Employee db=this.employeeService.getById(id);
//如果数据为空,则返回信息,提示找不到数据
if (Objects.isNull(db)){
return R.build(AckCode.NOT_FOUND_DATA);
}
//转换对象
EmployeeResp resp = new EmployeeResp();
//复制需要的数据返回
BeanUtils.copyProperties(db,resp);
return R.okHasData(resp);
}
2、Service层
1)EmployeeService.java
/**
* 员工修改
* @param req
* @return
*/
boolean edit(EmployeeEditReq req);
2)EmployeeServiceImpl.java
逻辑:先获取数据的id,判断数据是否为空,如果为空则返回提示信息,不为空则将数据更新到数据库。
@Override
public boolean edit(EmployeeEditReq req) {
Employee db = this.getById(req.getId());
if (Objects.isNull(db)){
throw new ServiceException(AckCode.NOT_FOUND_DATA);
}
//将修改的数据更新到数据库
BeanUtils.copyProperties(req,db);
db.setUpdateTime(new Date());
db.setCreateBy("admin");
return this.updateById(db);
}
四、Swagger调试界面
1、根据id查询
2、修改