Browse Source

Merge remote-tracking branch 'remotes/ctop/master' into test_performance2

hcst_sunzhen 5 years ago
parent
commit
b660fba4c4
27 changed files with 557 additions and 179 deletions
  1. 29 21
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java
  2. 5 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java
  3. 95 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  4. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouAppListJob.java
  5. 2 9
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/fileupload/controller/FileController.java
  6. 3 6
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageInfo.java
  7. 3 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialImageInfoMapper.java
  8. 3 1
      module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialInfoMapper.java
  9. 1 3
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialAscriptionMapper.xml
  10. 44 43
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialImageInfoMapper.xml
  11. 10 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialInfoMapper.xml
  12. 5 1
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialImageInfoService.java
  13. 1 1
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/BindAccountAuthServiceImpl.java
  14. 100 28
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialImageInfoServiceImpl.java
  15. 17 19
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  16. 2 2
      module-common/src/main/java/cn/com/ctop/common/module/utils/LoadFileUtil.java
  17. 2 2
      module-common/src/main/java/cn/com/ctop/common/module/utils/RandomUtil.java
  18. 1 0
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/IMaterialUploadService.java
  19. 3 1
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java
  20. 24 8
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/BatchController.java
  21. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouImageGetMapper.java
  22. 7 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouImageGetMapper.xml
  23. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouImageGetService.java
  24. 172 13
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/BatchServiceImpl.java
  25. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouImageGetServiceImpl.java
  26. 12 9
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  27. 7 4
      module-report/src/main/java/cn/com/ctop/bytedance/service/impl/ByteDanceHourlyAccountWarningServiceImpl.java

+ 29 - 21
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java

@@ -80,24 +80,10 @@ public class MaterialImageInfoController {
         materialImageInfo.setCreateTime(null);
         if (!Check.isNull(materialImageInfo.getUserId())) {
             String roleCode = materialInfoService.getRoleCodeByUserId(materialImageInfo.getUserId());
-            if ("admin".equals(roleCode) || "operator".equals(roleCode) || "kuaishouOperationManager".equals(roleCode) || "operationAssistant".equals(roleCode) || "touTiaoOperationManager".equals(roleCode) || "sale".equals(roleCode) || "saleDirector".equals(roleCode)) {
+            if ("designTeamLeader".equals(roleCode) || "planeLeader".equals(roleCode) || "admin".equals(roleCode) || "operator".equals(roleCode) || "kuaishouOperationManager".equals(roleCode) || "operationAssistant".equals(roleCode) || "touTiaoOperationManager".equals(roleCode) || "sale".equals(roleCode) || "saleDirector".equals(roleCode)) {
                 materialImageInfo.setUserId(null);
                 queryWrapper = QueryGenerator.initQueryWrapper(materialImageInfo, req.getParameterMap());
-            } else if ("designTeamLeader".equals(roleCode) || "planeLeader".equals(roleCode) || "plane".equals(roleCode) || "plan".equals(roleCode) || "shot".equals(roleCode)) {
-                String userId = materialImageInfo.getUserId();
-                materialImageInfo.setUserId(null);
-                queryWrapper = QueryGenerator.initQueryWrapper(materialImageInfo, req.getParameterMap());
-                if (Check.isNull(materialImageInfo.getProjectId())) {
-                    List<Long> projects = memberService.selectProjectsByUserId(userId);
-                    if (!Check.isNull(projects)) {
-                        queryWrapper.in("project_id", projects);
-                    } else {
-                        result.setSuccess(true);
-                        result.setResult(null);
-                        return result;
-                    }
-                }
-            } else {
+            } else if ("plane".equals(roleCode) || "plan".equals(roleCode) || "shot".equals(roleCode)) {
                 queryWrapper = QueryGenerator.initQueryWrapper(materialImageInfo, req.getParameterMap());
             }
             if (!Check.isNull(createTime)) {
@@ -143,20 +129,42 @@ public class MaterialImageInfoController {
     }
 
 
+    @GetMapping(value = "/getImageList")
+    public Result<List<MaterialImageInfo>> getImageList(MaterialImageInfo MaterialImageInfo,
+                                                        HttpServletRequest req) {
+        Result<List<MaterialImageInfo>> result = new Result<>();
+        QueryWrapper<MaterialImageInfo> queryWrapper = QueryGenerator.initQueryWrapper(MaterialImageInfo, req.getParameterMap());
+        List<MaterialImageInfo> list = MaterialImageInfoService.list(queryWrapper);
+        result.setSuccess(true);
+        result.setResult(list);
+        return result;
+    }
+
+
     @GetMapping(value = "/getDetail")
     public Result<MaterialImageInfo> getDetail(String id) {
         Result<MaterialImageInfo> result = new Result<>();
         MaterialImageInfo materialImageInfo = MaterialImageInfoService.getById(id);
         if (!Check.isNull(materialImageInfo)) {
-            MaterialInfo materialmInfo = materialInfoService.getById(materialImageInfo.getVideoId());
-            if (!Check.isNull(materialmInfo)) {
-                materialImageInfo.setVideoUrl(materialmInfo.getUrl());
+            QueryWrapper<MaterialInfo> materialInfoQueryWrapper = new QueryWrapper<>();
+            materialInfoQueryWrapper.eq("code", materialImageInfo.getVideoId());
+            materialInfoQueryWrapper.orderByDesc("create_time");
+            materialInfoQueryWrapper.last("limit 1");
+            MaterialInfo materialInfo = materialInfoService.getOne(materialInfoQueryWrapper);
+            if (!Check.isNull(materialInfo)) {
+                materialImageInfo.setVideoUrl(materialInfo.getUrl());
 
             }
+            if (!Check.isNull(materialImageInfo.getAuditorId())) {
+                String auditorName = materialInfoMapper.selectUserNameById(materialImageInfo.getAuditorId());
+                materialImageInfo.setAuditorName(auditorName);
 
-            String auditorName = materialInfoMapper.selectUserNameById(materialImageInfo.getAuditorId());
-            materialImageInfo.setAuditorName(auditorName);
+            }
 
+            if (!Check.isNull(materialImageInfo.getUserId())) {
+                String userName = materialInfoMapper.selectUserNameById(materialImageInfo.getUserId());
+                materialImageInfo.setUserName(userName);
+            }
         }
 
         result.setSuccess(true);

+ 5 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java

@@ -45,7 +45,10 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.text.ParseException;
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 素材信息
@@ -248,7 +251,7 @@ public class MaterialInfoController {
 
 
                 QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
-                imageInfoQueryWrapper.eq("video_id", material.getId());
+                imageInfoQueryWrapper.eq("video_id", material.getCode());
                 imageInfoQueryWrapper.eq("status", 0);
                 List<MaterialImageInfo> imageInfoList = iMaterialImageInfoService.list(imageInfoQueryWrapper);
                 if (Check.isNull(imageInfoList)) {
@@ -538,5 +541,4 @@ public class MaterialInfoController {
     }
 
 
-
 }

+ 95 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java

@@ -4,11 +4,9 @@ import cn.com.ctop.bytedance.entity.BytedancePlanDailyReport;
 import cn.com.ctop.bytedance.service.IBytedancePlanDailyReportService;
 import cn.com.ctop.bytedance.service.IBytedancePlanHourlyReportService;
 import cn.com.ctop.bytedance.service.IReportService;
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.entity.*;
 import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
-import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.common.module.utils.ResultMapUtils;
@@ -54,6 +52,16 @@ public class TestController {
     private CtopOauthTokenMapper oauthTokenMapper;
     @Autowired
     private IKuaiShouHistoryReportTaskService historyReportTaskService;
+    @Autowired
+    private IMaterialInfoService materialInfoService;
+    @Autowired
+    private IMaterialParameterService parameterService;
+    @Autowired
+    private IMaterialAscriptionService ascriptionService;
+    @Autowired
+    private IMaterialTagService tagService;
+    @Autowired
+    private IMaterialImageInfoService iMaterialImageInfoService;
 
     @PostMapping(value = "/create")
     public Map<String, Object> authorization(@RequestBody JSONObject jsonObject) {
@@ -86,6 +94,89 @@ public class TestController {
     private IKuaishouInterfaceService kuaishouInterfaceService;
 
 
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+
+
+    @GetMapping(value = "/getToken")
+    public String getToken(Long accountId, String refreshToken, Integer agentType) {
+        oauthTokenService.getKuaiShouRefreshToken(accountId, refreshToken, agentType);
+        return "Success";
+    }
+
+
+    @GetMapping(value = "/updateCode")
+    public String updateCode() {
+
+        List<MaterialInfo> list = materialInfoService.list();
+        for (MaterialInfo info : list) {
+
+
+            QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
+            imageInfoQueryWrapper.eq("video_id", String.valueOf(info.getId()));
+            MaterialImageInfo updateMaterialImageInfo = new MaterialImageInfo();
+            updateMaterialImageInfo.setVideoId(info.getCode());
+            iMaterialImageInfoService.update(updateMaterialImageInfo, imageInfoQueryWrapper);
+
+
+            QueryWrapper<MaterialTag> tagQueryWrapper = new QueryWrapper<>();
+            tagQueryWrapper.eq("material_id", String.valueOf(info.getId()));
+            MaterialTag updateTag = new MaterialTag();
+            updateTag.setMaterialId(info.getCode());
+            tagService.update(updateTag, tagQueryWrapper);
+
+            QueryWrapper<MaterialAscription> materialAscriptionQuery = new QueryWrapper<>();
+            materialAscriptionQuery.eq("material_id", String.valueOf(info.getId()));
+            MaterialAscription updateMaterialAscription = new MaterialAscription();
+            updateMaterialAscription.setMaterialId(info.getCode());
+            ascriptionService.update(updateMaterialAscription, materialAscriptionQuery);
+
+
+            QueryWrapper<MaterialParameter> parameterQueryWrapper = new QueryWrapper<>();
+            parameterQueryWrapper.eq("material_id", String.valueOf(info.getId()));
+            MaterialParameter updateMaterialParameter = new MaterialParameter();
+            updateMaterialParameter.setMaterialId(info.getCode());
+            parameterService.update(updateMaterialParameter, parameterQueryWrapper);
+
+
+        }
+        List<MaterialImageInfo> list1 = iMaterialImageInfoService.list();
+        for (MaterialImageInfo imageInfo : list1) {
+            QueryWrapper<MaterialParameter> parameterQueryWrapper = new QueryWrapper<>();
+            parameterQueryWrapper.eq("material_id", String.valueOf(imageInfo.getId()));
+            MaterialParameter updateMaterialParameter = new MaterialParameter();
+            updateMaterialParameter.setMaterialId(imageInfo.getCode());
+            parameterService.update(updateMaterialParameter, parameterQueryWrapper);
+        }
+
+
+        List<String> codeList = iMaterialImageInfoService.getCodeList();
+        if (!Check.isNull(codeList)) {
+            for (int i = 0; i < codeList.size(); i++) {
+                String code = codeList.get(i);
+                QueryWrapper<MaterialImageInfo> materialImageInfoQueryWrapper = new QueryWrapper<>();
+                materialImageInfoQueryWrapper.eq("code", code);
+
+                List<MaterialImageInfo> list2 = iMaterialImageInfoService.list(materialImageInfoQueryWrapper);
+                if (list2.size() > 1) {
+                    for (int j = 0; j < list2.size(); j++) {
+                        if (j == 0) {
+                            continue;
+                        }
+                        MaterialImageInfo materialImageInfo = list2.get(j);
+                        iMaterialImageInfoService.removeById(String.valueOf(materialImageInfo.getId()));
+                    }
+
+                }
+            }
+
+        }
+
+        return "SUCCESS";
+
+    }
+
+
     @GetMapping(value = "/createTask")
     public String createTask(Long accountId) {
         Result<String> result = new Result<String>();

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouAppListJob.java

@@ -1,7 +1,6 @@
 package org.jeecg.modules.ctop.job;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;

+ 2 - 9
jeecg-boot-module-system/src/main/java/org/jeecg/modules/fileupload/controller/FileController.java

@@ -37,14 +37,12 @@ public class FileController {
     }
 
 
-
     @RequestMapping("file/imageCheck")
-    public Map<String, Object> imageCheck(String code, Long projectId) {
-        return materialImageInfoService.checkMaterialInfo(code, projectId);
+    public Map<String, Object> imageCheck(String code, String videoId) {
+        return materialImageInfoService.checkMaterialInfo(code, videoId);
     }
 
 
-
     @PostMapping("/insertV2")
     public Map<String, Object> insertV2(@RequestBody JSONObject json) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject()
@@ -55,8 +53,6 @@ public class FileController {
     }
 
 
-
-
     @PostMapping("/insertImage")
     public Map<String, Object> insertImage(@RequestBody JSONObject json) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject()
@@ -67,9 +63,6 @@ public class FileController {
     }
 
 
-
-
-
     @PostMapping("file/insert")
     public Map<String, Object> insertFile(@RequestBody JSONObject json) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject()

+ 3 - 6
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageInfo.java

@@ -82,12 +82,6 @@ public class MaterialImageInfo {
     @ApiModelProperty(value = "素材描述")
     private Object materialDescribe;
     /**
-     * 项目id
-     */
-    @Excel(name = "项目id", width = 15)
-    @ApiModelProperty(value = "项目id")
-    private Long projectId;
-    /**
      * 拒绝原因
      */
     @Excel(name = "拒绝原因", width = 15)
@@ -142,4 +136,7 @@ public class MaterialImageInfo {
     @TableField(exist = false)
     private String auditorName;
 
+    @TableField(exist = false)
+    private String userName;
+
 }

+ 3 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialImageInfoMapper.java

@@ -3,6 +3,8 @@ package cn.com.ctop.common.module.mapper;
 import cn.com.ctop.common.module.entity.MaterialImageInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * 素材
  *
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface MaterialImageInfoMapper extends BaseMapper<MaterialImageInfo> {
     void insertSelective(MaterialImageInfo materialImageInfo);
 
+    List<String> getCodeList();
 }

+ 3 - 1
module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialInfoMapper.java

@@ -31,5 +31,7 @@ public interface MaterialInfoMapper extends BaseMapper<MaterialInfo> {
 
     List<String> getEffiSignature();
 
-    MaterialInfo getMaterialInfoByCode(@Param("code")String code);
+    MaterialInfo getMaterialInfoByCode(@Param("code") String code);
+
+    Long getProjectIdByAccountId(@Param("accountId") Long accountId);
 }

+ 1 - 3
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialAscriptionMapper.xml

@@ -4,7 +4,7 @@
 
     <select id="selectByMaterialId" resultType="com.alibaba.fastjson.JSONObject">
 
-select
+    select
       (case
         when clip_id != ""
         then (select realname from sys_user where id = clip_id)
@@ -13,8 +13,6 @@ select
         ) clipName, -- 剪辑人姓名
 
         clip_id clipId,
-
-
         (case
         when shot_id != ""
         then (select realname from sys_user where id = shot_id)

+ 44 - 43
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialImageInfoMapper.xml

@@ -2,121 +2,122 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.common.module.mapper.MaterialImageInfoMapper">
 
-    <insert id="insertSelective" parameterType="cn.com.ctop.common.module.entity.MaterialImageInfo" >
+    <insert id="insertSelective" parameterType="cn.com.ctop.common.module.entity.MaterialImageInfo">
         replace into ctop_material_image_info
-        <trim prefix="(" suffix=")" suffixOverrides="," >
-            <if test="id != null" >
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">
                 id,
             </if>
-            <if test="code != null" >
+            <if test="code != null">
                 code,
             </if>
-            <if test="videoId != null" >
+            <if test="videoId != null">
                 video_id,
             </if>
-            <if test="materialName != null" >
+            <if test="materialName != null">
                 material_name,
             </if>
-            <if test="userId != null" >
+            <if test="userId != null">
                 user_id,
             </if>
-            <if test="auditorId != null" >
+            <if test="auditorId != null">
                 auditor_id,
             </if>
-            <if test="status != null" >
+            <if test="status != null">
                 status,
             </if>
-            <if test="projectId != null" >
-                project_id,
-            </if>
-            <if test="width != null" >
+
+            <if test="width != null">
                 width,
             </if>
-            <if test="type != null" >
+            <if test="type != null">
                 type,
             </if>
-            <if test="height != null" >
+            <if test="height != null">
                 height,
             </if>
-            <if test="size != null" >
+            <if test="size != null">
                 size,
             </if>
-            <if test="createTime != null" >
+            <if test="createTime != null">
                 create_time,
             </if>
-            <if test="updateTime != null" >
+            <if test="updateTime != null">
                 update_time,
             </if>
-            <if test="url != null" >
+            <if test="url != null">
                 url,
             </if>
-            <if test="materialDescribe != null" >
+            <if test="materialDescribe != null">
                 material_describe,
             </if>
-            <if test="refuseReason != null" >
+            <if test="refuseReason != null">
                 refuse_reason,
             </if>
-            <if test="refuseFile != null" >
+            <if test="refuseFile != null">
                 refuse_file,
             </if>
         </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides="," >
-            <if test="id != null" >
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">
                 #{id,jdbcType=VARCHAR},
             </if>
-            <if test="code != null" >
+            <if test="code != null">
                 #{code,jdbcType=VARCHAR},
             </if>
-            <if test="videoId != null" >
+            <if test="videoId != null">
                 #{videoId,jdbcType=VARCHAR},
             </if>
-            <if test="materialName != null" >
+            <if test="materialName != null">
                 #{materialName,jdbcType=VARCHAR},
             </if>
-            <if test="userId != null" >
+            <if test="userId != null">
                 #{userId,jdbcType=VARCHAR},
             </if>
-            <if test="auditorId != null" >
+            <if test="auditorId != null">
                 #{auditorId,jdbcType=VARCHAR},
             </if>
-            <if test="status != null" >
+            <if test="status != null">
                 #{status,jdbcType=INTEGER},
             </if>
-            <if test="projectId != null" >
-                #{projectId,jdbcType=BIGINT},
-            </if>
-            <if test="width != null" >
+
+            <if test="width != null">
                 #{width,jdbcType=VARCHAR},
             </if>
-            <if test="type != null" >
+            <if test="type != null">
                 #{type,jdbcType=VARCHAR},
             </if>
-            <if test="height != null" >
+            <if test="height != null">
                 #{height,jdbcType=VARCHAR},
             </if>
-            <if test="size != null" >
+            <if test="size != null">
                 #{size,jdbcType=VARCHAR},
             </if>
-            <if test="createTime != null" >
+            <if test="createTime != null">
                 #{createTime,jdbcType=TIMESTAMP},
             </if>
-            <if test="updateTime != null" >
+            <if test="updateTime != null">
                 #{updateTime,jdbcType=TIMESTAMP},
             </if>
-            <if test="url != null" >
+            <if test="url != null">
                 #{url},
             </if>
-            <if test="materialDescribe != null" >
+            <if test="materialDescribe != null">
                 #{materialDescribe},
             </if>
-            <if test="refuseReason != null" >
+            <if test="refuseReason != null">
                 #{refuseReason},
             </if>
-            <if test="refuseFile != null" >
+            <if test="refuseFile != null">
                 #{refuseFile},
             </if>
         </trim>
     </insert>
 
 
+    <select id="getCodeList" resultType="java.lang.String">
+
+     SELECT DISTINCT(code)  from  ctop_material_image_info
+    </select>
+
 </mapper>

+ 10 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialInfoMapper.xml

@@ -2,6 +2,16 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.common.module.mapper.MaterialInfoMapper">
 
+
+    <select id="getProjectIdByAccountId" resultType="java.lang.Long">
+
+       select
+       project_id
+       from ctop_user_allocation
+       where  account_id = #{accountId}
+
+    </select>
+
     <select id="selectUserNameById" resultType="java.lang.String">
    select realname from  sys_user where  id = #{auditorId}
     </select>

+ 5 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialImageInfoService.java

@@ -4,6 +4,7 @@ import cn.com.ctop.common.module.entity.MaterialImageInfo;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -20,7 +21,10 @@ public interface IMaterialImageInfoService extends IService<MaterialImageInfo> {
      */
     void insertImage(JSONObject imageJson);
 
-    Map<String, Object> checkMaterialInfo(String code, Long projectId);
+    Map<String, Object> checkMaterialInfo(String code, String videoId);
 
 
+    List<String> getCodeList();
+
+    void getImageFile(String url, Long id);
 }

+ 1 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/impl/BindAccountAuthServiceImpl.java

@@ -73,7 +73,7 @@ public class BindAccountAuthServiceImpl extends ServiceImpl<BindAccountAuthMappe
                     .append(KuaishouInterfaceConstant.AUTH_PATH)
                     .append("?app_id=" + PropertiesUtils.getValue("kuaishou_config", "kuaishou_third_appid"))
                     .append("&state=" + URLEncoder.encode(URLEncoder.encode(state)))
-                    .append("&scope=%5B%22ad_query%22%2C%22ad_manage%22%5D&")
+                    .append("&scope=%5B%22report_service%22%2C%22ad_query%22%2C%22account_service%22%2C%22ad_manage%22%5D")
                     .append("&redirect_uri=" + URLEncoder.encode(PropertiesUtils.getValue("kuaishou_config", "kuaishou_callback_url"), "UTF-8"));
         }
 

+ 100 - 28
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialImageInfoServiceImpl.java

@@ -4,18 +4,26 @@ import cn.com.ctop.common.module.entity.MaterialImageInfo;
 import cn.com.ctop.common.module.mapper.MaterialImageInfoMapper;
 import cn.com.ctop.common.module.service.IMaterialImageInfoService;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.LoadFileUtil;
 import cn.com.ctop.common.module.utils.ResultMapUtils;
 import cn.com.ctop.common.module.utils.StatusCode;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import it.sauronsoftware.jave.Encoder;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.nio.channels.FileChannel;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -31,6 +39,11 @@ public class MaterialImageInfoServiceImpl extends ServiceImpl<MaterialImageInfoM
 
     @Value("${oss.replace.download}")
     private String downloadUrl;
+    @Value("${oss.replace.replace-value}")
+    private String replaceValue;
+    @Value("${oss.replace.replace-old-value}")
+    private String replaceOldValue;
+
 
     @Autowired
     private MaterialImageInfoMapper materialImageInfoMapper;
@@ -38,48 +51,62 @@ public class MaterialImageInfoServiceImpl extends ServiceImpl<MaterialImageInfoM
 
     @Override
     public void insertImage(JSONObject imageJson) {
-        String videoId = imageJson.getString("videoId");
-        if (Check.isNull(videoId)) {
-            log.error("视频id不能为空");
+        try {
 
-        }
-        String userId = imageJson.getString("userId");
-        Long projectId = imageJson.getLong("projectId");
-        JSONArray imageArr = imageJson.getJSONArray("imageArr");
-        for (int i = 0; i < imageArr.size(); i++) {
-            JSONObject json = imageArr.getJSONObject(i);
-            if (!Check.isNull(json)) {
-                MaterialImageInfo materialImageInfo = new MaterialImageInfo();
-                materialImageInfo.setVideoId(videoId);
-                materialImageInfo.setCode(json.getString("code"));
-                materialImageInfo.setMaterialDescribe(json.getString("materialDescribe"));
-                materialImageInfo.setType("IMAGE");
-                materialImageInfo.setHeight(json.getString("height"));
-                materialImageInfo.setWidth(json.getString("width"));
-
-
-                materialImageInfo.setSize(String.valueOf(json.getLong("size") / 1024));
-                materialImageInfo.setUrl("https:" + json.getString("url"));
-                materialImageInfo.setMaterialName(json.getString("materialName"));
-                materialImageInfo.setStatus(0);
-                materialImageInfo.setProjectId(projectId);
-                materialImageInfo.setUserId(userId);
-                materialImageInfoMapper.insertSelective(materialImageInfo);
+            String videoId = imageJson.getString("videoId");
+            if (Check.isNull(videoId)) {
+                log.error("视频id不能为空");
 
             }
+            String userId = imageJson.getString("userId");
+            JSONArray imageArr = imageJson.getJSONArray("imageArr");
+            for (int i = 0; i < imageArr.size(); i++) {
+                JSONObject json = imageArr.getJSONObject(i);
+                if (!Check.isNull(json)) {
+                    MaterialImageInfo materialImageInfo = new MaterialImageInfo();
+                    materialImageInfo.setVideoId(videoId);
+                    materialImageInfo.setCode(json.getString("code"));
+                    materialImageInfo.setMaterialDescribe(json.getString("materialDescribe"));
+                    materialImageInfo.setType("IMAGE");
+                    String url = "https:" + json.getString("url");
+                    materialImageInfo.setUrl(url);
+                    materialImageInfo.setMaterialName(json.getString("materialName"));
+                    materialImageInfo.setStatus(0);
+                    materialImageInfo.setUserId(userId);
+                    String replaceUrl = url.replace(replaceOldValue, replaceValue);
+                    log.info("图片replaceUrl:{}", url);
+                    String localUrl = LoadFileUtil.downLoadFromUrl(replaceUrl, downloadUrl);
+                    File file = new File(localUrl);
+                    it.sauronsoftware.jave.Encoder encoder = new Encoder();
+                    it.sauronsoftware.jave.MultimediaInfo m = encoder.getInfo(file);
+                    String width = String.valueOf((m.getVideo().getSize().getWidth()));
+                    String height = String.valueOf(m.getVideo().getSize().getHeight());
+                    FileInputStream fis = new FileInputStream(file);
+                    FileChannel fc = fis.getChannel();
+                    BigDecimal fileSize = new BigDecimal(fc.size());
+                    String size = String.valueOf(fileSize.divide(new BigDecimal(1024), 2, RoundingMode.HALF_UP));
+                    materialImageInfo.setSize(size);
+                    materialImageInfo.setWidth(width);
+                    materialImageInfo.setHeight(height);
+                    materialImageInfoMapper.insertSelective(materialImageInfo);
+                    LoadFileUtil.delFile(localUrl);
+                }
 
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
     }
 
     @Override
-    public Map<String, Object> checkMaterialInfo(String code, Long projectId) {
+    public Map<String, Object> checkMaterialInfo(String code, String videoId) {
 
 
         Map<String, Object> result = new HashMap<>();
         QueryWrapper<MaterialImageInfo> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("code", code);
-        queryWrapper.eq("project_id", projectId);
+        queryWrapper.eq("video_id", videoId);
         queryWrapper.last("limit 1");
         MaterialImageInfo info = this.getOne(queryWrapper);
         if (null != info) {
@@ -96,4 +123,49 @@ public class MaterialImageInfoServiceImpl extends ServiceImpl<MaterialImageInfoM
     }
 
 
+    @Override
+    public void getImageFile(String url, Long id) {
+
+        try {
+            if (!Check.isNull(url)) {
+                long l = System.currentTimeMillis();
+                String replaceUrl = url.replace(replaceOldValue, replaceValue);
+                log.info("图片replaceUrl:{}", url);
+                String localUrl = LoadFileUtil.downLoadFromUrl(replaceUrl, downloadUrl);
+                File file = new File(localUrl);
+                it.sauronsoftware.jave.Encoder encoder = new Encoder();
+                try {
+                    it.sauronsoftware.jave.MultimediaInfo m = encoder.getInfo(file);
+                    MaterialImageInfo imageInfo = new MaterialImageInfo();
+                    imageInfo.setId(id);
+                    String width = String.valueOf((m.getVideo().getSize().getWidth()));
+                    String height = String.valueOf(m.getVideo().getSize().getHeight());
+                    FileInputStream fis = new FileInputStream(file);
+                    FileChannel fc = fis.getChannel();
+                    BigDecimal fileSize = new BigDecimal(fc.size());
+                    String size = String.valueOf(fileSize.divide(new BigDecimal(1024), 2, RoundingMode.HALF_UP));
+                    imageInfo.setSize(size);
+                    imageInfo.setWidth(width);
+                    imageInfo.setHeight(height);
+                    this.updateById(imageInfo);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                } finally {
+                    file.delete();
+                }
+            }
+        } catch (
+                Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    @Override
+    public List<String> getCodeList() {
+        return materialImageInfoMapper.getCodeList();
+    }
+
+
 }

+ 17 - 19
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -196,7 +196,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         info.setType(type);
         this.save(info);
         Map<String, Object> deleteMap = new HashMap<>();
-        deleteMap.put("material_id", info.getId());
+        deleteMap.put("material_id", info.getCode());
         JSONObject ascription = jsonObject.getJSONObject("ascription");
         if (!Check.isNull(ascription)) {
             MaterialAscription materialAscription = new MaterialAscription();
@@ -245,8 +245,6 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
 
     //@Autowired
     //private MaterialInfoMapper materialInfoMapper;
-
-
     @Override
     public JSONObject getDetail(String materialId) {
         JSONObject json = new JSONObject();
@@ -259,24 +257,21 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
             json.put("auditorName", "");
         }
 
-        List<String> tagList = materialTagMapper.selectByMaterialId(materialId);
+        List<String> tagList = materialTagMapper.selectByMaterialId(materialInfo.getCode());
         if (!Check.isNull(tagList)) {
             json.put("tag", tagList);
         }
         QueryWrapper<MaterialParameter> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("material_id", materialId);
+        queryWrapper.eq("material_id", materialInfo.getCode());
         queryWrapper.orderByDesc("create_time");
         queryWrapper.last("limit 1");
         MaterialParameter materialParameter = materialParameterMapper.selectOne(queryWrapper);
 
         if (!Check.isNull(materialParameter)) {
             json.put("parameter", materialParameter);
-        } else {
-            MaterialParameter materialParameter1 = new MaterialParameter();
-            materialParameter1.setMaterialId(materialId);
-            json.put("parameter", materialParameter1);
         }
-        JSONObject ascriptionJson = materialAscriptionMapper.selectByMaterialId(materialId);
+
+        JSONObject ascriptionJson = materialAscriptionMapper.selectByMaterialId(materialInfo.getCode());
         if (!Check.isNull(ascriptionJson)) {
             json.put("ascription", ascriptionJson);
         }
@@ -346,7 +341,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                             long duration = m.getDuration();
                             long secondDuration = duration / 1000;
                             MaterialParameter materialParameter = new MaterialParameter();
-                            materialParameter.setMaterialId(materialInfo.getId());
+                            materialParameter.setMaterialId(materialInfo.getCode());
                             // 视频秒数
                             materialParameter.setSecond(secondDuration);
                             // 视频格式
@@ -474,7 +469,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
             JSONArray imageArr = json.getJSONArray("imageArr");
             if (!Check.isNull(imageArr)) {
                 JSONObject imageJson = new JSONObject();
-                imageJson.put("videoId", info.getId());
+                imageJson.put("videoId", info.getCode());
                 imageJson.put("userId", userId);
                 imageJson.put("projectId", projectId);
                 imageJson.put("imageArr", imageArr);
@@ -482,11 +477,11 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
             }
 
             Map<String, Object> deleteMap = new HashMap<>();
-            deleteMap.put("material_id", info.getId());
+            deleteMap.put("material_id", info.getCode());
             JSONObject ascription = json.getJSONObject("ascription");
             if (!Check.isNull(ascription)) {
                 MaterialAscription materialAscription = new MaterialAscription();
-                materialAscription.setMaterialId(info.getId());
+                materialAscription.setMaterialId(info.getCode());
                 // 剪辑人
                 materialAscription.setClipId(ascription.getString("clipId"));
                 // 拍摄人id
@@ -510,7 +505,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                     String tagStr = tag.getString(i);
                     if (!Check.isNull(tagStr)) {
                         MaterialTag materialTag = new MaterialTag();
-                        materialTag.setMaterialId(info.getId());
+                        materialTag.setMaterialId(info.getCode());
                         materialTag.setTag(tagStr);
                         materialTagMapper.insert(materialTag);
                     }
@@ -546,17 +541,17 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         return resultMap;
     }
 
-    public List<String> getEffiCode(){
+    public List<String> getEffiCode() {
         return materialInfoMapper.getEffiSignature();
     }
 
-    public List<MaterialInfo> effiMaterialInfo(){
+    public List<MaterialInfo> effiMaterialInfo() {
         List<MaterialInfo> materialInfoList = new ArrayList<>();
         List<String> effiSignatureList = materialInfoMapper.getEffiSignature();
-        for(String code:effiSignatureList){
+        for (String code : effiSignatureList) {
             MaterialInfo materialInfo = materialInfoMapper.getMaterialInfoByCode(code);
 
-            if (materialInfo == null){
+            if (materialInfo == null) {
                 continue;
             }
             //判断是否已经同步到快手平台
@@ -580,4 +575,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
     }
 
 
+
+
+
 }

+ 2 - 2
module-common/src/main/java/cn/com/ctop/common/module/utils/LoadFileUtil.java

@@ -38,7 +38,7 @@ public class LoadFileUtil {
         }
         String localPath = saveDir + File.separator + fileName;
         File file = new File(localPath);
-        if (!file.exists()){
+        if (!file.exists()) {
             file.getParentFile().mkdirs();
         }
         FileOutputStream fos = new FileOutputStream(file);
@@ -76,7 +76,7 @@ public class LoadFileUtil {
         boolean flag = false;
         File file = new File(path);
         if (!file.exists()) {
-            return flag;
+            return false;
         }
         try {
             flag = file.delete();

+ 2 - 2
module-common/src/main/java/cn/com/ctop/common/module/utils/RandomUtil.java

@@ -9,8 +9,8 @@ public class RandomUtil {
         char[] c = charArray();//获取包含26个字母大小写和数字的字符数组
 
         Random rd = new Random();
-        String code = "_";
-        for (int k = 0; k <= 4; k++) {
+        String code = "#";
+        for (int k = 0; k < 4; k++) {
             int index = rd.nextInt(c.length);//随机获取数组长度作为索引
             code += c[index];//循环添加到字符串后面
         }

+ 1 - 0
module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/IMaterialUploadService.java

@@ -14,4 +14,5 @@ public interface IMaterialUploadService {
      * @param accountArray
      */
     void uploadAccount(String mediaId, JSONArray materialArray, JSONArray accountArray) throws IOException;
+
 }

+ 3 - 1
module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java

@@ -13,6 +13,7 @@ import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.LoadFileUtil;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
@@ -268,7 +269,8 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
     @Autowired
     private RestTemplate rest;
 
-    private String exceptInfoForRestTemplate(String url, Map<String, Object> paramMap, Map<String, String> headerMap) throws ParseException {
+    private String exceptInfoForRestTemplate(String
+                                                     url, Map<String, Object> paramMap, Map<String, String> headerMap) throws ParseException {
         try {
             MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
             if (!Check.isNullMap(paramMap)) {

+ 24 - 8
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/BatchController.java

@@ -440,7 +440,7 @@ public class BatchController {
      * 获取人群包接口
      *
      * @param accountId
-     * @return
+     * @returnBatch
      */
     @GetMapping(value = "/getPopulationList")
     public Result<JSONArray> getAppList(Long accountId) {
@@ -1040,11 +1040,14 @@ public class BatchController {
      * @return
      */
     @GetMapping(value = "/getCreativeCopywriter")
-    public Result<MaterialInfo> getVideoList(String code) {
+    public Result<MaterialInfo> getVideoList(String code, Long accountId) {
         Result<MaterialInfo> result = new Result<>();
         try {
+
+            Long projectId = materialInfoMapper.getProjectIdByAccountId(accountId);
             QueryWrapper<MaterialInfo> materialInfoQueryWrapper = new QueryWrapper<>();
             materialInfoQueryWrapper.eq("code", code);
+            materialInfoQueryWrapper.eq("project_id", projectId);
             materialInfoQueryWrapper.last("limit 1");
             MaterialInfo materialInfo = materialInfoMapper.selectOne(materialInfoQueryWrapper);
             result.setSuccess(true);
@@ -1556,7 +1559,15 @@ public class BatchController {
                 if (Check.isNull(group)) {
                     continue;
                 }
-                String unitName = group.getUnitName();
+                String unitNameStr = group.getUnitName();
+                String unitName;
+
+                if (unitNameStr.contains("#")) {
+                    int lastIndexOf = unitNameStr.lastIndexOf("#");
+                    unitName = unitNameStr.substring(0, lastIndexOf);
+                } else {
+                    unitName = unitNameStr;
+                }
                 group.setUnitName(unitName + RandomUtil.verifyCode());
                 JSONObject unitJson = batchService.copyUnit(group, copyToCampaignId);
                 if (!Check.isNull(unitJson)) {
@@ -1601,15 +1612,11 @@ public class BatchController {
             if (Check.isNull(createCount) || createCount == 0) {
                 throw new Exception("请选择迭代次数");
             }
-
             if (createCount == 1) {
                 JSONObject createJson = batchService.createUnit(requestJson);
-
                 if (!Check.isNull(createJson)) {
                     failArr = createJson.getJSONArray("fail");
                 }
-
-
             } else if (createCount > 1) {
                 QueryWrapper<KuaiShouGroup> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("account_id", accountId);
@@ -1618,7 +1625,16 @@ public class BatchController {
                 if (Check.isNull(group)) {
                     throw new Exception("未获取到广告组信息");
                 }
-                String unitName = group.getUnitName();
+                String unitNameStr = group.getUnitName();
+                String unitName;
+
+                if (unitNameStr.contains("#")) {
+                    int lastIndexOf = unitNameStr.lastIndexOf("#");
+                    unitName = unitNameStr.substring(0, lastIndexOf);
+                } else {
+                    unitName = unitNameStr;
+                }
+
                 Integer createType = requestJson.getInteger("createType");
                 if (createType == 1) { // 系统生成
                     for (int i = 0; i < createCount; i++) {

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouImageGetMapper.java

@@ -15,4 +15,6 @@ import java.util.List;
 public interface KuaiShouImageGetMapper extends BaseMapper<KuaiShouImageGet> {
 
     void replaceBatch(@Param(value = "images")List<KuaiShouImageGet>imagesGets);
+
+    String getUrlByCode(String signature);
 }

+ 7 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouImageGetMapper.xml

@@ -36,4 +36,11 @@
         </foreach>
     </insert>
 
+    <select id="getUrlByCode" resultType="java.lang.String">
+        select url from ctop_material_image_info
+        where  code = #{signature}
+        limit 1
+
+    </select>
+
 </mapper>

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouImageGetService.java

@@ -13,4 +13,6 @@ import java.util.List;
  */
 public interface IKuaiShouImageGetService extends IService<KuaiShouImageGet> {
     void replaceBatch(List<KuaiShouImageGet> imageGets);
+
+    String getUrlByCode(String signature);
 }

+ 172 - 13
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/BatchServiceImpl.java

@@ -2,34 +2,52 @@ package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.enums.MaterialEnum;
 import cn.com.ctop.common.module.mapper.UserAllocationMapper;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.common.module.utils.Check;
-import cn.com.ctop.common.module.utils.RandomUtil;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaign;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroupTarget;
+import cn.com.ctop.common.module.service.IMaterialParameterService;
+import cn.com.ctop.common.module.utils.*;
+import cn.com.ctop.kuaishou.modules.batch.entity.*;
 import cn.com.ctop.kuaishou.modules.batch.mapper.*;
 import cn.com.ctop.kuaishou.modules.batch.service.IBatchService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouUpdateService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.ParseException;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Slf4j
 @Service
 public class BatchServiceImpl implements IBatchService {
+
+    @Value("${oss.replace.replace-value}")
+    private String replaceValue;
+    @Value("${oss.replace.replace-old-value}")
+    private String replaceOldValue;
+    @Value("${oss.replace.download}")
+    private String downloadUrl;
+
     @Autowired
     private BatchMapper batchMapper;
     @Autowired
@@ -718,7 +736,6 @@ public class BatchServiceImpl implements IBatchService {
         QueryWrapper<KuaiShouCreative> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("account_id", accountId);
         queryWrapper.eq("unit_id", copyUnitId);
-     //   queryWrapper.eq("status", 52);
         List<KuaiShouCreative> creativeList = creativeMapper.selectList(queryWrapper);
         if (!Check.isNull(creativeList)) {
             for (KuaiShouCreative creative : creativeList) {
@@ -799,6 +816,10 @@ public class BatchServiceImpl implements IBatchService {
      * @param requestJson
      * @return
      */
+    @Autowired
+    private IKuaiShouImageGetService imageGetService;
+
+
     @Override
     public JSONObject createCreative(JSONObject requestJson) throws Exception {
         if (Check.isNull(requestJson)) {
@@ -845,20 +866,41 @@ public class BatchServiceImpl implements IBatchService {
                 if (!Check.isNull(dataJsons)) {
                     String description = dataJson.getString("description");
                     String photo_id = dataJson.getString("photoId");
-                    JSONArray imageTokens = dataJson.getJSONArray("imageTokens");
-                    if (!Check.isNull(imageTokens)) {
-                        for (int j = 0; j < imageTokens.size(); j++) {
-                            JSONObject imageJson = imageTokens.getJSONObject(j);
+                    JSONArray imageArr = dataJson.getJSONArray("imageArr");
+                    if (!Check.isNull(imageArr)) {
+                        for (int j = 0; j < imageArr.size(); j++) {
+                            JSONObject imageJson = imageArr.getJSONObject(j);
                             if (!Check.isNull(imageJson)) {
-                                String image = imageJson.getString("image");
+
                                 String name = imageJson.getString("name");
                                 creativeJson.put("action_bar_text", action_bar_text);
                                 creativeJson.put("description", description);
-                                creativeJson.put("image_token", image);
+
                                 creativeJson.put("creative_name", name);
                                 creativeJson.put("photo_id", photo_id);
                                 creativeJson.put("click_track_url", click_track_url);
 
+                                String imageToken = null;
+                                String signature = imageJson.getString("signature");
+                                QueryWrapper<KuaiShouImageGet> queryWrapper = new QueryWrapper<>();
+                                queryWrapper.eq("account_id", accountId);
+                                queryWrapper.eq("signature", signature);
+                                queryWrapper.last("limit 1");
+                                KuaiShouImageGet imageGet = imageGetService.getOne(queryWrapper);
+                                if (!Check.isNull(imageGet)) {
+                                    imageToken = imageGet.getImageToken();
+                                } else {
+                                    String url = imageGetService.getUrlByCode(signature);
+                                    imageToken = this.kuauiShouImageUpload(url, signature, accountId, oauthToken.getAccessToken());
+                                }
+                                if (Check.isNull(imageToken)) {
+                                    JSONObject failJson = new JSONObject();
+                                    failJson.put("creativeName", name);
+                                    failJson.put("failMessage", "获取图片文件失败");
+                                    failArr.add(failJson);
+                                    continue;
+                                }
+                                creativeJson.put("image_token", imageToken);
                                 Map<String, Object> returnUnitMap = kuaishouInterfaceService.creativeCreate(oauthToken.getAccessToken(), accountId, creativeJson);
                                 if (!Check.isNullMap(returnUnitMap)) {
                                     Integer code = (Integer) returnUnitMap.get("code");
@@ -1142,6 +1184,9 @@ public class BatchServiceImpl implements IBatchService {
      * @param requestJson
      * @return
      */
+    @Autowired
+    private IKuaiShouImageGetService iKuaiShouImageGetService;
+
     @Override
     public JSONObject updateCreative(JSONObject requestJson) throws Exception {
         if (Check.isNull(requestJson)) {
@@ -1220,6 +1265,120 @@ public class BatchServiceImpl implements IBatchService {
         return returnJson;
     }
 
+    @Autowired
+    private IMaterialParameterService materialParameterService;
+
+    public String kuauiShouImageUpload(String url, String signature, Long accountId, String token) {
+        System.err.println(url);
+        System.err.println(signature);
+        try {
+            // String replaceUrl = url.replace(replaceOldValue, replaceValue);
+            // log.info("replaceUrl:{}", replaceUrl);
+          /*  String localUrl = LoadFileUtil.downLoadFromUrl(url, downloadUrl);
+            FileSystemResource resource = new FileSystemResource(new File(localUrl));*/
+            Map<String, String> headerMap = new HashMap<>();
+            headerMap.put("Content-Type", "multipart/form-data");
+            JSONObject requestJson = new JSONObject();
+            //     requestJson.put("file", resource);
+            requestJson.put("signature", signature);
+            requestJson.put("url", url);
+            requestJson.put("type", 2);
+          /*   QueryWrapper<MaterialParameter> parameterQueryWrapper = new QueryWrapper<>();
+               parameterQueryWrapper.eq("material_id", signature);
+               parameterQueryWrapper.orderByDesc("create_time").last("limit 1");
+              MaterialParameter materialParameter = materialParameterService.getOne(parameterQueryWrapper);
+              if (!Check.isNull(materialParameter)) {
+                Integer type = MaterialEnum.getTypeBySize(Integer.valueOf(materialParameter.getWidth()), Integer.valueOf(materialParameter.getHeight()));
+                if (!Check.isNull(type) && type != 0) {
+                    requestJson.put("type", type);
+                }
+            }*/
+
+            requestJson.put("advertiser_id", accountId);
+            headerMap.put("Access-Token", token);
+            String requestUrl = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.IMAGE_UPLOAD;
+            requestJson.put("upload_type", "2");
+            String result = exceptInfoForRestTemplate(requestUrl, requestJson, headerMap);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            System.err.println(resultJson);
+            if (!Check.isNull(resultJson)) {
+                if (resultJson.getInteger("code") == 0) {
+                    JSONObject dataJson = resultJson.getJSONObject("data");
+                    if (!Check.isNull(dataJson)) {
+                        String image_token = dataJson.getString("image_token");
+                        KuaiShouImageGet imageGet = new KuaiShouImageGet();
+                        imageGet.setId(accountId + image_token);
+                        imageGet.setAccountId(accountId);
+                        imageGet.setUrl(dataJson.getString("url"));
+                        imageGet.setWidth(dataJson.getInteger("width"));
+                        imageGet.setHeight(dataJson.getInteger("height"));
+                        imageGet.setSize(dataJson.getInteger("size"));
+                        imageGet.setFormat(dataJson.getString("format"));
+                        Integer type = MaterialEnum.getTypeBySize(dataJson.getInteger("width"), dataJson.getInteger("height"));
+                        if (!Check.isNull(type)) {
+                            imageGet.setMaterialType(type);
+                        }
+                        imageGet.setSignature(signature);
+                        imageGet.setImageToken(image_token);
+                        iKuaiShouImageGetService.saveOrUpdate(imageGet);
+                        return dataJson.getString("image_token");
+
+
+                    }
+
+
+                } else {
+                    log.error("上传图片失败,accountId:{},code:{},data:{}", accountId, signature, resultJson);
+                }
+
+
+            } else {
+                log.error("上传图片,返回结果为空,accountId:{},code:{},data:{}", accountId, signature, resultJson);
+            }
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+
+        }
+
+        return null;
+    }
+
+
+    @Autowired
+    private RestTemplate rest;
+
+    private String exceptInfoForRestTemplate(String url, Map<String, Object> paramMap, Map<String, String> headerMap) throws ParseException {
+        try {
+            MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
+            if (!Check.isNullMap(paramMap)) {
+                for (String key : paramMap.keySet()) {
+                    param.add(key, paramMap.get(key));
+                }
+                HttpHeaders headers = new HttpHeaders();
+                if (!Check.isNullMap(headerMap)) {
+                    for (String key : headerMap.keySet()) {
+                        headers.add(key, headerMap.get(key));
+                    }
+                }
+                HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(param, headers);
+                ResponseEntity<String> responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
+                return responseEntity.getBody();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    public static void main(String[] args) throws IOException {
+        String localUrl = LoadFileUtil.downLoadFromUrl("https://ctop-media.oss-cn-beijing.aliyuncs.com/image/2020-04-29/uuuuu-1588129352054.jpg", PropertiesUtils.getValue("kuaishou_config", "video_sava_path"));
+        String signature = LoadFileUtil.getMD5(localUrl);
+        System.err.println(signature);
+    }
 
 }
 

+ 5 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouImageGetServiceImpl.java

@@ -27,4 +27,9 @@ public class KuaiShouImageGetServiceImpl extends ServiceImpl<KuaiShouImageGetMap
         imageGetMapper.replaceBatch(imageGets);
     }
 
+    @Override
+    public String getUrlByCode(String signature) {
+        return imageGetMapper.getUrlByCode(signature);
+    }
+
 }

+ 12 - 9
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java

@@ -16,6 +16,7 @@ import cn.com.ctop.kuaishou.modules.report.entity.*;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyCampaignMapper;
 import cn.com.ctop.kuaishou.modules.report.service.*;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -262,6 +263,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         param.put("page", page);
         String result = HttpUtils.httpPostRequest(url, param, headers);
         JSONObject resultJson = JSONObject.parseObject(result);
+        System.err.println(resultJson);
         Integer code = resultJson.getInteger("code");
         String message = resultJson.getString("message");
         if (null == code || code != 0) {
@@ -995,7 +997,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                             @Override
                             public void run() {
                                 try {
-                                    Thread.sleep(1 * 1000);
+                                    Thread.sleep(500);
                                     getGroup(accessToken, advertiserId, unitId);
                                 } catch (InterruptedException e) {
                                     e.printStackTrace();
@@ -2265,10 +2267,8 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                 returnMap.put("message", "上传图片失败失败");
                 returnMap.put("success", false);
             }
-            boolean trueOrFalse = LoadFileUtil.delFile(localUrl);
-            if (trueOrFalse) {
-                log.info("删除本地文件成功,accountId:{}", advertiserId);
-            }
+            LoadFileUtil.delFile(localUrl);
+
         } catch (Exception e) {
             log.error("上传图片失败,advertiser_id:{}", advertiserId);
             returnMap.put("code", -1);
@@ -2348,10 +2348,8 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                 returnMap.put("desc", "Interface exception");
                 returnMap.put("success", false);
             }
-            boolean trueOrFalse = LoadFileUtil.delFile(localUrl);
-            if (trueOrFalse) {
-                log.info("删除本地文件成功,accountId:{}", advertiserId);
-            }
+            LoadFileUtil.delFile(localUrl);
+
         } catch (Exception e) {
             log.error("创建应用失败,advertiser_id:{}", advertiserId);
             returnMap.put("code", -1);
@@ -2654,8 +2652,13 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             }
             param.put("page_size", 500);
             param.put("page", page);
+            System.err.println("入参:" + param);
+            System.err.println("头:" + JSON.toJSONString(headers));
+            System.err.println("url:" + url);
+
             String result = HttpUtils.httpPostRequest(url, param, headers);
             JSONObject resultJson = JSONObject.parseObject(result);
+            System.err.println(resultJson);
             Integer code = resultJson.getInteger("code");
             String message = resultJson.getString("message");
             if (null == code || code != 0) {

+ 7 - 4
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/ByteDanceHourlyAccountWarningServiceImpl.java

@@ -57,6 +57,10 @@ public class ByteDanceHourlyAccountWarningServiceImpl implements IByteDanceHourl
             BigDecimal warningAmount = userAllocation.getWarningAmount();
             BigDecimal warningProportion = userAllocation.getWarningProportion();
             BigDecimal nowCost = bytedanceAdvertiserHourlyReportMapper.getCost(accountId, maxHour, statDate);
+
+            BigDecimal cost = nowCost.setScale(2, RoundingMode.HALF_UP);
+
+
             if (maxHour != 0) {
                 if (!Check.isNull(nowCost) && nowCost.compareTo(new BigDecimal(0)) != 0) {
                     BigDecimal lastHourCost = bytedanceAdvertiserHourlyReportMapper.getCost(accountId, maxHour - 1, statDate);
@@ -65,7 +69,7 @@ public class ByteDanceHourlyAccountWarningServiceImpl implements IByteDanceHourl
                             BigDecimal subtract = nowCost.subtract(lastHourCost);
                             BigDecimal divide = nowCost.divide(lastHourCost, 2, RoundingMode.HALF_UP);
                             if (subtract.compareTo(warningAmount) > -1 && divide.compareTo(warningProportion) > -1) {
-                                sendMessage(accountId, userAllocation.getAuthName(), maxHour, nowCost, userAllocation.getProjectId(), userAllocation.getProjectName());
+                                sendMessage(accountId, userAllocation.getAuthName(), maxHour, cost, userAllocation.getProjectId(), userAllocation.getProjectName());
                             }
                         }
                     }
@@ -78,7 +82,7 @@ public class ByteDanceHourlyAccountWarningServiceImpl implements IByteDanceHourl
                     BigDecimal subtract = nowCost.subtract(yesterdayHourCost);
                     BigDecimal divide = nowCost.divide(yesterdayHourCost, 2, RoundingMode.HALF_UP);
                     if (subtract.compareTo(warningAmount) > -1 && divide.compareTo(warningProportion) > -1) {
-                        sendYesterdayMessage(accountId, userAllocation.getAuthName(), maxHour, nowCost, userAllocation.getProjectId(), userAllocation.getProjectName());
+                        sendYesterdayMessage(accountId, userAllocation.getAuthName(), maxHour, cost, userAllocation.getProjectId(), userAllocation.getProjectName());
                     }
                 }
             }
@@ -91,7 +95,6 @@ public class ByteDanceHourlyAccountWarningServiceImpl implements IByteDanceHourl
 
 
     private void sendYesterdayMessage(Long accountId, String authName, Integer maxHour, BigDecimal nowCost, Long projectId, String projectName) {
-
         StringBuilder text = new StringBuilder();
         text.append("较昨日同时段消耗预警").append("<br/>")
                 .append("您的项目:" + projectName + "下的,").append("<br/>")
@@ -128,10 +131,10 @@ public class ByteDanceHourlyAccountWarningServiceImpl implements IByteDanceHourl
             CorpWexinUtils.sendMessage(wexinIds, text.toString());
         }
 
-
     }
 
 
+
     private void sendMessage(Long accountId, String authName, Integer hour, BigDecimal amount, Long projectId, String projectName) {
 
         StringBuilder text = new StringBuilder();