Browse Source

Merge remote-tracking branch 'origin/master'

master
zhangli 2 years ago
parent
commit
4b94e359e9
  1. 2
      win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessageListener.java
  2. 1
      win-framework/win-spring-boot-starter-mybatis/src/main/resources/META-INF/spring.factories
  3. 3
      win-framework/win-spring-boot-starter-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  4. 16
      win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/file/FileApi.java
  5. 4
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/file/FileApiImpl.java
  6. 11
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java
  7. 11
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java
  8. 11
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/trends/TrendsApiImpl.java
  9. 2
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/FileController.java
  10. 6
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/vo/file/FilePageReqVO.java
  11. 6
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/vo/file/FileRespVO.java
  12. 8
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/vo/file/FileUploadReqVO.java
  13. 4
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/redis/vo/RedisGetReqVo.java
  14. 4
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/redis/vo/RedisUpdateReqVo.java
  15. 9
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileDO.java
  16. 4
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileService.java
  17. 4
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileServiceImpl.java
  18. 2
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/notify/NotifyMessageController.java
  19. 2
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java
  20. 40
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java
  21. 3
      win-server/src/main/resources/application-dev.yaml
  22. 3
      win-server/src/main/resources/application-prod.yaml
  23. 3
      win-server/src/main/resources/application-test.yaml
  24. 2
      win-server/src/main/resources/application.yaml

2
win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessageListener.java

@ -63,6 +63,8 @@ public abstract class AbstractStreamMessageListener<T extends AbstractStreamMess
this.onMessage(messageObj);
// ack 消息消费完成
redisMQTemplate.getRedisTemplate().opsForStream().acknowledge(group, message);
// 删除消费后的数据
// redisMQTemplate.getRedisTemplate().opsForStream().delete(message);
// TODO 芋艿:需要额外考虑以下几个点:
// 1. 处理异常的情况
// 2. 发送日志;以及事务的结合

1
win-framework/win-spring-boot-starter-mybatis/src/main/resources/META-INF/spring.factories

@ -1,2 +1,3 @@
org.springframework.boot.env.EnvironmentPostProcessor=\
com.win.framework.mybatis.config.IdTypeEnvironmentPostProcessor

3
win-framework/win-spring-boot-starter-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@ -1,2 +1,3 @@
com.win.framework.datasource.config.WinDataSourceAutoConfiguration
com.win.framework.mybatis.config.WinMybatisAutoConfiguration
com.win.framework.mybatis.config.WinMybatisAutoConfiguration
com.win.framework.datasource.utils.ShardingTablesLoadRunner

16
win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/file/FileApi.java

@ -11,10 +11,12 @@ public interface FileApi {
* 保存文件并返回文件的访问路径
*
* @param content 文件内容
* @param tableName 表名
* @param tableId 表数据id
* @return 文件路径
*/
default String createFile(byte[] content) {
return createFile(null, null, content);
default String createFile(byte[] content, String tableName, Long tableId) {
return createFile(null, null, content, tableName, tableId);
}
/**
@ -22,10 +24,12 @@ public interface FileApi {
*
* @param path 文件路径
* @param content 文件内容
* @param tableName 表名
* @param tableId 表数据id
* @return 文件路径
*/
default String createFile(String path, byte[] content) {
return createFile(null, path, content);
default String createFile(String path, byte[] content, String tableName, Long tableId) {
return createFile(null, path, content, tableName, tableId);
}
/**
@ -34,8 +38,10 @@ public interface FileApi {
* @param name 文件名称
* @param path 文件路径
* @param content 文件内容
* @param tableName 表名
* @param tableId 表数据id
* @return 文件路径
*/
String createFile(String name, String path, byte[] content);
String createFile(String name, String path, byte[] content, String tableName, Long tableId);
}

4
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/file/FileApiImpl.java

@ -19,8 +19,8 @@ public class FileApiImpl implements FileApi {
private FileService fileService;
@Override
public String createFile(String name, String path, byte[] content) {
return fileService.createFile(name, path, content);
public String createFile(String name, String path, byte[] content, String tableName, Long tableId) {
return fileService.createFile(name, path, content, tableName, tableId);
}
}

11
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java

@ -1,9 +1,8 @@
package com.win.module.infra.api.logger;
import com.win.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
import com.win.module.infra.convert.logger.ApiAccessLogConvert;
import com.win.module.infra.mq.message.logger.ApiAccessLogMessage;
import com.win.module.infra.mq.producer.logger.ApiAccessLogProducer;
import com.win.module.infra.service.logger.ApiAccessLogService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -18,13 +17,17 @@ import javax.annotation.Resource;
@Validated
public class ApiAccessLogApiImpl implements ApiAccessLogApi {
@Resource
private ApiAccessLogService apiAccessLogService;
@Resource
private ApiAccessLogProducer apiAccessLogProducer;
@Override
public void createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) {
ApiAccessLogMessage accessLogMessage = ApiAccessLogConvert.INSTANCE.convertMessage(createDTO);
apiAccessLogProducer.sendMessage(accessLogMessage);
apiAccessLogService.createApiAccessLog(createDTO);
// ApiAccessLogMessage accessLogMessage = ApiAccessLogConvert.INSTANCE.convertMessage(createDTO);
// apiAccessLogProducer.sendMessage(accessLogMessage);
}
}

11
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java

@ -1,9 +1,8 @@
package com.win.module.infra.api.logger;
import com.win.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
import com.win.module.infra.convert.logger.ApiErrorLogConvert;
import com.win.module.infra.mq.message.logger.ApiErrorLogMessage;
import com.win.module.infra.mq.producer.logger.ApiErrorLogProducer;
import com.win.module.infra.service.logger.ApiErrorLogService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -18,13 +17,17 @@ import javax.annotation.Resource;
@Validated
public class ApiErrorLogApiImpl implements ApiErrorLogApi {
@Resource
private ApiErrorLogService apiErrorLogService;
@Resource
private ApiErrorLogProducer apiErrorLogProducer;
@Override
public void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) {
ApiErrorLogMessage errorLogMessage = ApiErrorLogConvert.INSTANCE.convertMessage(createDTO);
apiErrorLogProducer.sendMessage(errorLogMessage);
apiErrorLogService.createApiErrorLog(createDTO);
// ApiErrorLogMessage errorLogMessage = ApiErrorLogConvert.INSTANCE.convertMessage(createDTO);
// apiErrorLogProducer.sendMessage(errorLogMessage);
}
}

11
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/trends/TrendsApiImpl.java

@ -1,9 +1,8 @@
package com.win.module.infra.api.trends;
import com.win.module.infra.api.trends.dto.TrendsCreateReqDTO;
import com.win.module.infra.convert.trends.TrendsConvert;
import com.win.module.infra.mq.message.trends.TrendsMessage;
import com.win.module.infra.mq.producer.trends.TrendsProducer;
import com.win.module.infra.service.trends.TrendsService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -21,10 +20,14 @@ public class TrendsApiImpl implements TrendsApi {
@Resource
private TrendsProducer trendsProducer;
@Resource
private TrendsService trendsService;
@Override
public void createTrends(TrendsCreateReqDTO createDTO) {
TrendsMessage trendsMessage = TrendsConvert.INSTANCE.convertMessage(createDTO);
trendsProducer.sendMessage(trendsMessage);
trendsService.createTrends(createDTO);
// TrendsMessage trendsMessage = TrendsConvert.INSTANCE.convertMessage(createDTO);
// trendsProducer.sendMessage(trendsMessage);
}
}

2
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/FileController.java

@ -46,7 +46,7 @@ public class FileController {
public CommonResult<String> uploadFile(FileUploadReqVO uploadReqVO) throws Exception {
MultipartFile file = uploadReqVO.getFile();
String path = uploadReqVO.getPath();
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getTableName(), uploadReqVO.getTableId()));
}
@DeleteMapping("/delete")

6
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/vo/file/FilePageReqVO.java

@ -27,4 +27,10 @@ public class FilePageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "表名", example = "infraTrends")
private String tableName;
@Schema(description = "表数据id", example = "9210")
private Long tableId;
}

6
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/vo/file/FileRespVO.java

@ -33,4 +33,10 @@ public class FileRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
@Schema(description = "表名", requiredMode = Schema.RequiredMode.REQUIRED)
private String tableName;
@Schema(description = "表数据id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long tableId;
}

8
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/file/vo/file/FileUploadReqVO.java

@ -17,4 +17,12 @@ public class FileUploadReqVO {
@Schema(description = "文件附件", example = "winyuanma.png")
private String path;
@Schema(description = "表名", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "表名不能为空")
private String tableName;
@Schema(description = "表数据id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "表数据id不能为空")
private Long tableId;
}

4
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/redis/vo/RedisGetReqVo.java

@ -15,8 +15,8 @@ public class RedisGetReqVo {
@Schema(description = "缓存键", requiredMode = Schema.RequiredMode.REQUIRED, example = "basic_itembasic")
@NotBlank(message = "缓存键不能为空")
@Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "缓存键账号由 数字、字母 组成")
@Size(min = 4, max = 30, message = "缓存键长度为 4-30 个字符")
@Pattern(regexp = "^[a-zA-Z0-9]{3,30}$", message = "缓存键账号由 数字、字母 组成")
@Size(min = 3, max = 30, message = "缓存键长度为 3-30 个字符")
private String key;
}

4
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/redis/vo/RedisUpdateReqVo.java

@ -15,8 +15,8 @@ public class RedisUpdateReqVo {
@Schema(description = "缓存键", requiredMode = Schema.RequiredMode.REQUIRED, example = "basic_itembasic")
@NotBlank(message = "缓存键不能为空")
@Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "缓存键账号由 数字、字母 组成")
@Size(min = 4, max = 30, message = "缓存键长度为 4-30 个字符")
@Pattern(regexp = "^[a-zA-Z0-9]{3,30}$", message = "缓存键账号由 数字、字母 组成")
@Size(min = 3, max = 30, message = "缓存键长度为 3-30 个字符")
private String key;
@Schema(description = "缓存值", requiredMode = Schema.RequiredMode.REQUIRED, example = "个性化列表")

9
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileDO.java

@ -51,5 +51,12 @@ public class FileDO extends BaseDO {
* 文件大小
*/
private Integer size;
/**
* 表名
*/
private String tableName;
/**
* 表数据id
*/
private Long tableId;
}

4
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileService.java

@ -25,9 +25,11 @@ public interface FileService {
* @param name 文件名称
* @param path 文件路径
* @param content 文件内容
* @param tableName 表名
* @param tableId 表数据id
* @return 文件路径
*/
String createFile(String name, String path, byte[] content);
String createFile(String name, String path, byte[] content, String tableName, Long tableId);
/**
* 删除文件

4
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileServiceImpl.java

@ -38,7 +38,7 @@ public class FileServiceImpl implements FileService {
@Override
@SneakyThrows
public String createFile(String name, String path, byte[] content) {
public String createFile(String name, String path, byte[] content, String tableName, Long tableId) {
// 计算默认的 path 名
String type = FileTypeUtils.getMineType(content, name);
if (StrUtil.isEmpty(path)) {
@ -62,6 +62,8 @@ public class FileServiceImpl implements FileService {
file.setUrl(url);
file.setType(type);
file.setSize(content.length);
file.setTableName(tableName);
file.setTableId(tableId);
fileMapper.insert(file);
return url;
}

2
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/notify/NotifyMessageController.java

@ -2,6 +2,7 @@ package com.win.module.system.controller.notify;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.controller.notify.vo.message.NotifyMessageMyPageReqVO;
import com.win.module.system.controller.notify.vo.message.NotifyMessagePageReqVO;
import com.win.module.system.controller.notify.vo.message.NotifyMessageRespVO;
@ -85,6 +86,7 @@ public class NotifyMessageController {
@GetMapping("/get-unread-count")
@Operation(summary = "获得当前用户的未读站内信数量")
@OperateLog(enable = false)
public CommonResult<Long> getUnreadNotifyMessageCount() {
return success(notifyMessageService.getUnreadNotifyMessageCount(getLoginUserId()));
}

2
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java

@ -160,7 +160,7 @@ public class AdminUserServiceImpl implements AdminUserService {
public String updateUserAvatar(Long id, InputStream avatarFile) throws Exception {
validateUserExists(id);
// 存储文件
String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile));
String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile), "systemUsers", id);
// 更新路径
AdminUserDO sysUserDO = new AdminUserDO();
sysUserDO.setId(id);

40
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java

@ -0,0 +1,40 @@
package com.win.module.wms.until.job;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class JobUtils {
/**
* 解析JSON串,返回两个对象的集合
*
* @param jobJson
* @param recordJson
* @return List<Map>
*/
public List<Map> parseJobAndRecord(String jobJson, String recordJson) {
//返回的对象集合
List resList = new ArrayList();
//判断前端传的数据是否为空
if (StringUtils.isNotEmpty(jobJson)) {
// 任务参数
JSONObject jobJsonObject = JSONUtil.parseObj(jobJson);
Map jobMap = jobJsonObject.get("job", Map.class);
resList.add(jobMap);
}
//判断前端传的数据是否为空
if (StringUtils.isNotEmpty(jobJson)) {
// 记录参数
JSONObject recordJsonObject = JSONUtil.parseObj(recordJson);
Map recordMap = recordJsonObject.get("record", Map.class);
resList.add(recordMap);
}
return resList;
}
}

3
win-server/src/main/resources/application-dev.yaml

@ -58,8 +58,7 @@ spring:
# t_user 是逻辑表
infra_trends:
# 配置数据节点,这里是按月分表
#actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}},master.infra_trends_$->{2024..2030}${(1..12).collect{t->t.toString().padLeft(2,'0')}}
actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}}
actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}},master.infra_trends_$->{2024..2030}${(1..12).collect{t->t.toString().padLeft(2,'0')}}
tableStrategy:
# 使用标准分片策略
standard:

3
win-server/src/main/resources/application-prod.yaml

@ -58,8 +58,7 @@ spring:
# t_user 是逻辑表
infra_trends:
# 配置数据节点,这里是按月分表
#actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}},master.infra_trends_$->{2024..2030}${(1..12).collect{t->t.toString().padLeft(2,'0')}}
actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}}
actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}},master.infra_trends_$->{2024..2030}${(1..12).collect{t->t.toString().padLeft(2,'0')}}
tableStrategy:
# 使用标准分片策略
standard:

3
win-server/src/main/resources/application-test.yaml

@ -58,8 +58,7 @@ spring:
# t_user 是逻辑表
infra_trends:
# 配置数据节点,这里是按月分表
#actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}},master.infra_trends_$->{2024..2030}${(1..12).collect{t->t.toString().padLeft(2,'0')}}
actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}}
actualDataNodes: master.infra_trends_$->{2023}${(10..12).collect{t->t.toString().padLeft(2,'0')}},master.infra_trends_$->{2024..2030}${(1..12).collect{t->t.toString().padLeft(2,'0')}}
tableStrategy:
# 使用标准分片策略
standard:

2
win-server/src/main/resources/application.yaml

@ -139,7 +139,7 @@ win:
pubsub:
enable: false # 是否开启 Redis pubsub 广播消费,默认为 true。这里设置成 false,可以按需开启
stream:
enable: true # 是否开启 Redis stream 集群消费,默认为 true。这里设置成 false,可以按需开启
enable: false # 是否开启 Redis stream 集群消费,默认为 true。这里设置成 false,可以按需开启
tenant: # 多租户相关配置项
enable: true
ignore-urls:

Loading…
Cancel
Save