This commit is contained in:
那些花儿
2025-04-24 18:55:35 +08:00
parent f55420fc1d
commit 2a6cd56497
6 changed files with 97 additions and 24 deletions
@@ -1,8 +1,11 @@
package com.budwk.app.client.auth.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.budwk.app.base.constant.RedisConstant;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.result.Result;
import com.budwk.app.client.auth.service.ClientAuthService;
import com.budwk.app.client.auth.vo.ClientLoginBody;
import com.budwk.app.sys.models.Client_user;
import com.budwk.app.sys.models.Sys_log;
import com.budwk.app.sys.models.Sys_user;
@@ -17,10 +20,9 @@ import org.nutz.dao.Dao;
import org.nutz.integration.jedis.RedisService;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Filters;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.adaptor.JsonAdaptor;
import org.nutz.mvc.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -45,6 +47,8 @@ public class ClientAuthController {
private SysMsgService sysMsgService;
@Inject
private ValidateService validateService;
@Inject
private ClientAuthService clientAuthService;
@At("")
@Ok("beetl:/platform/sys/login.html")
@@ -54,31 +58,29 @@ public class ClientAuthController {
/**
* 短信登录
* @param mobile 手机号
* @param code 验证码
* @param req 请求
*/
@At("/doSmsLogin")
@At("/sms-login")
@Ok("json")
public Object doSmsLogin(@Param("mobile") String mobile, @Param("code") String code, HttpServletRequest req) {
@AdaptBy(type = JsonAdaptor.class)
public Object doSmsLogin(ClientLoginBody loginBody, HttpServletRequest req) {
try {
int count = dao.count(Client_user.class, Cnd.where(Client_user::getMobile, "=", mobile));
if (count == 0) {
return Result.error("手机号不存在");
}
Client_user user = null;
validateService.checkSMSCode(mobile, code);
user = dao.fetch(Client_user.class, Cnd.where(Client_user::getMobile, "=", mobile));
if (user == null) {
return Result.error("用户登录失败");
}
StpClientUtil.STP.login(user.getId());
StpClientUtil.STP.checkLogin();
return Result.success("login.success");
String token = clientAuthService.doSmsLogin(loginBody);
return Result.success().addData(token);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error(e.getMessage());
}
}
@At("/send-sms-code/?")
@Ok("json")
public Object sendSmsCode(String phone) {
try {
validateService.getSmsCode(phone);
return Result.success(NutMap.NEW().addv("key", RedisConstant.UCENTER_SMSCODE + phone)).addMsg("发送成功");
} catch (BaseException e) {
return Result.error(e.getMessage());
}
}
}
@@ -0,0 +1,14 @@
package com.budwk.app.client.auth.service;
import com.budwk.app.client.auth.vo.ClientLoginBody;
public interface ClientAuthService {
/**
* 手机短信登录
* @param loginBody 登录信息
* @return token
*/
String doSmsLogin(ClientLoginBody loginBody);
}
@@ -0,0 +1,43 @@
package com.budwk.app.client.auth.service;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.result.Result;
import com.budwk.app.client.auth.vo.ClientLoginBody;
import com.budwk.app.sys.models.Client_user;
import com.budwk.app.web.commons.auth.satoken.StpClientUtil;
import com.budwk.app.web.commons.auth.service.ValidateService;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@IocBean
public class ClientAuthServiceImpl implements ClientAuthService {
@Inject
private Dao dao;
@Inject
private ValidateService validateService;
@Override
public String doSmsLogin(ClientLoginBody loginBody) {
Client_user user = null;
int count = dao.count(Client_user.class, Cnd.where(Client_user::getPhone, "=", loginBody.getPhone()));
if (count == 0) {
// 自动注册
user = new Client_user();
user.setPhone(loginBody.getPhone());
user.setUserName("用户" + loginBody.getPhone());
dao.insert(user);
}
validateService.checkSMSCode(loginBody.getPhone(), loginBody.getSmsCode());
user = dao.fetch(Client_user.class, Cnd.where(Client_user::getPhone, "=", loginBody.getPhone()));
if (user == null) {
throw new BaseException("用户登录失败");
}
StpClientUtil.STP.login(user.getId());
StpClientUtil.STP.checkLogin();
return StpClientUtil.STP.getTokenValue();
}
}
@@ -0,0 +1,12 @@
package com.budwk.app.client.auth.vo;
import lombok.Data;
@Data
public class ClientLoginBody {
private String phone;
private String smsCode;
}
@@ -33,7 +33,8 @@ public class ClientActivityController {
t1.startTime,
t1.endTime,
t1.signStartTime,
t1.signEndTime
t1.signEndTime,
t1.cover
FROM
activity t1
$condition
@@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = true)
@@ -31,7 +32,7 @@ public class Client_user extends BaseModel implements Serializable {
@Column
@ColDefine(type = ColType.VARCHAR, width = 11)
@Comment("手机号")
private String mobile;
private String phone;
@Column
@ColDefine(type = ColType.VARCHAR, width = 255)