From 528cc3c8aaf586b631b46b186eebf4023bc7956b Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 16 Sep 2021 18:52:57 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-mall

---
 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java                       |   18 ++++
 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java                     |   35 ++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java         |    9 ++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java    |   36 +++++++++
 src/main/java/cc/mrbird/febs/mall/conversion/MallMemberConversion.java       |   18 ++++
 src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java                 |   19 ++++
 src/main/java/cc/mrbird/febs/mall/dto/ForgetPwdDto.java                      |   29 +++++++
 src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java         |    6 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   40 ++++++++++
 9 files changed, 210 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java b/src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java
new file mode 100644
index 0000000..08cdb4a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.common.utils;
+
+import cc.mrbird.febs.mall.entity.MallMember;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author xxx
+ * @date 2020-08-24
+ **/
+public class LoginUserUtil {
+
+    public static MallMember getLoginUser() {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+        return (MallMember) request.getSession().getAttribute("member");
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java
index 3dc024f..843b622 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.mall.controller;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.ForgetPwdDto;
 import cc.mrbird.febs.mall.dto.LoginDto;
 import cc.mrbird.febs.mall.dto.RegisterDto;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
@@ -36,9 +37,17 @@
         return memberService.register(registerDto);
     }
 
+
     @ApiOperation(value = "账号密码登录接口", notes = "账号密码登录接口")
     @PostMapping(value = "/toLogin")
     public FebsResponse login(@RequestBody LoginDto loginDto) {
         return memberService.toLogin(loginDto);
     }
+
+
+    @ApiOperation(value = "忘记/修改密码", notes = "忘记/修改密码")
+    @PostMapping(value = "/forgetPwd")
+    public FebsResponse forgetPwd(@RequestBody ForgetPwdDto forgetPwdDto) {
+        return memberService.forgetPwd(forgetPwdDto);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 0021335..fda16b8 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -1,8 +1,44 @@
 package cc.mrbird.febs.mall.controller;
 
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
+import cc.mrbird.febs.mall.vo.MallMemberVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 /**
  * @author wzy
  * @date 2021-09-16
  **/
+@Slf4j
+@RestController
+@RequestMapping(value = "/api/member")
+@RequiredArgsConstructor
+@Api(value = "ApiMallMemberController", tags = "商城用户接口类")
 public class ApiMallMemberController {
+
+    private final IApiMallMemberService memberService;
+
+    @ApiOperation(value = "获取商城用户信息", notes = "获取商城用户信息")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = MallMemberVo.class)
+    })
+    @GetMapping(value = "/findMemberInfo")
+    public FebsResponse findMemberInfo() {
+        return memberService.findMemberInfo();
+    }
+
+    @ApiOperation(value = "推出登录", notes = "推出登录")
+    @PostMapping(value = "/logout")
+    public FebsResponse logout() {
+        return memberService.logout();
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallMemberConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallMemberConversion.java
new file mode 100644
index 0000000..37a27f6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallMemberConversion.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.vo.MallMemberVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author wzy
+ * @date 2021-09-16
+ **/
+@Mapper
+public abstract class MallMemberConversion {
+    public static final MallMemberConversion INSTANCE = Mappers.getMapper(MallMemberConversion.class);
+
+    public abstract MallMemberVo entityToVo(MallMember mallMember);
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ForgetPwdDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ForgetPwdDto.java
new file mode 100644
index 0000000..2e402c8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ForgetPwdDto.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author wzy
+ * @date 2021-09-16
+ **/
+@Data
+@ApiModel(value = "ForgetPwdDto", description = "忘记/修改密码参数接收类")
+public class ForgetPwdDto {
+
+    @NotBlank(message = "账号不能为空")
+    @ApiModelProperty(value = "账号", example = "15773001234")
+    private String account;
+
+    @NotBlank(message = "密码不能为空")
+    @ApiModelProperty(value = "新密码", example = "123456")
+    private String password;
+
+    @NotBlank(message = "验证码不能为空")
+    @ApiModelProperty(value = "验证码", example = "123456")
+    private String code;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
index 41188de..b01bd14 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -15,22 +15,54 @@
 @TableName("mall_member")
 public class MallMember extends BaseEntity {
 
+    /**
+     * 姓名
+     */
     private String name;
 
+    /**
+     * 手机号
+     */
     private String phone;
 
+    /**
+     * 邮箱
+     */
     private String email;
 
+    /**
+     * 密码
+     */
     private String password;
 
+    /**
+     * 头像
+     */
+    private String avatar;
+
+    /**
+     * 性别
+     */
     private String sex;
 
+    /**
+     * 邀请码
+     */
     private String inviteId;
 
+    /**
+     * 父级邀请码
+     */
     private String referrerId;
 
+    /**
+     * 邀请码链
+     */
     private String referrerIds;
 
+    /**
+     * 代理级别
+     */
     private String level;
 
     /**
@@ -46,6 +78,9 @@
      */
     public static final Integer ACCOUNT_STATUS_DISABLED = 2;
 
+    /**
+     * 账号类型
+     */
     private Integer accountType;
 
     /**
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
index f0d3815..c1e43b2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.mall.service;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.ForgetPwdDto;
 import cc.mrbird.febs.mall.dto.LoginDto;
 import cc.mrbird.febs.mall.dto.RegisterDto;
 import cc.mrbird.febs.mall.entity.MallMember;
@@ -11,4 +12,9 @@
 
     FebsResponse toLogin(LoginDto loginDto);
 
+    FebsResponse forgetPwd(ForgetPwdDto forgetPwdDto);
+
+    FebsResponse logout();
+
+    FebsResponse findMemberInfo();
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 8b3273e..0483305 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -3,14 +3,18 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
+import cc.mrbird.febs.mall.conversion.MallMemberConversion;
+import cc.mrbird.febs.mall.dto.ForgetPwdDto;
 import cc.mrbird.febs.mall.dto.LoginDto;
 import cc.mrbird.febs.mall.dto.RegisterDto;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.service.ICommonService;
+import cc.mrbird.febs.mall.vo.MallMemberVo;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -152,4 +156,40 @@
         RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
         return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
     }
+
+    @Override
+    public FebsResponse forgetPwd(ForgetPwdDto forgetPwdDto) {
+        MallMember mallMember = this.baseMapper.selectInfoByAccount(forgetPwdDto.getAccount());
+        if (mallMember == null) {
+            throw new FebsException("账号不存在");
+        }
+
+        boolean b = commonService.verifyCode(forgetPwdDto.getAccount(), forgetPwdDto.getCode());
+        if (!b) {
+            throw new FebsException("验证码错误");
+        }
+
+        String pwd = SecureUtil.md5(forgetPwdDto.getPassword());
+        mallMember.setPassword(pwd);
+
+        this.baseMapper.updateById(mallMember);
+        return new FebsResponse().success().message("重置成功");
+    }
+
+    @Override
+    public FebsResponse logout() {
+        Long id = LoginUserUtil.getLoginUser().getId();
+        redisUtils.del(AppContants.APP_LOGIN_PREFIX + id);
+        return new FebsResponse().success().message("退出登录");
+    }
+
+    @Override
+    public FebsResponse findMemberInfo() {
+        Long id = LoginUserUtil.getLoginUser().getId();
+        MallMember mallMember = this.baseMapper.selectById(id);
+
+        MallMemberVo mallMemberVo = MallMemberConversion.INSTANCE.entityToVo(mallMember);
+        return new FebsResponse().data(mallMemberVo);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index 7679f6a..a51685b 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -1,25 +1,43 @@
 package cc.mrbird.febs.mall.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
 
 @Data
+@ApiModel(value = "MallMemberVo", description = "商城用户信息返回类")
 public class MallMemberVo {
 
+    @ApiModelProperty(value = "id")
     private Long id;
 
+    @ApiModelProperty(value = "昵称")
     private String name;
 
+    @ApiModelProperty(value = "手机号")
     private String phone;
 
+    @ApiModelProperty(value = "邮箱")
     private String email;
 
+    @ApiModelProperty(value = "性别")
     private String sex;
 
+    @ApiModelProperty(value = "邀请码")
     private String inviteId;
 
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "余额")
+    private String balance;
+
+    @ApiModelProperty(value = "代理等级")
+    private String levelName;
+
     private String referrerName;
 
     private String level;

--
Gitblit v1.9.1