From a4e3ce0b00b39b28f64d21dd4a237a02152ea4ce Mon Sep 17 00:00:00 2001 From: youjie <272855983@qq.com> Date: Fri, 17 Feb 2023 11:11:20 +0800 Subject: [PATCH] 注入名字时 用真实名字 --- huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java | 27 ++++++++++----------------- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java | 2 +- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java | 7 ++----- 4 files changed, 167 insertions(+), 23 deletions(-) create mode 100644 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java diff --git a/huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java b/huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java index 79a828b..65e23d7 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java @@ -1,18 +1,12 @@ package org.jeecg; -import java.net.Inet4Address; -import java.net.Inet6Address; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.net.UnknownHostException; +import java.net.*; import java.util.Enumeration; import javax.transaction.SystemException; import org.jeecg.common.util.oConvertUtils; import org.springframework.boot.SpringApplication; -//import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; @@ -20,10 +14,12 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.ComponentScan.Filter; +import org.springframework.context.annotation.FilterType; import org.springframework.core.env.Environment; import lombok.extern.slf4j.Slf4j; -import net.bytebuddy.asm.Advice.This; /** * 单体启动类(采用此类启动为单体模式) @@ -32,6 +28,7 @@ import net.bytebuddy.asm.Advice.This; @EnableCaching @SpringBootApplication @EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class}) +@ComponentScan(excludeFilters = {@Filter(type = FilterType.REGEX, pattern = {"org.jeecg.config.mybatis.MybatisInterceptor"})}) public class JeecgSystemApplication extends SpringBootServletInitializer { @Override @@ -46,17 +43,13 @@ public class JeecgSystemApplication extends SpringBootServletInitializer { String port = env.getProperty("server.port"); String profiles = env.getProperty("spring.profiles.active"); String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path")); - log.info("\n----------------------------------------------------------\n\t" - + "Application HUAHENG WMS4 is running! Access urls:\n\n\t" - + "WEB Local: \thttp://localhost:" + port + path + "/index.html\n\t" - + "API Local: \thttp://localhost:" + port + path + "/\n\n\t" - + "WEB External: \thttp://" + ip + ":" + port + path + "/index.html\n\t" - + "API External: \thttp://" + ip + ":" + port + path + "/\n\n\t" - + "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n\n\t" - + "The following profiles are active: [" + profiles + "]\n" + log.info("\n----------------------------------------------------------\n\t" + "Application HUAHENG WMS4 is running! Access urls:\n\n\t" + + "WEB Local: \thttp://localhost:" + port + path + "/index.html\n\t" + "API Local: \thttp://localhost:" + port + path + "/\n\n\t" + + "WEB External: \thttp://" + ip + ":" + port + path + "/index.html\n\t" + "API External: \thttp://" + ip + ":" + port + path + "/\n\n\t" + + "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n\n\t" + "The following profiles are active: [" + profiles + "]\n" + "----------------------------------------------------------"); } - + public static InetAddress getLocalHostExactAddress() { try { InetAddress inetAddress = null; diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java index 426c6aa..b2ac2f6 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java @@ -41,7 +41,7 @@ public class WcsController extends HuahengBaseController { @ResponseBody @ApiLogger(apiName = "仓位分配", from = "WCS") public Result warecellAllocation(@RequestBody WarecellDomain warecellDomain, HttpServletRequest req) { - String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); + String warehouseCode = warecellDomain.getWarehouseCode(); if (StringUtils.isEmpty(warehouseCode)) { return Result.error("仓位分配, 仓库号为空"); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java new file mode 100644 index 0000000..2b638c6 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java @@ -0,0 +1,154 @@ +package org.jeecg.modules.wms.framework.config; + +import java.lang.reflect.Field; +import java.util.Date; +import java.util.Properties; + +import org.apache.ibatis.binding.MapperMethod; +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlCommandType; +import org.apache.ibatis.plugin.*; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.springframework.stereotype.Component; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Component +@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})}) +public class HuahengBatisInterceptor implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + MappedStatement mappedStatement = (MappedStatement)invocation.getArgs()[0]; + String sqlId = mappedStatement.getId(); + log.debug("------sqlId------" + sqlId); + SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); + Object parameter = invocation.getArgs()[1]; + log.debug("------sqlCommandType------" + sqlCommandType); + + if (parameter == null) { + return invocation.proceed(); + } + if (SqlCommandType.INSERT == sqlCommandType) { + LoginUser sysUser = this.getLoginUser(); + Field[] fields = oConvertUtils.getAllFields(parameter); + for (Field field : fields) { + log.debug("------field.name------" + field.getName()); + try { + if ("createBy".equals(field.getName())) { + field.setAccessible(true); + Object local_createBy = field.get(parameter); + field.setAccessible(false); + if (local_createBy == null || local_createBy.equals("")) { + if (sysUser != null) { + // 登录人账号 + field.setAccessible(true); + field.set(parameter, sysUser.getRealname()); + field.setAccessible(false); + } + } + } + // 注入创建时间 + if ("createTime".equals(field.getName())) { + field.setAccessible(true); + Object local_createDate = field.get(parameter); + field.setAccessible(false); + if (local_createDate == null || local_createDate.equals("")) { + field.setAccessible(true); + field.set(parameter, new Date()); + field.setAccessible(false); + } + } + // 注入部门编码 + if ("sysOrgCode".equals(field.getName())) { + field.setAccessible(true); + Object local_sysOrgCode = field.get(parameter); + field.setAccessible(false); + if (local_sysOrgCode == null || local_sysOrgCode.equals("")) { + // 获取登录用户信息 + if (sysUser != null) { + field.setAccessible(true); + field.set(parameter, sysUser.getOrgCode()); + field.setAccessible(false); + } + } + } + } catch (Exception e) { + } + } + } + if (SqlCommandType.UPDATE == sqlCommandType) { + LoginUser sysUser = this.getLoginUser(); + Field[] fields = null; + if (parameter instanceof MapperMethod.ParamMap) { + MapperMethod.ParamMap<?> p = (MapperMethod.ParamMap<?>)parameter; + // update-begin-author:scott date:20190729 for:批量更新报错issues/IZA3Q-- + if (p.containsKey("et")) { + parameter = p.get("et"); + } else { + parameter = p.get("param1"); + } + // update-end-author:scott date:20190729 for:批量更新报错issues/IZA3Q- + + // update-begin-author:scott date:20190729 for:更新指定字段时报错 issues/#516- + if (parameter == null) { + return invocation.proceed(); + } + // update-end-author:scott date:20190729 for:更新指定字段时报错 issues/#516- + + fields = oConvertUtils.getAllFields(parameter); + } else { + fields = oConvertUtils.getAllFields(parameter); + } + + for (Field field : fields) { + log.debug("------field.name------" + field.getName()); + try { + if ("updateBy".equals(field.getName())) { + // 获取登录用户信息 + if (sysUser != null) { + // 登录账号 + field.setAccessible(true); + field.set(parameter, sysUser.getRealname()); + field.setAccessible(false); + } + } + if ("updateTime".equals(field.getName())) { + field.setAccessible(true); + field.set(parameter, new Date()); + field.setAccessible(false); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return invocation.proceed(); + } + + @Override + public Object plugin(Object target) { + return Plugin.wrap(target, this); + } + + @Override + public void setProperties(Properties properties) { + // TODO Auto-generated method stub + } + + // update-begin--Author:scott Date:20191213 for:关于使用Quzrtz 开启线程任务, #465 + private LoginUser getLoginUser() { + LoginUser sysUser = null; + try { + sysUser = SecurityUtils.getSubject().getPrincipal() != null ? (LoginUser)SecurityUtils.getSubject().getPrincipal() : null; + } catch (Exception e) { + sysUser = null; + } + return sysUser; + } + +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java index a1b3ec6..10ca0ad 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java @@ -10,8 +10,6 @@ import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.wms.framework.aspectj.dto.ApiAuthentication; import org.jeecg.modules.wms.framework.aspectj.dto.RSA256Key; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; @@ -21,7 +19,6 @@ import com.auth0.jwt.interfaces.DecodedJWT; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; -import net.bytebuddy.asm.Advice.This; public class HuahengJwtUtil { @@ -158,8 +155,8 @@ public class HuahengJwtUtil { public static void main(String[] args) throws Exception { ApiAuthentication apiAuthentication = new ApiAuthentication(); // 生成TOKEN必填参数 - apiAuthentication.setOperator("TanYibin"); // Token提供方 - apiAuthentication.setAudience("ACS001"); // Token使用方 + apiAuthentication.setOperator("youjie"); // Token提供方 + apiAuthentication.setAudience("pda"); // Token使用方 apiAuthentication.setExpireDateTime(DateUtil.parse("2099-12-31 23:59:59", DatePattern.NORM_DATETIME_PATTERN)); // Token失效时间 String tokenString = sign(apiAuthentication); -- libgit2 0.22.2