IBaseController
目的
避免在业务service代码中使用
SecurityUtils.getLoginUser()
获取当前登录用户,以隔离业务与登录用户间的耦合。好处:当业务需求的用户信息不是当前用户时,则可以通过new User()的方法自定义一个用户进行业务相关操作。
IBaseController源码:
public interface IBaseController {
/**
* 用以获取用户,以隔离业务与登录用户的耦合
*
* @return 当前用户
*/
@ApiModelProperty("用于获取用户,以隔离业务与登录用户的耦合")
default User getUser() {
LoginUser loginUser = SecurityUtils.getLoginUser();
return null == loginUser ? null : new User(loginUser);
}
}
使用方法
引入通用类库
<dependency> <groupId>cn.flyrise</groupId> <artifactId>pai-fe-common</artifactId> </dependency>
业务controller继承IBaseController接口,通过getUser()方法获取当前用户
public class XXXController implements IBaseController { @ApiOperation("添加单条记录") @PostMapping("add") public Reply<LeaseIntentionVO> insert( @Validated({Create.class}) @RequestBody LeaseIntentionVO vo) { return Reply.success(this.leaseIntentionService.insert(getUser(), vo)); } }
业务定义接收User对象的方法
/** * 保存租赁意向信息 * * @param user 当前操作用户 * @param vo 租赁意向信息 * @return 保存后的租赁意向信息 */ LeaseIntentionVO insert(User user, LeaseIntentionVO vo);
不存在当前用户时,getUser()同样会返回null对象,业务代码中需自行判断处理
文档更新时间: 2022-02-25 09:15 作者:陆鸿睿