فهرست منبع

取消分库,修改成单数据源

skyline 1 سال پیش
والد
کامیت
6449f21e19
64فایلهای تغییر یافته به همراه168 افزوده شده و 440 حذف شده
  1. 2 3
      car-wash-admin/src/main/java/com/kym/admin/jobs/ActivityDelayJob.java
  2. 1 5
      car-wash-admin/src/main/java/com/kym/admin/jobs/InvoiceStatusJob.java
  3. 1 5
      car-wash-admin/src/main/java/com/kym/admin/jobs/StationStatJob.java
  4. 2 3
      car-wash-admin/src/main/java/com/kym/admin/mq/consumer/UserCouponConsumer.java
  5. 2 2
      car-wash-admin/src/main/java/com/kym/admin/utils/CommJdbcCodeGenerator.java
  6. 1 1
      car-wash-admin/src/main/java/com/kym/admin/utils/MybatisPlusGeneratorForAdmin.java
  7. 60 71
      car-wash-admin/src/main/resources/application-dev.yml
  8. 0 133
      car-wash-admin/src/main/resources/application-dev1.yml
  9. 5 15
      car-wash-admin/src/main/resources/application-prod.yml
  10. 4 3
      car-wash-entity/pom.xml
  11. 1 1
      car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceDetailBuyerInformationTypeHandle.java
  12. 1 1
      car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceDetailItemsTypeHandle.java
  13. 1 1
      car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceDetailSellerInformationTypeHandle.java
  14. 1 1
      car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceOrderDetailListTypeHandle.java
  15. 6 6
      car-wash-mapper/pom.xml
  16. 1 2
      car-wash-mapper/src/main/java/com/kym/mapper/miniapp/UserMapper.java
  17. 1 2
      car-wash-miniapp/src/main/java/com/kym/miniapp/MiniAppApplication.java
  18. 1 2
      car-wash-miniapp/src/main/java/com/kym/miniapp/aspect/AppLogAspect.java
  19. 4 5
      car-wash-miniapp/src/main/java/com/kym/miniapp/jobs/StartChargeDelayJob.java
  20. 4 5
      car-wash-miniapp/src/main/java/com/kym/miniapp/jobs/StopChargeDelayJob.java
  21. 1 1
      car-wash-miniapp/src/main/java/com/kym/miniapp/utils/MybatisPlusGeneratorForMiniApp.java
  22. 4 14
      car-wash-miniapp/src/main/resources/application-dev.yml
  23. 5 15
      car-wash-miniapp/src/main/resources/application-prod.yml
  24. 1 1
      car-wash-miniapp/src/main/resources/application.yml
  25. 3 13
      car-wash-service/src/main/java/com/kym/service/admin/impl/ActivityServiceImpl.java
  26. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/AdminUserRoleServiceImpl.java
  27. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/AdminUserServiceImpl.java
  28. 0 5
      car-wash-service/src/main/java/com/kym/service/admin/impl/AdminUserStationServiceImpl.java
  29. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/BannerServiceImpl.java
  30. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/CompanyServiceImpl.java
  31. 1 6
      car-wash-service/src/main/java/com/kym/service/admin/impl/ConnectorInfoServiceImpl.java
  32. 0 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/ContactServiceImpl.java
  33. 1 3
      car-wash-service/src/main/java/com/kym/service/admin/impl/CouponServiceImpl.java
  34. 1 3
      car-wash-service/src/main/java/com/kym/service/admin/impl/EquipmentInfoServiceImpl.java
  35. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/EquipmentRelationServiceImpl.java
  36. 1 3
      car-wash-service/src/main/java/com/kym/service/admin/impl/InvestorInfoServiceImpl.java
  37. 2 5
      car-wash-service/src/main/java/com/kym/service/admin/impl/InvoiceDetailServiceImpl.java
  38. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/MonitorLogServiceImpl.java
  39. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/RechargeRightsServiceImpl.java
  40. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/RolePermissionServiceImpl.java
  41. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/StatementsServiceImpl.java
  42. 2 7
      car-wash-service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java
  43. 1 2
      car-wash-service/src/main/java/com/kym/service/admin/impl/SystemLogServiceImpl.java
  44. 5 2
      car-wash-service/src/main/java/com/kym/service/awoara/handle/OrderCreateEventHandler.java
  45. 1 5
      car-wash-service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java
  46. 7 0
      car-wash-service/src/main/java/com/kym/service/jobs/DelayService.java
  47. 1 1
      car-wash-service/src/main/java/com/kym/service/miniapp/ChargeService.java
  48. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/OrderRechargeRightsService.java
  49. 0 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/AccountServiceImpl.java
  50. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/AttachmentServiceImpl.java
  51. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/CarsServiceImpl.java
  52. 0 3
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java
  53. 3 12
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java
  54. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/CollectServiceImpl.java
  55. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/DataDictServiceImpl.java
  56. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/InvoiceServiceImpl.java
  57. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/PayLogServiceImpl.java
  58. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/RefundLogServiceImpl.java
  59. 3 10
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/UserCouponServiceImpl.java
  60. 1 6
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/UserServiceImpl.java
  61. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/WalletDetailServiceImpl.java
  62. 1 1
      car-wash-service/src/main/java/com/kym/service/mybatisplus/MyBaseServiceImpl.java
  63. 2 12
      car-wash-service/src/main/java/com/kym/service/wechat/impl/WxPayServiceImpl.java
  64. 4 3
      pom.xml

+ 2 - 3
car-wash-admin/src/main/java/com/kym/admin/jobs/ActivityDelayJob.java

@@ -1,6 +1,6 @@
 package com.kym.admin.jobs;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.*;
 import com.kym.entity.admin.delay.DelayActivity;
@@ -25,7 +25,6 @@ import java.util.concurrent.Executors;
  */
 @Service
 @Slf4j
-@DS("db-admin")
 @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) // 设置成单例
 public class ActivityDelayJob implements DelayService<DelayActivity> {
 
@@ -53,9 +52,9 @@ public class ActivityDelayJob implements DelayService<DelayActivity> {
         this.bannerService = bannerService;
     }
 
-    @DS("db-admin")
     // 这里不能使用@PostConstruct,在初始化完成后, bean 进入增强阶段, 所以这个阶段的任何AOP都是无效的,https://www.cnblogs.com/eternityz/p/15330069.html
     @EventListener
+    @Override
     public void init(ContextRefreshedEvent event) {
         // 队列加载所有进行中和未开始的活动
         var activity = activityService.lambdaQuery().in(Activity::getStatus, Activity.STATUS_进行中, Activity.STATUS_未开始).list();

+ 1 - 5
car-wash-admin/src/main/java/com/kym/admin/jobs/InvoiceStatusJob.java

@@ -1,6 +1,6 @@
 package com.kym.admin.jobs;
 
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.entity.miniapp.Invoice;
 import com.kym.entity.wechat.InvoiceNotification;
@@ -44,9 +44,7 @@ public class InvoiceStatusJob {
     public void execute() {
         log.info("执行发票状态处理定时任务...开始");
         // 所有开票中状态的发票
-        DynamicDataSourceContextHolder.push("db-miniapp");
         var invoiceList = invoiceService.lambdaQuery().eq(Invoice::getStatus, Invoice.STATUS_开票中).list();
-        DynamicDataSourceContextHolder.poll();
         invoiceList.forEach(invoice -> {
             var fapiaoApplications = wxPayService.queryFapiao(invoice.getApplyId());
             // 更新发票详情
@@ -54,11 +52,9 @@ public class InvoiceStatusJob {
             // 更新订单开票状态
             if (InvoiceNotification.FapiaoStatus.ISSUED.name().equals(fapiaoApplications.getFapiao_information().get(0).getStatus())) {
                 var startChargeSeqs = invoice.getOrderDetails().stream().map(InvoiceOrderDetail::getStartChargeSeq).toList();
-                DynamicDataSourceContextHolder.push("db-miniapp");
                 chargeOrderService.lambdaUpdate().in(ChargeOrder::getStartChargeSeq, startChargeSeqs).set(ChargeOrder::getInvoiceStatus, ChargeOrder.INVOICE_STATUS_已开票).update();
                 // 修改发票状态
                 invoiceService.lambdaUpdate().eq(Invoice::getApplyId, invoice.getApplyId()).set(Invoice::getStatus, Invoice.STATUS_已开票).update();
-                DynamicDataSourceContextHolder.poll();
             }
         });
         log.info("执行发票状态处理定时任务...结束");

+ 1 - 5
car-wash-admin/src/main/java/com/kym/admin/jobs/StationStatJob.java

@@ -1,7 +1,7 @@
 package com.kym.admin.jobs;
 
 import cn.hutool.core.date.DateUtil;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.StationStatDay;
@@ -11,7 +11,6 @@ import com.kym.service.admin.ConnectorInfoService;
 import com.kym.service.admin.StationStatDayService;
 import com.kym.service.admin.StationStatMonthService;
 import com.kym.service.miniapp.ChargeOrderService;
-import jakarta.annotation.PostConstruct;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -19,7 +18,6 @@ import org.springframework.stereotype.Component;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -107,13 +105,11 @@ public class StationStatJob {
 
     private List<ChargeOrder> getChargeOrders(LocalDateTime startTime, LocalDateTime endTime) {
         // 通过charge_app.t_charge_order表统计start_time为前一天且充电金额大于0的有效充电订单
-        DynamicDataSourceContextHolder.push("db-miniapp");
         var res = chargeOrderService.lambdaQuery()
                 .ge(ChargeOrder::getStartTime, startTime)
                 .le(ChargeOrder::getStartTime, endTime)
                 .gt(ChargeOrder::getTotalMoney, 0)
                 .list();
-        DynamicDataSourceContextHolder.poll();
         return res;
     }
 

+ 2 - 3
car-wash-admin/src/main/java/com/kym/admin/mq/consumer/UserCouponConsumer.java

@@ -1,7 +1,7 @@
 package com.kym.admin.mq.consumer;
 
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.kym.entity.common.Queues;
 import com.kym.entity.miniapp.UserCoupon;
 import com.kym.service.miniapp.UserCouponService;
@@ -33,7 +33,6 @@ public class UserCouponConsumer {
 
     @RabbitHandler
     @RabbitListener(queues = Queues.DELAY_USER_COUPON_QUEUE)
-    @DS("db-miniapp")
     public void userCouponHandler(List<Message> messages, Channel channel) {
         try {
             List<UserCoupon> userCouponList = messages.stream()
@@ -52,4 +51,4 @@ public class UserCouponConsumer {
             e.printStackTrace();
         }
     }
-}
+}

+ 2 - 2
car-wash-admin/src/main/java/com/kym/admin/utils/CommJdbcCodeGenerator.java

@@ -42,7 +42,7 @@ public class CommJdbcCodeGenerator {
 
     private void openDb() throws Exception {
         db = new DBHelper();
-        db.open("jdbc:mysql://121.40.98.15:3307/car-wash-admin?serverTimezone=Asia/Shanghai", "root", "KuaiyuMan/*-");
+        db.open("jdbc:mysql://121.40.98.15:3307/car-wash?serverTimezone=Asia/Shanghai", "root", "KuaiyuMan/*-");
     }
 
     public static void main(String[] args) {
@@ -76,7 +76,7 @@ public class CommJdbcCodeGenerator {
         try {
             openDb();
             String sql = "SELECT table_name tableName, ENGINE, table_comment tableComment, create_time createTime FROM information_schema.tables " + "WHERE  table_schema=?";
-            List<Map<String, Object>> maps = db.executeQueryList(sql, "car-wash-admin");
+            List<Map<String, Object>> maps = db.executeQueryList(sql, "car-wash");
             return ImmutableMap.of("list", maps);
         } catch (Exception e) {
             log.error("tableList error", e);

+ 1 - 1
car-wash-admin/src/main/java/com/kym/admin/utils/MybatisPlusGeneratorForAdmin.java

@@ -21,7 +21,7 @@ public class MybatisPlusGeneratorForAdmin {
 
     public static void main(String[] args) {
         // 指定数据源
-        FastAutoGenerator.create("jdbc:mysql://121.40.98.15:3307/car-wash-admin", "root", "KuaiyuMan/*-")
+        FastAutoGenerator.create("jdbc:mysql://121.40.98.15:3307/car-wash", "root", "KuaiyuMan/*-")
                 .globalConfig(builder -> {
                     builder.author("skyline")
                             // 指定输出目录

+ 60 - 71
car-wash-admin/src/main/resources/application-dev.yml

@@ -66,78 +66,67 @@ wechat:
     aeskey: U1ZC5gRrY4DDLZeyKxwpvU5Q7lQvvnQdOV0aX0UPpn6
 
 spring:
-  datasource:
-    druid: #以下是全局默认值,可以全局更改
-      #监控统计拦截的filters
-      filters: stat,slf4j
-      #配置初始化大小/最小/最大
-      initial-size: 2
-      min-idle: 2
-      max-active: 20
-      #获取连接等待超时时间
-      max-wait: 60000
-      #间隔多久进行一次检测,检测需要关闭的空闲连接
-      time-between-eviction-runs-millis: 60000
-      #一个连接在池中最小生存的时间
-      min-evictable-idle-time-millis: 300000
-      validation-query: SELECT 'x'
-      test-while-idle: true
-      test-on-borrow: false
-      test-on-return: false
-      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
-      pool-prepared-statements: false
-      max-pool-prepared-statement-per-connection-size: 20
-    dynamic:
-      primary: db-admin
-      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
-      datasource:
-        db-admin:
-          url: jdbc:mysql://121.40.98.15:3307/car-wash-admin?serverTimezone=Asia/Shanghai
-          username: root
-          password: KuaiyuMan/*-
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        db-miniapp:
-          url: jdbc:mysql://121.40.98.15:3307/car-wash-app?serverTimezone=Asia/Shanghai
-          username: root
-          password: KuaiyuMan/*-
-          driver-class-name: com.mysql.cj.jdbc.Driver
-  data:
-    redis:
-      port: 6380
+    datasource:
+      url: jdbc:mysql://121.40.98.15:3307/car-wash?serverTimezone=Asia/Shanghai
+      username: root
+      password: KuaiyuMan/*-
+      druid: #以下是全局默认值,可以全局更改
+        #监控统计拦截的filters
+        filters: stat,slf4j
+        #配置初始化大小/最小/最大
+        initial-size: 2
+        min-idle: 2
+        max-active: 20
+        #获取连接等待超时时间
+        max-wait: 60000
+        #间隔多久进行一次检测,检测需要关闭的空闲连接
+        time-between-eviction-runs-millis: 60000
+        #一个连接在池中最小生存的时间
+        min-evictable-idle-time-millis: 300000
+        validation-query: SELECT 'x'
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
+        pool-prepared-statements: false
+        max-pool-prepared-statement-per-connection-size: 20
+    data:
+      redis:
+        port: 6380
+        host: 121.40.98.15
+        password: KtXA^Zx!TZmLEy(@JjB@2(TVG0kdy5)&
+        database: 11
+        lettuce:
+          pool:
+            min-idle: 1
+          cluster:
+            refresh:
+              adaptive: true
+              period: 20
+    cache:
+      type: redis
+      redis:
+        # 缓存过期时间:7天
+        time-to-live: 604800
+    rabbitmq:
       host: 121.40.98.15
-      password: KtXA^Zx!TZmLEy(@JjB@2(TVG0kdy5)&
-      database: 11
-      lettuce:
-        pool:
-          min-idle: 1
-        cluster:
-          refresh:
-            adaptive: true
-            period: 20
-  cache:
-    type: redis
-    redis:
-      # 缓存过期时间:7天
-      time-to-live: 604800
-  rabbitmq:
-    host: 121.40.98.15
-    port: 5674
-    username: kym
-    password: kym!@123
-    virtual-host: /
-    publisher-returns: true
-    publisher-confirms: true
-    listener:
-      simple:
-        acknowledge-mode: manual
-        retry:
-          enabled: true
-          max-attempts: 3
-          initial-interval: 3000ms
-          max-interval: 6000ms
-          multiplier: 2
-        consumer-batch-enabled: true #开启批量消费
-        batch-size: 100 #每次批量消费大小
+      port: 5674
+      username: kym
+      password: kym!@123
+      virtual-host: /
+      publisher-returns: true
+      publisher-confirms: true
+      listener:
+        simple:
+          acknowledge-mode: manual
+          retry:
+            enabled: true
+            max-attempts: 3
+            initial-interval: 3000ms
+            max-interval: 6000ms
+            multiplier: 2
+          consumer-batch-enabled: true #开启批量消费
+          batch-size: 100 #每次批量消费大小
 
 kym:
   notify-email: skyline@kuaiyuman.cn

+ 0 - 133
car-wash-admin/src/main/resources/application-dev1.yml

@@ -1,133 +0,0 @@
-# EN+充电配置
-en-plus:
-  # 运营商ID
-  operatorId: MA5HJNDG1
-  # 运营商密钥
-  operatorSecret: 5009db3dc1e94ea8
-  # 消息密钥
-  dataSecret: 8c15f5bf050948ba
-  # 消息密钥初始化向量
-  dataSecretIv: 915bea94fa13461d
-  # 签名密钥
-  sigSecret: 46050b0bb5b7415c
-  # 最小充电余额(分)
-  chargeMinAmount: 200
-  # 接口地址
-  apiDomain: https://dev.en-plus.cn/Charge/evcs/v1//MA5HJNDG1/
-  # sass配置
-  sass: https://dev.en-plus.cn/Charge/op/login?username=快与慢&password=Admin123
-  # sass结算订单
-  sassClose: https://dev.en-plus.cn/Charge/op/analyze/order/close?orderCode=
-
-# 微信支付
-wechat:
-  payment:
-    appid: wx369fcff95d387bde
-    # 微信商户号
-    mchid: 1635831469
-    mchsn: 6A45EEB068369430B2FFD45EA29F641A8E18165F
-    v3Key: iTRovdvaTUQq0b9Jr91D7Tx66JnIes5U
-    notifyUrl: https://dev.kuaiyuman.cn/api/payment/notify
-    refundNotifyUrl: https://dev.kuaiyuman.cn/api/payment/refundNotify
-    certPath: cert/apiclient_cert.pem
-    keyPath: cert/apiclient_key.pem
-
-  miniapp:
-    appid: wx369fcff95d387bde
-    secret: e36560b99afd5f744754cd09e8f6cc2a
-    # 以下需要先开通消息推送
-    token: #微信小程序消息服务器配置的token
-    aesKey: #微信小程序消息服务器配置的EncodingAESKey
-    msgDataFormat: JSON
-
-  #运营看板小程序
-  kanban:
-    appid: wx35b22037ccbc7b3f
-    secret: b59ff1b7d160b5c0efe33570a2f3fdf2
-    token:
-
-  fapiao:
-    baseInformation: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/merchant/base-information
-    taxCodes: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/merchant/tax-codes
-    fapiaoApplications: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/fapiao-applications
-    notifyUrl: https://dev.kuaiyuman.cn/api/invoice/notify
-    devConfig: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/merchant/development-config
-    fapiaoFiles: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/fapiao-applications/%s/fapiao-files
-    queryFapiao: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/fapiao-applications/%s
-    titleUrl: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/user-title/title-url
-    userTitle: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/user-title?scene=WITHOUT_WECHATPAY&fapiao_apply_id=%s
-    cardTemplate: https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/card-template
-
- # 公众号配置
-  mp:
-    appid: wx93b0ef1be901bd19
-    secret: eea715b3058717f44e17c3e4e5cf1d2f
-    token: kym
-    aeskey: U1ZC5gRrY4DDLZeyKxwpvU5Q7lQvvnQdOV0aX0UPpn6
-
-spring:
-  datasource:
-    url: jdbc:mysql://121.40.98.15:3307/car-wash-admin?serverTimezone=Asia/Shanghai
-    username: root
-    password: KuaiyuMan/*-
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    druid: #以下是全局默认值,可以全局更改
-      #监控统计拦截的filters
-      filters: stat,slf4j
-      #配置初始化大小/最小/最大
-      initial-size: 2
-      min-idle: 2
-      max-active: 20
-      #获取连接等待超时时间
-      max-wait: 60000
-      #间隔多久进行一次检测,检测需要关闭的空闲连接
-      time-between-eviction-runs-millis: 60000
-      #一个连接在池中最小生存的时间
-      min-evictable-idle-time-millis: 300000
-      validation-query: SELECT 'x'
-      test-while-idle: true
-      test-on-borrow: false
-      test-on-return: false
-      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
-      pool-prepared-statements: false
-      max-pool-prepared-statement-per-connection-size: 20
-  data:
-    redis:
-      port: 6380
-      host: 121.40.98.15
-      password: KtXA^Zx!TZmLEy(@JjB@2(TVG0kdy5)&
-      database: 11
-      lettuce:
-        pool:
-          min-idle: 1
-        cluster:
-          refresh:
-            adaptive: true
-            period: 20
-  cache:
-    type: redis
-    redis:
-      # 缓存过期时间:7天
-      time-to-live: 604800
-  rabbitmq:
-    host: 121.40.98.15
-    port: 5674
-    username: kym
-    password: kym!@123
-    virtual-host: /
-    publisher-returns: true
-    publisher-confirms: true
-    listener:
-      simple:
-        acknowledge-mode: manual
-        retry:
-          enabled: true
-          max-attempts: 3
-          initial-interval: 3000ms
-          max-interval: 6000ms
-          multiplier: 2
-        consumer-batch-enabled: true #开启批量消费
-        batch-size: 100 #每次批量消费大小
-
-kym:
-  notify-email: skyline@kuaiyuman.cn

+ 5 - 15
car-wash-admin/src/main/resources/application-prod.yml

@@ -67,6 +67,10 @@ wechat:
 
 spring:
   datasource:
+    url: jdbc:mysql://121.40.98.15:3306/car-wash?serverTimezone=Asia/Shanghai
+    username: kym
+    password: qYhQLZLP6e7paVmQN5foEwRYJ1yFNpwM
+    driver-class-name: com.mysql.cj.jdbc.Driver
     druid: #以下是全局默认值,可以全局更改
       #监控统计拦截的filters
       filters: stat,slf4j
@@ -87,20 +91,6 @@ spring:
       #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
       pool-prepared-statements: false
       max-pool-prepared-statement-per-connection-size: 20
-    dynamic:
-      primary: db-admin
-      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
-      datasource:
-        db-admin:
-          url: jdbc:mysql://121.40.98.15:3306/charge_admin?serverTimezone=Asia/Shanghai
-          username: kym
-          password: qYhQLZLP6e7paVmQN5foEwRYJ1yFNpwM
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        db-miniapp:
-          url: jdbc:mysql://121.40.98.15:3306/charge_app?serverTimezone=Asia/Shanghai
-          username: kym
-          password: qYhQLZLP6e7paVmQN5foEwRYJ1yFNpwM
-          driver-class-name: com.mysql.cj.jdbc.Driver
   data:
     redis:
       port: 6379
@@ -140,4 +130,4 @@ spring:
         batch-size: 100 #每次批量消费大小
 
 kym:
-  notify-email: zaizai@kuaiyuman.cn,skyline@kuaiyuman.cn
+  notify-email: zaizai@kuaiyuman.cn,skyline@kuaiyuman.cn

+ 4 - 3
car-wash-entity/pom.xml

@@ -34,8 +34,8 @@
 
         <dependency>
             <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.3.2</version>
+            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+            <version>3.5.7</version>
         </dependency>
         <!-- 联表查询插件 -->
         <dependency>
@@ -64,8 +64,9 @@
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
-            <version>1.4.7</version>
+            <version>2.1.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceDetailBuyerInformationTypeHandle.java

@@ -17,7 +17,7 @@ public class InvoiceDetailBuyerInformationTypeHandle extends JacksonTypeHandler
     }
 
     @Override
-    protected Object parse(String json) {
+    public Object parse(String json) {
         try {
             return getObjectMapper().readValue(json, new TypeReference<FaPiao.BuyerInformation>() {
             });

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceDetailItemsTypeHandle.java

@@ -19,7 +19,7 @@ public class InvoiceDetailItemsTypeHandle extends JacksonTypeHandler {
     }
 
     @Override
-    protected Object parse(String json) {
+    public Object parse(String json) {
         try {
             return getObjectMapper().readValue(json, new TypeReference<List<FapiaoApplications.FapiaoItem>>() {
             });

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceDetailSellerInformationTypeHandle.java

@@ -17,7 +17,7 @@ public class InvoiceDetailSellerInformationTypeHandle extends JacksonTypeHandler
     }
 
     @Override
-    protected Object parse(String json) {
+    public Object parse(String json) {
         try {
             return getObjectMapper().readValue(json, new TypeReference<InvoiceBaseInfo.SellerInfo>() {
             });

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/typehandle/InvoiceOrderDetailListTypeHandle.java

@@ -19,7 +19,7 @@ public class InvoiceOrderDetailListTypeHandle extends JacksonTypeHandler {
     }
 
     @Override
-    protected Object parse(String json) {
+    public Object parse(String json) {
         try {
             return getObjectMapper().readValue(json, new TypeReference<List<InvoiceOrderDetail>>() {
             });

+ 6 - 6
car-wash-mapper/pom.xml

@@ -27,7 +27,7 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-generator</artifactId>
-            <version>3.5.3.2</version>
+            <version>3.5.7</version>
         </dependency>
 
         <!-- 代码生成使用 -->
@@ -38,11 +38,11 @@
         </dependency>
 
         <!-- 多数据源配置 -->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
-            <version>4.1.3</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.baomidou</groupId>-->
+<!--            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>-->
+<!--            <version>4.1.3</version>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>com.alibaba</groupId>

+ 1 - 2
car-wash-mapper/src/main/java/com/kym/mapper/miniapp/UserMapper.java

@@ -1,6 +1,6 @@
 package com.kym.mapper.miniapp;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseMapper;
 import com.kym.entity.admin.vo.CustomUserVo;
 import com.kym.entity.miniapp.User;
@@ -18,7 +18,6 @@ import java.util.List;
  * @author skyline
  * @since 2023-07-26
  */
-@DS("db-miniapp")
 public interface UserMapper extends MPJBaseMapper<User> {
 
     @Select("SELECT \n" +

+ 1 - 2
car-wash-miniapp/src/main/java/com/kym/miniapp/MiniAppApplication.java

@@ -18,8 +18,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  */
 @EnableAsync
 @EnableScheduling
-@SpringBootApplication(scanBasePackages = {"com.kym"}, exclude = DataSourceAutoConfiguration.class)
-//@ComponentScan(basePackages = {"com.kym"},excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com.kym.admin.*"))
+@SpringBootApplication(scanBasePackages = {"com.kym"}/*, exclude = DataSourceAutoConfiguration.class*/)
 @MapperScan(basePackages = {"com.kym.mapper"})
 @EnableCaching
 @EnableAspectJAutoProxy(exposeProxy = true)

+ 1 - 2
car-wash-miniapp/src/main/java/com/kym/miniapp/aspect/AppLogAspect.java

@@ -2,7 +2,7 @@ package com.kym.miniapp.aspect;
 
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSON;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.kym.common.annotation.ApiLog;
 import com.kym.common.utils.HttpContextUtils;
 import com.kym.common.utils.IDGenerator;
@@ -29,7 +29,6 @@ import java.lang.reflect.Method;
  */
 @Aspect
 @Component
-@DS("db-miniapp")
 public class AppLogAspect {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AppLogAspect.class);

+ 4 - 5
car-wash-miniapp/src/main/java/com/kym/miniapp/jobs/StartChargeDelayJob.java

@@ -1,6 +1,6 @@
 package com.kym.miniapp.jobs;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.kym.common.constant.ResponseEnum;
 import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
@@ -30,7 +30,6 @@ import java.util.concurrent.Executors;
  */
 @Component("StartChargeDelayJob")
 @Slf4j
-@DS("db-miniapp")
 @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) // 设置成单例
 public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
 
@@ -55,11 +54,11 @@ public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
         this.chargeService = chargeService;
     }
 
-    @DS("db-miniapp")
     // 这里不能使用@PostConstruct,在初始化完成后, bean 进入增强阶段, 所以这个阶段的任何AOP都是无效的,https://www.cnblogs.com/eternityz/p/15330069.html
-    @EventListener(classes = {ContextRefreshedEvent.class}, id = "StartChargeDelayJob")
+    @EventListener
     @Async
-    public void init() {
+    @Override
+    public void init(ContextRefreshedEvent event) {
         // 队列加载所有充电状态为预约中的订单,按照开始时间排序
         var orderList = chargeOrderService.lambdaQuery()
                 .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)

+ 4 - 5
car-wash-miniapp/src/main/java/com/kym/miniapp/jobs/StopChargeDelayJob.java

@@ -1,6 +1,6 @@
 package com.kym.miniapp.jobs;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.miniapp.ChargeOrder;
@@ -28,7 +28,6 @@ import java.util.concurrent.Executors;
  */
 @Component("StopChargeDelayJob")
 @Slf4j
-@DS("db-miniapp")
 @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) // 设置成单例
 public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
 
@@ -49,11 +48,11 @@ public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
         this.chargeService = chargeService;
     }
 
-    @DS("db-miniapp")
     // 这里不能使用@PostConstruct,在初始化完成后, bean 进入增强阶段, 所以这个阶段的任何AOP都是无效的,https://www.cnblogs.com/eternityz/p/15330069.html
-    @EventListener(classes = {ContextRefreshedEvent.class}, id = "StopChargeDelayJob")
+    @EventListener
     @Async
-    public void init() {
+    @Override
+    public void init(ContextRefreshedEvent event) {
 
         // 队列加载所有充电状态为预约中且有结束时间的订单,按照结束时间排序
         var orderList = chargeOrderService.lambdaQuery()

+ 1 - 1
car-wash-miniapp/src/main/java/com/kym/miniapp/utils/MybatisPlusGeneratorForMiniApp.java

@@ -21,7 +21,7 @@ public class MybatisPlusGeneratorForMiniApp {
 
     public static void main(String[] args) {
         // 指定数据源
-        FastAutoGenerator.create("jdbc:mysql://121.40.98.15:3307/car-wash-app", "root", "KuaiyuMan/*-")
+        FastAutoGenerator.create("jdbc:mysql://121.40.98.15:3307/car-wash", "root", "KuaiyuMan/*-")
                 .globalConfig(builder -> {
                     builder.author("skyline")
                             // 指定输出目录

+ 4 - 14
car-wash-miniapp/src/main/resources/application-dev.yml

@@ -60,6 +60,10 @@ wechat:
 
 spring:
   datasource:
+    url: jdbc:mysql://121.40.98.15:3307/car-wash?serverTimezone=Asia/Shanghai
+    username: root
+    password: KuaiyuMan/*-
+    driver-class-name: com.mysql.cj.jdbc.Driver
     druid: #以下是全局默认值,可以全局更改
       #监控统计拦截的filters
       filters: stat,slf4j
@@ -80,20 +84,6 @@ spring:
       #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
       pool-prepared-statements: false
       max-pool-prepared-statement-per-connection-size: 20
-    dynamic:
-      primary: db-miniapp
-      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
-      datasource:
-        db-admin:
-          url: jdbc:mysql://121.40.98.15:3307/car-wash-admin?serverTimezone=Asia/Shanghai
-          username: root
-          password: KuaiyuMan/*-
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        db-miniapp:
-          url: jdbc:mysql://121.40.98.15:3307/car-wash-app?serverTimezone=Asia/Shanghai
-          username: root
-          password: KuaiyuMan/*-
-          driver-class-name: com.mysql.cj.jdbc.Driver
   data:
     redis:
       port: 6380

+ 5 - 15
car-wash-miniapp/src/main/resources/application-prod.yml

@@ -60,6 +60,10 @@ wechat:
 
 spring:
   datasource:
+    url: jdbc:mysql://121.40.98.15:3306/car-wash?serverTimezone=Asia/Shanghai
+    username: kym
+    password: qYhQLZLP6e7paVmQN5foEwRYJ1yFNpwM
+    driver-class-name: com.mysql.cj.jdbc.Driver
     druid: #以下是全局默认值,可以全局更改
       #监控统计拦截的filters
       filters: stat,slf4j
@@ -80,20 +84,6 @@ spring:
       #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
       pool-prepared-statements: false
       max-pool-prepared-statement-per-connection-size: 20
-    dynamic:
-      primary: db-miniapp
-      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
-      datasource:
-        db-admin:
-          url: jdbc:mysql://min:3306/charge_admin?serverTimezone=Asia/Shanghai
-          username: kym
-          password: qYhQLZLP6e7paVmQN5foEwRYJ1yFNpwM
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        db-miniapp:
-          url: jdbc:mysql://121.40.98.15:3306/charge_app?serverTimezone=Asia/Shanghai
-          username: kym
-          password: qYhQLZLP6e7paVmQN5foEwRYJ1yFNpwM
-          driver-class-name: com.mysql.cj.jdbc.Driver
   data:
     redis:
       port: 6379
@@ -131,4 +121,4 @@ spring:
           multiplier: 2
 
 kym:
-  notify-email: zaizai@kuaiyuman.cn,skyline@kuaiyuman.cn
+  notify-email: zaizai@kuaiyuman.cn,skyline@kuaiyuman.cn

+ 1 - 1
car-wash-miniapp/src/main/resources/application.yml

@@ -67,6 +67,6 @@ aliyun:
     accessSecret: dtVF6na8Hp9W8DmAoWI9k24VXwjNyM
     consumerGroupId: DEFAULT_GROUP
     iotInstanceId: iot-06z00hb4ys0z7ri
-    clientId: car-wash-app-01
+    clientId: car-wash-01
     ampq-host: iot-06z00hb4ys0z7ri.amqp.iothub.aliyuncs.com
     mns-host: http://1757940634296846.mns.cn-shanghai.aliyuncs.com

+ 3 - 13
car-wash-service/src/main/java/com/kym/service/admin/impl/ActivityServiceImpl.java

@@ -1,8 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
 import com.github.pagehelper.PageHelper;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.IDGenerator;
@@ -14,10 +12,10 @@ import com.kym.entity.common.PageBean;
 import com.kym.entity.common.RedisKeys;
 import com.kym.entity.miniapp.UserRechargeRights;
 import com.kym.mapper.admin.ActivityMapper;
-import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import com.kym.service.admin.*;
 import com.kym.service.jobs.DelayService;
 import com.kym.service.miniapp.UserRechargeRightsService;
+import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
@@ -43,7 +41,6 @@ import static com.kym.entity.admin.Activity.*;
  * @since 2023-10-18
  */
 @Service
-@DS("db-admin")
 @Slf4j
 public class ActivityServiceImpl extends MyBaseServiceImpl<ActivityMapper, Activity> implements ActivityService {
 
@@ -78,7 +75,7 @@ public class ActivityServiceImpl extends MyBaseServiceImpl<ActivityMapper, Activ
      * @return
      */
     @Override
-    @DSTransactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public void createActivity(ActivityVo activityVo) {
         // 新增activity
         var activity = new Activity();
@@ -235,8 +232,6 @@ public class ActivityServiceImpl extends MyBaseServiceImpl<ActivityMapper, Activ
     public void asyncHandleRechargeActivity(long userId, int rechargeAmount) {
         log.info("RechargeActivityTask run....");
         // 进行中的充值权益活动
-        // 手动切换数据源
-        DynamicDataSourceContextHolder.push("db-admin");
         var activity = lambdaQuery().eq(Activity::getDiscountType, DISCOUNT_TYPE_服务费折扣权益).eq(Activity::getStatus, Activity.STATUS_进行中).one();
         // 充值金额,匹配到到具体的充值权益,生成用户权益
         if (activity != null) {
@@ -244,19 +239,14 @@ public class ActivityServiceImpl extends MyBaseServiceImpl<ActivityMapper, Activ
                     .le(RechargeRights::getAmountMin, rechargeAmount)
                     .gt(RechargeRights::getAmountMax, rechargeAmount)
                     .one();
-            DynamicDataSourceContextHolder.poll();
             if (rechargeRights != null) {
                 var userRechargeRights = new UserRechargeRights().setRightsId(rechargeRights.getId()).setUserId(userId).setRightsBalance(rechargeAmount);
                 BeanUtils.copyProperties(rechargeRights, userRechargeRights, "id", "createTime", "updateTime");
                 // 计算有效期
                 var endTime = LocalDateTime.now().with(LocalTime.MAX).plusDays(rechargeRights.getValidity() - 1);
-                // 手动切换数据源
-                DynamicDataSourceContextHolder.push("db-miniapp");
                 userRechargeRightsService.save(userRechargeRights.setStartTime(LocalDateTime.now()).setEndTime(endTime));
-                DynamicDataSourceContextHolder.poll();
             }
         } else {
-            DynamicDataSourceContextHolder.poll();
         }
         log.info("RechargeActivityTask run end....");
     }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/AdminUserRoleServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.AdminUserRole;
 import com.kym.mapper.admin.AdminUserRoleMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-09-04
  */
 @Service
-@DS("db-admin")
 public class AdminUserRoleServiceImpl extends MPJBaseServiceImpl<AdminUserRoleMapper, AdminUserRole> implements AdminUserRoleService {
 
 }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/AdminUserServiceImpl.java

@@ -6,7 +6,7 @@ import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
 import cn.hutool.crypto.digest.DigestAlgorithm;
 import cn.hutool.crypto.digest.Digester;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -49,7 +49,6 @@ import java.util.Map;
  * @since 2023-07-11
  */
 @Service
-@DS("db-admin")
 public class AdminUserServiceImpl extends MPJBaseServiceImpl<AdminUserMapper, AdminUser> implements AdminUserService {
     final static Digester MD5 = new Digester(DigestAlgorithm.MD5);
     private static final Logger LOGGER = LoggerFactory.getLogger(AdminUserServiceImpl.class);

+ 0 - 5
car-wash-service/src/main/java/com/kym/service/admin/impl/AdminUserStationServiceImpl.java

@@ -1,7 +1,5 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.AdminUserStation;
 import com.kym.mapper.admin.AdminUserStationMapper;
@@ -23,12 +21,10 @@ import java.util.stream.Collectors;
  * @since 2023-09-18
  */
 @Service
-@DS("db-admin")
 public class AdminUserStationServiceImpl extends MPJBaseServiceImpl<AdminUserStationMapper, AdminUserStation> implements AdminUserStationService {
 
     @PostConstruct
     private void init() {
-        DynamicDataSourceContextHolder.push("db-admin");
         var adminUser2Stations = list().stream().collect(Collectors.toMap(AdminUserStation::getAdminUserId,
                 adminUserStation -> {
                     List<String> stationIds = new ArrayList<>();
@@ -42,6 +38,5 @@ public class AdminUserStationServiceImpl extends MPJBaseServiceImpl<AdminUserSta
         ));
 
         KymCache.INSTANCE.putAdminUser2Stations(adminUser2Stations);
-        DynamicDataSourceContextHolder.poll();
     }
 }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/BannerServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.IDGenerator;
@@ -24,7 +24,6 @@ import java.util.List;
  * @since 2023-10-18
  */
 @Service
-@DS("db-admin")
 public class BannerServiceImpl extends MPJBaseServiceImpl<BannerMapper, Banner> implements BannerService {
 
     @Override

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/CompanyServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.Company;
 import com.kym.mapper.admin.CompanyMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-07-12
  */
 @Service
-@DS("db-admin")
 public class CompanyServiceImpl extends MPJBaseServiceImpl<CompanyMapper, Company> implements CompanyService {
 
 }

+ 1 - 6
car-wash-service/src/main/java/com/kym/service/admin/impl/ConnectorInfoServiceImpl.java

@@ -1,8 +1,7 @@
 package com.kym.service.admin.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
 import com.github.pagehelper.PageHelper;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.ConnectorInfo;
@@ -35,7 +34,6 @@ import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
  * @since 2023-08-05
  */
 @Service
-@DS("db-admin")
 public class ConnectorInfoServiceImpl extends MyBaseServiceImpl<ConnectorInfoMapper, ConnectorInfo> implements ConnectorInfoService {
 
     private final ChargeOrderService chargeOrderService;
@@ -90,8 +88,6 @@ public class ConnectorInfoServiceImpl extends MyBaseServiceImpl<ConnectorInfoMap
         // 根据状态进行分组
 
         // 预约中的设备
-        // 手动切换数据源
-        DynamicDataSourceContextHolder.push("db-miniapp");
         // 查询预约中的订单,按照站点id分组并对connectorId去重计数
         var orderInfos = chargeOrderService.lambdaQuery()
                 .select(ChargeOrder::getConnectorId)
@@ -99,7 +95,6 @@ public class ConnectorInfoServiceImpl extends MyBaseServiceImpl<ConnectorInfoMap
                 .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
                 .list().stream().filter(CommUtil.distinctByKey(ChargeOrder::getConnectorId)).count();
 
-        DynamicDataSourceContextHolder.poll();
         var res = connectorInfos.stream().collect(Collectors.groupingBy(ConnectorInfo::getStatus, Collectors.counting()));
         res.put(EquipmentInfo.SERVICE_STATUS_已连接, res.getOrDefault(EquipmentInfo.SERVICE_STATUS_已连接, 0L) - orderInfos);
         res.put(EquipmentInfo.SERVICE_STATUS_预约中, orderInfos);

+ 0 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/ContactServiceImpl.java

@@ -1,6 +1,5 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.Contact;
 import com.kym.mapper.admin.ContactMapper;
@@ -16,7 +15,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-08-15
  */
 @Service
-@DS("db-admin")
 public class ContactServiceImpl extends MPJBaseServiceImpl<ContactMapper, Contact> implements ContactService {
 
 }

+ 1 - 3
car-wash-service/src/main/java/com/kym/service/admin/impl/CouponServiceImpl.java

@@ -1,7 +1,6 @@
 package com.kym.service.admin.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.toolkit.JoinWrappers;
@@ -41,7 +40,6 @@ import java.util.Objects;
  * @since 2024-04-25
  */
 @Service
-@DS("db-admin")
 public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {
 
     private final UserService userService;
@@ -141,7 +139,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
     }
 
     @Override
-    public void usedQuantifyCount(Long couponId){
+    public void usedQuantifyCount(Long couponId) {
         lambdaUpdate().setSql("used_quantity = used_quantity + 1").eq(Coupon::getId, couponId).update();
     }
 

+ 1 - 3
car-wash-service/src/main/java/com/kym/service/admin/impl/EquipmentInfoServiceImpl.java

@@ -1,10 +1,9 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.kym.entity.admin.EquipmentInfo;
 import com.kym.mapper.admin.EquipmentInfoMapper;
-import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import com.kym.service.admin.EquipmentInfoService;
+import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**
@@ -16,7 +15,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-08-05
  */
 @Service
-@DS("db-admin")
 public class EquipmentInfoServiceImpl extends MyBaseServiceImpl<EquipmentInfoMapper, EquipmentInfo> implements EquipmentInfoService {
 
 }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/EquipmentRelationServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.EquipmentRelation;
 import com.kym.mapper.admin.EquipmentRelationMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-08-07
  */
 @Service
-@DS("db-admin")
 public class EquipmentRelationServiceImpl extends MPJBaseServiceImpl<EquipmentRelationMapper, EquipmentRelation> implements EquipmentRelationService {
 
     @Override

+ 1 - 3
car-wash-service/src/main/java/com/kym/service/admin/impl/InvestorInfoServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.InvestorInfo;
@@ -8,7 +8,6 @@ import com.kym.entity.admin.queryParams.CommonQueryParam;
 import com.kym.entity.common.PageBean;
 import com.kym.mapper.admin.InvestorInfoMapper;
 import com.kym.service.admin.InvestorInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 
@@ -21,7 +20,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-12-27
  */
 @Service
-@DS("db-admin")
 public class InvestorInfoServiceImpl extends ServiceImpl<InvestorInfoMapper, InvestorInfo> implements InvestorInfoService {
 
     @Override

+ 2 - 5
car-wash-service/src/main/java/com/kym/service/admin/impl/InvoiceDetailServiceImpl.java

@@ -5,8 +5,6 @@ import cn.hutool.core.util.NumberUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import com.alibaba.fastjson2.JSON;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.utils.CommUtil;
@@ -20,6 +18,7 @@ import com.kym.mapper.admin.InvoiceDetailMapper;
 import com.kym.service.admin.InvoiceDetailService;
 import com.kym.service.miniapp.DataDictService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -121,8 +120,7 @@ public class InvoiceDetailServiceImpl extends MPJBaseServiceImpl<InvoiceDetailMa
      * @param fapiaoApplications
      */
     @Override
-    @DS("db-admin")
-    @DSTransactional
+    @Transactional
     public void updateInvoiceDetail(String applyId, FapiaoApplications fapiaoApplications) {
         if (InvoiceNotification.FapiaoStatus.ISSUED.name().equals(fapiaoApplications.getFapiao_information().get(0).getStatus())) {
             var invoiceDetail = new InvoiceDetail()
@@ -139,7 +137,6 @@ public class InvoiceDetailServiceImpl extends MPJBaseServiceImpl<InvoiceDetailMa
                     .setBuyerInformation(fapiaoApplications.getFapiao_information().get(0).getBuyer_information())
                     .setExtraInformation(fapiaoApplications.getFapiao_information().get(0).getExtra_information())
                     .setItems(fapiaoApplications.getFapiao_information().get(0).getItems());
-            // 手动切换数据源
             removeByMap(Map.of("apply_id", applyId));
             save(invoiceDetail);
         }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/MonitorLogServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.MonitorLog;
 import com.kym.mapper.admin.MonitorLogMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-08-29
  */
 @Service
-@DS("db-admin")
 public class MonitorLogServiceImpl extends MPJBaseServiceImpl<MonitorLogMapper, MonitorLog> implements MonitorLogService {
 
 }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/RechargeRightsServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
@@ -28,7 +28,6 @@ import java.util.List;
  * @since 2023-10-18
  */
 @Service
-@DS("db-admin")
 public class RechargeRightsServiceImpl extends MPJBaseServiceImpl<RechargeRightsMapper, RechargeRights> implements RechargeRightsService {
 
     /**

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/RolePermissionServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.RolePermission;
 import com.kym.mapper.admin.RolePermissionMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-07-12
  */
 @Service
-@DS("db-admin")
 public class RolePermissionServiceImpl extends MPJBaseServiceImpl<RolePermissionMapper, RolePermission> implements RolePermissionService {
 
 }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/StatementsServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
@@ -30,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
  * @since 2023-12-27
  */
 @Service
-@DS("db-admin")
 public class StatementsServiceImpl extends MPJBaseServiceImpl<StatementsMapper, Statements> implements StatementsService {
 
     private final InvestorInfoService investorInfoService;

+ 2 - 7
car-wash-service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -3,8 +3,7 @@ package com.kym.service.admin.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.kym.common.annotation.DynamicCache;
 import com.kym.common.enums.EnPlusApi;
@@ -18,10 +17,10 @@ import com.kym.entity.admin.vo.StationVo;
 import com.kym.entity.enplus.EnStationStatsInfo;
 import com.kym.entity.enplus.EnStationStatusInfo;
 import com.kym.mapper.admin.StationMapper;
-import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import com.kym.service.admin.*;
 import com.kym.service.cache.KymCache;
 import com.kym.service.enplus.EnPlusService;
+import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.BeanUtils;
@@ -41,7 +40,6 @@ import java.util.stream.Collectors;
  * @since 2023-08-12
  */
 @Service
-@DS("db-admin")
 @Slf4j
 public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station> implements StationService {
 
@@ -248,7 +246,6 @@ public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station
         }
         BeanUtils.copyProperties(stationVo, station);
 
-        DynamicDataSourceContextHolder.push("db-admin");
         // 更新站点信息
         updateByQueryWrapper(station, s -> new QueryWrapper<Station>().eq("station_id", station.getStationId()));
 
@@ -260,8 +257,6 @@ public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station
         connectorInfoService.updateBatchByQueryWrapper(connectorList, connectorInfo ->
                 new QueryWrapper<ConnectorInfo>().eq("connector_id", connectorInfo.getConnectorId()));
 
-        DynamicDataSourceContextHolder.poll();
-
         // 缓存更新,其他数据在站点导入时更新 com.kym.service.admin.impl.StationServiceImpl.importStation
         KymCache.INSTANCE.putStationId2Name(Map.of(stationVo.getStationId(), stationVo.getStationName()));
         KymCache.INSTANCE.putConnectorId2Status(connectorList.stream().collect(Collectors.toMap(ConnectorInfo::getConnectorId, ConnectorInfo::getStatus)));

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/admin/impl/SystemLogServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.admin.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.SystemLog;
 import com.kym.mapper.admin.SystemLogMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-07-10
  */
 @Service
-@DS("db-admin")
 public class SystemLogServiceImpl extends MPJBaseServiceImpl<SystemLogMapper, SystemLog> implements SystemLogService {
 
 }

+ 5 - 2
car-wash-service/src/main/java/com/kym/service/awoara/handle/OrderCreateEventHandler.java

@@ -1,14 +1,17 @@
 package com.kym.service.awoara.handle;
 
+import com.kym.service.awoara.entity.OrderInfo;
 import lombok.extern.slf4j.Slf4j;
 
 /**
  * 收到订单事件
+ *
+ * @author skyline
  */
 @Slf4j
-public class OrderCreateEventHandler implements AwoaraEventHandler {
+public class OrderCreateEventHandler implements AwoaraEventHandler<OrderInfo> {
     @Override
-    public void handle(Report report) {
+    public void handle(Report<OrderInfo> report) {
         log.info(report.toString());
         log.info("DeviceStateEventHandler");
     }

+ 1 - 5
car-wash-service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java

@@ -2,8 +2,6 @@ package com.kym.service.enplus.impl;
 
 import cn.hutool.extra.mail.MailUtil;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.EquipmentInfo;
@@ -87,7 +85,6 @@ public class EnNotifyServiceImpl implements EnNotifyService {
      * @return
      */
     @Override
-    @DS("db-admin")
     public String handleNotificationStationStatus(JSONObject json) {
         var data = enPlusService.signValidation(json);
         LOGGER.info("【EN+推送】收到充电桩设备状态变化推送:{},解密数据:{}", json, data);
@@ -163,7 +160,6 @@ public class EnNotifyServiceImpl implements EnNotifyService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    @DS("db-miniapp")
     public String handleNotificationStartChargeResult(JSONObject json) {
         var data = enPlusService.signValidation(json);
         LOGGER.info("【EN+推送】收到启动充电结果推送:{},解密数据:{}", json, data);
@@ -261,7 +257,7 @@ public class EnNotifyServiceImpl implements EnNotifyService {
      * @return
      */
     @Override
-    @DSTransactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public String handleNotificationChargeOrderInfo(JSONObject json) {
         var dataStr = enPlusService.signValidation(json);
         var data = JSONObject.parseObject(dataStr);

+ 7 - 0
car-wash-service/src/main/java/com/kym/service/jobs/DelayService.java

@@ -1,11 +1,18 @@
 package com.kym.service.jobs;
 
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.context.event.EventListener;
+
 /**
  * @author skyline
  * @description
  * @date 2023-10-08 21:41
  */
 public interface DelayService<T> {
+    // 这里不能使用@PostConstruct,在初始化完成后, bean 进入增强阶段, 所以这个阶段的任何AOP都是无效的,https://www.cnblogs.com/eternityz/p/15330069.html
+    @EventListener
+    void init(ContextRefreshedEvent event);
+
     /**
      * 添加延迟对象到延时队列
      *

+ 1 - 1
car-wash-service/src/main/java/com/kym/service/miniapp/ChargeService.java

@@ -1,6 +1,6 @@
 package com.kym.service.miniapp;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.kym.entity.enplus.response.EnBusinessPolicy;
 import com.kym.entity.miniapp.ChargeOrder;
 

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/OrderRechargeRightsService.java

@@ -1,6 +1,6 @@
 package com.kym.service.miniapp;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseService;
 import com.kym.entity.miniapp.OrderRechargeRights;
 
@@ -12,7 +12,6 @@ import com.kym.entity.miniapp.OrderRechargeRights;
  * @author skyline
  * @since 2023-10-19
  */
-@DS("db-miniapp")
 public interface OrderRechargeRightsService extends MPJBaseService<OrderRechargeRights> {
 
 }

+ 0 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/AccountServiceImpl.java

@@ -1,7 +1,6 @@
 package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.miniapp.Account;
 import com.kym.entity.miniapp.UserCoupon;
@@ -24,7 +23,6 @@ import java.util.Map;
  * @since 2023-08-07
  */
 @Service
-@DS("db-miniapp")
 public class AccountServiceImpl extends MPJBaseServiceImpl<AccountMapper, Account> implements AccountService {
 
     private final UserRechargeRightsService userRechargeRightsService;

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/AttachmentServiceImpl.java

@@ -3,7 +3,7 @@ package com.kym.service.miniapp.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.UUID;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.utils.CommUtil;
@@ -28,7 +28,6 @@ import java.util.Objects;
  * @author zuy
  * @since 2023-08-12
  */
-@DS("db-miniapp")
 @Service
 public class AttachmentServiceImpl extends MPJBaseServiceImpl<AttachmentMapper, Attachment> implements AttachmentService {
 

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/CarsServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.miniapp.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.miniapp.Cars;
 import com.kym.mapper.miniapp.CarsMapper;
@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-07-26
  */
 @Service
-@DS("db-miniapp")
 public class CarsServiceImpl extends MPJBaseServiceImpl<CarsMapper, Cars> implements CarsService {
 
 }

+ 0 - 3
car-wash-service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java

@@ -3,7 +3,6 @@ package com.kym.service.miniapp.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.pagehelper.PageHelper;
 import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
@@ -58,7 +57,6 @@ import java.util.stream.Collectors;
  * @since 2023-08-08
  */
 @Service
-@DS("db-miniapp")
 @Slf4j
 public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper, ChargeOrder> implements ChargeOrderService {
 
@@ -272,7 +270,6 @@ public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper,
      * @return
      */
     @Override
-    @DS("db-admin")
     public Map<String, ?> stationStatDetail(StatQueryParam params) {
 
         CommUtil.asserts(CommUtil.isNotEmptyAndNull(params.getStationIds()), "站点不能为空");

+ 3 - 12
car-wash-service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java

@@ -2,9 +2,6 @@ package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.kym.common.config.EnPlusConfig;
 import com.kym.common.constant.ResponseEnum;
 import com.kym.common.exception.BusinessException;
@@ -32,8 +29,8 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.Map;
@@ -45,7 +42,6 @@ import java.util.concurrent.TimeUnit;
  * @date 2023-07-29 14:24
  */
 @Service
-@DS("db-miniapp")
 public class ChargeServiceImpl implements ChargeService {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ChargeServiceImpl.class);
@@ -192,7 +188,7 @@ public class ChargeServiceImpl implements ChargeService {
      * @return
      */
     @Override
-    @DSTransactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public Map<String, String> queryStartCharge(Long userId, String connectorId, Long userRechargeRightsId, Long userCouponId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime) {
         var connectorId2StationId = getConnectorIdAndStationId(connectorId);
         connectorId = connectorId2StationId.get("connectorId");
@@ -431,17 +427,14 @@ public class ChargeServiceImpl implements ChargeService {
 
 
     /**
-     * 修改充电桩状态(这里@DS使用AOP实现,切换数据源需要单独抽出方法,这里@DS不生效,改为手动切换)
+     * 修改充电桩状态
      *
      * @param connectorId
      */
     @Override
     public void updateEquipmentAndConnectorStatus(String connectorId) {
-        // 手动切换数据源
-        DynamicDataSourceContextHolder.push("db-admin");
         equipmentInfoService.lambdaUpdate().set(EquipmentInfo::getServiceStatus, EquipmentInfo.SERVICE_STATUS_预约中).eq(EquipmentInfo::getEquipmentId, connectorId.substring(0, 16)).update();
         connectorInfoService.lambdaUpdate().set(ConnectorInfo::getStatus, EquipmentInfo.SERVICE_STATUS_预约中).eq(ConnectorInfo::getConnectorId, connectorId).update();
-        DynamicDataSourceContextHolder.poll();
     }
 
 
@@ -482,7 +475,6 @@ public class ChargeServiceImpl implements ChargeService {
      * @param connectorId 充电桩id,短编号等
      * @return
      */
-    @DS("db-admin")
     public Map<String, String> getConnectorIdAndStationId(String connectorId) {
         var stationId = "";
         if (connectorId.length() == 17) {
@@ -505,7 +497,6 @@ public class ChargeServiceImpl implements ChargeService {
         return Map.of("connectorId", connectorId, "stationId", stationId);
     }
 
-    @DS("db-admin")
     public String getConnectorId(String connectorId) {
         if (connectorId.length() == 17) {
             return connectorId;

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/CollectServiceImpl.java

@@ -1,7 +1,7 @@
 package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.enplus.EnStationStatusInfo;
 import com.kym.entity.miniapp.Collect;
@@ -22,7 +22,6 @@ import java.util.List;
  * @since 2023-07-31
  */
 @Service
-@DS("db-miniapp")
 public class CollectServiceImpl extends MPJBaseServiceImpl<CollectMapper, Collect> implements CollectService {
 
     private final StationService stationService;

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/DataDictServiceImpl.java

@@ -2,7 +2,7 @@ package com.kym.service.miniapp.impl;
 
 import cn.hutool.core.util.ClassUtil;
 import cn.hutool.core.util.ReflectUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -32,7 +32,6 @@ import java.util.stream.Collectors;
  * @since 2023-08-13
  */
 @Service
-@DS("db-miniapp")
 public class DataDictServiceImpl extends MPJBaseServiceImpl<DataDictMapper, DataDict> implements DataDictService {
 
 

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/InvoiceServiceImpl.java

@@ -1,7 +1,7 @@
 package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
@@ -42,7 +42,6 @@ import java.util.List;
  */
 @Service
 @Slf4j
-@DS("db-miniapp")
 public class InvoiceServiceImpl extends MPJBaseServiceImpl<InvoiceMapper, Invoice> implements InvoiceService {
 
     private final ChargeOrderService chargeOrderService;

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/PayLogServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.miniapp.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
@@ -22,7 +22,6 @@ import java.util.List;
  * @since 2023-08-12
  */
 @Service
-@DS("db-miniapp")
 public class PayLogServiceImpl extends MPJBaseServiceImpl<PayLogMapper, PayLog> implements PayLogService {
     @Override
     public PageBean<CustomRechargeVo> listRecharge(CommonQueryParam params) {

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/RefundLogServiceImpl.java

@@ -1,6 +1,6 @@
 package com.kym.service.miniapp.impl;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
@@ -20,7 +20,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-09-11
  */
 @Service
-@DS("db-miniapp")
 public class RefundLogServiceImpl extends MPJBaseServiceImpl<RefundLogMapper, RefundLog> implements RefundLogService {
 
     @Override

+ 3 - 10
car-wash-service/src/main/java/com/kym/service/miniapp/impl/UserCouponServiceImpl.java

@@ -1,8 +1,8 @@
 package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
+
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
@@ -42,7 +42,6 @@ import java.util.stream.Collectors;
  * @since 2024-04-29
  */
 @Service
-@DS("db-miniapp")
 public class UserCouponServiceImpl extends MPJBaseServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService {
 
     private final RedisTemplate<String, String> redisTemplate;
@@ -94,8 +93,6 @@ public class UserCouponServiceImpl extends MPJBaseServiceImpl<UserCouponMapper,
 
     @Override
     public void collectCoupon(Long couponId) {
-        // 手动切换数据源
-        DynamicDataSourceContextHolder.push("db-admin");
         // 优惠券状态校验
         var coupon = couponService.lambdaQuery()
                 .eq(Coupon::getId, couponId)
@@ -103,12 +100,10 @@ public class UserCouponServiceImpl extends MPJBaseServiceImpl<UserCouponMapper,
                 .one();
 
         if (coupon == null) {
-            DynamicDataSourceContextHolder.poll();
             throw new BusinessException("优惠券不存在或已失效!");
         }
 
         if (coupon.getClaimedQuantity() >= coupon.getQuantity() && coupon.getQuantity() > 0) {
-            DynamicDataSourceContextHolder.poll();
             throw new BusinessException("优惠券已领完!");
         }
 
@@ -116,7 +111,6 @@ public class UserCouponServiceImpl extends MPJBaseServiceImpl<UserCouponMapper,
         var userId = StpUtil.getLoginIdAsLong();
         var exist = redisTemplate.opsForSet().isMember(RedisKeys.COUPON_ID_TO_USERS, couponId + ":" + userId);
         if (Boolean.TRUE.equals(exist)) {
-            DynamicDataSourceContextHolder.poll();
             throw new BusinessException("优惠券已领取,请勿重复领取!");
         }
 
@@ -132,7 +126,6 @@ public class UserCouponServiceImpl extends MPJBaseServiceImpl<UserCouponMapper,
         }
         couponService.updateById(coupon);
 
-        DynamicDataSourceContextHolder.poll();
 
         // 存入缓存和数据库
         redisTemplate.opsForSet().add(RedisKeys.COUPON_ID_TO_USERS, couponId + ":" + userId);
@@ -184,4 +177,4 @@ public class UserCouponServiceImpl extends MPJBaseServiceImpl<UserCouponMapper,
         return baseMapper.listStationAvailableCoupons(params);
     }
 
-}
+}

+ 1 - 6
car-wash-service/src/main/java/com/kym/service/miniapp/impl/UserServiceImpl.java

@@ -1,8 +1,7 @@
 package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
@@ -58,7 +57,6 @@ import static java.util.Map.of;
  * @since 2023-06-27
  */
 @Service
-@DS("db-miniapp")
 public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implements UserService {
     private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class);
     private final WxConfig wxConfig;
@@ -157,12 +155,9 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
             userVo.setVin(car.getVin());
         }
 
-        // 可以参加的活动-充值权益
-        DynamicDataSourceContextHolder.push("db-admin");
         var bannerList = bannerService.list();
         var rechargeRight = rechargeRightsService.lambdaQuery().eq(RechargeRights::getStatus, Activity.STATUS_进行中).list();
         var activityList = activityService.lambdaQuery().eq(Activity::getStatus, Activity.STATUS_进行中).list();
-        DynamicDataSourceContextHolder.poll();
         var voList = activityList.stream().map(activity -> {
             var vo = new ActivityVo();
             BeanUtils.copyProperties(activity, vo);

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/WalletDetailServiceImpl.java

@@ -1,7 +1,7 @@
 package com.kym.service.miniapp.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
+
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.entity.miniapp.WalletDetail;
 import com.kym.mapper.miniapp.WalletDetailMapper;
@@ -19,7 +19,6 @@ import java.util.List;
  * @since 2023-08-09
  */
 @Service
-@DS("db-miniapp")
 public class WalletDetailServiceImpl extends MPJBaseServiceImpl<WalletDetailMapper, WalletDetail> implements WalletDetailService {
 
 

+ 1 - 1
car-wash-service/src/main/java/com/kym/service/mybatisplus/MyBaseServiceImpl.java

@@ -71,7 +71,7 @@ public class MyBaseServiceImpl<M extends MyBaseMapper<T>, T> extends ServiceImpl
     }
 
     protected String getSqlStatement(MySqlMethod sqlMethod) {
-        return getSqlStatement(mapperClass, sqlMethod);
+        return getSqlStatement(getMapperClass(), sqlMethod);
     }
 
     public static String getSqlStatement(Class<?> mapper, MySqlMethod sqlMethod) {

+ 2 - 12
car-wash-service/src/main/java/com/kym/service/wechat/impl/WxPayServiceImpl.java

@@ -8,10 +8,7 @@ import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.URLUtil;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.google.common.util.concurrent.AtomicDouble;
+
 import com.kym.common.config.WxFapiaoConfig;
 import com.kym.common.config.WxPayConfig;
 import com.kym.common.constant.ResponseEnum;
@@ -19,7 +16,6 @@ import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.LambadaTools;
 import com.kym.common.utils.OrderUtils;
-import com.kym.entity.admin.InvoiceDetail;
 import com.kym.entity.miniapp.Account;
 import com.kym.entity.miniapp.*;
 import com.kym.entity.wechat.*;
@@ -306,7 +302,6 @@ public class WxPayServiceImpl implements WxPayService {
     @SneakyThrows
     @Override
     @Transactional(rollbackFor = Exception.class)
-    @DS("db-miniapp")
     public ResponseEntity<Object> wxNotify(HttpServletRequest request) {
 
         try {
@@ -498,7 +493,6 @@ public class WxPayServiceImpl implements WxPayService {
      *
      * @return
      */
-    @DS("db-miniapp")
     @Override
     public void wxRefund(long refundLogId) {
         // 通过退款申请id获取退款申请记录
@@ -794,7 +788,6 @@ public class WxPayServiceImpl implements WxPayService {
      * 开具电子发票
      */
     @Override
-    @DS("db-miniapp")
     public void fapiaoApplication(String invoiceId) {
         var invoice = invoiceService.lambdaQuery().eq(Invoice::getId, invoiceId).one();
         // 开票状态校验
@@ -872,7 +865,7 @@ public class WxPayServiceImpl implements WxPayService {
      * @return
      */
     @Override
-    @DSTransactional
+    @Transactional
     public void wxInvoiceNotify(Object[] notifyRes) {
         try {
             InvoiceNotification invoiceNotification = ((NotificationParser) notifyRes[1]).parse((RequestParam) notifyRes[0], InvoiceNotification.class);
@@ -896,10 +889,7 @@ public class WxPayServiceImpl implements WxPayService {
                  * 5.发票状态是否作废或者红冲
                  */
                 var fapiaoApplications = queryFapiao(invoice.getApplyId());
-                // 手动切换数据源
-                DynamicDataSourceContextHolder.push("db-admin");
                 invoiceDetailService.updateInvoiceDetail(invoice.getApplyId(), fapiaoApplications);
-                DynamicDataSourceContextHolder.poll();
             } else {
                 LOGGER.error("微信开具发票失败:{}", invoiceNotification);
             }

+ 4 - 3
pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.1.1</version>
+        <version>3.3.3</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.kym</groupId>
@@ -79,8 +79,9 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
-                    <source>8</source>
-                    <target>8</target>
+                    <source>17</source>
+                    <target>17</target>
+                    <encoding>UTF-8</encoding>
                 </configuration>
             </plugin>
         </plugins>