Przeglądaj źródła

add 小程序登录注册

he2802 3 lat temu
rodzic
commit
88c53282f4

+ 21 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/LoginController.java

@@ -2,7 +2,10 @@ package com.zhongzheng.controller.user;
 
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.user.bo.UserAppAccountLoginBo;
+import com.zhongzheng.modules.user.bo.UserAppForgetBo;
 import com.zhongzheng.modules.user.bo.UserAppRegisterBo;
+import com.zhongzheng.modules.user.bo.UserAppSmsLoginBo;
 import com.zhongzheng.modules.user.service.IUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -13,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * 客户端用户Controller
  *
@@ -38,7 +43,21 @@ public class LoginController extends BaseController {
 
     @ApiOperation("小程序忘记密码")
     @PostMapping("/register_forget")
-    public AjaxResult<Void> register_forget(@RequestBody UserAppRegisterBo bo) {
-        return toAjax(iUserService.registerUser(bo) ? 1 : 0);
+    public AjaxResult<Void> register_forget(@RequestBody UserAppForgetBo bo) {
+        return toAjax(iUserService.forgetUser(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("短信登录")
+    @PostMapping("/sms_login")
+    public AjaxResult sms_login(@RequestBody UserAppSmsLoginBo bo) {
+        Map<String,Object> map = iUserService.smsLogin(bo);
+        return AjaxResult.success(map);
+    }
+
+    @ApiOperation("账号登录")
+    @PostMapping("/account_login")
+    public AjaxResult account_login(@RequestBody UserAppAccountLoginBo bo) {
+        Map<String,Object> map = iUserService.accountLogin(bo);
+        return AjaxResult.success(map);
     }
 }

+ 3 - 3
zhongzheng-common/src/main/java/com/zhongzheng/common/constant/Constants.java

@@ -96,9 +96,9 @@ public class Constants
      */
     public static final String WX_TOKEN_PREFIX = "WX ";
 
-    public static final String REGISTER = "REGISTER-";
-    public static final String FORGET = "FORGET-";
-    public static final String LOGIN = "LOGIN-";
+    public static final String REGISTER_SMS = "REGISTER-";
+    public static final String FORGET_SMS = "FORGET-";
+    public static final String LOGIN_SMS = "LOGIN-";
 
     //默认头像
     public static final String DEFAULT_AVATAR = "oss/images/avatar/20210623/1624414559368_44562477.png";

+ 86 - 2
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -10,7 +10,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
 import com.zhongzheng.common.constant.Constants;
+import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.enums.UserStatus;
+import com.zhongzheng.common.exception.BaseException;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.*;
 import com.zhongzheng.common.utils.ip.IpUtils;
@@ -65,7 +68,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Autowired
     private CollectNoteMapper collectNoteMapper;
 
-
+    @Autowired
+    private WxTokenService wxTokenService;
 
     @Autowired
     private IUserService userService;
@@ -386,7 +390,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if(bo.getPwd()==null){
             throw new CustomException("密码不能为空");
         }
-        String key = Constants.REGISTER + bo.getTel();
+        String key = Constants.REGISTER_SMS + bo.getTel();
         String code =  redisCache.getCacheObject(key);
         if(code==null){
             throw new CustomException("验证码错误");
@@ -421,6 +425,86 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return true;
     }
 
+    @Override
+    public Boolean forgetUser(UserAppForgetBo bo) {
+        if(bo.getTel()==null){
+            throw new CustomException("手机号不能为空");
+        }
+        if(bo.getPwd()==null){
+            throw new CustomException("密码不能为空");
+        }
+        String key = Constants.FORGET_SMS + bo.getTel();
+        String code =  redisCache.getCacheObject(key);
+        if(code==null){
+            throw new CustomException("验证码错误");
+        }
+        if(!code.equals(bo.getCode())){
+            throw new CustomException("验证码错误");
+        }
+        User user = getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getTelphone,bo.getTel()).last("limit 1"));
+        if(Validator.isEmpty(user)){
+            throw new CustomException("该手机号未注册");
+        }
+        user.setPassword(SecurityUtils.encryptPassword(bo.getPwd()));
+        user.setUpdateTime(DateUtils.getNowTime());
+        return userService.updateById(user);
+    }
+
+    @Override
+    public  Map<String,Object> smsLogin(UserAppSmsLoginBo bo) {
+        if(bo.getTel()==null){
+            throw new CustomException("手机号不能为空");
+        }
+        String key = Constants.LOGIN_SMS + bo.getTel();
+        String code =  redisCache.getCacheObject(key);
+        if(code==null){
+            throw new CustomException("验证码错误");
+        }
+        if(!code.equals(bo.getCode())){
+            throw new CustomException("验证码错误");
+        }
+        User user = getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getTelphone,bo.getTel()).last("limit 1"));
+        if(Validator.isEmpty(user)){
+            throw new CustomException("该手机号未注册");
+        }
+        ClientLoginUser loginUser = new ClientLoginUser();
+        loginUser.setUser(user);
+        Map<String,Object> map = new HashMap<>();
+        map.put(Constants.TOKEN,wxTokenService.createToken(loginUser));
+        map.put("user_account",user.getUserAccount());
+        map.put("full_info",Validator.isEmpty(user.getIdCard())?false:true); //是否完善身份信息
+        return map;
+    }
+
+    @Override
+    public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
+        if(Validator.isEmpty(bo.getAccount())){
+            throw new CustomException("账号不能为空");
+        }
+        User user = getOne(new LambdaQueryWrapper<User>().eq(User::getTelphone,bo.getAccount())
+                        .or().eq(User::getIdCard, bo.getAccount()));
+        if(Validator.isEmpty(user)){
+            throw new CustomException("该账号不存在");
+        }
+        else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
+        {
+            throw new BaseException("对不起,您的账号:已停用");
+        }
+        if (!SecurityUtils.matchesPassword(bo.getPwd(),user.getPassword() ))
+        {
+            throw new BaseException("密码错误");
+        }
+        ClientLoginUser loginUser = new ClientLoginUser();
+        loginUser.setUser(user);
+        Map<String,Object> map = new HashMap<>();
+        map.put(Constants.TOKEN,wxTokenService.createToken(loginUser));
+        map.put("user_account",user.getUserAccount());
+        map.put("full_info",Validator.isEmpty(user.getIdCard())?false:true); //是否完善身份信息
+        return map;
+    }
+
     /**
      * 获取当前月第一天
      * @param month

+ 3 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/impl/AliSmsServiceImpl.java

@@ -79,7 +79,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
             throw new CustomException("该手机号已注册");
         }
         String code = ToolsUtils.getSmsCode();
-        String key = Constants.REGISTER + tel;
+        String key = Constants.REGISTER_SMS + tel;
         redisCache.setCacheObject(key,code,5, TimeUnit.MINUTES);//5分钟
         try{
             Map<String,Object> param = new HashMap<>();
@@ -112,7 +112,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
             throw new CustomException("该手机号未注册");
         }
         String code = ToolsUtils.getSmsCode();
-        String key = Constants.FORGET + tel;
+        String key = Constants.FORGET_SMS + tel;
         redisCache.setCacheObject(key,code,5, TimeUnit.MINUTES);//5分钟
         try{
             Map<String,Object> param = new HashMap<>();
@@ -144,7 +144,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
             throw new CustomException("该手机号未注册");
         }
         String code = ToolsUtils.getSmsCode();
-        String key = Constants.LOGIN + tel;
+        String key = Constants.LOGIN_SMS + tel;
         redisCache.setCacheObject(key,code,5, TimeUnit.MINUTES);//5分钟
         try{
             Map<String,Object> param = new HashMap<>();

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserAppAccountLoginBo.java

@@ -0,0 +1,26 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * 客户端用户编辑对象 user
+ *
+ * @author ruoyi
+ * @date 2021-06-08
+ */
+@Data
+@ApiModel("客户端用户账号登录对象")
+public class UserAppAccountLoginBo {
+    @ApiModelProperty("手机号/身份证")
+    @NotNull(message = "账号不能为空")
+    private String account;
+    @ApiModelProperty("密码")
+    @NotNull(message = "密码不能为空")
+    private String pwd;
+
+}

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserAppSmsLoginBo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 客户端用户编辑对象 user
+ *
+ * @author ruoyi
+ * @date 2021-06-08
+ */
+@Data
+@ApiModel("客户端用户短信登录对象")
+public class UserAppSmsLoginBo {
+    @ApiModelProperty("手机号")
+    private String tel;
+    @ApiModelProperty("验证码")
+    private String code;
+
+}

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户Service接口
@@ -75,4 +76,10 @@ public interface IUserService extends IService<User> {
     Integer getLookNum(Long userId);
 
 	Boolean registerUser(UserAppRegisterBo bo);
+
+	Boolean forgetUser(UserAppForgetBo bo);
+
+	Map<String,Object> smsLogin(UserAppSmsLoginBo bo);
+
+	Map<String,Object> accountLogin(UserAppAccountLoginBo bo);
 }

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsCourseMapper.xml

@@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN major m ON c.major_id = m.id
         LEFT JOIN course_subject cs ON cs.id = c.subject_id
         WHERE
-        gc.goods_id = #{goodsId}
+        gc.goods_id = #{goodsId} AND c.`status` = 1
 
     </select>
 </mapper>