소스 검색

添加同步账户日流水接口,同步素材标签接口

zhouzeyu@c-top.com.cn 3 년 전
부모
커밋
372744a510
13개의 변경된 파일791개의 추가작업 그리고 89개의 파일을 삭제
  1. 32 6
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/controller/AgentManagementController.java
  2. 1 1
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/mapper/xml/CtopAccountTransactionDayMapper.xml
  3. 4 4
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/service/AgentManagementService.java
  4. 61 38
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/service/impl/AgentManagementServiceImpl.java
  5. 33 8
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/controller/LbelController.java
  6. 34 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/entity/LabelStandardInfo.java
  7. 61 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/entity/MaterialLabelInfo.java
  8. 46 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/mapper/MaterialLabelMapper.java
  9. 147 7
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/mapper/xml/MaterialTagMapper.xml
  10. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/service/MaterialLabelService.java
  11. 353 19
      jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/service/impl/MaterialLabelServiceImpl.java
  12. 6 6
      jeecg-boot-module-system/src/main/java/org/jeecg/config/Elasticsearch/ElasticsearchConfig.java
  13. 8 0
      jeecg-cloud-module/jeecg-cloud-system-start/src/main/resources/application-test.yml

+ 32 - 6
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/controller/AgentManagementController.java

@@ -8,6 +8,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
 @RestController
 @RequestMapping("/agent")
 @Slf4j
@@ -18,24 +23,45 @@ public class AgentManagementController {
 
     @RequestMapping("/queryAccountTransactionDetails")
     public void getList() {
-        Result recharge = agentManagementService.synchronousAccountTransactionDetails();
-        log.info("123");
+        Result recharge = agentManagementService.synchronousAccountTransactionDetails("2021-05-01","2021-05-01");
 
     }
 
     @RequestMapping("/synchronousAccount")
     public void synchronousAccount() {
         Result recharge = agentManagementService.synchronousAccount();
-        log.info("123");
-
     }
 
 
     @RequestMapping("/synchronousAccountTransactionDay")
     public void synchronousAccountTransactionDay() {
-        Result recharge = agentManagementService.synchronousAccountTransactionDay();
-        log.info("123");
+        Result recharge = agentManagementService.synchronousAccountTransactionDay("2021-05-01","2021-05-01");
+    }
+
 
+    @RequestMapping("/synchronous")
+    public void synchronous() throws ParseException {
+        String date1="2021-05-01";
+        String date2="2021-05-31";
+        String date3="2021-06-01";
+        String date4="2021-06-30";
+        String date5="2021-07-01";
+        String date6="2021-07-31";
+        String date7="2021-08-01";
+        String date8="2021-08-31";
+        //5月份
+        agentManagementService.synchronousAccount();
+        //agentManagementService.synchronousAccountTransactionDetails(date1,date2);
+       // agentManagementService.synchronousAccountTransactionDay(date1,date2);
+        //6月份
+        //agentManagementService.synchronousAccountTransactionDetails(date3,date4);
+        agentManagementService.synchronousAccountTransactionDay(date3,date4);
+        //7月份
+       // agentManagementService.synchronousAccountTransactionDetails(date5,date6);
+       // agentManagementService.synchronousAccountTransactionDay(date5,date6);
+        //8月份
+       // agentManagementService.synchronousAccountTransactionDetails(date7,date8);
+       // agentManagementService.synchronousAccountTransactionDay(date7,date8);
     }
 
 

+ 1 - 1
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/mapper/xml/CtopAccountTransactionDayMapper.xml

@@ -24,7 +24,7 @@
     </insert>
 
     <select id="getAdvertiserIdByDate" parameterType="String" resultType="String">
-        select t.advertiser_id from ctop_account_transaction_day t where t.date=#{date}
+        select t.advertiser_id from ctop_account_transaction_day t where t.date=#{date} and t.advertiser_id=#{advertiserId}
     </select>
 
 </mapper>

+ 4 - 4
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/service/AgentManagementService.java

@@ -12,17 +12,17 @@ public interface AgentManagementService {
 
 
     //查询账号流水
-    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize);
+    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize,String startDate,String endDate);
 
     //查询账号流水
-    public JSONObject queryAccountTransactionDay(String AccountId, int pageNum, int pageSize);
+    public JSONObject queryAccountTransactionDay(String AccountId, int pageNum, int pageSize,String startDate,String endDate);
 
     //同步代理商账户入库
     public Result synchronousAccount();
 
     //同步账户交易流水
-    public Result synchronousAccountTransactionDetails();
+    public Result synchronousAccountTransactionDetails(String startDate,String endDate);
 
     //同步账户日流水
-    public Result synchronousAccountTransactionDay();
+    public Result synchronousAccountTransactionDay(String startDate,String endDate);
 }

+ 61 - 38
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/agent/service/impl/AgentManagementServiceImpl.java

@@ -1,7 +1,6 @@
 package org.jeecg.ctop.finance.agent.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
@@ -125,7 +124,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-15
      */
     @Override
-    public Result synchronousAccountTransactionDetails() {
+    public Result synchronousAccountTransactionDetails(String startDate,String endDate) {
         log.info("开始同步账号交易流水");
         Result result = new Result();
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
@@ -137,11 +136,17 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                 accountIdList.stream().forEach(str -> {
                     if (!str.isEmpty()) {
                         //查询账号下充值的交易流水
-                        JSONObject jsonObject = queryAccountTransactionDetails(str, RECHARGE, 1, 1000);
+                        JSONObject jsonObject = queryAccountTransactionDetails(str, RECHARGE, 1, 1000, startDate,endDate);
+                        int code = (int) jsonObject.get("code");
+                        if(code!=0){
+                            result.setMessage((String) jsonObject.get("message"));
+                            log.info((String) jsonObject.get("message"));
+                            return;
+                        }
                         JSONObject data = (JSONObject) jsonObject.get("data");
-                        if(data!=null){
+                        if (data != null) {
                             List<Object> dataList = (List<Object>) data.get("list");
-                            if (dataList!=null&&!dataList.isEmpty()) {
+                            if (dataList != null && !dataList.isEmpty()) {
                                 //充值类存在记录
                                 //保存第一页数据
                                 dataList.stream().forEach(ob -> {
@@ -157,7 +162,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                                 //查询其他页数据
                                 if (total_page > 1) {
                                     for (int i = 2; i <= total_page; i++) {
-                                        JSONObject jo = queryAccountTransactionDetails(str, RECHARGE, i, 1000);
+                                        JSONObject jo = queryAccountTransactionDetails(str, RECHARGE, i, 1000, startDate,endDate);
                                         JSONObject accountData = (JSONObject) jo.get("data");
                                         List<Object> rechargeList = (List<Object>) accountData.get("list");
                                         rechargeList.stream().forEach(transactionDetails -> {
@@ -173,9 +178,15 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                         }
 
                         //查询账号下转账的交易流水
-                        JSONObject transferJsonObject = queryAccountTransactionDetails(str, TRANSFER, 1, 1000);
+                        JSONObject transferJsonObject = queryAccountTransactionDetails(str, TRANSFER, 1, 1000, startDate,endDate);
                         JSONObject transferData = (JSONObject) transferJsonObject.get("data");
-                        if(transferData!=null){
+                        int code1 = (int) jsonObject.get("code");
+                        if(code1!=0){
+                            result.setMessage((String) jsonObject.get("message"));
+                            log.info((String) jsonObject.get("message"));
+                            return;
+                        }
+                        if (transferData != null) {
                             List<Object> transferDataList = (List<Object>) transferData.get("list");
                             if (!transferDataList.isEmpty()) {
                                 //转账类存在记录
@@ -192,7 +203,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                                 //查询其他页数据
                                 if (transferTotalPage > 1) {
                                     for (int i = 2; i <= transferTotalPage; i++) {
-                                        JSONObject jo = queryAccountTransactionDetails(str, TRANSFER, i, 1000);
+                                        JSONObject jo = queryAccountTransactionDetails(str, TRANSFER, i, 1000, startDate,endDate);
                                         JSONObject accountData = (JSONObject) jo.get("data");
                                         List<Object> rechargeList = (List<Object>) accountData.get("list");
                                         rechargeList.stream().forEach(transactionDetails -> {
@@ -227,6 +238,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
 
         return result;
     }
+
     /**
      * 同步账户日流水
      *
@@ -234,7 +246,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-15
      */
     @Override
-    public Result synchronousAccountTransactionDay() {
+    public Result synchronousAccountTransactionDay(String startDate,String endDate) {
         log.info("开始同步账号日流水");
         Result result = new Result();
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
@@ -245,21 +257,32 @@ public class AgentManagementServiceImpl implements AgentManagementService {
         try {
             List<String> accountIdList = ctopAgentAccountMapper.getAllAccountId();
             if (!accountIdList.isEmpty()) {
-                List<String> advertiserIdList = ctopAccountTransactionDayMapper.getAdvertiserIdByDate(df.format(ca.getTime()));
                 accountIdList.stream().forEach(str -> {
                     if (!str.isEmpty()) {
                         //查询账号下充值的交易流水
-                        JSONObject jsonObject = queryAccountTransactionDay(str, 1, 1000);
-                        JSONObject data = (JSONObject) jsonObject.get("data");
-                        if(data!=null){
+                        JSONObject jsonObject = queryAccountTransactionDay(str, 1, 1000, startDate,endDate);
+                        JSONObject data=null;
+                        int code=1;
+                        if(jsonObject!=null){
+                             data = (JSONObject) jsonObject.get("data");
+                             code = (int) jsonObject.get("code");
+                        }else {
+                            log.info("返回数据jsonObject为null:");
+                        }
+                        if(code!=0){
+                            result.setMessage((String) jsonObject.get("message"));
+                            log.info("返回数据:"+jsonObject.toJSONString()+":"+str);
+                        }
+                        if (data != null) {
                             List<Object> dataList = (List<Object>) data.get("list");
-                            if (dataList!=null&&!dataList.isEmpty()) {
+                            if (dataList != null && !dataList.isEmpty()) {
                                 //充值类存在记录
                                 //保存第一页数据
                                 dataList.stream().forEach(ob -> {
                                     TransactionDay transactionDay = JSONObject.toJavaObject((JSON) ob, TransactionDay.class);
+                                    List<String> advertiserIdList = ctopAccountTransactionDayMapper.getAdvertiserIdByDate(transactionDay.getDate(),transactionDay.getAdvertiserId());
                                     //订单号不存在
-                                    if (advertiserIdList.isEmpty() || !advertiserIdList.contains(transactionDay.getAdvertiserId())) {
+                                    if (advertiserIdList.isEmpty() || advertiserIdList.size()<=0) {
                                         transactionDetailsList.add(transactionDay);
                                     }
 
@@ -269,13 +292,15 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                                 //查询其他页数据
                                 if (total_page > 1) {
                                     for (int i = 2; i <= total_page; i++) {
-                                        JSONObject jo = queryAccountTransactionDetails(str, RECHARGE, i, 1000);
+                                        JSONObject jo = queryAccountTransactionDay(str, i, 1000, startDate,endDate);
                                         JSONObject accountData = (JSONObject) jo.get("data");
                                         List<Object> rechargeList = (List<Object>) accountData.get("list");
                                         rechargeList.stream().forEach(obj -> {
                                             TransactionDay transactionDay = JSONObject.toJavaObject((JSON) obj, TransactionDay.class);
+                                            List<String> advertiserIdList = ctopAccountTransactionDayMapper.getAdvertiserIdByDate(transactionDay.getDate(),transactionDay.getAdvertiserId());
+
                                             //订单号不存在
-                                            if (advertiserIdList.isEmpty() || !advertiserIdList.contains(transactionDay.getAdvertiserId())) {
+                                            if (advertiserIdList.isEmpty() || advertiserIdList.size()<=0) {
                                                 transactionDetailsList.add(transactionDay);
                                             }
                                         });
@@ -288,7 +313,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
             }
             //保存数据
             if (!transactionDetailsList.isEmpty()) {
-                ctopAccountTransactionDayMapper.saveAccountTransactionDay(transactionDetailsList,df.format(new Date()));
+                ctopAccountTransactionDayMapper.saveAccountTransactionDay(transactionDetailsList, df.format(new Date()));
                 log.info("新增日流水记录:{}条", transactionDetailsList.size());
             }
             result.setSuccess(true);
@@ -313,17 +338,13 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-14
      */
     @Override
-    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize) {
-        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
-        Calendar ca = Calendar.getInstance();
-        ca.setTime(new Date());
-        ca.add(Calendar.DATE, -1);
+    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize, String startDate,String endDate) {
         // 请求参数
         Map data = new HashMap() {
             {
                 put("advertiser_id", AccountId);
-                put("start_date", df.format(ca.getTime()));
-                put("end_date", df.format(ca.getTime()));
+                put("start_date", startDate);
+                put("end_date", endDate);
                 put("transaction_type", transaction_type);
                 put("page", pageNum);
                 put("page_size", pageSize);
@@ -341,22 +362,24 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-14
      */
     @Override
-    public JSONObject queryAccountTransactionDay(String AccountId, int pageNum, int pageSize) {
+    public JSONObject queryAccountTransactionDay(String AccountId, int pageNum, int pageSize,String startDate,String endDate) {
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
         Calendar ca = Calendar.getInstance();
         ca.setTime(new Date());
         ca.add(Calendar.DATE, -1);
-        // 请求参数
-        Map data = new HashMap() {
-            {
-                put("advertiser_id", AccountId);
-                put("start_date", df.format(ca.getTime()));
-                put("end_date", df.format(ca.getTime()));
-                put("page", pageNum);
-                put("page_size", pageSize);
-            }
-        };
-        return sendHttpRequest(data, ACCOUNT_TRANSACTION_DAY_URL);
+            // 请求参数
+            Map data = new HashMap() {
+                {
+                    put("advertiser_id", AccountId);
+                    put("start_date", startDate);
+                    put("end_date", endDate);
+                    put("page", pageNum);
+                    put("page_size", pageSize);
+                }
+            };
+            return sendHttpRequest(data, ACCOUNT_TRANSACTION_DAY_URL);
+
+
     }
 
 

+ 33 - 8
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/controller/LbelController.java

@@ -1,11 +1,11 @@
 package cn.com.ctop.kuaishou.modules.label.controller;
 
 import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo;
+import cn.com.ctop.kuaishou.modules.label.service.MaterialLabelService;
 import org.jeecg.common.api.vo.Result;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
 
 /**
  * @Description: 标签管理
@@ -17,14 +17,39 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/label")
 public class LbelController {
 
+
+    @Resource
+    MaterialLabelService materialTagService;
     /**
      * 查询标签
      *
-     * @param kuaiShouAccountCleanTemplateInfo
+     * @param
+     * @return
+     */
+    @GetMapping("/filterMaterial")
+    public Result createCleanTemplate(){
+        return   materialTagService.filterMaterial();
+    }
+
+    /**
+     * 查询标签
+     *
+     * @param
+     * @return
+     */
+    @GetMapping ("/materialSpecificationLabel")
+    public Result materialSpecificationLabel(){
+        return   materialTagService.materialSpecificationLabel();
+    }
+
+    /**
+     * 同步标签到ES
+     *
+     * @param
      * @return
      */
-    @PostMapping("/createTemplate")
-    public Result createCleanTemplate(@RequestBody KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo){
-        return   null;
+    @GetMapping ("/SynchronousLabel")
+    public Result SynchronousLabel(){
+        return   materialTagService.SynchronousLabel();
     }
 }

+ 34 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/entity/LabelStandardInfo.java

@@ -0,0 +1,34 @@
+package cn.com.ctop.kuaishou.modules.label.entity;
+
+import lombok.Data;
+
+@Data
+public class LabelStandardInfo {
+    //主键
+    private String id;
+    //素材标识
+    private String signature;
+    //素材产生消耗的最早日期
+    private String chargeDate;
+    //三十天内累计激活数
+    private String activationThirtyDays;
+    //两天内累计激活数
+    private String activationTwoDays;
+    //30天内表单提交数
+    private String formCountThirtyDays;
+    //两天内表单提交数
+    private String formCountTwoDays;
+    //30天内3s完播率
+    private String play3sRatio;
+    //30天内转化率
+    private String conversionRatio;
+    //30天内行为率
+    private String behaviorRation;
+    //30天内次留率
+    private String eventNextDayStayRatio;
+    //创建时间
+    private String createTime;
+    //更新时间
+    private String updateTime;
+
+}

+ 61 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/entity/MaterialLabelInfo.java

@@ -0,0 +1,61 @@
+package cn.com.ctop.kuaishou.modules.label.entity;
+
+import cn.com.ctop.common.module.annotation.Document;
+import cn.com.ctop.common.module.annotation.EsId;
+import cn.com.ctop.common.module.annotation.FieId;
+import cn.com.ctop.common.module.enums.AnalyzerType;
+import cn.com.ctop.common.module.enums.FieldType;
+import lombok.Data;
+
+@Data
+@Document(index = "material_label", type = "material")
+public class MaterialLabelInfo {
+    @FieId(type = FieldType.KEYWORD)
+    private String id;
+
+    @EsId
+    @FieId(type = FieldType.KEYWORD)
+    private String code;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String slogansCount;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String offlineFlag;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String confirmTime;
+
+    @FieId(type = FieldType.KEYWORD,analyzer = AnalyzerType.IK_SMART)
+    private String tagCode;
+
+    @FieId(type = FieldType.KEYWORD,analyzer = AnalyzerType.IK_SMART)
+    private String tagName;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String tagId;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String clipId;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String shotId;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String planId;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String status;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String userId;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String materialName;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String projectId;
+
+    @FieId(type = FieldType.KEYWORD)
+    private String createTime;
+}

+ 46 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/mapper/MaterialLabelMapper.java

@@ -1,5 +1,8 @@
 package cn.com.ctop.kuaishou.modules.label.mapper;
 
+import cn.com.ctop.common.module.entity.TagInfo;
+import cn.com.ctop.kuaishou.modules.label.entity.LabelStandardInfo;
+import cn.com.ctop.kuaishou.modules.label.entity.MaterialLabelInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -22,4 +25,47 @@ public interface MaterialLabelMapper {
      * 获取素材产生消耗的最早日期
      */
     String getMaterialFirstDate(@Param("signature")String signature);
+    /**
+     * 查询素材30日数据
+     */
+    LabelStandardInfo getLabermessage(@Param("signature")String signature, @Param("startDate")String startDate, @Param("endDate")String endDate);
+    /**
+     * 查询素材2日数据
+     */
+    LabelStandardInfo getLabermessageByTwoDays(@Param("signature")String signature,@Param("startDate")String startDate,@Param("endDate")String endDate);
+    /**
+     * 保存素材判断标准数据
+     */
+    void saveLabelMessage(LabelStandardInfo LabelStandardInfo);
+    /**
+     * 素材标准数据判断是否存在此素材
+     */
+    LabelStandardInfo  getMaterialRecord(@Param("signature")String signature);
+    /**
+     * 修改素材标准数据
+     */
+    void updateMaterialRecord(LabelStandardInfo LabelStandardInfo);
+    /**
+     * 查询所有标签
+     */
+    List<TagInfo> getTagInfo();
+    /**
+     * 查询所有素材标准数据
+     */
+    List<LabelStandardInfo> getAllMaterialData();
+
+    /**
+     * 保存素材标签数据
+     */
+    void saveMaterialTag(@Param("code")String code,@Param("tagName")String tagName,@Param("tagCode")String tagCode,@Param("tagId")String tagId,@Param("categoryId")String categoryId,@Param("createTime")String createTime);
+
+    /**
+     * 根据素材标识和标签编码查询数据
+     */
+    int getDataByCodeAndSignature(@Param("signature")String code,@Param("tagCode")String tagCode);
+
+    /**
+     * 查询素材数据以及标签
+     */
+    List<MaterialLabelInfo> getMaterialLabelData(@Param("date")String date);
 }

+ 147 - 7
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/mapper/xml/MaterialTagMapper.xml

@@ -3,23 +3,163 @@
 <mapper namespace="cn.com.ctop.kuaishou.modules.label.mapper.MaterialLabelMapper">
 
 
-  <resultMap id="logResultMap" type="cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanLogInfo">
+  <resultMap id="BaseResultMap" type="cn.com.ctop.kuaishou.modules.label.entity.LabelStandardInfo">
     <id column="id" property="id"/>
-    <result column="account_id" property="accountId"/>
-    <result column="user_name" property="userName"/>
-    <result column="operation_type" property="operationType"/>
+    <result column="signature" property="signature"/>
+    <result column="charge_date" property="chargeDate"/>
+    <result column="activation_thirty_days" property="activationThirtyDays"/>
+    <result column="activation_two_days" property="activationTwoDays"/>
+    <result column="form_count_thirty_days" property="formCountThirtyDays"/>
+    <result column="form_count_two_days" property="formCountTwoDays"/>
+    <result column="play_3s_ratio" property="play3sRatio"/>
+    <result column="conversion_ratio" property="conversionRatio"/>
+    <result column="behavior_ration" property="behaviorRation"/>
+    <result column="event_next_day_stay_ratio" property="eventNextDayStayRatio"/>
     <result column="create_time" property="createTime"/>
-    <result column="executive_information" property="executiveInformation"/>
+    <result column="update_time" property="updateTime"/>
   </resultMap>
 
-    <select id="getMateriaSignature" resultType="String">
+
+
+  <resultMap id="TagResultMap" type="cn.com.ctop.common.module.entity.TagInfo">
+    <id column="id" property="id"/>
+    <result column="tag_name" property="tagName"/>
+    <result column="tag_code" property="tagCode"/>
+  </resultMap>
+
+  <resultMap id="MaterialLabelResultMap" type="cn.com.ctop.kuaishou.modules.label.entity.MaterialLabelInfo">
+    <id column="id" property="id"/>
+    <result column="code" property="code"/>
+    <result column="slogansCount" property="slogansCount"/>
+    <result column="offline_flag" property="offlineFlag"/>
+    <result column="confirm_time" property="confirmTime"/>
+    <result column="tag_code" property="tagCode"/>
+    <result column="tag_name" property="tagName"/>
+    <result column="tag_id" property="tagId"/>
+    <result column="clip_id" property="clipId"/>
+    <result column="shot_id" property="shotId"/>
+    <result column="plan_id" property="planId"/>
+    <result column="status" property="status"/>
+    <result column="user_id" property="userId"/>
+    <result column="material_name" property="materialName"/>
+    <result column="project_id" property="projectId"/>
+    <result column="create_time" property="createTime"/>
+  </resultMap>
+
+  <select id="getMateriaSignature" resultType="String">
         SELECT  signature from ctop_etl_kuaishou_video_base_info t  GROUP BY t.signature
     </select>
 
 
-    <select id="getMaterialFirstDate" parameterType="String" resultType="String">
+  <select id="getMaterialFirstDate" parameterType="String" resultType="String">
         SELECT  MIN(stat_date) from ctop_kuaishou_report_daily_material t where t.charge>0 and  t.signature=#{signature}
     </select>
 
+  <select id="getLabermessage"  resultMap="BaseResultMap">
+        SELECT  SUM(activation) as 'activation_thirty_days',SUM(form_count) as 'form_count_thirty_days',
+        SUM(play_3s_ratio*aclick)/SUM(aclick) as 'play_3s_ratio',
+        SUM(activation)/SUM(bclick) as 'conversion_ratio',
+        SUM(bclick)/SUM(aclick) as 'behavior_ration',
+        SUM(event_next_day_stay)/SUM(activation) as 'event_next_day_stay_ratio'
+        from ctop_kuaishou_report_daily_material t
+        where  t.signature=#{signature}
+        and t.stat_date &gt;=#{startDate}
+        and t.stat_date &lt;=#{endDate}
+    </select>
+
+  <select id="getLabermessageByTwoDays"  resultMap="BaseResultMap">
+        SELECT  SUM(activation) as 'activation_two_days',SUM(form_count) as 'form_count_two_days'
+        from ctop_kuaishou_report_daily_material t
+        where  t.signature=#{signature}
+        and t.stat_date &gt;=#{startDate}
+        and t.stat_date &lt;=#{endDate}
+    </select>
+
+  <insert id="saveLabelMessage" parameterType="cn.com.ctop.kuaishou.modules.label.entity.LabelStandardInfo">
+        insert into ctop_label_standard (signature,charge_date,activation_thirty_days,activation_two_days,form_count_thirty_days,
+        form_count_two_days,play_3s_ratio,conversion_ratio,behavior_ration,event_next_day_stay_ratio,create_time,update_time)
+        values
+        (#{signature},#{chargeDate},#{activationThirtyDays},#{activationTwoDays},#{formCountThirtyDays},#{formCountTwoDays},#{play3sRatio},#{conversionRatio},
+        #{behaviorRation},#{eventNextDayStayRatio},#{createTime},#{updateTime})
+    </insert>
+
+  <select id="getMaterialRecord" resultMap="BaseResultMap">
+        select * from ctop_label_standard where signature=#{signature}
+    </select>
+
+  <select id="getAllMaterialData" resultMap="BaseResultMap">
+         select * from ctop_label_standard
+    </select>
+
+  <update id="updateMaterialRecord">
+        update ctop_label_standard set charge_date=#{chargeDate},activation_thirty_days=#{activationThirtyDays},activation_two_days=#{activationTwoDays},
+        form_count_thirty_days=#{formCountThirtyDays},form_count_two_days=#{formCountTwoDays},play_3s_ratio=#{play3sRatio},conversion_ratio=#{conversionRatio},
+        conversionRatio=#{behaviorRation},event_next_day_stay_ratio=#{eventNextDayStayRatio},update_time=#{updateTime} where signature=#{signature}
+    </update>
+
+  <select id="getTagInfo"  resultMap="TagResultMap">
+        select id,tag_name,tag_code from ctop_tag_info t
+    </select>
+
+  <select id="getDataByCodeAndSignature" resultType="int">
+        select count(*) from ctop_material_tag_info t where t.code=#{signature} and t.tag_code=#{tagCode}
+    </select>
+
+  <insert id="saveMaterialTag" >
+        insert into ctop_material_tag_info (code,status,tag_name,tag_code,user_id,tag_id,category_id,create_time) values
+        (#{code},'1',#{tagName},#{tagCode},null,#{tagId},#{categoryId},#{createTime})
+    </insert>
+
+  <select id="getMaterialLabelData" resultMap="MaterialLabelResultMap">
+    SELECT
+    matInfo.id,
+    matInfo.code,
+    matInfo.project_id,
+    t.slogansCount,
+    matInfo.offline_flag,
+    matInfo.confirm_time,
+    tagInfo.tag_code,
+    tagInfo.tag_name,
+    tagInfo.id AS 'tag_id',
+    ascription.clip_id,
+    ascription.shot_id,
+    ascription.plan_id,
+    matInfo. STATUS,
+    matInfo.user_id,
+    matInfo.material_name,
+    matInfo.project_id,
+    matInfo.create_time
+    FROM
+    ctop_material_info matInfo
+    LEFT JOIN (
+    SELECT
+    video_code,
+    count(*) AS slogansCount
+    FROM
+    ctop_bytedance_video_slogen_info
+    WHERE
+    STATUS = 1
+    GROUP BY
+    video_code
+    ) t ON matInfo. CODE = t.video_code
+    LEFT JOIN (
+    SELECT
+    id,
+    t.code,
+    group_concat(tag_code SEPARATOR ';') AS 'tag_code',
+    group_concat(tag_name SEPARATOR ';') AS 'tag_name'
+    FROM
+    ctop_material_tag_info t
+    GROUP BY
+    code
+    ) tagInfo ON tagInfo.code = matInfo.code
+    LEFT JOIN ctop_material_ascription ascription ON matInfo.code = ascription.material_id
+    <where>
+      <if test="date!=null and date!=''">
+        and (tagInfo.create_time &gt;=#{date} or tagInfo.update_time &gt;=#{date})
+      </if >
+    </where>
+  </select>
+
 
 </mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/service/MaterialLabelService.java

@@ -11,4 +11,9 @@ import org.jeecg.common.api.vo.Result;
 public interface MaterialLabelService {
 
     public Result filterMaterial ();
+
+    public Result materialSpecificationLabel();
+
+
+    public Result SynchronousLabel();
 }

+ 353 - 19
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/label/service/impl/MaterialLabelServiceImpl.java

@@ -1,15 +1,19 @@
 package cn.com.ctop.kuaishou.modules.label.service.impl;
 
+import cn.com.ctop.common.module.entity.TagInfo;
+import cn.com.ctop.common.module.utils.ElasticsearchUtil;
+import cn.com.ctop.kuaishou.modules.label.entity.LabelStandardInfo;
+import cn.com.ctop.kuaishou.modules.label.entity.MaterialLabelInfo;
 import cn.com.ctop.kuaishou.modules.label.mapper.MaterialLabelMapper;
 import cn.com.ctop.kuaishou.modules.label.service.MaterialLabelService;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.List;
+import java.util.*;
 
 /**
  * @Description: 素材标签
@@ -25,6 +29,9 @@ public class MaterialLabelServiceImpl implements MaterialLabelService {
     @Resource
     MaterialLabelMapper materialLabelMapper;
 
+    @Autowired
+    ElasticsearchUtil elasticsearchUtil;
+
 
     /**
      * 清洗各素材指标入库
@@ -34,47 +41,374 @@ public class MaterialLabelServiceImpl implements MaterialLabelService {
      */
     @Override
     public Result filterMaterial() {
-
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Result result = new Result();
         try {
             //查询所有素材标签
             List<String> materiaSignature = materialLabelMapper.getMateriaSignature();
-            if(!materiaSignature.isEmpty()){
-                materiaSignature.stream().forEach(str->{
-                    if(!str.isEmpty()){
+            if (!materiaSignature.isEmpty()) {
+                materiaSignature.stream().forEach(str -> {
+                    if (!str.isEmpty()) {
                         //获取素材产生消耗的最早日期
                         String materialFirstDate = materialLabelMapper.getMaterialFirstDate(str);
-                        //获取30天之后的日期
-                        String afterDate = getDateByNumber(materialFirstDate, -30);
-                        //查询素材各项指标入库
-                        
+                        if (materialFirstDate != null) {
+                            //获取30天之后的日期
+                            String afterDate = getDateByNumber(materialFirstDate, 30);
+                            //获取2天之后的日期
+                            String afterDate2 = getDateByNumber(materialFirstDate, 2);
+                            //根据日期查询素材各项指标入库
+                            LabelStandardInfo labermessage = materialLabelMapper.getLabermessage(str, materialFirstDate, afterDate);
+                            if (labermessage != null) {
+                                //查询两天内数据
+                                LabelStandardInfo labermessageByTwoDays = materialLabelMapper.getLabermessageByTwoDays(str, materialFirstDate, afterDate2);
+                                if (labermessageByTwoDays.getActivationTwoDays() != null) {
+                                    labermessage.setActivationTwoDays(labermessageByTwoDays.getActivationTwoDays());
+                                }
+                                if (labermessageByTwoDays.getFormCountTwoDays() != null) {
+                                    labermessage.setFormCountTwoDays(labermessageByTwoDays.getFormCountTwoDays());
+                                }
+                                labermessage.setSignature(str);
+                                labermessage.setChargeDate(materialFirstDate);
+                                labermessage.setCreateTime(sdf.format(new Date()));
+                                labermessage.setUpdateTime(sdf.format(new Date()));
+                                //查询素材标签标准表是否存在此素材
+                                LabelStandardInfo materialRecord = materialLabelMapper.getMaterialRecord(str);
+                                if (materialRecord != null) {
+                                    //存在则更新
+                                    materialLabelMapper.updateMaterialRecord(labermessage);
+                                } else {
+                                    //不存在插入
+                                    materialLabelMapper.saveLabelMessage(labermessage);
+                                }
+
+                            }
+                        }
+
                     }
 
                 });
             }
-        }catch (Exception e){
+            result.success("success");
+        } catch (Exception e) {
+            result.error500("error");
+            log.info("清洗标签指标数据错误:{}", e.toString());
+        }
+
+        return result;
+    }
+
+    /**
+     * 根据素材指标制定素材标签
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result materialSpecificationLabel() {
+        Result result = new Result();
+        Map<String, String> tgaMap = new HashMap<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        try {
+            String date = sdf.format(new Date());
+            //查询所有标签
+            List<TagInfo> tagInfo = materialLabelMapper.getTagInfo();
+            if (!tagInfo.isEmpty()) {
+                tagInfo.stream().forEach(tag -> {
+                    tgaMap.put(tag.getTagName(), tag.getTagCode() + ";" + tag.getId());
+                });
+            }
+            //查询素材标签判断标准数据
+            List<LabelStandardInfo> allMaterialData = materialLabelMapper.getAllMaterialData();
+            if (!allMaterialData.isEmpty()) {
+                allMaterialData.stream().forEach(obj -> {
+                    //三十天内累计激活数
+                    String activationThirtyDays = obj.getActivationThirtyDays();
+                    //两天内累计激活数
+                    String activationTwoDays = obj.getActivationTwoDays();
+                    //30天内表单提交数
+                    String formCountThirtyDays = obj.getFormCountThirtyDays();
+                    //两天内表单提交数
+                    String formCountTwoDays = obj.getFormCountTwoDays();
+                    //30天内3s完播率
+                    String play3sRatio = obj.getPlay3sRatio();
+                    //30天内转化率
+                    String conversionRatio = obj.getConversionRatio();
+                    //30天内行为率
+                    String behaviorRation = obj.getBehaviorRation();
+                    //30天内次留率
+                    String eventNextDayStayRatio = obj.getEventNextDayStayRatio();
+                    //应用下载--合格素材
+                    if (activationThirtyDays != null && formCountThirtyDays != null && Integer.parseInt(activationThirtyDays) >= 100 && Integer.parseInt(formCountThirtyDays) == 0) {
+                        String[] split = tgaMap.get("应用下载--合格素材").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载--合格素材", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    //应应用下载--起量快
+                    if (activationTwoDays != null && formCountTwoDays != null && Integer.parseInt(activationTwoDays) >= 96 && Integer.parseInt(formCountTwoDays) == 0) {
+                        String[] split = tgaMap.get("应用下载--起量快").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载--起量快", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    //应用下载-高-3s完播率
+                    if (activationThirtyDays != null && play3sRatio != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(play3sRatio) > 0.657) {
+                        String[] split = tgaMap.get("应用下载-高-3s完播率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-高-3s完播率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-低-3s完播率
+                    if (activationThirtyDays != null && play3sRatio != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(play3sRatio) < 0.132) {
+                        String[] split = tgaMap.get("应用下载-低-3s完播率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-低-3s完播率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-高-转化率
+                    if (activationThirtyDays != null && conversionRatio != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(conversionRatio) > 0.366) {
+                        String[] split = tgaMap.get("应用下载-高-转化率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-高-转化率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-低-转化率
+                    if (activationThirtyDays != null && conversionRatio != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(conversionRatio) < 0.009) {
+                        String[] split = tgaMap.get("应用下载-低-转化率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-低-转化率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-高-行为率
+                    if (activationThirtyDays != null && behaviorRation != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(behaviorRation) > 0.059) {
+                        String[] split = tgaMap.get("应用下载-高-行为率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-高-行为率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-低-行为率
+                    if (activationThirtyDays != null && behaviorRation != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(behaviorRation) < 0.003) {
+                        String[] split = tgaMap.get("应用下载-低-行为率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-低-行为率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-高-次留率
+                    if (activationThirtyDays != null && eventNextDayStayRatio != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(eventNextDayStayRatio) > 0.453) {
+                        String[] split = tgaMap.get("应用下载-高-次留率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-高-次留率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 应用下载-低-次留率
+                    if (activationThirtyDays != null && eventNextDayStayRatio != null && Integer.parseInt(activationThirtyDays) >= 100 && Double.parseDouble(eventNextDayStayRatio) == 0.000) {
+                        String[] split = tgaMap.get("应用下载-低-次留率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "应用下载-低-次留率", split[0], split[1], "1", date);
+                        }
+                    }
+
+
+                    // 表单提交--合格素材
+                    if (formCountThirtyDays != null && activationThirtyDays != null && Integer.parseInt(formCountThirtyDays) >= 20 && Integer.parseInt(activationThirtyDays) == 0) {
+                        String[] split = tgaMap.get("表单提交--合格素材").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交--合格素材", split[0], split[1], "1", date);
+                        }
+                    }
 
+                    // 表单提交--起量快
+                    if (formCountTwoDays != null && activationTwoDays != null && Integer.parseInt(formCountTwoDays) >= 30 && Integer.parseInt(activationTwoDays) == 0) {
+                        String[] split = tgaMap.get("表单提交--起量快").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交--起量快", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 表单提交-低-3s完播率
+                    if (formCountThirtyDays != null && play3sRatio != null && Integer.parseInt(formCountThirtyDays) >= 20 && Double.parseDouble(play3sRatio) < 0.157) {
+                        String[] split = tgaMap.get("表单提交-低-3s完播率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交-低-3s完播率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 表单提交-高-3s完播率
+                    if (formCountThirtyDays != null && play3sRatio != null && Integer.parseInt(formCountThirtyDays) >= 20 && Double.parseDouble(play3sRatio) > 0.515) {
+                        String[] split = tgaMap.get("表单提交-高-3s完播率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交-高-3s完播率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 表单提交-低-转化率
+                    if (formCountThirtyDays != null && conversionRatio != null && Integer.parseInt(formCountThirtyDays) >= 20 && Double.parseDouble(conversionRatio) < 0.017) {
+                        String[] split = tgaMap.get("表单提交-低-转化率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交-低-转化率", split[0], split[1], "1", date);
+                        }
+                    }
+
+
+                    // 表单提交-高-转化率
+                    if (formCountThirtyDays != null && conversionRatio != null && Integer.parseInt(formCountThirtyDays) >= 20 && Double.parseDouble(conversionRatio) > 0.159) {
+                        String[] split = tgaMap.get("表单提交-高-转化率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交-高-转化率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 表单提交-低-行为率
+                    if (formCountThirtyDays != null && behaviorRation != null && Integer.parseInt(formCountThirtyDays) >= 20 && Double.parseDouble(behaviorRation) < 0.004) {
+                        String[] split = tgaMap.get("表单提交-低-行为率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交-低-行为率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                    // 表单提交-高-行为率
+                    if (formCountThirtyDays != null && behaviorRation != null && Integer.parseInt(formCountThirtyDays) >= 20 && Double.parseDouble(behaviorRation) > 0.015) {
+                        String[] split = tgaMap.get("表单提交-高-行为率").split(";");
+                        int count = materialLabelMapper.getDataByCodeAndSignature(obj.getSignature(), split[0]);
+                        //次素材没有打此标签
+                        if (count == 0) {
+                            materialLabelMapper.saveMaterialTag(obj.getSignature(), "表单提交-高-行为率", split[0], split[1], "1", date);
+                        }
+                    }
+
+                });
+            }
+            result.success("success");
+        } catch (Exception e) {
+            result.error500("error");
+            log.info("素材规定标签失败:{}", e.toString());
         }
+        return result;
 
+    }
 
-        return null;
+    /**
+     * 同步标签到ES
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result SynchronousLabel() {
+        Result result = new Result();
+        try {
+            List<MaterialLabelInfo> materialLabelData = materialLabelMapper.getMaterialLabelData(null);
+            //创建索引
+            boolean indexIfNotExist = elasticsearchUtil.createIndexIfNotExist(MaterialLabelInfo.class);
+            //同步ES
+            if (materialLabelData.size() > 0) {
+                //每5000条数据, 拆成一个list
+                List<List<MaterialLabelInfo>> repayEntityVoList = getSubList(100, materialLabelData);
+                if (!repayEntityVoList.isEmpty()) {
+                    for (List<MaterialLabelInfo> materialLabelInfos : repayEntityVoList) {
+                        elasticsearchUtil.batchSaveOrUpdate(materialLabelInfos);
+                        //防止es队列满
+                        Thread.sleep(500);
+                    }
+                }
+            }
+            result.setSuccess(true);
+        } catch (Exception e) {
+            result.setSuccess(false);
+            log.info("同步标签至ES失败:{}", e.toString());
+        }
+        return result;
     }
+
+
     /**
      * 获取指定日期number天之后之前的日期
      *
      * @param
      * @return
      */
-    public String getDateByNumber(String date,int number){
+    public String getDateByNumber(String date, int number) {
         Calendar calc = Calendar.getInstance();
-        SimpleDateFormat sdf  = new SimpleDateFormat("yyyy-MM-dd");
-        String AfterDate=null;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String AfterDate = null;
         try {
             calc.setTime(sdf.parse(date));
-            calc.add(calc.DATE, number);
-            AfterDate=sdf.format(calc.getTime());
-        }catch (Exception e){
-            log.info("获取日期失败:{}",e.toString());
+            calc.add(Calendar.DAY_OF_MONTH, number);
+            AfterDate = sdf.format(calc.getTime());
+        } catch (Exception e) {
+            log.info("获取日期失败:{}", e.toString());
         }
         return AfterDate;
     }
+
+
+    /**
+     * 将list拆分成指定数量的小list
+     * 注: 使用的subList方式,返回的是list的内部类,不可做元素的删除,修改,添加操作
+     *
+     * @param length 数量
+     * @param list   大list
+     */
+    public List<List<MaterialLabelInfo>> getSubList(int length, List<MaterialLabelInfo> list) {
+        int size = list.size();
+        int temp = size / length + 1;
+        boolean result = size % length == 0;
+        List<List<MaterialLabelInfo>> subList = new ArrayList<>();
+        for (int i = 0; i < temp; i++) {
+            if (i == temp - 1) {
+                if (result) {
+                    break;
+                }
+                subList.add(list.subList(length * i, size));
+            } else {
+                subList.add(list.subList(length * i, length * (i + 1)));
+            }
+        }
+        return subList;
+    }
+
 }

+ 6 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/config/Elasticsearch/ElasticsearchConfig.java

@@ -20,37 +20,37 @@ import java.util.ArrayList;
  */
 @Configuration
 public class ElasticsearchConfig {
-    @Value("${jeecg.elasticsearch.address}")
+    @Value("${elasticsearch.address}")
     private String address;
 
     /**
      *  连接超时时间
      */
-    @Value("${jeecg.elasticsearch.connect-timeout}")
+    @Value("${elasticsearch.connect-timeout}")
     private String connectTimeOut = "1000";
 
     /**
      * 连接超时时间
      */
-    @Value("${jeecg.elasticsearch.socket-timeout}")
+    @Value("${elasticsearch.socket-timeout}")
     private String socketTimeOut = "30000";
 
     /**
      * 获取连接的超时时间
      */
-    @Value("${jeecg.elasticsearch.connection-request-timeout}")
+    @Value("${elasticsearch.connection-request-timeout}")
     private String connectionRequestTimeOut = "500";
 
     /**
      * 最大连接数
      */
-    @Value("${jeecg.elasticsearch.max-connect-num}")
+    @Value("${elasticsearch.max-connect-num}")
     private String maxConnectNum = "100";
 
     /**
      * 最大路由连接数
      */
-    @Value("${jeecg.elasticsearch.max-connect-per-route}")
+    @Value("${elasticsearch.max-connect-per-route}")
     private String maxConnectPerRoute = "100";
 
 

+ 8 - 0
jeecg-cloud-module/jeecg-cloud-system-start/src/main/resources/application-test.yml

@@ -254,3 +254,11 @@ ai:
     callback-creative-url: http://192.168.1.193:31012/ai_callback_add_creative
 xxl-job:
   requestUrl: http://jiaoyangapi.shyouteng.com.cn
+
+elasticsearch:
+  address: 192.168.1.251:9200  #如果是集群,用逗号隔开
+  connect-timeout: 1000   #连接超时时间
+  socket-timeout: 30000   #连接超时时间
+  connection-request-timeout: 500
+  max-connect-num: 100
+  max-connect-per-route: 100