需求:
在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()); //分页查询 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(); }
@Autowired private IWemediaClient wemediaClient; @Autowired private ApUserMapper apUserMapper; /** * 创建自媒体用户 * @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); } //创建自媒体用户,信息从app端用户获取 WmUser wmUser = wemediaClient.findWmUserByName(apUser.getName()); if(wmUser == null){ 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(); }