一、审核部分
普通用户需要进行审核,审核成功则将用户信息添加到自媒体库中,然后以作者的身份发布文章
普通用户希望自己成为自媒体人需要进行申请,然后由管理员进行审核,如果审核通过,则需要进行以下的操作
-
修改用户库的ap_user_realname表(实名认证成功的表)的status为9(审核通过)---leadnews-user
-
修改用户库的ap_user表(普通用户表)的flag=1(自媒体人)---leadnews-user
-
将用户信息复制到自媒体库的wm_user表(自媒体用户表)---leadnews-media
-
将用户信息复制到文章库的ap_author表(对外文章作者表)---leadnews-article
1.自媒体微服务保存用户
在WmUserController中根据接口文档编写方法
@Autowired
private IWmUserService wmUserService;
//新增
@PostMapping("/api/v1/user")
public ResponseResult<WmUser> save(@RequestBody WmUser wmUser) {
//1. 先根据ap_user_id查询是否已经是自媒体人, 如果已经是了; 直接返回
WmUser wmUserFromDB = wmUserService.lambdaQuery()
.eq(WmUser::getApUserId, wmUser.getApUserId())
.one();
if (wmUserFromDB != null) {
return ResponseResult.okResult(wmUserFromDB);
}
//2. 如果不是, 则保存到数据库之后再返回
wmUser.setCreatedTime(new Date());
wmUserService.save(wmUser);
return ResponseResult.okResult(wmUser);
}
//修改
@PutMapping("/api/v1/user")
public ResponseResult update(@RequestBody WmUser wmUser) {
wmUserService.updateById(wmUser);
return ResponseResult.okResult();
}
2.文章微服务保存作者
在文章微服务中提供一个向ap_author(app用户表)保存和修改数据的功能
在ApAuthorController中根据接口文档编写方法yinwei
@Autowired
private IApAuthorService apAuthorService;
//保存文章作者
@PostMapping("/api/v1/author")
public ResponseResult<ApAuthor> save(@RequestBody ApAuthor apAuthor) {
//1. 先根据user_id查询是否已经存在, 如果已经存在,直接返回
ApAuthor apAuthorFromDB = apAuthorService.lambdaQuery()
.eq(ApAuthor::getUserId, apAuthor.getUserId())
.one();
if (apAuthorFromDB != null) {
return ResponseResult.okResult(apAuthorFromDB);
}
//2. 如果不存在, 保存再返回
apAuthor.setCreatedTime(new Date());
apAuthorService.save(apAuthor);
return ResponseResult.okResult(apAuthor);
}
3.Fegin声明
根据上面的图可以知道,article、media、user三个模块要互相调用,所以需要暴露Feign接口,方便在其他微服务中引入当前模块
在leadnews(主模块)下面创建模块leadnews-api,导入依赖
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>leadnews-common</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
- 新建client接口,在接口上添加注解@FeignClient("模块名称")
- 复制对应controller类中的代码,去掉实现,去掉public(如果类上的注解@RequestMapping中有路径,记得添加到方法的@xxxMapping中)
- 引入代码中报红的实体类(删除实体类中报红的@TableName、@TableId等内容)
在这三个模块共同的父模块中添加依赖引入api
<dependency>
<groupId>com.xxx</groupId>
<artifactId>leadnews-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
4.用户微服务审核
审核失败
@Override
public ResponseResult authFail(AuthDto dto) {
// 根据用户 id 查询是否存在
// 创建一个 LambdaQuer