Browse Source

初始化后端代码

mac 7 months ago
parent
commit
fe36baf479
39 changed files with 666 additions and 147 deletions
  1. 49 49
      .drone.yml
  2. 8 8
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/CacheConstants.java
  3. 1 1
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/CommonConstants.java
  4. 1 6
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/SecurityConstants.java
  5. 1 1
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/ServiceNameConstants.java
  6. 5 0
      kxs-common/kxs-common-security/pom.xml
  7. 0 22
      kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/service/KxsRedisOAuth2AuthorizationService.java
  8. 67 0
      kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/service/WxUserDetailsServiceImpl.java
  9. 1 16
      kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/support/core/SkyDaoAuthenticationProvider.java
  10. 1 1
      kxs-common/kxs-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  11. 3 3
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/amqp/RabbitLhbBindQueueMQ.java
  12. 3 3
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/amqp/RabbitLhbOrderQueueMQ.java
  13. 1 1
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/admin/sysNotify/SysNotifyDTO.java
  14. 1 1
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/admin/sysNotify/SysNotifyPageDTO.java
  15. 27 0
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/feign/RemoteLhbUserService.java
  16. 79 0
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/feign/config/LhbUserFeignClientConfiguration.java
  17. 1 0
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/model/LhbBanner.java
  18. 149 0
      lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/model/LhbUser.java
  19. 1 0
      lhb-basic/lhb-basic-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  20. 1 1
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/channel/tongyi/TyBasicService.java
  21. 2 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/channel/tongyi/TyCustomerService.java
  22. 2 7
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/admin/SysNotifyController.java
  23. 52 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/cusmoter/UserController.java
  24. 18 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mapper/LhbUserMapper.java
  25. 5 5
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLhbBindQueueListener.java
  26. 5 5
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLhbOrderQueueListener.java
  27. 2 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbAreaService.java
  28. 2 2
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbNotifyService.java
  29. 3 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbOrderService.java
  30. 20 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbUserService.java
  31. 23 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbAreaServiceImpl.java
  32. 8 10
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbNotifyServiceImpl.java
  33. 1 2
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderRechargeServiceImpl.java
  34. 7 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderServiceImpl.java
  35. 88 0
      lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LlbUserServiceImpl.java
  36. 1 1
      lhb-basic/lhb-basic-biz/src/main/resources/application-dev.yml
  37. 1 1
      lhb-basic/lhb-basic-biz/src/main/resources/application.yml
  38. 26 0
      lhb-basic/lhb-basic-biz/src/main/resources/mapper/LhbUserMapper.xml
  39. 0 1
      lhb-system/lhb-system-api/src/main/java/com/kxs/lhb/system/api/feign/config/KxsSystemFeignClientConfiguration.java

+ 49 - 49
.drone.yml

@@ -289,7 +289,7 @@ steps:
         path: /lhb-system # 容器内目录 绝对路径
     settings:
       host:
-        from_secret: lhb-system-mech-a-host
+        from_secret: lhb-system-basic-a-host
       username:
         from_secret: username
       password:
@@ -313,7 +313,7 @@ steps:
     depends_on: [scp-project] # 依赖的步骤
     settings:
       host:
-        from_secret: lhb-system-mech-a-host
+        from_secret: lhb-system-basic-a-host
       username:
         from_secret: username
       password:
@@ -340,7 +340,7 @@ steps:
         path: /lhb-system # 容器内目录 绝对路径
     settings:
       host:
-        from_secret: lhb-system-mech-b-host
+        from_secret: lhb-system-basic-b-host
       username:
         from_secret: username
       password:
@@ -364,7 +364,7 @@ steps:
     depends_on: [scp-project] # 依赖的步骤
     settings:
       host:
-        from_secret: lhb-system-mech-b-host
+        from_secret: lhb-system-basic-b-host
       username:
         from_secret: username
       password:
@@ -400,7 +400,7 @@ trigger:
 ---
 kind: pipeline
 type: docker
-name: lhb-mech-prod
+name: lhb-basic-prod
 
 volumes: # 声明数据卷
   - name: mvn_repo # 数据卷名称
@@ -413,7 +413,7 @@ volumes: # 声明数据卷
       path: /home/ABServer/config/mvn/
   - name: targetDir
     host:
-      path: /lhb-mech
+      path: /lhb-basic
 
 clone:
   disable: false # 启用代码拉取
@@ -433,7 +433,7 @@ steps:
     commands: # 执行命令
       - rm -rf /drone/src/dist/*
       - mvn clean package -Dmaven.test.skip=true -P prod
-      - cp /drone/src/lhb-mech/lhb-mech-biz/target/*.jar /drone/src/dist/ && cp -r /drone/src/lhb-mech/lhb-mech-biz/target/lib /drone/src/dist/ && cp -r /drone/src/lhb-mech/lhb-mech-biz/target/config /drone/src/dist/ # 复制文件
+      - cp /drone/src/lhb-basic/lhb-basic-biz/target/*.jar /drone/src/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/lib /drone/src/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/config /drone/src/dist/ # 复制文件
     when:
       status:
         - success # 当前步骤成功时执行
@@ -443,10 +443,10 @@ steps:
     depends_on: [build-project] # 依赖的步骤
     volumes: # 挂载数据卷
       - name: targetDir # 数据卷名称
-        path: /lhb-mech # 容器内目录 绝对路径
+        path: /lhb-basic # 容器内目录 绝对路径
     settings:
       host:
-        from_secret: lhb-system-mech-a-host
+        from_secret: lhb-system-basic-a-host
       username:
         from_secret: username
       password:
@@ -456,9 +456,9 @@ steps:
       target: /home/ABServer/deploy-ready/
       source:
         - echo ====开始拷贝=======
-        - /lhb-mech/*.jar
-        - /lhb-mech/lib
-        - /lhb-mech/config
+        - /lhb-basic/*.jar
+        - /lhb-basic/lib
+        - /lhb-basic/config
         - echo ====结束拷贝=======
       when:
         status:
@@ -470,7 +470,7 @@ steps:
     depends_on: [scp-project] # 依赖的步骤
     settings:
       host:
-        from_secret: lhb-system-mech-a-host
+        from_secret: lhb-system-basic-a-host
       username:
         from_secret: username
       password:
@@ -479,13 +479,13 @@ steps:
       command_timeout: 5m
       script:
         - echo ====开始部署=======
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-mech-biz&ip=172.27.251.56&port=8888&weight=0'
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.56&port=8888&weight=0'
         - sleep 25s
         - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-mech/*
-        - cp -r /home/ABServer/deploy-ready/lhb-mech /home/ABServer/webroot/
-        - docker restart lhb-mech
-        - rm -rf /home/ABServer/deploy-ready/lhb-mech/*
+        - rm -rf /home/ABServer/webroot/lhb-basic/*
+        - cp -r /home/ABServer/deploy-ready/lhb-basic /home/ABServer/webroot/
+        - docker restart lhb-basic
+        - rm -rf /home/ABServer/deploy-ready/lhb-basic/*
         # - docker restart nodeServer1
         - echo ====部署成功=======
   - name: scp-project-b
@@ -494,10 +494,10 @@ steps:
     depends_on: [build-project] # 依赖的步骤
     volumes: # 挂载数据卷
       - name: targetDir # 数据卷名称
-        path: /lhb-mech # 容器内目录 绝对路径
+        path: /lhb-basic # 容器内目录 绝对路径
     settings:
       host:
-        from_secret: lhb-system-mech-b-host
+        from_secret: lhb-system-basic-b-host
       username:
         from_secret: username
       password:
@@ -507,9 +507,9 @@ steps:
       target: /home/ABServer/deploy-ready/
       source:
         - echo ====开始拷贝=======
-        - /lhb-mech/*.jar
-        - /lhb-mech/lib
-        - /lhb-mech/config
+        - /lhb-basic/*.jar
+        - /lhb-basic/lib
+        - /lhb-basic/config
         - echo ====结束拷贝=======
       when:
         status:
@@ -521,7 +521,7 @@ steps:
     depends_on: [scp-project] # 依赖的步骤
     settings:
       host:
-        from_secret: lhb-system-mech-b-host
+        from_secret: lhb-system-basic-b-host
       username:
         from_secret: username
       password:
@@ -531,23 +531,23 @@ steps:
       script:
         - echo ====开始部署=======
         - sleep 60s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-mech-biz&ip=172.27.251.56&port=8888&weight=1'
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.56&port=8888&weight=1'
         - sleep 1s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-mech-biz&ip=172.27.251.65&port=8888&weight=0'
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.65&port=8888&weight=0'
         - sleep 25s
         - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-mech/*
-        - cp -r /home/ABServer/deploy-ready/lhb-mech /home/ABServer/webroot/
-        - docker restart lhb-mech
-        - rm -rf /home/ABServer/deploy-ready/lhb-mech/*
+        - rm -rf /home/ABServer/webroot/lhb-basic/*
+        - cp -r /home/ABServer/deploy-ready/lhb-basic /home/ABServer/webroot/
+        - docker restart lhb-basic
+        - rm -rf /home/ABServer/deploy-ready/lhb-basic/*
         - sleep 60s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-mech-biz&ip=172.27.251.65&port=8888&weight=1'
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.65&port=8888&weight=1'
         # - docker restart nodeServer1
         - echo ====部署成功=======
 
 trigger:
   branch:
-    - release-mech
+    - release-basic
   event:
     - push
   #排除合并请求
@@ -780,13 +780,13 @@ steps:
       - name: mvn_repo # 数据卷名称
         path: /usr/share/maven/repo # 容器内目录 绝对路径
       - name: targetDir
-        path: /drone/src/llb/dist/
+        path: /drone/src/lhb/dist/
       - name: mvn_config
         path: /usr/share/maven/conf/
     commands: # 执行命令
-      - rm -rf /drone/src/llb/dist/*
+      - rm -rf /drone/src/lhb/dist/*
       - mvn clean package -Dmaven.test.skip=true -P test
-      - cp /drone/src/lhb-system/lhb-system-biz/target/*.jar /drone/src/llb/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/lib /drone/src/llb/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/config /drone/src/llb/dist/ # 复制文件
+      - cp /drone/src/lhb-system/lhb-system-biz/target/*.jar /drone/src/lhb/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/lib /drone/src/lhb/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/config /drone/src/lhb/dist/ # 复制文件
     when:
       status:
         - success # 当前步骤成功时执行
@@ -852,7 +852,7 @@ trigger:
 ---
 kind: pipeline
 type: docker
-name: lhb-mech-test
+name: lhb-basic-test
 
 volumes: # 声明数据卷
   - name: mvn_repo # 数据卷名称
@@ -865,7 +865,7 @@ volumes: # 声明数据卷
       path: /home/ABServer/config/mvn/
   - name: targetDir
     host:
-      path: /lhb-mech
+      path: /lhb-basic
 
 clone:
   disable: false # 启用代码拉取
@@ -879,13 +879,13 @@ steps:
       - name: mvn_repo # 数据卷名称
         path: /usr/share/maven/repo # 容器内目录 绝对路径
       - name: targetDir
-        path: /drone/src/llb/dist/
+        path: /drone/src/lhb/dist/
       - name: mvn_config
         path: /usr/share/maven/conf/
     commands: # 执行命令
-      - rm -rf /drone/src/llb/dist/*
+      - rm -rf /drone/src/lhb/dist/*
       - mvn clean package -Dmaven.test.skip=true -P test
-      - cp /drone/src/lhb-mech/lhb-mech-biz/target/*.jar /drone/src/llb/dist/ && cp -r /drone/src/lhb-mech/lhb-mech-biz/target/lib /drone/src/llb/dist/ && cp -r /drone/src/lhb-mech/lhb-mech-biz/target/config /drone/src/llb/dist/ # 复制文件
+      - cp /drone/src/lhb-basic/lhb-basic-biz/target/*.jar /drone/src/lhb/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/lib /drone/src/lhb/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/config /drone/src/lhb/dist/ # 复制文件
     when:
       status:
         - success # 当前步骤成功时执行
@@ -895,7 +895,7 @@ steps:
     depends_on: [build-project] # 依赖的步骤
     volumes: # 挂载数据卷
       - name: targetDir # 数据卷名称
-        path: /lhb-mech # 容器内目录 绝对路径
+        path: /lhb-basic # 容器内目录 绝对路径
     settings:
       host:
         from_secret: host
@@ -908,9 +908,9 @@ steps:
       target: /home/ABServer/deploy-ready/
       source:
         - echo ====开始拷贝=======
-        - /lhb-mech/*.jar
-        - /lhb-mech/lib
-        - /lhb-mech/config
+        - /lhb-basic/*.jar
+        - /lhb-basic/lib
+        - /lhb-basic/config
         - echo ====结束拷贝=======
       when:
         status:
@@ -932,17 +932,17 @@ steps:
       script:
         - echo ====开始部署=======
         - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-mech/*
-        - cp -r /home/ABServer/deploy-ready/lhb-mech /home/ABServer/webroot/
-        - docker stop lhb-mech && docker rm lhb-mech && docker-compose up -d lhb-mech
-        - rm -rf /home/ABServer/deploy-ready/lhb-mech/*
+        - rm -rf /home/ABServer/webroot/lhb-basic/*
+        - cp -r /home/ABServer/deploy-ready/lhb-basic /home/ABServer/webroot/
+        - docker stop lhb-basic && docker rm lhb-basic && docker-compose up -d lhb-basic
+        - rm -rf /home/ABServer/deploy-ready/lhb-basic/*
         # - docker restart nodeServer1
         - echo ====部署成功=======
 
 trigger:
   branch:
     include:
-      - test-mech
+      - test-basic
   event:
     include:
       - pull_request

+ 8 - 8
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/CacheConstants.java

@@ -12,42 +12,42 @@ public interface CacheConstants {
 	/**
 	 * oauth 缓存前缀
 	 */
-	String PROJECT_OAUTH_ACCESS = "llb_token::access_token";
+	String PROJECT_OAUTH_ACCESS = "lhb_token::access_token";
 
 	/**
 	 * 验证码前缀
 	 */
-	String DEFAULT_CODE_KEY = "LLB_DEFAULT_CODE_KEY:";
+	String DEFAULT_CODE_KEY = "lhb_DEFAULT_CODE_KEY:";
 
 	/**
 	 * 菜单信息缓存
 	 */
-	String MENU_DETAILS = "llb_menu_details";
+	String MENU_DETAILS = "lhb_menu_details";
 
 	/**
 	 * 用户信息缓存
 	 */
-	String USER_DETAILS = "llb_user_details";
+	String USER_DETAILS = "lhb_user_details";
 
 	/**
 	 * 字典信息缓存
 	 */
-	String DICT_DETAILS = "llb_dict_details";
+	String DICT_DETAILS = "lhb_dict_details";
 
 	/**
 	 * 角色信息缓存
 	 */
-	String ROLE_DETAILS = "llb_role_details";
+	String ROLE_DETAILS = "lhb_role_details";
 
 	/**
 	 * oauth 客户端信息
 	 */
-	String CLIENT_DETAILS_KEY = "llb_client:details";
+	String CLIENT_DETAILS_KEY = "lhb_client:details";
 
 	/**
 	 * 参数缓存
 	 */
-	String PARAMS_DETAILS = "llb_params_details";
+	String PARAMS_DETAILS = "lhb_params_details";
 	String INTERFACE_DETAILS = "interface_details";
 
 

+ 1 - 1
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/CommonConstants.java

@@ -57,7 +57,7 @@ public interface CommonConstants {
 	/**
 	 * 包名
 	 */
-	String PACKAGE_NAME = "com.kxs.llb";
+	String PACKAGE_NAME = "com.kxs.lhb";
 
 	/**
 	 * 成功标记

+ 1 - 6
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/SecurityConstants.java

@@ -57,11 +57,6 @@ public interface SecurityConstants {
 	 */
 	String WECHAT = "wechat";
 
-	/**
-	 * 客户端
-	 */
-	String KXS = "llb";
-
 	/**
 	 * {bcrypt} 加密的特征码
 	 */
@@ -122,7 +117,7 @@ public interface SecurityConstants {
 	 */
 	String SMS_PARAMETER_NAME = "mobile";
 
-	String WECHAT_PARAMETER_NAME = "wxCode";
+	String WECHAT_PARAMETER_NAME = "wx_code";
 
 	/**
 	 * 授权码模式confirm

+ 1 - 1
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/ServiceNameConstants.java

@@ -25,6 +25,6 @@ public interface ServiceNameConstants {
 	 * 系统模块
 	 */
 	String SYSTEM_SERVICE = "lhb-system-biz";
-	String MECH_SERVICE = "lhb-mech-biz";
+	String LHB_SERVICE = "lhb-basic-biz";
 
 }

+ 5 - 0
kxs-common/kxs-common-security/pom.xml

@@ -58,6 +58,11 @@
             <artifactId>kxs-common-log</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.kxs</groupId>
+            <artifactId>lhb-basic-api</artifactId>
+        </dependency>
+
     </dependencies>
     <build>
         <plugins>

+ 0 - 22
kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/service/KxsRedisOAuth2AuthorizationService.java

@@ -1,16 +1,9 @@
 package com.kxs.common.security.service;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.kxs.common.security.model.KxsSecurityUser;
 import lombok.RequiredArgsConstructor;
-import org.springframework.asm.Attribute;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.lang.Nullable;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.oauth2.core.OAuth2AccessToken;
 import org.springframework.security.oauth2.core.OAuth2RefreshToken;
 import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
@@ -20,13 +13,9 @@ import org.springframework.security.oauth2.server.authorization.OAuth2Authorizat
 import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
 import org.springframework.util.Assert;
 
-import java.nio.file.attribute.UserPrincipal;
-import java.security.KeyStore;
-import java.security.Principal;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
@@ -84,17 +73,6 @@ public class KxsRedisOAuth2AuthorizationService implements OAuth2AuthorizationSe
 			redisTemplate.opsForValue()
 				.set(buildKey(OAuth2ParameterNames.ACCESS_TOKEN, accessToken.getTokenValue()), authorization, between,
 						TimeUnit.SECONDS);
-			//TODO 登陆后根据token保存用户ID,仅限同步数据时使用,后续会删除
-			Object attribute = authorization.getAttribute("java.security.Principal");
-			if(attribute instanceof UsernamePasswordAuthenticationToken authenticationToken){
-				Object principal = authenticationToken.getPrincipal();
-				if (principal instanceof KxsSecurityUser userDetails) {
-					redisTemplate.opsForValue()
-							.set(accessToken.getTokenValue(), userDetails.getId(), between,
-									TimeUnit.SECONDS);
-				}
-			}
-
 		}
 	}
 

+ 67 - 0
kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/service/WxUserDetailsServiceImpl.java

@@ -0,0 +1,67 @@
+package com.kxs.common.security.service;
+
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.ErrorTypeEnum;
+import com.kxs.common.core.constant.enums.UserStatusEnum;
+import com.kxs.common.core.util.R;
+import com.kxs.common.core.util.RetOps;
+import com.kxs.common.security.model.KxsSecurityUser;
+import com.kxs.lhb.basic.api.feign.RemoteLhbUserService;
+import com.kxs.lhb.basic.api.model.LhbUser;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.core.authority.AuthorityUtils;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+
+import java.util.Objects;
+
+/**
+ * <p>
+ * 继承 oauth2 security实现类登录
+ * </p>
+ *
+ * @author 没秃顶的码农 没秃顶的码农
+ */
+@Slf4j
+@RequiredArgsConstructor
+public class WxUserDetailsServiceImpl implements KxsUserDetailsService {
+
+	private final RemoteLhbUserService remoteLhbUserService;
+
+	@Override
+	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+
+		R<LhbUser> result = remoteLhbUserService.loadUserByWxCode(username, SecurityConstants.FROM_IN);
+		LhbUser custom = RetOps.of(result)
+				.getData()
+				.orElseThrow(() -> new UsernameNotFoundException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+
+		if(Objects.equals(custom.getStatus(), UserStatusEnum.REMOVE.getCode())){
+			throw new UsernameNotFoundException(ErrorTypeEnum.ACCOUNT_DISABLED.getDescription());
+		}
+		// 构造security用户
+		return new KxsSecurityUser(custom.getId(), custom.getNickname(), SecurityConstants.NOOP,  custom.getWxOpenid(), null,
+				true, true, true, !Objects.equals(custom.getLockFlag(), UserStatusEnum.LOCKED.getCode()), AuthorityUtils.NO_AUTHORITIES);
+
+	}
+
+	/**
+	 * 是否支持此客户端校验
+	 * @param clientId 目标客户端
+	 * @param grantType  授权类型
+	 * @return true/false
+	 */
+	@Override
+	public boolean support(String clientId, String grantType) {
+		return "customer".equals(clientId);
+	}
+
+	@Override
+	public int getOrder() {
+		return Integer.MIN_VALUE + 1;
+	}
+
+
+
+}

+ 1 - 16
kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/support/core/SkyDaoAuthenticationProvider.java

@@ -151,7 +151,7 @@ public class SkyDaoAuthenticationProvider extends AbstractUserDetailsAuthenticat
 			throw ex;
 		}
 		catch (Exception ex) {
-			throw new InternalAuthenticationServiceException(ex.getMessage(), ex);
+			throw new RuntimeException(ex.getLocalizedMessage(), ex);
 		}
 	}
 
@@ -194,20 +194,5 @@ public class SkyDaoAuthenticationProvider extends AbstractUserDetailsAuthenticat
 		this.userNotFoundEncodedPassword = null;
 	}
 
-	protected PasswordEncoder getPasswordEncoder() {
-		return this.passwordEncoder;
-	}
-
-	public void setUserDetailsService(UserDetailsService userDetailsService) {
-		this.userDetailsService = userDetailsService;
-	}
-
-	protected UserDetailsService getUserDetailsService() {
-		return this.userDetailsService;
-	}
-
-	public void setUserDetailsPasswordService(UserDetailsPasswordService userDetailsPasswordService) {
-		this.userDetailsPasswordService = userDetailsPasswordService;
-	}
 
 }

+ 1 - 1
kxs-common/kxs-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -4,4 +4,4 @@ com.kxs.common.security.component.SkySecurityInnerAspect
 com.kxs.common.security.component.SkySecurityMessageSourceConfiguration
 com.kxs.common.security.service.KxsRemoteRegisteredClientRepository
 com.kxs.common.security.service.KxsUserDetailsServiceImpl
-com.kxs.common.security.service.LlbMechUserServiceImpl
+com.kxs.common.security.service.WxUserDetailsServiceImpl

+ 3 - 3
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/amqp/RabbitLlbBindQueueMQ.java → lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/amqp/RabbitLhbBindQueueMQ.java

@@ -25,7 +25,7 @@ import java.util.UUID;
 @EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @AllArgsConstructor
-public class RabbitLlbBindQueueMQ extends AbstractMQ {
+public class RabbitLhbBindQueueMQ extends AbstractMQ {
 
 
     /**
@@ -89,9 +89,9 @@ public class RabbitLlbBindQueueMQ extends AbstractMQ {
     /**
      * 构造发送消息
      */
-    public static RabbitLlbBindQueueMQ build(MsgEntity message){
+    public static RabbitLhbBindQueueMQ build(MsgEntity message){
 
-        return new RabbitLlbBindQueueMQ(message);
+        return new RabbitLhbBindQueueMQ(message);
     }
 
     /**

+ 3 - 3
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/amqp/RabbitLlbOrderQueueMQ.java → lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/amqp/RabbitLhbOrderQueueMQ.java

@@ -25,7 +25,7 @@ import java.util.UUID;
 @EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @AllArgsConstructor
-public class RabbitLlbOrderQueueMQ extends AbstractMQ {
+public class RabbitLhbOrderQueueMQ extends AbstractMQ {
 
 
     /**
@@ -89,9 +89,9 @@ public class RabbitLlbOrderQueueMQ extends AbstractMQ {
     /**
      * 构造发送消息
      */
-    public static RabbitLlbOrderQueueMQ build(MsgEntity message){
+    public static RabbitLhbOrderQueueMQ build(MsgEntity message){
 
-        return new RabbitLlbOrderQueueMQ(message);
+        return new RabbitLhbOrderQueueMQ(message);
     }
 
     /**

+ 1 - 1
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/sysNotify/SysNotifyDTO.java → lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/admin/sysNotify/SysNotifyDTO.java

@@ -1,4 +1,4 @@
-package com.kxs.lhb.basic.api.dto.sysNotify;
+package com.kxs.lhb.basic.api.dto.admin.sysNotify;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotEmpty;

+ 1 - 1
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/sysNotify/SysNotifyPageDTO.java → lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/admin/sysNotify/SysNotifyPageDTO.java

@@ -1,4 +1,4 @@
-package com.kxs.lhb.basic.api.dto.sysNotify;
+package com.kxs.lhb.basic.api.dto.admin.sysNotify;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 27 - 0
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/feign/RemoteLhbUserService.java

@@ -0,0 +1,27 @@
+
+package com.kxs.lhb.basic.api.feign;
+
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.util.R;
+import com.kxs.lhb.basic.api.model.LhbUser;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.service.annotation.GetExchange;
+
+/**
+ * @author Lxq
+ * @date 2024/8/22
+ */
+public interface RemoteLhbUserService {
+
+
+	/**
+	 * 通过code码查询用户信息
+	 * @param code 微信授权码
+	 * @param from 调用标志
+	 * @return R
+	 */
+	@GetExchange("/user/loadUserByWxCode")
+	R<LhbUser> loadUserByWxCode(@RequestParam("code") String code, @RequestHeader(SecurityConstants.FROM) String from);
+
+}

+ 79 - 0
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/feign/config/LhbUserFeignClientConfiguration.java

@@ -0,0 +1,79 @@
+package com.kxs.lhb.basic.api.feign.config;
+
+import cn.hutool.core.text.CharSequenceUtil;
+import com.kxs.common.core.constant.ServiceNameConstants;
+import com.kxs.lhb.basic.api.feign.RemoteLhbUserService;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerExchangeFilterFunction;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.reactive.function.client.ClientRequest;
+import org.springframework.web.reactive.function.client.WebClient;
+import org.springframework.web.reactive.function.client.support.WebClientAdapter;
+import org.springframework.web.service.invoker.HttpServiceProxyFactory;
+
+/**
+ * <p>
+ * 当前服务的webClient配置
+ * 服务下的远程调用统一在此配置
+ * 使用注册中心 需配置远程调用器 以实现负载均衡
+ * </p>
+ *
+ * @author 没秃顶的码农
+ * @date 2023/11/13
+ */
+@Configuration
+@RequiredArgsConstructor
+public class LhbUserFeignClientConfiguration {
+
+	/**
+	 * 负载均衡器
+	 */
+	private final ReactorLoadBalancerExchangeFilterFunction reactorLoadBalancerExchangeFilterFunction;
+
+	private static final String SERVICE_NAME = ServiceNameConstants.CLIENT_NAME + ServiceNameConstants.LHB_SERVICE;
+
+	@Bean("lhbUserFeignClient")
+	public WebClient oauthRequestInterceptor() {
+
+		return WebClient.builder()
+			// 给请求添加过滤器,添加自定义的认证头
+			.filter((request, next) -> {
+				ClientRequest.Builder filtered = ClientRequest.from(request);
+
+
+				ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
+					.getRequestAttributes();
+				// 不是web请求不传递token
+				if (requestAttributes != null) {
+					HttpServletRequest httpServletRequest = requestAttributes.getRequest();
+					String token = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION);
+					if (!CharSequenceUtil.isBlank(token)) {
+						// 传递token
+						filtered.header(HttpHeaders.AUTHORIZATION, token);
+					}
+				}
+				return next.exchange(filtered.build());
+			}).filter(reactorLoadBalancerExchangeFilterFunction)
+			.baseUrl(SERVICE_NAME)
+			.build();
+	}
+
+	/**
+	 * 远程日志服务
+	 * @param client 客户端
+	 * @return 远程日志服务
+	 */
+	@Bean
+	RemoteLhbUserService remoteLhbUserService(@Qualifier("lhbUserFeignClient") WebClient client) {
+		HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).blockTimeout(ServiceNameConstants.REQ_TIMEOUT).build();
+		return factory.createClient(RemoteLhbUserService.class);
+	}
+
+
+}

+ 1 - 0
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/model/LhbBanner.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.kxs.common.core.valid.Phone;

+ 149 - 0
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/model/LhbUser.java

@@ -0,0 +1,149 @@
+package com.kxs.lhb.basic.api.model;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 用户表(LlbUser)表实体类
+ *
+ * @author 系统
+ * @since 2024-09-02 14:26:08
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class LhbUser extends Model<LhbUser> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Long id;
+
+
+    /**
+     * 微信登录openId
+     */
+    @Schema(description = "微信登录openId")
+    private String wxOpenid;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private Integer delFlag;
+
+
+    /**
+     * 锁定标记,0未锁定,1已锁定
+     */
+    @Schema(description = "锁定标记,0未锁定,1已锁定")
+    private Integer lockFlag;
+
+
+    /**
+     * 修改时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 修改人
+     */
+    @Schema(description = "修改人")
+    private String updateBy;
+
+
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createBy;
+
+
+    /**
+     * 昵称
+     */
+    @Schema(description = "昵称")
+    private String nickname;
+
+
+    /**
+     * 头像
+     */
+    @Schema(description = "头像")
+    private String avatar;
+
+
+    /**
+     * 电话号码
+     */
+    @Schema(description = "电话号码")
+    private String phone;
+
+
+    /**
+     * 盐值
+     */
+    @Schema(description = "盐值")
+    private String salt;
+
+
+    /**
+     * 密码
+     */
+    @Schema(description = "密码")
+    private String password;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 状态 0注销 1正常
+     */
+    @Schema(description = "状态 0注销 1正常")
+    private Integer status;
+
+
+    /**
+     * 备注
+     */
+    @Schema(description = "备注")
+    private String remark;
+
+
+
+
+}
+

+ 1 - 0
lhb-basic/lhb-basic-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+com.kxs.lhb.basic.api.feign.config.LhbUserFeignClientConfiguration

+ 1 - 1
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/channel/tongyi/TyBasicService.java

@@ -27,7 +27,7 @@ public abstract class TyBasicService{
     private static final String APPID = "1847154180683214850";
 
 
-    private static final  String GATEWAY = "https://api.aiotzy.com/api";
+    private static final  String GATEWAY = "http://183.213.19.250:11043/api";
 
     protected <T> TyCommRes<T> sendToUrl(TyCommonReq param, String url){
 

+ 2 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/channel/tongyi/TyCustomerService.java

@@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil;
 import com.kxs.lhb.basic.api.dto.tongyi.*;
 import com.kxs.lhb.basic.api.vo.tongyi.*;
 import com.kxs.lhb.basic.biz.channel.BasicService;
+import org.springframework.stereotype.Service;
 
 import java.util.List;
 
@@ -13,6 +14,7 @@ import java.util.List;
  * @author 没秃顶的码农
  * @date 2024-10-18
  */
+@Service
 public class TyCustomerService extends TyBasicService implements BasicService {
 
     @Override

+ 2 - 7
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/admin/SysNotifyController.java

@@ -1,26 +1,21 @@
 package com.kxs.lhb.basic.biz.controller.admin;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.kxs.common.core.util.R;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.kxs.common.security.annotation.Inner;
 import com.kxs.common.log.annotation.SysLog;
-import com.kxs.lhb.basic.api.dto.sysNotify.SysNotifyDTO;
-import com.kxs.lhb.basic.api.dto.sysNotify.SysNotifyPageDTO;
+import com.kxs.lhb.basic.api.dto.admin.sysNotify.SysNotifyDTO;
+import com.kxs.lhb.basic.api.dto.admin.sysNotify.SysNotifyPageDTO;
 import jakarta.validation.Valid;
 import org.springdoc.core.annotations.ParameterObject;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import com.kxs.lhb.basic.api.model.LhbNotify;
-import org.apache.ibatis.annotations.Param;
 import com.kxs.lhb.basic.biz.service.LhbNotifyService;
 
 import org.springframework.web.bind.annotation.*;
 import org.springframework.http.HttpHeaders;
 import org.springframework.security.access.prepost.PreAuthorize;
 
-import java.util.List;
 import lombok.RequiredArgsConstructor;
 
 /**

+ 52 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/cusmoter/UserController.java

@@ -0,0 +1,52 @@
+package com.kxs.lhb.basic.biz.controller.cusmoter;
+
+import com.kxs.common.core.util.R;
+import com.kxs.common.security.annotation.Inner;
+import com.kxs.lhb.basic.biz.service.LhbUserService;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 用户(AppUser)控制层
+ *
+ * @author 系统
+ * @since 2024-09-02 18:02:56
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("user")
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class UserController {
+
+    /**
+     * 服务对象
+     */
+    private final LhbUserService lhbUserService;
+
+
+    @GetMapping("/getJsapiTicket")
+    public Object getJsapiTicket(@RequestParam("url") String url) {
+
+        return R.ok(lhbUserService.getJsapiTicket(url));
+    }
+
+    /**
+     * 获取指定用户全部信息
+     * 内部调用
+     * @return 用户信息
+     */
+    @Inner(value = false)
+    @GetMapping(value = { "/loadUserByWxCode" })
+    public R loadUserByCode(@RequestParam("code") String code) {
+
+        return R.ok(lhbUserService.wechat(code));
+    }
+
+}
+

+ 18 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mapper/LhbUserMapper.java

@@ -0,0 +1,18 @@
+package com.kxs.lhb.basic.biz.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.kxs.lhb.basic.api.model.LhbUser;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * 用户表(LlbUser)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-09-02 18:02:34
+ */
+@Mapper
+public interface LhbUserMapper extends MPJBaseMapper<LhbUser> {
+
+}
+

+ 5 - 5
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLlbBindQueueListener.java → lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLhbBindQueueListener.java

@@ -2,7 +2,7 @@ package com.kxs.lhb.basic.biz.mq;
 
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.mq.handlers.IMQSender;
-import com.kxs.lhb.basic.api.amqp.RabbitLlbBindQueueMQ;
+import com.kxs.lhb.basic.api.amqp.RabbitLhbBindQueueMQ;
 import com.kxs.lhb.basic.api.constant.BasicConstants;
 import com.kxs.lhb.basic.api.model.LhbIsvInfo;
 import com.kxs.lhb.basic.api.model.LhbNotify;
@@ -31,7 +31,7 @@ import java.util.Objects;
 @Component
 @Slf4j
 @RequiredArgsConstructor
-public class RabbiLlbBindQueueListener {
+public class RabbiLhbBindQueueListener {
 
 	private final IMQSender mqSender;
 
@@ -43,11 +43,11 @@ public class RabbiLlbBindQueueListener {
 	 *
 	 * @param message 消息
 	 */
-	@RabbitListener(queues = RabbitLlbBindQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
+	@RabbitListener(queues = RabbitLhbBindQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
 	@RabbitHandler
 	public void onMessage(String msg, Message message, Channel channel){
         try {
-			RabbitLlbBindQueueMQ.MsgEntity parse = RabbitLlbBindQueueMQ.parse(msg);
+			RabbitLhbBindQueueMQ.MsgEntity parse = RabbitLhbBindQueueMQ.parse(msg);
 
 			String serverPrivateKey = ParamResolver.getStr("LOCAL_PRIVATE_KEY");
 
@@ -90,7 +90,7 @@ public class RabbiLlbBindQueueListener {
 				notify.setNotifyCount(notify.getNotifyCount() + 1);
 				log.error("绑定{}推送失败开始重试第{}次", parse.getNotifyId(), notify.getNotifyCount());
 				//时间递增
-				mqSender.send(RabbitLlbBindQueueMQ.build(parse), BasicConstants.ROCKET_MQ_DELAY_LEVEL_SECOND[notify.getNotifyCount()]);
+				mqSender.send(RabbitLhbBindQueueMQ.build(parse), BasicConstants.ROCKET_MQ_DELAY_LEVEL_SECOND[notify.getNotifyCount()]);
 			}
 			notifyService.updateById(notify);
 			channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);

+ 5 - 5
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLlbOrderQueueListener.java → lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLhbOrderQueueListener.java

@@ -7,7 +7,7 @@ import cn.hutool.crypto.asymmetric.Sign;
 import cn.hutool.crypto.asymmetric.SignAlgorithm;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.mq.handlers.IMQSender;
-import com.kxs.lhb.basic.api.amqp.RabbitLlbOrderQueueMQ;
+import com.kxs.lhb.basic.api.amqp.RabbitLhbOrderQueueMQ;
 import com.kxs.lhb.basic.api.constant.BasicConstants;
 import com.kxs.lhb.basic.api.model.LhbIsvInfo;
 import com.kxs.lhb.basic.api.model.LhbNotify;
@@ -38,7 +38,7 @@ import java.util.Objects;
 @Component
 @Slf4j
 @RequiredArgsConstructor
-public class RabbiLlbOrderQueueListener {
+public class RabbiLhbOrderQueueListener {
 
 	private final IMQSender mqSender;
 
@@ -91,11 +91,11 @@ public class RabbiLlbOrderQueueListener {
 	 *
 	 * @param message 消息
 	 */
-	@RabbitListener(queues = RabbitLlbOrderQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
+	@RabbitListener(queues = RabbitLhbOrderQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
 	@RabbitHandler
 	public void onMessage(String msg, Message message, Channel channel){
         try {
-			RabbitLlbOrderQueueMQ.MsgEntity parse = RabbitLlbOrderQueueMQ.parse(msg);
+			RabbitLhbOrderQueueMQ.MsgEntity parse = RabbitLhbOrderQueueMQ.parse(msg);
 			String serverPrivateKey = ParamResolver.getStr("LOCAL_PRIVATE_KEY");
 
 			LhbNotify notify = notifyService.getByNoteId(parse.getNotifyId());
@@ -138,7 +138,7 @@ public class RabbiLlbOrderQueueListener {
 				notify.setNotifyCount(notify.getNotifyCount() + 1);
 				log.error("交易订单{}推送失败开始重试第{}次", parse.getNotifyId(), notify.getNotifyCount());
 				//时间递增
-				mqSender.send(RabbitLlbOrderQueueMQ.build(parse), BasicConstants.ROCKET_MQ_DELAY_LEVEL_SECOND[notify.getNotifyCount()]);
+				mqSender.send(RabbitLhbOrderQueueMQ.build(parse), BasicConstants.ROCKET_MQ_DELAY_LEVEL_SECOND[notify.getNotifyCount()]);
 			}
 			notifyService.updateById(notify);
 			channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);

+ 2 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbAreaService.java

@@ -12,5 +12,7 @@ import com.kxs.lhb.basic.api.model.LhbArea;
  */
 public interface LhbAreaService extends MPJBaseService<LhbArea> {
 
+    void refresh();
+
 }
 

+ 2 - 2
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbNotifyService.java

@@ -2,8 +2,8 @@ package com.kxs.lhb.basic.biz.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
-import com.kxs.lhb.basic.api.dto.sysNotify.SysNotifyDTO;
-import com.kxs.lhb.basic.api.dto.sysNotify.SysNotifyPageDTO;
+import com.kxs.lhb.basic.api.dto.admin.sysNotify.SysNotifyDTO;
+import com.kxs.lhb.basic.api.dto.admin.sysNotify.SysNotifyPageDTO;
 import com.kxs.lhb.basic.api.model.LhbNotify;
 
 

+ 3 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbOrderService.java

@@ -1,7 +1,9 @@
 package com.kxs.lhb.basic.biz.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.kxs.lhb.basic.api.model.LhbOrder;
+import com.kxs.lhb.basic.api.vo.admin.sysOrder.QueryLogisticsVO;
 
 
 /**
@@ -12,5 +14,6 @@ import com.kxs.lhb.basic.api.model.LhbOrder;
  */
 public interface LhbOrderService extends MPJBaseService<LhbOrder> {
 
+    Page<QueryLogisticsVO> queryLogistics(Page<QueryLogisticsVO> page, LhbOrder param);
 }
 

+ 20 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbUserService.java

@@ -0,0 +1,20 @@
+package com.kxs.lhb.basic.biz.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.kxs.lhb.basic.api.model.LhbUser;
+import me.chanjar.weixin.common.bean.WxJsapiSignature;
+
+
+/**
+ * 用户表(LlbUser)表服务接口
+ *
+ * @author 系统
+ * @since 2024-09-02 18:02:35
+ */
+public interface LhbUserService extends MPJBaseService<LhbUser> {
+
+    LhbUser wechat(String code);
+
+    WxJsapiSignature getJsapiTicket(String url);
+}
+

+ 23 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbAreaServiceImpl.java

@@ -1,14 +1,20 @@
 package com.kxs.lhb.basic.biz.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.kxs.lhb.basic.api.vo.tongyi.AreaRes;
+import com.kxs.lhb.basic.biz.channel.tongyi.TyCustomerService;
 import com.kxs.lhb.basic.biz.mapper.LhbAreaMapper;
 import com.kxs.lhb.basic.biz.service.LhbAreaService;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import com.kxs.lhb.basic.api.model.LhbArea;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 
 /**
@@ -22,5 +28,22 @@ import com.kxs.lhb.basic.api.model.LhbArea;
 @Slf4j
 public class LhbAreaServiceImpl extends MPJBaseServiceImpl<LhbAreaMapper, LhbArea> implements LhbAreaService {
 
+    private final TyCustomerService customerService;
+
+    @Override
+    @Transactional
+    public void refresh() {
+
+        List<AreaRes> resList = customerService.getArea();
+        for (AreaRes areaRes : resList) {
+            LhbArea lhbArea = new LhbArea();
+            lhbArea.setId(areaRes.getId());
+            lhbArea.setParentId(areaRes.getParentId());
+            lhbArea.setAreaCode(areaRes.getAreaCode());
+            lhbArea.setAreaName(areaRes.getAreaName());
+            saveOrUpdate(lhbArea);
+        }
+
+    }
 }
 

+ 8 - 10
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbNotifyServiceImpl.java

@@ -7,14 +7,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
-import com.github.yulichang.toolkit.JoinWrappers;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.mq.handlers.IMQSender;
-import com.kxs.lhb.basic.api.amqp.RabbitLlbBindQueueMQ;
-import com.kxs.lhb.basic.api.amqp.RabbitLlbOrderQueueMQ;
-import com.kxs.lhb.basic.api.dto.sysNotify.SysNotifyDTO;
-import com.kxs.lhb.basic.api.dto.sysNotify.SysNotifyPageDTO;
+import com.kxs.lhb.basic.api.amqp.RabbitLhbBindQueueMQ;
+import com.kxs.lhb.basic.api.amqp.RabbitLhbOrderQueueMQ;
+import com.kxs.lhb.basic.api.dto.admin.sysNotify.SysNotifyDTO;
+import com.kxs.lhb.basic.api.dto.admin.sysNotify.SysNotifyPageDTO;
 import com.kxs.lhb.basic.biz.mapper.LhbNotifyMapper;
 import com.kxs.lhb.basic.biz.service.LhbNotifyService;
 import org.springframework.stereotype.Service;
@@ -83,16 +81,16 @@ public class LhbNotifyServiceImpl extends MPJBaseServiceImpl<LhbNotifyMapper, Lh
 
             if(CommonConstants.ORDER_PUSH_NAME.equals(notify.getClassName())){
                 //推送交易数据
-                RabbitLlbOrderQueueMQ.MsgEntity msgEntity = new RabbitLlbOrderQueueMQ.MsgEntity();
+                RabbitLhbOrderQueueMQ.MsgEntity msgEntity = new RabbitLhbOrderQueueMQ.MsgEntity();
                 msgEntity.setNotifyId(notify.getNotifyId());
-                mqSender.send(RabbitLlbOrderQueueMQ.build(msgEntity), 5);
+                mqSender.send(RabbitLhbOrderQueueMQ.build(msgEntity), 5);
                 log.info("补推订单数据成功:{}", JSON.toJSONString(notify.getParams()));
             }
             if(CommonConstants.BIND_PUSH_NAME.equals(notify.getClassName())){
                 //推送绑定数据
-                RabbitLlbBindQueueMQ.MsgEntity msgEntity = new RabbitLlbBindQueueMQ.MsgEntity();
+                RabbitLhbBindQueueMQ.MsgEntity msgEntity = new RabbitLhbBindQueueMQ.MsgEntity();
                 msgEntity.setNotifyId(notify.getNotifyId());
-                mqSender.send(RabbitLlbBindQueueMQ.build(msgEntity), 5);
+                mqSender.send(RabbitLhbBindQueueMQ.build(msgEntity), 5);
                 log.info("补推绑定数据成功:{}", JSON.toJSONString(notify.getParams()));
             }
         }

+ 1 - 2
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderRechargeServiceImpl.java

@@ -22,5 +22,4 @@ import com.kxs.lhb.basic.api.model.LhbOrderRecharge;
 @Slf4j
 public class LhbOrderRechargeServiceImpl extends MPJBaseServiceImpl<LhbOrderRechargeMapper, LhbOrderRecharge> implements LhbOrderRechargeService {
 
-}
-
+}

+ 7 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderServiceImpl.java

@@ -1,8 +1,10 @@
 package com.kxs.lhb.basic.biz.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.kxs.lhb.basic.api.vo.admin.sysOrder.QueryLogisticsVO;
 import com.kxs.lhb.basic.biz.mapper.LhbOrderMapper;
 import com.kxs.lhb.basic.biz.service.LhbOrderService;
 import org.springframework.stereotype.Service;
@@ -22,5 +24,10 @@ import com.kxs.lhb.basic.api.model.LhbOrder;
 @Slf4j
 public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbOrder> implements LhbOrderService {
 
+    @Override
+    public Page<QueryLogisticsVO> queryLogistics(Page<QueryLogisticsVO> page, LhbOrder param) {
+
+        return null;
+    }
 }
 

+ 88 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LlbUserServiceImpl.java

@@ -0,0 +1,88 @@
+package com.kxs.lhb.basic.biz.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.kxs.common.core.constant.CommonConstants;
+import com.kxs.common.core.exception.GlobalCustomerException;
+import com.kxs.lhb.basic.api.model.LhbUser;
+import com.kxs.lhb.basic.biz.mapper.LhbUserMapper;
+import com.kxs.lhb.basic.biz.service.LhbUserService;
+import lombok.RequiredArgsConstructor;
+import me.chanjar.weixin.common.bean.WxJsapiSignature;
+import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+
+import java.util.UUID;
+
+
+/**
+ * 用户表(LlbUser)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-09-02 18:02:35
+ */
+@Service("llbUserService")
+@RequiredArgsConstructor
+public class LlbUserServiceImpl extends MPJBaseServiceImpl<LhbUserMapper, LhbUser> implements LhbUserService {
+
+    private final WxMpService wxMpService;
+    private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
+
+
+
+    @Override
+    public LhbUser wechat(String code) {
+
+        try {
+
+//            WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(code);
+
+            WxOAuth2AccessToken accessToken = new WxOAuth2AccessToken();
+            accessToken.setOpenId("oCZLJ5wJ4YqY4Q8z7Y9ZJx9e8ZJL");
+
+            LhbUser user = getOne(Wrappers.lambdaQuery(LhbUser.class).eq(LhbUser::getWxOpenid, accessToken.getOpenId()));
+            if (user == null) {
+                user = new LhbUser();
+                //加盐
+                String salt = UUID.randomUUID().toString();
+                user.setSalt(salt);
+
+                user.setWxOpenid(accessToken.getOpenId());
+
+                //登陆密码
+                user.setPassword(ENCODER.encode(accessToken.getOpenId() + user.getSalt()));
+                //保存用户注册信息
+                baseMapper.insert(user);
+                String number = String.format("%08d", user.getId());
+
+                user.setNickname(CommonConstants.ORDER_SN_PREFIX + StrUtil.UNDERLINE + number);
+                baseMapper.updateById(user);
+            }
+
+            return user;
+        } catch (Exception e) {
+            throw new GlobalCustomerException(e.getMessage());
+        }
+    }
+
+
+
+    @Override
+    public WxJsapiSignature getJsapiTicket(String url) {
+
+        try {
+
+            return  wxMpService.createJsapiSignature(url);
+        } catch (WxErrorException e) {
+            log.error("获取ticket失败,请重新登陆", e);
+            throw new GlobalCustomerException("获取ticket失败,请重新登陆");
+        }
+    }
+
+}
+

+ 1 - 1
lhb-basic/lhb-basic-biz/src/main/resources/application-dev.yml

@@ -15,5 +15,5 @@ spring:
         namespace: 968c16b0-ee4f-4c2c-8a9f-0a7c8f37f230
   config:
     import:
-      - optional:nacos:llb-application-@profiles.active@.yml
+      - optional:nacos:application-@profiles.active@.yml
       - optional:nacos:${spring.application.name}-@profiles.active@.yml

+ 1 - 1
lhb-basic/lhb-basic-biz/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 server:
-  port: 8887
+  port: 8886
   shutdown: graceful
 
 spring:

+ 26 - 0
lhb-basic/lhb-basic-biz/src/main/resources/mapper/LhbUserMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.lhb.basic.biz.mapper.LhbUserMapper">
+
+    <resultMap type="com.kxs.lhb.basic.api.model.LhbUser" id="LlbUserMap">
+        <result column="id" property="id" />
+        <result column="wx_openid" property="wxOpenid" />
+        <result column="del_flag" property="delFlag" />
+        <result column="lock_flag" property="lockFlag" />
+        <result column="update_time" property="updateTime" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="create_by" property="createBy" />
+        <result column="nickname" property="nickname" />
+        <result column="avatar" property="avatar" />
+        <result column="phone" property="phone" />
+        <result column="salt" property="salt" />
+        <result column="password" property="password" />
+        <result column="username" property="username" />
+        <result column="status" property="status" />
+        <result column="remark" property="remark" />
+
+    </resultMap>
+
+
+</mapper>

+ 0 - 1
lhb-system/lhb-system-api/src/main/java/com/kxs/lhb/system/api/feign/config/KxsSystemFeignClientConfiguration.java

@@ -3,7 +3,6 @@ package com.kxs.lhb.system.api.feign.config;
 import cn.hutool.core.text.CharSequenceUtil;
 import com.kxs.common.core.constant.ServiceNameConstants;
 import com.kxs.lhb.system.api.feign.*;
-import com.kxs.llb.system.api.feign.*;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Qualifier;