Browse Source

一户多开 图片素材分账户投放 && 与快手后台打通定向模板

yumeng 4 years ago
parent
commit
bd9569f531

+ 66 - 51
module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadImageServiceImpl.java

@@ -6,6 +6,7 @@ import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouAdvertiserBaseInfoService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
 import cn.com.ctop.manage.modules.material.service.IMaterialUploadImageService;
 import com.alibaba.fastjson.JSONObject;
@@ -35,7 +36,7 @@ import java.util.concurrent.Executors;
 @Slf4j
 @Service
 public class MaterialUploadImageServiceImpl implements IMaterialUploadImageService {
-    static ExecutorService executorService = Executors.newFixedThreadPool(8);
+    static ExecutorService executorService = Executors.newFixedThreadPool(15);
 
     @Value("${oss.replace.download}")
     private String downloadUrl;
@@ -44,6 +45,8 @@ public class MaterialUploadImageServiceImpl implements IMaterialUploadImageServi
     private IMaterialImageInfoService materialImageInfoService;
     @Autowired
     private IKuaiShouImageGetService imageGetService;
+    @Autowired
+    private IKuaiShouAdvertiserBaseInfoService baseInfoService;
 
     /**
      * 同步素材到账号下
@@ -58,63 +61,75 @@ public class MaterialUploadImageServiceImpl implements IMaterialUploadImageServi
                     if (Check.isNull(imageInfo)) {
                         continue;
                     }
-                    executorService.submit(new Runnable() {
-                        @SneakyThrows
-                        @Override
-                        public void run() {
-                            synchronized (this) {
-                                QueryWrapper<KuaiShouImageGet> imageQueryWrapper = new QueryWrapper<>();
-                                imageQueryWrapper.eq("account_id", accountId);
-                                imageQueryWrapper.eq("signature", imageInfo.getString("signature"));
-                                List<KuaiShouImageGet> imageGetList = imageGetService.list(imageQueryWrapper);
-                                if (Check.isNull(imageGetList)) {
-                                    Map<String, String> headerMap = new HashMap<>();
-                                    JSONObject requestJson = new JSONObject();
-                                    requestJson.put("advertiser_id", accountId);
-                                    headerMap.put("Access-Token", accessToken);
-                                    headerMap.put("Content-Type", "multipart/form-data");
 
-                                    requestJson.put("url", imageInfo.getString("imageUrl"));
-                                    requestJson.put("signature", imageInfo.getString("signature"));
-                                    requestJson.put("type", "2");
-                                    requestJson.put("upload_type", "2");
-                                    String requestUrl = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.IMAGE_UPLOAD;
-                                    String result = exceptInfoForRestTemplate(requestUrl, requestJson, headerMap);
-                                    JSONObject resultJson = JSONObject.parseObject(result);
-                                    if (!Check.isNull(resultJson)) {
-                                        if (resultJson.getInteger("code") == 0) {
-                                            JSONObject dataJson = resultJson.getJSONObject("data");
-                                            if (!Check.isNull(dataJson)) {
-                                                String signature = dataJson.getString("signature");
-                                                String image_token = dataJson.getString("image_token");
-                                                KuaiShouImageGet imageGet = new KuaiShouImageGet();
-                                                imageGet.setId(accountId + image_token);
-                                                imageGet.setAccountId(accountId);
-                                                imageGet.setUrl(dataJson.getString("url"));
-                                                imageGet.setWidth(dataJson.getInteger("width"));
-                                                imageGet.setHeight(dataJson.getInteger("height"));
-                                                imageGet.setSize(dataJson.getInteger("size"));
-                                                imageGet.setFormat(dataJson.getString("format"));
-                                                Integer type = MaterialEnum.getTypeBySize(dataJson.getInteger("width"), dataJson.getInteger("height"));
-                                                if (!Check.isNull(type)) {
-                                                    imageGet.setMaterialType(type);
+                    List<Long> accountList = baseInfoService.getAccountListByAccountId(accountId);
+                    if (Check.isNull(accountList)) {
+                        return;
+                    }
+
+                    for (int j = 0; j < accountList.size(); j++) {
+                        Long imageAccountId = accountList.get(j);
+                        if (Check.isNull(imageAccountId)) {
+                            continue;
+                        }
+                        executorService.submit(new Runnable() {
+                            @SneakyThrows
+                            @Override
+                            public void run() {
+                                synchronized (this) {
+                                    QueryWrapper<KuaiShouImageGet> imageQueryWrapper = new QueryWrapper<>();
+                                    imageQueryWrapper.eq("account_id", imageAccountId);
+                                    imageQueryWrapper.eq("signature", imageInfo.getString("signature"));
+                                    List<KuaiShouImageGet> imageGetList = imageGetService.list(imageQueryWrapper);
+                                    if (Check.isNull(imageGetList)) {
+                                        Map<String, String> headerMap = new HashMap<>();
+                                        JSONObject requestJson = new JSONObject();
+                                        requestJson.put("advertiser_id", imageAccountId);
+                                        headerMap.put("Access-Token", accessToken);
+                                        headerMap.put("Content-Type", "multipart/form-data");
+
+                                        requestJson.put("url", imageInfo.getString("imageUrl"));
+                                        requestJson.put("signature", imageInfo.getString("signature"));
+                                        requestJson.put("type", "2");
+                                        requestJson.put("upload_type", "2");
+                                        String requestUrl = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.IMAGE_UPLOAD;
+                                        String result = exceptInfoForRestTemplate(requestUrl, requestJson, headerMap);
+                                        JSONObject resultJson = JSONObject.parseObject(result);
+                                        if (!Check.isNull(resultJson)) {
+                                            if (resultJson.getInteger("code") == 0) {
+                                                JSONObject dataJson = resultJson.getJSONObject("data");
+                                                if (!Check.isNull(dataJson)) {
+                                                    String signature = dataJson.getString("signature");
+                                                    String image_token = dataJson.getString("image_token");
+                                                    KuaiShouImageGet imageGet = new KuaiShouImageGet();
+                                                    imageGet.setId(imageAccountId + image_token);
+                                                    imageGet.setAccountId(imageAccountId);
+                                                    imageGet.setUrl(dataJson.getString("url"));
+                                                    imageGet.setWidth(dataJson.getInteger("width"));
+                                                    imageGet.setHeight(dataJson.getInteger("height"));
+                                                    imageGet.setSize(dataJson.getInteger("size"));
+                                                    imageGet.setFormat(dataJson.getString("format"));
+                                                    Integer type = MaterialEnum.getTypeBySize(dataJson.getInteger("width"), dataJson.getInteger("height"));
+                                                    if (!Check.isNull(type)) {
+                                                        imageGet.setMaterialType(type);
+                                                    }
+                                                    String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+                                                    imageGet.setStatDate(DateUtils.parseDate(nowDate, "yyyy-MM-dd"));
+                                                    imageGet.setSignature(signature);
+                                                    imageGet.setImageToken(image_token);
+                                                    imageGetService.saveOrUpdate(imageGet);
                                                 }
-                                                String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
-                                                imageGet.setStatDate(DateUtils.parseDate(nowDate, "yyyy-MM-dd"));
-                                                imageGet.setSignature(signature);
-                                                imageGet.setImageToken(image_token);
-                                                imageGetService.saveOrUpdate(imageGet);
+                                                log.info("快手封面素材素材同步完成,accountId:{},code:{},返回信息:{}", imageAccountId, imageInfo.getString("signature"), resultJson);
+                                            } else {
+                                                log.error("快手同步封面素材失败,返回信息:{},请求参数:{}", resultJson, requestJson);
                                             }
-                                            log.info("快手封面素材素材同步完成,accountId:{},code:{},返回信息:{}", accountId, imageInfo.getString("signature"), resultJson);
-                                        } else {
-                                            log.error("快手同步封面素材失败,返回信息:{},请求参数:{}", resultJson, requestJson);
                                         }
                                     }
-                                }
 
+                                }
                             }
-                        }
-                    });
+                        });
+                    }
                 }
             }
         } catch (Exception e) {

+ 4 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/KuaishouTemplateController.java

@@ -118,9 +118,9 @@ public class KuaishouTemplateController {
      * @param
      * @return
      */
-    @GetMapping(value = "/createTemplate")
-    public Result<Boolean> createTemplate(@RequestBody JSONObject requestJson) {
-        Result<Boolean> result = new Result<>();
+    @PostMapping(value = "/createTemplate")
+    public Result<JSONObject> createTemplate(@RequestBody JSONObject requestJson) {
+        Result<JSONObject> result = new Result<>();
         try {
 
             Long accountId = requestJson.getLong("accountId");
@@ -133,6 +133,7 @@ public class KuaishouTemplateController {
             }
             JSONObject returnJson = kuaishouTemplateService.createTemplate(accountId, oauthToken.getAccessToken(), requestJson);
             result.setSuccess(true);
+            result.setResult(returnJson);
         } catch (Exception e) {
             e.printStackTrace();
             result.setSuccess(false);

+ 30 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/KuaishouTemplateTargetController.java

@@ -1,9 +1,12 @@
 package cn.com.ctop.kuaishou.modules.batch.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouTemplate;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouTemplateTarget;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouTemplateService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouTemplateTargetService;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -47,6 +50,8 @@ import java.util.Map;
 public class KuaishouTemplateTargetController {
     @Autowired
     private IKuaishouTemplateTargetService kuaishouTemplateTargetService;
+    @Autowired
+    private IKuaishouTemplateService kuaishouTemplateService;
 
     /**
      * 分页列表查询
@@ -73,6 +78,31 @@ public class KuaishouTemplateTargetController {
         return result;
     }
 
+    @AutoLog(value = "快手-定向模板-详情-分页列表查询")
+    @ApiOperation(value = "快手-定向模板-详情-分页列表查询", notes = "快手-定向模板-详情-分页列表查询")
+    @GetMapping(value = "/getDetailByTemplateId")
+    public Result<JSONObject> getDetailByTemplateId(KuaishouTemplateTarget kuaishouTemplateTarget,
+                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                    HttpServletRequest req) {
+        Result<JSONObject> result = new Result<>();
+        QueryWrapper<KuaishouTemplateTarget> queryWrapper = QueryGenerator.initQueryWrapper(kuaishouTemplateTarget, req.getParameterMap());
+        queryWrapper.last("limit 1");
+        KuaishouTemplateTarget one = kuaishouTemplateTargetService.getOne(queryWrapper);
+        JSONObject json = new JSONObject();
+        json.put("detail", one);
+        QueryWrapper<KuaishouTemplate> baseQueryWrapper = new QueryWrapper<>();
+        baseQueryWrapper.eq("template_id", kuaishouTemplateTarget.getTemplateId());
+        baseQueryWrapper.last("limit 1");
+        // KuaishouTemplate
+        KuaishouTemplate base = kuaishouTemplateService.getOne(baseQueryWrapper);
+        json.put("base", base);
+        result.setSuccess(true);
+        result.setResult(json);
+        return result;
+    }
+
+
     /**
      * 添加
      *

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

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouAdvertiserBaseInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 快手-广告主基本信息
@@ -12,4 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KuaiShouAdvertiserBaseInfoMapper extends BaseMapper<KuaiShouAdvertiserBaseInfo> {
 
+    List<Long> getAccountListByAccountId(@Param("userId") String userId);
 }

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

@@ -2,4 +2,10 @@
 <!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.KuaiShouAdvertiserBaseInfoMapper">
 
+    <select id="getAccountListByAccountId" resultType="java.lang.Long">
+    select  account_id
+    from ctop_kuaishou_advertiser_base_info
+    where  user_id = #{userId}
+    </select>
+
 </mapper>

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

@@ -17,4 +17,7 @@ public interface IKuaiShouAdvertiserBaseInfoService extends IService<KuaiShouAdv
     KuaiShouAdvertiserBaseInfo getBaseInfo(Long accountId);
 
     List<KuaiShouAdvertiserBaseInfo> getAccountIdList(String userId);
+
+    List<Long> getAccountListByAccountId(Long accountId);
+
 }

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

@@ -49,4 +49,14 @@ public class KuaiShouAdvertiserBaseInfoServiceImpl extends ServiceImpl<KuaiShouA
         queryWrapper.groupBy("account_id");
         return advertiserBaseInfoMapper.selectList(queryWrapper);
     }
+
+    @Override
+    public List<Long> getAccountListByAccountId(Long accountId) {
+        QueryWrapper<KuaiShouAdvertiserBaseInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account_id", accountId);
+        queryWrapper.last("limit 1");
+        KuaiShouAdvertiserBaseInfo kuaiShouAdvertiserBaseInfo = advertiserBaseInfoMapper.selectOne(queryWrapper);
+        List<Long> accountList = advertiserBaseInfoMapper.getAccountListByAccountId(kuaiShouAdvertiserBaseInfo.getUserId());
+        return accountList;
+    }
 }

+ 42 - 11
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouTemplateServiceImpl.java

@@ -186,7 +186,7 @@ public class KuaishouTemplateServiceImpl extends ServiceImpl<KuaishouTemplateMap
      */
     @Override
     public JSONObject createTemplate(Long accountId, String accessToken, JSONObject requestJson) {
-
+        JSONObject returnJson = new JSONObject();
 
         try {
             if (Check.isNull(requestJson.getString("templateName"))) {
@@ -298,17 +298,34 @@ public class KuaishouTemplateServiceImpl extends ServiceImpl<KuaishouTemplateMap
             headers.put("Content-Type", " application/json");
 
             String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.TEMPLATE_CREATE;
-            System.err.println(param);
+
             String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
 
             JSONObject resultJson = JSONObject.parseObject(result);
-            System.err.println(resultJson);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    getTemplateByAccountId(accountId, accessToken, 1);
+                    returnJson.put("code", 0);
+                    JSONObject data = resultJson.getJSONObject("data");
+                    returnJson.put("templateId", data.getLong("template_id"));
+
+                } else {
+                    returnJson.put("code", -1);
+                    returnJson.put("message", returnJson.getString("message"));
+                }
+            } else {
+                returnJson.put("code", -1);
+                returnJson.put("message", "返回结果为空");
+            }
 
 
         } catch (Exception e) {
             e.printStackTrace();
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
         }
-        return null;
+        return returnJson;
     }
 
 
@@ -322,6 +339,7 @@ public class KuaishouTemplateServiceImpl extends ServiceImpl<KuaishouTemplateMap
      */
     @Override
     public JSONObject updateTemplate(Long accountId, String accessToken, JSONObject requestJson) {
+        JSONObject returnJson = new JSONObject();
         try {
             if (Check.isNull(requestJson.getString("templateName"))) {
                 throw new Exception("定向模板名称为必传项");
@@ -430,18 +448,31 @@ public class KuaishouTemplateServiceImpl extends ServiceImpl<KuaishouTemplateMap
             Map<String, String> headers = new HashMap<String, String>();
             headers.put("Access-Token", accessToken);
             headers.put("Content-Type", " application/json");
-
             String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.TEMPLATE_CREATE;
-            System.err.println(param);
             String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
-
             JSONObject resultJson = JSONObject.parseObject(result);
-            System.err.println(resultJson);
-
-
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    getTemplateByAccountId(accountId, accessToken, 1);
+                    returnJson.put("code", 0);
+                    JSONObject data = resultJson.getJSONObject("data");
+                    if (!Check.isNull(data)) {
+                        returnJson.put("templateId", data.getLong("template_id"));
+                    }
+                } else {
+                    returnJson.put("code", -1);
+                    returnJson.put("message", returnJson.getString("message"));
+                }
+            } else {
+                returnJson.put("code", -1);
+                returnJson.put("message", "返回结果为空");
+            }
         } catch (Exception e) {
             e.printStackTrace();
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
         }
-        return null;
+        return returnJson;
     }
 }