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