0
点赞
收藏
分享

微信扫一扫

认证服务(5)-异常机制

_鱼与渔_ 2022-01-23 阅读 97
java

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;

/**
 * 自定义异常
 * @author zfh
 * @email hst1406959716@163.com
 * @date 2022-01-06 11:42:46
 */
public class UsernameException extends RuntimeException {
    public UsernameException() {
        super("存在相同的用户名");
    }
}

2.MemberService添加checkPhoneUnique和checkUserNameUnique

/**
 * 判断手机号是否重复
 * @param phone
 * @throws PhoneException
 */
void checkPhoneUnique(String phone) throws PhoneException;

/**
 * 判断用户名是否重复
 * @param userName
 * @return
 */
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;

/**
 * 会员等级
 * @author zfh
 * @email hst1406959716@163.com
 * @date 2020-08-12 07:27:02
 */
@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;

/**
 * 注册VO
 * @author zfh
 * @email hst1406959716@163.com
 * @date 2022-01-06 11:04:46
 */
@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方法实现

/**
  * 会员注册
  * @param vo
  */
 @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());

     //密码进行MD5加密
     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

 /**
   * 会员注册
   * @param vo
   * @return
   */
  @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();
  }
举报

相关推荐

0 条评论