优化用户端登录代码
This commit is contained in:
parent
864b54951a
commit
8fed83cd15
|
|
@ -2,8 +2,12 @@ package com.mdd.front.controller;
|
|||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||
import com.mdd.common.core.AjaxResult;
|
||||
import com.mdd.common.enums.ClientEnum;
|
||||
import com.mdd.common.util.StringUtils;
|
||||
import com.mdd.front.service.ILoginService;
|
||||
import com.mdd.front.validate.UserRegisterValidate;
|
||||
import com.mdd.front.validate.login.RegisterValidate;
|
||||
import com.mdd.front.validate.login.ForgetPwdValidate;
|
||||
import com.mdd.front.validate.login.OaLoginValidate;
|
||||
import com.mdd.front.vo.LoginCodesVo;
|
||||
import com.mdd.front.vo.LoginTokenVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -12,8 +16,6 @@ import org.springframework.web.bind.annotation.*;
|
|||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -32,12 +34,12 @@ public class LoginController {
|
|||
* 注册账号
|
||||
*
|
||||
* @author fzr
|
||||
* @param userRegisterValidate 参数
|
||||
* @param registerValidate 参数
|
||||
* @return AjaxResult<Object>
|
||||
*/
|
||||
@PostMapping("/register")
|
||||
public AjaxResult<Object> register(@Validated @RequestBody UserRegisterValidate userRegisterValidate) {
|
||||
iLoginService.register(userRegisterValidate);
|
||||
public AjaxResult<Object> register(@Validated @RequestBody RegisterValidate registerValidate) {
|
||||
iLoginService.register(registerValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -52,9 +54,14 @@ public class LoginController {
|
|||
public AjaxResult<LoginTokenVo> check(@RequestBody Map<String, String> params) {
|
||||
Assert.notNull(params.get("scene"), "scene参数缺失!");
|
||||
LoginTokenVo vo = new LoginTokenVo();
|
||||
|
||||
switch (params.get("scene")) {
|
||||
case "mnp":
|
||||
vo = iLoginService.mnpLogin(params);
|
||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
||||
Assert.notNull(params.get("client"), "client参数缺失!");
|
||||
String code = params.get("code");
|
||||
Integer client = Integer.parseInt(params.get("client"));
|
||||
vo = iLoginService.mnpLogin(code, client);
|
||||
break;
|
||||
case "mobile":
|
||||
vo = iLoginService.mobileLogin(params);
|
||||
|
|
@ -63,6 +70,7 @@ public class LoginController {
|
|||
vo = iLoginService.accountLogin(params);
|
||||
break;
|
||||
}
|
||||
|
||||
return AjaxResult.success(vo);
|
||||
}
|
||||
|
||||
|
|
@ -70,12 +78,16 @@ public class LoginController {
|
|||
* 公众号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param oaLoginValidate 参数
|
||||
* @return AjaxResult<LoginTokenVo>
|
||||
*/
|
||||
@GetMapping("/oaLogin")
|
||||
public AjaxResult<LoginTokenVo> oaLogin(@RequestParam Map<String, String> params) {
|
||||
LoginTokenVo vo = iLoginService.officeLogin(params);
|
||||
@PostMapping("/oaLogin")
|
||||
public AjaxResult<LoginTokenVo> oaLogin(@Validated @RequestBody OaLoginValidate oaLoginValidate) {
|
||||
String code = oaLoginValidate.getCode();
|
||||
Integer client = oaLoginValidate.getClient();
|
||||
client = StringUtils.isNotNull(client) ? client : ClientEnum.OA.getCode();
|
||||
|
||||
LoginTokenVo vo = iLoginService.officeLogin(code, client);
|
||||
return AjaxResult.success(vo);
|
||||
}
|
||||
|
||||
|
|
@ -99,15 +111,22 @@ public class LoginController {
|
|||
* 忘记密码
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param forgetPwdValidate 参数
|
||||
* @return AjaxResult<Object>
|
||||
*/
|
||||
@PostMapping("/forgotPassword")
|
||||
public AjaxResult<Object> forgotPassword(@RequestBody Map<String, String> params) {
|
||||
iLoginService.forgotPassword(params);
|
||||
public AjaxResult<Object> forgotPassword(@Validated @RequestBody ForgetPwdValidate forgetPwdValidate) {
|
||||
iLoginService.forgotPassword(forgetPwdValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫码链接
|
||||
*
|
||||
* @author fzr
|
||||
* @param session session
|
||||
* @return AjaxResult<Map<String, String>>
|
||||
*/
|
||||
@GetMapping("/getScanCode")
|
||||
public AjaxResult<Map<String, String>> getScanCode(HttpSession session) {
|
||||
String qrcodeUrl = iLoginService.getScanCode(session);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.mdd.front.service;
|
||||
|
||||
import com.mdd.front.validate.UserRegisterValidate;
|
||||
import com.mdd.front.validate.login.RegisterValidate;
|
||||
import com.mdd.front.validate.login.ForgetPwdValidate;
|
||||
import com.mdd.front.vo.LoginTokenVo;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
|
@ -15,9 +16,9 @@ public interface ILoginService {
|
|||
* 账号注册
|
||||
*
|
||||
* @author fzr
|
||||
* @param userRegisterValidate 参数
|
||||
* @param registerValidate 参数
|
||||
*/
|
||||
void register(UserRegisterValidate userRegisterValidate);
|
||||
void register(RegisterValidate registerValidate);
|
||||
|
||||
/**
|
||||
* 账号登录
|
||||
|
|
@ -41,19 +42,21 @@ public interface ILoginService {
|
|||
* 微信登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param code 微信code
|
||||
* @param client 来源客户端
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
LoginTokenVo mnpLogin(Map<String, String> params);
|
||||
LoginTokenVo mnpLogin(String code, Integer client);
|
||||
|
||||
/**
|
||||
* 公众号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param code 参数
|
||||
* @param client 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
LoginTokenVo officeLogin(Map<String, String> params);
|
||||
LoginTokenVo officeLogin(String code, Integer client);
|
||||
|
||||
/**
|
||||
* 公众号跳转url
|
||||
|
|
@ -68,9 +71,9 @@ public interface ILoginService {
|
|||
* 忘记密码
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param forgetPwdValidate 参数
|
||||
*/
|
||||
void forgotPassword(Map<String, String> params);
|
||||
void forgotPassword(ForgetPwdValidate forgetPwdValidate);
|
||||
|
||||
String getScanCode(HttpSession session);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@ import com.mdd.common.mapper.user.UserMapper;
|
|||
import com.mdd.common.util.*;
|
||||
import com.mdd.front.config.FrontConfig;
|
||||
import com.mdd.front.service.ILoginService;
|
||||
import com.mdd.front.validate.UserRegisterValidate;
|
||||
import com.mdd.front.validate.login.RegisterValidate;
|
||||
import com.mdd.front.validate.login.ForgetPwdValidate;
|
||||
import com.mdd.front.vo.LoginTokenVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
|
|
@ -49,13 +50,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
* 注册账号
|
||||
*
|
||||
* @author fzr
|
||||
* @param userRegisterValidate 参数
|
||||
* @param registerValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void register(UserRegisterValidate userRegisterValidate) {
|
||||
public void register(RegisterValidate registerValidate) {
|
||||
User model = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,sn,username")
|
||||
.eq("username", userRegisterValidate.getUsername())
|
||||
.eq("username", registerValidate.getUsername())
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
|
|
@ -63,16 +64,16 @@ public class LoginServiceImpl implements ILoginService {
|
|||
|
||||
Integer sn = this.randMakeSn();
|
||||
String salt = ToolsUtils.randomString(5);
|
||||
String pwd = ToolsUtils.makeMd5(userRegisterValidate.getPassword()+salt);
|
||||
String pwd = ToolsUtils.makeMd5(registerValidate.getPassword()+salt);
|
||||
|
||||
User user = new User();
|
||||
user.setSn(sn);
|
||||
user.setNickname("用户"+sn);
|
||||
user.setUsername(userRegisterValidate.getUsername());
|
||||
user.setUsername(registerValidate.getUsername());
|
||||
user.setPassword(pwd);
|
||||
user.setSalt(salt);
|
||||
user.setAvatar("/api/static/default_avatar.png");
|
||||
user.setChannel(userRegisterValidate.getClient());
|
||||
user.setChannel(registerValidate.getClient());
|
||||
user.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.insert(user);
|
||||
|
|
@ -157,19 +158,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
* 微信小程序登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param code 微信code
|
||||
* @param client 来源客户端
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public LoginTokenVo mnpLogin(Map<String, String> params) {
|
||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
||||
String code = params.get("code");
|
||||
String avatarUrl = params.getOrDefault("avatarUrl", "/api/static/default_avatar.png");
|
||||
String nickName = params.getOrDefault("nickName", "微信用户");
|
||||
String gender = params.getOrDefault("gender", "0");
|
||||
Integer client = Integer.parseInt(params.getOrDefault("client", "1"));
|
||||
|
||||
public LoginTokenVo mnpLogin(String code, Integer client) {
|
||||
try {
|
||||
WxMaService wxMaService = WeChatUtils.mnp();
|
||||
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
||||
|
|
@ -196,10 +191,10 @@ public class LoginServiceImpl implements ILoginService {
|
|||
Integer sn = this.randMakeSn();
|
||||
User model = new User();
|
||||
model.setSn(sn);
|
||||
model.setAvatar(avatarUrl);
|
||||
model.setNickname(nickName.equals("") ? "用户"+sn : nickName);
|
||||
model.setAvatar("/api/static/default_avatar.png");
|
||||
model.setNickname("用户"+sn);
|
||||
model.setUsername("u"+sn);
|
||||
model.setSex(Integer.parseInt(gender));
|
||||
model.setSex(0);
|
||||
model.setChannel(client);
|
||||
model.setLastLoginIp(IpUtils.getHostIp());
|
||||
model.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
|
|
@ -227,13 +222,6 @@ public class LoginServiceImpl implements ILoginService {
|
|||
userAuthMapper.updateById(userAuth);
|
||||
}
|
||||
|
||||
// 更新用户信息
|
||||
if (StringUtils.isEmpty(user.getAvatar()) && StringUtils.isNotEmpty(avatarUrl)) {
|
||||
user.setAvatar(avatarUrl);
|
||||
user.setNickname(nickName);
|
||||
user.setSex(Integer.parseInt(gender));
|
||||
}
|
||||
|
||||
// 更新登录信息
|
||||
user.setLastLoginIp(IpUtils.getHostIp());
|
||||
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
|
|
@ -254,10 +242,7 @@ public class LoginServiceImpl implements ILoginService {
|
|||
* @return LoginTokenVo
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo officeLogin(Map<String, String> params) {
|
||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
||||
String code = params.get("code");
|
||||
|
||||
public LoginTokenVo officeLogin(String code, Integer client) {
|
||||
try {
|
||||
WxMpService wxMpService = WeChatUtils.official();
|
||||
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
||||
|
|
@ -286,8 +271,8 @@ public class LoginServiceImpl implements ILoginService {
|
|||
model.setSn(sn);
|
||||
model.setAvatar("/api/static/default_avatar.png");
|
||||
model.setNickname("用户" + sn);
|
||||
model.setUsername("u"+sn);
|
||||
model.setChannel(ClientEnum.OA.getCode());
|
||||
model.setUsername("u" + sn);
|
||||
model.setChannel(client);
|
||||
model.setSex(0);
|
||||
model.setLastLoginIp(IpUtils.getHostIp());
|
||||
model.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
|
|
@ -345,16 +330,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
* 忘记密码
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @param forgetPwdValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void forgotPassword(Map<String, String> params) {
|
||||
Assert.notNull(params.get("mobile"), "mobile参数缺失!");
|
||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
||||
Assert.notNull(params.get("password"), "password参数缺失!");
|
||||
String mobile = params.get("mobile");
|
||||
String code = params.get("code");
|
||||
String password = params.get("password");
|
||||
public void forgotPassword(ForgetPwdValidate forgetPwdValidate) {
|
||||
String mobile = forgetPwdValidate.getMobile();
|
||||
String code = forgetPwdValidate.getCode();
|
||||
String password = forgetPwdValidate.getPassword();
|
||||
|
||||
// 校验验证码
|
||||
int typeCode = NoticeEnum.SMS_FORGOT_PASSWORD_CODE.getCode();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.mdd.front.validate.login;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 忘记密码参数
|
||||
*/
|
||||
@Data
|
||||
public class ForgetPwdValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotNull(message = "mobile参数缺失")
|
||||
private String mobile;
|
||||
|
||||
@NotNull(message = "code参数缺失")
|
||||
private String code;
|
||||
|
||||
@NotNull(message = "password参数缺失")
|
||||
private String password;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.mdd.front.validate.login;
|
||||
|
||||
import com.mdd.common.validator.annotation.IntegerContains;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 公众号登录参数
|
||||
*/
|
||||
@Data
|
||||
public class OaLoginValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotNull(message = "code参数缺失")
|
||||
private String code;
|
||||
|
||||
@IntegerContains(values = {1, 2, 3, 4, 5, 6}, message = "client参数值不符合")
|
||||
private Integer client;
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.mdd.front.validate;
|
||||
package com.mdd.front.validate.login;
|
||||
|
||||
import com.mdd.common.validator.annotation.IntegerContains;
|
||||
import lombok.Data;
|
||||
|
|
@ -13,7 +13,7 @@ import java.io.Serializable;
|
|||
* 注册参数类
|
||||
*/
|
||||
@Data
|
||||
public class UserRegisterValidate implements Serializable {
|
||||
public class RegisterValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
Loading…
Reference in New Issue