Explorar o código

账户清理提交

zhouzeyu@c-top.com.cn %!s(int64=3) %!d(string=hai) anos
pai
achega
d2f80dba89

+ 139 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/controller/KuaiShouAccountCleanController.java

@@ -0,0 +1,139 @@
+package cn.com.ctop.kuaishou.modules.clean.controller;
+
+import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo;
+import cn.com.ctop.kuaishou.modules.clean.service.KuaiShouAccountCleanService;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * @Description: 快手-账户清理
+ * @Author: zzy
+ * @Date: 2021-07-20
+ * @Version: V1.0
+ */
+@RestController
+@RequestMapping("/accountClean")
+public class KuaiShouAccountCleanController {
+
+    @Resource
+    KuaiShouAccountCleanService kuaiShouAccountCleanService;
+
+    /**
+     * 创建规则模板
+     *
+     * @param kuaiShouAccountCleanTemplateInfo
+     * @return
+     */
+    @PostMapping("/createTemplate")
+    public Result createCleanTemplate(@RequestBody KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo){
+        return   kuaiShouAccountCleanService.createCleanTemplate(kuaiShouAccountCleanTemplateInfo);
+    }
+
+    /**
+     * 查询模板列表
+     *
+     * @param templateId 模板id  createUser创建人  userId当前登录人id
+     * @return
+     */
+    @GetMapping("/getTemplateList")
+    public Result getTemplateList(@Param("templateId")String templateId,@Param("createUser")String createUser,@Param("userId")String userId,
+                                  @Param("pageNum")String pageNum,@Param("pageSize")String pageSize  ){
+        return   kuaiShouAccountCleanService.getTemplateList(templateId,createUser,userId,pageNum,pageSize);
+    }
+
+    /**
+     * 预览模板
+     *
+     * @param templateId 模板id
+     * @return
+     */
+    @GetMapping("/previewTemplate")
+    public Result previewTemplate(@Param("templateId")String templateId){
+        return   kuaiShouAccountCleanService.previewTemplate(templateId);
+    }
+
+    /**
+     * 推送模板
+     *
+     * @param templateId 模板id,accountId 账户id
+     * @return
+     */
+    @GetMapping("/pushTemplate")
+    public Result pushTemplate(@Param("templateId")String templateId,@Param("accountId")String accountId){
+        return   kuaiShouAccountCleanService.pushTemplate(templateId,accountId);
+    }
+
+    /**
+     * 修改模板
+     *
+     * @param kuaiShouAccountCleanTemplateInfo
+     * @return
+     */
+    @PostMapping("/updateTemplate")
+    public Result updateTemplate(@RequestBody KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo){
+        return   kuaiShouAccountCleanService.updateTemplate(kuaiShouAccountCleanTemplateInfo);
+    }
+
+
+    /**
+     * 查询个人清理模板列表
+     *
+     * @param accountId  账户id  userName运营名称  userId当前登录人id
+     * @return
+     */
+    @GetMapping("/getMyselfTemplateList")
+    public Result getMyselfTemplateList(@Param("accountId")String accountId,@Param("userName")String userName,@Param("userId")String userId,
+                                  @Param("pageNum")String pageNum,@Param("pageSize")String pageSize  ){
+        return   kuaiShouAccountCleanService.getMyselfTemplateList(accountId,userName,userId,pageNum,pageSize);
+    }
+
+    /**
+     * 开启/暂停模板
+     *
+     * @param templateId 模板id   status状态  0-开始   1-暂停
+     * @return
+     */
+    @GetMapping("/updateTemplateStatus")
+    public Result updateTemplateStatus(@Param("templateId")String templateId,@Param("status")String status){
+        return   kuaiShouAccountCleanService.updateTemplateStatus(templateId,status);
+    }
+
+
+    /**
+     * 解除模板绑定
+     *
+     * @param templateId 模板id,accountId 账户id
+     * @return
+     */
+    @GetMapping("/removeBinding")
+    public Result removeBinding(@Param("templateId")String templateId,@Param("accountId")String accountId){
+        return   kuaiShouAccountCleanService.removeBinding(templateId,accountId);
+    }
+
+
+    /**
+     * 查询清理记录
+     *
+     * @param userName 运营名称  accountId 账户id
+     * @return
+     */
+    @GetMapping("/getCleanUpLog")
+    public Result getCleanUpLog(@Param("userName")String userName,@Param("accountId")String accountId,
+                                  @Param("pageNum")String pageNum,@Param("pageSize")String pageSize  ){
+        return   kuaiShouAccountCleanService.getCleanUpLog(userName,accountId,pageNum,pageSize);
+    }
+
+    /**
+     * 查询清理记录
+     *
+     * @param
+     * @return
+     */
+    @GetMapping("/cleanAccount")
+    public Result cleanAccount(){
+        return   kuaiShouAccountCleanService.cleanAccount();
+    }
+}

+ 19 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/entity/KuaiShouAccountCleanLogInfo.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.kuaishou.modules.clean.entity;
+
+import lombok.Data;
+
+@Data
+public class KuaiShouAccountCleanLogInfo {
+    //主键
+    private  String id;
+    //账户id
+    private  String accountId;
+    //运营
+    private  String userName;
+    //操作类型  1-投放、2-暂停、3-删除
+    private  String operationType;
+    //创建时间
+    private  String createTime;
+    //执行信息
+    private  String executiveInformation;
+}

+ 59 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/entity/KuaiShouAccountCleanTemplateInfo.java

@@ -0,0 +1,59 @@
+package cn.com.ctop.kuaishou.modules.clean.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class KuaiShouAccountCleanTemplateInfo {
+    //id
+    private String id;
+    //模板名称
+    private String templateName;
+
+    //应用媒体
+    private String appliedMedia;
+    //清理时间范围  1   3   7  15
+    private String cleanTime;
+    //优化目标
+    // activation:激活数 bclick:行为数  formSize :表单数 pay:付费  roi:首日roi
+    // evocativeApplication:唤起应用  effectiveClues:有效线索 creditApp:授信-APP creditGrant:授信-落地页
+    // finishedPieceApp:完件数-APP  finishedPieceGrant:完件数-落地页   ordersSubmitted:订单提交 registered:注册
+    private String optimizationObjective;
+
+    //累计消耗
+    private BigDecimal charge;
+
+    //累计转化数
+    private String conversion;
+
+    //推广组状态 1 - 投放中;2 - 已暂停;3 - 不限
+    private String promotionGroupStatus;
+
+    //执行操作    1-投放、2-暂停、3-删除
+    private String performOperations;
+
+    //模板状态 0-运行  1-暂停
+    private String status;
+
+    //创建人
+    private String createUser;
+
+    //创建人id
+    private String createId;
+
+    //创建时间
+    private String createTime;
+
+    //账户id
+    private String accountId;
+
+    //运营名称
+    private String userName;
+
+    //账户状态 0 启动 1 禁用
+    private String accountStatus;
+
+    //账户名称
+    private String accountName;
+}

+ 50 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/mapper/KuaishouAccountCleanTemplateMapper.java

@@ -0,0 +1,50 @@
+package cn.com.ctop.kuaishou.modules.clean.mapper;
+
+import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanLogInfo;
+import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 快手-账户清理
+ * @Author: zzy
+ * @Date: 2021-07-20
+ * @Version: V1.0
+ */
+@Mapper
+public interface KuaishouAccountCleanTemplateMapper {
+    //创建模板
+     void saveAccountCleanTemplate(KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo);
+    //根据id 创建人查询模板列表
+    List<KuaiShouAccountCleanTemplateInfo> getTemplateList(@Param("templateId")String templateId, @Param("createUser")String createUser, @Param("createId")String createId);
+    //根据id查询数据
+    KuaiShouAccountCleanTemplateInfo getInfoById(@Param("templateId")String templateId);
+    //查询账户关联模板个数
+    int getAccountAssociatedSize(@Param("accountId")String accountId);
+    //推送模板保存关联关系
+    void savePushTemplateAssociated(@Param("templateId")String templateId,@Param("accountId")String accountId,@Param("createTime")String createTime);
+    //修改模板
+    void updateTemplate(KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo);
+    //根据模板id修改模板状态
+    void updateTemplateStatus(@Param("templateId")String templateId,@Param("status")String status);
+    //根据id和accountId 删除关联表信息
+    void removeBinding(@Param("templateId")String templateId,@Param("accountId")String accountId);
+    //查询清理日志记录
+    List<KuaiShouAccountCleanLogInfo> getCleanUpLog(@Param("userName")String userName, @Param("accountId")String accountId);
+
+    //根据账户id 运营名称 查询个人模板信息
+    List<KuaiShouAccountCleanTemplateInfo> getMyselfTemplateList(@Param("accountId")String accountId, @Param("userName")String userName, @Param("createId")String createId);
+
+    //查询所有启用的模板
+    List<KuaiShouAccountCleanTemplateInfo> getTemplateListBystatus();
+    //根据规则模板查询相应组信息
+    List<String> getGroupMessage(@Param("template")KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo,@Param("list")List list, @Param("startDate")String startDate);
+    //保存操作日志
+    void saveCleamLog(KuaiShouAccountCleanLogInfo kuaiShouAccountCleanLogInfo);
+
+    Map<String,String> getUserNameByAccountId(@Param("accountId")String accountId);
+
+}

+ 210 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/mapper/xml/KuaishouAccountCleanTemplateMapper.xml

@@ -0,0 +1,210 @@
+<?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.clean.mapper.KuaishouAccountCleanTemplateMapper">
+
+  <resultMap id="templateResultMap" type="cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo">
+    <id column="id" property="id"/>
+    <result column="template_name" property="templateName"/>
+    <result column="applied_media" property="appliedMedia"/>
+    <result column="clean_time" property="cleanTime"/>
+    <result column="optimization_objective" property="optimizationObjective"/>
+    <result column="charge" property="charge"/>
+    <result column="conversion" property="conversion"/>
+    <result column="promotion_group_status" property="promotionGroupStatus"/>
+    <result column="perform_operations" property="performOperations"/>
+    <result column="status" property="status"/>
+    <result column="create_user" property="createUser"/>
+    <result column="create_id" property="createId"/>
+    <result column="create_time" property="createTime"/>
+    <result column="account_id" property="accountId"/>
+    <result column="user_name" property="userName"/>
+    <result column="account_status" property="accountStatus"/>
+    <result column="account_name" property="accountName"/>
+  </resultMap>
+
+  <resultMap id="logResultMap" type="cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanLogInfo">
+    <id column="id" property="id"/>
+    <result column="account_id" property="accountId"/>
+    <result column="user_name" property="userName"/>
+    <result column="operation_type" property="operationType"/>
+    <result column="create_time" property="createTime"/>
+    <result column="executive_information" property="executiveInformation"/>
+  </resultMap>
+  <!--保存清理模板-->
+  <insert id="saveAccountCleanTemplate" parameterType="cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo">
+    insert into ctop_kuaishou_account_clean_template values (#{id},#{templateName},#{appliedMedia},#{cleanTime},#{optimizationObjective},#{charge},
+    #{conversion},#{performOperations},#{promotionGroupStatus},#{status},#{createUser},#{createId},#{createTime})
+  </insert>
+
+  <!--根据创建人查询模板-->
+  <select id="getTemplateList" resultMap="templateResultMap" >
+    select t.id,t.template_name,t.applied_media,t.create_user  from ctop_kuaishou_account_clean_template t
+    <where>
+      <if test="templateId!=null and templateId!=''">
+         t.id=#{templateId}
+      </if >
+
+      <if test="createUser!=null and createUser!=''">
+        and t.createUser=#{createUser}
+      </if >
+      <if test="createId!=null and createId!=''">
+        and t.create_id=#{createId}
+      </if >
+    </where>
+  </select>
+
+   <select id="getInfoById" parameterType="String" resultMap="templateResultMap">
+      select  t.id,t.template_name,t.clean_time,t.optimization_objective,t.charge,t.conversion,t.promotion_group_status,t.perform_operations  from ctop_kuaishou_account_clean_template t
+      where t.id=#{templateId}
+   </select>
+
+  <select id="getAccountAssociatedSize" resultType="int">
+        select count(*) from ctop_kuaishou_account_clean_center where account_id=#{accountId}
+  </select>
+
+  <insert id="savePushTemplateAssociated" >
+    insert into ctop_kuaishou_account_clean_center (account_id,template_id,create_time)values (#{accountId},#{templateId},#{createTime})
+  </insert>
+
+  <update id="updateTemplate" >
+    update ctop_kuaishou_account_clean_template set
+    template_name=#{templateName},clean_time=#{cleanTime},
+    optimization_objective=#{optimizationObjective},charge=#{charge},
+    conversion=#{conversion},promotion_group_status=#{promotionGroupStatus},
+    perform_operations=#{performOperations}
+    where id=#{id}
+  </update>
+  <update id="updateTemplateStatus" >
+    update ctop_kuaishou_account_clean_template set status=#{status}
+    where id=#{templateId}
+  </update>
+
+  <delete id="removeBinding">
+    delete  from ctop_kuaishou_account_clean_center where account_id=#{accountId} and template_id=#{templateId}
+  </delete>
+
+  <select id="getCleanUpLog" parameterType="cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanLogInfo" resultMap="logResultMap">
+    select *  from  ctop_kuaishou_account_clean_logs t
+    <where>
+      <if test="accountId!=null and accountId!=''">
+        t.account_id=#{accountId}
+      </if >
+
+      <if test="userName!=null and userName!=''">
+        and t.user_name like concat('%',#{userName},'%')
+      </if >
+    </where>
+  </select>
+
+
+
+
+  <!--根据账户id 运营名称 查询个人模板信息-->
+  <select id="getMyselfTemplateList" resultMap="templateResultMap" >
+    select t.status,t.id,t.template_name,t.applied_media,t2.account_id,t3.auth_name as account_name,t3.account_status,t3.user_name from ctop_kuaishou_account_clean_template t
+    LEFT JOIN ctop_kuaishou_account_clean_center t2 on t.id=t2.template_id
+    LEFT JOIN ctop_user_allocation t3 on t2.account_id=t3.account_id
+    <where>
+      <if test="accountId!=null and accountId!=''">
+        t2.account_id=#{accountId}
+      </if >
+
+      <if test="userName!=null and userName!=''">
+        and t3.user_name like concat('%',#{userName},'%')
+      </if >
+      <if test="createId!=null and createId!=''">
+        and t.create_id=#{createId}
+      </if >
+    </where>
+  </select>
+
+  <select id="getTemplateListBystatus" resultMap="templateResultMap">
+       select  t.id,t.template_name,t.clean_time,t.optimization_objective,t.charge,t.conversion,t.promotion_group_status,t.perform_operations,t2.account_id  from ctop_kuaishou_account_clean_template t
+       left join  ctop_kuaishou_account_clean_center t2 on t.id=t2.template_id where t.status='0'
+  </select>
+
+  <select id="getGroupMessage" resultType="java.lang.String">
+
+      SELECT t.unit_id from ctop_kuaishou_group  t  LEFT JOIN ctop_kuaishou_report_daily_group  t2
+        on t.unit_id=t2.unit_id
+        where t.account_id=#{template.accountId}
+        and t.group_create_time &lt;= #{startDate}
+        and t2.stat_date &gt;= #{startDate}
+       <if test="template.promotionGroupStatus!=null and template.promotionGroupStatus!='' and template.promotionGroupStatus!='3'">
+          and t.put_status=#{template.promotionGroupStatus}
+       </if >
+         group by t.unit_id
+        having sum(t2.charge) &lt;= #{template.charge}
+      <foreach item="item" index="index" collection="list"  open="and (" separator="or" close=")">
+
+          <if test='item=="activation"'>
+              /* 激活数*/
+              sum(t2.activation) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="bclick"'>
+              /*行为数*/
+              sum(t2.bclick) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="formSize"'>
+              /*表单数*/
+              sum(t2.form_count) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="pay"'>
+              /*付费数*/
+              sum(t2.event_pay) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="roi"'>
+              /*首日roi*/
+              sum(t2.event_pay_first_day_roi) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="evocativeApplication"'>
+              /*唤起应用*/
+              sum(t2.event_app_invoked) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="effectiveClues"'>
+              /*落地页有效线索*/
+              sum(t2.event_valid_clues) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="creditApp"'>
+              /*授信数APP*/
+              sum(t2.event_credit_grant_app) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="creditGrant"'>
+              /*落地页授信数*/
+              sum(t2.event_credit_grant_landing_page) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="finishedPieceApp"'>
+              /*完件数App*/
+              sum(t2.event_jin_jian_app) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="finishedPieceGrant"'>
+              /*落地页完件数*/
+              sum(t2.event_jin_jian_landing_page) &lt; #{template.conversion}
+          </if >
+
+          <if test='item=="registered"'>
+              /*注册*/
+              sum(t2.event_register) &lt; #{template.conversion}
+          </if >
+      </foreach>
+
+  </select>
+
+  <select id="getUserNameByAccountId" resultType="Map">
+       select t.user_name as userName,t.auth_name as authName from ctop_user_allocation t where t.account_id=#{accountId}
+  </select>
+
+  <insert id="saveCleamLog" >
+    insert into ctop_kuaishou_account_clean_logs (account_id,user_name,operation_type,create_time,executive_information) values (#{accountId},#{userName},#{operationType},#{createTime},#{executiveInformation})
+  </insert>
+</mapper>

+ 84 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/service/KuaiShouAccountCleanService.java

@@ -0,0 +1,84 @@
+package cn.com.ctop.kuaishou.modules.clean.service;
+
+import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo;
+import org.jeecg.common.api.vo.Result;
+/**
+ * @Description: 快手-账户清理
+ * @Author: zzy
+ * @Date: 2021-07-20
+ * @Version: V1.0
+ */
+public interface KuaiShouAccountCleanService {
+    /**
+     * 创建规则模板
+     *
+     * @param kuaiShouAccountCleanTemplateInfo
+     * @return
+     */
+    Result createCleanTemplate(KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo);
+    /**
+     * 查询模板列表
+     *
+     * @param templateId 模板id  createUser创建人
+     * @return
+     */
+    Result getTemplateList(String templateId, String createUser,String userId,String pageNum, String pageSize);
+    /**
+     * 预览模板
+     *
+     * @param templateId 模板id
+     * @return
+     */
+    Result previewTemplate(String templateId);
+    /**
+     * 推送模板
+     *
+     * @param templateId 模板id,accountId 账户id
+     * @return
+     */
+    Result pushTemplate(String templateId, String accountId);
+    /**
+     * 修改模板
+     *
+     * @param kuaiShouAccountCleanTemplateInfo
+     * @return
+     */
+    Result updateTemplate(KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo);
+    /**
+     * 开启/暂停模板
+     *
+     * @param templateId 模板id   status状态  0-开始   1-暂停
+     * @return
+     */
+    Result updateTemplateStatus(String templateId, String status);
+    /**
+     * 解除模板绑定
+     *
+     * @param templateId 模板id,accountId 账户id
+     * @return
+     */
+    Result removeBinding(String templateId, String accountId);
+    /**
+     * 查询清理记录
+     *
+     * @param userName 运营名称  accountId 账户id
+     * @return
+     */
+    Result getCleanUpLog(String userName, String accountId, String pageNum, String pageSize);
+    /**
+     * 查询个人清理模板列表
+     *
+     * @param accountId  账户id  userName运营名称  userId当前登录人id
+     * @return
+     */
+    Result getMyselfTemplateList(String accountId, String userName, String userId, String pageNum, String pageSize);
+
+
+    /**
+     * 根据清理模板清理账户
+     *
+     * @param
+     * @return
+     */
+    Result cleanAccount();
+}

+ 359 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/clean/service/impl/KuaiShouAccountCleanServiceImpl.java

@@ -0,0 +1,359 @@
+package cn.com.ctop.kuaishou.modules.clean.service.impl;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
+import cn.com.ctop.common.module.service.ISysRoleExtService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouUpdateService;
+import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanLogInfo;
+import cn.com.ctop.kuaishou.modules.clean.entity.KuaiShouAccountCleanTemplateInfo;
+import cn.com.ctop.kuaishou.modules.clean.mapper.KuaishouAccountCleanTemplateMapper;
+import cn.com.ctop.kuaishou.modules.clean.service.KuaiShouAccountCleanService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jsoup.helper.StringUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * @Description: 快手-账户清理
+ * @Author: zzy
+ * @Date: 2021-07-20
+ * @Version: V1.0
+ */
+@Service
+@Slf4j
+public class KuaiShouAccountCleanServiceImpl implements KuaiShouAccountCleanService {
+    @Resource
+    KuaishouAccountCleanTemplateMapper kuaishouAccountCleanTemplateMapper;
+
+    @Resource
+    private ISysRoleExtService sysRoleService;
+
+    @Resource
+    CtopOauthTokenMapper ctopOauthTokenMapper;
+
+    @Resource
+    IKuaiShouUpdateService iKuaiShouUpdateService;
+
+    /**
+     * 创建规则模板
+     *
+     * @param kuaiShouAccountCleanTemplateInfo
+     * @return
+     */
+    @Override
+    public Result createCleanTemplate(KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo) {
+        Result result = new Result();
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
+        Random rand = new Random();
+        int id = 100000 + rand.nextInt(99900000);
+        //设置6-8位数字
+        kuaiShouAccountCleanTemplateInfo.setId(String.valueOf(id));
+        //设置应用媒体 固定写死
+        kuaiShouAccountCleanTemplateInfo.setAppliedMedia("快手");
+        //未绑定账户  设置暂停状态
+        kuaiShouAccountCleanTemplateInfo.setStatus(String.valueOf(1));
+        //设置创建日期
+        kuaiShouAccountCleanTemplateInfo.setCreateTime(sd.format(new Date()));
+        try {
+            kuaishouAccountCleanTemplateMapper.saveAccountCleanTemplate(kuaiShouAccountCleanTemplateInfo);
+            result.success("创建模板成功");
+        } catch (Exception e) {
+            log.info("保存模板失败:{}", e.toString());
+            result.error500("创建模板失败");
+        }
+        return result;
+    }
+
+    /**
+     * 查询模板列表
+     *
+     * @param templateId 模板id  createUser创建人
+     * @return
+     */
+    @Override
+    public Result getTemplateList(String templateId, String createUser, String userId, String pageNum, String pageSize) {
+        Result result = new Result();
+        PageHelper pageHelper = new PageHelper();
+        List<KuaiShouAccountCleanTemplateInfo> templateList = new ArrayList<>();
+        try {
+            //查询当前登录人角色
+            String roleCode = sysRoleService.getRoleCodeByUserId(userId);
+            PageHelper.startPage(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+            if (roleCode != null && roleCode.equals("admin")) {
+                //管理员查询全部
+                templateList = kuaishouAccountCleanTemplateMapper.getTemplateList(templateId, createUser, null);
+            } else {
+                //其他角色查询自己拥有的
+                templateList = kuaishouAccountCleanTemplateMapper.getTemplateList(templateId, createUser, userId);
+            }
+            PageInfo pageInfo = new PageInfo(templateList);
+            result.success("查询成功");
+            result.setResult(pageInfo);
+        } catch (Exception e) {
+            log.info("查询失败:{}", e.toString());
+            result.error500("查询失败");
+        }
+        return result;
+    }
+
+    /**
+     * 预览模板
+     *
+     * @param templateId 模板id
+     * @return
+     */
+    @Override
+    public Result previewTemplate(String templateId) {
+        Result result = new Result();
+        try {
+            KuaiShouAccountCleanTemplateInfo infoById = kuaishouAccountCleanTemplateMapper.getInfoById(templateId);
+            result.success("查询成功");
+            result.setResult(infoById);
+        } catch (Exception e) {
+            log.info("查询失败:{}", e.toString());
+            result.error500("查询失败");
+        }
+        return result;
+    }
+
+    /**
+     * 推送模板
+     *
+     * @param templateId 模板id,accountId 账户id
+     * @return
+     */
+    @Override
+    public Result pushTemplate(String templateId, String accountId) {
+        Result result = new Result();
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            //查询模板关联个数
+            int accountAssociatedSize = kuaishouAccountCleanTemplateMapper.getAccountAssociatedSize(accountId);
+            //无关联模板 推送模板
+            if (accountAssociatedSize == 0) {
+                kuaishouAccountCleanTemplateMapper.savePushTemplateAssociated(templateId, accountId, sd.format(new Date()));
+                //修改模板状态,改为开启
+                kuaishouAccountCleanTemplateMapper.updateTemplateStatus(templateId, "0");
+                result.success("推送成功");
+            } else {
+                result.success("推送失败,此账户已关联模板");
+            }
+        } catch (Exception e) {
+            log.info("推送失败:{}", e.toString());
+            result.error500("推送失败");
+        }
+        return result;
+    }
+
+    /**
+     * 修改模板
+     *
+     * @param kuaiShouAccountCleanTemplateInfo
+     * @return
+     */
+    @Override
+    public Result updateTemplate(KuaiShouAccountCleanTemplateInfo kuaiShouAccountCleanTemplateInfo) {
+        Result result = new Result();
+        try {
+            if (!StringUtil.isBlank(kuaiShouAccountCleanTemplateInfo.getId())) {
+                kuaishouAccountCleanTemplateMapper.updateTemplate(kuaiShouAccountCleanTemplateInfo);
+                result.success("修改成功");
+            } else {
+                result.success("id不能为空");
+            }
+        } catch (Exception e) {
+            log.info("修改失败:{}", e.toString());
+            result.error500("修改失败");
+        }
+        return result;
+    }
+
+    /**
+     * 开启/暂停模板
+     *
+     * @param templateId 模板id   status状态  0-开始   1-暂停
+     * @return
+     */
+    @Override
+    public Result updateTemplateStatus(String templateId, String status) {
+        Result result = new Result();
+        String message = "修改";
+        if (status.equals("0")) {
+            message = "开启";
+        }
+        if (status.equals("1")) {
+            message = "关闭";
+        }
+        try {
+            //修改模板状态
+            kuaishouAccountCleanTemplateMapper.updateTemplateStatus(templateId, status);
+            result.success(message + "成功");
+        } catch (Exception e) {
+            log.info(message + "失败:{}", e.toString());
+            result.error500(message + "失败");
+        }
+        return result;
+    }
+
+    /**
+     * 解除模板绑定
+     *
+     * @param templateId 模板id,accountId 账户id
+     * @return
+     */
+    @Override
+    public Result removeBinding(String templateId, String accountId) {
+        Result result = new Result();
+        try {
+            kuaishouAccountCleanTemplateMapper.removeBinding(templateId, accountId);
+            result.success("解除绑定成功");
+        } catch (Exception e) {
+            log.info("解除绑定失败:{}", e.toString());
+            result.error500("解除绑定失败");
+        }
+        return result;
+    }
+
+    @Override
+    public Result getCleanUpLog(String userName, String accountId, String pageNum, String pageSize) {
+        Result result = new Result();
+        try {
+            PageHelper.startPage(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+            List<KuaiShouAccountCleanLogInfo> cleanUpLog = kuaishouAccountCleanTemplateMapper.getCleanUpLog(userName, accountId);
+            PageInfo pageInfo = new PageInfo(cleanUpLog);
+            result.success("查询成功");
+            result.setResult(pageInfo);
+        } catch (Exception e) {
+            log.info("查询失败:{}", e.toString());
+            result.error500("查询失败");
+        }
+        return result;
+    }
+
+    /**
+     * 查询个人清理模板列表
+     *
+     * @param accountId 账户id  userName运营名称  userId当前登录人id
+     * @return
+     */
+    @Override
+    public Result getMyselfTemplateList(String accountId, String userName, String userId, String pageNum, String pageSize) {
+        Result result = new Result();
+        PageHelper pageHelper = new PageHelper();
+        List<KuaiShouAccountCleanTemplateInfo> templateList = new ArrayList<>();
+        try {
+            //查询当前登录人角色
+            String roleCode = sysRoleService.getRoleCodeByUserId(userId);
+            PageHelper.startPage(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+            if (roleCode != null && roleCode.equals("admin")) {
+                //管理员查询全部
+                templateList = kuaishouAccountCleanTemplateMapper.getMyselfTemplateList(accountId, userName, null);
+            } else {
+                //其他角色查询自己拥有的
+                templateList = kuaishouAccountCleanTemplateMapper.getMyselfTemplateList(accountId, userName, userId);
+            }
+            PageInfo pageInfo = new PageInfo(templateList);
+            result.success("查询成功");
+            result.setResult(pageInfo);
+        } catch (Exception e) {
+            log.info("查询失败:{}", e.toString());
+            result.error500("查询失败");
+        }
+        return result;
+    }
+
+    /**
+     * 根据清理模板清理账户
+     *
+     * @param
+     * @return
+     */
+    @Override
+    public Result cleanAccount() {
+        Result result = new Result();
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            //查询需要执行的规则模板
+            List<KuaiShouAccountCleanTemplateInfo> templateListBystatus = kuaishouAccountCleanTemplateMapper.getTemplateListBystatus();
+            if (!templateListBystatus.isEmpty()) {
+                templateListBystatus.stream().forEach(ob -> {
+                    //获取各项优化目标
+                    List<String> optimizationObjectiveList = Arrays.asList(ob.getOptimizationObjective().split(";"));
+                    //获取清理时间范围
+                    String cleanTime = ob.getCleanTime();
+                    //计算最早清理时间
+                    Calendar calendar = Calendar.getInstance();//此时打印它获取的是系统当前时间
+                    calendar.add(Calendar.DATE, -Integer.parseInt(cleanTime));
+                    String startDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
+                    //查询符合模板规则的组
+                    List<String> groupMessage = kuaishouAccountCleanTemplateMapper.getGroupMessage(ob, optimizationObjectiveList, startDate);
+                    AtomicReference<Boolean> falg= new AtomicReference<>(true);
+                    if (!groupMessage.isEmpty()) {
+                        //获取Token
+                        CtopOauthToken ctopOauthToken = ctopOauthTokenMapper.selectByAccountId(Long.parseLong(ob.getAccountId()));
+                        if (ctopOauthToken != null) {
+                            groupMessage.stream().forEach(item -> {
+                                //修改广告组状态
+                               /* Map<String, Object> resultMap = iKuaiShouUpdateService.updateUnitStatus(ctopOauthToken.getAccessToken(), Long.parseLong(ob.getAccountId()), Long.parseLong(item), Integer.parseInt(ob.getPerformOperations()), null);
+                                Boolean resultFlag= (Boolean) resultMap.get("success");
+                                //判断有没有失败
+                                if(!resultFlag){
+                                    falg.set(false);
+                                }*/
+                            });
+
+                        }
+                    }
+                    if(!groupMessage.isEmpty()&&falg.get()){
+                        //修改成功插入日志记录
+                        KuaiShouAccountCleanLogInfo kuaiShouAccountCleanLogInfo = new KuaiShouAccountCleanLogInfo();
+                        //设置账户id
+                        kuaiShouAccountCleanLogInfo.setAccountId(ob.getAccountId());
+                        // 1-投放、2-暂停、3-删除
+                        kuaiShouAccountCleanLogInfo.setOperationType(ob.getPerformOperations());
+                        //设置运营
+                        Map<String, String> map = kuaishouAccountCleanTemplateMapper.getUserNameByAccountId(ob.getAccountId());
+                        String authName="";
+                        if(map!=null){
+                            kuaiShouAccountCleanLogInfo.setUserName(map.get("userName"));
+                            authName=map.get("authName");
+                        }
+                        //设置时间
+                        kuaiShouAccountCleanLogInfo.setCreateTime(sd.format(new Date()));
+                        StringBuilder unitIds = new StringBuilder();
+                        groupMessage.stream().forEach(unid -> {
+                            unitIds.append(unid).append(",");
+                        });
+                        //操作类型
+                        String operationType = null;
+                        if (ob.getPerformOperations().equals("2")) {
+                            operationType = "暂停";
+                        }
+                        if (ob.getPerformOperations().equals("3")) {
+                            operationType = "删除";
+                        }
+                        //执行信息
+                        String textMessage = "清理规则执行:  账户:" + ob.getAccountId() + ", 授权名称: " + authName + ",推广组:" + unitIds + "已经被清理规则"+operationType;
+                        kuaiShouAccountCleanLogInfo.setExecutiveInformation(textMessage);
+                        kuaishouAccountCleanTemplateMapper.saveCleamLog(kuaiShouAccountCleanLogInfo);
+                    }
+
+                });
+            }
+
+            result.success("修改成功");
+        } catch (Exception e) {
+            log.info("修改失败:{}", e.toString());
+            result.error500("修改失败");
+        }
+        return result;
+    }
+
+}