diff --git a/application-tenant/tenant-admin/pom.xml b/application-tenant/tenant-admin/pom.xml
index eb54156..9c94759 100644
--- a/application-tenant/tenant-admin/pom.xml
+++ b/application-tenant/tenant-admin/pom.xml
@@ -25,6 +25,8 @@
mybatis-plus-generator
${mybatisplus.version}
+
+
cn.afterturn
easypoi-base
@@ -40,6 +42,20 @@
easypoi-annotation
4.4.0
+
+
+
+ org.apache.xmlbeans
+ xmlbeans
+ 3.1.0
+
+
+
+ cn.hutool
+ hutool-all
+ 5.8.26
+
+
org.jetbrains
annotations
@@ -57,7 +73,7 @@
org.quartz-scheduler
quartz
- 2.3.2
+ 2.3.2
org.mybatis
@@ -84,7 +100,7 @@
apelet
common-online
- 1.0.0
+ 1.0.3
apelet
@@ -140,7 +156,7 @@
apelet
common-orm
- 1.0.0
+ 1.0.2
apelet
@@ -158,8 +174,6 @@
1.0.0
-
-
@@ -171,4 +185,4 @@
-
\ No newline at end of file
+
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/CorsConfig.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/CorsConfig.java
new file mode 100644
index 0000000..0fc7bd5
--- /dev/null
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/CorsConfig.java
@@ -0,0 +1,16 @@
+package apelet.tenantadmin.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig implements WebMvcConfigurer {
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/**")
+ .allowedOrigins("*") // 允许所有源
+ .allowedMethods("*") // 允许所有请求方法
+ .allowedHeaders("*"); // 允许所有请求头
+ }
+}
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/DocxTemplateController.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/DocxTemplateController.java
new file mode 100644
index 0000000..1c3af35
--- /dev/null
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/DocxTemplateController.java
@@ -0,0 +1,141 @@
+
+package apelet.tenantadmin.tenant.controller;
+
+import apelet.common.core.annotation.MyRequestBody;
+import apelet.common.core.exception.MyRuntimeException;
+import apelet.common.core.object.ObjectValue;
+import apelet.common.generator.utils.OrmGenDataSourceUtil;
+import cn.hutool.core.io.IoUtil;
+import org.apache.poi.xwpf.usermodel.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@RestController
+@RequestMapping("/api/template")
+public class DocxTemplateController {
+
+
+ @Autowired
+ private OrmGenDataSourceUtil ormGenDataSourceUtil;
+
+ private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("\\$\\{(.+?)\\}");
+
+ /**
+ * 替换字符串中 ${key},JDK8兼容
+ */
+ private String replaceContent(String text, Map dataMap) {
+ if (text == null) return "";
+ Matcher matcher = PLACEHOLDER_PATTERN.matcher(text);
+ StringBuffer sb = new StringBuffer();
+ while (matcher.find()) {
+ String key = matcher.group(1).trim();
+ Object val = dataMap.get(key);
+ String realVal = val == null ? "" : val.toString();
+ matcher.appendReplacement(sb, Matcher.quoteReplacement(realVal));
+ }
+ matcher.appendTail(sb);
+ return sb.toString();
+ }
+
+ @GetMapping("/downloadDocx")
+ public void downloadDocx(@RequestParam("id") String quotationId, HttpServletResponse response) {
+ XWPFDocument document = null;
+ InputStream templateIs = null;
+ OutputStream out = null;
+ try {
+ // 1. 查数据
+ ObjectValue objectValue = ormGenDataSourceUtil.queryOne("quotation", quotationId);
+ Map hashMap = new HashMap<>();
+ hashMap.put("name", objectValue.getString("name"));
+ hashMap.put("number", objectValue.getString("number"));
+ hashMap.put("create_time", objectValue.getString("create_time"));
+ hashMap.put("qty", objectValue.getObjectValue("qty"));
+ ObjectValue managerperson = objectValue.getObjectValue("managerperson");
+ if(managerperson != null){
+ managerperson = ormGenDataSourceUtil.queryOne(managerperson.getTableName(), managerperson.getString("id"));
+ hashMap.put("managerperson",1);
+ }
+ // 2. 读模板
+ File file = new File("D:\\work\\xykj-project\\xhgl\\zz-resource\\quotation_template.docx");
+ templateIs = new FileInputStream(file);
+ document = new XWPFDocument(templateIs);
+ // 3. 替换占位符
+ replaceParagraph(document, hashMap);
+ replaceTable(document, hashMap);
+ // 4. 设置响应头 —— 关键!
+ response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+ response.setCharacterEncoding("UTF-8");
+ String fileName = URLEncoder.encode("报价单.docx", StandardCharsets.UTF_8.name())
+ .replaceAll("\\+", "%20");
+ // 兼容各浏览器的文件名写法
+ response.setHeader("Content-Disposition",
+ "attachment; filename=\"" + fileName + "\"; filename*=UTF-8''" + fileName);
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setDateHeader("Expires", 0);
+ // 5. 写出
+ out = response.getOutputStream();
+ document.write(out);
+ out.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new MyRuntimeException("导出失败: " + e.getMessage());
+ } finally {
+ IoUtil.close(document);
+ IoUtil.close(templateIs);
+ IoUtil.close(out);
+ }
+ }
+
+
+
+
+ private void replaceParagraph(XWPFDocument document, Map dataMap) {
+ for (XWPFParagraph paragraph : document.getParagraphs()) {
+ String text = paragraph.getText();
+ Matcher matcher = PLACEHOLDER_PATTERN.matcher(text);
+ if (!matcher.find()) {
+ continue;
+ }
+ //清空原有run
+ for (XWPFRun run : paragraph.getRuns()) {
+ run.setText("", 0);
+ }
+ String newText = replaceContent(text, dataMap);
+ paragraph.createRun().setText(newText);
+ }
+ }
+
+ private void replaceTable(XWPFDocument document, Map dataMap) {
+ for (XWPFTable table : document.getTables()) {
+ for (XWPFTableRow row : table.getRows()) {
+ for (XWPFTableCell cell : row.getTableCells()) {
+ for (XWPFParagraph paragraph : cell.getParagraphs()) {
+ String text = paragraph.getText();
+ Matcher matcher = PLACEHOLDER_PATTERN.matcher(text);
+ if (!matcher.find()) {
+ continue;
+ }
+ for (XWPFRun run : paragraph.getRuns()) {
+ run.setText("", 0);
+ }
+ String newText = replaceContent(text, dataMap);
+ paragraph.createRun().setText(newText);
+ }
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/LoginController.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/LoginController.java
index 9516e0e..7387b36 100644
--- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/LoginController.java
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/LoginController.java
@@ -70,6 +70,7 @@ import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
+
/**
* 登录接口控制器类。
*
@@ -138,6 +139,7 @@ public class LoginController {
private static final String SHOW_NAME_FIELD = "showName";
private static final String SHOW_ORDER_FIELD = "showOrder";
private static final String HEAD_IMAGE_URL_FIELD = "headImageUrl";
+ private static final String SIGNATURE_IMAGE = "signatureImage";
private static final String THIRD_PARTY_CONFIG = "third_party_config";
@@ -145,20 +147,18 @@ public class LoginController {
private OrmGenDataSourceUtil ormGenDataSourceUtil;
-
-
@PostMapping("/getEhrLtpa")
@NoAuthInterface
public ResponseResult getEhrLtap(
@MyRequestBody String username
- ){
+ ) {
EasConfig easConfig = ApplicationContextHolder.getBean("easConfig");
String path = easConfig.getLtpaToken();
// String path = "/ehrapp/yd/LtpaToken.properties"; // 测试环境地址
System.out.println("getEasSsoUrl path = " + path);
String password = LtpaTokenManager.generate(username, path).toString();
JSONObject jsonData = new JSONObject();
- jsonData.put("ltap",password);
+ jsonData.put("ltap", password);
return ResponseResult.success(jsonData);
}
@@ -220,7 +220,7 @@ public class LoginController {
if (entryValue.get(entryFiledKey) instanceof ObjectValue) {
ObjectValue entityValue = (ObjectValue) entryValue.get(entryFiledKey);
Long pk = entityValue.getPkValue();
- if (pk == null || pk == 0L) {
+ if (pk == 0L) {
continue;
}
entityValue = ormGenDataSourceUtil.queryOne(entityValue.getTableName(), pk);
@@ -610,7 +610,7 @@ public class LoginController {
return;
}
responseInfo.setDownloadUri("/tenantadmin/upms/login/downloadHeadImage");
- String newHeadImage = JSONArray.toJSONString(CollUtil.newArrayList(responseInfo));
+ String newHeadImage = JSON.toJSONString(CollUtil.newArrayList(responseInfo));
if (!sysUserService.changeHeadImage(TokenData.takeFromRequest().getUserId(), newHeadImage)) {
ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST));
return;
@@ -657,7 +657,7 @@ public class LoginController {
log.info("Rest api login.");
try {
// Object tokenObj = redissonClient.getBucket(appid).get();
- String accessToken="";
+ String accessToken = "";
// if (tokenObj != null) {
// accessToken=tokenObj.toString();
// }else {
@@ -669,7 +669,7 @@ public class LoginController {
paramMap.put("scope", "app");
// 发送 POST 请求
String tokenData = HttpUtil.post(tokenUrl, paramMap);
- if (StringUtils.isBlank(tokenData)){
+ if (StringUtils.isBlank(tokenData)) {
return ResponseResult.error("500", "通过appId获取AccessToken失败,appId:" + appid);
}
JSONObject tokenJson = JSONObject.parseObject(tokenData);
@@ -679,10 +679,10 @@ public class LoginController {
accessToken = ((JSONObject) (tokenJson.get("data"))).get("accessToken").toString();
//accessToken的有效时间为6400秒,在该有效期内多次获取均返回同一token,
//连许多次请求会被拦截,因此需要本地缓存。为防止极端情况,设置过期时间为6200s
- redissonClient.getBucket(appid).set(accessToken,6200,TimeUnit.SECONDS);
+ redissonClient.getBucket(appid).set(accessToken, 6200, TimeUnit.SECONDS);
// }
String jsonInputString = String.format("{\"appid\":\"%s\", \"ticket\":\"%s\"}", appid, ticket);
- String infoUrl="https://www.yunzhijia.com/gateway/ticket/user/acquirecontext?accessToken="+accessToken;
+ String infoUrl = "https://www.yunzhijia.com/gateway/ticket/user/acquirecontext?accessToken=" + accessToken;
String userStr = HttpUtil.post(infoUrl, jsonInputString);
log.info("validateHubCloudLogin appid:{}, ticket:{} ", appid, ticket);
JSONObject userObj = JSONObject.parseObject(userStr);
@@ -729,11 +729,11 @@ public class LoginController {
log.info("Rest api mlogin.");
try {
// Object tokenObj = redissonClient.getBucket(appid).get();
- String accessToken="";
+ String accessToken = "";
// if (tokenObj != null) {
// accessToken=tokenObj.toString();
// }else {
- if(StringUtils.isEmpty(appid)){
+ if (StringUtils.isEmpty(appid)) {
appid = hubCloudAppId;
}
String tokenUrl = "https://www.yunzhijia.com/gateway/oauth2/token/getAccessToken";
@@ -744,7 +744,7 @@ public class LoginController {
paramMap.put("scope", "app");
// 发送 POST 请求
String tokenData = HttpUtil.post(tokenUrl, paramMap);
- if (StringUtils.isBlank(tokenData)){
+ if (StringUtils.isBlank(tokenData)) {
return ResponseResult.error("500", "通过appId获取AccessToken失败,appId:" + appid);
}
JSONObject tokenJson = JSONObject.parseObject(tokenData);
@@ -754,10 +754,10 @@ public class LoginController {
accessToken = ((JSONObject) (tokenJson.get("data"))).get("accessToken").toString();
//accessToken的有效时间为6400秒,在该有效期内多次获取均返回同一token,
//连许多次请求会被拦截,因此需要本地缓存。为防止极端情况,设置过期时间为6200s
- redissonClient.getBucket(appid).set(accessToken,6200,TimeUnit.SECONDS);
+ redissonClient.getBucket(appid).set(accessToken, 6200, TimeUnit.SECONDS);
// }
String jsonInputString = String.format("{\"appid\":\"%s\", \"ticket\":\"%s\"}", appid, ticket);
- String infoUrl="https://www.yunzhijia.com/gateway/ticket/user/acquirecontext?accessToken="+accessToken;
+ String infoUrl = "https://www.yunzhijia.com/gateway/ticket/user/acquirecontext?accessToken=" + accessToken;
String userStr = HttpUtil.post(infoUrl, jsonInputString);
log.info("validateHubCloudLogin appid:{}, ticket:{} ", appid, ticket);
JSONObject userObj = JSONObject.parseObject(userStr);
@@ -804,27 +804,27 @@ public class LoginController {
log.info("Rest api login.");
try {
Object tokenObj = redissonClient.getBucket(appKey).get();
- String accessToken="";
+ String accessToken = "";
if (tokenObj != null) {
- accessToken=tokenObj.toString();
- }else {
+ accessToken = tokenObj.toString();
+ } else {
String tokenUrl = "https://api.dingtalk.com/v1.0/oauth2/accessToken";
String jsonInputString = String.format(
"{\"appKey\":\"%s\", \"appSecret\":\"%s\"}",
appKey, dingTalkSecret);
// 发送 POST 请求
String tokenData = HttpUtil.post(tokenUrl, jsonInputString);
- if (StringUtils.isBlank(tokenData)){
+ if (StringUtils.isBlank(tokenData)) {
return ResponseResult.error("500", "通过appKey获取AccessToken失败,appKey:" + appKey);
}
JSONObject tokenJson = JSONObject.parseObject(tokenData);
accessToken = tokenJson.get("accessToken").toString();
//accessToken的有效时间为7200秒,在该有效期内多次获取均返回同一token,
//连许多次请求会被拦截,因此需要本地缓存。为防止极端情况,设置过期时间为6200s
- redissonClient.getBucket(appKey).set(accessToken,7000,TimeUnit.SECONDS);
+ redissonClient.getBucket(appKey).set(accessToken, 7000, TimeUnit.SECONDS);
}
- String jsonInputString = String.format("{\"code\":\"%s\"}",code);
- String infoUrl="https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token="+accessToken;
+ String jsonInputString = String.format("{\"code\":\"%s\"}", code);
+ String infoUrl = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token=" + accessToken;
String userStr = HttpUtil.post(infoUrl, jsonInputString);
log.info("validateHubCloudLogin appKey:{}, code:{} ", appKey, code);
JSONObject userObj = JSONObject.parseObject(userStr);
@@ -841,7 +841,7 @@ public class LoginController {
if (user.getUserStatus() == SysUserStatus.STATUS_LOCKED) {
return ResponseResult.error(ErrorCodeEnum.INVALID_USER_STATUS, "登录失败,用户账号被锁定!");
}
- JSONObject jsonData = this.buildLoginData(user,null,null);
+ JSONObject jsonData = this.buildLoginData(user, null, null);
return ResponseResult.success(jsonData);
} catch (Exception e) {
e.printStackTrace();
@@ -869,14 +869,14 @@ public class LoginController {
log.info("Rest api login.");
try {
- if(StringUtils.isBlank(ticket)){
- return ResponseResult.error("500","ticket不能为空");
+ if (StringUtils.isBlank(ticket)) {
+ return ResponseResult.error("500", "ticket不能为空");
}
- String jsonInputString = String.format("{\"ticket\":\"%s\",\"appId\":\"%s\",\"checkType\":1}",ticket,appId);
+ String jsonInputString = String.format("{\"ticket\":\"%s\",\"appId\":\"%s\",\"checkType\":1}", ticket, appId);
log.info("doLoginValidateDingTalkmJzt ", jsonInputString);
String userStr = HttpUtil.post(ticketUrl, jsonInputString);
- if(StringUtils.isBlank(userStr)){
- return ResponseResult.error("500","ticket异常:"+ticket);
+ if (StringUtils.isBlank(userStr)) {
+ return ResponseResult.error("500", "ticket异常:" + ticket);
}
log.info(" get user result:", userStr);
JSONObject userObj = JSONObject.parseObject(userStr);
@@ -896,7 +896,7 @@ public class LoginController {
return ResponseResult.success(jsonData);
} catch (Exception e) {
e.printStackTrace();
- return ResponseResult.error("500", "自动登录失败:"+e.getMessage());
+ return ResponseResult.error("500", "自动登录失败:" + e.getMessage());
}
}
@@ -1114,24 +1114,24 @@ public class LoginController {
}
- private String getShrRole(String zwcjName){
+ private String getShrRole(String zwcjName) {
String roleId = "";
- if(!StringUtils.isEmpty(zwcjName)){
+ if (!StringUtils.isEmpty(zwcjName)) {
SysRole role = new SysRole();
- if(!zwcjName.equals("员工")){//非员工
+ if (!zwcjName.equals("员工")) {//非员工
role.setRoleName("非员工");
- List roleList = sysRoleService.getSysRoleList(role,"");
- if(roleList.size() > 0){
+ List roleList = sysRoleService.getSysRoleList(role, "");
+ if (roleList.size() > 0) {
roleId = roleId + roleList.get(0).getRoleId();
}
}
role.setRoleName(zwcjName);
- List roleList = sysRoleService.getSysRoleList(role,"");
- if(roleList.size() > 0){
- if(StringUtils.isEmpty(roleId)){
- roleId = roleList.get(0).getRoleId()+"";
- }else{
- roleId = roleId +","+roleList.get(0).getRoleId();
+ List roleList = sysRoleService.getSysRoleList(role, "");
+ if (roleList.size() > 0) {
+ if (StringUtils.isEmpty(roleId)) {
+ roleId = roleList.get(0).getRoleId() + "";
+ } else {
+ roleId = roleId + "," + roleList.get(0).getRoleId();
}
}
}
@@ -1144,33 +1144,15 @@ public class LoginController {
String sessionId = user.getLoginName() + "_" + deviceType + "_" + MyCommonUtil.generateUuid();
JSONObject jsonData = this.createResponseData(user, sessionId);
TokenData tokenData = this.buildTokenData(user, sessionId, deviceType);
- String zwcjName = null;
- try {
- String result = (String)EasUtil.executeOsfServiceWs("com.kingdee.shr.custom.plat.osf.service.GetPersonalDataService"
- ,user.getLoginName(),new HashMap());
- JSONObject personData = JSONObject.parseObject(result);
- tokenData.setPersonId((String) personData.get("personId"));
- jsonData.put("personData", JSONObject.parseObject(result));
- zwcjName = (String)personData.get("zwcjName");
- }catch(Exception e) {
- e.printStackTrace();
- throw new RuntimeException(e);
- }
this.putTokenDataToSessionCache(tokenData);
// 这里手动将TokenData存入request,便于OperationLogAspect统一处理操作日志。
TokenData.addToRequest(tokenData);
List mobileEntryList;
- String roleId = getShrRole(zwcjName);
- if(!StringUtils.isEmpty(roleId)){
- mobileEntryList = mobileEntryService.getMobileEntryListByRoleIds(roleId);
- }else{
- if (isAdmin) {
- mobileEntryList = mobileEntryService.getAllListByOrder(SHOW_ORDER_FIELD);
- } else {
- mobileEntryList = mobileEntryService.getMobileEntryListByRoleIds(tokenData.getRoleIds());
- }
+ if (isAdmin) {
+ mobileEntryList = mobileEntryService.getAllListByOrder(SHOW_ORDER_FIELD);
+ } else {
+ mobileEntryList = mobileEntryService.getMobileEntryListByRoleIds(tokenData.getRoleIds());
}
-
jsonData.put("mobileEntryList", mobileEntryList);
Set permSet = new HashSet<>();
if (!isAdmin) {
@@ -1185,11 +1167,11 @@ public class LoginController {
if (mobileEntry.getPcurl() != null) {
mobileEntry.setPcurl(EasUtil.getEasSsoUrl(user.getLoginName(), mobileEntry.getPcurl()));
}
- if(mobileEntry.getExtraUrl() != null){
- if(mobileEntry.getExtraUrl().contains("?")){
- mobileEntry.setExtraUrl(mobileEntry.getExtraUrl()+"&userNumber="+user.getLoginName());
- }else{
- mobileEntry.setExtraUrl(mobileEntry.getExtraUrl()+"?userNumber="+user.getLoginName());
+ if (mobileEntry.getExtraUrl() != null) {
+ if (mobileEntry.getExtraUrl().contains("?")) {
+ mobileEntry.setExtraUrl(mobileEntry.getExtraUrl() + "&userNumber=" + user.getLoginName());
+ } else {
+ mobileEntry.setExtraUrl(mobileEntry.getExtraUrl() + "?userNumber=" + user.getLoginName());
}
}
}
@@ -1205,8 +1187,6 @@ public class LoginController {
sysPermService.putUserSysPermCache(sessionId, user.getUserId(), permSet);
sysDataPermService.putDataPermCache(sessionId, user.getUserId(), user.getDeptId());
}
-
-
return jsonData;
}
@@ -1221,7 +1201,7 @@ public class LoginController {
jsonData.put(IS_ADMIN, user.getUserType() == SysUserType.TYPE_ADMIN);
if (user.getDeptId() != null) {
SysDept dept = sysDeptService.getById(user.getDeptId());
- if(dept != null){
+ if (dept != null) {
jsonData.put("deptName", dept.getDeptName());
}
@@ -1552,4 +1532,6 @@ public class LoginController {
private List permCodeList;
private List permList;
}
+
+
}
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/SysUserController.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/SysUserController.java
index a19d724..2d00389 100644
--- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/SysUserController.java
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/SysUserController.java
@@ -20,6 +20,7 @@ import apelet.tenantadmin.upms.model.SysUser;
import apelet.tenantadmin.upms.service.SysUserService;
import apelet.tenantadmin.upms.vo.SysUserVo;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ReflectUtil;
import com.alibaba.fastjson.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -225,7 +226,7 @@ public class SysUserController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
- public ResponseResult> list(
+ public ResponseResult> list(
@MyRequestBody SysUserDto sysUserDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -235,7 +236,16 @@ public class SysUserController {
SysUser sysUserFilter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class);
List sysUserList = sysUserService.getSysUserListWithRelation(sysUserFilter, orderBy);
- return ResponseResult.success(MyPageUtil.makeResponseData(sysUserList, SysUser.INSTANCE));
+
+ MyPageData sysUserVoMyPageData = MyPageUtil.makeResponseData(sysUserList, SysUser.INSTANCE);
+ sysUserVoMyPageData.getDataList().forEach(f ->{
+ List collect = sysUserList.stream().filter(u -> f.getUserId().equals(u.getUserId())).collect(Collectors.toList());
+ SysUser sysUser = collect.get(0);
+ f.setSignatureImage(sysUser.getSignatureImage());
+ });
+ return ResponseResult.success(sysUserVoMyPageData);
+
+
}
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/dto/SysUserDto.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/dto/SysUserDto.java
index e096b69..86f1feb 100644
--- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/dto/SysUserDto.java
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/dto/SysUserDto.java
@@ -1,5 +1,7 @@
package apelet.tenantadmin.upms.dto;
+import apelet.common.core.annotation.UploadFlagColumn;
+import apelet.common.core.upload.UploadStoreTypeEnum;
import apelet.common.core.validator.AddGroup;
import apelet.common.core.validator.ConstDictRef;
import apelet.common.core.validator.UpdateGroup;
@@ -70,6 +72,9 @@ public class SysUserDto {
@Schema(description = "用户头像的Url")
private String headImageUrl;
+ @Schema(description = "签名")
+ private String signatureImage;
+
/**
* 用户状态(0: 正常 1: 锁定)。
*/
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/model/SysUser.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/model/SysUser.java
index e1ed6fb..85dba06 100644
--- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/model/SysUser.java
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/model/SysUser.java
@@ -63,6 +63,10 @@ public class SysUser {
@UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM)
private String headImageUrl;
+
+ @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM)
+ private String signatureImage;
+
/**
* 用户状态(0: 正常 1: 锁定)。
*/
diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/vo/SysUserVo.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/vo/SysUserVo.java
index 25c11ea..0125b29 100644
--- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/vo/SysUserVo.java
+++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/vo/SysUserVo.java
@@ -53,6 +53,8 @@ public class SysUserVo {
@Schema(description = "用户头像的Url")
private String headImageUrl;
+ @Schema(description = "签名")
+ private String signatureImage;
/**
* 用户状态(0: 正常 1: 锁定)。
*/
diff --git a/application-tenant/tenant-admin/src/main/resources/application-config.yml b/application-tenant/tenant-admin/src/main/resources/application-config.yml
index f753b89..b51ea11 100644
--- a/application-tenant/tenant-admin/src/main/resources/application-config.yml
+++ b/application-tenant/tenant-admin/src/main/resources/application-config.yml
@@ -88,11 +88,11 @@ aliyun:
oss:
enabled: true
expireSeconds: 1000
- endpoint: https://oss-cn-beijing.aliyuncs.com
+ endpoint: oss-cn-beijing.aliyuncs.com
accessKey: LTAI5t5fEgzRRtdmBvczVS6r
secretKey: uESFiyyi6EwCkM5w4a4pbx6TmVhqgx
bucketName: yy-test12
-
+ nginxOssUrl:
minio:
enabled: false
diff --git a/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml b/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml
index d622b1e..0ff9796 100644
--- a/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml
+++ b/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml
@@ -218,9 +218,9 @@ spring:
password: X7&9p8L2@6z4K7!8
driverClassName: com.mysql.cj.jdbc.Driver
name: tenant-admin
- initialSize: 10
- minIdle: 10
- maxActive: 50
+ initialSize: 5
+ minIdle: 5
+ maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
@@ -229,7 +229,7 @@ spring:
maxOpenPreparedStatements: 20
validationQuery: SELECT 'x'
testWhileIdle: true
- testOnBorrow: false
+ testOnBorrow: true
testOnReturn: false
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
filters: stat,wall
diff --git a/common/common-association/pom.xml b/common/common-association/pom.xml
index 8740d9b..e97366e 100644
--- a/common/common-association/pom.xml
+++ b/common/common-association/pom.xml
@@ -42,17 +42,17 @@
apelet
common-generator
- 1.0.0
+ 1.0.2
apelet
common-online
- 1.0.0
+ 1.0.3
common-orm
apelet
- 1.0.0
+ 1.0.2
common-msg-notice
diff --git a/common/common-association/src/main/java/apelet/association/config/FrontendConfig.java b/common/common-association/src/main/java/apelet/association/config/FrontendConfig.java
new file mode 100644
index 0000000..74b3a6e
--- /dev/null
+++ b/common/common-association/src/main/java/apelet/association/config/FrontendConfig.java
@@ -0,0 +1,16 @@
+package apelet.association.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class FrontendConfig {
+
+// @Value("${frontend.address}")
+ public String address;
+
+
+}
+
diff --git a/common/common-association/src/main/java/apelet/association/controller/DoPracticeProblemsController.java b/common/common-association/src/main/java/apelet/association/controller/DoPracticeProblemsController.java
index 4b73ddd..03412dc 100644
--- a/common/common-association/src/main/java/apelet/association/controller/DoPracticeProblemsController.java
+++ b/common/common-association/src/main/java/apelet/association/controller/DoPracticeProblemsController.java
@@ -74,8 +74,10 @@ public class DoPracticeProblemsController {
long batchNumber = IdUtil.getSnowflakeNextId();
result.put("batchNumber", batchNumber);
- collection.forEach(f -> {
- ObjectValue examQuestions = f.getObjectValue("exam_questions_id");
+ for (int i = 0; i < collection.size(); i++) {
+ ObjectValue object = collection.getObject(i);
+
+ ObjectValue examQuestions = object.getObjectValue("exam_questions_id");
list.add(examQuestions.getString("id"));
ObjectValue userExercise = new ObjectValue("user_exercise");
@@ -92,7 +94,9 @@ public class DoPracticeProblemsController {
} catch (Exception e) {
throw new RuntimeException(e);
}
- });
+
+ }
+
List