|  | @@ -1,576 +0,0 @@
 | 
	
		
			
				|  |  | -package cn.com.ctop.kuaishou.modules.batch.service.impl;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import cn.com.ctop.common.module.entity.CtopOauthToken;
 | 
	
		
			
				|  |  | -import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 | 
	
		
			
				|  |  | -import cn.com.ctop.common.module.utils.Check;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaignCreate;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaignTemplate;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreateAppTemplate;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroupCreateLog;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCampaignCreateMapper;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCampaignTemplateMapper;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCreateAppTemplateMapper;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouGroupCreateLogMapper;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCreateService;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageService;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoService;
 | 
	
		
			
				|  |  | -import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 | 
	
		
			
				|  |  | -import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | -import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  | -import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | -import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | -import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import java.util.HashMap;
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  | -import java.util.Map;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * @author yumeng
 | 
	
		
			
				|  |  | - * 2019年11月12日10:04:00
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -@Slf4j
 | 
	
		
			
				|  |  | -@Service
 | 
	
		
			
				|  |  | -public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private KuaiShouCampaignTemplateMapper campaignTemplateMapper;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private IKuaishouInterfaceService kuaishouInterfaceService;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private KuaiShouCreateAppTemplateMapper createAppTemplateMapper;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private KuaiShouGroupCreateLogMapper groupCreateLogMapper;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private ICtopOauthTokenService oauthTokenService;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private KuaiShouCampaignCreateMapper campaignCreateMapper;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private IKuaiShouVideoService videoService;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private IKuaiShouImageService imageService;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public Map<String, Object> createGroups(KuaiShouGroupCreateLog groupCreateTemplate) {
 | 
	
		
			
				|  |  | -        Map<String, Object> returnMap = new HashMap<>();
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -            Integer createCount = groupCreateTemplate.getCreateCount();
 | 
	
		
			
				|  |  | -            if (Check.isNull(createCount) || createCount == 0) {
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("desc", "迭代次数不能为空或为0");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            Long accountId = groupCreateTemplate.getAccountId();
 | 
	
		
			
				|  |  | -            if (Check.isNull(accountId)) {
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("message", "请选择快手账号");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            CtopOauthToken ctopOauthToken = oauthTokenService.getOauthTokenByAccountId(String.valueOf(accountId));
 | 
	
		
			
				|  |  | -            if (Check.isNull(ctopOauthToken)) {
 | 
	
		
			
				|  |  | -                log.error("未获取到token信息,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                throw new Exception("未获取到token信息");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            String accessToken = ctopOauthToken.getAccessToken();
 | 
	
		
			
				|  |  | -            // 广告计划模板id
 | 
	
		
			
				|  |  | -            Long campaignTemplateId = groupCreateTemplate.getCampaignTemplateId();
 | 
	
		
			
				|  |  | -            if (Check.isNull(campaignTemplateId)) {
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("message", "请选择广告计划模板");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            String redundancy = groupCreateTemplate.getRedundancy();
 | 
	
		
			
				|  |  | -            JSONObject redundancyJson = JSONObject.parseObject(redundancy);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 广告计划信息
 | 
	
		
			
				|  |  | -            KuaiShouCampaignTemplate kuaiShouCampaignTemplate = campaignTemplateMapper.selectById(campaignTemplateId);
 | 
	
		
			
				|  |  | -            if (Check.isNull(kuaiShouCampaignTemplate)) {
 | 
	
		
			
				|  |  | -                log.error("查询广告计划为空:模板id:{}", campaignTemplateId);
 | 
	
		
			
				|  |  | -                throw new Exception("根据模板id查询创意模板信息为空");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            QueryWrapper<KuaiShouCampaignCreate> queryWrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -            queryWrapper.eq("account_id", accountId);
 | 
	
		
			
				|  |  | -            queryWrapper.eq("campaign_name", kuaiShouCampaignTemplate.getCampaignName());
 | 
	
		
			
				|  |  | -            queryWrapper.orderByDesc("create_time");
 | 
	
		
			
				|  |  | -            queryWrapper.last("limit 1");
 | 
	
		
			
				|  |  | -            KuaiShouCampaignCreate campaignCreate = campaignCreateMapper.selectOne(queryWrapper);
 | 
	
		
			
				|  |  | -            Long campaignId;
 | 
	
		
			
				|  |  | -            if (Check.isNull(campaignCreate) || Check.isNull(campaignCreate.getCampaignId())) {
 | 
	
		
			
				|  |  | -                JSONObject campaignJson = new JSONObject();
 | 
	
		
			
				|  |  | -                campaignJson.put("campaign_name", kuaiShouCampaignTemplate.getCampaignName());
 | 
	
		
			
				|  |  | -                campaignJson.put("type", kuaiShouCampaignTemplate.getType());
 | 
	
		
			
				|  |  | -                campaignJson.put("day_budget", kuaiShouCampaignTemplate.getDayBudget());
 | 
	
		
			
				|  |  | -                Map<String, Object> campaignMap = kuaishouInterfaceService.campaignCreate(accessToken, accountId, campaignJson);
 | 
	
		
			
				|  |  | -                Integer code = (Integer) campaignMap.get("code");
 | 
	
		
			
				|  |  | -                if (code != 0) {
 | 
	
		
			
				|  |  | -                    return campaignMap;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                campaignId = (Long) campaignMap.get("campaign_id");
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                campaignId = campaignCreate.getCampaignId();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            groupCreateTemplate.setCampaignId(campaignId);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            JSONObject groupJson = new JSONObject();
 | 
	
		
			
				|  |  | -            // 计划类型
 | 
	
		
			
				|  |  | -            Integer type = kuaiShouCampaignTemplate.getType();
 | 
	
		
			
				|  |  | -            if (type == 3 || type == 4 || type == 5) {
 | 
	
		
			
				|  |  | -                if (type == 3) {
 | 
	
		
			
				|  |  | -                    groupJson.put("url_type", kuaiShouCampaignTemplate.getUrlType());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if (!Check.isNull(redundancyJson.getString("redirectUrl"))) {
 | 
	
		
			
				|  |  | -                    groupJson.put("url", redundancyJson.getString("redirectUrl"));
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    groupJson.put("url", kuaiShouCampaignTemplate.getUrl());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            // app推广
 | 
	
		
			
				|  |  | -            if (type == 2) {
 | 
	
		
			
				|  |  | -                KuaiShouCreateAppTemplate appTemplate;
 | 
	
		
			
				|  |  | -                // 是否重新选择应用进行创建
 | 
	
		
			
				|  |  | -                if (!Check.isNull(redundancyJson.getLong("appId"))) {
 | 
	
		
			
				|  |  | -                    appTemplate = createAppTemplateMapper.selectById(redundancyJson.getLong("appId"));
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    appTemplate = createAppTemplateMapper.selectById(kuaiShouCampaignTemplate.getAppId());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                if (Check.isNull(appTemplate)) {
 | 
	
		
			
				|  |  | -                    log.error("快手上传视频未获取到本地app信息,appId:{}", kuaiShouCampaignTemplate.getAppId());
 | 
	
		
			
				|  |  | -                    throw new Exception("快手上传视频未获取到本地app信息");
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                JSONObject apkJson = new JSONObject();
 | 
	
		
			
				|  |  | -                String platform = appTemplate.getPlatform();
 | 
	
		
			
				|  |  | -                apkJson.put("platform", platform);
 | 
	
		
			
				|  |  | -                apkJson.put("app_name", appTemplate.getAppName());
 | 
	
		
			
				|  |  | -                apkJson.put("app_version", appTemplate.getAppVersion());
 | 
	
		
			
				|  |  | -                if (!Check.isNull(appTemplate.getPackageName())) {
 | 
	
		
			
				|  |  | -                    apkJson.put("package_name", appTemplate.getPackageName());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if (!Check.isNull(appTemplate.getImageUrl()) && ("1".equals(platform) || "2".equals(platform))) {
 | 
	
		
			
				|  |  | -                    Map<String, Object> imageMap = kuaishouInterfaceService.imageUpload(accountId, accessToken, (String) appTemplate.getImageUrl(), 1);
 | 
	
		
			
				|  |  | -                    Integer imageCode = (Integer) imageMap.get("code");
 | 
	
		
			
				|  |  | -                    if (imageCode != 0) {
 | 
	
		
			
				|  |  | -                        return imageMap;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    apkJson.put("image_token", imageMap.get("imageToken"));
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                Map<String, Object> apkMap;
 | 
	
		
			
				|  |  | -                if ("1".equals(platform) && appTemplate.getUploadType() == 1) {
 | 
	
		
			
				|  |  | -                    apkJson.put("file", appTemplate.getFile());
 | 
	
		
			
				|  |  | -                    apkMap = kuaishouInterfaceService.appCreate(accountId, accessToken, apkJson);
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    apkJson.put("url", appTemplate.getUrl());
 | 
	
		
			
				|  |  | -                    apkMap = kuaishouInterfaceService.urlAppCreate(accountId, accessToken, apkJson);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if ((Integer) apkMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                    return apkMap;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                groupJson.put("app_id", apkMap.get("appId"));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            groupJson.put("bid_type", groupCreateTemplate.getBidType());
 | 
	
		
			
				|  |  | -            groupJson.put("campaign_id", campaignId);
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getBid())) {
 | 
	
		
			
				|  |  | -                groupJson.put("bid", groupCreateTemplate.getBid());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getCpaBid())) {
 | 
	
		
			
				|  |  | -                groupJson.put("cpa_bid", groupCreateTemplate.getCpaBid());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getOcpxActionType())) {
 | 
	
		
			
				|  |  | -                groupJson.put("ocpx_action_type", groupCreateTemplate.getOcpxActionType());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getDeepConversionType())) {
 | 
	
		
			
				|  |  | -                groupJson.put("deep_conversion_type", groupCreateTemplate.getDeepConversionType());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getBeginTime())) {
 | 
	
		
			
				|  |  | -                groupJson.put("begin_time", groupCreateTemplate.getBeginTime());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getEndTime())) {
 | 
	
		
			
				|  |  | -                groupJson.put("end_time", groupCreateTemplate.getEndTime());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getScheduleTime())) {
 | 
	
		
			
				|  |  | -                groupJson.put("schedule_time", groupCreateTemplate.getScheduleTime());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getDayBudget())) {
 | 
	
		
			
				|  |  | -                groupJson.put("day_budget", groupCreateTemplate.getDayBudget());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getShowModel())) {
 | 
	
		
			
				|  |  | -                groupJson.put("show_mode", groupCreateTemplate.getShowModel());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getSpeed())) {
 | 
	
		
			
				|  |  | -                groupJson.put("speed", groupCreateTemplate.getSpeed());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getSceneId())) {
 | 
	
		
			
				|  |  | -                JSONArray sceneIds = new JSONArray();
 | 
	
		
			
				|  |  | -                sceneIds.add(groupCreateTemplate.getSceneId());
 | 
	
		
			
				|  |  | -                groupJson.put("scene_id", sceneIds);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getUnitType())) {
 | 
	
		
			
				|  |  | -                groupJson.put("unit_type", groupCreateTemplate.getUnitType());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getDeepConversionType())) {
 | 
	
		
			
				|  |  | -                groupJson.put("deep_conversion_type", groupCreateTemplate.getDeepConversionType());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (!Check.isNull(groupCreateTemplate.getDeepConversionBid()) && groupCreateTemplate.getDeepConversionBid() > 0) {
 | 
	
		
			
				|  |  | -                groupJson.put("deep_conversion_bid", groupCreateTemplate.getDeepConversionBid());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            JSONObject targetJson = new JSONObject();
 | 
	
		
			
				|  |  | -            Integer platformOs = redundancyJson.getInteger("platformOs");
 | 
	
		
			
				|  |  | -            if (!Check.isNull(platformOs)) {
 | 
	
		
			
				|  |  | -                targetJson.put("platform_os", platformOs);
 | 
	
		
			
				|  |  | -                if (platformOs == 1) {
 | 
	
		
			
				|  |  | -                    targetJson.put("android_osv", redundancyJson.getInteger("androidOsv"));
 | 
	
		
			
				|  |  | -                } else if (platformOs == 2) {
 | 
	
		
			
				|  |  | -                    targetJson.put("ios_osv", redundancyJson.getInteger("iosOsv"));
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            groupJson.put("target", targetJson);
 | 
	
		
			
				|  |  | -            String unitName = groupCreateTemplate.getUnitName();
 | 
	
		
			
				|  |  | -            for (int i = 0; i < createCount; i++) {
 | 
	
		
			
				|  |  | -                String name;
 | 
	
		
			
				|  |  | -                if (createCount > 1) {
 | 
	
		
			
				|  |  | -                    name = unitName + "_" + i;
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    name = unitName;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                groupJson.put("unit_name", name);
 | 
	
		
			
				|  |  | -                Map<String, Object> groupMap = kuaishouInterfaceService.adUnitCreate(accessToken, accountId, groupJson, 1);
 | 
	
		
			
				|  |  | -                if ((Integer) groupMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                    log.error("创建广告组失败,accountId:{},unitName:{}", accountId, unitName);
 | 
	
		
			
				|  |  | -                    return groupMap;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                groupCreateTemplate.setUnitId((Long) groupMap.get("unitId"));
 | 
	
		
			
				|  |  | -                groupCreateTemplate.setUnitName(name);
 | 
	
		
			
				|  |  | -                int y = groupCreateLogMapper.insert(groupCreateTemplate);
 | 
	
		
			
				|  |  | -                if (y > 0) {
 | 
	
		
			
				|  |  | -                    log.info("创建广告组记录信息入库完成,accountId:{},unitName:{}", accountId, unitName);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            returnMap.put("code", 0);
 | 
	
		
			
				|  |  | -            returnMap.put("success", true);
 | 
	
		
			
				|  |  | -            returnMap.put("message", "批量创建广告组成功");
 | 
	
		
			
				|  |  | -        } catch (Exception e) {
 | 
	
		
			
				|  |  | -            e.printStackTrace();
 | 
	
		
			
				|  |  | -            returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -            returnMap.put("success", false);
 | 
	
		
			
				|  |  | -            returnMap.put("message", "批量创建广告组失败");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return returnMap;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 批量创建创意
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param requestJson
 | 
	
		
			
				|  |  | -     * @return
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public Map<String, Object> createCreative(JSONObject requestJson) {
 | 
	
		
			
				|  |  | -        Map<String, Object> returnMap = new HashMap<>();
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -            if (Check.isNull(requestJson)) {
 | 
	
		
			
				|  |  | -                log.error("创建创意入参为空");
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("message", "入参为空");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            JSONObject createJson = new JSONObject();
 | 
	
		
			
				|  |  | -            Long accountId = requestJson.getLong("accountId");
 | 
	
		
			
				|  |  | -            if (Check.isNull(accountId)) {
 | 
	
		
			
				|  |  | -                log.error("创建创意广告主id为空,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("message", "请选择快手账号");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            CtopOauthToken cTopOauthToken = oauthTokenService.getOauthTokenByAccountId(String.valueOf(accountId));
 | 
	
		
			
				|  |  | -            if (Check.isNull(cTopOauthToken)) {
 | 
	
		
			
				|  |  | -                log.error("未获取到token信息,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                throw new Exception("未获取到token信息");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            String accessToken = cTopOauthToken.getAccessToken();
 | 
	
		
			
				|  |  | -            Long unitId = requestJson.getLong("unitId");
 | 
	
		
			
				|  |  | -            if (Check.isNull(unitId)) {
 | 
	
		
			
				|  |  | -                log.error("创建创意广告组为空,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("message", "请选择广告组");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            createJson.put("unit_id", unitId);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (Check.isNull(requestJson.getString("description"))) {
 | 
	
		
			
				|  |  | -                log.error("请填写广告语,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                returnMap.put("message", "请填写广告语");
 | 
	
		
			
				|  |  | -                return returnMap;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (!Check.isNull(requestJson.getString("actionBarText"))) {
 | 
	
		
			
				|  |  | -                createJson.put("action_bar_text", requestJson.getString("actionBarText"));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 1 竖版视频 2 横版视频 3 贴片图片
 | 
	
		
			
				|  |  | -            Integer creativeMaterialType = requestJson.getInteger("creativeMaterialType");
 | 
	
		
			
				|  |  | -            createJson.put("creative_material_type", creativeMaterialType);
 | 
	
		
			
				|  |  | -            createJson.put("description", requestJson.getString("description"));
 | 
	
		
			
				|  |  | -            String creativeName = requestJson.getString("creativeName");
 | 
	
		
			
				|  |  | -            Integer sceneId = requestJson.getInteger("sceneId");
 | 
	
		
			
				|  |  | -            // 普通 广告
 | 
	
		
			
				|  |  | -            if (sceneId == 2) {
 | 
	
		
			
				|  |  | -                JSONObject localVideoJson = new JSONObject();
 | 
	
		
			
				|  |  | -                localVideoJson.put("videoType", requestJson.getString("creativeMaterialType"));
 | 
	
		
			
				|  |  | -                localVideoJson.put("login_id", requestJson.getString("loginId"));
 | 
	
		
			
				|  |  | -                localVideoJson.put("videoUrl", requestJson.getString("videoUrl"));
 | 
	
		
			
				|  |  | -                localVideoJson.put("description", requestJson.getString("description"));
 | 
	
		
			
				|  |  | -                localVideoJson.put("positionType", requestJson.getString("positionType"));
 | 
	
		
			
				|  |  | -                localVideoJson.put("accountId", requestJson.getString("accountId"));
 | 
	
		
			
				|  |  | -                // 校验文件是否在本地有留存记录
 | 
	
		
			
				|  |  | -                String videoUrl = videoService.localInsert(localVideoJson);
 | 
	
		
			
				|  |  | -                if (Check.isNull(videoUrl)) {
 | 
	
		
			
				|  |  | -                    log.error("创建创意视频为空,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                    returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                    returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                    returnMap.put("message", "请选择上传的视频");
 | 
	
		
			
				|  |  | -                    return returnMap;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                // 上传视频到快手后台
 | 
	
		
			
				|  |  | -                Map<String, Object> videoMap = kuaishouInterfaceService.videoUpload(accountId, accessToken, videoUrl);
 | 
	
		
			
				|  |  | -                if ((Integer) videoMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                    log.error("上传视频失败,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                    return videoMap;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                createJson.put("photo_id", videoMap.get("photoId"));
 | 
	
		
			
				|  |  | -                if (!Check.isNull(requestJson.getString("clickTrackUrl"))) {
 | 
	
		
			
				|  |  | -                    createJson.put("click_track_url", requestJson.getString("clickTrackUrl"));
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                JSONArray imageUrlArr = requestJson.getJSONArray("imageUrl");
 | 
	
		
			
				|  |  | -                if (Check.isNull(imageUrlArr)) {
 | 
	
		
			
				|  |  | -                    log.error("请选择封面图,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                    returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                    returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                    returnMap.put("message", "请选择广告创意封面图");
 | 
	
		
			
				|  |  | -                    return returnMap;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                for (int i = 0; i < imageUrlArr.size(); i++) {
 | 
	
		
			
				|  |  | -                    String imageUrl = imageUrlArr.get(i).toString();
 | 
	
		
			
				|  |  | -                    if (Check.isNull(imageUrl)) {
 | 
	
		
			
				|  |  | -                        continue;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    JSONObject imageJson = new JSONObject();
 | 
	
		
			
				|  |  | -                    imageJson.put("loginId", requestJson.getString("loginId"));
 | 
	
		
			
				|  |  | -                    imageJson.put("videoUploadType", requestJson.getString("creativeMaterialType"));
 | 
	
		
			
				|  |  | -                    imageJson.put("url", imageUrl);
 | 
	
		
			
				|  |  | -                    imageJson.put("accountId", accountId);
 | 
	
		
			
				|  |  | -                    imageJson.put("positionType", requestJson.getString("positionType"));
 | 
	
		
			
				|  |  | -                    String imagePath = imageService.localInsert(imageJson);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    Map<String, Object> imageMap = kuaishouInterfaceService.imageUpload(accountId, accessToken, imagePath, 2);
 | 
	
		
			
				|  |  | -                    if ((Integer) imageMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                        return imageMap;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    createJson.put("image_token", imageMap.get("imageToken"));
 | 
	
		
			
				|  |  | -                    if (imageUrlArr.size() == 1) {
 | 
	
		
			
				|  |  | -                        createJson.put("creative_name", creativeName);
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | -                        createJson.put("creative_name", creativeName + "_" + i);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    Map<String, Object> creativeMap = kuaishouInterfaceService.creativeCreate(accessToken, accountId, createJson, 1);
 | 
	
		
			
				|  |  | -                    if ((Integer) creativeMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                        return creativeMap;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            } else if (sceneId == 3) {
 | 
	
		
			
				|  |  | -                // 后贴片 广告
 | 
	
		
			
				|  |  | -                if (!Check.isNull(requestJson.getString("impressionUrl"))) {
 | 
	
		
			
				|  |  | -                    createJson.put("impression_url", requestJson.getString("impressionUrl"));
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                if (!Check.isNull(requestJson.getString("adPhotoPlayedT3sUrl"))) {
 | 
	
		
			
				|  |  | -                    createJson.put("ad_photo_played_t3s_url", requestJson.getString("adPhotoPlayedT3sUrl"));
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if (creativeMaterialType != 3) {
 | 
	
		
			
				|  |  | -                    // 后贴片 视频集合
 | 
	
		
			
				|  |  | -                    JSONArray haveSinglePicVideoUrlArr = requestJson.getJSONArray("haveSinglePicVideoUrl");
 | 
	
		
			
				|  |  | -                    if (Check.isNull(haveSinglePicVideoUrlArr)) {
 | 
	
		
			
				|  |  | -                        returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                        returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                        returnMap.put("message", "请选择视频素材进行上传素材");
 | 
	
		
			
				|  |  | -                        return returnMap;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    for (int i = 0; i < haveSinglePicVideoUrlArr.size(); i++) {
 | 
	
		
			
				|  |  | -                        String haveSinglePicVideoUrl = haveSinglePicVideoUrlArr.get(i).toString();
 | 
	
		
			
				|  |  | -                        if (Check.isNull(haveSinglePicVideoUrl)) {
 | 
	
		
			
				|  |  | -                            continue;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                        JSONObject haveLocalVideoJson = new JSONObject();
 | 
	
		
			
				|  |  | -                        haveLocalVideoJson.put("positionType", requestJson.getString("positionType"));
 | 
	
		
			
				|  |  | -                        haveLocalVideoJson.put("videoUrl", haveSinglePicVideoUrl);
 | 
	
		
			
				|  |  | -                        haveLocalVideoJson.put("accountId", accountId);
 | 
	
		
			
				|  |  | -                        haveLocalVideoJson.put("description", requestJson.getString("description"));
 | 
	
		
			
				|  |  | -                        haveLocalVideoJson.put("login_id", requestJson.getString("loginId"));
 | 
	
		
			
				|  |  | -                        haveLocalVideoJson.put("videoType", requestJson.getString("creativeMaterialType"));
 | 
	
		
			
				|  |  | -                        // 校验文件是否在本地有留存记录
 | 
	
		
			
				|  |  | -                        String havaVideoUrl = videoService.localInsert(haveLocalVideoJson);
 | 
	
		
			
				|  |  | -                        if (Check.isNull(havaVideoUrl)) {
 | 
	
		
			
				|  |  | -                            log.error("创建创意视频为空,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                            returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                            returnMap.put("message", "请选择上传的视频");
 | 
	
		
			
				|  |  | -                            returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                            return returnMap;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        // 上传视频到快手后台
 | 
	
		
			
				|  |  | -                        Map<String, Object> videoMap = kuaishouInterfaceService.videoUpload(accountId, accessToken, havaVideoUrl);
 | 
	
		
			
				|  |  | -                        if ((Integer) videoMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                            log.error("后贴片素材上传视频失败,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                            return videoMap;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                        createJson.put("photo_id", videoMap.get("photoId"));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        if (haveSinglePicVideoUrlArr.size() == 1) {
 | 
	
		
			
				|  |  | -                            createJson.put("creative_name", creativeName);
 | 
	
		
			
				|  |  | -                        } else {
 | 
	
		
			
				|  |  | -                            createJson.put("creative_name", creativeName + "_" + i);
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                        Map<String, Object> creativeMap = kuaishouInterfaceService.creativeCreate(accessToken, accountId, createJson, 1);
 | 
	
		
			
				|  |  | -                        if ((Integer) creativeMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                            log.error("后贴片视频素材批量创建创意失败,accountId:{},creativeName:{}", accountId, creativeName + "_" + i);
 | 
	
		
			
				|  |  | -                            return creativeMap;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    // 后贴片图片素材
 | 
	
		
			
				|  |  | -                    JSONArray haveSinglePicimagesListArr = requestJson.getJSONArray("haveSinglePicimagesList");
 | 
	
		
			
				|  |  | -                    if (Check.isNull(haveSinglePicimagesListArr)) {
 | 
	
		
			
				|  |  | -                        returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -                        returnMap.put("success", false);
 | 
	
		
			
				|  |  | -                        returnMap.put("message", "请选择后贴片图片素材进行上传");
 | 
	
		
			
				|  |  | -                        return returnMap;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    for (int i = 0; i < haveSinglePicimagesListArr.size(); i++) {
 | 
	
		
			
				|  |  | -                        String imageUrl = haveSinglePicimagesListArr.get(i).toString();
 | 
	
		
			
				|  |  | -                        if (Check.isNull(imageUrl)) {
 | 
	
		
			
				|  |  | -                            continue;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                        JSONObject imageJson = new JSONObject();
 | 
	
		
			
				|  |  | -                        imageJson.put("url", imageUrl);
 | 
	
		
			
				|  |  | -                        imageJson.put("accountId", accountId);
 | 
	
		
			
				|  |  | -                        imageJson.put("positionType", requestJson.getInteger("positionType"));
 | 
	
		
			
				|  |  | -                        imageJson.put("loginId", requestJson.getString("loginId"));
 | 
	
		
			
				|  |  | -                        imageJson.put("videoUploadType", requestJson.getString("singlePicTiepianType"));
 | 
	
		
			
				|  |  | -                        String imagePath = imageService.localInsert(imageJson);
 | 
	
		
			
				|  |  | -                        Map<String, Object> imageMap = kuaishouInterfaceService.imageUpload(accountId, accessToken, imagePath, 3);
 | 
	
		
			
				|  |  | -                        if ((Integer) imageMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                            log.error("上传后贴片单张图片素材失败,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                            return imageMap;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                        if (haveSinglePicimagesListArr.size() == 1) {
 | 
	
		
			
				|  |  | -                            createJson.put("creative_name", creativeName);
 | 
	
		
			
				|  |  | -                        } else {
 | 
	
		
			
				|  |  | -                            createJson.put("creative_name", creativeName + "_" + i);
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                        JSONArray imageTokens = new JSONArray();
 | 
	
		
			
				|  |  | -                        imageTokens.add(imageMap.get("imageToken"));
 | 
	
		
			
				|  |  | -                        createJson.put("image_tokens", imageTokens);
 | 
	
		
			
				|  |  | -                        Map<String, Object> creativeMap = kuaishouInterfaceService.creativeCreate(accessToken, accountId, createJson, 1);
 | 
	
		
			
				|  |  | -                        if ((Integer) creativeMap.get("code") != 0) {
 | 
	
		
			
				|  |  | -                            log.error("后贴片素材单张图片批量创建创意失败,accountId:{}", accountId);
 | 
	
		
			
				|  |  | -                            return creativeMap;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            returnMap.put("code", 0);
 | 
	
		
			
				|  |  | -            returnMap.put("success", true);
 | 
	
		
			
				|  |  | -            returnMap.put("message", "创建创意成功");
 | 
	
		
			
				|  |  | -        } catch (Exception e) {
 | 
	
		
			
				|  |  | -            returnMap.put("code", -1);
 | 
	
		
			
				|  |  | -            returnMap.put("success", false);
 | 
	
		
			
				|  |  | -            returnMap.put("message", "批量创建广告创意失败");
 | 
	
		
			
				|  |  | -            e.printStackTrace();
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return returnMap;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 三级联动 查询账号 计划 模板信息
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param loginId
 | 
	
		
			
				|  |  | -     * @return
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public JSONArray getOptions(String loginId, Long accountId) {
 | 
	
		
			
				|  |  | -        JSONArray result = new JSONArray();
 | 
	
		
			
				|  |  | -        QueryWrapper<KuaiShouGroupCreateLog> wrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -        wrapper.eq("login_id", loginId).eq("account_id", accountId).orderByDesc("create_time");
 | 
	
		
			
				|  |  | -        wrapper.groupBy("campaign_id");
 | 
	
		
			
				|  |  | -        List<KuaiShouGroupCreateLog> accounts = groupCreateLogMapper.selectList(wrapper);
 | 
	
		
			
				|  |  | -        if (!Check.isNull(accounts)) {
 | 
	
		
			
				|  |  | -            for (KuaiShouGroupCreateLog groupCreateLog : accounts) {
 | 
	
		
			
				|  |  | -                JSONObject optionsJson = new JSONObject();
 | 
	
		
			
				|  |  | -                Long campaignId = groupCreateLog.getCampaignId();
 | 
	
		
			
				|  |  | -                optionsJson.put("value", campaignId);
 | 
	
		
			
				|  |  | -                QueryWrapper<KuaiShouCampaignCreate> queryWrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -                queryWrapper.eq("account_id", accountId).eq("campaign_id", campaignId).orderByDesc("create_time");
 | 
	
		
			
				|  |  | -                queryWrapper.last("limit 1");
 | 
	
		
			
				|  |  | -                KuaiShouCampaignCreate campaignCreate = campaignCreateMapper.selectOne(queryWrapper);
 | 
	
		
			
				|  |  | -                if (Check.isNull(campaignCreate)) {
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                optionsJson.put("label", campaignCreate.getCampaignName());
 | 
	
		
			
				|  |  | -                optionsJson.put("isLeaf", false);
 | 
	
		
			
				|  |  | -                result.add(optionsJson);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return result;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 获取组信息
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param loginId
 | 
	
		
			
				|  |  | -     * @param campaignId
 | 
	
		
			
				|  |  | -     * @return
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public JSONArray getChildren(String loginId, Long campaignId, Long accountId) {
 | 
	
		
			
				|  |  | -        JSONArray result = new JSONArray();
 | 
	
		
			
				|  |  | -        QueryWrapper<KuaiShouGroupCreateLog> wrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -        wrapper.eq("account_id", accountId);
 | 
	
		
			
				|  |  | -        wrapper.eq("campaign_id", campaignId);
 | 
	
		
			
				|  |  | -        wrapper.eq("login_id", loginId);
 | 
	
		
			
				|  |  | -        wrapper.orderByDesc("create_time");
 | 
	
		
			
				|  |  | -        wrapper.groupBy("unit_name");
 | 
	
		
			
				|  |  | -        List<KuaiShouGroupCreateLog> accounts = groupCreateLogMapper.selectList(wrapper);
 | 
	
		
			
				|  |  | -        if (!Check.isNull(accounts)) {
 | 
	
		
			
				|  |  | -            for (KuaiShouGroupCreateLog groupCreateLog : accounts) {
 | 
	
		
			
				|  |  | -                JSONObject optionsJson = new JSONObject();
 | 
	
		
			
				|  |  | -                optionsJson.put("value", groupCreateLog.getUnitId());
 | 
	
		
			
				|  |  | -                optionsJson.put("label", groupCreateLog.getUnitName());
 | 
	
		
			
				|  |  | -                result.add(optionsJson);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return result;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -}
 |