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

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

猜你喜欢

转载自blog.csdn.net/zgz102928/article/details/108967032
今日推荐