Просмотр исходного кода

Merge branch 'develop' into test-user

* develop:
  修复字段错误
  同步APP弹窗表
  同步系统消息和创客消息表
mac 2 лет назад
Родитель
Сommit
c79e12d96b

+ 12 - 0
kxs-common/kxs-common-core/pom.xml

@@ -52,6 +52,18 @@
             <artifactId>spring-security-core</artifactId>
         </dependency>
 
+        <!--阿里云SLS日志包-->
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.openservices</groupId>
+            <artifactId>aliyun-log-logback-appender</artifactId>
+            <version>0.1.18</version>
+        </dependency>
+
         <!--spring-webmvc-->
         <dependency>
             <groupId>org.springframework</groupId>

+ 17 - 10
kxs-common/kxs-common-core/src/main/resources/logback-spring.xml

@@ -74,17 +74,21 @@
 	<!-- 引入sls日志 -->
 	<appender name="aliyun" class="com.aliyun.openservices.log.logback.LoghubAppender">
 		<!-- Configure account and network  -->
-		<endpoint>cn-shenzhen.log.aliyuncs.com</endpoint>
+		<endpoint>cn-chengdu.log.aliyuncs.com</endpoint>
 		<!-- 填写sls key密钥 -->
-		<accessKeyId>**********</accessKeyId>
-		<accessKeySecret>*****************</accessKeySecret>
+		<accessKeyId>LTAI5tLsj8MPeZgqiR3omZtk</accessKeyId>
+		<accessKeySecret>Dj710GX7H4KHEfopzboT1g57a7RGTH</accessKeySecret>
 
-		<project>tajia-log</project>
+		<project>kxs-logs</project>
 		<!--logStore名称 -->
-		<logStore>tajia-api</logStore>
+		<logStore>kxs-store</logStore>
 
 		<!-- Optional parameters -->
 <!--		#单个 producer 实例能缓存的日志大小上限,默认为 100MB。-->
+		<!-- 可选项 -->
+		<springName name="kxs-gateway">
+			<topic>kxs-gateway</topic>
+		</springName>
 		<totalSizeInBytes>104857600</totalSizeInBytes>
 		<maxBlockMs>0</maxBlockMs>
 <!--		执行日志发送任务的线程池大小,默认为可用处理器个数。-->
@@ -98,18 +102,20 @@
 
 		<!-- 可选项 通过配置 encoder 的 pattern 自定义 log 的格式 -->
 		<encoder>
-			<pattern>%d %-5level [%thread] %X{traceId} %logger{0}: %msg</pattern>-->
-			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %highlight([%-5level] [%thread] %logger{50} - %msg%n)</pattern>
-			<charset>UTF-8</charset>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
 		</encoder>
 
 		<!--  Optional parameters -->
 		<timeFormat>yyyy-MM-dd'T'HH:mmZ</timeFormat>
-		<!--  Optional parameters -->
-		<timeZone>UTC</timeZone>
+		<!-- 可选项 设置时区 -->
+		<timeZone>Asia/Shanghai</timeZone>
 		<mdcFields>
 			TraceId,#####
 		</mdcFields>
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>ERROR</level>
+			<level>INFO</level>
+		</filter>
 	</appender>
 
 	<!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
@@ -117,6 +123,7 @@
 	<springProfile name="dev">
 		<root level="INFO">
 			<appender-ref ref="console"/>
+			<appender-ref ref="aliyun" />
 		</root>
 	</springProfile>
 	<springProfile name="test">

+ 1 - 6
kxs-common/kxs-common-log/pom.xml

@@ -48,12 +48,7 @@
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-oauth2-core</artifactId>
         </dependency>
-        <!--阿里云SLS日志包-->
-        <dependency>
-            <groupId>com.aliyun.openservices</groupId>
-            <artifactId>aliyun-log-logback-appender</artifactId>
-            <version>0.1.18</version>
-        </dependency>
+
     </dependencies>
 
 </project>

+ 7 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsAppModal.java

@@ -130,6 +130,13 @@ public class KxsAppModal extends Model<KxsAppModal> implements Serializable {
     private String url;
 
 
+    /**
+     * 跳转url参数
+     */
+    @Schema(description = "跳转url参数")
+    private String urlParam;
+
+
     /**
      * 是否指定 0否 1是
      */

+ 1 - 0
kxs-system/kxs-system-biz/src/main/resources/mapper/KxsAppModalMapper.xml

@@ -17,6 +17,7 @@
         <result column="end_time" property="endTime" />
         <result column="btn_text" property="btnText" />
         <result column="url" property="url" />
+        <result column="url_param" property="urlParam" />
         <result column="is_assign" property="isAssign" />
         <result column="user_codes" property="userCodes" />
         <result column="msg_type" property="msgType" />

+ 13 - 3
kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java

@@ -17,6 +17,7 @@ import com.kxs.transfer.api.service.store.KxsWarehouseService;
 import com.kxs.transfer.api.service.sys.KxsMorningLogService;
 import com.kxs.transfer.api.service.sys.KxsMorningService;
 import com.kxs.transfer.api.service.sys.KxsSchoolStudyService;
+import com.kxs.transfer.api.service.sys.KxsSysMsgService;
 import com.kxs.transfer.api.service.user.*;
 import com.kxs.user.api.model.KxsPartner;
 import lombok.RequiredArgsConstructor;
@@ -57,6 +58,7 @@ public class DtsController {
     private final KxsPartnerService kxsPartnerService;
     private final KxsMorningService kxsMorningService;
     private final KxsSchoolStudyService kxsSchoolStudyService;
+    private final KxsSysMsgService kxsSysMsgService;
 
     private final KxsMachineService kxsMachineService;
 
@@ -230,9 +232,17 @@ public class DtsController {
             if ("PosCouponOrders".equals(dmlData.getTableName())) {
                 kxsTicketTransferService.changeData(dmlData);
             }
-            //券码划拨明细表同步
-            if ("PosCouponRecord".equals(dmlData.getTableName())) {
-                kxsTicketTransferService.changeInfoData(dmlData);
+            //创客消息表
+            if ("MsgPersonal".equals(dmlData.getTableName())) {
+                kxsSysMsgService.changeUserData(dmlData);
+            }
+            //系统消息表
+            if ("MsgPlacard".equals(dmlData.getTableName())) {
+                kxsSysMsgService.changeSysData(dmlData);
+            }
+            //系统弹窗表
+            if ("MsgAlert".equals(dmlData.getTableName())) {
+                kxsSysMsgService.changeModalData(dmlData);
             }
 
             //存储历史数据

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/sys/KxsAppModalMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.sys;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.system.api.model.KxsAppModal;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * APP弹窗管理表(KxsAppModal)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-15 12:16:31
+ */
+@Mapper
+@DS("sys")
+public interface KxsAppModalMapper extends BaseMapper<KxsAppModal> {
+
+}
+

+ 22 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/sys/KxsSysMsgMapper.java

@@ -0,0 +1,22 @@
+package com.kxs.transfer.api.mapper.sys;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.system.api.model.KxsSysMsg;
+import com.kxs.system.api.vo.kxsapp.sysMsg.SysMsgPageVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 系统消息推送表(KxsSysMsg)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-15 12:16:32
+ */
+@Mapper
+@DS("sys")
+public interface KxsSysMsgMapper extends BaseMapper<KxsSysMsg> {
+
+}
+

+ 22 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/sys/KxsUserMsgMapper.java

@@ -0,0 +1,22 @@
+package com.kxs.transfer.api.mapper.sys;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.system.api.model.KxsUserMsg;
+import com.kxs.system.api.vo.kxsapp.userMsg.UserMsgPageVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 系统用户消息推送表(KxsUserMsg)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-15 12:16:32
+ */
+@Mapper
+@DS("sys")
+public interface KxsUserMsgMapper extends BaseMapper<KxsUserMsg> {
+
+}
+

+ 292 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/sys/KxsSysMsgService.java

@@ -0,0 +1,292 @@
+package com.kxs.transfer.api.service.sys;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.api.model.KxsMerchant;
+import com.kxs.system.api.model.KxsAppModal;
+import com.kxs.system.api.model.KxsSysMsg;
+import com.kxs.system.api.model.KxsUserMsg;
+import com.kxs.transfer.api.mapper.sys.KxsAppModalMapper;
+import com.kxs.transfer.api.mapper.sys.KxsSysMsgMapper;
+import com.kxs.transfer.api.mapper.sys.KxsUserMsgMapper;
+import com.kxs.transfer.api.mapper.user.KxsUserMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 系统消息推送表(KxsSysMsg)表服务接口
+ *
+ * @author 系统
+ * @since 2023-12-15 12:16:32
+ */
+@Service
+@RequiredArgsConstructor
+public class KxsSysMsgService extends ServiceImpl<KxsSysMsgMapper, KxsSysMsg> {
+
+    private final KxsUserMsgMapper kxsUserMsgMapper;
+
+    private final KxsAppModalMapper kxsAppModalMapper;
+
+    public void changeUserData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsUserMsg userMsg = new KxsUserMsg();
+        userMsg.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    int userId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    userMsg.setUserId(userId);
+                    break;
+                case "MsgType":
+                    userMsg.setMsgType(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BgPic":
+                    if(validFieldDataMap.get(field) != null){
+                        userMsg.setBgPic(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Title":
+                    userMsg.setTitle(validFieldDataMap.get(field).toString());
+                    break;
+                case "Content":
+                    if(validFieldDataMap.get(field) != null){
+                        userMsg.setContent(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Url":
+                    if(validFieldDataMap.get(field) != null){
+                        userMsg.setUrl(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Summary":
+                    if(validFieldDataMap.get(field) != null){
+                        userMsg.setSummary(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "ReadFlag":
+                    userMsg.setReadFlag(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "CreateDate":
+                    userMsg.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    userMsg.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.INSERT)){
+            KxsUserMsg kxsUserMsg = kxsUserMsgMapper.selectById(id);
+            if(kxsUserMsg == null){
+                kxsUserMsgMapper.insert(userMsg);
+            }
+        }
+        if(operation.equals(OperationType.UPDATE)){
+
+            kxsUserMsgMapper.updateById(userMsg);
+        }
+    }
+
+    public void changeSysData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsSysMsg sysMsg = new KxsSysMsg();
+        sysMsg.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "MsgType":
+                    sysMsg.setMsgType(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BgPic":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setBgPic(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Title":
+                    sysMsg.setTitle(validFieldDataMap.get(field).toString());
+                    break;
+                case "Content":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setContent(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Url":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setUrl(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Summary":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setSummary(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "PushType":
+                    sysMsg.setPushType(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "PushTime":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setPushTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    }
+                    break;
+                case "EffectStartDate":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setStartTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    }
+                    break;
+                case "EffectEndDate":
+                    if(validFieldDataMap.get(field) != null){
+                        sysMsg.setEndTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    }
+                    break;
+                case "CreateDate":
+                    sysMsg.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    sysMsg.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.INSERT)){
+            KxsSysMsg kxsSysMsg = baseMapper.selectById(id);
+            if(kxsSysMsg == null){
+                baseMapper.insert(sysMsg);
+            }
+        }
+        if(operation.equals(OperationType.UPDATE)){
+            baseMapper.updateById(sysMsg);
+        }
+
+    }
+
+    public void changeModalData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsAppModal appModal = new KxsAppModal();
+        appModal.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "Status":
+                    int status = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    if(status == -1){
+                        kxsAppModalMapper.deleteById(id);
+                        return;
+                    }
+                    break;
+                case "MsgType":
+                    appModal.setMsgType(Integer.parseInt(validFieldDataMap.get(field).toString()) - 1);
+                    break;
+                case "BgPic":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setBgPic(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Title":
+                    appModal.setTitle(validFieldDataMap.get(field).toString());
+                    break;
+                case "Content":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setContent(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "Url":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setUrl(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "BtnText":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setBtnText(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "TimeByDay":
+                    appModal.setTimeByDay(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "IsWeekend":
+                    appModal.setIsWeekend(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "UrlParam":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setUrlParam(validFieldDataMap.get(field).toString());
+                    }
+                    break;
+                case "EffectStartDate":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setStartTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    }
+                    break;
+                case "EffectEndDate":
+                    if(validFieldDataMap.get(field) != null){
+                        appModal.setEndTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    }
+                    break;
+                case "CreateDate":
+                    appModal.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    appModal.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.INSERT)){
+            KxsAppModal kxsAppModal = kxsAppModalMapper.selectById(id);
+            if(kxsAppModal == null){
+                kxsAppModalMapper.insert(appModal);
+            }
+        }
+        if(operation.equals(OperationType.UPDATE)){
+            kxsAppModalMapper.updateById(appModal);
+        }
+
+    }
+}
+

+ 1 - 1
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsMainMapper.xml

@@ -4,7 +4,7 @@
 
     <insert id="addAmountLog">
         insert into LeaderAccountRecord (UserId, ChangeType, SeoDescription, AfterBalanceAmount, BeforeBalanceAmount, ChangeAmount, CreateDate)
-        values (#{userId}, #{changeType}, #{remark}, #{afterAmount},#{beforeAmount},#{amount}, NOW())
+        values (#{userId}, #{changeType}, #{remark}, #{afterWithdrawalAmount},#{beforeWithdrawalAmount},#{amount}, NOW())
     </insert>
 
     <update id="deductMakerUseAmount">