1.添加微信小程序验证登录

2.添加敏感词上传
3.保存工作描述时,验证敏感词
This commit is contained in:
sh
2025-10-20 09:54:51 +08:00
parent da48a9c33a
commit 47351f41eb
20 changed files with 681 additions and 0 deletions

View File

@@ -2,7 +2,12 @@ package com.ruoyi.framework.web.service;
import javax.annotation.Resource;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.cms.service.IAppUserService;
import com.ruoyi.cms.util.WechatUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
@@ -57,6 +62,10 @@ public class SysLoginService
@Autowired
private TokenSiteService tokenSiteService;
@Autowired
WechatUtil wechatUtil;
@Autowired
private IAppUserService appUserService;
/**
* 登录验证
*
@@ -118,6 +127,24 @@ public class SysLoginService
// 生成token
return tokenSiteService.createToken(loginSiteUser);
}
/**
* 根据微信生成的
* @param appUser
* @return
*/
public String loginUserIdApp(AppUser appUser)
{
LoginSiteUser loginSiteUser = new LoginSiteUser();
loginSiteUser.setUserId(appUser.getUserId());
loginSiteUser.setUser(appUser);
recordLoginInfo(appUser);
AsyncManager.me().execute(AsyncFactory.recordLogininfor(appUser.getName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
recordLoginInfo(appUser);
// 生成token
return tokenSiteService.createToken(loginSiteUser);
}
//单点登录
public String loginOss(String ticket)
{
@@ -209,4 +236,44 @@ public class SysLoginService
sysUser.setLoginDate(DateUtils.getNowDate());
userService.updateUserProfile(sysUser);
}
/**
* 小程序微信授权登录
* @param dto
* @return
*/
public AjaxResult appLogin(LoginBody dto){
JSONObject sessionInfo = wechatUtil.code2Session("appid", "secret", dto.getCode());
String openid = sessionInfo.getString("openid");
String unionid = sessionInfo.getString("unionid");
String sessionKey = sessionInfo.getString("session_key");
if (openid == null) {
return AjaxResult.error("微信授权失败");
}
JSONObject phoneInfo = wechatUtil.decryptPhoneNumber(dto.getEncryptedData(), sessionKey, dto.getIv());
String phone = phoneInfo.getString("phoneNumber");
if (phone == null) {
return AjaxResult.error("获取手机号失败");
}
// 3. 检查手机号是否已被绑定
AppUser existUser = appUserService.getPhone(phone);
if (existUser != null) {
return AjaxResult.error("该手机号已注册");
}
// 4. 创建用户并存储所有信息
AppUser appUser = new AppUser();
appUser.setOpenid(openid);
appUser.setUnionid(unionid);
appUser.setPhone(phone);
appUserService.insertAppUser(appUser);
// 5. 生成系统令牌
AjaxResult ajax = AjaxResult.success();
String token = loginUserIdApp(appUser);
ajax.put(Constants.TOKEN, token);
return ajax;
}
}