1.自定义异常
1.1.PhoneException
package com.atguigu.gulimall.member.exception;
public class PhoneException extends RuntimeException {
public PhoneException() {
super("存在相同的手机号");
}
}
1.2.UsernameException
package com.atguigu.gulimall.member.exception;
public class UsernameException extends RuntimeException {
public UsernameException() {
super("存在相同的用户名");
}
}
2.MemberService添加checkPhoneUnique和checkUserNameUnique
void checkPhoneUnique(String phone) throws PhoneException;
void checkUserNameUnique(String userName) throws UsernameException;
3.MemberServiceImpl添加方法实现
@Override
public void checkPhoneUnique(String phone) throws PhoneException {
Integer phoneCount = this.baseMapper.selectCount(new QueryWrapper<MemberEntity>().eq("mobile", phone));
if (phoneCount > 0) {
throw new PhoneException();
}
}
@Override
public void checkUserNameUnique(String userName) throws UsernameException {
Integer usernameCount = this.baseMapper.selectCount(new QueryWrapper<MemberEntity>().eq("username", userName));
if (usernameCount > 0) {
throw new UsernameException();
}
}
4.MemberLevelDao
package com.atguigu.gulimall.member.dao;
import com.atguigu.gulimall.member.entity.MemberLevelEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MemberLevelDao extends BaseMapper<MemberLevelEntity> {
MemberLevelEntity getDefaultLevel();
}
5.MemberLevelDao.xml
<select id="getDefaultLevel" resultType="com.atguigu.gulimall.member.entity.MemberLevelEntity">
SELECT * FROM ums_member_level WHERE default_status = 1
</select>
6.MemberUserRegisterVo
package com.atguigu.gulimall.member.vo;
import lombok.Data;
@Data
public class MemberUserRegisterVo {
private String userName;
private String password;
private String phone;
}
7.远程服务-会员注册
7.1.MemberService添加register
void register(MemberUserRegisterVo vo);
7.2.MemberServiceImpl中添加register方法实现
@Override
public void register(MemberUserRegisterVo vo) {
MemberDao memberDao = this.baseMapper;
MemberEntity memberEntity = new MemberEntity();
MemberLevelEntity levelEntity = memberLevelDao.getDefaultLevel();
memberEntity.setLevelId(levelEntity.getId());
checkPhoneUnique(vo.getPhone());
checkUserNameUnique(vo.getUserName());
memberEntity.setNickname(vo.getUserName());
memberEntity.setUsername(vo.getUserName());
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode(vo.getPassword());
memberEntity.setPassword(encode);
memberEntity.setMobile(vo.getPhone());
memberEntity.setGender(0);
memberEntity.setCreateTime(new Date());
memberDao.insert(memberEntity);
}
7.3.MemberController中添加register
@PostMapping(value = "/register")
public R register(@RequestBody MemberUserRegisterVo vo) {
try {
memberService.register(vo);
} catch (PhoneException e) {
return R.error(BizCodeEnume.PHONE_EXIST_EXCEPTION.getCode(),BizCodeEnume.PHONE_EXIST_EXCEPTION.getMsg());
} catch (UsernameException e) {
return R.error(BizCodeEnume.USER_EXIST_EXCEPTION.getCode(),BizCodeEnume.USER_EXIST_EXCEPTION.getMsg());
}
return R.ok();
}