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);
  }
}

使用方法

  1. 引入通用类库

        <dependency>
          <groupId>cn.flyrise</groupId>
          <artifactId>pai-fe-common</artifactId>
        </dependency>
  1. 业务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));
      }
    }
  1. 业务定义接收User对象的方法

      /**
       * 保存租赁意向信息
       *
       * @param user 当前操作用户
       * @param vo   租赁意向信息
       * @return 保存后的租赁意向信息
       */
      LeaseIntentionVO insert(User user, LeaseIntentionVO vo);

不存在当前用户时,getUser()同样会返回null对象,业务代码中需自行判断处理

文档更新时间: 2022-02-25 09:15   作者:陆鸿睿