|
@@ -13,13 +13,15 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xxl.job.core.enums.NoEn;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jeecg.common.util.DateUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
|
|
|
import static java.lang.Integer.valueOf;
|
|
|
|
|
@@ -31,6 +33,7 @@ import static java.lang.Integer.valueOf;
|
|
|
* @date 2020-12-22
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCampaignCopyDataMapper, KuaishouCampaignCopyData> implements IKuaishouCampaignCopyDataService {
|
|
|
@Autowired
|
|
|
private IBatchService batchService;
|
|
@@ -50,6 +53,7 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
private IMessageTemplate messageTemplate;
|
|
|
@Autowired
|
|
|
private IKuaiShouGroupTemplateService groupTemplateService;
|
|
|
+ static ExecutorService executorService = Executors.newFixedThreadPool(15);
|
|
|
|
|
|
/**
|
|
|
* 批量复制计划
|
|
@@ -61,8 +65,6 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
*/
|
|
|
@Override
|
|
|
public void batchCopyCampaign(KuaishouCampaignCopyData copyData) {
|
|
|
-
|
|
|
-
|
|
|
try {
|
|
|
CtopOauthToken token = tokenService.getTokenByAccountId(copyData.getAccountId());
|
|
|
if (Check.isNull(token)) {
|
|
@@ -97,6 +99,7 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
*/
|
|
|
private void delOldCampaigns(Long accountId, Long campaignId) throws Exception {
|
|
|
try {
|
|
|
+ log.info("删除老计划下想关联数据,accountId:{},campaignId:{}", accountId, campaignId);
|
|
|
//删除组
|
|
|
kuaiShouGroupService.delAllGroupByCampaignId(accountId, campaignId);
|
|
|
//删除创意
|
|
@@ -117,6 +120,7 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
private JSONObject getNewCampaigns(String accessToken, KuaishouCampaignCopyData copyData) throws Exception {
|
|
|
JSONObject data = new JSONObject();
|
|
|
try {
|
|
|
+ log.info("获取计划下最新数据,accountId:{},campaignId:{}", copyData.getAccountId(), copyData.getOldCampaignId());
|
|
|
Long campaignId = copyData.getOldCampaignId();
|
|
|
//根据计划ID查询快手广告组并入库
|
|
|
kuaiShouGroupService.getGroupListByPage(accessToken, copyData.getAccountId(), campaignId, 1);
|
|
@@ -129,7 +133,6 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
for (KuaiShouGroup kuaiShouGroup : kuaiShouGroups) {
|
|
|
kuaiShouGroup.setTarget(kuaiShouGroupTargetService.queryTargetInfoByunitId(copyData.getAccountId(), kuaiShouGroup.getUnitId()));
|
|
|
//根据广告组ID查询快手广告创意并入库
|
|
|
- kuaiShouGroupService.getCreativeByUnit(accessToken, copyData.getAccountId(), kuaiShouGroup.getUnitId());
|
|
|
}
|
|
|
data.put("groups", kuaiShouGroups);
|
|
|
} catch (Exception e) {
|
|
@@ -149,10 +152,12 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
* @author ZHAOXA
|
|
|
*/
|
|
|
private boolean createCopyUnits(CtopOauthToken token, JSONObject data) throws Exception {
|
|
|
+
|
|
|
int count = 0;
|
|
|
String msg = "";
|
|
|
JSONArray groups = data.getJSONArray("groups");
|
|
|
JSONObject copyData = data.getJSONObject("copyData");
|
|
|
+ log.info("开始创建组,accountId:{},campaign_id:{}", token.getAccountId(), copyData.getLong("newCampaignId"));
|
|
|
for (int i = 0; i < groups.size(); i++) {
|
|
|
try {
|
|
|
JSONObject group = groups.getJSONObject(i);
|
|
@@ -160,7 +165,7 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
unitJson.put("campaign_id", copyData.getLong("newCampaignId"));
|
|
|
// 资源位置
|
|
|
JSONArray scene_id = copyData.getJSONArray("sceneId");
|
|
|
- if (Check.isNull(scene_id) || scene_id.size() == 0) {
|
|
|
+ if (Check.isNull(scene_id)) {
|
|
|
scene_id = group.getJSONArray("sceneId");
|
|
|
}
|
|
|
unitJson.put("scene_id", scene_id);
|
|
@@ -418,33 +423,14 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
|
|
|
//快手广告组名
|
|
|
String unitName = group.getString("unitName");
|
|
|
- if (unitName.contains("CopyFrom")) {
|
|
|
- String format = "-".concat(DateUtils.yyyymmddhhmmss.get().format(new Date()));
|
|
|
- if (unitName.contains("(update)")) {
|
|
|
- int lastIndx = unitName.lastIndexOf("-");
|
|
|
- group.put("unit_name", unitName.substring(0, lastIndx).concat(format).concat("(update)"));
|
|
|
- } else {
|
|
|
- unitJson.put("unit_name", unitName.concat(format).concat("(update)"));
|
|
|
- }
|
|
|
- } else {
|
|
|
- unitJson.put("unit_name", "CopyFrom-".concat(unitName));
|
|
|
- }
|
|
|
+
|
|
|
+ unitJson.put("unit_name", unitName);
|
|
|
Map<String, Object> returnUnitMap = kuaishouInterfaceService.adUnitCreate(token.getAccessToken(), token.getAccountId(), unitJson, 1);
|
|
|
if (!Check.isNullMap(returnUnitMap)) {
|
|
|
Integer code = (Integer) returnUnitMap.get("code");
|
|
|
if (code == 0) {
|
|
|
Long unitId = (Long) returnUnitMap.get("unitId");
|
|
|
- Thread thread = new Thread() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- try {
|
|
|
- batchService.copyCreative(token.getAccountId(), unitId, group.getLong("unitId"), null);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("复制创建广告创意异常", e);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- thread.start();
|
|
|
+ createCopyCreatives(token, unitId, group.getLong("unitId"));
|
|
|
} else {
|
|
|
count++;
|
|
|
msg = (String) returnUnitMap.get("message");
|
|
@@ -474,8 +460,22 @@ public class KuaishouCampaignCopyDataServiceImpl extends ServiceImpl<KuaishouCam
|
|
|
* @throws
|
|
|
* @author ZHAOXA
|
|
|
*/
|
|
|
- private void createCopyCreatives(CtopOauthToken token, JSONObject data, KuaishouCampaignCopyData
|
|
|
- copyData) throws Exception {
|
|
|
+ private void createCopyCreatives(CtopOauthToken token, Long unitId, Long copyUnitId) {
|
|
|
+ executorService.submit(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ log.info("开始多线程执行创建创意,accountId:{},新组:{},老组:{}", token.getAccountId(), unitId, copyUnitId);
|
|
|
+ kuaiShouGroupService.getCreativeByUnit(token.getAccessToken(), token.getAccountId(), copyUnitId);
|
|
|
+ Thread.sleep(200l);
|
|
|
+ batchService.copyCreative(token.getAccountId(), unitId, copyUnitId, null);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|