From 1ad095d298f4211d65273d2197532cc605109b8b Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 15 六月 2023 20:05:10 +0800
Subject: [PATCH] 新增加注册及各种登录、修改密码、忘记密码相关接口
---
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 225 insertions(+), 5 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 1dc073f..04a096f 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -8,6 +8,9 @@
import com.dsh.account.mapper.TStudentMapper;
import com.dsh.account.feignclient.other.ImgConfigClient;
import com.dsh.account.feignclient.other.model.TImgConfig;
+import com.dsh.account.model.AddAppUserVo;
+import com.dsh.account.model.LoginSMSCodeVo;
+import com.dsh.account.model.LoginWeChatVo;
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.entity.TAppUser;
@@ -15,14 +18,15 @@
import com.dsh.account.mapper.TAppUserMapper;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
-import com.dsh.account.util.DateUtil;
-import com.dsh.account.util.ResultUtil;
-import com.dsh.account.util.ToolUtil;
+import com.dsh.account.util.*;
+import com.dsh.account.util.akeylogin.Md5Util;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -41,6 +45,22 @@
@Resource
private ImgConfigClient configClient;
+
+ @Autowired
+ private ALiSendSms aLiSendSms;
+
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @Autowired
+ private GDMapGeocodingUtil gdMapGeocodingUtil;
+
+ @Autowired
+ private JwtTokenUtil jwtTokenUtil;
+
+
+
+
@Resource
private CoursePaymentClient paymentClient;
@@ -114,8 +134,208 @@
@Override
public ResultUtil getSMSCode(Integer type, String phone) throws Exception {
if(type == 2){
-// this.baseMapper.selectOne(new EntityWrapper<>())
+ TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
+ if(null != tAppUser){
+ return ResultUtil.error("账号已存在");
+ }
}
- return null;
+ String numberRandom = UUIDUtil.getNumberRandom(6);
+ aLiSendSms.sendSms(phone, "SMS_161275250", "{\"code\":\"" + numberRandom + "\"}");
+ redisUtil.setStrValue(phone, numberRandom, 300);
+ return ResultUtil.success();
+ }
+
+
+ /**
+ * 注册用户
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public ResultUtil addAppUser(AddAppUserVo addAppUserVo) throws Exception {
+ TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", addAppUserVo.getPhone()).ne("state", 3));
+ if(null != tAppUser){
+ return ResultUtil.error("账号已存在");
+ }
+ String value = redisUtil.getValue(addAppUserVo.getPhone());
+ if(ToolUtil.isEmpty(value) || !value.equals(addAppUserVo.getCode())){
+ return ResultUtil.error("验证码无效");
+ }
+
+ tAppUser = new TAppUser();
+ tAppUser.setPhone(addAppUserVo.getPhone());
+ tAppUser.setPassword(Md5Util.MD5Encode(addAppUserVo.getPassword(), null));
+ tAppUser.setIsVip(0);
+ tAppUser.setState(1);
+ if(ToolUtil.isNotEmpty(addAppUserVo.getLatitude()) && ToolUtil.isNotEmpty(addAppUserVo.getLongitude())){
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(addAppUserVo.getLongitude(), addAppUserVo.getLatitude());
+ if(null != geocode){
+ String province = geocode.get("province");
+ String provinceCode = geocode.get("provinceCode");
+ String city = geocode.get("city");
+ String cityCode = geocode.get("cityCode");
+ tAppUser.setProvince(province);
+ tAppUser.setProvinceCode(provinceCode);
+ tAppUser.setCity(city);
+ tAppUser.setCityCode(cityCode);
+ }
+ }
+ this.baseMapper.insert(tAppUser);
+ return ResultUtil.success();
+ }
+
+
+ /**
+ * 账号密码登录
+ * @param phone
+ * @param password
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public ResultUtil loginPassword(String phone, String password) throws Exception {
+ TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
+ if(null == tAppUser){
+ return ResultUtil.error("请先注册", "");
+ }
+ if(tAppUser.getState() == 2){
+ return ResultUtil.error("您的账号已被冻结", "");
+ }
+ password = Md5Util.MD5Encode(password, null);
+ if(!tAppUser.getPassword().equals(password)){
+ return ResultUtil.error("账号密码错误", "");
+ }
+ String token = getToken(tAppUser);
+ return ResultUtil.success(token);
+ }
+
+
+ /**
+ * 验证码登录
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public ResultUtil loginSMSCode(LoginSMSCodeVo loginSMSCodeVo) throws Exception {
+ String value = redisUtil.getValue(loginSMSCodeVo.getPhone());
+ if(ToolUtil.isEmpty(value) || !value.equals(loginSMSCodeVo.getCode())){
+ return ResultUtil.error("验证码无效");
+ }
+ TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginSMSCodeVo.getPhone()).ne("state", 3));
+ if(null == tAppUser){
+ tAppUser = new TAppUser();
+ tAppUser.setPhone(loginSMSCodeVo.getPhone());
+ tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
+ tAppUser.setIsVip(0);
+ tAppUser.setState(1);
+ if(ToolUtil.isNotEmpty(loginSMSCodeVo.getLatitude()) && ToolUtil.isNotEmpty(loginSMSCodeVo.getLongitude())){
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(loginSMSCodeVo.getLongitude(), loginSMSCodeVo.getLatitude());
+ if(null != geocode){
+ String province = geocode.get("province");
+ String provinceCode = geocode.get("provinceCode");
+ String city = geocode.get("city");
+ String cityCode = geocode.get("cityCode");
+ tAppUser.setProvince(province);
+ tAppUser.setProvinceCode(provinceCode);
+ tAppUser.setCity(city);
+ tAppUser.setCityCode(cityCode);
+ }
+ }
+ this.baseMapper.insert(tAppUser);
+ }
+ if(tAppUser.getState() == 2){
+ return ResultUtil.error("您的账号已被冻结", "");
+ }
+ String token = getToken(tAppUser);
+ return ResultUtil.success(token);
+ }
+
+
+ /**
+ * 微信登录
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public ResultUtil loginWechat(LoginWeChatVo loginWechatVo) throws Exception {
+ TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("openid", loginWechatVo.getOpenId()).ne("state", 3));
+ if(null == tAppUser){
+ tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginWechatVo.getPhone()).ne("state", 3));
+ if(null == tAppUser){
+ tAppUser = new TAppUser();
+ tAppUser.setOpenid(loginWechatVo.getOpenId());
+ tAppUser.setPhone(loginWechatVo.getPhone());
+ tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
+ tAppUser.setIsVip(0);
+ tAppUser.setState(1);
+ if(ToolUtil.isNotEmpty(loginWechatVo.getLatitude()) && ToolUtil.isNotEmpty(loginWechatVo.getLongitude())){
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(loginWechatVo.getLongitude(), loginWechatVo.getLatitude());
+ if(null != geocode){
+ String province = geocode.get("province");
+ String provinceCode = geocode.get("provinceCode");
+ String city = geocode.get("city");
+ String cityCode = geocode.get("cityCode");
+ tAppUser.setProvince(province);
+ tAppUser.setProvinceCode(provinceCode);
+ tAppUser.setCity(city);
+ tAppUser.setCityCode(cityCode);
+ }
+ }
+ this.baseMapper.insert(tAppUser);
+ }
+ }
+ if(tAppUser.getState() == 2){
+ return ResultUtil.error("您的账号已被冻结", "");
+ }
+
+ if(ToolUtil.isNotEmpty(tAppUser.getOpenid())){
+ tAppUser.setOpenid(loginWechatVo.getOpenId());
+ }
+ if(ToolUtil.isNotEmpty(tAppUser.getPhone())){
+ tAppUser.setPhone(loginWechatVo.getPhone());
+ }
+ this.updateById(tAppUser);
+
+ String token = getToken(tAppUser);
+ return ResultUtil.success(token);
+ }
+
+
+ /**
+ * 获取JWT token和存储个人信息
+ * @param appUser
+ * @return
+ */
+ private String getToken(TAppUser appUser){
+ String randomKey = jwtTokenUtil.getRandomKey();
+ String token = jwtTokenUtil.generateToken(appUser.getId().toString(), randomKey);
+ redisUtil.setStrValue(token.substring(token.length() - 32), String.valueOf(appUser.getId()), 7 * 24 * 60 * 60);
+ redisUtil.setStrValue("USER_" + appUser.getPhone(), token.substring(token.length() - 32));
+ redisUtil.setStrValue("USER_" + appUser.getId(), token);
+ return token;
+ }
+
+
+ /**
+ * 修改密码
+ * @param phone
+ * @param code
+ * @param password
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public ResultUtil updatePassword(String phone, String code, String password) throws Exception {
+ String value = redisUtil.getValue(phone);
+ if(ToolUtil.isEmpty(value) || !value.equals(code)){
+ return ResultUtil.error("验证码无效");
+ }
+ TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
+ if(tAppUser.getState() == 2){
+ return ResultUtil.error("您的账号已被冻结", "");
+ }
+ tAppUser.setPassword(Md5Util.MD5Encode(password, null));
+ this.updateById(tAppUser);
+ return ResultUtil.success();
}
}
--
Gitblit v1.7.1