基于P2P万信金融--day04 万信金融项搭建用户中心微服务项目

    科技2025-12-28  12

    4.6.2 用户中心服务实现保存功能

    4.6.2.1 接口定义 1、接口描述如下: 1)在用户中心保存用户信息 2)请求统一账号服务实现账户信息保存

    可以看出来还是老三样简单的增删改查和简单的通俗易懂的

    2、接口定义如下: 在wanxinp2p-api工程中新建ConsumerApi接口,在该接口中定义register方法

    public interface ConsumerApi { /** * 用户注册 * @param consumerRegisterDTO * @return */ RestResponse register(ConsumerRegisterDTO consumerRegisterDTO); }

    在ConsumerController类中实现register方法:

    @ApiOperation("用户注册") @ApiImplicitParam(name = "consumerRegisterDTO", value = "用户注册", required = true, dataType = "AccountRegisterDTO", paramType = "body") @PostMapping(value = "/consumers") public RestResponse register(@RequestBody ConsumerRegisterDTO consumerRegisterDTO){ }

    4.6.2.2 功能实现 1)由于涉及到要在Consumer微服务中操作数据库,所以需要先把MP的环境搞定,

    2)新建一个实体类Consumer:直接对照着数据库表进行相关的操作就可以了

    3)Mapper 新建一个Mapper接口,继承Mybatis-Plus的BaseMapper:

    public interface ConsumerMapper extends BaseMapper<Consumer> { }

    新建一个Mapper配置文件:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.itcast.wanxinp2p.consumer.mapper.ConsumerMapper"> </mapper>

    4)ConsumerService 新建ConsumerService接口,并定义checkMobile和register方法

    public interface ConsumerService extends IService<Consumer> { /** * 检测用户是否存在 * @param mobile * @return */ Integer checkMobile(String mobile); /** * 用户注册 * @param consumerRegisterDTO * @return */ void register(ConsumerRegisterDTO consumerRegisterDTO); }

    新建ConsumerServiceImpl类实现该接口的checkMobile和register方法

    @Service public class ConsumerServiceImpl extends ServiceImpl<ConsumerMapper, Consumer> implements ConsumerService { @Override public Integer checkMobile(String mobile) { return getByMobile(mobile, false) != null ? 1 : 0; } /** * 根据手机号获取用户信息 * @param mobile 手机号 * @param throwEx 不存在是否抛出异常 * @return */ private ConsumerDTO getByMobile(String mobile, Boolean throwEx) { Consumer entity = getOne(new QueryWrapper<Consumer>().lambda() .eq(Consumer::getMobile, mobile); return convertConsumerEntityToDTO(entity); } @Override public void register(ConsumerRegisterDTO consumerRegisterDTO) { //检测是否已注册 if (checkMobile(consumerRegisterDTO.getMobile()) == 1) { throw new BusinessException(ConsumerErrorCode.E_140107); } Consumer consumer=new Consumer(); BeanUtils.copyProperties(consumerRegisterDTO, consumer); consumer.setUsername(CodeNoUtil.getNo(CodePrefixCode.CODE_NO_PREFIX)); consumer.setUserNo(CodeNoUtil.getNo(CodePrefixCode.CODE_REQUEST_PREFIX)); consumer.setIsBindCard(0); //保存用户信息 save(consumer); } /** * entity转为dto * @param entity * @return */ private ConsumerDTO convertConsumerEntityToDTO(Consumer entity) { if (entity == null) { return null; } ConsumerDTO dto = new ConsumerDTO(); BeanUtils.copyProperties(entity, dto); return dto; } }

    5)ConsumerController 补充controller代码,调用consumerService实现注册功能

    @Override @ApiOperation("用户注册") @ApiImplicitParam(name = "consumerRegisterDTO", value = "注册信息", required = true, dataType = "AccountRegisterDTO", paramType = "body") @PostMapping(value = "/consumers") public RestResponse register(@RequestBody ConsumerRegisterDTO consumerRegisterDTO) { consumerService.register(consumerRegisterDTO); return RestResponse.success(); }

    6)远程调用统一账户中心微服务 1. 在agent包中创建代理AccountApiAgent

    @FeignClient(value = "account-service") public interface AccountApiAgent { /** * 用户注册 * @param accountRegisterDTO * @return */ @PostMapping(value = "/account/l/accounts") RestResponse<AccountDTO> register(@RequestBody AccountRegisterDTO accountRegisterDTO); }

    Processed: 0.042, SQL: 9