Browse Source

日志开启mq,修改规则接口

master
刘忱 2 years ago
parent
commit
ffbde0debc
  1. 8
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java
  2. 8
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java
  3. 8
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/trends/TrendsApiImpl.java
  4. 115
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java
  5. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/RulePageReqVO.java
  6. 25
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java
  7. 46
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java
  8. 2
      win-server/src/main/resources/application.yaml

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

@ -1,6 +1,8 @@
package com.win.module.infra.api.logger; package com.win.module.infra.api.logger;
import com.win.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; 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.mq.producer.logger.ApiAccessLogProducer;
import com.win.module.infra.service.logger.ApiAccessLogService; import com.win.module.infra.service.logger.ApiAccessLogService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -25,9 +27,9 @@ public class ApiAccessLogApiImpl implements ApiAccessLogApi {
@Override @Override
public void createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) { public void createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) {
apiAccessLogService.createApiAccessLog(createDTO); //apiAccessLogService.createApiAccessLog(createDTO);
// ApiAccessLogMessage accessLogMessage = ApiAccessLogConvert.INSTANCE.convertMessage(createDTO); ApiAccessLogMessage accessLogMessage = ApiAccessLogConvert.INSTANCE.convertMessage(createDTO);
// apiAccessLogProducer.sendMessage(accessLogMessage); apiAccessLogProducer.sendMessage(accessLogMessage);
} }
} }

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

@ -1,6 +1,8 @@
package com.win.module.infra.api.logger; package com.win.module.infra.api.logger;
import com.win.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; 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.mq.producer.logger.ApiErrorLogProducer;
import com.win.module.infra.service.logger.ApiErrorLogService; import com.win.module.infra.service.logger.ApiErrorLogService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -25,9 +27,9 @@ public class ApiErrorLogApiImpl implements ApiErrorLogApi {
@Override @Override
public void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) { public void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) {
apiErrorLogService.createApiErrorLog(createDTO); //apiErrorLogService.createApiErrorLog(createDTO);
// ApiErrorLogMessage errorLogMessage = ApiErrorLogConvert.INSTANCE.convertMessage(createDTO); ApiErrorLogMessage errorLogMessage = ApiErrorLogConvert.INSTANCE.convertMessage(createDTO);
// apiErrorLogProducer.sendMessage(errorLogMessage); apiErrorLogProducer.sendMessage(errorLogMessage);
} }
} }

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

@ -1,6 +1,8 @@
package com.win.module.infra.api.trends; package com.win.module.infra.api.trends;
import com.win.module.infra.api.trends.dto.TrendsCreateReqDTO; 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.mq.producer.trends.TrendsProducer;
import com.win.module.infra.service.trends.TrendsService; import com.win.module.infra.service.trends.TrendsService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -25,9 +27,9 @@ public class TrendsApiImpl implements TrendsApi {
@Override @Override
public void createTrends(TrendsCreateReqDTO createDTO) { public void createTrends(TrendsCreateReqDTO createDTO) {
trendsService.createTrends(createDTO); //trendsService.createTrends(createDTO);
// TrendsMessage trendsMessage = TrendsConvert.INSTANCE.convertMessage(createDTO); TrendsMessage trendsMessage = TrendsConvert.INSTANCE.convertMessage(createDTO);
// trendsProducer.sendMessage(trendsMessage); trendsProducer.sendMessage(trendsMessage);
} }
} }

115
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java

@ -1,42 +1,27 @@
package com.win.module.wms.controller.rule; package com.win.module.wms.controller.rule;
import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.PageResult;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.rule.vo.RuleCreateReqVO;
import com.win.module.wms.controller.rule.vo.*; import com.win.module.wms.controller.rule.vo.RulePageReqVO;
import com.win.module.wms.controller.rule.vo.RuleImportExcelVo; import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.controller.rule.vo.RuleUpdateReqVO;
import io.swagger.v3.oas.annotations.Parameters; import com.win.module.wms.convert.rule.RuleConvert;
import org.springframework.web.bind.annotation.*; import com.win.module.wms.dal.dataobject.rule.RuleDO;
import javax.annotation.Resource; import com.win.module.wms.service.rule.RuleService;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.*; import javax.annotation.Resource;
import javax.servlet.http.*; import javax.validation.Valid;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import java.io.IOException;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.common.pojo.CommonResult.success;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.win.module.wms.controller.rule.vo.*;
import com.win.module.wms.dal.dataobject.rule.RuleDO;
import com.win.module.wms.convert.rule.RuleConvert;
import com.win.module.wms.service.rule.RuleService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 规则") @Tag(name = "管理后台 - 规则")
@RestController @RestController
@RequestMapping("/wms/rule") @RequestMapping("/wms/rule")
@ -82,15 +67,6 @@ public class RuleController {
return success(RuleConvert.INSTANCE.convert(rule)); return success(RuleConvert.INSTANCE.convert(rule));
} }
@GetMapping("/list")
@Operation(summary = "获得规则列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('wms:rule:query')")
public CommonResult<List<RuleRespVO>> getRuleList(@RequestParam("ids") Collection<Long> ids) {
List<RuleDO> list = ruleService.getRuleList(ids);
return success(RuleConvert.INSTANCE.convertList(list));
}
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得规则分页") @Operation(summary = "获得规则分页")
@PreAuthorize("@ss.hasPermission('wms:rule:query')") @PreAuthorize("@ss.hasPermission('wms:rule:query')")
@ -99,63 +75,4 @@ public class RuleController {
return success(RuleConvert.INSTANCE.convertPage(pageResult)); return success(RuleConvert.INSTANCE.convertPage(pageResult));
} }
@GetMapping("/export-excel")
@Operation(summary = "导出规则 Excel")
@PreAuthorize("@ss.hasPermission('wms:rule:export')")
@OperateLog(type = EXPORT)
public void exportRuleExcel(@Valid RuleExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<RuleDO> list = ruleService.getRuleList(exportReqVO);
// 导出 Excel
List<RuleExcelVO> datas = RuleConvert.INSTANCE.convertList02(list);
for(RuleExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "规则.xls", "数据", RuleExcelVO.class, datas);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入规则信息模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<RuleImportExcelVo> list = Arrays.asList(
);
// 手动创建导出 demo
Map<Integer, String[]> mapDropDown = new HashMap<>();
// 输出
// 输出
ExcelUtils.write(response, "规则导入模板.xls", "规则列表", RuleImportExcelVo.class, list,mapDropDown);
}
@PostMapping("/import")
@Operation(summary = "导入规则信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:rule:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<RuleImportExcelVo> list = ExcelUtils.read(file, RuleImportExcelVo.class);
List<RuleImportExcelVo> errorList = ruleService.importRuleList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("规则导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
} }

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/RulePageReqVO.java

@ -1,9 +1,12 @@
package com.win.module.wms.controller.rule.vo; package com.win.module.wms.controller.rule.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam; import com.win.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 规则分页 Request VO") @Schema(description = "管理后台 - 规则分页 Request VO")
@Data @Data
@ -18,6 +21,7 @@ public class RulePageReqVO extends PageParam {
private Integer priority; private Integer priority;
@Schema(description = "代码") @Schema(description = "代码")
@NotNull(message = "代码不能为空")
private String code; private String code;
@Schema(description = "名称") @Schema(description = "名称")

25
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java

@ -1,15 +1,15 @@
package com.win.module.wms.service.rule; package com.win.module.wms.service.rule;
import java.util.*; import com.win.framework.common.pojo.PageResult;
import javax.validation.*;
import com.win.module.wms.controller.rule.vo.RuleCreateReqVO; import com.win.module.wms.controller.rule.vo.RuleCreateReqVO;
import com.win.module.wms.controller.rule.vo.RuleExportReqVO;
import com.win.module.wms.controller.rule.vo.RulePageReqVO; import com.win.module.wms.controller.rule.vo.RulePageReqVO;
import com.win.module.wms.controller.rule.vo.*; import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.saleprice.vo.SalepriceImportExcelVo; import com.win.module.wms.controller.rule.vo.RuleUpdateReqVO;
import com.win.module.wms.dal.dataobject.rule.RuleDO; import com.win.module.wms.dal.dataobject.rule.RuleDO;
import com.win.framework.common.pojo.PageResult;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/** /**
* 规则 Service 接口 * 规则 Service 接口
@ -64,17 +64,6 @@ public interface RuleService {
*/ */
PageResult<RuleDO> getRulePage(RulePageReqVO pageReqVO); PageResult<RuleDO> getRulePage(RulePageReqVO pageReqVO);
/**
* 获得规则列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 规则列表
*/
List<RuleDO> getRuleList(RuleExportReqVO exportReqVO);
List<RuleImportExcelVo> importRuleList(List<RuleImportExcelVo> importTeam, Integer mode, boolean updatePart);
/**************** 规则接口 ****************/ /**************** 规则接口 ****************/
/** /**

46
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java

@ -1,22 +1,21 @@
package com.win.module.wms.service.rule; package com.win.module.wms.service.rule;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.rule.vo.*; import com.win.module.wms.controller.rule.vo.RuleCreateReqVO;
import com.win.module.wms.controller.rule.vo.RulePageReqVO;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.controller.rule.vo.RuleUpdateReqVO;
import com.win.module.wms.convert.rule.RuleConvert; import com.win.module.wms.convert.rule.RuleConvert;
import com.win.module.wms.dal.dataobject.rule.RuleDO; import com.win.module.wms.dal.dataobject.rule.RuleDO;
import com.win.module.wms.dal.mysql.rule.RuleMapper; import com.win.module.wms.dal.mysql.rule.RuleMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -80,43 +79,6 @@ public class RuleServiceImpl implements RuleService {
return ruleMapper.selectPage(pageReqVO); return ruleMapper.selectPage(pageReqVO);
} }
@Override
public List<RuleDO> getRuleList(RuleExportReqVO exportReqVO) {
return ruleMapper.selectList(exportReqVO);
}
public List<RuleImportExcelVo> importRuleList(List<RuleImportExcelVo> rules, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(rules)) {
throw exception(RULE_IMPORT_LIST_IS_EMPTY);
}
List<RuleImportExcelVo> errorList = new ArrayList<>();
rules.forEach(rule -> {
// 校验,判断是否有不符合的原因
try {
if(mode != null){
validateRuleForCreateOrUpdate(null,rule.getCode(),rule.getStrategyCode(),rule.getPriority());
}
} catch (ServiceException ex) {
errorList.add(rule);
return;
}
// 判断如果不存在,在进行插入
RuleDO existRule = ruleMapper.selectByCode(rule.getCode());
if (existRule == null&& mode != 3) {
ruleMapper.insert(RuleConvert.INSTANCE.convert(rule));
} else if (existRule != null && mode != 2) {// 如果存在,判断是否允许更新
RuleDO ruleDO = RuleConvert.INSTANCE.convert(rule);
ruleDO.setId(existRule.getId());
ruleMapper.updateById(ruleDO);
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
private void validateRuleForCreateOrUpdate(Long id, String code, String strategyCode,Integer priority) { private void validateRuleForCreateOrUpdate(Long id, String code, String strategyCode,Integer priority) {
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils.executeIgnore(() -> { DataPermissionUtils.executeIgnore(() -> {

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

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

Loading…
Cancel
Save