微信登录,回调

beetlsql3-dev
Mlxa0324 2 years ago
parent 490299fdd2
commit c7ef000f02

@ -1,21 +1,21 @@
package com.ibeetl.jlw.entity; package com.ibeetl.jlw.entity;
import javax.validation.constraints.NotNull;
import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.entity.BaseEntity;
import org.beetl.sql.annotation.entity.*; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.util.ValidateConfig; import com.ibeetl.admin.core.util.ValidateConfig;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.annotation.entity.InsertIgnore;
import org.beetl.sql.annotation.entity.UpdateIgnore;
import org.beetl.sql.fetch.annotation.Fetch;
import org.beetl.sql.fetch.annotation.FetchSql;
import com.ibeetl.admin.core.annotation.Dict; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
/* /*
* *
* gen by Spring Boot2 Admin 2022-11-08 * gen by Spring Boot2 Admin 2022-11-08
*/ */
@Fetch
public class CoreUserWx extends BaseEntity{ public class CoreUserWx extends BaseEntity{
//微信绑定主键 //微信绑定主键
@ -32,6 +32,13 @@ public class CoreUserWx extends BaseEntity{
//系统用户id //系统用户id
private Long userId ; private Long userId ;
// 查询关联的系统用户表,判断删除状态和启用状态
@FetchSql("select * from core_user t where t.id = #userId# and t.state = 'S1' and t.del_flag = 0 limit 1")
@UpdateIgnore
@InsertIgnore
private CoreUser coreUser;
//用户昵称 //用户昵称
@ -170,4 +177,11 @@ public class CoreUserWx extends BaseEntity{
} }
public CoreUser getCoreUser() {
return coreUser;
}
public void setCoreUser(CoreUser coreUser) {
this.coreUser = coreUser;
}
} }

@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
import cn.jlw.validate.ValidateConfig; import cn.jlw.validate.ValidateConfig;
import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.annotation.Dict;
import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.entity.BaseEntity;
import com.ibeetl.admin.core.enums.MenuEnums;
import org.beetl.sql.annotation.entity.AutoID; import org.beetl.sql.annotation.entity.AutoID;
import org.beetl.sql.fetch.annotation.Fetch; import org.beetl.sql.fetch.annotation.Fetch;
@ -12,13 +13,14 @@ import javax.validation.constraints.NotNull;
import java.util.Date; import java.util.Date;
import static cn.hutool.core.date.DateUtil.date; import static cn.hutool.core.date.DateUtil.date;
import static com.ibeetl.admin.core.enums.MenuEnums.JT_S_04;
/* /*
* *
* gen by Spring Boot2 Admin 2021-06-19 * gen by Spring Boot2 Admin 2021-06-19
*/ */
@Fetch @Fetch
public class UniversitiesColleges extends BaseEntity{ public class UniversitiesColleges extends BaseEntity implements AbstractToken {
//ID //ID
@NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class) @NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class)
@ -221,6 +223,16 @@ public class UniversitiesColleges extends BaseEntity{
this.universitiesCollegesStatus = universitiesCollegesStatus; this.universitiesCollegesStatus = universitiesCollegesStatus;
} }
@Override
public String getId() {
return universitiesCollegesId.toString();
}
@Override
public MenuEnums getIdentity() {
return JT_S_04;
}
/** /**
*@return *@return
*/ */

@ -1,43 +1,32 @@
package com.ibeetl.jlw.service; package com.ibeetl.jlw.service;
import java.io.*; import cn.hutool.core.collection.CollectionUtil;
import java.text.DateFormat; import cn.hutool.core.lang.Assert;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.math.BigDecimal;
import cn.jlw.util.ToolUtils; import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.util.TimeTool; import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.CoreUserWxDao; import com.ibeetl.jlw.dao.CoreUserWxDao;
import com.ibeetl.jlw.entity.CoreUserWx; import com.ibeetl.jlw.entity.CoreUserWx;
import com.ibeetl.jlw.web.query.CoreUserWxQuery; import com.ibeetl.jlw.web.query.CoreUserWxQuery;
import com.ibeetl.jlw.entity.FileEntity;
import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.util.PlatformException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.SqlId; import org.beetl.sql.core.SqlId;
import org.beetl.sql.core.engine.PageQuery;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.beans.factory.annotation.Autowired; import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue; import java.util.List;
/** /**
* CoreUserWx Service * CoreUserWx Service
@ -50,6 +39,7 @@ import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
public class CoreUserWxService extends CoreBaseService<CoreUserWx>{ public class CoreUserWxService extends CoreBaseService<CoreUserWx>{
@Autowired private CoreUserWxDao coreUserWxDao; @Autowired private CoreUserWxDao coreUserWxDao;
@Autowired private CoreUserService coreUserService;
public PageQuery<CoreUserWx>queryByCondition(PageQuery query){ public PageQuery<CoreUserWx>queryByCondition(PageQuery query){
PageQuery ret = coreUserWxDao.queryByCondition(query); PageQuery ret = coreUserWxDao.queryByCondition(query);
@ -167,4 +157,36 @@ public class CoreUserWxService extends CoreBaseService<CoreUserWx>{
} }
} }
/**
*
* @param openId
* @param userId
* @return
*/
public UserLoginInfo buildLoginInfoWithWx(@NotNull String openId, @NotNull Long userId){
// 构建的返回对象
UserLoginInfo loginInfo = new UserLoginInfo();
CoreUserWxQuery coreUserWxQuery = new CoreUserWxQuery();
coreUserWxQuery.setOpenid(openId);
coreUserWxQuery.setUserId(userId);
List<CoreUserWx> info = getValuesByQueryNotWithPermission(coreUserWxQuery);
if (CollectionUtil.isNotEmpty(info)) {
CoreUserWx coreUserWx = info.get(0);
// 微信登录信息,绑定的系统级用户
CoreUser bindCoreUser = coreUserWx.getCoreUser();
Assert.notNull(bindCoreUser, "绑定的用户,处于不存在或者未启用状态!");
// 查询这个对象所在的机构列表
List<CoreOrg> orgs = coreUserService.getUserOrg(bindCoreUser.getId(), bindCoreUser.getOrgId());
loginInfo.setUser(bindCoreUser);
loginInfo.setOrgs(orgs);
loginInfo.setCurrentOrg(orgs.get(0));
return loginInfo;
}
return null;
}
} }

@ -2,21 +2,16 @@ package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.jlw.token.TokenService; import cn.jlw.token.TokenService;
import cn.jlw.webSocket.WebSocketServer;
import com.ibeetl.admin.core.conf.CacheConfig;
import com.ibeetl.admin.core.conf.WxMpConfig; import com.ibeetl.admin.core.conf.WxMpConfig;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService; import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.jlw.entity.CoreUserWx; import com.ibeetl.jlw.entity.CoreUserWx;
import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.entity.Teacher;
import com.ibeetl.jlw.web.query.CoreUserWxQuery; import com.ibeetl.jlw.web.query.CoreUserWxQuery;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.builder.kefu.TextBuilder;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -43,6 +38,10 @@ public class MsgHandler extends AbstractHandler {
@Autowired @Autowired
private TokenService tokenService; private TokenService tokenService;
@Autowired @Autowired
private WebPlatformService webPlatformService;
@Autowired
private CorePlatformService corePlatformService;
@Autowired
private WxMpConfig wxConfig; private WxMpConfig wxConfig;
/** /**
@ -74,19 +73,15 @@ public class MsgHandler extends AbstractHandler {
coreUserWxQuery.setOpenid(fromUser); coreUserWxQuery.setOpenid(fromUser);
List<CoreUserWx> info = coreUserWxService.getValuesByQueryNotWithPermission(coreUserWxQuery); List<CoreUserWx> info = coreUserWxService.getValuesByQueryNotWithPermission(coreUserWxQuery);
if (CollectionUtil.isNotEmpty(info)) { if (CollectionUtil.isNotEmpty(info)) {
String token = ""; // 查询关联的状态正常的用户,是否存在
Student student = studentService.getByUserId(info.get(0).getUserId()); CoreUserWx coreUserWx = info.get(0);
if (student != null) { UserLoginInfo userLoginInfo = coreUserWxService
token = tokenService.getToken(student); .buildLoginInfoWithWx(coreUserWx.getOpenid(), coreUserWx.getUserId());
}else { // 登录信息存放Session
Teacher teacher = teacherService.getByUserId(info.get(0).getUserId()); String tokenNullable = webPlatformService.setLoginUser(userLoginInfo);
if (teacher !=null) {
token = tokenService.getToken(teacher);
}
}
map.put("type", "login"); map.put("type", "login");
map.put("status", "success"); map.put("status", "success");
map.put("token", token); map.put("token", tokenNullable);
WE_CHAT_MAP.put(userId, map); WE_CHAT_MAP.put(userId, map);
// WebSocketServer.sendToUser("token="+token, userId); // WebSocketServer.sendToUser("token="+token, userId);
return WxMpXmlOutMessage.TEXT().content("登录成功").toUser(fromUser) return WxMpXmlOutMessage.TEXT().content("登录成功").toUser(fromUser)

@ -1,9 +1,14 @@
package com.ibeetl.jlw.service; package com.ibeetl.jlw.service;
import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.EnumUtil;
import cn.jlw.token.TokenService;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.enums.MenuEnums; import com.ibeetl.admin.core.enums.MenuEnums;
import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.HttpRequestLocal; import com.ibeetl.admin.core.util.HttpRequestLocal;
import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.entity.Teacher;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -23,6 +28,8 @@ public class WebPlatformService {
@Autowired private TeacherService teacherService; @Autowired private TeacherService teacherService;
@Autowired private StudentService studentService; @Autowired private StudentService studentService;
@Autowired private UniversitiesCollegesService universitiesCollegesService; @Autowired private UniversitiesCollegesService universitiesCollegesService;
@Autowired private CorePlatformService corePlatformService;
@Autowired private TokenService tokenService;
/** /**
* Session * Session
@ -75,4 +82,26 @@ public class WebPlatformService {
} }
} }
} }
/**
* Session
* TOKEN
* @param userLoginInfo
*/
public String setLoginUser(@NotNull(message = "登录实体不能为空!") UserLoginInfo userLoginInfo) {
CoreUser user = userLoginInfo.getUser();
corePlatformService.setLoginUser(user, userLoginInfo.getCurrentOrg(), userLoginInfo.getOrgs(), null);
setUserInfoToSessionByIdentity(user);
Student student = studentService.getByUserId(user.getId());
if (student != null) {
return tokenService.getToken(student);
}else {
Teacher teacher = teacherService.getByUserId(user.getId());
if (teacher !=null) {
return tokenService.getToken(teacher);
}
}
return null;
}
} }

Loading…
Cancel
Save