1.// 权限是数据库表sys_privilege 中web_config_query @PreAuthorize("hasAuthority('web_config_query')")
2.分页查询
// WebConfigController // 调用findByPage
public R<Page<WebConfig>> findByPage(@ApiIgnore Page<WebConfig> page , String name , String type ){
Page<WebConfig> webConfigPage = webConfigService.findByPage(page,name,type) ;
return R.ok(webConfigPage) ;
}
// WebConfigService // 写接口
public interface WebConfigService extends IService<WebConfig>{
Page<WebConfig> findByPage(Page<WebConfig> page, String name, String type);
// imp中实现
@Service
public class WebConfigServiceImpl extends ServiceImpl<WebConfigMapper, WebConfig> implements WebConfigService{
@Override
public Page<WebConfig> findByPage(Page<WebConfig> page, String name, String type) {
return page(page ,new LambdaQueryWrapper<WebConfig>()
.like(!StringUtils.isEmpty(name),WebConfig::getName ,name)
.eq(!StringUtils.isEmpty(type),WebConfig::getType ,type)
);
}
}
3. @Validated 表单校验
// controller中
@PreAuthorize("hasAuthority('web_config_create')")
// @Validated 校验 表格中不能为空 之类验证
public R add(@RequestBody @Validated WebConfig webConfig){
boolean save = webConfigService.save(webConfig);
if(save){
return R.ok() ;
}
return R.fail("新增失败") ;
}
// 实体类中 @NotBlank
@TableField(value = "type")
@ApiModelProperty(value="分组, LINK_BANNER ,WEB_BANNER")
@NotBlank // 校验
private String type;
@TableField(value = "name")
@ApiModelProperty(value="名称")
@NotBlank // 校验
private String name;
@TableField(value = "value")
@ApiModelProperty(value="值")
@NotBlank // 校验
private String value;
4.连表查询 @TableField(exist = false) 表示不在同一个表
// 实体类中 // 暂时全赋值为"测试用户"
@TableField(exist = false)
@ApiModelProperty(value = "创建工单的用户名称")
public String username ="测试用户" ;
@TableField(exist = false)
@ApiModelProperty(value = "创建工单的用户真实名称")
private String realName= "测试用户" ;
5.从多个表中查询数据 然后再封装成一个对象 p70
/**
* 差询用户的认证详情 ---> 三个表 --> 新建一个对象
* {
* user:
* userAuthInfoList:[]
* userAuditRecordList:[]
* }
*/
// 额外建一个包 vo 创建一个实体类
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel(value = "用户认证的详细信息")
public class UseAuthInfoVo implements Serializable{
@ApiModelProperty(value = "用户")
private User user ;
@ApiModelProperty(value = "用户认证的详情列表")
private List<UserAuthInfo> userAuthInfoList ;
@ApiModelProperty(value = "用户审核历史")
private List<UserAuthAuditRecord> authAuditRecordList ;
}
// usercontroller 中
// 封装成对象 new UseAuthInfoVo(user, userAuthInfoList, userAuthAuditRecordList)
@GetMapping("/auth/info")
@ApiOperation(value = "查询用户的认证详情")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户的Id")
})
public R<UseAuthInfoVo> getUseAuthInfo(Long id) {
}
return R.ok(new UseAuthInfoVo(user, userAuthInfoList, userAuthAuditRecordList));
}
// usercontroller 完整查询
public R<UseAuthInfoVo> getUseAuthInfo(Long id) {
User user = userService.getById(id);
List<UserAuthAuditRecord> userAuthAuditRecordList = null;
List<UserAuthInfo> userAuthInfoList = null;
if (user != null) {
// 用户的审核记录
Integer reviewsStatus = user.getReviewsStatus();
if (reviewsStatus == null || reviewsStatus == 0) { // 待审核
userAuthAuditRecordList = Collections.emptyList(); // 用户没有审核记录
//
userAuthInfoList = userAuthInfoService.getUserAuthInfoByUserId(id);
} else {
userAuthAuditRecordList = userAuthAuditRecordService.getUserAuthAuditRecordList(id);
// 查询用户的认证详情列表-> 用户的身份信息
UserAuthAuditRecord userAuthAuditRecord = userAuthAuditRecordList.get(0);// 之前我们查询时,是按照认证的日志排序的,第0 个值,就是最近被认证的一个值
Long authCode = userAuthAuditRecord.getAuthCode(); // 认证的唯一标识
userAuthInfoList = userAuthInfoService.getUserAuthInfoByCode(authCode);
}
}
return R.ok(new UseAuthInfoVo(user, userAuthInfoList, userAuthAuditRecordList));
}
6. 处理空值的写法 p71
return list == null ? Collections.emptyList() : list ;
7. 批量查询