Sfoglia il codice sorgente

Merge branch 'develop' into develop-kjf

# Conflicts:
#	kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/ServiceNameConstants.java
#	kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/feign/RemoteKxsStatService.java
Pota1ovO 2 anni fa
parent
commit
bc3dbf6b05

+ 3 - 0
kxs-quartz/src/main/java/com/kxs/daemon/quartz/controller/SysJobController.java

@@ -141,6 +141,9 @@ public class SysJobController {
 		else if (SkyQuartzEnum.JOB_STATUS_RELEASE.getType().equals(querySysJob.getJobStatus())) {
 		else if (SkyQuartzEnum.JOB_STATUS_RELEASE.getType().equals(querySysJob.getJobStatus())) {
 			this.sysJobService.removeById(id);
 			this.sysJobService.removeById(id);
 		}
 		}
+		else if (SkyQuartzEnum.JOB_STATUS_RUNNING.getType().equals(querySysJob.getJobStatus())) {
+			return R.failed("暂停任务才能删除");
+		}
 		return R.ok();
 		return R.ok();
 	}
 	}
 
 

+ 85 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/feign/config/KxsStoreFeignClientConfiguration.java

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

+ 7 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/model/KxsMerchantTrade.java

@@ -95,6 +95,13 @@ public class KxsMerchantTrade extends Model<KxsMerchantTrade> implements Seriali
     private Integer merchantId;
     private Integer merchantId;
 
 
 
 
+    /**
+     * 品牌ID
+     */
+    @Schema(description = "品牌ID")
+    private Integer brandId;
+
+
 
 
 
 
 }
 }

+ 1 - 1
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/model/KxsUserActTrade.java

@@ -57,7 +57,7 @@ public class KxsUserActTrade extends Model<KxsUserActTrade> implements Serializa
      * 删除标记,0未删除,1已删除
      * 删除标记,0未删除,1已删除
      */
      */
     @Schema(description = "删除标记,0未删除,1已删除")
     @Schema(description = "删除标记,0未删除,1已删除")
-    private Integer delFlag;
+    private String delFlag;
 
 
 
 
     /**
     /**

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

@@ -0,0 +1 @@
+com.kxs.stat.api.feign.config.KxsStoreFeignClientConfiguration

+ 1 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsMerchantTradeMapper.xml

@@ -12,6 +12,7 @@
         <result column="trade_month" property="tradeMonth" />
         <result column="trade_month" property="tradeMonth" />
         <result column="trade_amt" property="tradeAmt" />
         <result column="trade_amt" property="tradeAmt" />
         <result column="merchant_id" property="merchantId" />
         <result column="merchant_id" property="merchantId" />
+        <result column="brand_id" property="brandId" />
 
 
     </resultMap>
     </resultMap>
 
 

+ 12 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java

@@ -19,6 +19,8 @@ import com.kxs.transfer.api.service.KxsDtsLogService;
 import com.kxs.transfer.api.service.product.*;
 import com.kxs.transfer.api.service.product.*;
 import com.kxs.transfer.api.service.product.impl.KxsMachineTrackService;
 import com.kxs.transfer.api.service.product.impl.KxsMachineTrackService;
 import com.kxs.transfer.api.service.product.impl.KxsShopOrderService;
 import com.kxs.transfer.api.service.product.impl.KxsShopOrderService;
+import com.kxs.transfer.api.service.stat.KxsMerchantTradeService;
+import com.kxs.transfer.api.service.stat.KxsUserActTradeService;
 import com.kxs.transfer.api.service.stat.KxsUserTradeService;
 import com.kxs.transfer.api.service.stat.KxsUserTradeService;
 import com.kxs.transfer.api.service.store.KxsMachineRecycleService;
 import com.kxs.transfer.api.service.store.KxsMachineRecycleService;
 import com.kxs.transfer.api.service.store.KxsWarehouseService;
 import com.kxs.transfer.api.service.store.KxsWarehouseService;
@@ -98,6 +100,8 @@ public class DtsController {
 
 
     //统计模块
     //统计模块
     private final KxsUserTradeService kxsUserTradeService;
     private final KxsUserTradeService kxsUserTradeService;
+    private final KxsUserActTradeService kxsUserActTradeService;
+    private final KxsMerchantTradeService kxsMerchantTradeService;
 
 
     @Value("${spring.profiles.active}")
     @Value("${spring.profiles.active}")
     private String active;
     private String active;
@@ -349,6 +353,14 @@ public class DtsController {
             if ("TradeDaySummary2".equals(dmlData.getTableName())) {
             if ("TradeDaySummary2".equals(dmlData.getTableName())) {
                 kxsUserTradeService.change2Data(dmlData);
                 kxsUserTradeService.change2Data(dmlData);
             }
             }
+            //创客激活统计
+            if ("UserTradeMonthSummary".equals(dmlData.getTableName())) {
+                kxsUserActTradeService.changeData(dmlData);
+            }
+            //商户交易额统计
+            if ("PosMerchantTradeSummay".equals(dmlData.getTableName())) {
+                kxsMerchantTradeService.changeData(dmlData);
+            }
 
 
 
 
 
 

+ 56 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsMerchantTradeService.java

@@ -1,10 +1,19 @@
 package com.kxs.transfer.api.service.stat;
 package com.kxs.transfer.api.service.stat;
 
 
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.stat.api.model.KxsMerchantTrade;
 import com.kxs.stat.api.model.KxsMerchantTrade;
+import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.transfer.api.mapper.stat.KxsMerchantTradeMapper;
 import com.kxs.transfer.api.mapper.stat.KxsMerchantTradeMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.model.table.FieldData;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 /**
 /**
  * 商户交易统计总表(KxsMerchantTrade)表服务实现类
  * 商户交易统计总表(KxsMerchantTrade)表服务实现类
  *
  *
@@ -14,5 +23,52 @@ import org.springframework.stereotype.Service;
 @Service("kxsMerchantTradeService")
 @Service("kxsMerchantTradeService")
 public class KxsMerchantTradeService extends ServiceImpl<KxsMerchantTradeMapper, KxsMerchantTrade>{
 public class KxsMerchantTradeService extends ServiceImpl<KxsMerchantTradeMapper, KxsMerchantTrade>{
 
 
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //全部字段值
+        Map<String, FieldData> fieldDataMap = dmlData.getFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsMerchantTrade merchantTrade = new KxsMerchantTrade();
+
+        OperationType operation = dmlData.getOperation();
+
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
+        if (fieldDataMap.get("MerchantId").getValue() != null) {
+            merchantTrade.setMerchantId(Integer.valueOf(fieldDataMap.get("MerchantId").getValue().toString()));
+        }
+        if (fieldDataMap.get("TradeDate").getValue() != null) {
+            merchantTrade.setTradeDate(Integer.valueOf(fieldDataMap.get("TradeDate").getValue().toString()));
+        }
+        if (fieldDataMap.get("TradeMonth").getValue() != null) {
+            merchantTrade.setTradeMonth(Integer.valueOf(fieldDataMap.get("TradeMonth").getValue().toString()));
+        }
+        if (fieldDataMap.get("BrandId").getValue() != null) {
+            merchantTrade.setBrandId(Integer.valueOf(fieldDataMap.get("BrandId").getValue().toString()));
+        }
+        if (fieldDataMap.get("TradeAmount").getValue() != null) {
+            merchantTrade.setTradeAmt(new BigDecimal(fieldDataMap.get("TradeAmount").getValue().toString()));
+        }
+
+        KxsMerchantTrade kxsUserActTrade = baseMapper.selectOne(Wrappers.<KxsMerchantTrade>lambdaQuery()
+                .eq(KxsMerchantTrade::getMerchantId, merchantTrade.getMerchantId())
+                .eq(KxsMerchantTrade::getBrandId, merchantTrade.getBrandId())
+                .eq(KxsMerchantTrade::getTradeMonth, merchantTrade.getTradeMonth())
+                .eq(KxsMerchantTrade::getTradeDate, merchantTrade.getTradeDate()));
+        if(kxsUserActTrade == null){
+            merchantTrade.setId(id);
+            baseMapper.insert(merchantTrade);
+        }else{
+            merchantTrade.setId(kxsUserActTrade.getId());
+            baseMapper.updateById(merchantTrade);
+        }
+    }
 }
 }
 
 

+ 65 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsUserActTradeService.java

@@ -1,10 +1,19 @@
 package com.kxs.transfer.api.service.stat;
 package com.kxs.transfer.api.service.stat;
 
 
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.stat.api.model.KxsUserActTrade;
+import com.kxs.stat.api.model.KxsUserTrade;
 import com.kxs.transfer.api.mapper.stat.KxsUserActTradeMapper;
 import com.kxs.transfer.api.mapper.stat.KxsUserActTradeMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.model.table.FieldData;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 /**
 /**
  * 创客激活统计表(KxsUserActTrade)表服务实现类
  * 创客激活统计表(KxsUserActTrade)表服务实现类
  *
  *
@@ -14,5 +23,61 @@ import org.springframework.stereotype.Service;
 @Service("kxsUserActTradeService")
 @Service("kxsUserActTradeService")
 public class KxsUserActTradeService extends ServiceImpl<KxsUserActTradeMapper, KxsUserActTrade> {
 public class KxsUserActTradeService extends ServiceImpl<KxsUserActTradeMapper, KxsUserActTrade> {
 
 
+    public void changeData(DMLData dmlData) {
+
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //全部字段值
+        Map<String, FieldData> fieldDataMap = dmlData.getFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsUserActTrade userActTrade = new KxsUserActTrade();
+
+        OperationType operation = dmlData.getOperation();
+
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
+        if (fieldDataMap.get("UserId").getValue() != null) {
+            userActTrade.setUserId(Integer.valueOf(fieldDataMap.get("UserId").getValue().toString()));
+        }
+        if (fieldDataMap.get("SeoKeyword").getValue() != null) {
+            userActTrade.setTradeDate(Integer.valueOf(fieldDataMap.get("SeoKeyword").getValue().toString()));
+        }
+        if (fieldDataMap.get("TradeMonth").getValue() != null) {
+            userActTrade.setTradeMonth(Integer.valueOf(fieldDataMap.get("TradeMonth").getValue().toString()));
+        }
+        if (fieldDataMap.get("BrandId").getValue() != null) {
+            userActTrade.setBrandId(Integer.valueOf(fieldDataMap.get("BrandId").getValue().toString()));
+        }
+        if (fieldDataMap.get("ActiveBuddyMerStatus").getValue() != null) {
+            userActTrade.setActNum(Integer.valueOf(fieldDataMap.get("ActiveBuddyMerStatus").getValue().toString()));
+        }
+        if (fieldDataMap.get("SeoTitle").getValue() != null) {
+            String seoTitle = fieldDataMap.get("SeoTitle").getValue().toString();
+            if ("self".equals(seoTitle)) {
+                userActTrade.setTotalType(0);
+            } else {
+                userActTrade.setTotalType(1);
+            }
+        }
+        KxsUserActTrade kxsUserActTrade = baseMapper.selectOne(Wrappers.<KxsUserActTrade>lambdaQuery()
+                .eq(KxsUserActTrade::getUserId, userActTrade.getUserId())
+                .eq(KxsUserActTrade::getBrandId, userActTrade.getBrandId())
+                .eq(KxsUserActTrade::getTotalType, userActTrade.getTotalType())
+                .eq(KxsUserActTrade::getTradeMonth, userActTrade.getTradeMonth())
+                .eq(KxsUserActTrade::getTradeDate, userActTrade.getTradeDate()));
+        if(kxsUserActTrade == null){
+            userActTrade.setId(id);
+            baseMapper.insert(userActTrade);
+        }else{
+            userActTrade.setId(kxsUserActTrade.getId());
+            baseMapper.updateById(userActTrade);
+        }
+    }
 }
 }