diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml index 57dca73..fdf3847 100644 --- a/cloud-auth/src/main/resources/bootstrap.yml +++ b/cloud-auth/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 47.101.53.251:8848 user-name: nacos password: nacos - namespace: yzl + namespace: four # Spring spring: application: diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java index f823509..5d462ce 100644 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java @@ -36,7 +36,7 @@ public class RabbitMQConsumerUtil { * @param message * @param channel */ - @RabbitListener(queuesToDeclare = @Queue(name = "basic")) +// @RabbitListener(queuesToDeclare = @Queue(name = "basic")) public void rabbitMQBasicConsumer(String data ,Message message , Channel channel) { log.info("当前时间:{} :RabbitMQConsumerUtil : {}", new Date(), message); try { diff --git a/cloud-common/cloud-common-saas/pom.xml b/cloud-common/cloud-common-saas/pom.xml index 6c0d2f6..bb7f692 100644 --- a/cloud-common/cloud-common-saas/pom.xml +++ b/cloud-common/cloud-common-saas/pom.xml @@ -33,9 +33,10 @@ com.muyu cloud-common-security - - - + + com.mysql + mysql-connector-j + diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java index 7245b4d..58d672f 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java @@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory; +import com.muyu.cloud.common.many.datasource.init.InitDataSource; import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; +import com.muyu.cloud.common.saas.domain.Datasource; import com.muyu.cloud.common.saas.domain.model.EntInfo; import com.muyu.cloud.common.saas.exception.SaaSException; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.SpringUtils; -import com.muyu.common.system.domain.Datasource; -import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.remote.RemoteSaaSService; -import com.muyu.common.system.remote.RemoteUserService; import lombok.extern.log4j.Log4j2; import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -29,8 +29,7 @@ import java.util.List; import java.util.Map; /** - * 多数据源 - * @author liuwu + * @Author: DongZeLiang * @date: 2024/6/3 * @Description: 多数据源 * @Version: 1.0 @@ -39,9 +38,14 @@ import java.util.Map; @Component @AutoConfiguration(before = {MybatisPlusAutoConfiguration.class, MybatisAutoConfiguration.class}) public class ManyDataSource implements ApplicationRunner{ + + @Autowired + private InitDataSource initDataSource; + + private List dataSourceInfoList(){ RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class); - Result> tableDataInfoResult = remoteSaaSService.findDatabaseList(); + Result> tableDataInfoResult = initDataSource.initDatasource(); if (tableDataInfoResult==null){ throw new SaaSException("saas远调数据源错误"); } diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java index bb27584..b69b858 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java @@ -1,8 +1,7 @@ package com.muyu.cloud.common.many.datasource.constents; /** - * 数据源常量 - * @author liuwu + * @author DongZl * @description: 数据源常量 * @Date 2023-8-1 上午 11:02 */ @@ -17,8 +16,4 @@ public class DatasourceContent { public final static String IP = "47.101.53.251"; public final static Integer PORT = 3306; - - public static String getDatasourceUrl(String databaseName) { - return String.format(DATASOURCE_URL,USER_NAME,PASSWORD,IP,PORT, databaseName); - } } diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java index 6406cfc..73cc26e 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java @@ -8,8 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * 数据源实体类 - * @author liuwu + * @author DongZl * @description: 数据源实体类 * @Date 2023-8-1 上午 11:15 */ diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java index 30eee74..7ceb782 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java @@ -8,8 +8,7 @@ import org.springframework.stereotype.Component; import java.sql.SQLException; /** - * Druid工厂 - * @author liuwu + * @Author: DongZeLiang * @date: 2024/6/3 * @Description: Druid工厂 * @Version: 1.0 diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java index 5cafaa0..e53229a 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java @@ -6,7 +6,7 @@ import org.springframework.util.Assert; /** * 数据源切换处理 * - * @author liuwu + * @author Dongzl */ @Slf4j public class DynamicDataSourceHolder { diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java new file mode 100644 index 0000000..3dc4237 --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java @@ -0,0 +1,58 @@ +package com.muyu.cloud.common.many.datasource.init; + + +import com.muyu.cloud.common.saas.domain.Datasource; +import com.muyu.common.core.domain.Result; +import lombok.extern.log4j.Log4j2; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +@Component +@Log4j2 +public class InitDataSource { + + public static final String USER="root"; + public static final String PASSWORD="Lw030106"; + + @Bean + @Primary + public Result> initDatasource(){ + ArrayList list = new ArrayList<>(); + + try { + DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); + Connection connection= DriverManager.getConnection("jdbc:mysql://47.101.53.251:3306/datasource?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=false",USER,PASSWORD); + String sql="select * from `datasource` "; + + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql); + + while (rs.next()){ + Datasource datasource = new Datasource(); + datasource.setId(rs.getInt("id")); + datasource.setFirmName(rs.getString("firm_name")); + datasource.setDatabaseName(rs.getString("database_name")); + list.add(datasource); + } + + } catch (SQLException e) { + throw new RuntimeException(e); + } + return Result.success(list); + }; + + + + + + + + + + +} diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java index 042fe95..241ce32 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java @@ -1,8 +1,7 @@ package com.muyu.cloud.common.saas.contents; /** - * SAAS常量 - * @author liuwu + * @Author: DongZeLiang * @date: 2024/6/3 * @Description: SAAS常量 * @Version: 1.0 diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java index db7e230..5c1985a 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java @@ -6,7 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * @Author: liuwu + * @Author: DongZeLiang * @date: 2024/6/3 * @Description: 企业信息 * @Version: 1.0 diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java index 60e5054..b2b4cc7 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java @@ -4,8 +4,7 @@ package com.muyu.cloud.common.saas.exception; import com.muyu.common.core.exception.ServiceException; /** - * SaaS异常类 - * @author liuwu + * @Author: DongZeLiang * @date: 2024/6/3 * @Description: SaaS异常类 * @Version: 1.0 diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java index 997fe6b..d4d87b6 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java @@ -1,10 +1,9 @@ package com.muyu.cloud.common.saas.interceptor; -import com.alibaba.fastjson2.JSONObject; -import com.muyu.cloud.common.saas.contents.SaaSConstant; import com.muyu.cloud.common.many.datasource.holder.DynamicDataSourceHolder; -import com.muyu.cloud.common.saas.exception.SaaSException; import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; +import com.muyu.cloud.common.saas.contents.SaaSConstant; +import com.muyu.cloud.common.saas.exception.SaaSException; import com.muyu.common.core.utils.ServletUtils; import com.muyu.common.core.utils.SpringUtils; import jakarta.servlet.http.HttpServletRequest; @@ -14,8 +13,7 @@ import org.springframework.web.servlet.AsyncHandlerInterceptor; /** - * SAAS拦截器 - * @author liuwu + * @Author: DongZeLiang * @date: 2024/6/3 * @Description: SAAS拦截器 * @Version: 1.0 diff --git a/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..70148cf --- /dev/null +++ b/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,3 @@ +com.muyu.cloud.common.saas.interceptor.WebMvcSaaSConfig +com.muyu.cloud.common.many.datasource.ManyDataSource +com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java index b5bac67..89babbf 100644 --- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java +++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java @@ -55,7 +55,6 @@ public class MqConsumer { /** * -----------------------------------以下为异步业务操作---------------------------- */ - List carList = sysCarCacheService.get("carList"); /** diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java index bfbfd04..45f6bdd 100644 --- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java +++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java @@ -29,6 +29,7 @@ public class AddDatabaseListener implements EventListener { values.add((String) value); }); + } @Override diff --git a/cloud-modules/saas/pom.xml b/cloud-modules/saas/pom.xml index 7e02284..a9e66f5 100644 --- a/cloud-modules/saas/pom.xml +++ b/cloud-modules/saas/pom.xml @@ -52,6 +52,13 @@ kafka-clients + + com.baomidou + mybatis-plus-boot-starter + 3.5.1 + + + diff --git a/cloud-modules/saas/saas-server/pom.xml b/cloud-modules/saas/saas-server/pom.xml index 4286b11..1546f6d 100644 --- a/cloud-modules/saas/saas-server/pom.xml +++ b/cloud-modules/saas/saas-server/pom.xml @@ -106,6 +106,7 @@ com.muyu cloud-common-xxl + org.apache.iotdb service-rpc diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java index 6311e4c..6bdfd55 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java @@ -21,8 +21,6 @@ import java.util.List; * @Date 2024/9/29 12:06 */ - - @RestController @RequestMapping("/carType") @AllArgsConstructor diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java index 5e6cd80..163062a 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java @@ -10,6 +10,7 @@ import com.muyu.server.service.CarTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -22,7 +23,7 @@ import java.util.List; @Service public class CarTypeServiceImpl extends ServiceImpl implements CarTypeService{ - @Autowired + @Resource private CarTypeMapper carTypeMapper; diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml new file mode 100644 index 0000000..63274cf --- /dev/null +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml index cc25010..76e2c13 100644 --- a/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml @@ -6,7 +6,7 @@ 1.在mybats的开发中namespace有特殊的意思,一定要是对应接口的全限定名 通过namespace可以简历mapper.xml和接口之间的关系(名字不重要,位置不重要) --> - + - + insert into tb_enterprise set enterprise_name = #{enterpriseName}, enterprise_car_count = #{enterpriseCarCount}, - enterprise_fence_count = #{enterpriseFenceCount}, - enterprise_database_name=#{enterpriseDatabaseName} + enterprise_fence_count = #{enterpriseFenceCount} @@ -48,8 +47,7 @@ update tb_enterprise set enterprise_name = #{enterpriseName}, enterprise_car_count = #{enterpriseCarCount}, - enterprise_fence_count = #{enterpriseFenceCount}, - enterprise_database_name=#{enterpriseDatabaseName} + enterprise_fence_count = #{enterpriseFenceCount} where enterprise_id = #{enterpriseId} and enterprise_id != 0 diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml index 77a3724..792d531 100644 --- a/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml @@ -77,5 +77,7 @@ - + diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml new file mode 100644 index 0000000..5ea4090 --- /dev/null +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml new file mode 100644 index 0000000..44abe85 --- /dev/null +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, fault_code, fault_name, type_id, fault_label, fault_bit, fault_value, fault_rank, fault_desc, fault_min_threshold, fault_max_threshold, status, warn_status, remark, create_by, create_time, update_by, update_time,car_type_id from sys_car_fault + + + + + + + + + insert into sys_car_fault + + fault_code, + fault_name, + type_id, + fault_label, + fault_bit, + fault_value, + fault_rank, + fault_desc, + fault_min_threshold, + fault_max_threshold, + status, + warn_status, + remark, + create_by, + create_time, + update_by, + update_time, + car_type_id + + + #{faultCode}, + #{faultName}, + #{typeId}, + #{faultLabel}, + #{faultBit}, + #{faultValue}, + #{faultRank}, + #{faultDesc}, + #{faultMinThreshold}, + #{faultMaxThreshold}, + #{status}, + #{warnStatus}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{catTypeId} + + + + + update sys_car_fault + + fault_code = #{faultCode}, + fault_name = #{faultName}, + type_id = #{typeId}, + fault_label = #{faultLabel}, + fault_bit = #{faultBit}, + fault_value = #{faultValue}, + fault_rank = #{faultRank}, + fault_desc = #{faultDesc}, + fault_min_threshold = #{faultMinThreshold}, + fault_max_threshold = #{faultMaxThreshold}, + status = #{status}, + warn_status = #{warnStatus}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + car_type_id=#{catTypeId} + + where id = #{id} + + + + delete from sys_car_fault where id = #{id} + + + + delete from sys_car_fault where id in + + #{id} + + + + + update sys_car_fault set warn_status = 0 where id = #{id} + + + update sys_car_fault set warn_status = 1 where id = #{id} + + diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml new file mode 100644 index 0000000..52d673c --- /dev/null +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml new file mode 100644 index 0000000..9385d6c --- /dev/null +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml new file mode 100644 index 0000000..ec3778a --- /dev/null +++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + +