资金账户信息

beetlsql3-dev
Mlxa0324 2 years ago
parent bc0a25d60d
commit 49895aabd2

@ -68,6 +68,10 @@ public class LoginTodo implements Serializable {
* ID * ID
*/ */
private String schoolid; private String schoolid;
/**
* ID
*/
private String applicationId;
/** /**
* *
*/ */

@ -2,6 +2,9 @@ package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;
import cn.hutool.jwt.signers.JWTSigner;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.jlw.dao.StudentDao; import com.ibeetl.jlw.dao.StudentDao;
import com.ibeetl.jlw.dao.TeacherDao; import com.ibeetl.jlw.dao.TeacherDao;
@ -129,4 +132,32 @@ public class LoginTodoService {
} }
return null; return null;
} }
/**
* token
* @param applicationToken
* @return
*/
public LoginTodo getPayloadByString(String applicationToken) {
try {
JWTPayload payload = JWTUtil.parseToken(applicationToken).getPayload();
return payload.getClaimsJson().toBean(LoginTodo.class);
}catch (Exception e) {
return null;
}
}
/**
* token
* @param applicationToken
* @return
*/
public String getSignByString(String applicationToken) {
try {
JWTSigner signer = JWTUtil.parseToken(applicationToken).getSigner();
return signer.getAlgorithm();
}catch (Exception e) {
return null;
}
}
} }

@ -360,7 +360,7 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
String applicationLink = item.getApplicationLink(); String applicationLink = item.getApplicationLink();
// 根据应用设置的Key生成单点登录的真实链接 // 根据应用设置的Key生成单点登录的真实链接
String realUrl = applicationLink.concat(getKeyByCurrentUser(item.getLinkSecretKey())); String realUrl = applicationLink.concat(getKeyByCurrentUser(item.getResourcesApplicationId(), item.getLinkSecretKey()));
item.setRealUrl(realUrl); item.setRealUrl(realUrl);
item.setCanUsed(true); item.setCanUsed(true);
}); });
@ -372,14 +372,17 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
* : <br> * : <br>
* KeyJwt * KeyJwt
* *
* @param linkSecretKey * @param resourcesApplicationId ID
* @param linkSecretKey
* @return {@link String} * @return {@link String}
* @Author: lx * @Author: lx
* @Date: 2022/12/11 16:59 * @Date: 2022/12/11 16:59
*/ */
public String getKeyByCurrentUser(String linkSecretKey) { public String getKeyByCurrentUser(Long resourcesApplicationId, String linkSecretKey) {
if (ObjectUtil.isNotEmpty(linkSecretKey)) { if (ObjectUtil.isNotEmpty(linkSecretKey)) {
LoginTodo loginTodo = loginTodoService.buildByCurrentLoginUser(); LoginTodo loginTodo = loginTodoService.buildByCurrentLoginUser();
// 应用ID传递进去方便获取后面回传获取密钥
loginTodo.setApplicationId(resourcesApplicationId.toString());
String sign = JWT.create().withPayload(loginTodo.toMap()).sign(Algorithm.HMAC256(linkSecretKey)); String sign = JWT.create().withPayload(loginTodo.toMap()).sign(Algorithm.HMAC256(linkSecretKey));
// LoginTodo str = decodeApplicationUrl(linkSecretKey, sign); // LoginTodo str = decodeApplicationUrl(linkSecretKey, sign);
// System.out.println(str); // System.out.println(str);

@ -1,5 +1,8 @@
package com.ibeetl.jlw.service; package com.ibeetl.jlw.service;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWTUtil;
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;
@ -8,6 +11,8 @@ 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.StudentAccountAssetAllocationDao; import com.ibeetl.jlw.dao.StudentAccountAssetAllocationDao;
import com.ibeetl.jlw.entity.LoginTodo;
import com.ibeetl.jlw.entity.ResourcesApplication;
import com.ibeetl.jlw.entity.StudentAccountAssetAllocation; import com.ibeetl.jlw.entity.StudentAccountAssetAllocation;
import com.ibeetl.jlw.web.query.StudentAccountAssetAllocationQuery; import com.ibeetl.jlw.web.query.StudentAccountAssetAllocationQuery;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -18,6 +23,8 @@ 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 javax.validation.constraints.NotBlank;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -32,6 +39,8 @@ import java.util.List;
public class StudentAccountAssetAllocationService extends CoreBaseService<StudentAccountAssetAllocation>{ public class StudentAccountAssetAllocationService extends CoreBaseService<StudentAccountAssetAllocation>{
@Autowired private StudentAccountAssetAllocationDao studentAccountAssetAllocationDao; @Autowired private StudentAccountAssetAllocationDao studentAccountAssetAllocationDao;
@Autowired private LoginTodoService loginTodoService;
@Autowired private ResourcesApplicationService resourcesApplicationService;
public PageQuery<StudentAccountAssetAllocation>queryByCondition(PageQuery query){ public PageQuery<StudentAccountAssetAllocation>queryByCondition(PageQuery query){
PageQuery ret = studentAccountAssetAllocationDao.queryByCondition(query); PageQuery ret = studentAccountAssetAllocationDao.queryByCondition(query);
@ -150,11 +159,72 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen
} }
} }
public void updateByApplicationToken(StudentAccountAssetAllocationQuery param) { public void updateByApplicationToken(@NotBlank(message = "applicationToken 传递的token不能为空") String applicationToken, StudentAccountAssetAllocationQuery param) {
// 获取资金账户信息
List<StudentAccountAssetAllocation> accountAssetAllocationList = getByApplicationToken(applicationToken, param);
Assert.isTrue(accountAssetAllocationList.size() == 1, "无法对多个账户进行修改操作!");
// 主键拿过来
param.setId(accountAssetAllocationList.get(0).getId());
updateTemplate(param.pojo());
} }
public Object getByApplicationToken(StudentAccountAssetAllocationQuery param) { /**
return null; * token
*
* @param applicationToken token
* @param param
* @return
*/
public List<StudentAccountAssetAllocation> getByApplicationToken(@NotBlank(message = "applicationToken 传递的token不能为空") String applicationToken, StudentAccountAssetAllocationQuery param) {
LoginTodo loginTodo = validateAndGetLoginTodo(applicationToken);
// 学生ID
final String studentId = loginTodo.getStudentid();
Assert.notEmpty(studentId, "该接口只允许学生访问!");
// 应用ID
final String applicationId = loginTodo.getApplicationId();
// 院校ID
final String universitiesCollegesId = loginTodo.getSchoolid();
Assert.isTrue(StrUtil.isAllNotEmpty(studentId, applicationId, universitiesCollegesId), "学生ID、应用ID、院校ID都不能为空");
// 从token中获取必要条件
param.setStudentId(Long.valueOf(studentId));
param.setApplicationId(Long.valueOf(applicationId));
param.setUniversitiesCollegesId(Long.valueOf(universitiesCollegesId));
List<StudentAccountAssetAllocation> accountAssetAllocation = getValuesByQueryNotWithPermission(param);
Assert.notNull(accountAssetAllocation, "账户不存在!");
return accountAssetAllocation;
}
/**
*
*
* @param applicationToken token
* @return
*/
private LoginTodo validateAndGetLoginTodo(String applicationToken) {
LoginTodo payload = loginTodoService.getPayloadByString(applicationToken);
Assert.notNull(payload, "回传的token不是有效的加密串");
ResourcesApplication resourcesApplication = resourcesApplicationService.queryById(payload.getApplicationId());
Assert.notNull(resourcesApplication, "未查询到应用的相关信息!");
boolean verify = JWTUtil.verify(applicationToken, resourcesApplication.getLinkSecretKey().getBytes(StandardCharsets.UTF_8));
Assert.isTrue(verify, "token被修改过更新失败");
return payload;
} }
} }

@ -20,7 +20,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
@ -87,9 +86,9 @@ public class StudentAccountAssetAllocationController{
*/ */
@PostMapping(API + "/updateByApplicationToken.do") @PostMapping(API + "/updateByApplicationToken.do")
@ResponseBody @ResponseBody
public JsonResult updateByApplicationToken(@NotBlank(message = "applicationToken 传递的token不能为空") @RequestParam("applicationToken") String applicationToken, public JsonResult updateByApplicationToken(@RequestParam("applicationToken") String applicationToken,
@RequestBody StudentAccountAssetAllocationQuery param) { @RequestBody StudentAccountAssetAllocationQuery param) {
studentAccountAssetAllocationService.updateByApplicationToken(param); studentAccountAssetAllocationService.updateByApplicationToken(applicationToken, param);
return JsonResult.success(); return JsonResult.success();
} }
@ -103,9 +102,9 @@ public class StudentAccountAssetAllocationController{
*/ */
@PostMapping(API + "/getByApplicationToken.do") @PostMapping(API + "/getByApplicationToken.do")
@ResponseBody @ResponseBody
public JsonResult getByApplicationToken(@NotBlank(message = "applicationToken 传递的token不能为空") @RequestParam("applicationToken") String applicationToken, public JsonResult<List<StudentAccountAssetAllocation>> getByApplicationToken(@RequestParam("applicationToken") String applicationToken,
@RequestBody StudentAccountAssetAllocationQuery param) { @RequestBody StudentAccountAssetAllocationQuery param) {
return JsonResult.success(studentAccountAssetAllocationService.getByApplicationToken(param)); return JsonResult.success(studentAccountAssetAllocationService.getByApplicationToken(applicationToken, param));
} }

Loading…
Cancel
Save