我的应用,第三方应用链接生成

beetlsql3-dev
Mlxa0324 2 years ago
parent 70fcf56fb3
commit a659a2d9eb

@ -0,0 +1,100 @@
package com.ibeetl.jlw.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.entity.CoreUser;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* : <br>
*
*
* @Author: lx
* @Date: 2022/12/11 14:56
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class LoginTodo implements Serializable {
private static final long serialVersionUID = 1257693451422916110L;
/**
* #{@link CoreUser#getCode}
*/
private String username;
/**
*
*/
private String password;
/**
* ID 3 4
*/
private ThirdRole roleid;
/**
* ID
*/
private String teacherid;
/**
* ID
*/
private String studentid;
/**
* #{@link CoreUser#getName}
*/
private String name;
/**
*
*/
private String sex;
/**
*
*/
private String school;
/**
*
*/
private String college;
/**
*
*/
private String major;
/**
*
*/
@JsonProperty("class")
private String schoolclass;
/**
*
*/
private String studentNo;
/**
* ID
* 3 4
*/
@Getter
@RequiredArgsConstructor
public enum ThirdRole {
TEACHER_ROLE("3"), STUDENT_ROLE("4");
@JsonValue
final private String code;
}
/**
* JSON
* @return
*/
@SneakyThrows
public String toJSONString() {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(this);
}
}

@ -0,0 +1,127 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.jlw.dao.StudentDao;
import com.ibeetl.jlw.dao.TeacherDao;
import com.ibeetl.jlw.entity.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
import java.util.List;
import java.util.function.Consumer;
import static cn.jlw.util.CacheUserUtil.getStudent;
import static cn.jlw.util.CacheUserUtil.getTeacher;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
import static com.ibeetl.jlw.enums.GenderEnum.UN_KNOW;
/**
* : <br>
* Service
* @author: mlx
* @description:
* @date: 2022/12/11 15:35
* @version: 1.0
*/
@Service
@Transactional
@Validated
public class LoginTodoService {
@Autowired private TeacherDao teacherDao;
@Autowired private StudentDao studentDao;
/**
* : <br>
*
*
* @param student
* @param coreUser
* @param consumer
* @return
* @Author: lx
* @Date: 2022/12/11 15:33
*/
public LoginTodo buildStudentLoginTodo(Student student, CoreUser coreUser, Consumer<LoginTodo> consumer) {
Assert.isTrue(ObjectUtil.isAllNotEmpty(student, coreUser), "登录的用户信息不能为空!");
Long studentId = student.getStudentId();
List<StudentExtendSchoolInfo> studentExtendInfoList = studentDao.getStudentExtendSchoolInfo(studentId.toString());
StudentExtendSchoolInfo first = CollectionUtil.getFirst(studentExtendInfoList);
Assert.notNull(first, "未获取到院校信息!");
// 类型为未知 时候传递null
String gender = UN_KNOW.equals(student.getStudentGender()) || student.getStudentGender() == null ? null : student.getStudentGender().getText();
LoginTodo loginTodo = LoginTodo.builder().username(coreUser.getCode())
.password(coreUser.getPassword())
.roleid(LoginTodo.ThirdRole.STUDENT_ROLE)
.studentid(student.getStudentId().toString())
.name(coreUser.getName()).sex(gender)
.school(first.getUniversitiesCollegesName())
.college(first.getUniversityFacultyName())
.major(first.getUniversitySystemName())
.schoolclass(first.getClassName())
.studentNo(student.getStudentSn())
.build();
consumer.accept(loginTodo);
return loginTodo;
}
/**
* : <br>
*
*
* @param teacher
* @param coreUser
* @param consumer
* @return
* @Author: lx
* @Date: 2022/12/11 15:33
*/
public LoginTodo buildTeacherLoginTodo(Teacher teacher, CoreUser coreUser, Consumer<LoginTodo> consumer) {
Assert.isTrue(ObjectUtil.isAllNotEmpty(teacher, coreUser), "登录的用户信息不能为空!");
Long teacherId = teacher.getTeacherId();
List<TeacherExtendSchoolInfo> teacherExtendInfoList = teacherDao.getTeacherExtendSchoolInfo(teacherId.toString());
TeacherExtendSchoolInfo first = CollectionUtil.getFirst(teacherExtendInfoList);
Assert.notNull(first, "未获取到院校信息!");
// 类型为未知 时候传递null
String gender = UN_KNOW.equals(teacher.getTeacherGender()) || teacher.getTeacherGender() == null ? null : teacher.getTeacherGender().getText();
LoginTodo loginTodo = LoginTodo.builder().username(coreUser.getCode())
.password(coreUser.getPassword())
.roleid(LoginTodo.ThirdRole.TEACHER_ROLE)
.teacherid(teacherId.toString())
.name(coreUser.getName()).sex(gender)
.school(first.getUniversitiesCollegesName())
.college(first.getUniversityFacultyName())
.major(first.getUniversitySystemName())
.build();
consumer.accept(loginTodo);
return loginTodo;
}
/**
* : <br>
*
* @return {@link LoginTodo}
* @Author: lx
* @Date: 2022/12/11 15:45
*/
public LoginTodo buildByCurrentLoginUser() {
CoreUser user = getUser();
if (user.isStudent()) {
return buildStudentLoginTodo(getStudent(), user, (e)->{});
}
else if (user.isTeacher()) {
return buildTeacherLoginTodo(getTeacher(), user, (e)->{});
}
return null;
}
}

@ -1,15 +1,23 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.jlw.dao.ResourcesApplicationCourseDao;
import com.ibeetl.jlw.dao.ResourcesApplicationDao;
import com.ibeetl.jlw.dao.UniversitiesCollegesJurisdictionExperimentalSystemDao;
import com.ibeetl.jlw.entity.LoginTodo;
import com.ibeetl.jlw.entity.ResourcesApplication;
import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionExperimentalSystem;
import com.ibeetl.jlw.web.query.ResourcesApplicationQuery;
@ -22,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@ -44,6 +53,8 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
private TeacherService teacherService;
@Autowired
private StudentService studentService;
@Autowired
private LoginTodoService loginTodoService;
public PageQuery<ResourcesApplication>queryByCondition(PageQuery query){
PageQuery ret = resourcesApplicationDao.queryByCondition(query);
@ -196,7 +207,71 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
*/
public PageQuery<ResourcesApplication> queryMyApplicationByConditionQuery(PageQuery query) {
PageQuery ret = resourcesApplicationDao.queryMyApplicationByConditionQuery(query);
queryListAfter(ret.getList());
List<ResourcesApplication> list = ret.getList();
CollectionUtil.emptyIfNull(list).forEach(item -> {
String applicationLink = item.getApplicationLink();
applicationLink = makeHaveKeyStr(applicationLink);
String realUrl = applicationLink.concat(getKeyByCurrentUser(item.getLinkSecretKey()));
item.set("realUrl", realUrl);
});
queryListAfter(list);
return ret;
}
/**
* : <br>
* KeyJwt
*
* @param linkSecretKey
* @return {@link String}
* @Author: lx
* @Date: 2022/12/11 16:59
*/
public String getKeyByCurrentUser(String linkSecretKey) {
if (ObjectUtil.isNotEmpty(linkSecretKey)) {
LoginTodo loginTodo = loginTodoService.buildByCurrentLoginUser();
return JWT.create().withAudience(loginTodo.toJSONString()).sign(Algorithm.HMAC256(linkSecretKey));
}
return "";
}
/**
* : <br>
* url
*
* @param linkSecretKey
* @param url key applicationLink + jwt
* @Author: lx
* @Date: 2022/12/11 17:06
*/
public void decodeApplicationUrl(String linkSecretKey, String url) {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(linkSecretKey)).build();
DecodedJWT jwt = verifier.verify(url);
System.out.println(jwt.getAudience().get(0));
}
/**
* : <br>
* key=
*
* @param link
* @return {@link String}
* @Author: lx
* @Date: 2022/12/11 17:21
*/
public String makeHaveKeyStr(String link) {
final String key = "key=", sequence = "?";
String query = URLUtil.toURI(link).getQuery();
boolean isHaveKey = Arrays.stream(query.split("&")).anyMatch(item -> item.contains(key));
if (ObjectUtil.isNotEmpty(link) && !isHaveKey) {
if (link.contains(sequence)) {
return StrUtil.format("{}&{}", link, key);
}
else {
return StrUtil.format("{}?{}", link, key);
}
}
return link;
}
}

@ -113,100 +113,11 @@ public class IndexController {
return JsonResult.success(TimeTool.getNowTime());
}
private static class LoginTodo {
private String username; //账号
private String password; //密码
private String roleid; //角色ID
private String teacherid; //教师ID
private String studentid; //学生ID
private String name; //姓名
private String sex; //性别
private String school; //学校
private String college; //院校
private String major; //专业
private String schoolclass; //班级
private String studentNo;//学号
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getCollege() {
return college;
}
public void setCollege(String college) {
this.college = college;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getSchoolclass() {
return schoolclass;
}
public void setSchoolclass(String schoolclass) {
this.schoolclass = schoolclass;
}
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}
public String getRoleid() {
return roleid;
}
public void setRoleid(String roleid) {
this.roleid = roleid;
}
public String getTeacherid() {
return teacherid;
}
public void setTeacherid(String teacherid) {
this.teacherid = teacherid;
}
public String getStudentid() {
return studentid;
}
public void setStudentid(String studentid) {
this.studentid = studentid;
}
}
public static void main(String[] args){
LoginTodo loginTodo = new LoginTodo();
loginTodo.setUsername("测试教师");
loginTodo.setPassword("123qwe");
loginTodo.setRoleid("3");
loginTodo.setRoleid(LoginTodo.ThirdRole.TEACHER_ROLE);
loginTodo.setTeacherid("1");
loginTodo.setStudentid(null);
loginTodo.setName("测试教师");

@ -7,6 +7,7 @@ import com.ibeetl.admin.core.file.FileService;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.entity.ResourcesApplication;
import com.ibeetl.jlw.service.LoginTodoService;
import com.ibeetl.jlw.service.ResourcesApplicationService;
import com.ibeetl.jlw.web.query.ResourcesApplicationQuery;
import org.apache.commons.logging.Log;
@ -37,6 +38,7 @@ public class ResourcesApplicationController{
@Autowired private ResourcesApplicationService resourcesApplicationService;
@Autowired private CorePlatformService platformService;
@Autowired private LoginTodoService loginTodoService;
@Autowired
FileService fileService;
@ -156,4 +158,19 @@ public class ResourcesApplicationController{
return JsonResult.success(page);
}
}
/**
* : <br>
*
*
*
* @return {@link JsonResult}
* @Author: lx
* @Date: 2022/12/11 17:29
*/
@GetMapping(API + "/getLoginTodo.do")
@ResponseBody
public JsonResult getLoginTodo() {
return JsonResult.success(loginTodoService.buildByCurrentLoginUser());
}
}

Loading…
Cancel
Save