瀏覽代碼

人群包功能开发

zhaoxian 4 年之前
父節點
當前提交
47f813fe49
共有 14 個文件被更改,包括 296 次插入211 次删除
  1. 7 5
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  2. 29 15
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/controller/KuaishouCrowdPackController.java
  3. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/KuaishouCrowdPack.java
  4. 0 91
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/KuaishouCrowdPackageRel.java
  5. 9 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/KuaishouCrowdPackMapper.java
  6. 0 17
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/KuaishouCrowdPackageRelMapper.java
  7. 171 13
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouCrowdPackMapper.xml
  8. 0 5
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouCrowdPackageRelMapper.xml
  9. 5 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IKuaishouCrowdPackService.java
  10. 0 14
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IKuaishouCrowdPackageRelService.java
  11. 67 26
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaishouCrowdPackServiceImpl.java
  12. 0 19
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaishouCrowdPackageRelServiceImpl.java
  13. 1 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouPopulationService.java
  14. 3 4
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouPopulationServiceImpl.java

+ 7 - 5
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -394,13 +394,13 @@ public class SampleTest {
         //汇创 人员
 //        wechatUserInfoService.getUserList();
 //        //考勤记录
-//        wechatCheckinDataService.getCheckinData("2020-11-01 00:00:00", "2020-12-01 23:59:59");
+//        wechatCheckinDataService.getCheckinData("2021-03-01 00:00:00", "2021-03-31 23:59:59");
         //异常记录
-//        wechatNoListService.getNoDateByNo("2020-11-01 00:00:00", "2020-12-01 23:59:59", "0");
+        wechatNoListService.getNoDateByNo("2021-03-01 00:00:00", "2021-03-31 23:59:59", "0");
         //优容
-        wechatUserInfoService.getYRUserList();
-        wechatCheckinDataService.getYRCheckinData("2020-11-01 00:00:00", "2020-11-30 23:59:59");
-        wechatNoListService.getNoDateByNo("2020-11-01 00:00:00", "2020-12-01 23:59:59", "1");
+//        wechatUserInfoService.getYRUserList();
+//        wechatCheckinDataService.getYRCheckinData("2021-03-01 00:00:00", "2021-03-31 23:59:59");
+        wechatNoListService.getNoDateByNo("2021-03-01 00:00:00", "2021-03-31 23:59:59", "1");
     }
 
     @Autowired
@@ -622,4 +622,6 @@ public class SampleTest {
         }
     }
 
+
+
 }

+ 29 - 15
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/controller/KuaishouCrowdPackController.java

@@ -25,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -98,11 +97,27 @@ public class KuaishouCrowdPackController {
     }
 
     @GetMapping(value = "/queryRel")
-    public Result<Object> queryRel(String type, Long orientationId, Long accountId,
+    public Result<Object> queryRel(String type, String signature,
                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         try {
-            return kuaishouCrowdPackService.queryRel(type, orientationId, accountId, pageNo, pageSize);
+            if (Check.isNull(type) || Check.isNull(signature)) {
+                return Result.error("缺失参数");
+            }
+            return kuaishouCrowdPackService.queryRel(type, signature, pageNo, pageSize);
+        } catch (Exception e) {
+            log.error("查询异常,", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("查询失败");
+    }
+
+    @GetMapping(value = "/queryFailReason")
+    public Result<Object> queryFailReason(Long orientationId,
+                                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+        try {
+            return kuaishouCrowdPackService.queryFailReason(orientationId, pageNo, pageSize);
         } catch (Exception e) {
             log.error("查询异常,", e.getMessage());
             e.printStackTrace();
@@ -129,10 +144,10 @@ public class KuaishouCrowdPackController {
             }
             return kuaishouCrowdPackService.uploadCrowdPack(type, orientationName, accountId, url);
         } catch (Exception e) {
-            log.error("查询异常,", e.getMessage());
+            log.error("上传异常,", e.getMessage());
             e.printStackTrace();
         }
-        return Result.error("查询失败");
+        return Result.error("上传失败");
     }
 
     /**
@@ -200,7 +215,7 @@ public class KuaishouCrowdPackController {
      */
     @AutoLog(value = "人群报表-编辑")
     @ApiOperation(value = "人群报表-编辑", notes = "人群报表-编辑")
-    @PutMapping(value = "/edit")
+    @PostMapping(value = "/edit")
     public Result<KuaishouCrowdPack> edit(@RequestBody KuaishouCrowdPack kuaishouCrowdPack) {
         Result<KuaishouCrowdPack> result = new Result<KuaishouCrowdPack>();
         KuaishouCrowdPack kuaishouCrowdPackEntity = kuaishouCrowdPackService.getById(kuaishouCrowdPack.getId());
@@ -212,7 +227,6 @@ public class KuaishouCrowdPackController {
                 result.success("修改成功!");
             }
         }
-
         return result;
     }
 
@@ -224,15 +238,15 @@ public class KuaishouCrowdPackController {
      */
     @AutoLog(value = "人群报表-通过id删除")
     @ApiOperation(value = "人群报表-通过id删除", notes = "人群报表-通过id删除")
-    @DeleteMapping(value = "/delete")
-    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
-        try {
-            kuaishouCrowdPackService.removeById(id);
-        } catch (Exception e) {
-            log.error("删除失败", e.getMessage());
-            return Result.error("删除失败!");
+    @GetMapping(value = "/delete")
+    public Result<Object> delete(KuaishouCrowdPack kuaishouCrowdPack) {
+        KuaishouCrowdPack kuaishouCrowdPackEntity = kuaishouCrowdPackService.getById(kuaishouCrowdPack.getId());
+        if (kuaishouCrowdPackEntity == null) {
+            return Result.error("未找到对应实体");
+        } else {
+            kuaishouCrowdPackEntity.setDataStatus(0);
+            return kuaishouCrowdPackService.updateDataStatus(kuaishouCrowdPackEntity);
         }
-        return Result.ok("删除成功!");
     }
 
     /**

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/KuaishouCrowdPack.java

@@ -65,6 +65,10 @@ public class KuaishouCrowdPack {
      */
     private String url;
     /**
+     * 数据状态'0 删除,1 有效'
+     */
+    private Integer dataStatus;
+    /**
      * 执行结果反馈
      */
     private String message;

+ 0 - 91
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/KuaishouCrowdPackageRel.java

@@ -1,91 +0,0 @@
-package cn.com.ctop.kuaishou.modules.ai.entity;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-/**
- * 人群推送账户
- *
- * @author jeecg-boot
- * @version V1.0
- * @date 2021-03-30
- */
-@Data
-@TableName("ctop_kuaishou_crowd_package_rel")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "ctop_kuaishou_crowd_package_rel对象", description = "人群推送账户")
-public class KuaishouCrowdPackageRel {
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "id")
-    private Long id;
-    /**
-     * 目标账户ID
-     */
-    @Excel(name = "目标账户ID", width = 15)
-    @ApiModelProperty(value = "目标账户ID")
-    private Long tgtAccountId;
-    /**
-     * 推送账户ID
-     */
-    @Excel(name = "推送账户ID", width = 15)
-    @ApiModelProperty(value = "推送账户ID")
-    private Long accountId;
-    /**
-     * 上传日期
-     */
-    @Excel(name = "上传日期", width = 15)
-    @ApiModelProperty(value = "上传日期")
-    private String statDate;
-    /**
-     * 人群包ID
-     */
-    @Excel(name = "人群包ID", width = 15)
-    @ApiModelProperty(value = "人群包ID")
-    private Long orientationId;
-    /**
-     * 人群包名称
-     */
-    @Excel(name = "人群包名称", width = 15)
-    @ApiModelProperty(value = "人群包名称")
-    private String orientationName;
-    /**
-     * 执行结果反馈
-     */
-    @Excel(name = "执行结果反馈", width = 15)
-    @ApiModelProperty(value = "执行结果反馈")
-    private String message;
-    /**
-     * 创建时间
-     */
-    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-    /**
-     * 修改时间
-     */
-    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "修改时间")
-    private Date updateTime;
-}

+ 9 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/KuaishouCrowdPackMapper.java

@@ -25,4 +25,13 @@ public interface KuaishouCrowdPackMapper extends BaseMapper<KuaishouCrowdPack> {
 
     void updateBatch(@Param(value = "details") JSONArray details);
 
+    List<JSONObject> queryFailReason(@Param(value = "orientationId") Long orientationId);
+
+    List<JSONObject> queryRelAccounts(@Param(value = "signature") String signature);
+
+    List<JSONObject> queryRelProject(@Param(value = "signature") String signature);
+
+    void replaceBatch(@Param(value = "list") List<KuaishouCrowdPack> list);
+
+    Long queryProjectCount(@Param(value = "signature") String signature);
 }

+ 0 - 17
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/KuaishouCrowdPackageRelMapper.java

@@ -1,17 +0,0 @@
-package cn.com.ctop.kuaishou.modules.ai.mapper;
-
-import java.util.List;
-
-import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPackageRel;
-import org.apache.ibatis.annotations.Param;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * 人群推送账户
- * @author: jeecg-boot
- * @date:   2021-03-30
- * @cersion: V1.0
- */
-public interface KuaishouCrowdPackageRelMapper extends BaseMapper<KuaishouCrowdPackageRel> {
-
-}

+ 171 - 13
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouCrowdPackMapper.xml

@@ -3,11 +3,14 @@
 <mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouCrowdPackMapper">
 
     <select id="getTotal" resultType="java.lang.Long">
-        SELECT
-        count(1)
+        SELECT COUNT(1) FROM(
+        SELECT 1
         FROM ctop_kuaishou_crowd_package t1
         LEFT JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
-        WHERE `status` !='' and `status` is not null
+        WHERE t1.`status` is not null
+        AND t1.`status`!=2
+        and t1.data_status = 1
+        AND t1.signature is not null
         <if test="orientationName !=null">
             AND orientation_name LIKE CONCAT('%',#{orientationName},'%')
         </if>
@@ -17,18 +20,20 @@
         <if test="status !=null">
             AND t1.`status` =#{status}
         </if>
+        GROUP BY t1.signature
+        ) t
     </select>
 
     <select id="queryPageList" resultType="com.alibaba.fastjson.JSONObject">
         SELECT t1.id,
         t1.account_id as 'accountId',
         t2.auth_name as 'accountName',
-        stat_date as 'statDate',
-        orientation_id as 'orientationId',
-        orientation_name as 'orientationName',
-        url,
-        population_type as 'populationType',
-        t1.type,
+        IFNULL(stat_date,'') as 'statDate',
+        IFNULL(t1.orientation_id,'') as 'orientationId',
+        IFNULL(orientation_name,'') as 'orientationName',
+        IFNULL(url,'') as 'url',
+        IFNULL(population_type,'') as 'populationType',
+        IFNULL(t1.type,'') as 'type',
         CASE t1.type
         WHEN 1 THEN 'IMEI'
         WHEN 2 THEN 'IDFA'
@@ -37,6 +42,7 @@
         WHEN 5 THEN '手机号-MD5'
         WHEN 7 THEN 'OAID'
         WHEN 8 THEN 'OAID_MD5'
+        ELSE ''
         END as 'typeStr',
         t1.`status`,
         CASE t1.`status`
@@ -48,14 +54,24 @@
         WHEN 5 THEN '计算失败'
         WHEN 6 THEN '推送失败'
         WHEN 7 THEN '已失效'
+        ELSE ''
         END as 'statusStr',
-        IFNULL(signature,null),
+        IFNULL(t1.signature,'') as 'signature',
         IFNULL(cover_num,0) as 'coverNum',
-        IFNULL((SELECT COUNT(1) FROM ctop_user_allocation t where t1.account_id = t.account_id),0) as 'projectCount',
-        IFNULL((SELECT COUNT(1) FROM ctop_kuaishou_crowd_package_rel t WHERE t.tgt_account_id = t1.account_id),0) as 'accountCount'
+        IFNULL((SELECT COUNT(1) FROM ctop_kuaishou_crowd_package WHERE signature = t1.signature),0) as 'accountCount'
         FROM ctop_kuaishou_crowd_package t1
         LEFT JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
-        WHERE `status` !='' and `status` is not null
+        LEFT JOIN (
+        SELECT t.signature ,COUNT(1) as 'num' FROM (SELECT DISTINCT signature, t2.project_id FROM
+        ctop_kuaishou_crowd_package t1
+        INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+        where orientation_id is not null
+        GROUP BY project_id) t
+        ) t3 ON t1.signature = t3.signature
+        WHERE t1.`status` is not null
+        AND t1.`status`!=2
+        and t1.data_status = 1
+        AND t1.signature is not null
         <if test="orientationName !=null">
             AND orientation_name LIKE CONCAT('%',#{orientationName},'%')
         </if>
@@ -65,6 +81,8 @@
         <if test="status !=null">
             AND t1.`status` =#{status}
         </if>
+        GROUP BY t1.signature
+        order by t1.update_time
     </select>
 
     <select id="queryListByStatus" resultType="cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack">
@@ -74,6 +92,102 @@
         GROUP BY account_id
     </select>
 
+    <select id="queryFailReason" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT DISTINCT IFNULL(t3.project_name, null) as 'projectName', IFNULL(t2.auth_name, null)as 'accountName', IFNULL(t1.message, null) as 'message'
+        FROM ctop_kuaishou_crowd_package t1
+                 INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                 INNER JOIN ctop_project t3 ON t2.project_id = t3.id
+        WHERE t1.orientation_id = #{orientationId}
+          AND t1.message !='OK' OR t1.message !='PUSH OK'
+          AND  t1.data_status = 1
+    </select>
+
+    <select id="queryRelAccounts" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT IFNULL(t1.project_name, '') AS 'projectName' ,IFNULL(t1.auth_name, '') AS 'accountName',t2.count
+        FROM (
+                 SELECT t2.auth_name, t2.account_id, t3.project_name
+                 FROM ctop_kuaishou_crowd_package t1
+                          INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                          INNER JOIN ctop_project t3 ON t3.id = t2.project_id
+                 where signature = '5a7533070feda39d09ef56b9396fd5fb'
+                 GROUP BY t1.account_id
+             ) t1
+                 LEFT JOIN(
+            SELECT t.account_id, COUNT(1) as 'count'
+            FROM (
+                     SELECT t1.account_id, COUNT(1)
+                     FROM ctop_kuaishou_crowd_package t1
+                              LEFT JOIN (
+                         SELECT t1.account_id
+                         FROM ctop_kuaishou_crowd_package t1
+                                  INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                         where signature = #{signature}
+                         GROUP BY account_id
+                     ) t2 ON t1.account_id = t2.account_id
+                         AND `status` != 2
+                        AND data_status = 1
+                        AND t1.account_id is not null
+                     GROUP BY signature, t1.account_id) t
+            GROUP BY t.account_id
+        ) t2 ON t1.account_id = t2.account_id
+    </select>
+
+    <select id="queryRelProject" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT IFNULL(CONCAT(tt3.project_name, '(', tt.project_id, ')'), '') as 'projectName' ,
+               tt.accountCount,
+               tt2.count
+        FROM (
+                 SELECT t.project_id, COUNT(1) as  'accountCount'
+                 FROM (
+                          SELECT t2.project_id, t1.account_id
+                          FROM ctop_kuaishou_crowd_package t1
+                                   INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                                   LEFT JOIN(
+                              SELECT project_id, t3.project_name
+                              FROM ctop_kuaishou_crowd_package t1
+                                       INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                                       INNER JOIN ctop_project t3 ON t3.id = t2.project_id
+                              where signature = #{signature}
+                              GROUP BY project_id) t3 ON t2.project_id = t3.project_id
+                          WHERE `status` != 2
+                            AND data_status =1
+                          GROUP BY t1.account_id, project_id
+                      ) t
+                 GROUP BY t.project_id
+             ) tt
+                 LEFT JOIN
+             (
+                 SELECT project_id, COUNT(1) as 'count'
+                 FROM (
+                          SELECT t2.project_id, COUNT(1)
+                          FROM ctop_kuaishou_crowd_package t1
+                                   INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                                   LEFT JOIN(
+                              SELECT project_id, t3.project_name
+                              FROM ctop_kuaishou_crowd_package t1
+                                       INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+                                       INNER JOIN ctop_project t3 ON t3.id = t2.project_id
+                              where signature = #{signature}
+                              GROUP BY project_id) t3 ON t2.project_id = t3.project_id
+                          WHERE `status` != 2
+                            AND data_status = 1
+                          GROUP BY signature, project_id
+                      ) t
+                 GROUP BY t.project_id
+             ) tt2 ON tt2.project_id = tt.project_id
+                 LEFT JOIN ctop_project tt3 ON tt2.project_id = tt3.id
+    </select>
+
+    <select id="queryProjectCount" resultType="java.lang.Long">
+        SELECT COUNT(1)
+        FROM (SELECT t2.project_id
+              FROM ctop_kuaishou_crowd_package t1
+                       INNER JOIN ctop_user_allocation t2 ON t1.account_id = t2.account_id
+              where orientation_id is not null
+                AND signature = #{signature}
+              GROUP BY project_id) t
+    </select>
+
     <update id="updateBatch">
         <foreach collection="details" separator=";" item="item">
             update ctop_kuaishou_crowd_package
@@ -83,4 +197,48 @@
         </foreach>
     </update>
 
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_crowd_package(
+        id,
+        account_id,
+        stat_date,
+        orientation_id,
+        orientation_name,
+        url,
+        population_type,
+        data_status,
+        type,
+        status,
+        signature,
+        cover_num,
+        record_size,
+        match_size,
+        create_time,
+        update_time,
+        message
+        )
+        values
+        <foreach collection="list" item="li" separator=",">
+            (
+            #{li.id},
+            #{li.accountId},
+            #{li.statDate},
+            #{li.orientationId},
+            #{li.orientationName},
+            #{li.url},
+            #{li.populationType},
+            #{li.dataStatus},
+            #{li.type},
+            #{li.status},
+            #{li.signature},
+            #{li.coverNum},
+            #{li.recordSize},
+            #{li.matchSize},
+            #{li.createTime},
+            #{li.updateTime},
+            #{li.message}
+            )
+        </foreach>
+    </insert>
+
 </mapper>

+ 0 - 5
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouCrowdPackageRelMapper.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouCrowdPackageRelMapper">
-
-</mapper>

+ 5 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IKuaishouCrowdPackService.java

@@ -21,5 +21,9 @@ public interface IKuaishouCrowdPackService extends IService<KuaishouCrowdPack> {
 
     void crowdListQuery();
 
-    Result<Object> queryRel(String type, Long orientationId, Long accountId, Integer pageNo, Integer pageSize);
+    Result<Object> queryRel(String type, String signature, Integer pageNo, Integer pageSize);
+
+    Result<Object> queryFailReason(Long orientationId, Integer pageNo, Integer pageSize);
+
+    Result<Object> updateDataStatus(KuaishouCrowdPack kuaishouCrowdPack);
 }

+ 0 - 14
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IKuaishouCrowdPackageRelService.java

@@ -1,14 +0,0 @@
-package cn.com.ctop.kuaishou.modules.ai.service;
-
-import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPackageRel;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 人群推送账户
- * @Author: jeecg-boot
- * @Date:   2021-03-30
- * @Version: V1.0
- */
-public interface IKuaishouCrowdPackageRelService extends IService<KuaishouCrowdPackageRel> {
-
-}

+ 67 - 26
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaishouCrowdPackServiceImpl.java

@@ -6,10 +6,8 @@ import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.LoadFileUtil;
 import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPack;
-import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPackageRel;
 import cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouCrowdPackMapper;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouCrowdPackService;
-import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouCrowdPackageRelService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouPopulationService;
 import com.alibaba.fastjson.JSONArray;
@@ -46,9 +44,6 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
     private KuaishouCrowdPackMapper crowdPackMapper;
 
     @Autowired
-    private IKuaishouCrowdPackageRelService relService;
-
-    @Autowired
     private ICtopOauthTokenService tokenService;
 
     @Autowired
@@ -69,6 +64,10 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
         Long total = crowdPackMapper.getTotal(kuaishouCrowdPack.getStatus(), kuaishouCrowdPack.getAccountName(), kuaishouCrowdPack.getOrientationName());
         PageHelper.startPage(pageNo, pageSize, false);
         List<JSONObject> list = crowdPackMapper.queryPageList(kuaishouCrowdPack.getStatus(), kuaishouCrowdPack.getAccountName(), kuaishouCrowdPack.getOrientationName());
+        for (JSONObject object : list) {
+            Long count = crowdPackMapper.queryProjectCount(object.getString("signature"));
+            object.put("projectCount", Check.isNull(count) ? 0 : count);
+        }
         PageInfo pageInfo = new PageInfo(list);
         pageInfo.setTotal(total);
         return Result.ok(pageInfo);
@@ -79,6 +78,10 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
         StringBuffer path = new StringBuffer();
         path.append(downloadPath).append(DateUtils.getNowDate(DateUtils.WEB_FORMAT)).append("/").append(UUID.randomUUID().toString()).append("/");
         log.info("-------下载到服务器地址:{}", path.toString());
+        if (!url.contains("http")) {
+            url = "https:".concat(url);
+        }
+        System.out.println(url);
         String newFileUrl = LoadFileUtil.downLoadFromUrl(url, path.toString());
         String md5 = null;
         try {
@@ -86,6 +89,15 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
         } catch (IOException e) {
             log.error("获取MD5签名失败", e);
         }
+        QueryWrapper<KuaishouCrowdPack> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account_id", accountId);
+        queryWrapper.eq("signature", md5);
+        queryWrapper.eq("data_status", 1);
+        queryWrapper.last("limit 1");
+        KuaishouCrowdPack one = crowdPackMapper.selectOne(queryWrapper);
+        if (!Check.isNull(one)) {
+            return Result.error("本账户已上传过该人群包,人群包名为:" + one.getOrientationName());
+        }
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
         JSONObject jsonObject = iKuaishouPopulationService.updatePopulation(token, type, orientationName, newFileUrl);
         LoadFileUtil.delFile(newFileUrl);
@@ -96,6 +108,7 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
                 crowdPack.setUrl(url);
                 crowdPack.setMessage(jsonObject.getString("message"));
                 crowdPack.setStatDate(DateUtils.formatDate(new Date()));
+                crowdPack.setDataStatus(1);
                 this.save(crowdPack);
             } else {
                 KuaishouCrowdPack crowdPack = new KuaishouCrowdPack();
@@ -103,6 +116,7 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
                 crowdPack.setUrl(url);
                 crowdPack.setMessage(jsonObject.getString("message"));
                 crowdPack.setStatDate(DateUtils.formatDate(new Date()));
+                crowdPack.setDataStatus(1);
                 this.save(crowdPack);
                 return Result.error(jsonObject.getString("message"));
             }
@@ -113,7 +127,6 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
     @Override
     public Result<Object> accountPush(JSONObject request) {
         JSONArray accountIds = request.getJSONArray("accountIds");
-        List<Long> longs = accountIds.toJavaList(Long.class);
         Long orientationId = request.getLong("orientationId");
         Long accountId = request.getLong("accountId");
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
@@ -123,32 +136,29 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
         KuaishouCrowdPack kuaishouCrowdPack = crowdPackMapper.selectOne(wrapper);
         JSONObject jsonObject = iKuaishouPopulationService.pushAccountsPopulation(token, orientationId, accountIds);
         if (jsonObject.getInteger("code") == 0) {
+            List<KuaishouCrowdPack> list = new ArrayList<>();
             JSONObject data = jsonObject.getJSONObject("data");
             if (!Check.isNull(data)) {
                 JSONArray success = data.getJSONArray("success");
-                List<KuaishouCrowdPackageRel> relList = new ArrayList<>();
                 for (Object account : success) {
-                    KuaishouCrowdPackageRel rel = new KuaishouCrowdPackageRel();
-                    rel.setAccountId((Long) account);
-                    rel.setTgtAccountId(accountId);
-                    rel.setMessage("OK");
-                    rel.setStatDate(DateUtils.formatDate(new Date()));
-                    rel.setOrientationId(orientationId);
-                    rel.setOrientationName(kuaishouCrowdPack.getOrientationName());
-                    relList.add(rel);
+                    kuaishouCrowdPack.setAccountId((Long) account);
+                    kuaishouCrowdPack.setMessage("PUSH OK");
+                    kuaishouCrowdPack.setStatDate(DateUtils.formatDate(new Date()));
+                    list.add(kuaishouCrowdPack);
                 }
                 JSONArray fail = data.getJSONArray("fail");
                 for (Object account : fail) {
-                    KuaishouCrowdPackageRel rel = new KuaishouCrowdPackageRel();
-                    rel.setAccountId((Long) account);
-                    rel.setTgtAccountId(accountId);
-                    rel.setMessage(jsonObject.getString("message"));
-                    rel.setStatDate(DateUtils.formatDate(new Date()));
-                    rel.setOrientationId(orientationId);
-                    rel.setOrientationName(kuaishouCrowdPack.getOrientationName());
-                    relList.add(rel);
+                    kuaishouCrowdPack.setAccountId((Long) account);
+                    kuaishouCrowdPack.setMessage("推送失败");
+                    kuaishouCrowdPack.setStatDate(DateUtils.formatDate(new Date()));
+                    kuaishouCrowdPack.setStatus(null);
+                    kuaishouCrowdPack.setType(null);
+                    kuaishouCrowdPack.setCoverNum(null);
+                    kuaishouCrowdPack.setRecordSize(null);
+                    kuaishouCrowdPack.setMatchSize(null);
+                    list.add(kuaishouCrowdPack);
                 }
-                relService.saveBatch(relList);
+                crowdPackMapper.replaceBatch(list);
             }
         }
         return Result.ok("success");
@@ -175,7 +185,38 @@ public class KuaishouCrowdPackServiceImpl extends ServiceImpl<KuaishouCrowdPackM
     }
 
     @Override
-    public Result<Object> queryRel(String type, Long orientationId, Long accountId, Integer pageNo, Integer pageSize) {
-        return null;
+    public Result<Object> queryRel(String type, String signature, Integer pageNo, Integer pageSize) {
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> list = null;
+        if ("1".equals(type)) {
+            list = crowdPackMapper.queryRelProject(signature);
+        } else {
+            list = crowdPackMapper.queryRelAccounts(signature);
+        }
+        PageInfo pageInfo = new PageInfo(list);
+        return Result.ok(pageInfo);
+    }
+
+    @Override
+    public Result<Object> queryFailReason(Long orientationId, Integer pageNo, Integer pageSize) {
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> list = crowdPackMapper.queryFailReason(orientationId);
+        PageInfo pageInfo = new PageInfo(list);
+        return Result.ok(pageInfo);
+    }
+
+    @Override
+    public Result<Object> updateDataStatus(KuaishouCrowdPack kuaishouCrowdPack) {
+        CtopOauthToken token = tokenService.getTokenByAccountId(kuaishouCrowdPack.getAccountId());
+        JSONObject object = iKuaishouPopulationService.deletePopulation(kuaishouCrowdPack.getAccountId(), kuaishouCrowdPack.getOrientationId(), token.getAccessToken());
+        if (!Check.isNull(object)) {
+            kuaishouCrowdPack.setMessage(object.getString("data"));
+            if (object.getInteger("code") == 0) {
+                if (this.updateById(kuaishouCrowdPack)) {
+                    return Result.ok("删除成功");
+                }
+            }
+        }
+        return Result.ok("删除失败");
     }
 }

+ 0 - 19
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaishouCrowdPackageRelServiceImpl.java

@@ -1,19 +0,0 @@
-package cn.com.ctop.kuaishou.modules.ai.service.impl;
-
-import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouCrowdPackageRel;
-import cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouCrowdPackageRelMapper;
-import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouCrowdPackageRelService;
-import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-/**
- * 人群推送账户
- * @author jeecg-boot
- * @date   2021-03-30
- * @version V1.0
- */
-@Service
-public class KuaishouCrowdPackageRelServiceImpl extends ServiceImpl<KuaishouCrowdPackageRelMapper, KuaishouCrowdPackageRel> implements IKuaishouCrowdPackageRelService {
-
-}

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouPopulationService.java

@@ -27,7 +27,7 @@ public interface IKuaishouPopulationService extends IService<KuaishouPopulation>
      * @param accountId    广告主ID
      * @return
      */
-    boolean deletePopulation(Long accountId, String populationId, String accessToken);
+    JSONObject deletePopulation(Long accountId, Long populationId, String accessToken);
 
     /**
      * 获取人群包接口

+ 3 - 4
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouPopulationServiceImpl.java

@@ -70,7 +70,7 @@ public class KuaishouPopulationServiceImpl extends ServiceImpl<KuaishouPopulatio
      * @return
      */
     @Override
-    public boolean deletePopulation(Long accountId, String populationId, String accessToken) {
+    public JSONObject deletePopulation(Long accountId, Long populationId, String accessToken) {
         log.info("删除人群包,accountId:{}", accountId);
         String url = urlPath + KuaishouInterfaceConstant.POPULATION_DELETE;
         Map<String, String> headers = new HashMap<>();
@@ -82,10 +82,9 @@ public class KuaishouPopulationServiceImpl extends ServiceImpl<KuaishouPopulatio
         String result = HttpUtils.kuaiShouhttpPostRequest(url, requestJson.toJSONString(), headers);
         JSONObject resultJson = JSONObject.parseObject(result);
         if (!Check.isNull(resultJson)) {
-            Integer code = resultJson.getInteger("code");
-            return code == 0;
+            return resultJson;
         }
-        return false;
+        return null;
     }