Explorar el Código

获取定向包城市id返回城市名称

yangzian hace 4 años
padre
commit
0c362c57a3

+ 1 - 1
jeecg-boot-bytedance/src/main/java/org/jeecg/modules/bytedance/advertise/entity/AiBytedanceAdvertiserStrategy.java

@@ -96,7 +96,7 @@ public class AiBytedanceAdvertiserStrategy{
 	/**应用图片集(投放目标)*/
 	private String adGamePackageThumbnailId;
 	/**定向包Id(用户定向)*/
-	private Integer adAudiencePackageId;
+	private String adAudiencePackageId;
 	/**地域(用户定向)*/
 	private String adDistrict;
 	/**地域定向详细(用户定向)*/

+ 15 - 0
jeecg-boot-bytedance/src/main/java/org/jeecg/modules/bytedance/advertise/mapper/BytedanceAreaInfoMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.bytedance.advertise.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.bytedance.advertise.entity.AiBytedanceAdDplinkInfo;
+import org.jeecg.modules.bytedance.advertise.entity.BytedanceAreaInfo;
+
+/**
+ * 省市区
+ * @author jeecg-boot
+ * 2021-04-26
+ * @version V1.0
+ */
+public interface BytedanceAreaInfoMapper extends BaseMapper<BytedanceAreaInfo> {
+
+}

+ 5 - 0
jeecg-boot-bytedance/src/main/java/org/jeecg/modules/bytedance/advertise/mapper/xml/BytedanceAreaInfoMapper.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="org.jeecg.modules.bytedance.advertise.mapper.BytedanceAreaInfoMapper">
+
+</mapper>

+ 28 - 4
jeecg-boot-bytedance/src/main/java/org/jeecg/modules/bytedance/advertise/service/impl/AiBytedanceAdvertiserStrategyServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.Joiner;
 import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.Transformer;
@@ -16,6 +17,7 @@ import org.jeecg.modules.bytedance.advertise.dockapi.MarketingService;
 import org.jeecg.modules.bytedance.advertise.entity.*;
 import org.jeecg.modules.bytedance.advertise.enums.BytedanceCreativeMatTypeEnum;
 import org.jeecg.modules.bytedance.advertise.mapper.AiBytedanceAdvertiserStrategyMapper;
+import org.jeecg.modules.bytedance.advertise.mapper.BytedanceAreaInfoMapper;
 import org.jeecg.modules.bytedance.advertise.service.*;
 import org.jeecg.modules.bytedance.advertise.vo.AdConvertQueryVo;
 import org.jeecg.modules.bytedance.advertise.vo.AdGroupSearchVo;
@@ -1259,6 +1261,9 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
     }
 
 
+    @Resource
+    private BytedanceAreaInfoMapper bytedanceAreaInfoMapper;
+
     /**
      *
      * @description: 获取定向包
@@ -1270,10 +1275,27 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
      * @author: zianY
      */
     public Result getAdAudiencePackage(String accountId, String landingType, String deliveryRange){
-        CtopOauthToken token = tokenService.getOauthTokenByAccountId(accountId);
+       CtopOauthToken token = tokenService.getOauthTokenByAccountId(accountId);
+        //查询定向包信息
        Result list = marketingService.getAudiencePackage(token,landingType,deliveryRange);
+       //处理返回结果
        JSONObject jsonObject = (JSONObject)list.getResult();
-        return Result.successMsg("成功。",jsonObject.getJSONArray("audience_packages"));
+       JSONArray array = jsonObject.getJSONArray("audience_packages");
+        List<Map<String,JSONObject>> dataList = JSONArray.parseObject(array.toJSONString(),List.class);
+
+        // 返回结果中的city 查询 城市名称
+        dataList.forEach(map -> {
+            JSONObject audience = map.get("audience");
+            JSONArray citys = audience.getJSONArray("city");
+            if (citys != null){
+                QueryWrapper<BytedanceAreaInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.in("code", citys);
+                List<BytedanceAreaInfo> cityList = bytedanceAreaInfoMapper.selectList(queryWrapper);
+                List<String> cityStr = cityList.stream().map(BytedanceAreaInfo::getName).collect(Collectors.toList());
+                audience.put("cityNames",cityStr);
+            }
+        });
+        return Result.successMsg("成功。",dataList);
     }
 
     /**
@@ -1289,9 +1311,11 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
         CtopOauthToken token = tokenService.getOauthTokenByAccountId(accountId);
         // 获取人群包列表
        Result list = marketingService.selectCustomAudience(token);
-        List<Map<String,Object>> listMap = (List<Map<String, Object>>) list.getResult();
+        //List<Map<String,Object>> listMap = (List<Map<String, Object>>) list.getResult();
+        JSONArray array =(JSONArray)list.getResult();
+        List<Map<String,Object>> dataList = JSONArray.parseObject(array.toJSONString(),List.class);
         //获取人群包id  List
-        List<Object> packageList = listMap.stream().map(map -> map.get("custom_audience_id")).collect(Collectors.toList());
+        List<Object> packageList = dataList.stream().map(map -> map.get("custom_audience_id")).collect(Collectors.toList());
         String idStr = Joiner.on(",").join(packageList);
         List<Integer> idsIntList = Arrays.asList(idStr.split(",")).stream().map(id -> Integer.valueOf(id.trim())).collect(Collectors.toList());
         //获取人群包详细信息