Browse Source

文案库 拒审重提 提交

zhouzeyu@c-top.com.cn 3 years ago
parent
commit
5c1fef8718
13 changed files with 787 additions and 0 deletions
  1. 33 0
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/DocumentLibraryJob.java
  2. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaiShouCreative.java
  3. 38 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/controller/AuditRejectedResubmitController.java
  4. 99 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/controller/DocumentLibraryController.java
  5. 18 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/entity/DocumentLibraryInfo.java
  6. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/AuditRejectedResubmitMapper.java
  7. 27 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/DocumentLibraryMapper.java
  8. 28 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/xml/AuditRejectedResubmitMapper.xml
  9. 66 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/xml/DocumentLibraryMapper.xml
  10. 15 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/AuditRejectedResubmitService.java
  11. 28 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/DocumentLibraryService.java
  12. 201 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/impl/AuditRejectedResubmitServiceImpl.java
  13. 208 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/impl/DocumentLibraryServiceImpl.java

+ 33 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/DocumentLibraryJob.java

@@ -0,0 +1,33 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.kuaishou.modules.document.service.AuditRejectedResubmitService;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class DocumentLibraryJob {
+
+    @Autowired
+    AuditRejectedResubmitService auditRejectedResubmitService;
+
+    /**
+     * 拒审重提
+     *
+     * @param
+     * @return
+     * @throws
+     * @author ZZY
+     */
+    @XxlJob("resubmitJob")
+    public void execute() throws Exception {
+        try {
+            auditRejectedResubmitService.resubmit();
+        } catch (Exception e) {
+            log.info("清理完成完成");
+        }
+
+    }
+}

+ 5 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaiShouCreative.java

@@ -224,4 +224,9 @@ public class KuaiShouCreative {
     private Integer creativeCategory;
     private String creativeTag;
 
+    private Integer submitSize;
+
+    private Integer resubmit;
+
+    private String copyWriterId;
 }

+ 38 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/controller/AuditRejectedResubmitController.java

@@ -0,0 +1,38 @@
+package cn.com.ctop.kuaishou.modules.document.controller;
+
+import cn.com.ctop.kuaishou.modules.document.service.AuditRejectedResubmitService;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @Description: 拒审重提
+ * @Author: zzy
+ * @Date: 2021-09-06
+ * @Version: V1.0
+ */
+@RestController
+@RequestMapping("/rejected/audit")
+public class AuditRejectedResubmitController {
+
+    @Autowired
+    AuditRejectedResubmitService auditRejectedResubmitService;
+
+    /**
+     * 拒审重提
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/resubmit")
+    public Result resubmit() {
+        return auditRejectedResubmitService.resubmit();
+
+    }
+}

+ 99 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/controller/DocumentLibraryController.java

@@ -0,0 +1,99 @@
+package cn.com.ctop.kuaishou.modules.document.controller;
+
+import cn.com.ctop.kuaishou.modules.document.service.DocumentLibraryService;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description: 文档库管理
+ * @Author: zzy
+ * @Date: 2021-09-06
+ * @Version: V1.0
+ */
+@RestController
+@RequestMapping("/document/library")
+public class DocumentLibraryController {
+
+    @Resource
+    DocumentLibraryService documentLibraryService;
+
+    /**
+     * 创建文案
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("createdocument")
+    public Result createdocument(MultipartFile file, @RequestParam("accountIds") List<String> accountIds) {
+        return documentLibraryService.createdocument(file, accountIds);
+
+    }
+    /**
+     * 获取文案库列表
+     *
+     * @param
+     * @return
+     */
+    @GetMapping("getDocumentList")
+    public Result getDocumentList(@RequestParam(value = "accountIds",required = false) List<String> accountIds,@RequestParam(value = "keywords",required = false) String keywords,
+                                  @RequestParam(value = "startDate",required = false) String startDate,@RequestParam(value = "endDate",required = false) String endDate,
+                                  @RequestParam(value = "status",required = false) String status,@RequestParam("pageNumber") int pageNumber,@RequestParam("pageSize") int pageSize) {
+        return documentLibraryService.getDocumentList(accountIds, keywords,startDate,endDate,status,pageNumber,pageSize);
+
+    }
+
+    /**
+     * 编辑文案
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("updateDocument")
+    public Result updateDocument(@RequestParam("accountIds") List<String> accountIds,@RequestParam("copyWriterId") String copyWriterId,@RequestParam("copyWriter") String copyWriter) {
+        return documentLibraryService.updateDocument(accountIds, copyWriterId,copyWriter);
+
+    }
+
+
+    /**
+     * 文案下架
+     *
+     * @param
+     * @return
+     */
+    @GetMapping("updateStatus")
+    public Result updateStatus(@RequestParam("copyWriterId") String copyWriterId,@RequestParam("status") String status) {
+        return documentLibraryService.updateStatus( copyWriterId,status);
+
+    }
+
+    /**
+     * 根据文案查询绑定账户
+     *
+     * @param
+     * @return
+     */
+    @GetMapping("getAcoountId")
+    public Result updateStatus(@RequestParam("copyWriterId") String copyWriterId) {
+        return documentLibraryService.getAcoountId( copyWriterId);
+
+    }
+
+
+    /**
+     * 获取被拒创意
+     *
+     * @param
+     * @return
+     */
+    @GetMapping("getRefusedList")
+    public Result getRefusedList(@RequestParam("copyWriterId") String copyWriterId,@RequestParam("pageNumber") int pageNumber,@RequestParam("pageSize") int pageSize) {
+        return documentLibraryService.getRefusedList(copyWriterId,pageNumber,pageSize);
+
+    }
+
+}

+ 18 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/entity/DocumentLibraryInfo.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.kuaishou.modules.document.entity;
+
+import lombok.Data;
+
+@Data
+public class DocumentLibraryInfo {
+    private  String id;
+    /*文档id*/
+    private  String copyWriterId;
+    /*文案内容*/
+    private  String copyWriter;
+    /*账户id*/
+    private  String accountId;
+    /*0可投放、1已下架*/
+    private  Integer status;
+    /*文案创建时间*/
+    private  String createTime;
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/AuditRejectedResubmitMapper.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.document.mapper;
+
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+@Mapper
+public interface AuditRejectedResubmitMapper {
+    List<KuaiShouCreative> getCreativeList(@Param("status") int status, @Param("date") String date);
+
+    List<String> getRejectThesaurusListByStatus(@Param("status") int status);
+
+    void updateCreativeResubmit(@Param("creativeId") String creativeId, @Param("status") int status);
+
+    void updateCreativeResubmitSize(@Param("creativeId") Long creativeId, @Param("copyWriterId") String copyWriterId);
+
+    void saveCopyWriterCenter(@Param("copyWriterId") String copyWriterId, @Param("creativeId") String creativeId, @Param("date") Date date);
+}

+ 27 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/DocumentLibraryMapper.java

@@ -0,0 +1,27 @@
+package cn.com.ctop.kuaishou.modules.document.mapper;
+
+import cn.com.ctop.kuaishou.modules.document.entity.DocumentLibraryInfo;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface DocumentLibraryMapper {
+
+    void saveDocumentLibrary(DocumentLibraryInfo documentLibraryInfo);
+
+    List<JSONObject> getDocumentLibraryList(@Param("list") List<String> list, @Param("keywords") String keywords, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("status") String status);
+
+    void updateStatus(@Param("copyWriterId") String copyWriterId, @Param("status") String status);
+
+    List<JSONObject> getRefusedList(@Param("copyWriterId") String copyWriterId);
+
+    List<String> getAcoountId(@Param("copyWriterId") String copyWriterId);
+
+    List<String> getDataByAccountId(@Param("accountId") String accountId, @Param("copyWriterId") String copyWriterId);
+
+    List<Map<String,String>> getDocumentByAccountId(@Param("accountId") String accountId, @Param("copyWriterId") String copyWriterId);
+}

+ 28 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/xml/AuditRejectedResubmitMapper.xml

@@ -0,0 +1,28 @@
+<?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.document.mapper.AuditRejectedResubmitMapper">
+
+
+    <select id="getCreativeList" resultType="cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative" >
+        select * from ctop_kuaishou_creative t where t.status=#{status}
+         <if test="date!=null and date !=''">
+             and DATE_FORMAT(t.creative_create_time,'%Y-%m-%d')=#{date}
+         </if>
+    </select>
+
+    <select id="getRejectThesaurusListByStatus" resultType="String">
+        select phrase from ctop_reject_reason_thesaurus where type=#{status}
+    </select>
+
+    <update id="updateCreativeResubmit">
+        update ctop_kuaishou_creative set resubmit=#{status} where creative_id=#{creativeId}
+    </update>
+
+    <update id="updateCreativeResubmitSize">
+        update ctop_kuaishou_creative set submit_size=submit_size+1,copy_writer_id=#{copyWriterId} where creative_id=#{creativeId}
+    </update>
+
+    <insert id="saveCopyWriterCenter">
+        replace into ctop_document_library_center (creative_id,copy_writer_id,create_time) values (#{creativeId},#{copyWriterId},#{date})
+    </insert>
+</mapper>

+ 66 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/mapper/xml/DocumentLibraryMapper.xml

@@ -0,0 +1,66 @@
+<?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.document.mapper.DocumentLibraryMapper">
+
+
+    <insert id="saveDocumentLibrary" parameterType="cn.com.ctop.kuaishou.modules.document.entity.DocumentLibraryInfo">
+        insert into ctop_document_library (copy_writer_id,copy_writer,account_id,status,create_time) values
+        (#{copyWriterId},#{copyWriter},#{accountId},#{status},#{createTime})
+    </insert>
+
+
+    <select id="getDocumentLibraryList" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t.copy_writer_id as 'copyWriterId',t.copy_writer,t.status,COUNT(t1.creative_id) as 'relatedSize',COUNT(if(t2.status= 42 ,TRUE,NULL)) as 'refusedSize'  from
+        (SELECT DISTINCT copy_writer_id,copy_writer,status,create_time from ctop_document_library
+        <where>
+            <if test="keywords !=null and keywords !=''">
+                and copy_writer like CONCAT('%',CONCAT(#{keywords},'%'))
+            </if>
+            <if test="startDate !=null and startDate !='' and endDate !=null and endDate !=''">
+                and create_time BETWEEN  #{startDate} and #{endDate}
+            </if>
+            <if test='status !=null and status !="" and status !=2'>
+                and status =#{status}
+            </if>
+            <if test="list!=null and list.size() > 0">
+                and account_id in
+                <foreach item="item" collection="list" separator="," open="(" close=")" index="">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        ) t
+        LEFT JOIN ctop_document_library_center t1 on t.copy_writer_id=t1.copy_writer_id
+        LEFT JOIN ctop_kuaishou_creative t2 on t1.creative_id=t2.creative_id
+        GROUP BY t.copy_writer_id
+        order by t.create_time desc
+    </select>
+
+
+    <update id="updateStatus" >
+        update  ctop_document_library set status=#{status} where copy_writer_id=#{copyWriterId}
+    </update>
+
+    <select id="getRefusedList" resultType="com.alibaba.fastjson.JSONObject" parameterType="String">
+        SELECT t2.auth_name as 'accountName',t1.unit_id as 'unitId',t1.creative_name as 'creativeName',t1.review_detail as 'reviewDetail' FROM ctop_document_library_center t
+        LEFT JOIN ctop_kuaishou_creative t1 on t.creative_id = t1.creative_id
+        LEFT JOIN ctop_user_allocation t2 on t1.account_id = t2.account_id
+        where t.copy_writer_id =#{copyWriterId} and t1.status=42
+    </select>
+
+    <select id="getAcoountId" parameterType="String" resultType="String">
+        select account_id as 'accountId' from  ctop_document_library where copy_writer_id=#{copyWriterId}
+    </select>
+
+    <select id="getDataByAccountId" resultType="String">
+        select id from ctop_document_library  where account_id=#{accountId} and copy_writer_id=#{copyWriterId}
+     </select>
+
+    <select id="getDocumentByAccountId" resultType="Map">
+        select copy_writer_id as 'copyWriterId',copy_writer as 'copyWriter' from ctop_document_library  where account_id=#{accountId}
+        <if test="copyWriterId!=null and copyWriterId!=''">
+            and copy_writer_id !=#{copyWriterId}
+        </if>
+     </select>
+
+</mapper>

+ 15 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/AuditRejectedResubmitService.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.kuaishou.modules.document.service;
+
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 拒审重提
+ * @Author: zzy
+ * @Date: 2021-09-06
+ * @Version: V1.0
+ */
+public interface AuditRejectedResubmitService {
+
+    Result resubmit();
+
+}

+ 28 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/DocumentLibraryService.java

@@ -0,0 +1,28 @@
+package cn.com.ctop.kuaishou.modules.document.service;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @Description: 文档库管理
+ * @Author: zzy
+ * @Date: 2021-09-06
+ * @Version: V1.0
+ */
+public interface DocumentLibraryService {
+
+    Result createdocument(MultipartFile file, @Param("accountIds") List<String> accountIds);
+
+    Result getDocumentList(List<String> accountIds, String keywords, String startDate, String endDate, String status, int pageNumber, int pageSize);
+
+    Result updateDocument(List<String> accountIds, String copyWriterId, String copyWriter);
+
+    Result updateStatus(String copyWriterId, String status);
+
+    Result getRefusedList(String copyWriterId, int pageNumber, int pageSize);
+
+    Result getAcoountId(String copyWriterId);
+}

+ 201 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/impl/AuditRejectedResubmitServiceImpl.java

@@ -0,0 +1,201 @@
+package cn.com.ctop.kuaishou.modules.document.service.impl;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.service.IMaterialCutFrameService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouMaterialUploadService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouUpdateService;
+import cn.com.ctop.kuaishou.modules.document.mapper.AuditRejectedResubmitMapper;
+import cn.com.ctop.kuaishou.modules.document.mapper.DocumentLibraryMapper;
+import cn.com.ctop.kuaishou.modules.document.service.AuditRejectedResubmitService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @Description: 拒审重提
+ * @Author: zzy
+ * @Date: 2021-09-06
+ * @Version: V1.0
+ */
+@Service
+@Slf4j
+public class AuditRejectedResubmitServiceImpl implements AuditRejectedResubmitService {
+
+    @Autowired
+    AuditRejectedResubmitMapper auditRejectedResubmitMapper;
+
+    @Autowired
+    private IMaterialCutFrameService cutFrameService;
+
+    @Autowired
+    private IKuaiShouImageGetService imageGetService;
+
+    @Autowired
+    private IKuaiShouMaterialUploadService uploadService;
+
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+
+    @Autowired
+    private IKuaiShouUpdateService updateService;
+
+    @Autowired
+    private DocumentLibraryMapper documentLibraryMapper;
+
+    /**
+     * 重新提交创意
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result resubmit() {
+        Result result = new Result();
+        List<KuaiShouCreative> creativeList = new ArrayList<>();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.roll(Calendar.DAY_OF_YEAR, -1);
+        try {
+            log.info(formatter.format(calendar.getTime()));
+            creativeList = auditRejectedResubmitMapper.getCreativeList(42, formatter.format(calendar.getTime()));
+            //可重提词组
+            List<String> submit = auditRejectedResubmitMapper.getRejectThesaurusListByStatus(0);
+            //不可重提词组
+            List<String> resubmit = auditRejectedResubmitMapper.getRejectThesaurusListByStatus(1);
+            creativeList.stream().forEach(obj -> {
+                String reviewDetail = obj.getReviewDetail();
+                List<String> strings = Arrays.asList(reviewDetail.split(";"));
+                Boolean flag = isSubmit(strings, resubmit);
+                if (!flag) {
+                    //不可重提
+                    log.info("修改为不可重提:{}", reviewDetail);
+                    auditRejectedResubmitMapper.updateCreativeResubmit(String.valueOf(obj.getCreativeId()), 1);
+                } else {
+                    Boolean flag2 = isNotSubmit(strings, submit);
+                    if (flag2) {
+                        //重提
+                        log.info("进行重提:{}", reviewDetail);
+                        Integer submit_size = obj.getSubmitSize();
+                        if (submit_size < 2) {
+                            JSONObject updateJson = new JSONObject();
+                            updateJson.put("creativeId", obj.getCreativeId());
+                            //更换封面
+                            CtopOauthToken oauthToken = tokenService.getTokenByAccountId(obj.getAccountId());
+                            JSONObject cutJson = cutFrameService.getCutFrameByVideoMd5(obj.getPhotoId(), obj.getImageToken());
+                            if (!Check.isNull(cutJson)) {
+                                String signature = cutJson.getString("signature");
+                                String url = cutJson.getString("url");
+                                String imageToken = getImageToken(signature, obj.getAccountId(), oauthToken.getAccessToken(), url);
+                                if (!Check.isNull(imageToken)) {
+                                    updateJson.put("imageToken", imageToken);
+                                }
+                            }
+                            //更换文案
+                            List<Map<String, String>> documentByAccountId = documentLibraryMapper.getDocumentByAccountId(String.valueOf(obj.getAccountId()), obj.getCopyWriterId());
+                            if (!documentByAccountId.isEmpty()) {
+                                updateJson.put("description", documentByAccountId.get(0).get("copyWriter"));
+                            }
+                            Map<String, Object> creativeMap = updateService.updateCreative(oauthToken.getAccessToken(), obj.getAccountId(), updateJson);
+                            Integer code = (Integer) creativeMap.get("code");
+                            if (code == 0) {
+                                //修改重提次数和文案id
+                                auditRejectedResubmitMapper.updateCreativeResubmitSize(obj.getCreativeId(), documentByAccountId.get(0).get("copyWriterId"));
+                                //插入文案关联创意表信息
+                                auditRejectedResubmitMapper.saveCopyWriterCenter(documentByAccountId.get(0).get("copyWriterId"), String.valueOf(obj.getCreativeId()), new Date());
+                                log.info("拒审重提成功,accountId:{},creativeId:{}", obj.getAccountId(), obj.getCreativeId());
+                            } else {
+                                log.info("拒审重提失败,accountId:{},creativeId:{}", obj.getAccountId(), obj.getCreativeId());
+                            }
+                        } else {
+                            log.info("重提次数已达上限:accountId:{},creativeId:{}", obj.getAccountId(), obj.getCreativeId());
+                        }
+
+                    } else {
+                        //手动重提
+                        log.info("手动重提:{}", reviewDetail);
+                    }
+                }
+            });
+            result.setSuccess(true);
+            result.success("重提创意成功");
+        } catch (Exception e) {
+            log.info("重提创意错误:{}", e.toString());
+            result.error500("重提创意错误");
+        }
+
+        return result;
+    }
+
+    /**
+     * 判断不可重提
+     *
+     * @param
+     * @return
+     */
+    public Boolean isSubmit(List<String> reviewDetail, List<String> thesaurusList) {
+        Boolean flag = true;
+        if (reviewDetail != null && thesaurusList != null) {
+            for (String review : reviewDetail) {
+                for (String thesaurus : thesaurusList) {
+                    if (review.contains(thesaurus)) {
+                        flag = false;
+                        return flag;
+                    }
+                }
+            }
+        }
+        return flag;
+    }
+
+    /**
+     * 判断可重提
+     *
+     * @param
+     * @return
+     */
+    public Boolean isNotSubmit(List<String> reviewDetail, List<String> thesaurusList) {
+        if (reviewDetail != null && thesaurusList != null) {
+            for (String review : reviewDetail) {
+                Boolean flag = false;
+                for (String thesaurus : thesaurusList) {
+                    if (review.contains(thesaurus)) {
+                        flag = true;
+                    }
+                }
+                if (!flag) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+
+    private String getImageToken(String md5, Long accountId, String accessToken, String url) {
+        String imageToken = null;
+        QueryWrapper<KuaiShouImageGet> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account_id", accountId);
+        queryWrapper.eq("signature", md5);
+        queryWrapper.last("limit 1");
+        KuaiShouImageGet imageGet = imageGetService.getOne(queryWrapper);
+        if (!Check.isNull(imageGet)) {
+            imageToken = imageGet.getImageToken();
+        } else {
+            imageToken = uploadService.kuauiShouImageUpload(url, md5, accountId, accessToken);
+        }
+        return imageToken;
+
+    }
+}

+ 208 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/document/service/impl/DocumentLibraryServiceImpl.java

@@ -0,0 +1,208 @@
+package cn.com.ctop.kuaishou.modules.document.service.impl;
+
+import cn.com.ctop.kuaishou.modules.document.entity.DocumentLibraryInfo;
+import cn.com.ctop.kuaishou.modules.document.mapper.DocumentLibraryMapper;
+import cn.com.ctop.kuaishou.modules.document.service.DocumentLibraryService;
+import cn.com.ctop.kuaishou.modules.utils.ExcelUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @Description: 文档库管理
+ * @Author: zzy
+ * @Date: 2021-09-06
+ * @Version: V1.0
+ */
+@Service
+@Slf4j
+public class DocumentLibraryServiceImpl implements DocumentLibraryService {
+
+    @Resource
+    DocumentLibraryMapper documentLibraryMapper;
+
+    /**
+     * 创建文案
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result createdocument(MultipartFile file, List<String> accountIds) {
+        Result result = new Result();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<String> documentList = new ArrayList<>();
+        try {
+            documentList = ExcelUtil.readExcel(file);
+        } catch (Exception e) {
+            log.info("读取excel错误:{}", e.toString());
+        }
+
+        try {
+            if (accountIds != null && !documentList.isEmpty() && !accountIds.isEmpty()) {
+
+                for (String docu : documentList) {
+                    DocumentLibraryInfo documentLibraryInfo = new DocumentLibraryInfo();
+                    documentLibraryInfo.setCopyWriter(docu);
+                    documentLibraryInfo.setCopyWriterId(UUID.randomUUID().toString());
+                    documentLibraryInfo.setCreateTime(formatter.format(new Date()));
+                    documentLibraryInfo.setStatus(0);
+                    if (docu != null && docu != "" && docu.length() <= 30) {
+                        for (String accountId : accountIds) {
+                            documentLibraryInfo.setAccountId(accountId);
+                            documentLibraryMapper.saveDocumentLibrary(documentLibraryInfo);
+                        }
+                    }
+
+
+                }
+            }
+            result.success("添加成功");
+            return result;
+        } catch (Exception e) {
+            log.info("添加文案失败:{}", e.toString());
+            result.error500("添加失败");
+            return result;
+        }
+
+
+    }
+
+    /**
+     * 获取文案库列表
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result getDocumentList(List<String> accountIds, String keywords, String startDate, String endDate, String status, int pageNumber, int pageSize) {
+        Result result = new Result();
+        List<JSONObject> documentLibraryList = new ArrayList<>();
+        try {
+            if (startDate != null && startDate != "" && endDate != null && endDate != "") {
+                startDate = startDate + " 00:00:00";
+                endDate = endDate + " 23:59:59";
+            }
+            PageHelper.startPage(pageNumber, pageSize);
+            documentLibraryList = documentLibraryMapper.getDocumentLibraryList(accountIds, keywords, startDate, endDate, status);
+            PageInfo pageInfo = new PageInfo(documentLibraryList);
+            result.setSuccess(true);
+            result.setResult(pageInfo);
+        } catch (Exception e) {
+            result.error500("查询数据错误");
+            log.info("查询数据错误:{}", e.toString());
+        }
+
+        return result;
+    }
+
+    /**
+     * 编辑文案
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result updateDocument(List<String> accountIds, String copyWriterId, String copyWriter) {
+        Result result = new Result();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            if (accountIds != null && !accountIds.isEmpty()) {
+                DocumentLibraryInfo documentLibraryInfo = new DocumentLibraryInfo();
+                documentLibraryInfo.setCopyWriter(copyWriter);
+                documentLibraryInfo.setCopyWriterId(copyWriterId);
+                documentLibraryInfo.setCreateTime(formatter.format(new Date()));
+                documentLibraryInfo.setStatus(0);
+                for (String accountId : accountIds) {
+                    documentLibraryInfo.setAccountId(accountId);
+                    List<String> dataByAccountId = documentLibraryMapper.getDataByAccountId(accountId, copyWriterId);
+                    if (dataByAccountId == null || dataByAccountId.size() == 0) {
+                        documentLibraryMapper.saveDocumentLibrary(documentLibraryInfo);
+                    }
+
+                }
+            }
+            result.success("添加成功");
+        } catch (Exception e) {
+            log.info("添加文案失败:{}", e.toString());
+            result.error500("添加失败");
+            return result;
+        }
+
+        return result;
+    }
+
+    /**
+     * 文案下架
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result updateStatus(String copyWriterId, String status) {
+        Result result = new Result();
+        try {
+            documentLibraryMapper.updateStatus(copyWriterId, status);
+            result.success("下架成功");
+        } catch (Exception e) {
+            log.info("下架失败:{}", e.toString());
+            result.error500("下架失败");
+        }
+        return result;
+    }
+
+    /**
+     * 获取被拒创意
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result getRefusedList(String copyWriterId, int pageNumber, int pageSize) {
+        Result result = new Result();
+        List<JSONObject> documentLibraryList = new ArrayList<>();
+        try {
+            PageHelper.startPage(pageNumber, pageSize);
+            documentLibraryList = documentLibraryMapper.getRefusedList(copyWriterId);
+            PageInfo pageInfo = new PageInfo(documentLibraryList);
+            result.setSuccess(true);
+            result.setResult(pageInfo);
+        } catch (Exception e) {
+            result.error500("查询数据错误");
+            log.info("查询数据错误:{}", e.toString());
+        }
+        return result;
+    }
+
+    /**
+     * 根据文案查询绑定账户
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result getAcoountId(String copyWriterId) {
+        Result result = new Result();
+        List<String> documentLibraryList = new ArrayList<>();
+        try {
+            documentLibraryList = documentLibraryMapper.getAcoountId(copyWriterId);
+            result.setSuccess(true);
+            result.setResult(documentLibraryList);
+        } catch (Exception e) {
+            result.error500("查询数据错误");
+            log.info("查询数据错误:{}", e.toString());
+        }
+        return result;
+    }
+}