用户认证审核

需求:

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

 

posted @ 2023-07-11 15:57  佛系粥米  阅读(50)  评论(0编辑  收藏  举报