Просмотр исходного кода

创意超限发送企业微信

yumeng 4 лет назад
Родитель
Сommit
9f620e9b3f
15 измененных файлов с 276 добавлено и 33 удалено
  1. 11 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java
  2. 17 26
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  3. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IMessageTemplate.java
  4. 13 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MessageTemplateImpl.java
  5. 69 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaishouOverRunLog.java
  6. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouCreativeMapper.java
  7. 15 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaishouOverRunLogMapper.java
  8. 13 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouCreativeMapper.xml
  9. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaishouOverRunLogMapper.xml
  10. 10 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouCreativeService.java
  11. 14 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouOverRunLogService.java
  12. 6 4
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouCreativeServiceImpl.java
  13. 75 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouOverRunSendMessageServiceImpl.java
  14. 5 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  15. 19 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouOverRunLogServiceImpl.java

+ 11 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -225,6 +225,17 @@ public class DateUtils extends PropertyEditorSupport {
         return new Date();
     }
 
+
+    public static String getStartTime(Date date) {
+        Calendar dateStart = Calendar.getInstance();
+        dateStart.setTime(date);
+        dateStart.set(Calendar.HOUR_OF_DAY, 0);
+        dateStart.set(Calendar.MINUTE, 0);
+        dateStart.set(Calendar.SECOND, 0);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return simpleDateFormat.format(dateStart.getTime());
+    }
+
     /**
      * 日期转换为字符串
      *

+ 17 - 26
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -10,10 +10,7 @@ import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouDailyReportTaskService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouRealTimeDataService;
+import cn.com.ctop.kuaishou.modules.batch.service.*;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
 import cn.com.ctop.oa.modules.service.IWechatCheckinDataService;
@@ -22,7 +19,6 @@ import cn.com.ctop.oa.modules.service.IWechatNoListService;
 import cn.com.ctop.oa.modules.service.IWechatUserListService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
@@ -77,33 +73,28 @@ public class SampleTest {
     @Autowired
     private IKuaishouRealTimeDataService realTimeDataService;
 
+    @Autowired
+    private IKuaiShouCreativeService creativeService;
+    @Autowired
+    private IMessageTemplate messageTemplate;
+
+    @Autowired
+    private ISendMessageService sendMessageService;
+
+    @Autowired
+    private IKuaiShouOverRunSendMessageService overRunSendMessageService;
+
 
     @Test
     public void getDepartment() throws ParseException {
 
-        JSONArray campaignDate = realTimeDataService.getCampaignDate(7865319L, "7abeae7f7708bda8111c62f985da84e7", 20209274L, "2020-09-27", "2020-09-27");
-
-        System.err.println(campaignDate);
-//        List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
-//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-//        Date parse1 = simpleDateFormat.parse("2020-09-12");
-//        Date parse2 = simpleDateFormat.parse("2020-09-17");
-//        for (CtopOauthToken token : tokens) {
-//
-//            kuaishouInterfaceService.getAdvertiserGroupReportDaily(token, parse1, parse2);
-//
-//        }
+      /*  String message = messageTemplate.getCreativeOverRunMessage(23212L, 2000, "hahah");
+        //  LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        sendMessageService.sendMessage("14c3cd
+        5e5e434211a9bb5e8f9d8a335d", message);*/
 
-//        wechatDepartment.getDepartment();
-//        wechatUserInfoService.getUserList();
-//        wechatCheckinDataService.getCheckinData();
-//        wechatNoListService.getNoDateByNo("1598889600","1600927780");
+        overRunSendMessageService.creativeOverRunSendMessage(23212L);
 
-       /* Map<String, Object> map = new HashMap<String, Object>();
-        map.put("departId", "9");
-        List<WechatAttendance> wechatAttendances = wechatNoListService.queryAttendanceData(map);
-        System.out.println(wechatAttendances);*/
-        //         kuaishouInterfaceService.getSuZaoList("a34853c230e1b949eddbe569023dbc40", 7022550L, 1, "2020-09-15", "2020-09-16");
 
     }
 

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMessageTemplate.java

@@ -23,4 +23,6 @@ public interface IMessageTemplate {
 
 
     String getFeishuMaterialRejectTemplate(String projectName, String materialName, String refuseReason);
+
+    String getCreativeOverRunMessage(Long accountId, Integer creativeCount,String authName);
 }

+ 13 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MessageTemplateImpl.java

@@ -95,4 +95,17 @@ public class MessageTemplateImpl implements IMessageTemplate {
         text.append("请您联系相关同学及时调整");
         return text.toString();
     }
+
+    @Override
+    public String getCreativeOverRunMessage(Long accountId, Integer creativeCount, String authName) {
+        StringBuilder text = new StringBuilder();
+        text.append("创意超限通知:").append("<br/>")
+
+                .append("您的快手账户:").append(accountId + ",").append("<br/>")
+                .append("授权名称为:" + authName).append("<br/>")
+                .append("创意api创建超限。").append("<br/>")
+                .append("当前创建数为:").append(creativeCount).append("<br/>")
+                .append("如有疑问,请联系产品:吴永前。");
+        return text.toString();
+    }
 }

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

@@ -0,0 +1,69 @@
+package cn.com.ctop.kuaishou.modules.batch.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 超限记录表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-28
+ */
+@Data
+@TableName("ctop_kuaishou_over_run_log")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_over_run_log对象", description = "超限记录表")
+public class KuaishouOverRunLog {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 1 创意
+     */
+    @Excel(name = "1 创意", width = 15)
+    @ApiModelProperty(value = "1 创意")
+    private Integer mailType;
+    /**
+     * 消耗预警 日期
+     */
+    @Excel(name = "消耗预警 日期", width = 15)
+    @ApiModelProperty(value = "消耗预警 日期")
+    private String statDate;
+    /**
+     * 消耗预警 小时
+     */
+    @Excel(name = "消耗预警 小时", width = 15)
+    @ApiModelProperty(value = "消耗预警 小时")
+    private Integer statHour;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

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

@@ -17,4 +17,6 @@ public interface KuaiShouCreativeMapper extends BaseMapper<KuaiShouCreative> {
     void replaceBatch(@Param(value = "creatives") List<KuaiShouCreative> creatives);
 
     Integer checkCreativeCount(@Param("accountId") Long accountId, @Param("unitId") Long unitId);
+
+    Integer getCreateCount(Long accountId, String startTime);
 }

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

@@ -0,0 +1,15 @@
+package cn.com.ctop.kuaishou.modules.batch.mapper;
+
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouOverRunLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 超限记录表
+ *
+ * @author: jeecg-boot
+ * @date: 2020-09-28
+ * @cersion: V1.0
+ */
+public interface KuaishouOverRunLogMapper extends BaseMapper<KuaishouOverRunLog> {
+
+}

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

@@ -87,4 +87,17 @@
      where  account_id = #{accountId}
      and unit_id = #{unitId}
     </select>
+
+    <select id="getCreateCount" resultType="java.lang.Integer">
+
+    SELECT
+	count(1)
+   FROM
+	ctop_kuaishou_creative
+   WHERE account_id = #{accountId}
+   AND creative_create_time &gt;= #{startTime}
+   AND create_channel = 1;
+    </select>
+
+
 </mapper>

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

@@ -0,0 +1,5 @@
+<?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.batch.mapper.KuaishouOverRunLogMapper">
+
+</mapper>

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

@@ -3,6 +3,7 @@ package cn.com.ctop.kuaishou.modules.batch.service;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -33,4 +34,13 @@ public interface IKuaiShouCreativeService extends IService<KuaiShouCreative> {
     Integer checkCreativeCount(Long accountId, Long unitId);
 
     void syncCreative(Long accountId, String accessToken, Long campaignId, Integer page);
+
+    /**
+     * 获取当前创意创建数
+     * @param accountId
+     * @param startTime
+     * @return
+     */
+
+    Integer getCreateCount(Long accountId, String startTime);
 }

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

@@ -0,0 +1,14 @@
+package cn.com.ctop.kuaishou.modules.batch.service;
+
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouOverRunLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 超限记录表
+ * @Author: jeecg-boot
+ * @Date: 2020-09-28
+ * @Version: V1.0
+ */
+public interface IKuaishouOverRunLogService extends IService<KuaishouOverRunLog> {
+
+}

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

@@ -17,10 +17,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description: 快手-创意信息
@@ -180,4 +177,9 @@ public class KuaiShouCreativeServiceImpl extends ServiceImpl<KuaiShouCreativeMap
         this.replaceBatch(creatives);
         this.syncCreative(accountId, accessToken, campaignId, page + 1);
     }
+
+    @Override
+    public Integer getCreateCount(Long accountId, String startTime) {
+        return kuaiShouCreativeMapper.getCreateCount(accountId, startTime);
+    }
 }

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

@@ -1,14 +1,88 @@
 package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
+import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.service.IMessageTemplate;
+import cn.com.ctop.common.module.service.ISendMessageService;
+import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouOverRunLog;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouOverRunLogMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCreativeService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouOverRunSendMessageService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouOverRunLogService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 @Service
 @Slf4j
-public class KuaiShouOverRunSendMessageServiceImpl implements IKuaiShouOverRunSendMessageService {
+public class KuaiShouOverRunSendMessageServiceImpl extends ServiceImpl<KuaishouOverRunLogMapper, KuaishouOverRunLog> implements IKuaiShouOverRunSendMessageService {
+
+    @Autowired
+    private IKuaiShouCreativeService creativeService;
+    @Autowired
+    private IMessageTemplate messageTemplate;
+    @Autowired
+    private IUserAllocationService userAllocationService;
+    @Autowired
+    private ISendMessageService sendMessageService;
+    @Autowired
+    private IKuaishouOverRunLogService overRunLogService;
+    @Autowired
+    private KuaishouOverRunLogMapper runLogMapper;
+
+
     @Override
     public void creativeOverRunSendMessage(Long accountId) {
 
+        try {
+            String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+            Integer hour = DateUtils.getHour(DateUtils.getNowDate("yyyy-MM-dd HH:mm:ss"));
+            QueryWrapper<KuaishouOverRunLog> overRunLogQueryWrapper = new QueryWrapper<>();
+            overRunLogQueryWrapper.eq("account_id", accountId);
+            overRunLogQueryWrapper.eq("stat_date", nowDate);
+            overRunLogQueryWrapper.eq("stat_hour", hour);
+            overRunLogQueryWrapper.last("limit 1");
+            KuaishouOverRunLog overRunLog = overRunLogService.getOne(overRunLogQueryWrapper);
+            if (!Check.isNull(overRunLog)) {
+                return;
+            }
+
+
+            String startTime = DateUtils.getStartTime(new Date());
+            Integer creativeCount = creativeService.getCreateCount(accountId, startTime);
+
+            UserAllocation userAllocation = userAllocationService.getByAccountId(accountId);
+            if (!Check.isNull(userAllocation)) {
+                String message = messageTemplate.getCreativeOverRunMessage(accountId, creativeCount, userAllocation.getAuthName());
+                LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+                if (Check.isNull(sysUser)) {
+                    return;
+                }
+                sendMessageService.sendMessage(sysUser.getId(), message);
+                KuaishouOverRunLog addOverRunLog = new KuaishouOverRunLog();
+                addOverRunLog.setAccountId(accountId);
+                addOverRunLog.setMailType(1);
+                addOverRunLog.setStatDate(nowDate);
+                addOverRunLog.setStatHour(hour);
+                runLogMapper.insert(addOverRunLog);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        }
+
+    }
+
+    public static void main(String[] args) {
+        String startTime = DateUtils.getStartTime(new Date());
+        System.err.println(startTime);
     }
 }

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

@@ -1767,6 +1767,10 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
      * @param advertiserId
      * @param requestJson
      */
+
+    @Autowired
+    private IKuaiShouOverRunSendMessageService overRunSendMessageService;
+
     @Override
     public Map<String, Object> creativeCreate(String accessToken, Long advertiserId, JSONObject requestJson, Integer count) {
         Map<String, Object> returnMap = new HashMap<>();
@@ -1810,9 +1814,8 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     }
 
                     if (code == 400001 && resultJson.getString("message").equals("/rest/openapi/v2/creative/create已超日限")) {
-
+                        overRunSendMessageService.creativeOverRunSendMessage(advertiserId);
                     }
-
                     log.error("创建广告创意失败,advertiser_id:{},返回信息:{},入参:{}", advertiserId, resultJson, requestJson, count + 1);
                     returnMap.put("code", -1);
                     returnMap.put("message", resultJson.getString("message"));

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

@@ -0,0 +1,19 @@
+package cn.com.ctop.kuaishou.modules.batch.service.impl;
+
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouOverRunLog;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouOverRunLogMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouOverRunLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 超限记录表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-28
+ */
+@Service
+public class KuaishouOverRunLogServiceImpl extends ServiceImpl<KuaishouOverRunLogMapper, KuaishouOverRunLog> implements IKuaishouOverRunLogService {
+
+}