用户认证审核
需求:
在app端的个人中心用户可以实名认证,需要材料为:姓名、身份证号、身份证正面照、身份证反面照、手持照片、活体照片(通过**微笑、眨眼、张 嘴、摇头、点头**等组合动作,确保操作的为真实活体人脸。),当用户提交审核后就到了后端让运营管理人员进行审核。
平台运营端查看用户认证信息,进行审核,其中审核包括了用户身份审核,需要对接公安系统校验身份证信息。
用户通过审核后需要开通自媒体账号(该账号的用户名和密码与app一致)
(1)该需求在leadnew-user微服务中完成,主要分为:
查询用户申请认证用户的列表。申请认证的用户数据存放在ApUserRealname表中。
更新申请状态:认证通过、认证失败。认证成功还要创建自媒体账号feign接口远程调用wemedia方法创建账号
(2)分页查询申请认证的用户
/**
* 查询审核的用户
*
* @param dto
* @return
*/
@Override
public ResponseResult loadListByStatus(AuthDto dto) {
//参数验证
if(dto == null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
//分页条件检查
dto.checkParam();
//分页构造器
Page<ApUserRealname> page = new Page<>(dto.getPage(), dto.getSize());
//条件构造器
LambdaQueryWrapper<ApUserRealname> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(dto.getStatus()!=null, ApUserRealname::getStatus, dto.getStatus());
//根据查询参数status:全部、待审核、审核失败等条件查询
queryWrapper.eq(dto.getStatus()!=null, ApUserRealname::getStatus, dto.getStatus());
//分页查询
page = page(page, queryWrapper);
//封装返回结果
ResponseResult responseResult = new PageResponseResult(dto.getPage(),dto.getSize(), (int) page.getTotal());
responseResult.setData(page.getRecords());
return responseResult;
}
(3)更新状态:通过或失败,通过则要创建自媒体账号
/** * 更新用户状态:审核是否通过 * @param dto * @param status * @return */ @Override public ResponseResult updateStatus(AuthDto dto, Short status) { //参数验证 if(dto == null || dto.getId() == null){ return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID); } //修改审核状态status ApUserRealname apUserRealname = getById(dto.getId()); apUserRealname.setStatus(status); if(StringUtils.isNotBlank(dto.getMsg())){ apUserRealname.setReason(dto.getMsg()); } updateById(apUserRealname); //如果审核成功,则创建自媒体用户-远程调用wemedia if(status.equals(UserConstants.PASS_AUTH)){ ResponseResult responseResult = createWmUser(dto); if(responseResult != null){ return responseResult; } } return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS); }
(4)认证通过,创建自媒体账号,feign远程调用wemedia微服务
feign接口:
package com.heima.apis.wemedia; import com.heima.model.common.dtos.ResponseResult; import com.heima.model.wemedia.pojos.WmUser; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @FeignClient("leadnews-wemedia") public interface IWemediaClient { /** * 查询自媒体用户 * @param name * @return */ @GetMapping("/api/v1/user/findByName/{name}") WmUser findWmUserByName(@PathVariable("name") String name); /** * 添加自媒体用户 * @param wmUser * @return */ @PostMapping("/api/v1/wm_user/save") public ResponseResult saveWmUser(@RequestBody WmUser wmUser); /** * 查询所有频道 * @return */ @GetMapping("/api/v1/channel/list") public ResponseResult getChannels(); }
/**
* 创建自媒体用户
* @param dto
* @return
*/
private ResponseResult createWmUser(AuthDto dto) {
//查询用户
Integer userRealnameId = dto.getId();
ApUserRealname apUserRealname = getById(userRealnameId);
if(apUserRealname == null){
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
}
//查询app端用户信息
Integer userId = apUserRealname.getUserId();
ApUser apUser = apUserMapper.selectById(userId);
if(apUser == null){
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
}
//根据姓名查看自媒体用户是否存在,不存在才能创建
WmUser user = wemediaClient.findWmUserByName(apUser.getName());
if(user== null){
WmUser wmUser = new WmUser();
BeanUtils.copyProperties(apUser, wmUser);
wmUser.setApUserId(apUser.getId());
wmUser.setCreatedTime(new Date());
// wmUser.setName(apUser.getName());
// wmUser.setPassword(apUser.getPassword());
// wmUser.setSalt(apUser.getSalt());
// wmUser.setPhone(apUser.getPhone());
wmUser.setStatus(9);
wemediaClient.saveWmUser(wmUser);
}
//自媒体人标志
apUser.setFlag((short) 1);
apUserMapper.updateById(apUser);
return null;
}
wemedia中实现类中完成具体的查询添加自媒体用户方法:@Autowired
private WmUserService wmUserService; /** * 查询自媒体用户 * * @param name * @return */ @Override @GetMapping("/api/v1/user/findByName/{name}") public WmUser findWmUserByName(@PathVariable("name") String name) { return wmUserService.getOne(Wrappers.<WmUser>lambdaQuery().eq(WmUser::getName, name)); } /** * 添加自媒体用户 * * @param wmUser * @return */ @Override @PostMapping("/api/v1/wm_user/save") public ResponseResult saveWmUser(@RequestBody WmUser wmUser) {
wmUserService.save(wmUser); return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS); } @Autowired private WmChannelService channelService; /** * 查询所有频道 * * @return */ @Override @GetMapping("/api/v1/channel/list") public ResponseResult getChannels() { return channelService.finddAll(); }