优化: 调整前端登录相关接口 (接口分离)
This commit is contained in:
parent
44975bfd86
commit
1d0d314aee
|
|
@ -19,7 +19,7 @@ public class UserAuth implements Serializable {
|
||||||
private Integer userId; // 用户Id
|
private Integer userId; // 用户Id
|
||||||
private String openid; // Openid
|
private String openid; // Openid
|
||||||
private String unionid; // Unionid
|
private String unionid; // Unionid
|
||||||
private Integer client; // 客户端类型: [1=微信小程序, 2=微信公众号, 3=手机H5;4=电脑PC, 5=苹果APP, 6=安卓APP]
|
private Integer terminal; // 客户端类型: [1=微信小程序, 2=微信公众号, 3=手机H5;4=电脑PC, 5=苹果APP, 6=安卓APP]
|
||||||
private Long createTime; // 创建时间
|
private Long createTime; // 创建时间
|
||||||
private Long updateTime; // 更新时间
|
private Long updateTime; // 更新时间
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,10 @@ public class LikeFrontInterceptor implements HandlerInterceptor {
|
||||||
@NonNull HttpServletResponse response,
|
@NonNull HttpServletResponse response,
|
||||||
@NonNull Object handler) throws Exception {
|
@NonNull Object handler) throws Exception {
|
||||||
|
|
||||||
|
// 记录当前平台
|
||||||
|
String terminal = request.getHeader("terminal");
|
||||||
|
LikeFrontThreadLocal.put("terminal", terminal);
|
||||||
|
|
||||||
// 判断请求接口
|
// 判断请求接口
|
||||||
response.setContentType("application/json;charset=utf-8");
|
response.setContentType("application/json;charset=utf-8");
|
||||||
if (!(handler instanceof HandlerMethod)) {
|
if (!(handler instanceof HandlerMethod)) {
|
||||||
|
|
@ -113,12 +117,14 @@ public class LikeFrontInterceptor implements HandlerInterceptor {
|
||||||
private void checkLogin(Method method) {
|
private void checkLogin(Method method) {
|
||||||
for (int i=0; i<=0; i++) {
|
for (int i=0; i<=0; i++) {
|
||||||
// 免登校验
|
// 免登校验
|
||||||
Object id = StpUtil.getLoginId();
|
|
||||||
if (StringUtils.isNotNull(method) && method.isAnnotationPresent(NotLogin.class)) {
|
if (StringUtils.isNotNull(method) && method.isAnnotationPresent(NotLogin.class)) {
|
||||||
if (StringUtils.isNotNull(id)) {
|
try {
|
||||||
Integer userId = Integer.parseInt(id.toString());
|
Object id = StpUtil.getLoginId();
|
||||||
LikeFrontThreadLocal.put("userId", userId);
|
if (StringUtils.isNotNull(id)) {
|
||||||
}
|
Integer userId = Integer.parseInt(id.toString());
|
||||||
|
LikeFrontThreadLocal.put("userId", userId);
|
||||||
|
}
|
||||||
|
} catch (Exception ignored) {}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -131,6 +137,7 @@ public class LikeFrontInterceptor implements HandlerInterceptor {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录校验
|
// 登录校验
|
||||||
|
Object id = StpUtil.getLoginId();
|
||||||
if (StringUtils.isNull(id)) {
|
if (StringUtils.isNull(id)) {
|
||||||
Integer errCode = HttpEnum.TOKEN_INVALID.getCode();
|
Integer errCode = HttpEnum.TOKEN_INVALID.getCode();
|
||||||
String errMsg = HttpEnum.TOKEN_INVALID.getMsg();
|
String errMsg = HttpEnum.TOKEN_INVALID.getMsg();
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,17 @@ public class LikeFrontThreadLocal {
|
||||||
return Integer.parseInt(adminId.toString());
|
return Integer.parseInt(adminId.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取平台标识
|
||||||
|
*/
|
||||||
|
public static Integer getTerminal() {
|
||||||
|
Object adminId = LikeFrontThreadLocal.get("terminal");
|
||||||
|
if (adminId == null || adminId.toString().equals("")) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Integer.parseInt(adminId.toString());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除本地线程
|
* 删除本地线程
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ import com.mdd.common.core.PageResult;
|
||||||
import com.mdd.common.validator.annotation.IDMust;
|
import com.mdd.common.validator.annotation.IDMust;
|
||||||
import com.mdd.front.LikeFrontThreadLocal;
|
import com.mdd.front.LikeFrontThreadLocal;
|
||||||
import com.mdd.front.service.IArticleService;
|
import com.mdd.front.service.IArticleService;
|
||||||
import com.mdd.front.validate.ArticleCollectValidate;
|
import com.mdd.front.validate.article.ArticleCollectValidate;
|
||||||
import com.mdd.front.validate.ArticleSearchValidate;
|
import com.mdd.front.validate.article.ArticleSearchValidate;
|
||||||
import com.mdd.front.validate.commons.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
import com.mdd.front.vo.article.ArticleCateVo;
|
import com.mdd.front.vo.article.ArticleCateVo;
|
||||||
import com.mdd.front.vo.article.ArticleCollectVo;
|
import com.mdd.front.vo.article.ArticleCollectVo;
|
||||||
import com.mdd.front.vo.article.ArticleDetailVo;
|
import com.mdd.front.vo.article.ArticleDetailVo;
|
||||||
|
|
@ -17,7 +17,6 @@ import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,27 @@
|
||||||
package com.mdd.front.controller;
|
package com.mdd.front.controller;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.mdd.common.aop.NotLogin;
|
import com.mdd.common.aop.NotLogin;
|
||||||
import com.mdd.common.core.AjaxResult;
|
import com.mdd.common.core.AjaxResult;
|
||||||
import com.mdd.common.core.PageResult;
|
import com.mdd.common.core.PageResult;
|
||||||
|
import com.mdd.common.entity.notice.NoticeRecord;
|
||||||
|
import com.mdd.common.enums.NoticeEnum;
|
||||||
|
import com.mdd.common.exception.OperateException;
|
||||||
|
import com.mdd.common.mapper.notice.NoticeRecordMapper;
|
||||||
|
import com.mdd.common.plugin.notice.NoticeDriver;
|
||||||
|
import com.mdd.common.plugin.notice.vo.NoticeSmsVo;
|
||||||
|
import com.mdd.common.util.StringUtils;
|
||||||
|
import com.mdd.common.util.ToolUtils;
|
||||||
import com.mdd.common.validator.annotation.IDMust;
|
import com.mdd.common.validator.annotation.IDMust;
|
||||||
import com.mdd.front.service.IIndexService;
|
import com.mdd.front.service.IIndexService;
|
||||||
import com.mdd.front.validate.commons.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
|
import com.mdd.front.validate.common.SmsValidate;
|
||||||
import com.mdd.front.vo.article.ArticleListedVo;
|
import com.mdd.front.vo.article.ArticleListedVo;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -21,9 +29,12 @@ import java.util.Map;
|
||||||
* 主页管理
|
* 主页管理
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api")
|
@RequestMapping("api/index")
|
||||||
public class IndexController {
|
public class IndexController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
NoticeRecordMapper noticeRecordMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
IIndexService iIndexService;
|
IIndexService iIndexService;
|
||||||
|
|
||||||
|
|
@ -110,4 +121,39 @@ public class IndexController {
|
||||||
return AjaxResult.success(list);
|
return AjaxResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送短信
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @param smsValidate 参数
|
||||||
|
* @return AjaxResult<Object>
|
||||||
|
*/
|
||||||
|
@NotLogin
|
||||||
|
@PostMapping("/sendSms")
|
||||||
|
public AjaxResult<Object> sendSms(@Validated @RequestBody SmsValidate smsValidate) {
|
||||||
|
NoticeRecord noticeRecord = noticeRecordMapper.selectOne(new QueryWrapper<NoticeRecord>()
|
||||||
|
.eq("account", smsValidate.getMobile())
|
||||||
|
.eq("scene", smsValidate.getScene())
|
||||||
|
.eq("status", Arrays.asList(NoticeEnum.STATUS_WAIT, NoticeEnum.STATUS_OK))
|
||||||
|
.orderByDesc("id")
|
||||||
|
.last("limit 1"));
|
||||||
|
|
||||||
|
if (StringUtils.isNotNull(noticeRecord)) {
|
||||||
|
if (noticeRecord.getCreateTime() >= (System.currentTimeMillis() / 1000 - 60)){
|
||||||
|
throw new OperateException("操作频繁,请稍后再试!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NoticeSmsVo params = new NoticeSmsVo()
|
||||||
|
.setScene(smsValidate.getScene())
|
||||||
|
.setMobile(smsValidate.getMobile())
|
||||||
|
.setExpire(900)
|
||||||
|
.setParams(new String[] {
|
||||||
|
"code:" + ToolUtils.randomInt(4)
|
||||||
|
});
|
||||||
|
|
||||||
|
NoticeDriver.handle(params);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,19 @@
|
||||||
package com.mdd.front.controller;
|
package com.mdd.front.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
|
||||||
import com.mdd.common.aop.NotLogin;
|
import com.mdd.common.aop.NotLogin;
|
||||||
import com.mdd.common.core.AjaxResult;
|
import com.mdd.common.core.AjaxResult;
|
||||||
import com.mdd.common.enums.ClientEnum;
|
import com.mdd.front.LikeFrontThreadLocal;
|
||||||
import com.mdd.common.util.StringUtils;
|
|
||||||
import com.mdd.front.service.ILoginService;
|
import com.mdd.front.service.ILoginService;
|
||||||
import com.mdd.front.validate.login.RegisterValidate;
|
import com.mdd.front.validate.login.*;
|
||||||
import com.mdd.front.validate.login.ForgetPwdValidate;
|
import com.mdd.front.vo.login.LoginUrlsVo;
|
||||||
import com.mdd.front.validate.login.OaLoginValidate;
|
import com.mdd.front.vo.login.LoginTokenVo;
|
||||||
import com.mdd.front.validate.login.ScanLoginValidate;
|
|
||||||
import com.mdd.front.vo.LoginUrlsVo;
|
|
||||||
import com.mdd.front.vo.LoginTokenVo;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.util.Map;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录管理
|
* 登录管理
|
||||||
|
|
@ -35,45 +30,67 @@ public class LoginController {
|
||||||
* 注册账号
|
* 注册账号
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param registerValidate 参数
|
* @param valid 注册参数
|
||||||
* @return AjaxResult<Object>
|
* @return AjaxResult<Object>
|
||||||
*/
|
*/
|
||||||
@NotLogin
|
@NotLogin
|
||||||
@PostMapping("/register")
|
@PostMapping("/register")
|
||||||
public AjaxResult<Object> register(@Validated @RequestBody RegisterValidate registerValidate) {
|
public AjaxResult<Object> register(@Validated @RequestBody RegisterValidate valid) {
|
||||||
iLoginService.register(registerValidate);
|
Integer terminal = LikeFrontThreadLocal.getTerminal();
|
||||||
|
String username = valid.getUsername();
|
||||||
|
String password = valid.getPassword();
|
||||||
|
|
||||||
|
iLoginService.register(username, password, terminal);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录验证
|
* 账号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @param valid 登录参数
|
||||||
* @param params 参数
|
|
||||||
* @return AjaxResult<LoginTokenVo>
|
* @return AjaxResult<LoginTokenVo>
|
||||||
*/
|
*/
|
||||||
@NotLogin
|
@NotLogin
|
||||||
@PostMapping("/check")
|
@PostMapping("/accountLogin")
|
||||||
public AjaxResult<LoginTokenVo> check(@RequestBody Map<String, String> params) {
|
public AjaxResult<LoginTokenVo> accountLogin(@Validated @RequestBody LoginPwdValidate valid) {
|
||||||
Assert.notNull(params.get("scene"), "scene参数缺失!");
|
Integer terminal = LikeFrontThreadLocal.getTerminal();
|
||||||
LoginTokenVo vo = new LoginTokenVo();
|
String username = valid.getUsername();
|
||||||
|
String password = valid.getPassword();
|
||||||
|
|
||||||
switch (params.get("scene")) {
|
LoginTokenVo vo = iLoginService.accountLogin(username, password, terminal);
|
||||||
case "mnp":
|
return AjaxResult.success(vo);
|
||||||
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);
|
|
||||||
break;
|
|
||||||
case "account":
|
|
||||||
vo = iLoginService.accountLogin(params);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机登录
|
||||||
|
*
|
||||||
|
* @param valid 登录参数
|
||||||
|
* @return AjaxResult<LoginTokenVo>
|
||||||
|
*/
|
||||||
|
@NotLogin
|
||||||
|
@PostMapping("/mobileLogin")
|
||||||
|
public AjaxResult<LoginTokenVo> mobileLogin(@Validated @RequestBody LoginPhoneValidate valid) {
|
||||||
|
Integer terminal = LikeFrontThreadLocal.getTerminal();
|
||||||
|
String mobile = valid.getMobile();
|
||||||
|
String code = valid.getCode();
|
||||||
|
|
||||||
|
LoginTokenVo vo = iLoginService.mobileLogin(mobile, code, terminal);
|
||||||
|
return AjaxResult.success(vo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信登录
|
||||||
|
*
|
||||||
|
* @param valid 登录参数
|
||||||
|
* @return AjaxResult<LoginTokenVo>
|
||||||
|
*/
|
||||||
|
@NotLogin
|
||||||
|
@PostMapping("/mnpLogin")
|
||||||
|
public AjaxResult<LoginTokenVo> mnpLogin(@Validated @RequestBody LoginCodeValidate valid) {
|
||||||
|
Integer terminal = LikeFrontThreadLocal.getTerminal();
|
||||||
|
String code = valid.getCode();
|
||||||
|
|
||||||
|
LoginTokenVo vo = iLoginService.mnpLogin(code, terminal);
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -81,51 +98,34 @@ public class LoginController {
|
||||||
* 公众号登录
|
* 公众号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param oaLoginValidate 参数
|
* @param valid 登录参数
|
||||||
* @return AjaxResult<LoginTokenVo>
|
* @return AjaxResult<LoginTokenVo>
|
||||||
*/
|
*/
|
||||||
@NotLogin
|
@NotLogin
|
||||||
@PostMapping("/oaLogin")
|
@PostMapping("/oaLogin")
|
||||||
public AjaxResult<LoginTokenVo> oaLogin(@Validated @RequestBody OaLoginValidate oaLoginValidate) {
|
public AjaxResult<LoginTokenVo> oaLogin(@Validated @RequestBody LoginCodeValidate valid) {
|
||||||
String code = oaLoginValidate.getCode();
|
Integer terminal = LikeFrontThreadLocal.getTerminal();
|
||||||
Integer client = oaLoginValidate.getClient();
|
String code = valid.getCode();
|
||||||
client = StringUtils.isNotNull(client) ? client : ClientEnum.OA.getCode();
|
|
||||||
|
|
||||||
LoginTokenVo vo = iLoginService.officeLogin(code, client);
|
LoginTokenVo vo = iLoginService.officeLogin(code, terminal);
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公众号跳转url
|
* 公众号链接
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param url 连接
|
* @param url 跳转链接
|
||||||
* @return AjaxResult<LoginCodesVo>
|
* @return AjaxResult<LoginCodesVo>
|
||||||
*/
|
*/
|
||||||
@NotLogin
|
@NotLogin
|
||||||
@GetMapping("/codeUrl")
|
@GetMapping("/oaCodeUrl")
|
||||||
public AjaxResult<LoginUrlsVo> codeUrl(@RequestParam String url) {
|
public AjaxResult<LoginUrlsVo> oaCodeUrl(@Validated @NotNull() @RequestParam("url") String url) {
|
||||||
Assert.notNull(url, "url参数不能为空");
|
|
||||||
|
|
||||||
LoginUrlsVo vo = new LoginUrlsVo();
|
LoginUrlsVo vo = new LoginUrlsVo();
|
||||||
vo.setUrl(iLoginService.codeUrl(url));
|
vo.setUrl(iLoginService.oaCodeUrl(url));
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 忘记密码
|
|
||||||
*
|
|
||||||
* @author fzr
|
|
||||||
* @param forgetPwdValidate 参数
|
|
||||||
* @return AjaxResult<Object>
|
|
||||||
*/
|
|
||||||
@NotLogin
|
|
||||||
@PostMapping("/forgotPassword")
|
|
||||||
public AjaxResult<Object> forgotPassword(@Validated @RequestBody ForgetPwdValidate forgetPwdValidate) {
|
|
||||||
iLoginService.forgotPassword(forgetPwdValidate);
|
|
||||||
return AjaxResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫码链接
|
* 扫码链接
|
||||||
*
|
*
|
||||||
|
|
@ -134,9 +134,9 @@ public class LoginController {
|
||||||
* @return AjaxResult<LoginUrlsVo>
|
* @return AjaxResult<LoginUrlsVo>
|
||||||
*/
|
*/
|
||||||
@NotLogin
|
@NotLogin
|
||||||
@GetMapping("/getScanCode")
|
@GetMapping("/scanCodeUrl")
|
||||||
public AjaxResult<LoginUrlsVo> getScanCode(@RequestParam String url, HttpSession session) {
|
public AjaxResult<LoginUrlsVo> scanCodeUrl(@Validated @NotNull() @RequestParam("url") String url, HttpSession session) {
|
||||||
String qrcodeUrl = iLoginService.getScanCode(url, session);
|
String qrcodeUrl = iLoginService.scanCodeUrl(url, session);
|
||||||
LoginUrlsVo vo = new LoginUrlsVo();
|
LoginUrlsVo vo = new LoginUrlsVo();
|
||||||
vo.setUrl(qrcodeUrl);
|
vo.setUrl(qrcodeUrl);
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
|
|
@ -146,13 +146,17 @@ public class LoginController {
|
||||||
* 扫码登录
|
* 扫码登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param scanLoginValidate 参数
|
* @param valid 扫码参数
|
||||||
* @return AjaxResult<Object>
|
* @return AjaxResult<Object>
|
||||||
*/
|
*/
|
||||||
@NotLogin
|
@NotLogin
|
||||||
@PostMapping("/scanLogin")
|
@PostMapping("/scanLogin")
|
||||||
public AjaxResult<Object> scanLogin(@Validated @RequestBody ScanLoginValidate scanLoginValidate, HttpSession session) {
|
public AjaxResult<Object> scanLogin(@Validated @RequestBody LoginScanValidate valid, HttpSession session) {
|
||||||
LoginTokenVo vo = iLoginService.scanLogin(scanLoginValidate, session);
|
Integer terminal = LikeFrontThreadLocal.getTerminal();
|
||||||
|
String code = valid.getCode();
|
||||||
|
String state = valid.getState();
|
||||||
|
|
||||||
|
LoginTokenVo vo = iLoginService.scanLogin(code, state, terminal, session);
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import com.mdd.common.core.AjaxResult;
|
||||||
import com.mdd.common.validator.annotation.IDMust;
|
import com.mdd.common.validator.annotation.IDMust;
|
||||||
import com.mdd.front.LikeFrontThreadLocal;
|
import com.mdd.front.LikeFrontThreadLocal;
|
||||||
import com.mdd.front.service.IPcService;
|
import com.mdd.front.service.IPcService;
|
||||||
import com.mdd.front.vo.PcArticleCenterVo;
|
import com.mdd.front.vo.article.PcArticleCenterVo;
|
||||||
import com.mdd.front.vo.PcArticleDetailVo;
|
import com.mdd.front.vo.article.PcArticleDetailVo;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
package com.mdd.front.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.mdd.common.core.AjaxResult;
|
|
||||||
import com.mdd.common.entity.notice.NoticeRecord;
|
|
||||||
import com.mdd.common.enums.NoticeEnum;
|
|
||||||
import com.mdd.common.exception.OperateException;
|
|
||||||
import com.mdd.common.mapper.notice.NoticeRecordMapper;
|
|
||||||
import com.mdd.common.plugin.notice.NoticeDriver;
|
|
||||||
import com.mdd.common.plugin.notice.vo.NoticeSmsVo;
|
|
||||||
import com.mdd.common.util.StringUtils;
|
|
||||||
import com.mdd.common.util.ToolUtils;
|
|
||||||
import com.mdd.front.validate.commons.SmsValidate;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 短信管理
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/api/sms")
|
|
||||||
public class SmsController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
NoticeRecordMapper noticeRecordMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送短信
|
|
||||||
*
|
|
||||||
* @author fzr
|
|
||||||
* @param smsValidate 参数
|
|
||||||
* @return AjaxResult<Object>
|
|
||||||
*/
|
|
||||||
@PostMapping("/send")
|
|
||||||
public AjaxResult<Object> send(@Validated @RequestBody SmsValidate smsValidate) {
|
|
||||||
NoticeRecord noticeRecord = noticeRecordMapper.selectOne(new QueryWrapper<NoticeRecord>()
|
|
||||||
.eq("mobile", smsValidate.getMobile())
|
|
||||||
.eq("scene", smsValidate.getScene())
|
|
||||||
.eq("status", Arrays.asList(NoticeEnum.STATUS_WAIT, NoticeEnum.STATUS_OK))
|
|
||||||
.orderByDesc("id")
|
|
||||||
.last("limit 1"));
|
|
||||||
|
|
||||||
if (StringUtils.isNotNull(noticeRecord)) {
|
|
||||||
if (noticeRecord.getCreateTime() >= (System.currentTimeMillis() / 1000 - 60)){
|
|
||||||
throw new OperateException("操作频繁,请稍后再试!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
NoticeSmsVo params = new NoticeSmsVo()
|
|
||||||
.setScene(smsValidate.getScene())
|
|
||||||
.setMobile(smsValidate.getMobile())
|
|
||||||
.setExpire(900)
|
|
||||||
.setParams(new String[] {
|
|
||||||
"code:" + ToolUtils.randomInt(4)
|
|
||||||
});
|
|
||||||
|
|
||||||
NoticeDriver.handle(params);
|
|
||||||
return AjaxResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
package com.mdd.front.controller;
|
package com.mdd.front.controller;
|
||||||
|
|
||||||
|
import com.mdd.common.aop.NotLogin;
|
||||||
import com.mdd.common.core.AjaxResult;
|
import com.mdd.common.core.AjaxResult;
|
||||||
import com.mdd.front.LikeFrontThreadLocal;
|
import com.mdd.front.LikeFrontThreadLocal;
|
||||||
import com.mdd.front.service.IUserService;
|
import com.mdd.front.service.IUserService;
|
||||||
import com.mdd.front.validate.UserBindMobileValidate;
|
import com.mdd.front.validate.users.UserForgetPwdValidate;
|
||||||
import com.mdd.front.validate.UserMnpMobileValidate;
|
import com.mdd.front.validate.users.UserPhoneBindValidate;
|
||||||
import com.mdd.front.validate.UserPasswordValidate;
|
import com.mdd.front.validate.users.UserPhoneMnpValidate;
|
||||||
import com.mdd.front.validate.UserUpdateValidate;
|
import com.mdd.front.validate.users.UserChangePwdValidate;
|
||||||
|
import com.mdd.front.validate.users.UserUpdateValidate;
|
||||||
import com.mdd.front.vo.users.UserCenterVo;
|
import com.mdd.front.vo.users.UserCenterVo;
|
||||||
import com.mdd.front.vo.users.UserInfoVo;
|
import com.mdd.front.vo.users.UserInfoVo;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
@ -32,7 +34,8 @@ public class UserController {
|
||||||
*/
|
*/
|
||||||
@GetMapping("/center")
|
@GetMapping("/center")
|
||||||
public AjaxResult<UserCenterVo> center() {
|
public AjaxResult<UserCenterVo> center() {
|
||||||
UserCenterVo vo = iUserService.center(LikeFrontThreadLocal.getUserId());
|
Integer userId = LikeFrontThreadLocal.getUserId();
|
||||||
|
UserCenterVo vo = iUserService.center(userId);
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -44,7 +47,8 @@ public class UserController {
|
||||||
*/
|
*/
|
||||||
@GetMapping("/info")
|
@GetMapping("/info")
|
||||||
public AjaxResult<UserInfoVo> info() {
|
public AjaxResult<UserInfoVo> info() {
|
||||||
UserInfoVo vo = iUserService.info(LikeFrontThreadLocal.getUserId());
|
Integer userId = LikeFrontThreadLocal.getUserId();
|
||||||
|
UserInfoVo vo = iUserService.info(userId);
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,12 +74,26 @@ public class UserController {
|
||||||
* @return AjaxResult<Object>
|
* @return AjaxResult<Object>
|
||||||
*/
|
*/
|
||||||
@PostMapping("/changePwd")
|
@PostMapping("/changePwd")
|
||||||
public AjaxResult<Object> changePwd(@Validated @RequestBody UserPasswordValidate passwordValidate) {
|
public AjaxResult<Object> changePwd(@Validated @RequestBody UserChangePwdValidate passwordValidate) {
|
||||||
Integer userId = LikeFrontThreadLocal.getUserId();
|
Integer userId = LikeFrontThreadLocal.getUserId();
|
||||||
iUserService.changePwd(passwordValidate.getPassword(), passwordValidate.getOldPassword(), userId);
|
iUserService.changePwd(passwordValidate.getPassword(), passwordValidate.getOldPassword(), userId);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 忘记密码
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @param userForgetPwdValidate 参数
|
||||||
|
* @return AjaxResult<Object>
|
||||||
|
*/
|
||||||
|
@NotLogin
|
||||||
|
@PostMapping("/forgotPwd")
|
||||||
|
public AjaxResult<Object> forgotPwd(@Validated @RequestBody UserForgetPwdValidate userForgetPwdValidate) {
|
||||||
|
iUserService.forgotPwd(userForgetPwdValidate);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定手机号
|
* 绑定手机号
|
||||||
*
|
*
|
||||||
|
|
@ -84,7 +102,7 @@ public class UserController {
|
||||||
* @return AjaxResult<Object>
|
* @return AjaxResult<Object>
|
||||||
*/
|
*/
|
||||||
@PostMapping("/bindMobile")
|
@PostMapping("/bindMobile")
|
||||||
public AjaxResult<Object> bindMobile(@Validated @RequestBody UserBindMobileValidate mobileValidate) {
|
public AjaxResult<Object> bindMobile(@Validated @RequestBody UserPhoneBindValidate mobileValidate) {
|
||||||
Integer userId = LikeFrontThreadLocal.getUserId();
|
Integer userId = LikeFrontThreadLocal.getUserId();
|
||||||
iUserService.bindMobile(mobileValidate, userId);
|
iUserService.bindMobile(mobileValidate, userId);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
|
|
@ -98,7 +116,7 @@ public class UserController {
|
||||||
* @return AjaxResult<Object>
|
* @return AjaxResult<Object>
|
||||||
*/
|
*/
|
||||||
@PostMapping("/mnpMobile")
|
@PostMapping("/mnpMobile")
|
||||||
public AjaxResult<Object> mnpMobile(@Validated @RequestBody UserMnpMobileValidate mobileValidate) {
|
public AjaxResult<Object> mnpMobile(@Validated @RequestBody UserPhoneMnpValidate mobileValidate) {
|
||||||
iUserService.mnpMobile(mobileValidate.getCode().trim());
|
iUserService.mnpMobile(mobileValidate.getCode().trim());
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.mdd.front.service;
|
package com.mdd.front.service;
|
||||||
|
|
||||||
import com.mdd.common.core.PageResult;
|
import com.mdd.common.core.PageResult;
|
||||||
import com.mdd.front.validate.ArticleSearchValidate;
|
import com.mdd.front.validate.article.ArticleSearchValidate;
|
||||||
import com.mdd.front.validate.commons.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
import com.mdd.front.vo.article.ArticleCateVo;
|
import com.mdd.front.vo.article.ArticleCateVo;
|
||||||
import com.mdd.front.vo.article.ArticleCollectVo;
|
import com.mdd.front.vo.article.ArticleCollectVo;
|
||||||
import com.mdd.front.vo.article.ArticleDetailVo;
|
import com.mdd.front.vo.article.ArticleDetailVo;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.mdd.front.service;
|
package com.mdd.front.service;
|
||||||
|
|
||||||
import com.mdd.common.core.PageResult;
|
import com.mdd.common.core.PageResult;
|
||||||
import com.mdd.front.validate.commons.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
import com.mdd.front.vo.article.ArticleListedVo;
|
import com.mdd.front.vo.article.ArticleListedVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,8 @@
|
||||||
package com.mdd.front.service;
|
package com.mdd.front.service;
|
||||||
|
|
||||||
import com.mdd.front.validate.login.RegisterValidate;
|
import com.mdd.front.vo.login.LoginTokenVo;
|
||||||
import com.mdd.front.validate.login.ForgetPwdValidate;
|
|
||||||
import com.mdd.front.validate.login.ScanLoginValidate;
|
|
||||||
import com.mdd.front.vo.LoginTokenVo;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录服务接口类
|
* 登录服务接口类
|
||||||
|
|
@ -17,47 +13,53 @@ public interface ILoginService {
|
||||||
* 账号注册
|
* 账号注册
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param registerValidate 参数
|
* @param username 账号
|
||||||
|
* @param password 密码
|
||||||
|
* @param terminal 终端
|
||||||
*/
|
*/
|
||||||
void register(RegisterValidate registerValidate);
|
void register(String username, String password, Integer terminal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 账号登录
|
* 账号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param params 参数
|
* @param username 账号
|
||||||
|
* @param password 密码
|
||||||
|
* @param terminal 终端
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
LoginTokenVo accountLogin(Map<String, String> params);
|
LoginTokenVo accountLogin(String username, String password, Integer terminal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手机登录
|
* 手机登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param params 参数
|
* @param mobile 手机号
|
||||||
|
* @param code 验证码
|
||||||
|
* @param terminal 终端
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
LoginTokenVo mobileLogin(Map<String, String> params);
|
LoginTokenVo mobileLogin(String mobile, String code, Integer terminal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信登录
|
* 微信登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param code 微信code
|
* @param code 微信code
|
||||||
* @param client 来源客户端
|
* @param terminal 终端
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
LoginTokenVo mnpLogin(String code, Integer client);
|
LoginTokenVo mnpLogin(String code, Integer terminal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公众号登录
|
* 公众号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param code 参数
|
* @param code 微信Code
|
||||||
* @param client 参数
|
* @param terminal 终端
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
LoginTokenVo officeLogin(String code, Integer client);
|
LoginTokenVo officeLogin(String code, Integer terminal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公众号跳转url
|
* 公众号跳转url
|
||||||
|
|
@ -66,15 +68,7 @@ public interface ILoginService {
|
||||||
* @param url 连接
|
* @param url 连接
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
String codeUrl(String url);
|
String oaCodeUrl(String url);
|
||||||
|
|
||||||
/**
|
|
||||||
* 忘记密码
|
|
||||||
*
|
|
||||||
* @author fzr
|
|
||||||
* @param forgetPwdValidate 参数
|
|
||||||
*/
|
|
||||||
void forgotPassword(ForgetPwdValidate forgetPwdValidate);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫码链接
|
* 扫码链接
|
||||||
|
|
@ -83,11 +77,17 @@ public interface ILoginService {
|
||||||
* @param session session
|
* @param session session
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
String getScanCode(String url, HttpSession session);
|
String scanCodeUrl(String url, HttpSession session);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫码登录
|
* 扫码登录
|
||||||
|
*
|
||||||
|
* @param code 编码
|
||||||
|
* @param state 标识
|
||||||
|
* @param terminal 终端
|
||||||
|
* @param session 会话
|
||||||
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
LoginTokenVo scanLogin(ScanLoginValidate scanLoginValidate, HttpSession session);
|
LoginTokenVo scanLogin(String code, String state, Integer terminal, HttpSession session);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.mdd.front.service;
|
package com.mdd.front.service;
|
||||||
|
|
||||||
import com.mdd.front.vo.PcArticleCenterVo;
|
import com.mdd.front.vo.article.PcArticleCenterVo;
|
||||||
import com.mdd.front.vo.PcArticleDetailVo;
|
import com.mdd.front.vo.article.PcArticleDetailVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
package com.mdd.front.service;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上传服务接口类
|
|
||||||
*/
|
|
||||||
public interface IUploadService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上传图片
|
|
||||||
*
|
|
||||||
* @author fzr
|
|
||||||
* @return Map<String, Object>
|
|
||||||
*/
|
|
||||||
Map<String, Object> image();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
package com.mdd.front.service;
|
package com.mdd.front.service;
|
||||||
|
|
||||||
import com.mdd.front.validate.UserBindMobileValidate;
|
import com.mdd.front.validate.users.UserForgetPwdValidate;
|
||||||
import com.mdd.front.validate.UserUpdateValidate;
|
import com.mdd.front.validate.users.UserPhoneBindValidate;
|
||||||
|
import com.mdd.front.validate.users.UserUpdateValidate;
|
||||||
import com.mdd.front.vo.users.UserCenterVo;
|
import com.mdd.front.vo.users.UserCenterVo;
|
||||||
import com.mdd.front.vo.users.UserInfoVo;
|
import com.mdd.front.vo.users.UserInfoVo;
|
||||||
|
|
||||||
|
|
@ -47,6 +48,8 @@ public interface IUserService {
|
||||||
*/
|
*/
|
||||||
void changePwd(String password, String oldPassword, Integer userId);
|
void changePwd(String password, String oldPassword, Integer userId);
|
||||||
|
|
||||||
|
void forgotPwd(UserForgetPwdValidate userForgetPwdValidate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定手机
|
* 绑定手机
|
||||||
*
|
*
|
||||||
|
|
@ -54,7 +57,7 @@ public interface IUserService {
|
||||||
* @param mobileValidate 参数
|
* @param mobileValidate 参数
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
*/
|
*/
|
||||||
void bindMobile(UserBindMobileValidate mobileValidate, Integer userId);
|
void bindMobile(UserPhoneBindValidate mobileValidate, Integer userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信手机
|
* 微信手机
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ import com.mdd.common.util.StringUtils;
|
||||||
import com.mdd.common.util.TimeUtils;
|
import com.mdd.common.util.TimeUtils;
|
||||||
import com.mdd.common.util.UrlUtils;
|
import com.mdd.common.util.UrlUtils;
|
||||||
import com.mdd.front.service.IArticleService;
|
import com.mdd.front.service.IArticleService;
|
||||||
import com.mdd.front.validate.ArticleSearchValidate;
|
import com.mdd.front.validate.article.ArticleSearchValidate;
|
||||||
import com.mdd.front.validate.commons.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
import com.mdd.front.vo.article.ArticleCateVo;
|
import com.mdd.front.vo.article.ArticleCateVo;
|
||||||
import com.mdd.front.vo.article.ArticleCollectVo;
|
import com.mdd.front.vo.article.ArticleCollectVo;
|
||||||
import com.mdd.front.vo.article.ArticleDetailVo;
|
import com.mdd.front.vo.article.ArticleDetailVo;
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import com.mdd.common.mapper.DecorateTabbarMapper;
|
||||||
import com.mdd.common.mapper.setting.HotSearchMapper;
|
import com.mdd.common.mapper.setting.HotSearchMapper;
|
||||||
import com.mdd.common.util.*;
|
import com.mdd.common.util.*;
|
||||||
import com.mdd.front.service.IIndexService;
|
import com.mdd.front.service.IIndexService;
|
||||||
import com.mdd.front.validate.commons.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
import com.mdd.front.vo.article.ArticleListedVo;
|
import com.mdd.front.vo.article.ArticleListedVo;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,8 @@ import com.mdd.common.mapper.user.UserMapper;
|
||||||
import com.mdd.common.plugin.notice.NoticeCheck;
|
import com.mdd.common.plugin.notice.NoticeCheck;
|
||||||
import com.mdd.common.util.*;
|
import com.mdd.common.util.*;
|
||||||
import com.mdd.front.cache.ScanLoginCache;
|
import com.mdd.front.cache.ScanLoginCache;
|
||||||
import com.mdd.front.config.FrontConfig;
|
|
||||||
import com.mdd.front.service.ILoginService;
|
import com.mdd.front.service.ILoginService;
|
||||||
import com.mdd.front.validate.login.RegisterValidate;
|
import com.mdd.front.vo.login.LoginTokenVo;
|
||||||
import com.mdd.front.validate.login.ForgetPwdValidate;
|
|
||||||
import com.mdd.front.validate.login.ScanLoginValidate;
|
|
||||||
import com.mdd.front.vo.LoginTokenVo;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import me.chanjar.weixin.common.api.WxConsts;
|
import me.chanjar.weixin.common.api.WxConsts;
|
||||||
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
||||||
|
|
@ -53,30 +49,32 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* 注册账号
|
* 注册账号
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param registerValidate 参数
|
* @param username 账号
|
||||||
|
* @param password 密码
|
||||||
|
* @param terminal 总端
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void register(RegisterValidate registerValidate) {
|
public void register(String username, String password, Integer terminal) {
|
||||||
User model = userMapper.selectOne(new QueryWrapper<User>()
|
User model = userMapper.selectOne(new QueryWrapper<User>()
|
||||||
.select("id,sn,username")
|
.select("id,sn,username")
|
||||||
.eq("username", registerValidate.getUsername())
|
.eq("username", username)
|
||||||
.eq("is_delete", 0)
|
.eq("is_delete", 0)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.isNull(model, "账号已存在,换一个吧!");
|
Assert.isNull(model, "账号已存在,换一个吧!");
|
||||||
|
|
||||||
Integer sn = this.randMakeSn();
|
Integer sn = this.__generateSn();
|
||||||
String salt = ToolUtils.randomString(5);
|
String salt = ToolUtils.randomString(5);
|
||||||
String pwd = ToolUtils.makeMd5(registerValidate.getPassword()+salt);
|
String pwd = ToolUtils.makeMd5(password+salt);
|
||||||
|
|
||||||
User user = new User();
|
User user = new User();
|
||||||
user.setSn(sn);
|
user.setSn(sn);
|
||||||
user.setNickname("用户"+sn);
|
user.setNickname("用户"+sn);
|
||||||
user.setUsername(registerValidate.getUsername());
|
user.setUsername(username);
|
||||||
user.setPassword(pwd);
|
user.setPassword(pwd);
|
||||||
user.setSalt(salt);
|
user.setSalt(salt);
|
||||||
user.setAvatar("/api/static/default_avatar.png");
|
user.setAvatar("/api/static/default_avatar.png");
|
||||||
user.setChannel(registerValidate.getClient());
|
user.setChannel(terminal);
|
||||||
user.setCreateTime(System.currentTimeMillis() / 1000);
|
user.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
userMapper.insert(user);
|
userMapper.insert(user);
|
||||||
|
|
@ -86,16 +84,12 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* 账号登录
|
* 账号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param params 参数
|
* @param username 账号
|
||||||
|
* @param password 密码
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public LoginTokenVo accountLogin(Map<String, String> params) {
|
public LoginTokenVo accountLogin(String username, String password, Integer terminal) {
|
||||||
Assert.notNull(params.get("username"), "username参数缺失!");
|
|
||||||
Assert.notNull(params.get("password"), "password参数缺失!");
|
|
||||||
String username = params.get("username");
|
|
||||||
String password = params.get("password");
|
|
||||||
|
|
||||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||||
.select("id,username,password,salt,mobile,is_disable")
|
.select("id,username,password,salt,mobile,is_disable")
|
||||||
.eq("username", username)
|
.eq("username", username)
|
||||||
|
|
@ -107,23 +101,19 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
Assert.isFalse(!pwd.equals(user.getPassword()), "账号或密码错误!");
|
Assert.isFalse(!pwd.equals(user.getPassword()), "账号或密码错误!");
|
||||||
Assert.isFalse(!user.getIsDisable().equals(0), "账号已被禁用!");
|
Assert.isFalse(!user.getIsDisable().equals(0), "账号已被禁用!");
|
||||||
|
|
||||||
return this.makeLoginToken(user.getId(), user.getMobile());
|
return this.__loginToken(user.getId(), user.getMobile(), terminal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手机号登录
|
* 手机号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param params 参数
|
* @param mobile 手机号
|
||||||
|
* @param code 验证码
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public LoginTokenVo mobileLogin(Map<String, String> params) {
|
public LoginTokenVo mobileLogin(String mobile, String code, Integer terminal) {
|
||||||
Assert.notNull(params.get("mobile"), "mobile参数缺失!");
|
|
||||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
|
||||||
String mobile = params.get("mobile");
|
|
||||||
String code = params.get("code").toLowerCase();
|
|
||||||
|
|
||||||
// 校验验证码
|
// 校验验证码
|
||||||
int sceneCode = NoticeEnum.LOGIN_CODE.getCode();
|
int sceneCode = NoticeEnum.LOGIN_CODE.getCode();
|
||||||
if (!NoticeCheck.verify(sceneCode, code)) {
|
if (!NoticeCheck.verify(sceneCode, code)) {
|
||||||
|
|
@ -140,20 +130,20 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
Assert.notNull(user, "账号不存在!");
|
Assert.notNull(user, "账号不存在!");
|
||||||
Assert.isFalse(user.getIsDisable() != 0, "账号已禁用!");
|
Assert.isFalse(user.getIsDisable() != 0, "账号已禁用!");
|
||||||
|
|
||||||
return this.makeLoginToken(user.getId(), user.getMobile());
|
return this.__loginToken(user.getId(), user.getMobile(), terminal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信小程序登录
|
* 微信小程序登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param code 微信code
|
* @param code 编码
|
||||||
* @param client 来源客户端
|
* @param terminal 终端
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public LoginTokenVo mnpLogin(String code, Integer client) {
|
public LoginTokenVo mnpLogin(String code, Integer terminal) {
|
||||||
try {
|
try {
|
||||||
WxMaService wxMaService = WeChatUtils.mnp();
|
WxMaService wxMaService = WeChatUtils.mnp();
|
||||||
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
WxMaJscode2SessionResult sessionResult = wxMaService.getUserService().getSessionInfo(code);
|
||||||
|
|
@ -161,7 +151,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
String uniId = sessionResult.getUnionid();
|
String uniId = sessionResult.getUnionid();
|
||||||
String unionId = uniId == null ? "0" : uniId;
|
String unionId = uniId == null ? "0" : uniId;
|
||||||
|
|
||||||
return this.userService(openId, unionId, client);
|
return this.__wxLoginHandle(openId, unionId, terminal);
|
||||||
} catch (WxErrorException e) {
|
} catch (WxErrorException e) {
|
||||||
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
||||||
}
|
}
|
||||||
|
|
@ -171,17 +161,19 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* 公众号登录
|
* 公众号登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
|
* @param code 编码
|
||||||
|
* @param terminal 终端
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public LoginTokenVo officeLogin(String code, Integer client) {
|
public LoginTokenVo officeLogin(String code, Integer terminal) {
|
||||||
try {
|
try {
|
||||||
WxMpService wxMpService = WeChatUtils.official();
|
WxMpService wxMpService = WeChatUtils.official();
|
||||||
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
||||||
String uniId = wxOAuth2AccessToken.getUnionId();
|
String uniId = wxOAuth2AccessToken.getUnionId();
|
||||||
String openId = wxOAuth2AccessToken.getOpenId();
|
String openId = wxOAuth2AccessToken.getOpenId();
|
||||||
String unionId = uniId == null ? "0" : uniId;
|
String unionId = uniId == null ? "0" : uniId;
|
||||||
return this.userService(openId, unionId, client);
|
return this.__wxLoginHandle(openId, unionId, terminal);
|
||||||
} catch (WxErrorException e) {
|
} catch (WxErrorException e) {
|
||||||
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
||||||
}
|
}
|
||||||
|
|
@ -195,50 +187,12 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String codeUrl(String url) {
|
public String oaCodeUrl(String url) {
|
||||||
WxMpService wxMpService = WeChatUtils.official();
|
WxMpService wxMpService = WeChatUtils.official();
|
||||||
WxMpOAuth2ServiceImpl wxMpOAuth2Service = new WxMpOAuth2ServiceImpl(wxMpService);
|
WxMpOAuth2ServiceImpl wxMpOAuth2Service = new WxMpOAuth2ServiceImpl(wxMpService);
|
||||||
return wxMpOAuth2Service.buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
|
return wxMpOAuth2Service.buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 忘记密码
|
|
||||||
*
|
|
||||||
* @author fzr
|
|
||||||
* @param forgetPwdValidate 参数
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void forgotPassword(ForgetPwdValidate forgetPwdValidate) {
|
|
||||||
String mobile = forgetPwdValidate.getMobile();
|
|
||||||
String code = forgetPwdValidate.getCode();
|
|
||||||
String password = forgetPwdValidate.getPassword();
|
|
||||||
|
|
||||||
// 校验验证码
|
|
||||||
int sceneCode = NoticeEnum.FORGOT_PASSWORD_CODE.getCode();
|
|
||||||
if (!NoticeCheck.verify(sceneCode, code)) {
|
|
||||||
throw new OperateException("验证码错误!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询手机号
|
|
||||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
|
||||||
.select("id,username,mobile,is_disable")
|
|
||||||
.eq("is_delete", 0)
|
|
||||||
.eq("mobile", mobile)
|
|
||||||
.last("limit 1"));
|
|
||||||
|
|
||||||
// 验证账号
|
|
||||||
Assert.notNull(user, "账号不存在!");
|
|
||||||
|
|
||||||
String salt = ToolUtils.randomString(5);
|
|
||||||
String pwd = ToolUtils.makeMd5(password.trim()+salt);
|
|
||||||
|
|
||||||
// 更新密码
|
|
||||||
user.setPassword(pwd);
|
|
||||||
user.setSalt(salt);
|
|
||||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
|
||||||
userMapper.updateById(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫码链接
|
* 扫码链接
|
||||||
*
|
*
|
||||||
|
|
@ -247,7 +201,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getScanCode(String url, HttpSession session) {
|
public String scanCodeUrl(String url, HttpSession session) {
|
||||||
// 获取AppId
|
// 获取AppId
|
||||||
String appId = ConfigUtils.get("op_channel", "appId", "");
|
String appId = ConfigUtils.get("op_channel", "appId", "");
|
||||||
|
|
||||||
|
|
@ -280,18 +234,14 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* 扫码登录
|
* 扫码登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @param scanLoginValidate 参数
|
* @param code 编码
|
||||||
* @param session 当前会话
|
* @param state 标识
|
||||||
|
* @param terminal 终端
|
||||||
|
* @param session 会话
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public LoginTokenVo scanLogin(ScanLoginValidate scanLoginValidate, HttpSession session) {
|
public LoginTokenVo scanLogin(String code, String state, Integer terminal, HttpSession session) {
|
||||||
// 验证唯一标识是否过期
|
|
||||||
if (ScanLoginCache.get(session.getId()).equals(scanLoginValidate.getState())) {
|
|
||||||
throw new OperateException("二维码已失效或不存在,请重新操作");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 得到配置和授权临时票据code
|
// 得到配置和授权临时票据code
|
||||||
String code = scanLoginValidate.getCode();
|
|
||||||
String appId = ConfigUtils.get("op_channel", "appId", "");
|
String appId = ConfigUtils.get("op_channel", "appId", "");
|
||||||
String appSecret = ConfigUtils.get("op_channel", "appSecret", "");
|
String appSecret = ConfigUtils.get("op_channel", "appSecret", "");
|
||||||
|
|
||||||
|
|
@ -327,44 +277,18 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
String openId = userinfoMap.get("openid");
|
String openId = userinfoMap.get("openid");
|
||||||
String uniId = userinfoMap.get("unionid");
|
String uniId = userinfoMap.get("unionid");
|
||||||
String unionId = uniId == null ? "0" : uniId;
|
String unionId = uniId == null ? "0" : uniId;
|
||||||
return this.userService(openId, unionId, ClientEnum.PC.getCode());
|
return this.__wxLoginHandle(openId, unionId, terminal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成登录Token
|
* 处理微信登录
|
||||||
*
|
*
|
||||||
* @author fzr
|
* @param openId (openId)
|
||||||
* @param userId 用户ID
|
* @param unionId (unionId)
|
||||||
* @param mobile 用户手机
|
* @param terminal (terminal)
|
||||||
* @return LoginTokenVo
|
* @return LoginTokenVo
|
||||||
*/
|
*/
|
||||||
private LoginTokenVo makeLoginToken(Integer userId, String mobile) {
|
private LoginTokenVo __wxLoginHandle(String openId, String unionId, Integer terminal) {
|
||||||
// 实现账号登录
|
|
||||||
StpUtil.login(userId);
|
|
||||||
|
|
||||||
// 更新登录信息
|
|
||||||
User user = new User();
|
|
||||||
user.setLastLoginIp(IpUtils.getHostIp());
|
|
||||||
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
|
||||||
userMapper.update(user, new QueryWrapper<User>().eq("id", userId));
|
|
||||||
|
|
||||||
// 返回登录信息
|
|
||||||
LoginTokenVo vo = new LoginTokenVo();
|
|
||||||
vo.setId(userId);
|
|
||||||
vo.setIsBindMobile(!StringUtils.isEmpty(mobile));
|
|
||||||
vo.setToken(StpUtil.getTokenValue());
|
|
||||||
return vo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户创建服务
|
|
||||||
*
|
|
||||||
* @param openId (openId)
|
|
||||||
* @param unionId (unionId)
|
|
||||||
* @param client (client)
|
|
||||||
* @return LoginTokenVo
|
|
||||||
*/
|
|
||||||
private LoginTokenVo userService(String openId, String unionId, Integer client) {
|
|
||||||
UserAuth userAuth = userAuthMapper.selectOne(new QueryWrapper<UserAuth>()
|
UserAuth userAuth = userAuthMapper.selectOne(new QueryWrapper<UserAuth>()
|
||||||
.nested(wq->wq
|
.nested(wq->wq
|
||||||
.eq("unionid", unionId).or()
|
.eq("unionid", unionId).or()
|
||||||
|
|
@ -381,7 +305,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNull(user)) {
|
if (StringUtils.isNull(user)) {
|
||||||
Integer sn = this.randMakeSn();
|
Integer sn = this.__generateSn();
|
||||||
User model = new User();
|
User model = new User();
|
||||||
model.setSn(sn);
|
model.setSn(sn);
|
||||||
model.setAvatar("/api/static/default_avatar.png");
|
model.setAvatar("/api/static/default_avatar.png");
|
||||||
|
|
@ -402,7 +326,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
auth.setUserId(model.getId());
|
auth.setUserId(model.getId());
|
||||||
auth.setUnionid(unionId);
|
auth.setUnionid(unionId);
|
||||||
auth.setOpenid(openId);
|
auth.setOpenid(openId);
|
||||||
auth.setClient(client);
|
auth.setTerminal(terminal);
|
||||||
auth.setCreateTime(System.currentTimeMillis() / 1000);
|
auth.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
auth.setUpdateTime(System.currentTimeMillis() / 1000);
|
auth.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
userAuthMapper.insert(auth);
|
userAuthMapper.insert(auth);
|
||||||
|
|
@ -414,7 +338,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
.nested(wq->wq
|
.nested(wq->wq
|
||||||
.eq("unionid", unionId).or()
|
.eq("unionid", unionId).or()
|
||||||
.eq("openid", openId)
|
.eq("openid", openId)
|
||||||
).eq("client", client)
|
).eq("terminal", terminal)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
if (StringUtils.isNull(auth)) {
|
if (StringUtils.isNull(auth)) {
|
||||||
|
|
@ -422,7 +346,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
authModel.setUserId(user.getId());
|
authModel.setUserId(user.getId());
|
||||||
authModel.setUnionid(unionId);
|
authModel.setUnionid(unionId);
|
||||||
authModel.setOpenid(openId);
|
authModel.setOpenid(openId);
|
||||||
authModel.setClient(client);
|
authModel.setTerminal(terminal);
|
||||||
authModel.setCreateTime(System.currentTimeMillis() / 1000);
|
authModel.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
authModel.setUpdateTime(System.currentTimeMillis() / 1000);
|
authModel.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
userAuthMapper.insert(authModel);
|
userAuthMapper.insert(authModel);
|
||||||
|
|
@ -432,7 +356,34 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.makeLoginToken(userId, user.getMobile());
|
return this.__loginToken(userId, user.getMobile(), terminal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理录令牌
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @param mobile 用户手机
|
||||||
|
* @param terminal 终端
|
||||||
|
* @return LoginTokenVo
|
||||||
|
*/
|
||||||
|
private LoginTokenVo __loginToken(Integer userId, String mobile, Integer terminal) {
|
||||||
|
// 实现账号登录
|
||||||
|
StpUtil.login(userId, terminal);
|
||||||
|
|
||||||
|
// 更新登录信息
|
||||||
|
User user = new User();
|
||||||
|
user.setLastLoginIp(IpUtils.getHostIp());
|
||||||
|
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||||
|
userMapper.update(user, new QueryWrapper<User>().eq("id", userId));
|
||||||
|
|
||||||
|
// 返回登录信息
|
||||||
|
LoginTokenVo vo = new LoginTokenVo();
|
||||||
|
vo.setId(userId);
|
||||||
|
vo.setIsBindMobile(!StringUtils.isEmpty(mobile));
|
||||||
|
vo.setToken(StpUtil.getTokenValue());
|
||||||
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -441,7 +392,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
* @author fzr
|
* @author fzr
|
||||||
* @return Integer
|
* @return Integer
|
||||||
*/
|
*/
|
||||||
private Integer randMakeSn() {
|
private Integer __generateSn() {
|
||||||
Integer sn;
|
Integer sn;
|
||||||
while (true) {
|
while (true) {
|
||||||
sn = Integer.parseInt(ToolUtils.randomInt(8));
|
sn = Integer.parseInt(ToolUtils.randomInt(8));
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ import com.mdd.common.mapper.article.ArticleCollectMapper;
|
||||||
import com.mdd.common.mapper.article.ArticleMapper;
|
import com.mdd.common.mapper.article.ArticleMapper;
|
||||||
import com.mdd.common.util.*;
|
import com.mdd.common.util.*;
|
||||||
import com.mdd.front.service.IPcService;
|
import com.mdd.front.service.IPcService;
|
||||||
import com.mdd.front.vo.PcArticleCenterVo;
|
import com.mdd.front.vo.article.PcArticleCenterVo;
|
||||||
import com.mdd.front.vo.PcArticleDetailVo;
|
import com.mdd.front.vo.article.PcArticleDetailVo;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
package com.mdd.front.service.impl;
|
|
||||||
|
|
||||||
import com.mdd.front.service.IUploadService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上传服务实现类
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class UploadServiceImpl implements IUploadService {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> image() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -17,8 +17,9 @@ import com.mdd.common.plugin.notice.NoticeCheck;
|
||||||
import com.mdd.common.util.*;
|
import com.mdd.common.util.*;
|
||||||
import com.mdd.front.LikeFrontThreadLocal;
|
import com.mdd.front.LikeFrontThreadLocal;
|
||||||
import com.mdd.front.service.IUserService;
|
import com.mdd.front.service.IUserService;
|
||||||
import com.mdd.front.validate.UserBindMobileValidate;
|
import com.mdd.front.validate.users.UserForgetPwdValidate;
|
||||||
import com.mdd.front.validate.UserUpdateValidate;
|
import com.mdd.front.validate.users.UserPhoneBindValidate;
|
||||||
|
import com.mdd.front.validate.users.UserUpdateValidate;
|
||||||
import com.mdd.front.vo.users.UserCenterVo;
|
import com.mdd.front.vo.users.UserCenterVo;
|
||||||
import com.mdd.front.vo.users.UserInfoVo;
|
import com.mdd.front.vo.users.UserInfoVo;
|
||||||
import me.chanjar.weixin.common.error.WxErrorException;
|
import me.chanjar.weixin.common.error.WxErrorException;
|
||||||
|
|
@ -201,6 +202,43 @@ public class UserServiceImpl implements IUserService {
|
||||||
userMapper.updateById(u);
|
userMapper.updateById(u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 忘记密码
|
||||||
|
*
|
||||||
|
* @param userForgetPwdValidate
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void forgotPwd(UserForgetPwdValidate userForgetPwdValidate) {
|
||||||
|
String mobile = userForgetPwdValidate.getMobile();
|
||||||
|
String code = userForgetPwdValidate.getCode();
|
||||||
|
String password = userForgetPwdValidate.getPassword();
|
||||||
|
|
||||||
|
// 校验验证码
|
||||||
|
int sceneCode = NoticeEnum.FORGOT_PASSWORD_CODE.getCode();
|
||||||
|
if (!NoticeCheck.verify(sceneCode, code)) {
|
||||||
|
throw new OperateException("验证码错误!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询手机号
|
||||||
|
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||||
|
.select("id,username,mobile,is_disable")
|
||||||
|
.eq("is_delete", 0)
|
||||||
|
.eq("mobile", mobile)
|
||||||
|
.last("limit 1"));
|
||||||
|
|
||||||
|
// 验证账号
|
||||||
|
com.baomidou.mybatisplus.core.toolkit.Assert.notNull(user, "账号不存在!");
|
||||||
|
|
||||||
|
String salt = ToolUtils.randomString(5);
|
||||||
|
String pwd = ToolUtils.makeMd5(password.trim()+salt);
|
||||||
|
|
||||||
|
// 更新密码
|
||||||
|
user.setPassword(pwd);
|
||||||
|
user.setSalt(salt);
|
||||||
|
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
|
userMapper.updateById(user);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定手机
|
* 绑定手机
|
||||||
*
|
*
|
||||||
|
|
@ -209,7 +247,7 @@ public class UserServiceImpl implements IUserService {
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void bindMobile(UserBindMobileValidate mobileValidate, Integer userId) {
|
public void bindMobile(UserPhoneBindValidate mobileValidate, Integer userId) {
|
||||||
String type = mobileValidate.getType();
|
String type = mobileValidate.getType();
|
||||||
String mobile = mobileValidate.getMobile();
|
String mobile = mobileValidate.getMobile();
|
||||||
String code = mobileValidate.getCode().toLowerCase();
|
String code = mobileValidate.getCode().toLowerCase();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate;
|
package com.mdd.front.validate.article;
|
||||||
|
|
||||||
import com.mdd.common.validator.annotation.IDMust;
|
import com.mdd.common.validator.annotation.IDMust;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate;
|
package com.mdd.front.validate.article;
|
||||||
|
|
||||||
import com.mdd.common.validator.annotation.StringContains;
|
import com.mdd.common.validator.annotation.StringContains;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate.commons;
|
package com.mdd.front.validate.common;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate.commons;
|
package com.mdd.front.validate.common;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.mdd.front.validate.login;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信登录参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class LoginCodeValidate {
|
||||||
|
|
||||||
|
@NotNull(message = "code参数缺失")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.mdd.front.validate.login;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import javax.validation.constraints.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号登录参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class LoginPhoneValidate {
|
||||||
|
|
||||||
|
@NotNull(message = "mobile参数缺失")
|
||||||
|
@NotEmpty(message = "手机号不能为空")
|
||||||
|
@Length(min = 11, max = 11, message = "手机号只能为11位")
|
||||||
|
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
@NotNull(message = "code参数缺失")
|
||||||
|
@NotEmpty(message = "code不能为空")
|
||||||
|
@Length(min = 4, max = 6, message = "验证码长度不符合")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.mdd.front.validate.login;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账号密码登录参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class LoginPwdValidate {
|
||||||
|
|
||||||
|
@NotNull(message = "username参数缺失")
|
||||||
|
@NotEmpty(message = "账号不能为空")
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
@NotNull(message = "password参数缺失")
|
||||||
|
@NotEmpty(message = "密码不能为空")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ package com.mdd.front.validate.login;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
@ -9,14 +10,16 @@ import java.io.Serializable;
|
||||||
* 网站扫码登录验证
|
* 网站扫码登录验证
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ScanLoginValidate implements Serializable {
|
public class LoginScanValidate implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@NotNull(message = "code参数缺失")
|
@NotNull(message = "code参数缺失")
|
||||||
|
@NotEmpty(message = "code不能为空")
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
@NotNull(message = "state参数缺失")
|
@NotNull(message = "二维码已失效或不存在,请重新操作")
|
||||||
|
@NotEmpty(message = "二维码已失效或不存在,请重新操作")
|
||||||
private String state;
|
private String state;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
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,6 +1,5 @@
|
||||||
package com.mdd.front.validate.login;
|
package com.mdd.front.validate.login;
|
||||||
|
|
||||||
import com.mdd.common.validator.annotation.IntegerContains;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
|
@ -28,8 +27,4 @@ public class RegisterValidate implements Serializable {
|
||||||
@Length(min = 6, max = 12, message = "密码必须在6~12个字符内")
|
@Length(min = 6, max = 12, message = "密码必须在6~12个字符内")
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
@NotNull(message = "client参数缺失")
|
|
||||||
@IntegerContains(values = {1, 2, 3, 4, 5, 6}, message = "不是合法客户端")
|
|
||||||
private Integer client;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate;
|
package com.mdd.front.validate.users;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -10,7 +10,7 @@ import java.io.Serializable;
|
||||||
* 用户修改密码参数
|
* 用户修改密码参数
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class UserPasswordValidate implements Serializable {
|
public class UserChangePwdValidate implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
@ -18,6 +18,8 @@ public class UserPasswordValidate implements Serializable {
|
||||||
@Pattern(message = "密码必须是6-20字母+数字组合!", regexp="^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$")
|
@Pattern(message = "密码必须是6-20字母+数字组合!", regexp="^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$")
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
@NotNull(message = "oldPassword参数缺失")
|
||||||
|
@NotNull(message = "旧密码不能为空")
|
||||||
private String oldPassword="";
|
private String oldPassword="";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
package com.mdd.front.validate.login;
|
package com.mdd.front.validate.users;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
@ -9,17 +10,20 @@ import java.io.Serializable;
|
||||||
* 忘记密码参数
|
* 忘记密码参数
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ForgetPwdValidate implements Serializable {
|
public class UserForgetPwdValidate implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@NotNull(message = "mobile参数缺失")
|
@NotNull(message = "mobile参数缺失")
|
||||||
|
@NotEmpty(message = "手机号不能为空")
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
@NotNull(message = "code参数缺失")
|
@NotNull(message = "code参数缺失")
|
||||||
|
@NotEmpty(message = "验证码不能为空")
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
@NotNull(message = "password参数缺失")
|
@NotNull(message = "password参数缺失")
|
||||||
|
@NotEmpty(message = "新密码不能为空")
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate;
|
package com.mdd.front.validate.users;
|
||||||
|
|
||||||
import com.mdd.common.validator.annotation.StringContains;
|
import com.mdd.common.validator.annotation.StringContains;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -13,7 +13,7 @@ import java.io.Serializable;
|
||||||
* 绑定或修改手机参数
|
* 绑定或修改手机参数
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class UserBindMobileValidate implements Serializable {
|
public class UserPhoneBindValidate implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
@ -28,6 +28,7 @@ public class UserBindMobileValidate implements Serializable {
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
@NotNull(message = "code参数缺失")
|
@NotNull(message = "code参数缺失")
|
||||||
|
@NotEmpty(message = "验证码不能为空")
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate;
|
package com.mdd.front.validate.users;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@ import java.io.Serializable;
|
||||||
* 获取微信手机号参数
|
* 获取微信手机号参数
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class UserMnpMobileValidate implements Serializable {
|
public class UserPhoneMnpValidate implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.validate;
|
package com.mdd.front.validate.users;
|
||||||
|
|
||||||
import com.mdd.common.validator.annotation.StringContains;
|
import com.mdd.common.validator.annotation.StringContains;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.vo;
|
package com.mdd.front.vo.article;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.vo;
|
package com.mdd.front.vo.article;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.vo;
|
package com.mdd.front.vo.login;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.mdd.front.vo;
|
package com.mdd.front.vo.login;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
Loading…
Reference in New Issue