teacherDOS;
@EncryptId(message = "密码格式错误")
private String password;
}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/TeacherBean.java b/nla-user-service/src/main/java/cn/nla/user/model/DO/TeacherDO.java
similarity index 83%
rename from nla-user-service/src/main/java/cn/nla/user/model/TeacherBean.java
rename to nla-user-service/src/main/java/cn/nla/user/model/DO/TeacherDO.java
index 6ab7c48..c35f514 100644
--- a/nla-user-service/src/main/java/cn/nla/user/model/TeacherBean.java
+++ b/nla-user-service/src/main/java/cn/nla/user/model/DO/TeacherDO.java
@@ -1,10 +1,11 @@
-package cn.nla.user.model;
+package cn.nla.user.model.DO;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
+
@Data
-public class TeacherBean {
+public class TeacherDO {
@NotEmpty(message = "老师姓名不能为空")
private String teacherName;
@Min(value = 1, message = "学科类型从1开始计算")
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/VO/AddressVO.java b/nla-user-service/src/main/java/cn/nla/user/model/VO/AddressVO.java
new file mode 100644
index 0000000..c4661e9
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/model/VO/AddressVO.java
@@ -0,0 +1,48 @@
+package cn.nla.user.model.VO;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 收货地址返回对象
+ */
+@Data
+public class AddressVO {
+
+ private Long id;
+ /**
+ * 用户id
+ */
+ private Long userId;
+ /**
+ * 是否默认收货地址:0->否;1->是
+ */
+ @JsonProperty("default_status")
+ private Integer defaultStatus;
+ /**
+ * 收发货人姓名
+ */
+ @JsonProperty("receive_name")
+ private String receiveName;
+ /**
+ * 收货人电话
+ */
+ private String phone;
+ /**
+ * 省/直辖市
+ */
+ private String province;
+ /**
+ * 市
+ */
+ private String city;
+ /**
+ * 区
+ */
+ private String region;
+ /**
+ * 详细地址
+ */
+ @JsonProperty("detail_address")
+ private String detailAddress;
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/VO/UserVO.java b/nla-user-service/src/main/java/cn/nla/user/model/VO/UserVO.java
new file mode 100644
index 0000000..fa971b3
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/model/VO/UserVO.java
@@ -0,0 +1,38 @@
+package cn.nla.user.model.VO;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 用户响应对象
+ */
+@Data
+public class UserVO {
+
+ private Long id;
+ /**
+ * 昵称
+ */
+ private String name;
+ /**
+ * 头像
+ */
+ @JsonProperty("head_img")
+ private String headImg;
+ /**
+ * 用户签名
+ */
+ private String slogan;
+ /**
+ * 0表示女,1表示男
+ */
+ private Integer sex;
+ /**
+ * 积分
+ */
+ private Integer points;
+ /**
+ * 邮箱
+ */
+ private String mail;
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/AddressDO.java b/nla-user-service/src/main/java/cn/nla/user/model/entity/AddressEntity.java
similarity index 92%
rename from nla-user-service/src/main/java/cn/nla/user/model/AddressDO.java
rename to nla-user-service/src/main/java/cn/nla/user/model/entity/AddressEntity.java
index 6ad0cb6..fcd61e2 100644
--- a/nla-user-service/src/main/java/cn/nla/user/model/AddressDO.java
+++ b/nla-user-service/src/main/java/cn/nla/user/model/entity/AddressEntity.java
@@ -1,4 +1,4 @@
-package cn.nla.user.model;
+package cn.nla.user.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -23,54 +23,41 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("address")
-public class AddressDO implements Serializable {
-
+public class AddressEntity implements Serializable {
private static final long serialVersionUID = 1L;
-
@TableId(value = "id", type = IdType.AUTO)
private Long id;
-
/**
* 用户id
*/
private Long userId;
-
/**
* 是否默认收货地址:0-否;1-是
*/
private Integer defaultStatus;
-
/**
* 收发货人姓名
*/
private String receiveName;
-
/**
* 收货人电话
*/
private String phone;
-
/**
* 省/直辖市
*/
private String province;
-
/**
* 市
*/
private String city;
-
/**
* 区
*/
private String region;
-
/**
* 详细地址
*/
private String detailAddress;
-
private Date createTime;
-
-
}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/UserDO.java b/nla-user-service/src/main/java/cn/nla/user/model/entity/UserEntity.java
similarity index 92%
rename from nla-user-service/src/main/java/cn/nla/user/model/UserDO.java
rename to nla-user-service/src/main/java/cn/nla/user/model/entity/UserEntity.java
index aece6dd..6705efd 100644
--- a/nla-user-service/src/main/java/cn/nla/user/model/UserDO.java
+++ b/nla-user-service/src/main/java/cn/nla/user/model/entity/UserEntity.java
@@ -1,4 +1,4 @@
-package cn.nla.user.model;
+package cn.nla.user.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -23,7 +23,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user")
-public class UserDO implements Serializable {
+public class UserEntity implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/request/AddressAddRequest.java b/nla-user-service/src/main/java/cn/nla/user/model/request/AddressAddRequest.java
new file mode 100644
index 0000000..2e82248
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/model/request/AddressAddRequest.java
@@ -0,0 +1,52 @@
+package cn.nla.user.model.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "地址对象", description = "新增收货地址对象")
+public class AddressAddRequest {
+
+ /**
+ * 是否默认收货地址:0->否;1->是
+ */
+ @ApiModelProperty(value = "是否是否默认收货地址,0->否;1->是", example = "0")
+ @JsonProperty("default_status")
+ private Integer defaultStatus;
+ /**
+ * 收发货人姓名
+ */
+ @ApiModelProperty(value = "收发货人姓名", example = "yuan-paas")
+ @JsonProperty("receive_name")
+ private String receiveName;
+ /**
+ * 收货人电话
+ */
+ @ApiModelProperty(value = "收货人电话", example = "11111111111")
+ private String phone;
+ /**
+ * 省/直辖市
+ */
+ @ApiModelProperty(value = "省/直辖市", example = "四川省")
+ private String province;
+ /**
+ * 市
+ */
+ @ApiModelProperty(value = "城市", example = "成都市")
+ private String city;
+
+ /**
+ * 区
+ */
+ @ApiModelProperty(value = "区", example = "武侯区")
+ private String region;
+
+ /**
+ * 详细地址
+ */
+ @ApiModelProperty(value = "详细地址", example = "天府新区18号")
+ @JsonProperty("detail_address")
+ private String detailAddress;
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/request/UserLoginRequest.java b/nla-user-service/src/main/java/cn/nla/user/model/request/UserLoginRequest.java
new file mode 100644
index 0000000..b9cd725
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/model/request/UserLoginRequest.java
@@ -0,0 +1,16 @@
+package cn.nla.user.model.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "登录对象", description = "用户登录请求对象")
+public class UserLoginRequest {
+
+ @ApiModelProperty(value = "邮箱", example = "794666918@qq.com")
+ private String mail;
+ @ApiModelProperty(value = "密码", example = "123456")
+ private String pwd;
+
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/request/UserRegisterRequest.java b/nla-user-service/src/main/java/cn/nla/user/model/request/UserRegisterRequest.java
new file mode 100644
index 0000000..e55f962
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/model/request/UserRegisterRequest.java
@@ -0,0 +1,27 @@
+package cn.nla.user.model.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "用户注册对象", description = "用户注册请求对象")
+@Data
+public class UserRegisterRequest {
+ @ApiModelProperty(value = "昵称", example = "Anna小姐姐")
+ private String name;
+ @ApiModelProperty(value = "密码", example = "12345")
+ private String pwd;
+ @ApiModelProperty(value = "头像", example = "xx")
+ @JsonProperty("head_img")
+ private String headImg;
+ @ApiModelProperty(value = "用户个人性签名", example = "人生需要动态规划,学习需要贪心算法")
+ private String slogan;
+ @ApiModelProperty(value = "0表示女,1表示男", example = "1")
+ private Integer sex;
+ @ApiModelProperty(value = "邮箱", example = "794666918@qq.com")
+ private String mail;
+ @ApiModelProperty(value = "验证码", example = "232343")
+ private String code;
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/AddressService.java b/nla-user-service/src/main/java/cn/nla/user/service/AddressService.java
index 22bf77b..0733694 100644
--- a/nla-user-service/src/main/java/cn/nla/user/service/AddressService.java
+++ b/nla-user-service/src/main/java/cn/nla/user/service/AddressService.java
@@ -1,7 +1,13 @@
package cn.nla.user.service;
-import cn.nla.user.model.AddressDO;
+import cn.nla.user.model.VO.AddressVO;
+import cn.nla.user.model.entity.AddressEntity;
+import cn.nla.user.model.request.AddressAddRequest;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
/**
*
@@ -11,6 +17,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @author YJs
* @since 2024-07-29
*/
-public interface AddressService extends IService {
+@Service
+public interface AddressService extends IService {
+
+ AddressEntity detail(Long id);
+
+ void add(AddressAddRequest addressAddRequest);
+
+ /**
+ * 根据id删除地址
+ */
+ int del(int addressId);
+ /**
+ * 查找用全部收货地址
+ */
+ List listUserAllAddress();
}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/NotifyService.java b/nla-user-service/src/main/java/cn/nla/user/service/NotifyService.java
new file mode 100644
index 0000000..894fd0d
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/service/NotifyService.java
@@ -0,0 +1,21 @@
+package cn.nla.user.service;
+
+import cn.nla.common.enums.SendCodeEnum;
+import cn.nla.common.util.JsonData;
+
+public interface NotifyService {
+
+ /**
+ * 邮件发送验证码
+ */
+ JsonData sendCode(SendCodeEnum sendCodeEnum, String to);
+
+ /**
+ * 判断验证码是否一样
+ * @param sendCodeEnum 验证码类型
+ * @param to 接收者
+ * @param code 验证码
+ */
+ boolean checkCode(SendCodeEnum sendCodeEnum, String to, String code);
+
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/UserService.java b/nla-user-service/src/main/java/cn/nla/user/service/UserService.java
index 77d7818..02b4014 100644
--- a/nla-user-service/src/main/java/cn/nla/user/service/UserService.java
+++ b/nla-user-service/src/main/java/cn/nla/user/service/UserService.java
@@ -1,7 +1,11 @@
package cn.nla.user.service;
-import cn.nla.user.model.UserDO;
+import cn.nla.common.util.JsonData;
+import cn.nla.user.model.VO.UserVO;
+import cn.nla.user.model.entity.UserEntity;
+import cn.nla.user.model.request.UserLoginRequest;
import com.baomidou.mybatisplus.extension.service.IService;
+import cn.nla.user.model.request.UserRegisterRequest;
/**
*
@@ -11,6 +15,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @author YJs
* @since 2024-07-29
*/
-public interface UserService extends IService {
+public interface UserService extends IService {
+
+ JsonData register(UserRegisterRequest registerRequest);
+
+ JsonData login(UserLoginRequest loginRequest);
+
+ UserVO findUserDetail();
}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/impl/AddressServiceImpl.java b/nla-user-service/src/main/java/cn/nla/user/service/impl/AddressServiceImpl.java
index 72f73dc..0ae40e1 100644
--- a/nla-user-service/src/main/java/cn/nla/user/service/impl/AddressServiceImpl.java
+++ b/nla-user-service/src/main/java/cn/nla/user/service/impl/AddressServiceImpl.java
@@ -1,10 +1,25 @@
package cn.nla.user.service.impl;
-import cn.nla.user.model.AddressDO;
+import cn.nla.common.enums.AddressStatusEnum;
+import cn.nla.common.interceptor.LoginInterceptor;
+import cn.nla.common.model.LoginUser;
+import cn.nla.user.model.VO.AddressVO;
+import cn.nla.user.model.entity.AddressEntity;
import cn.nla.user.mapper.AddressMapper;
+import cn.nla.user.model.request.AddressAddRequest;
import cn.nla.user.service.AddressService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
/**
*
@@ -14,7 +29,55 @@ import org.springframework.stereotype.Service;
* @author YJs
* @since 2024-07-29
*/
+@Slf4j
@Service
-public class AddressServiceImpl extends ServiceImpl implements AddressService {
+public class AddressServiceImpl extends ServiceImpl implements AddressService {
+ @Override
+ public AddressEntity detail(Long id) {
+ //new QueryWrapper().eq("id", id)
+ return baseMapper.selectOne(Wrappers.lambdaQuery()
+ .eq(AddressEntity::getId, id));
+ }
+
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+ @Override
+ public void add(AddressAddRequest addressAddRequest) {
+ LoginUser loginUser = LoginInterceptor.threadLocal.get();
+ AddressEntity address = new AddressEntity();
+ address.setCreateTime(new Date());
+ address.setUserId(loginUser.getId());
+ BeanUtils.copyProperties(addressAddRequest, address);
+ //是否有默认收货地址
+ if (address.getDefaultStatus() == AddressStatusEnum.DEFAULT_STATUS.getStatus()) {
+ //查找数据库是否有默认地址
+ AddressEntity defaultAddressDO = baseMapper.selectOne(
+ Wrappers.lambdaQuery()
+ .eq(AddressEntity::getId, loginUser.getId())
+ .eq(AddressEntity::getDefaultStatus, AddressStatusEnum.DEFAULT_STATUS.getStatus()));
+ if (defaultAddressDO != null) {
+ //修改为非默认收货地址
+ defaultAddressDO.setDefaultStatus(AddressStatusEnum.COMMON_STATUS.getStatus());
+ baseMapper.update(defaultAddressDO, Wrappers.lambdaQuery()
+ .eq(AddressEntity::getId, defaultAddressDO.getId()));
+ }
+ }
+ int rows = baseMapper.insert(address);
+ log.info("新增收货地址:rows={},data={}", rows, address);
+ }
+
+ @Override
+ public int del(int addressId) {
+ return baseMapper.delete(Wrappers.lambdaQuery().eq(AddressEntity::getId, addressId));
+ }
+ @Override
+ public List listUserAllAddress() {
+ LoginUser loginUser = LoginInterceptor.threadLocal.get();
+ List list = baseMapper.selectList(Wrappers.lambdaQuery().eq(AddressEntity::getUserId, loginUser.getId()));
+ return list.stream().map(obj -> {
+ AddressVO addressVO = new AddressVO();
+ BeanUtils.copyProperties(obj, addressVO);
+ return addressVO;
+ }).collect(Collectors.toList());
+ }
}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/impl/NotifyServiceImpl.java b/nla-user-service/src/main/java/cn/nla/user/service/impl/NotifyServiceImpl.java
new file mode 100644
index 0000000..a80e75a
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/service/impl/NotifyServiceImpl.java
@@ -0,0 +1,75 @@
+package cn.nla.user.service.impl;
+
+import cn.nla.common.constant.CacheKey;
+import cn.nla.common.enums.BizCodeEnum;
+import cn.nla.common.enums.SendCodeEnum;
+import cn.nla.common.util.CheckUtil;
+import cn.nla.common.util.CommonUtil;
+import cn.nla.common.util.JsonData;
+import cn.nla.user.service.MailService;
+import cn.nla.user.service.NotifyService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
+@Service
+@Slf4j
+public class NotifyServiceImpl implements NotifyService {
+
+ /**
+ * 图形验证码有效期10分钟
+ */
+ private static final long CAPTCHA_CODE_EXPIRED = 60 * 1000 * 10;
+ @Resource
+ private MailService mailService;
+
+ @Autowired
+ private StringRedisTemplate redisTemplate;
+
+ public JsonData sendCode(SendCodeEnum sendCodeEnum, String to) {
+ String cacheKey = String.format(CacheKey.CHECK_CODE_KEY, sendCodeEnum.name(), to);
+ String cacheValue = redisTemplate.opsForValue().get(cacheKey);
+ //如果不为空,则判断是否60秒内重复发送
+ if (StringUtils.isNotBlank(cacheValue)) {
+ long ttl = Long.parseLong(cacheValue.split("_")[1]);
+ //当前时间戳-验证码发送时间戳,如果小于60秒,则不给重复发送
+ if (System.currentTimeMillis() - ttl < 1000 * 60) {
+ log.info("重复发送验证码,时间间隔:{} 秒", (System.currentTimeMillis() - ttl) / 1000);
+ return JsonData.buildResult(BizCodeEnum.CODE_LIMITED);
+ }
+ }
+ //拼接验证码: 验证码+时间戳: 2322_324243232424324
+ String code = CommonUtil.getRandomCode(6);
+ String value = code + "_" + System.currentTimeMillis();
+ redisTemplate.opsForValue().set(cacheKey, value, CAPTCHA_CODE_EXPIRED, TimeUnit.MILLISECONDS);
+ if (CheckUtil.isEmail(to)) {
+ //邮箱验证码
+ mailService.sendMail(to, "电商验证码", code);
+ log.info("发送邮箱验证码[{}]成功!", code);
+ return JsonData.buildSuccess();
+ } else if (CheckUtil.isPhone(to)) {
+ //短信验证码
+ log.info("要发送短信验证码[{}]", code);
+ }
+ return JsonData.buildResult(BizCodeEnum.CODE_TO_ERROR);
+ }
+
+ public boolean checkCode(SendCodeEnum sendCodeEnum, String to, String code) {
+ String cacheKey = String.format(CacheKey.CHECK_CODE_KEY, sendCodeEnum.name(), to);
+ String cacheValue = redisTemplate.opsForValue().get(cacheKey);
+ if (StringUtils.isNotBlank(cacheValue)) {
+ String cacheCode = cacheValue.split("_")[0];
+ if (cacheCode.equals(code)) {
+ //删除验证码
+ redisTemplate.delete(cacheKey);
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java b/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java
index ca22763..58d0816 100644
--- a/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java
+++ b/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java
@@ -1,10 +1,30 @@
package cn.nla.user.service.impl;
-import cn.nla.user.model.UserDO;
+import cn.nla.common.enums.BizCodeEnum;
+import cn.nla.common.enums.SendCodeEnum;
+import cn.nla.common.interceptor.LoginInterceptor;
+import cn.nla.common.model.LoginUser;
+import cn.nla.common.util.CommonUtil;
+import cn.nla.common.util.JWTUtil;
+import cn.nla.common.util.JsonData;
+import cn.nla.user.model.VO.UserVO;
+import cn.nla.user.model.entity.UserEntity;
import cn.nla.user.mapper.UserMapper;
+import cn.nla.user.model.request.UserLoginRequest;
+import cn.nla.user.service.NotifyService;
import cn.nla.user.service.UserService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.Md5Crypt;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import cn.nla.user.model.request.UserRegisterRequest;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +35,100 @@ import org.springframework.stereotype.Service;
* @since 2024-07-29
*/
@Service
-public class UserServiceImpl extends ServiceImpl implements UserService {
+@Slf4j
+public class UserServiceImpl extends ServiceImpl implements UserService {
+ @Resource
+ private NotifyService notifyService;
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 用户注册
+ * 邮箱验证码验证
+ * 密码加密(TODO)
+ * 账号唯一性检查(TODO)
+ * 插入数据库
+ * 新注册用户福利发放(TODO)
+ */
+ @Override
+ public JsonData register(UserRegisterRequest registerRequest) {
+ boolean checkCode = false;
+ //校验验证码
+ if (StringUtils.isNotBlank(registerRequest.getMail())) {
+ checkCode = notifyService.checkCode(SendCodeEnum.USER_REGISTER, registerRequest.getMail(), registerRequest.getCode());
+ }
+ if (!checkCode) {
+ return JsonData.buildResult(BizCodeEnum.CODE_ERROR);
+ }
+ UserEntity userEntity = new UserEntity();
+ BeanUtils.copyProperties(registerRequest, userEntity);
+ userEntity.setCreateTime(new Date());
+ userEntity.setSlogan("人生需要动态规划,学习需要贪心算法");
+ //设置密码 生成秘钥 盐
+ userEntity.setSecret("$1$" + CommonUtil.getStringNumRandom(8));
+ //密码+盐处理
+ String cryptPwd = Md5Crypt.md5Crypt(registerRequest.getPwd().getBytes(), userEntity.getSecret());
+ userEntity.setPwd(cryptPwd);
+ //账号唯一性检查 794666918@qq.com
+ if (checkUnique(userEntity.getMail())) {
+ int rows = userMapper.insert(userEntity);
+ log.info("rows:{},注册成功:{}", rows, userEntity);
+ //新用户注册成功,初始化信息,发放福利等 TODO
+ userRegisterInitTask(userEntity);
+ return JsonData.buildSuccess();
+ } else {
+ return JsonData.buildResult(BizCodeEnum.ACCOUNT_REPEAT);
+ }
+ }
+
+ @Override
+ public JsonData login(UserLoginRequest loginRequest) {
+ List list = userMapper.selectList(new QueryWrapper().eq("mail", loginRequest.getMail()));
+ if (list != null && list.size() == 1) {
+ UserEntity userEntity = list.get(0);
+ String cryptPwd = Md5Crypt.md5Crypt(loginRequest.getPwd().getBytes(), userEntity.getSecret());
+ if (cryptPwd.equals(userEntity.getPwd())) {
+ //生成token令牌
+ LoginUser loginUser = new LoginUser();
+ BeanUtils.copyProperties(userEntity, loginUser);
+ String accessToken = JWTUtil.geneJsonWebToken(loginUser);
+ return JsonData.buildSuccess(accessToken);
+ }
+ //密码错误
+ return JsonData.buildResult(BizCodeEnum.ACCOUNT_PWD_ERROR);
+ } else {
+ //未注册
+ return JsonData.buildResult(BizCodeEnum.ACCOUNT_UNREGISTER);
+ }
+ }
+
+ @Override
+ public UserVO findUserDetail() {
+ LoginUser loginUser = LoginInterceptor.threadLocal.get();
+ UserEntity user = userMapper.selectOne(new QueryWrapper().eq("id", loginUser.getId()));
+ UserVO userVO = new UserVO();
+ BeanUtils.copyProperties(user, userVO);
+ return userVO;
+ }
+
+ /**
+ * 校验用户账号唯一
+ *
+ * @param mail 邮箱地址
+ */
+ private boolean checkUnique(String mail) {
+ return userMapper.selectList(
+ new QueryWrapper().eq("mail", mail))
+ .size() <= 0;
+ }
+
+ /**
+ * 用户注册,初始化福利信息 TODO
+ *
+ * @param userEntity 用户对象信息
+ */
+ private void userRegisterInitTask(UserEntity userEntity) {
+ log.info("初始化福利信息 TODO... {}", userEntity);
+ }
}
diff --git a/nla-user-service/src/main/resources/mapper/AddressMapper.xml b/nla-user-service/src/main/resources/mapper/AddressMapper.xml
index 762d483..4a391f3 100644
--- a/nla-user-service/src/main/resources/mapper/AddressMapper.xml
+++ b/nla-user-service/src/main/resources/mapper/AddressMapper.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/nla-user-service/src/main/resources/mapper/UserMapper.xml b/nla-user-service/src/main/resources/mapper/UserMapper.xml
index 2721fad..eee939c 100644
--- a/nla-user-service/src/main/resources/mapper/UserMapper.xml
+++ b/nla-user-service/src/main/resources/mapper/UserMapper.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/nla-user-service/src/test/java/AddressTest.java b/nla-user-service/src/test/java/AddressTest.java
index 9447fce..2260f1d 100644
--- a/nla-user-service/src/test/java/AddressTest.java
+++ b/nla-user-service/src/test/java/AddressTest.java
@@ -1,5 +1,5 @@
import cn.nla.user.UserApplication;
-import cn.nla.user.model.AddressDO;
+import cn.nla.user.model.entity.AddressEntity;
import cn.nla.user.service.AddressService;
import lombok.extern.slf4j.Slf4j;
import net.minidev.json.JSONArray;
@@ -20,7 +20,7 @@ public class AddressTest {
private AddressService addressService;
@Test
public void testAddressDetail() {
- List list = addressService.list();
+ List list = addressService.list();
log.info(JSONArray.toJSONString(list));
}
}