xuzuoyun 5 éve
szülő
commit
4d2cb444f6
100 módosított fájl, 5397 hozzáadás és 2253 törlés
  1. 0 36
      README.en.md
  2. 612 600
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java
  3. 41 18
      jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java
  4. 7 2
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java
  5. 6 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/AuthController.java
  6. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertisePlanController.java
  7. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserBudgetController.java
  8. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserController.java
  9. 193 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserPostController.java
  10. 58 58
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CtopToutiaoAdvertiserBudgetController.java
  11. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCampaignController.java
  12. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCampaignTemplateController.java
  13. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCreativeController.java
  14. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCreativeMaterialController.java
  15. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCustomAudienceController.java
  16. 107 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceTemplateController.java
  17. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceUserOrientationTemplateController.java
  18. 253 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/BytedanceDeliveryTargetTemplateController.java
  19. 0 244
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CTopToutiaoAdvertisePlanController.java
  20. 0 244
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CTopToutiaoAdvertiserController.java
  21. 28 12
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CallbackController.java
  22. 6 22
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/SyncDataController.java
  23. 0 205
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TouTiaoAdvertiserController.java
  24. 0 244
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ToutiaoCreativeMaterialController.java
  25. 58 57
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopToutiaoAdvertisePlan.java
  26. 8 8
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopToutiaoAdvertiser.java
  27. 15 13
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CtopToutiaoAdvertiserBudget.java
  28. 144 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceBudgetTemplate.java
  29. 29 23
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopToutiaoCampaign.java
  30. 87 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceCampaignTemplate.java
  31. 8 8
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ToutiaoCreative.java
  32. 15 11
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ToutiaoCreativeMaterial.java
  33. 126 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceCustomAudience.java
  34. 252 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceUserOrientationTemplate.java
  35. 126 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/BytedanceDeliveryTargetTemplate.java
  36. 83 66
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopOauthToken.java
  37. 0 97
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CtopToutiaoBudgetTemplate.java
  38. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceAdvertisePlanMapper.java
  39. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceAdvertiserBudgetMapper.java
  40. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopToutiaoAdvertiserMapper.java
  41. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceBudgetTemplateMapper.java
  42. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopToutiaoCampaignMapper.java
  43. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceCampaignTemplateMapper.java
  44. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ToutiaoCreativeMapper.java
  45. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceCreativeMaterialMapper.java
  46. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceCustomAudienceMapper.java
  47. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceUserOrientationTemplateMapper.java
  48. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/BytedanceDeliveryTargetTemplateMapper.java
  49. 2 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopOauthTokenMapper.java
  50. 0 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopToutiaoAdvertisePlanMapper.java
  51. 0 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CtopToutiaoAdvertiserBudgetMapper.java
  52. 0 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CtopToutiaoBudgetTemplateMapper.java
  53. 0 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ToutiaoCreativeMaterialMapper.java
  54. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ToutiaoCreativeMaterialMapper.xml
  55. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/CtopToutiaoBudgetTemplateMapper.xml
  56. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/CTopToutiaoCampaignMapper.xml
  57. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceBudgetTemplateMapper.xml
  58. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ToutiaoCreativeMapper.xml
  59. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceCampaignTemplateMapper.xml
  60. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/CTopToutiaoAdvertiserMapper.xml
  61. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceCreativeMaterialMapper.xml
  62. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceCustomAudienceMapper.xml
  63. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceUserOrientationTemplateMapper.xml
  64. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/BytedanceDeliveryTargetTemplateMapper.xml
  65. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceAdvertisePlanService.java
  66. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceAdvertiserBudgetService.java
  67. 3 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ITouTiaoAdvertiserService.java
  68. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceAdvertiserService.java
  69. 23 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceBudgetTemplateService.java
  70. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCampaignService.java
  71. 22 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCampaignTemplateService.java
  72. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCreativeMaterialService.java
  73. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCreativeService.java
  74. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCustomAudienceService.java
  75. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceUserOrientationTemplateService.java
  76. 22 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IBytedanceDeliveryTargetTemplateService.java
  77. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopOauthTokenService.java
  78. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopToutiaoAdvertisePlanService.java
  79. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopToutiaoAdvertiserService.java
  80. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopToutiaoCampaignService.java
  81. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICtopToutiaoAdvertiserBudgetService.java
  82. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICtopToutiaoBudgetTemplateService.java
  83. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IToutiaoCreativeMaterialService.java
  84. 0 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IToutiaoCreativeService.java
  85. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceAdvertisePlanServiceImpl.java
  86. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceAdvertiserBudgetServiceImpl.java
  87. 125 55
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/TouTiaoAdvertiserServiceImpl.java
  88. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceAdvertiserServiceImpl.java
  89. 70 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceBudgetTemplateServiceImpl.java
  90. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCampaignServiceImpl.java
  91. 65 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCampaignTemplateServiceImpl.java
  92. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCreativeMaterialServiceImpl.java
  93. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCreativeServiceImpl.java
  94. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCustomAudienceServiceImpl.java
  95. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceUserOrientationTemplateServiceImpl.java
  96. 66 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/BytedanceDeliveryTargetTemplateServiceImpl.java
  97. 12 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopOauthTokenServiceImpl.java
  98. 0 19
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopToutiaoAdvertisePlanServiceImpl.java
  99. 0 19
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopToutiaoAdvertiserServiceImpl.java
  100. 0 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopToutiaoCampaignServiceImpl.java

+ 0 - 36
README.en.md

@@ -1,36 +0,0 @@
-# 广告平台后端
-
-#### Description
-{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
-
-#### Software Architecture
-Software architecture description
-
-#### Installation
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Instructions
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### Contribution
-
-1. Fork the repository
-2. Create Feat_xxx branch
-3. Commit your code
-4. Create Pull Request
-
-
-#### Gitee Feature
-
-1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
-2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
-3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
-4. The most valuable open source project [GVP](https://gitee.com/gvp)
-5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
-6. The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 612 - 600
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java


+ 41 - 18
jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java

@@ -4,38 +4,61 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.MultipartConfigFactory;
 import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.core.env.Environment;
+import org.springframework.web.client.RestTemplate;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
+import javax.servlet.MultipartConfigElement;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
 @Slf4j
 @EnableSwagger2
 @SpringBootApplication
-@ComponentScan(basePackages={"cn.com.ctop","org.jeecg"})
+@ComponentScan(basePackages = {"cn.com.ctop", "org.jeecg"})
 @EnableAutoConfiguration
 @ComponentScan
+@Configuration
+
 
 public class JeecgApplication {
 
-  public static void main(String[] args) throws UnknownHostException {
-    //System.setProperty("spring.devtools.restart.enabled", "true");
-
-    ConfigurableApplicationContext application = SpringApplication.run(JeecgApplication.class, args);
-    Environment env = application.getEnvironment();
-    String ip = InetAddress.getLocalHost().getHostAddress();
-    String port = env.getProperty("server.port");
-    String path = env.getProperty("server.servlet.context-path");
-    log.info("\n----------------------------------------------------------\n\t" +
-        "Application Jeecg-Boot is running! Access URLs:\n\t" +
-        "Local: \t\thttp://localhost:" + port + path + "/\n\t" +
-        "External: \thttp://" + ip + ":" + port + path + "/\n\t" +
-        "swagger-ui: \thttp://" + ip + ":" + port + path + "/swagger-ui.html\n\t" +
-        "Doc: \t\thttp://" + ip + ":" + port + path + "/doc.html\n" +
-        "----------------------------------------------------------");
-
-  }
+    public static void main(String[] args) throws UnknownHostException {
+        //System.setProperty("spring.devtools.restart.enabled", "true");
+
+        ConfigurableApplicationContext application = SpringApplication.run(JeecgApplication.class, args);
+        Environment env = application.getEnvironment();
+        String ip = InetAddress.getLocalHost().getHostAddress();
+
+
+        String port = env.getProperty("server.port");
+        String path = env.getProperty("server.servlet.context-path");
+        log.info("\n----------------------------------------------------------\n\t" +
+                "Application Jeecg-Boot is running! Access URLs:\n\t" +
+                "Local: \t\thttp://localhost:" + port + path + "/\n\t" +
+                "External: \thttp://" + ip + ":" + port + path + "/\n\t" +
+                "swagger-ui: \thttp://" + ip + ":" + port + path + "/swagger-ui.html\n\t" +
+                "Doc: \t\thttp://" + ip + ":" + port + path + "/doc.html\n" +
+                "----------------------------------------------------------");
+
+    }
+
+    @Bean
+    public MultipartConfigElement multipartConfigElement() {
+        MultipartConfigFactory factory = new MultipartConfigFactory();
+        factory.setMaxFileSize("10240000KB");
+        factory.setMaxRequestSize("102400000KB");
+        return factory.createMultipartConfig();
+    }
+
+    @Bean
+    public RestTemplate restTemplate() {
+        return new RestTemplate();
+    }
+
 }

+ 7 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java

@@ -72,7 +72,10 @@ public class ShiroConfig {
 		filterChainDefinitionMap.put("/swagger**/**", "anon");
 		filterChainDefinitionMap.put("/webjars/**", "anon");
 		filterChainDefinitionMap.put("/v2/**", "anon");
-		
+		filterChainDefinitionMap.put("/kuaishou/**", "anon");
+		filterChainDefinitionMap.put("/**/*.mp4", "anon");
+
+
 		//性能监控
 		filterChainDefinitionMap.put("/actuator/metrics/**", "anon");
 		filterChainDefinitionMap.put("/actuator/httptrace/**", "anon");
@@ -86,8 +89,10 @@ public class ShiroConfig {
 		filterChainDefinitionMap.put("/auth/begin", "anon");
 		filterChainDefinitionMap.put("/ctop/syncdata/**", "anon");
 		//头条接口
-		filterChainDefinitionMap.put("/toutiao/**", "anon");
         filterChainDefinitionMap.put("/kuaishou", "anon");
+		filterChainDefinitionMap.put("/toutiao/dictitem/list", "anon");
+		filterChainDefinitionMap.put("/toutiao/advertiser/**", "anon");
+		filterChainDefinitionMap.put("/template/**", "user");
 
 		//爬虫接口
 		filterChainDefinitionMap.put("/graphql/video", "anon");

+ 6 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/AuthController.java

@@ -2,7 +2,6 @@ package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.utils.HttpUtils;
 import cn.com.ctop.common.utils.PropertiesUtils;
-import cn.com.ctop.kuaishou.modules.material.service.IKuaishouInterfaceService;
 import cn.com.ctop.toutiao.common.BytedanceInterfaceConstant;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
@@ -10,10 +9,12 @@ import constant.KuaishouInterfaceConstant;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.modules.ctop.entity.CTopOauthToken;
 import org.jeecg.modules.ctop.mapper.CTopOauthTokenMapper;
+import org.jeecg.modules.kuaishou.service.IKuaishouInterfaceService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -72,8 +73,10 @@ public class AuthController {
         return "auth_fail";
     }
 
+    @GetMapping("bytedance/refreshtoken")
 
-    public String getByteDanceAccessToken(String authCode,String accountId){
+
+    public String getByteDanceAccessToken(String authCode, String accountId) {
         Map<String, Object> param = new HashMap<String, Object>();
         param.put("app_id",PropertiesUtils.getValue("bytedance_config","bytedance_appid"));
         param.put("secret",PropertiesUtils.getValue("bytedance_config","bytedance_secret"));
@@ -110,7 +113,7 @@ public class AuthController {
                 .append(KuaishouInterfaceConstant.AUTH_PATH)
                 .append("?app_id="+PropertiesUtils.getValue("kuaishou_config","kuaishou_appid"))
                 .append("&state="+state)
-                .append("&scope=%5B%22report_service%22%2C%22ad_query%22%5D")
+                .append("&scope=%5B%22report_service%22%2C%22ad_query%22%2C%22ad_manage%22%5D")
                 .append("&redirect_uri="+ URLEncoder.encode(PropertiesUtils.getValue("kuaishou_config","kuaishou_callback_url"),"UTF-8"));
         return sb.toString();
     }

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertisePlanController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertisePlan;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertisePlanService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条广告计划信息")
+@RestController
+@RequestMapping("/ctop/byteDanceAdvertisePlan")
+public class ByteDanceAdvertisePlanController {
+    @Autowired
+    private IByteDanceAdvertisePlanService byteDanceAdvertisePlanService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceAdvertisePlan
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条广告计划信息-分页列表查询")
+    @ApiOperation(value = "今日头条广告计划信息-分页列表查询", notes = "今日头条广告计划信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceAdvertisePlan>> queryPageList(ByteDanceAdvertisePlan byteDanceAdvertisePlan,
+                                                               @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                               @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                               HttpServletRequest req) {
+        Result<IPage<ByteDanceAdvertisePlan>> result = new Result<IPage<ByteDanceAdvertisePlan>>();
+        QueryWrapper<ByteDanceAdvertisePlan> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceAdvertisePlan, req.getParameterMap());
+        Page<ByteDanceAdvertisePlan> page = new Page<ByteDanceAdvertisePlan>(pageNo, pageSize);
+        IPage<ByteDanceAdvertisePlan> pageList = byteDanceAdvertisePlanService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceAdvertisePlan
+     * @return
+     */
+    @AutoLog(value = "今日头条广告计划信息-添加")
+    @ApiOperation(value = "今日头条广告计划信息-添加", notes = "今日头条广告计划信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceAdvertisePlan> add(@RequestBody ByteDanceAdvertisePlan byteDanceAdvertisePlan) {
+        Result<ByteDanceAdvertisePlan> result = new Result<ByteDanceAdvertisePlan>();
+        try {
+            byteDanceAdvertisePlanService.save(byteDanceAdvertisePlan);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceAdvertisePlan
+     * @return
+     */
+    @AutoLog(value = "今日头条广告计划信息-编辑")
+    @ApiOperation(value = "今日头条广告计划信息-编辑", notes = "今日头条广告计划信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceAdvertisePlan> edit(@RequestBody ByteDanceAdvertisePlan byteDanceAdvertisePlan) {
+        Result<ByteDanceAdvertisePlan> result = new Result<ByteDanceAdvertisePlan>();
+        ByteDanceAdvertisePlan byteDanceAdvertisePlanEntity = byteDanceAdvertisePlanService.getById(byteDanceAdvertisePlan.getId());
+        if (byteDanceAdvertisePlanEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceAdvertisePlanService.updateById(byteDanceAdvertisePlan);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告计划信息-通过id删除")
+    @ApiOperation(value = "今日头条广告计划信息-通过id删除", notes = "今日头条广告计划信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceAdvertisePlanService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条广告计划信息-批量删除")
+    @ApiOperation(value = "今日头条广告计划信息-批量删除", notes = "今日头条广告计划信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceAdvertisePlan> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceAdvertisePlan> result = new Result<ByteDanceAdvertisePlan>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceAdvertisePlanService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告计划信息-通过id查询")
+    @ApiOperation(value = "今日头条广告计划信息-通过id查询", notes = "今日头条广告计划信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceAdvertisePlan> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceAdvertisePlan> result = new Result<ByteDanceAdvertisePlan>();
+        ByteDanceAdvertisePlan byteDanceAdvertisePlan = byteDanceAdvertisePlanService.getById(id);
+        if (byteDanceAdvertisePlan == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceAdvertisePlan);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceAdvertisePlan> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceAdvertisePlan byteDanceAdvertisePlan = JSON.parseObject(deString, ByteDanceAdvertisePlan.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceAdvertisePlan, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceAdvertisePlan> pageList = byteDanceAdvertisePlanService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条广告计划信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceAdvertisePlan.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条广告计划信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceAdvertisePlan> listByteDanceAdvertisePlans = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceAdvertisePlan.class, params);
+                byteDanceAdvertisePlanService.saveBatch(listByteDanceAdvertisePlans);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceAdvertisePlans.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserBudgetController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiserBudget;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserBudgetService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条广告主预算信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条广告主预算信息")
+@RestController
+@RequestMapping("/ctop/byteDanceAdvertiserBudget")
+public class ByteDanceAdvertiserBudgetController {
+    @Autowired
+    private IByteDanceAdvertiserBudgetService byteDanceAdvertiserBudgetService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceAdvertiserBudget
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主预算信息-分页列表查询")
+    @ApiOperation(value = "今日头条广告主预算信息-分页列表查询", notes = "今日头条广告主预算信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceAdvertiserBudget>> queryPageList(ByteDanceAdvertiserBudget byteDanceAdvertiserBudget,
+                                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                  HttpServletRequest req) {
+        Result<IPage<ByteDanceAdvertiserBudget>> result = new Result<IPage<ByteDanceAdvertiserBudget>>();
+        QueryWrapper<ByteDanceAdvertiserBudget> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceAdvertiserBudget, req.getParameterMap());
+        Page<ByteDanceAdvertiserBudget> page = new Page<ByteDanceAdvertiserBudget>(pageNo, pageSize);
+        IPage<ByteDanceAdvertiserBudget> pageList = byteDanceAdvertiserBudgetService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceAdvertiserBudget
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主预算信息-添加")
+    @ApiOperation(value = "今日头条广告主预算信息-添加", notes = "今日头条广告主预算信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceAdvertiserBudget> add(@RequestBody ByteDanceAdvertiserBudget byteDanceAdvertiserBudget) {
+        Result<ByteDanceAdvertiserBudget> result = new Result<ByteDanceAdvertiserBudget>();
+        try {
+            byteDanceAdvertiserBudgetService.save(byteDanceAdvertiserBudget);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceAdvertiserBudget
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主预算信息-编辑")
+    @ApiOperation(value = "今日头条广告主预算信息-编辑", notes = "今日头条广告主预算信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceAdvertiserBudget> edit(@RequestBody ByteDanceAdvertiserBudget byteDanceAdvertiserBudget) {
+        Result<ByteDanceAdvertiserBudget> result = new Result<ByteDanceAdvertiserBudget>();
+        ByteDanceAdvertiserBudget byteDanceAdvertiserBudgetEntity = byteDanceAdvertiserBudgetService.getById(byteDanceAdvertiserBudget.getId());
+        if (byteDanceAdvertiserBudgetEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceAdvertiserBudgetService.updateById(byteDanceAdvertiserBudget);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主预算信息-通过id删除")
+    @ApiOperation(value = "今日头条广告主预算信息-通过id删除", notes = "今日头条广告主预算信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceAdvertiserBudgetService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主预算信息-批量删除")
+    @ApiOperation(value = "今日头条广告主预算信息-批量删除", notes = "今日头条广告主预算信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceAdvertiserBudget> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceAdvertiserBudget> result = new Result<ByteDanceAdvertiserBudget>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceAdvertiserBudgetService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主预算信息-通过id查询")
+    @ApiOperation(value = "今日头条广告主预算信息-通过id查询", notes = "今日头条广告主预算信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceAdvertiserBudget> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceAdvertiserBudget> result = new Result<ByteDanceAdvertiserBudget>();
+        ByteDanceAdvertiserBudget byteDanceAdvertiserBudget = byteDanceAdvertiserBudgetService.getById(id);
+        if (byteDanceAdvertiserBudget == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceAdvertiserBudget);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceAdvertiserBudget> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceAdvertiserBudget byteDanceAdvertiserBudget = JSON.parseObject(deString, ByteDanceAdvertiserBudget.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceAdvertiserBudget, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceAdvertiserBudget> pageList = byteDanceAdvertiserBudgetService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条广告主预算信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceAdvertiserBudget.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条广告主预算信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceAdvertiserBudget> listByteDanceAdvertiserBudgets = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceAdvertiserBudget.class, params);
+                byteDanceAdvertiserBudgetService.saveBatch(listByteDanceAdvertiserBudgets);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceAdvertiserBudgets.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiser;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条广告主信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条广告主信息")
+@RestController
+@RequestMapping("/ctop/byteDanceAdvertiser")
+public class ByteDanceAdvertiserController {
+    @Autowired
+    private IByteDanceAdvertiserService byteDanceAdvertiserService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceAdvertiser
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主信息-分页列表查询")
+    @ApiOperation(value = "今日头条广告主信息-分页列表查询", notes = "今日头条广告主信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceAdvertiser>> queryPageList(ByteDanceAdvertiser byteDanceAdvertiser,
+                                                            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                            HttpServletRequest req) {
+        Result<IPage<ByteDanceAdvertiser>> result = new Result<IPage<ByteDanceAdvertiser>>();
+        QueryWrapper<ByteDanceAdvertiser> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceAdvertiser, req.getParameterMap());
+        Page<ByteDanceAdvertiser> page = new Page<ByteDanceAdvertiser>(pageNo, pageSize);
+        IPage<ByteDanceAdvertiser> pageList = byteDanceAdvertiserService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceAdvertiser
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主信息-添加")
+    @ApiOperation(value = "今日头条广告主信息-添加", notes = "今日头条广告主信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceAdvertiser> add(@RequestBody ByteDanceAdvertiser byteDanceAdvertiser) {
+        Result<ByteDanceAdvertiser> result = new Result<ByteDanceAdvertiser>();
+        try {
+            byteDanceAdvertiserService.save(byteDanceAdvertiser);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceAdvertiser
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主信息-编辑")
+    @ApiOperation(value = "今日头条广告主信息-编辑", notes = "今日头条广告主信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceAdvertiser> edit(@RequestBody ByteDanceAdvertiser byteDanceAdvertiser) {
+        Result<ByteDanceAdvertiser> result = new Result<ByteDanceAdvertiser>();
+        ByteDanceAdvertiser byteDanceAdvertiserEntity = byteDanceAdvertiserService.getById(byteDanceAdvertiser.getId());
+        if (byteDanceAdvertiserEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceAdvertiserService.updateById(byteDanceAdvertiser);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主信息-通过id删除")
+    @ApiOperation(value = "今日头条广告主信息-通过id删除", notes = "今日头条广告主信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceAdvertiserService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主信息-批量删除")
+    @ApiOperation(value = "今日头条广告主信息-批量删除", notes = "今日头条广告主信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceAdvertiser> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceAdvertiser> result = new Result<ByteDanceAdvertiser>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceAdvertiserService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告主信息-通过id查询")
+    @ApiOperation(value = "今日头条广告主信息-通过id查询", notes = "今日头条广告主信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceAdvertiser> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceAdvertiser> result = new Result<ByteDanceAdvertiser>();
+        ByteDanceAdvertiser byteDanceAdvertiser = byteDanceAdvertiserService.getById(id);
+        if (byteDanceAdvertiser == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceAdvertiser);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceAdvertiser> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceAdvertiser byteDanceAdvertiser = JSON.parseObject(deString, ByteDanceAdvertiser.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceAdvertiser, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceAdvertiser> pageList = byteDanceAdvertiserService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条广告主信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceAdvertiser.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条广告主信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceAdvertiser> listByteDanceAdvertisers = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceAdvertiser.class, params);
+                byteDanceAdvertiserService.saveBatch(listByteDanceAdvertisers);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceAdvertisers.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 193 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserPostController.java

@@ -0,0 +1,193 @@
+package org.jeecg.modules.ctop.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.*;
+import org.jeecg.modules.ctop.service.*;
+import org.jeecg.modules.system.entity.SysDictItem;
+import org.jeecg.modules.system.service.ISysDictItemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * 头条广告主相关 2019年7月10日14:13:04
+ *
+ * @author 宋英豪
+ */
+@RestController
+@RequestMapping("toutiao")
+public class ByteDanceAdvertiserPostController {
+    @Autowired
+    private IByteDanceAdvertiserDataService advertiserDataService;
+
+    /**
+     * 1:获取广告主信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/info")
+    public Map<String, Object> advertiserInfo(String accountId) {
+        return advertiserDataService.getAdvertiserInfo(accountId);
+    }
+
+    /**
+     * 2:获取广告主广告计划信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/plan/get")
+    public Map<String, Object> advertiserPlan(String accountId, String ids) {
+        return advertiserDataService.getAdvertiserPlan(accountId, ids);
+    }
+
+    /**
+     * 3:修改广告计划信息状态 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/plan/update/status")
+    public Map<String, Object> advertiserPlanUpdateStatus(String accountId, String adIds, String optStatus) {
+        return advertiserDataService.advertiserPlanUpdateStatus(accountId, adIds, optStatus);
+    }
+
+    /**
+     * 4:修改广告计划信息状态 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/plan/update/bid")
+    public Map<String, Object> advertiserPlanUpdateBid(String accountId, String adIds, String bids) {
+        return advertiserDataService.advertiserPlanUpdateBid(accountId, adIds, bids);
+    }
+
+    /**
+     * 5:修改广告计划信息状态 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/plan/update/budget")
+    public Map<String, Object> advertiserPlanUpdateBudget(String accountId, String adIds, String budgets) {
+        return advertiserDataService.advertiserPlanUpdateBudget(accountId, adIds, budgets);
+    }
+
+    /**
+     * 6:获取广告主广告预算信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/budget/get/")
+    public Map<String, Object> advertiserBudget(String accountId) {
+        return advertiserDataService.getAdvertiserBudget(accountId);
+    }
+
+    /**
+     * 7:获取广告主广告组信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/campaign/get")
+    public Map<String, Object> advertiserCampaign(String accountId, String ids) {
+        return advertiserDataService.getAdvertiserCampaign(accountId, ids);
+    }
+
+    /**
+     * 8:获取广告主广告创意信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/creative/get")
+    public Map<String, Object> getAdvertiserCreative(String accountId, String ids) {
+        return advertiserDataService.getAdvertiserCreative(accountId, ids);
+    }
+
+    /**
+     * 9:修改广告创意信息状态 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/update/status/")
+    public Map<String, Object> advertiserCreativeUpdateStatus(String accountId, String creativeIds, String optStatus) {
+        return advertiserDataService.advertiserCreativeUpdateStatus(accountId, creativeIds, optStatus);
+    }
+
+    /**
+     * 10:获取广告主广告创意素材信息 @param accountId 本平台广告主id @param creativeIds 广告创意id
+     */
+    @RequestMapping("/advertiser/creative/material/read")
+    public Map<String, Object> advertiserCreativeMaterial(String accountId, String creativeIds) {
+        return advertiserDataService.getAdvertiserCreativeMaterial(accountId, creativeIds);
+    }
+
+    /**
+     * 11:创建广告组信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/campaign/create")
+    public Map<String, Object> advertiserCampaignCreate(String accountId, String campaignName, String budgetMode, Integer budget, String landingType) {
+        return advertiserDataService.advertiserCampaignCreate(accountId, campaignName, budgetMode, budget, landingType);
+    }
+
+    /**
+     * 12:广告组更新状态信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/campaign/update/status")
+    public Map<String, Object> advertiserCampaignUpdateStatus(String accountId, String campaignIds, String optStatus) {
+        return advertiserDataService.advertiserCampaignUpdateStatus(accountId, campaignIds, optStatus);
+    }
+
+    /**
+     * 13:广告组更新信息 @param accountId 本平台广告主id
+     */
+    @RequestMapping("/advertiser/campaign/update")
+    public Map<String, Object> advertiserCampaignUpdate(String accountId, Long campaignId, String budgetMode, Integer budget, String campaignName) {
+        return advertiserDataService.advertiserCampaignUpdate(accountId, campaignId, budgetMode, budget, campaignName);
+    }
+
+    /**
+     * 14:获取人群包信息
+     */
+    @RequestMapping("/advertiser/custom/audience/select")
+    public Map<String, Object> customAudienceSelect(String accountId) {
+        return advertiserDataService.advertiserCustomAudienceSelect(accountId);
+    }
+
+    /**
+     * @param audience
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     * @功能:查询字典数据
+     */
+    @RequestMapping(value = "audience/list", method = RequestMethod.GET)
+    public Result<IPage<ByteDanceCustomAudience>> audiencePageList(ByteDanceCustomAudience audience, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                   @RequestParam(name = "pageSize", defaultValue = "100") Integer pageSize, HttpServletRequest req) {
+        Result<IPage<ByteDanceCustomAudience>> result = new Result<>();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        audience.setAdvertiserId(user.getId());
+        QueryWrapper<ByteDanceCustomAudience> queryWrapper = QueryGenerator.initQueryWrapper(audience, req.getParameterMap());
+        queryWrapper.orderByAsc("sort_order");
+        Page<ByteDanceCustomAudience> page = new Page<>(pageNo, pageSize);
+        IPage<ByteDanceCustomAudience> pageList = audienceService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    @Autowired
+    private IByteDanceCustomAudienceService audienceService;
+
+
+    /**
+     * @param sysDictItem
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     * @功能:查询字典数据
+     */
+    @RequestMapping(value = "dictitem/list", method = RequestMethod.GET)
+    public Result<IPage<SysDictItem>> dictitemPageList(SysDictItem sysDictItem, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                       @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
+        Result<IPage<SysDictItem>> result = new Result<IPage<SysDictItem>>();
+        QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap());
+        queryWrapper.orderByAsc("sort_order");
+        Page<SysDictItem> page = new Page<SysDictItem>(pageNo, pageSize);
+        IPage<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    @Autowired
+    private ISysDictItemService sysDictItemService;
+}

+ 58 - 58
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CtopToutiaoAdvertiserBudgetController.java

@@ -12,8 +12,8 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.ctop.entity.CtopToutiaoAdvertiserBudget;
-import org.jeecg.modules.ctop.service.ICtopToutiaoAdvertiserBudgetService;
+import org.jeecg.modules.ctop.entity.ByteDanceBudgetTemplate;
+import org.jeecg.modules.ctop.service.IByteDanceBudgetTemplateService;
 import java.util.Date;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -36,38 +36,38 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
  /**
- * @Description: 头条广告主账户预算信息
+  * @Description: 今日头条预算模板信息
  * @Author: jeecg-boot
- * @Date:   2019-07-10
+  * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Slf4j
-@Api(tags="头条广告主账户预算信息")
+@Api(tags = "今日头条预算模板信息")
 @RestController
-@RequestMapping("/ctop/ctopToutiaoAdvertiserBudget")
-public class CtopToutiaoAdvertiserBudgetController {
+@RequestMapping("/ctop/byteDanceBudgetTemplate")
+public class ByteDanceBudgetTemplateController {
 	@Autowired
-	private ICtopToutiaoAdvertiserBudgetService ctopToutiaoAdvertiserBudgetService;
+    private IByteDanceBudgetTemplateService byteDanceBudgetTemplateService;
 	
 	/**
 	  * 分页列表查询
-	 * @param ctopToutiaoAdvertiserBudget
+     * @param byteDanceBudgetTemplate
 	 * @param pageNo
 	 * @param pageSize
 	 * @param req
 	 * @return
 	 */
-	@AutoLog(value = "头条广告主账户预算信息-分页列表查询")
-	@ApiOperation(value="头条广告主账户预算信息-分页列表查询", notes="头条广告主账户预算信息-分页列表查询")
+    @AutoLog(value = "今日头条预算模板信息-分页列表查询")
+    @ApiOperation(value = "今日头条预算模板信息-分页列表查询", notes = "今日头条预算模板信息-分页列表查询")
 	@GetMapping(value = "/list")
-	public Result<IPage<CtopToutiaoAdvertiserBudget>> queryPageList(CtopToutiaoAdvertiserBudget ctopToutiaoAdvertiserBudget,
-									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-									  HttpServletRequest req) {
-		Result<IPage<CtopToutiaoAdvertiserBudget>> result = new Result<IPage<CtopToutiaoAdvertiserBudget>>();
-		QueryWrapper<CtopToutiaoAdvertiserBudget> queryWrapper = QueryGenerator.initQueryWrapper(ctopToutiaoAdvertiserBudget, req.getParameterMap());
-		Page<CtopToutiaoAdvertiserBudget> page = new Page<CtopToutiaoAdvertiserBudget>(pageNo, pageSize);
-		IPage<CtopToutiaoAdvertiserBudget> pageList = ctopToutiaoAdvertiserBudgetService.page(page, queryWrapper);
+    public Result<IPage<ByteDanceBudgetTemplate>> queryPageList(ByteDanceBudgetTemplate byteDanceBudgetTemplate,
+                                                                @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                HttpServletRequest req) {
+        Result<IPage<ByteDanceBudgetTemplate>> result = new Result<IPage<ByteDanceBudgetTemplate>>();
+        QueryWrapper<ByteDanceBudgetTemplate> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceBudgetTemplate, req.getParameterMap());
+        Page<ByteDanceBudgetTemplate> page = new Page<ByteDanceBudgetTemplate>(pageNo, pageSize);
+        IPage<ByteDanceBudgetTemplate> pageList = byteDanceBudgetTemplateService.page(page, queryWrapper);
 		result.setSuccess(true);
 		result.setResult(pageList);
 		return result;
@@ -75,16 +75,16 @@ public class CtopToutiaoAdvertiserBudgetController {
 	
 	/**
 	  *   添加
-	 * @param ctopToutiaoAdvertiserBudget
+     * @param byteDanceBudgetTemplate
 	 * @return
 	 */
-	@AutoLog(value = "头条广告主账户预算信息-添加")
-	@ApiOperation(value="头条广告主账户预算信息-添加", notes="头条广告主账户预算信息-添加")
+    @AutoLog(value = "今日头条预算模板信息-添加")
+    @ApiOperation(value = "今日头条预算模板信息-添加", notes = "今日头条预算模板信息-添加")
 	@PostMapping(value = "/add")
-	public Result<CtopToutiaoAdvertiserBudget> add(@RequestBody CtopToutiaoAdvertiserBudget ctopToutiaoAdvertiserBudget) {
-		Result<CtopToutiaoAdvertiserBudget> result = new Result<CtopToutiaoAdvertiserBudget>();
+    public Result<ByteDanceBudgetTemplate> add(@RequestBody ByteDanceBudgetTemplate byteDanceBudgetTemplate) {
+        Result<ByteDanceBudgetTemplate> result = new Result<ByteDanceBudgetTemplate>();
 		try {
-			ctopToutiaoAdvertiserBudgetService.save(ctopToutiaoAdvertiserBudget);
+            byteDanceBudgetTemplateService.save(byteDanceBudgetTemplate);
 			result.success("添加成功!");
 		} catch (Exception e) {
 			log.error(e.getMessage(),e);
@@ -95,19 +95,19 @@ public class CtopToutiaoAdvertiserBudgetController {
 	
 	/**
 	  *  编辑
-	 * @param ctopToutiaoAdvertiserBudget
+     * @param byteDanceBudgetTemplate
 	 * @return
 	 */
-	@AutoLog(value = "头条广告主账户预算信息-编辑")
-	@ApiOperation(value="头条广告主账户预算信息-编辑", notes="头条广告主账户预算信息-编辑")
+    @AutoLog(value = "今日头条预算模板信息-编辑")
+    @ApiOperation(value = "今日头条预算模板信息-编辑", notes = "今日头条预算模板信息-编辑")
 	@PutMapping(value = "/edit")
-	public Result<CtopToutiaoAdvertiserBudget> edit(@RequestBody CtopToutiaoAdvertiserBudget ctopToutiaoAdvertiserBudget) {
-		Result<CtopToutiaoAdvertiserBudget> result = new Result<CtopToutiaoAdvertiserBudget>();
-		CtopToutiaoAdvertiserBudget ctopToutiaoAdvertiserBudgetEntity = ctopToutiaoAdvertiserBudgetService.getById(ctopToutiaoAdvertiserBudget.getId());
-		if(ctopToutiaoAdvertiserBudgetEntity==null) {
+    public Result<ByteDanceBudgetTemplate> edit(@RequestBody ByteDanceBudgetTemplate byteDanceBudgetTemplate) {
+        Result<ByteDanceBudgetTemplate> result = new Result<ByteDanceBudgetTemplate>();
+        ByteDanceBudgetTemplate byteDanceBudgetTemplateEntity = byteDanceBudgetTemplateService.getById(byteDanceBudgetTemplate.getId());
+        if (byteDanceBudgetTemplateEntity == null) {
 			result.error500("未找到对应实体");
 		}else {
-			boolean ok = ctopToutiaoAdvertiserBudgetService.updateById(ctopToutiaoAdvertiserBudget);
+            boolean ok = byteDanceBudgetTemplateService.updateById(byteDanceBudgetTemplate);
 			//TODO 返回false说明什么?
 			if(ok) {
 				result.success("修改成功!");
@@ -122,12 +122,12 @@ public class CtopToutiaoAdvertiserBudgetController {
 	 * @param id
 	 * @return
 	 */
-	@AutoLog(value = "头条广告主账户预算信息-通过id删除")
-	@ApiOperation(value="头条广告主账户预算信息-通过id删除", notes="头条广告主账户预算信息-通过id删除")
+    @AutoLog(value = "今日头条预算模板信息-通过id删除")
+    @ApiOperation(value = "今日头条预算模板信息-通过id删除", notes = "今日头条预算模板信息-通过id删除")
 	@DeleteMapping(value = "/delete")
 	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
 		try {
-			ctopToutiaoAdvertiserBudgetService.removeById(id);
+            byteDanceBudgetTemplateService.removeById(id);
 		} catch (Exception e) {
 			log.error("删除失败",e.getMessage());
 			return Result.error("删除失败!");
@@ -140,15 +140,15 @@ public class CtopToutiaoAdvertiserBudgetController {
 	 * @param ids
 	 * @return
 	 */
-	@AutoLog(value = "头条广告主账户预算信息-批量删除")
-	@ApiOperation(value="头条广告主账户预算信息-批量删除", notes="头条广告主账户预算信息-批量删除")
+    @AutoLog(value = "今日头条预算模板信息-批量删除")
+    @ApiOperation(value = "今日头条预算模板信息-批量删除", notes = "今日头条预算模板信息-批量删除")
 	@DeleteMapping(value = "/deleteBatch")
-	public Result<CtopToutiaoAdvertiserBudget> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<CtopToutiaoAdvertiserBudget> result = new Result<CtopToutiaoAdvertiserBudget>();
+    public Result<ByteDanceBudgetTemplate> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceBudgetTemplate> result = new Result<ByteDanceBudgetTemplate>();
 		if(ids==null || "".equals(ids.trim())) {
 			result.error500("参数不识别!");
 		}else {
-			this.ctopToutiaoAdvertiserBudgetService.removeByIds(Arrays.asList(ids.split(",")));
+            this.byteDanceBudgetTemplateService.removeByIds(Arrays.asList(ids.split(",")));
 			result.success("删除成功!");
 		}
 		return result;
@@ -159,16 +159,16 @@ public class CtopToutiaoAdvertiserBudgetController {
 	 * @param id
 	 * @return
 	 */
-	@AutoLog(value = "头条广告主账户预算信息-通过id查询")
-	@ApiOperation(value="头条广告主账户预算信息-通过id查询", notes="头条广告主账户预算信息-通过id查询")
+    @AutoLog(value = "今日头条预算模板信息-通过id查询")
+    @ApiOperation(value = "今日头条预算模板信息-通过id查询", notes = "今日头条预算模板信息-通过id查询")
 	@GetMapping(value = "/queryById")
-	public Result<CtopToutiaoAdvertiserBudget> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<CtopToutiaoAdvertiserBudget> result = new Result<CtopToutiaoAdvertiserBudget>();
-		CtopToutiaoAdvertiserBudget ctopToutiaoAdvertiserBudget = ctopToutiaoAdvertiserBudgetService.getById(id);
-		if(ctopToutiaoAdvertiserBudget==null) {
+    public Result<ByteDanceBudgetTemplate> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceBudgetTemplate> result = new Result<ByteDanceBudgetTemplate>();
+        ByteDanceBudgetTemplate byteDanceBudgetTemplate = byteDanceBudgetTemplateService.getById(id);
+        if (byteDanceBudgetTemplate == null) {
 			result.error500("未找到对应实体");
 		}else {
-			result.setResult(ctopToutiaoAdvertiserBudget);
+            result.setResult(byteDanceBudgetTemplate);
 			result.setSuccess(true);
 		}
 		return result;
@@ -183,13 +183,13 @@ public class CtopToutiaoAdvertiserBudgetController {
   @RequestMapping(value = "/exportXls")
   public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
       // Step.1 组装查询条件
-      QueryWrapper<CtopToutiaoAdvertiserBudget> queryWrapper = null;
+      QueryWrapper<ByteDanceBudgetTemplate> queryWrapper = null;
       try {
           String paramsStr = request.getParameter("paramsStr");
           if (oConvertUtils.isNotEmpty(paramsStr)) {
               String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              CtopToutiaoAdvertiserBudget ctopToutiaoAdvertiserBudget = JSON.parseObject(deString, CtopToutiaoAdvertiserBudget.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(ctopToutiaoAdvertiserBudget, request.getParameterMap());
+              ByteDanceBudgetTemplate byteDanceBudgetTemplate = JSON.parseObject(deString, ByteDanceBudgetTemplate.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(byteDanceBudgetTemplate, request.getParameterMap());
           }
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
@@ -197,11 +197,11 @@ public class CtopToutiaoAdvertiserBudgetController {
 
       //Step.2 AutoPoi 导出Excel
       ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<CtopToutiaoAdvertiserBudget> pageList = ctopToutiaoAdvertiserBudgetService.list(queryWrapper);
+      List<ByteDanceBudgetTemplate> pageList = byteDanceBudgetTemplateService.list(queryWrapper);
       //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "头条广告主账户预算信息列表");
-      mv.addObject(NormalExcelConstants.CLASS, CtopToutiaoAdvertiserBudget.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("头条广告主账户预算信息列表数据", "导出人:Jeecg", "导出信息"));
+      mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条预算模板信息列表");
+      mv.addObject(NormalExcelConstants.CLASS, ByteDanceBudgetTemplate.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条预算模板信息列表数据", "导出人:Jeecg", "导出信息"));
       mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
       return mv;
   }
@@ -224,9 +224,9 @@ public class CtopToutiaoAdvertiserBudgetController {
           params.setHeadRows(1);
           params.setNeedSave(true);
           try {
-              List<CtopToutiaoAdvertiserBudget> listCtopToutiaoAdvertiserBudgets = ExcelImportUtil.importExcel(file.getInputStream(), CtopToutiaoAdvertiserBudget.class, params);
-              ctopToutiaoAdvertiserBudgetService.saveBatch(listCtopToutiaoAdvertiserBudgets);
-              return Result.ok("文件导入成功!数据行数:" + listCtopToutiaoAdvertiserBudgets.size());
+              List<ByteDanceBudgetTemplate> listByteDanceBudgetTemplates = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceBudgetTemplate.class, params);
+              byteDanceBudgetTemplateService.saveBatch(listByteDanceBudgetTemplates);
+              return Result.ok("文件导入成功!数据行数:" + listByteDanceBudgetTemplates.size());
           } catch (Exception e) {
               log.error(e.getMessage(),e);
               return Result.error("文件导入失败:"+e.getMessage());

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCampaignController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaign;
+import org.jeecg.modules.ctop.service.IByteDanceCampaignService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条广告组信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条广告组信息")
+@RestController
+@RequestMapping("/ctop/byteDanceCampaign")
+public class ByteDanceCampaignController {
+    @Autowired
+    private IByteDanceCampaignService byteDanceCampaignService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceCampaign
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组信息-分页列表查询")
+    @ApiOperation(value = "今日头条广告组信息-分页列表查询", notes = "今日头条广告组信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceCampaign>> queryPageList(ByteDanceCampaign byteDanceCampaign,
+                                                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                          HttpServletRequest req) {
+        Result<IPage<ByteDanceCampaign>> result = new Result<IPage<ByteDanceCampaign>>();
+        QueryWrapper<ByteDanceCampaign> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCampaign, req.getParameterMap());
+        Page<ByteDanceCampaign> page = new Page<ByteDanceCampaign>(pageNo, pageSize);
+        IPage<ByteDanceCampaign> pageList = byteDanceCampaignService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceCampaign
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组信息-添加")
+    @ApiOperation(value = "今日头条广告组信息-添加", notes = "今日头条广告组信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceCampaign> add(@RequestBody ByteDanceCampaign byteDanceCampaign) {
+        Result<ByteDanceCampaign> result = new Result<ByteDanceCampaign>();
+        try {
+            byteDanceCampaignService.save(byteDanceCampaign);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceCampaign
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组信息-编辑")
+    @ApiOperation(value = "今日头条广告组信息-编辑", notes = "今日头条广告组信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceCampaign> edit(@RequestBody ByteDanceCampaign byteDanceCampaign) {
+        Result<ByteDanceCampaign> result = new Result<ByteDanceCampaign>();
+        ByteDanceCampaign byteDanceCampaignEntity = byteDanceCampaignService.getById(byteDanceCampaign.getId());
+        if (byteDanceCampaignEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceCampaignService.updateById(byteDanceCampaign);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组信息-通过id删除")
+    @ApiOperation(value = "今日头条广告组信息-通过id删除", notes = "今日头条广告组信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceCampaignService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组信息-批量删除")
+    @ApiOperation(value = "今日头条广告组信息-批量删除", notes = "今日头条广告组信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceCampaign> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceCampaign> result = new Result<ByteDanceCampaign>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceCampaignService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组信息-通过id查询")
+    @ApiOperation(value = "今日头条广告组信息-通过id查询", notes = "今日头条广告组信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceCampaign> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceCampaign> result = new Result<ByteDanceCampaign>();
+        ByteDanceCampaign byteDanceCampaign = byteDanceCampaignService.getById(id);
+        if (byteDanceCampaign == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceCampaign);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceCampaign> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceCampaign byteDanceCampaign = JSON.parseObject(deString, ByteDanceCampaign.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCampaign, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceCampaign> pageList = byteDanceCampaignService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条广告组信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceCampaign.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条广告组信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceCampaign> listByteDanceCampaigns = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceCampaign.class, params);
+                byteDanceCampaignService.saveBatch(listByteDanceCampaigns);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceCampaigns.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCampaignTemplateController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+import org.jeecg.modules.ctop.service.IByteDanceCampaignTemplateService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条广告组模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条广告组模板信息")
+@RestController
+@RequestMapping("/ctop/byteDanceCampaignTemplate")
+public class ByteDanceCampaignTemplateController {
+    @Autowired
+    private IByteDanceCampaignTemplateService byteDanceCampaignTemplateService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceCampaignTemplate
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组模板信息-分页列表查询")
+    @ApiOperation(value = "今日头条广告组模板信息-分页列表查询", notes = "今日头条广告组模板信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceCampaignTemplate>> queryPageList(ByteDanceCampaignTemplate byteDanceCampaignTemplate,
+                                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                  HttpServletRequest req) {
+        Result<IPage<ByteDanceCampaignTemplate>> result = new Result<IPage<ByteDanceCampaignTemplate>>();
+        QueryWrapper<ByteDanceCampaignTemplate> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCampaignTemplate, req.getParameterMap());
+        Page<ByteDanceCampaignTemplate> page = new Page<ByteDanceCampaignTemplate>(pageNo, pageSize);
+        IPage<ByteDanceCampaignTemplate> pageList = byteDanceCampaignTemplateService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceCampaignTemplate
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组模板信息-添加")
+    @ApiOperation(value = "今日头条广告组模板信息-添加", notes = "今日头条广告组模板信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceCampaignTemplate> add(@RequestBody ByteDanceCampaignTemplate byteDanceCampaignTemplate) {
+        Result<ByteDanceCampaignTemplate> result = new Result<ByteDanceCampaignTemplate>();
+        try {
+            byteDanceCampaignTemplateService.save(byteDanceCampaignTemplate);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceCampaignTemplate
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组模板信息-编辑")
+    @ApiOperation(value = "今日头条广告组模板信息-编辑", notes = "今日头条广告组模板信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceCampaignTemplate> edit(@RequestBody ByteDanceCampaignTemplate byteDanceCampaignTemplate) {
+        Result<ByteDanceCampaignTemplate> result = new Result<ByteDanceCampaignTemplate>();
+        ByteDanceCampaignTemplate byteDanceCampaignTemplateEntity = byteDanceCampaignTemplateService.getById(byteDanceCampaignTemplate.getId());
+        if (byteDanceCampaignTemplateEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceCampaignTemplateService.updateById(byteDanceCampaignTemplate);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组模板信息-通过id删除")
+    @ApiOperation(value = "今日头条广告组模板信息-通过id删除", notes = "今日头条广告组模板信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceCampaignTemplateService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组模板信息-批量删除")
+    @ApiOperation(value = "今日头条广告组模板信息-批量删除", notes = "今日头条广告组模板信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceCampaignTemplate> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceCampaignTemplate> result = new Result<ByteDanceCampaignTemplate>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceCampaignTemplateService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条广告组模板信息-通过id查询")
+    @ApiOperation(value = "今日头条广告组模板信息-通过id查询", notes = "今日头条广告组模板信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceCampaignTemplate> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceCampaignTemplate> result = new Result<ByteDanceCampaignTemplate>();
+        ByteDanceCampaignTemplate byteDanceCampaignTemplate = byteDanceCampaignTemplateService.getById(id);
+        if (byteDanceCampaignTemplate == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceCampaignTemplate);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceCampaignTemplate> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceCampaignTemplate byteDanceCampaignTemplate = JSON.parseObject(deString, ByteDanceCampaignTemplate.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCampaignTemplate, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceCampaignTemplate> pageList = byteDanceCampaignTemplateService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条广告组模板信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceCampaignTemplate.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条广告组模板信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceCampaignTemplate> listByteDanceCampaignTemplates = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceCampaignTemplate.class, params);
+                byteDanceCampaignTemplateService.saveBatch(listByteDanceCampaignTemplates);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceCampaignTemplates.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCreativeController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceCreative;
+import org.jeecg.modules.ctop.service.IByteDanceCreativeService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条创意信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条创意信息")
+@RestController
+@RequestMapping("/ctop/byteDanceCreative")
+public class ByteDanceCreativeController {
+    @Autowired
+    private IByteDanceCreativeService byteDanceCreativeService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceCreative
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条创意信息-分页列表查询")
+    @ApiOperation(value = "今日头条创意信息-分页列表查询", notes = "今日头条创意信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceCreative>> queryPageList(ByteDanceCreative byteDanceCreative,
+                                                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                          HttpServletRequest req) {
+        Result<IPage<ByteDanceCreative>> result = new Result<IPage<ByteDanceCreative>>();
+        QueryWrapper<ByteDanceCreative> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCreative, req.getParameterMap());
+        Page<ByteDanceCreative> page = new Page<ByteDanceCreative>(pageNo, pageSize);
+        IPage<ByteDanceCreative> pageList = byteDanceCreativeService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceCreative
+     * @return
+     */
+    @AutoLog(value = "今日头条创意信息-添加")
+    @ApiOperation(value = "今日头条创意信息-添加", notes = "今日头条创意信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceCreative> add(@RequestBody ByteDanceCreative byteDanceCreative) {
+        Result<ByteDanceCreative> result = new Result<ByteDanceCreative>();
+        try {
+            byteDanceCreativeService.save(byteDanceCreative);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceCreative
+     * @return
+     */
+    @AutoLog(value = "今日头条创意信息-编辑")
+    @ApiOperation(value = "今日头条创意信息-编辑", notes = "今日头条创意信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceCreative> edit(@RequestBody ByteDanceCreative byteDanceCreative) {
+        Result<ByteDanceCreative> result = new Result<ByteDanceCreative>();
+        ByteDanceCreative byteDanceCreativeEntity = byteDanceCreativeService.getById(byteDanceCreative.getId());
+        if (byteDanceCreativeEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceCreativeService.updateById(byteDanceCreative);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条创意信息-通过id删除")
+    @ApiOperation(value = "今日头条创意信息-通过id删除", notes = "今日头条创意信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceCreativeService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条创意信息-批量删除")
+    @ApiOperation(value = "今日头条创意信息-批量删除", notes = "今日头条创意信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceCreative> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceCreative> result = new Result<ByteDanceCreative>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceCreativeService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条创意信息-通过id查询")
+    @ApiOperation(value = "今日头条创意信息-通过id查询", notes = "今日头条创意信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceCreative> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceCreative> result = new Result<ByteDanceCreative>();
+        ByteDanceCreative byteDanceCreative = byteDanceCreativeService.getById(id);
+        if (byteDanceCreative == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceCreative);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceCreative> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceCreative byteDanceCreative = JSON.parseObject(deString, ByteDanceCreative.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCreative, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceCreative> pageList = byteDanceCreativeService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条创意信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceCreative.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条创意信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceCreative> listByteDanceCreatives = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceCreative.class, params);
+                byteDanceCreativeService.saveBatch(listByteDanceCreatives);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceCreatives.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCreativeMaterialController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceCreativeMaterial;
+import org.jeecg.modules.ctop.service.IByteDanceCreativeMaterialService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条创意素材信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条创意素材信息")
+@RestController
+@RequestMapping("/ctop/byteDanceCreativeMaterial")
+public class ByteDanceCreativeMaterialController {
+    @Autowired
+    private IByteDanceCreativeMaterialService byteDanceCreativeMaterialService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceCreativeMaterial
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条创意素材信息-分页列表查询")
+    @ApiOperation(value = "今日头条创意素材信息-分页列表查询", notes = "今日头条创意素材信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceCreativeMaterial>> queryPageList(ByteDanceCreativeMaterial byteDanceCreativeMaterial,
+                                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                  HttpServletRequest req) {
+        Result<IPage<ByteDanceCreativeMaterial>> result = new Result<IPage<ByteDanceCreativeMaterial>>();
+        QueryWrapper<ByteDanceCreativeMaterial> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCreativeMaterial, req.getParameterMap());
+        Page<ByteDanceCreativeMaterial> page = new Page<ByteDanceCreativeMaterial>(pageNo, pageSize);
+        IPage<ByteDanceCreativeMaterial> pageList = byteDanceCreativeMaterialService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceCreativeMaterial
+     * @return
+     */
+    @AutoLog(value = "今日头条创意素材信息-添加")
+    @ApiOperation(value = "今日头条创意素材信息-添加", notes = "今日头条创意素材信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceCreativeMaterial> add(@RequestBody ByteDanceCreativeMaterial byteDanceCreativeMaterial) {
+        Result<ByteDanceCreativeMaterial> result = new Result<ByteDanceCreativeMaterial>();
+        try {
+            byteDanceCreativeMaterialService.save(byteDanceCreativeMaterial);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceCreativeMaterial
+     * @return
+     */
+    @AutoLog(value = "今日头条创意素材信息-编辑")
+    @ApiOperation(value = "今日头条创意素材信息-编辑", notes = "今日头条创意素材信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceCreativeMaterial> edit(@RequestBody ByteDanceCreativeMaterial byteDanceCreativeMaterial) {
+        Result<ByteDanceCreativeMaterial> result = new Result<ByteDanceCreativeMaterial>();
+        ByteDanceCreativeMaterial byteDanceCreativeMaterialEntity = byteDanceCreativeMaterialService.getById(byteDanceCreativeMaterial.getId());
+        if (byteDanceCreativeMaterialEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceCreativeMaterialService.updateById(byteDanceCreativeMaterial);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条创意素材信息-通过id删除")
+    @ApiOperation(value = "今日头条创意素材信息-通过id删除", notes = "今日头条创意素材信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceCreativeMaterialService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条创意素材信息-批量删除")
+    @ApiOperation(value = "今日头条创意素材信息-批量删除", notes = "今日头条创意素材信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceCreativeMaterial> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceCreativeMaterial> result = new Result<ByteDanceCreativeMaterial>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceCreativeMaterialService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条创意素材信息-通过id查询")
+    @ApiOperation(value = "今日头条创意素材信息-通过id查询", notes = "今日头条创意素材信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceCreativeMaterial> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceCreativeMaterial> result = new Result<ByteDanceCreativeMaterial>();
+        ByteDanceCreativeMaterial byteDanceCreativeMaterial = byteDanceCreativeMaterialService.getById(id);
+        if (byteDanceCreativeMaterial == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceCreativeMaterial);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceCreativeMaterial> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceCreativeMaterial byteDanceCreativeMaterial = JSON.parseObject(deString, ByteDanceCreativeMaterial.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCreativeMaterial, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceCreativeMaterial> pageList = byteDanceCreativeMaterialService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条创意素材信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceCreativeMaterial.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条创意素材信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceCreativeMaterial> listByteDanceCreativeMaterials = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceCreativeMaterial.class, params);
+                byteDanceCreativeMaterialService.saveBatch(listByteDanceCreativeMaterials);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceCreativeMaterials.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceCustomAudienceController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceCustomAudience;
+import org.jeecg.modules.ctop.service.IByteDanceCustomAudienceService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 人群包信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "人群包信息")
+@RestController
+@RequestMapping("/ctop/byteDanceCustomAudience")
+public class ByteDanceCustomAudienceController {
+    @Autowired
+    private IByteDanceCustomAudienceService byteDanceCustomAudienceService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceCustomAudience
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "人群包信息-分页列表查询")
+    @ApiOperation(value = "人群包信息-分页列表查询", notes = "人群包信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceCustomAudience>> queryPageList(ByteDanceCustomAudience byteDanceCustomAudience,
+                                                                @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                HttpServletRequest req) {
+        Result<IPage<ByteDanceCustomAudience>> result = new Result<IPage<ByteDanceCustomAudience>>();
+        QueryWrapper<ByteDanceCustomAudience> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCustomAudience, req.getParameterMap());
+        Page<ByteDanceCustomAudience> page = new Page<ByteDanceCustomAudience>(pageNo, pageSize);
+        IPage<ByteDanceCustomAudience> pageList = byteDanceCustomAudienceService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceCustomAudience
+     * @return
+     */
+    @AutoLog(value = "人群包信息-添加")
+    @ApiOperation(value = "人群包信息-添加", notes = "人群包信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceCustomAudience> add(@RequestBody ByteDanceCustomAudience byteDanceCustomAudience) {
+        Result<ByteDanceCustomAudience> result = new Result<ByteDanceCustomAudience>();
+        try {
+            byteDanceCustomAudienceService.save(byteDanceCustomAudience);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceCustomAudience
+     * @return
+     */
+    @AutoLog(value = "人群包信息-编辑")
+    @ApiOperation(value = "人群包信息-编辑", notes = "人群包信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceCustomAudience> edit(@RequestBody ByteDanceCustomAudience byteDanceCustomAudience) {
+        Result<ByteDanceCustomAudience> result = new Result<ByteDanceCustomAudience>();
+        ByteDanceCustomAudience byteDanceCustomAudienceEntity = byteDanceCustomAudienceService.getById(byteDanceCustomAudience.getId());
+        if (byteDanceCustomAudienceEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceCustomAudienceService.updateById(byteDanceCustomAudience);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "人群包信息-通过id删除")
+    @ApiOperation(value = "人群包信息-通过id删除", notes = "人群包信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceCustomAudienceService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "人群包信息-批量删除")
+    @ApiOperation(value = "人群包信息-批量删除", notes = "人群包信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceCustomAudience> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceCustomAudience> result = new Result<ByteDanceCustomAudience>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceCustomAudienceService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "人群包信息-通过id查询")
+    @ApiOperation(value = "人群包信息-通过id查询", notes = "人群包信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceCustomAudience> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceCustomAudience> result = new Result<ByteDanceCustomAudience>();
+        ByteDanceCustomAudience byteDanceCustomAudience = byteDanceCustomAudienceService.getById(id);
+        if (byteDanceCustomAudience == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceCustomAudience);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceCustomAudience> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceCustomAudience byteDanceCustomAudience = JSON.parseObject(deString, ByteDanceCustomAudience.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceCustomAudience, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceCustomAudience> pageList = byteDanceCustomAudienceService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "人群包信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceCustomAudience.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("人群包信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceCustomAudience> listByteDanceCustomAudiences = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceCustomAudience.class, params);
+                byteDanceCustomAudienceService.saveBatch(listByteDanceCustomAudiences);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceCustomAudiences.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 107 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceTemplateController.java

@@ -0,0 +1,107 @@
+package org.jeecg.modules.ctop.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.ByteDanceBudgetTemplate;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+import org.jeecg.modules.ctop.entity.BytedanceDeliveryTargetTemplate;
+import org.jeecg.modules.ctop.entity.CTopOauthToken;
+import org.jeecg.modules.ctop.service.IByteDanceBudgetTemplateService;
+import org.jeecg.modules.ctop.service.IByteDanceCampaignTemplateService;
+import org.jeecg.modules.ctop.service.IBytedanceDeliveryTargetTemplateService;
+import org.jeecg.modules.ctop.service.ICTopOauthTokenService;
+import org.jeecg.modules.system.entity.SysDictItem;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+@RestController
+@RequestMapping("template")
+public class ByteDanceTemplateController {
+    /**
+     * 预算与出价模板
+     *
+     * @param template
+     * @param req
+     * @return
+     */
+    @PostMapping("budget/insert")
+    public Map<String, Object> budgetTemplateInsert(@RequestBody ByteDanceBudgetTemplate template, HttpServletRequest req) {
+        return budgetTemplateService.insertTemplate(template);
+    }
+
+    /**
+     * 广告组模板
+     *
+     * @param template
+     * @param req
+     * @return
+     */
+    @PostMapping("campaign/insert")
+    public Map<String, Object> campaignTemplateInsert(@RequestBody ByteDanceCampaignTemplate template, HttpServletRequest req) {
+        return campaignTemplateService.insertTemplate(template);
+    }
+
+    /**
+     * 投放目标
+     *
+     * @param template
+     * @param req
+     * @return
+     */
+    @PostMapping("deliverytarget/insert")
+    public Map<String, Object> diliverytargetTemplateInsert(@RequestBody BytedanceDeliveryTargetTemplate template, HttpServletRequest req) {
+        return deliveryTargetTemplateService.insertTemplate(template);
+    }
+
+    /**
+     * 预算与出价模板
+     *
+     * @param template
+     * @param req
+     * @return
+     */
+    @PostMapping("budget/list")
+    public Result<IPage<ByteDanceBudgetTemplate>> budgetTemplateList(ByteDanceBudgetTemplate template, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
+        return budgetTemplateService.getList(template, pageNo, pageSize, req);
+    }
+
+    /**
+     * 广告组模板
+     *
+     * @return
+     */
+    @PostMapping("campaign/list")
+    public Result<IPage<ByteDanceCampaignTemplate>> campaignTemplateList(ByteDanceCampaignTemplate template, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
+        return campaignTemplateService.getList(template, pageNo, pageSize, req);
+    }
+
+    /**
+     * 投放目标
+     *
+     * @param template
+     * @param req
+     * @return
+     */
+    @PostMapping("deliverytarget/list")
+    public Result<IPage<BytedanceDeliveryTargetTemplate>> diliverytargetTemplateList(BytedanceDeliveryTargetTemplate template, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
+        return deliveryTargetTemplateService.getList(template, pageNo, pageSize, req);
+    }
+
+    @Autowired
+    private IByteDanceCampaignTemplateService campaignTemplateService;
+    @Autowired
+    private IByteDanceBudgetTemplateService budgetTemplateService;
+    @Autowired
+    private IBytedanceDeliveryTargetTemplateService deliveryTargetTemplateService;
+    @Autowired
+    private ICTopOauthTokenService tokenService;
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceUserOrientationTemplateController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.ByteDanceUserOrientationTemplate;
+import org.jeecg.modules.ctop.service.IByteDanceUserOrientationTemplateService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 今日头条受众模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "今日头条受众模板信息")
+@RestController
+@RequestMapping("/ctop/byteDanceUserOrientationTemplate")
+public class ByteDanceUserOrientationTemplateController {
+    @Autowired
+    private IByteDanceUserOrientationTemplateService byteDanceUserOrientationTemplateService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param byteDanceUserOrientationTemplate
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "今日头条受众模板信息-分页列表查询")
+    @ApiOperation(value = "今日头条受众模板信息-分页列表查询", notes = "今日头条受众模板信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ByteDanceUserOrientationTemplate>> queryPageList(ByteDanceUserOrientationTemplate byteDanceUserOrientationTemplate,
+                                                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                         HttpServletRequest req) {
+        Result<IPage<ByteDanceUserOrientationTemplate>> result = new Result<IPage<ByteDanceUserOrientationTemplate>>();
+        QueryWrapper<ByteDanceUserOrientationTemplate> queryWrapper = QueryGenerator.initQueryWrapper(byteDanceUserOrientationTemplate, req.getParameterMap());
+        Page<ByteDanceUserOrientationTemplate> page = new Page<ByteDanceUserOrientationTemplate>(pageNo, pageSize);
+        IPage<ByteDanceUserOrientationTemplate> pageList = byteDanceUserOrientationTemplateService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param byteDanceUserOrientationTemplate
+     * @return
+     */
+    @AutoLog(value = "今日头条受众模板信息-添加")
+    @ApiOperation(value = "今日头条受众模板信息-添加", notes = "今日头条受众模板信息-添加")
+    @PostMapping(value = "/add")
+    public Result<ByteDanceUserOrientationTemplate> add(@RequestBody ByteDanceUserOrientationTemplate byteDanceUserOrientationTemplate) {
+        Result<ByteDanceUserOrientationTemplate> result = new Result<ByteDanceUserOrientationTemplate>();
+        try {
+            byteDanceUserOrientationTemplateService.save(byteDanceUserOrientationTemplate);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param byteDanceUserOrientationTemplate
+     * @return
+     */
+    @AutoLog(value = "今日头条受众模板信息-编辑")
+    @ApiOperation(value = "今日头条受众模板信息-编辑", notes = "今日头条受众模板信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<ByteDanceUserOrientationTemplate> edit(@RequestBody ByteDanceUserOrientationTemplate byteDanceUserOrientationTemplate) {
+        Result<ByteDanceUserOrientationTemplate> result = new Result<ByteDanceUserOrientationTemplate>();
+        ByteDanceUserOrientationTemplate byteDanceUserOrientationTemplateEntity = byteDanceUserOrientationTemplateService.getById(byteDanceUserOrientationTemplate.getId());
+        if (byteDanceUserOrientationTemplateEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = byteDanceUserOrientationTemplateService.updateById(byteDanceUserOrientationTemplate);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条受众模板信息-通过id删除")
+    @ApiOperation(value = "今日头条受众模板信息-通过id删除", notes = "今日头条受众模板信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            byteDanceUserOrientationTemplateService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "今日头条受众模板信息-批量删除")
+    @ApiOperation(value = "今日头条受众模板信息-批量删除", notes = "今日头条受众模板信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<ByteDanceUserOrientationTemplate> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<ByteDanceUserOrientationTemplate> result = new Result<ByteDanceUserOrientationTemplate>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.byteDanceUserOrientationTemplateService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "今日头条受众模板信息-通过id查询")
+    @ApiOperation(value = "今日头条受众模板信息-通过id查询", notes = "今日头条受众模板信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ByteDanceUserOrientationTemplate> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<ByteDanceUserOrientationTemplate> result = new Result<ByteDanceUserOrientationTemplate>();
+        ByteDanceUserOrientationTemplate byteDanceUserOrientationTemplate = byteDanceUserOrientationTemplateService.getById(id);
+        if (byteDanceUserOrientationTemplate == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(byteDanceUserOrientationTemplate);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<ByteDanceUserOrientationTemplate> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                ByteDanceUserOrientationTemplate byteDanceUserOrientationTemplate = JSON.parseObject(deString, ByteDanceUserOrientationTemplate.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(byteDanceUserOrientationTemplate, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<ByteDanceUserOrientationTemplate> pageList = byteDanceUserOrientationTemplateService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "今日头条受众模板信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, ByteDanceUserOrientationTemplate.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("今日头条受众模板信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<ByteDanceUserOrientationTemplate> listByteDanceUserOrientationTemplates = ExcelImportUtil.importExcel(file.getInputStream(), ByteDanceUserOrientationTemplate.class, params);
+                byteDanceUserOrientationTemplateService.saveBatch(listByteDanceUserOrientationTemplates);
+                return Result.ok("文件导入成功!数据行数:" + listByteDanceUserOrientationTemplates.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/BytedanceDeliveryTargetTemplateController.java

@@ -0,0 +1,253 @@
+package org.jeecg.modules.ctop.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.BytedanceDeliveryTargetTemplate;
+import org.jeecg.modules.ctop.service.IBytedanceDeliveryTargetTemplateService;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * @Description: 投放目标模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "投放目标模板信息")
+@RestController
+@RequestMapping("/ctop/bytedanceDeliveryTargetTemplate")
+public class BytedanceDeliveryTargetTemplateController {
+    @Autowired
+    private IBytedanceDeliveryTargetTemplateService bytedanceDeliveryTargetTemplateService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param bytedanceDeliveryTargetTemplate
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "投放目标模板信息-分页列表查询")
+    @ApiOperation(value = "投放目标模板信息-分页列表查询", notes = "投放目标模板信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<BytedanceDeliveryTargetTemplate>> queryPageList(BytedanceDeliveryTargetTemplate bytedanceDeliveryTargetTemplate,
+                                                                        @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                        HttpServletRequest req) {
+        Result<IPage<BytedanceDeliveryTargetTemplate>> result = new Result<IPage<BytedanceDeliveryTargetTemplate>>();
+        QueryWrapper<BytedanceDeliveryTargetTemplate> queryWrapper = QueryGenerator.initQueryWrapper(bytedanceDeliveryTargetTemplate, req.getParameterMap());
+        Page<BytedanceDeliveryTargetTemplate> page = new Page<BytedanceDeliveryTargetTemplate>(pageNo, pageSize);
+        IPage<BytedanceDeliveryTargetTemplate> pageList = bytedanceDeliveryTargetTemplateService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param bytedanceDeliveryTargetTemplate
+     * @return
+     */
+    @AutoLog(value = "投放目标模板信息-添加")
+    @ApiOperation(value = "投放目标模板信息-添加", notes = "投放目标模板信息-添加")
+    @PostMapping(value = "/add")
+    public Result<BytedanceDeliveryTargetTemplate> add(@RequestBody BytedanceDeliveryTargetTemplate bytedanceDeliveryTargetTemplate) {
+        Result<BytedanceDeliveryTargetTemplate> result = new Result<BytedanceDeliveryTargetTemplate>();
+        try {
+            bytedanceDeliveryTargetTemplateService.save(bytedanceDeliveryTargetTemplate);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param bytedanceDeliveryTargetTemplate
+     * @return
+     */
+    @AutoLog(value = "投放目标模板信息-编辑")
+    @ApiOperation(value = "投放目标模板信息-编辑", notes = "投放目标模板信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<BytedanceDeliveryTargetTemplate> edit(@RequestBody BytedanceDeliveryTargetTemplate bytedanceDeliveryTargetTemplate) {
+        Result<BytedanceDeliveryTargetTemplate> result = new Result<BytedanceDeliveryTargetTemplate>();
+        BytedanceDeliveryTargetTemplate bytedanceDeliveryTargetTemplateEntity = bytedanceDeliveryTargetTemplateService.getById(bytedanceDeliveryTargetTemplate.getId());
+        if (bytedanceDeliveryTargetTemplateEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = bytedanceDeliveryTargetTemplateService.updateById(bytedanceDeliveryTargetTemplate);
+            //TODO 返回false说明什么?
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "投放目标模板信息-通过id删除")
+    @ApiOperation(value = "投放目标模板信息-通过id删除", notes = "投放目标模板信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            bytedanceDeliveryTargetTemplateService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "投放目标模板信息-批量删除")
+    @ApiOperation(value = "投放目标模板信息-批量删除", notes = "投放目标模板信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<BytedanceDeliveryTargetTemplate> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<BytedanceDeliveryTargetTemplate> result = new Result<BytedanceDeliveryTargetTemplate>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.bytedanceDeliveryTargetTemplateService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "投放目标模板信息-通过id查询")
+    @ApiOperation(value = "投放目标模板信息-通过id查询", notes = "投放目标模板信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<BytedanceDeliveryTargetTemplate> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<BytedanceDeliveryTargetTemplate> result = new Result<BytedanceDeliveryTargetTemplate>();
+        BytedanceDeliveryTargetTemplate bytedanceDeliveryTargetTemplate = bytedanceDeliveryTargetTemplateService.getById(id);
+        if (bytedanceDeliveryTargetTemplate == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(bytedanceDeliveryTargetTemplate);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<BytedanceDeliveryTargetTemplate> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                BytedanceDeliveryTargetTemplate bytedanceDeliveryTargetTemplate = JSON.parseObject(deString, BytedanceDeliveryTargetTemplate.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(bytedanceDeliveryTargetTemplate, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<BytedanceDeliveryTargetTemplate> pageList = bytedanceDeliveryTargetTemplateService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "投放目标模板信息列表");
+        mv.addObject(NormalExcelConstants.CLASS, BytedanceDeliveryTargetTemplate.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("投放目标模板信息列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();// 获取上传文件对象
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<BytedanceDeliveryTargetTemplate> listBytedanceDeliveryTargetTemplates = ExcelImportUtil.importExcel(file.getInputStream(), BytedanceDeliveryTargetTemplate.class, params);
+                bytedanceDeliveryTargetTemplateService.saveBatch(listBytedanceDeliveryTargetTemplates);
+                return Result.ok("文件导入成功!数据行数:" + listBytedanceDeliveryTargetTemplates.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 0 - 244
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CTopToutiaoAdvertisePlanController.java

@@ -1,244 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.aspect.annotation.AutoLog;
-import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertisePlan;
-import org.jeecg.modules.ctop.service.ICTopToutiaoAdvertisePlanService;
-import java.util.Date;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.extern.slf4j.Slf4j;
-
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
- /**
- * @Description: 头条广告主广告计划信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-@Slf4j
-@Api(tags="头条广告主广告计划信息")
-@RestController
-@RequestMapping("/ctop/cTopToutiaoAdvertisePlan")
-public class CTopToutiaoAdvertisePlanController {
-	@Autowired
-	private ICTopToutiaoAdvertisePlanService cTopToutiaoAdvertisePlanService;
-	
-	/**
-	  * 分页列表查询
-	 * @param cTopToutiaoAdvertisePlan
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主广告计划信息-分页列表查询")
-	@ApiOperation(value="头条广告主广告计划信息-分页列表查询", notes="头条广告主广告计划信息-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<CTopToutiaoAdvertisePlan>> queryPageList(CTopToutiaoAdvertisePlan cTopToutiaoAdvertisePlan,
-									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-									  HttpServletRequest req) {
-		Result<IPage<CTopToutiaoAdvertisePlan>> result = new Result<IPage<CTopToutiaoAdvertisePlan>>();
-		QueryWrapper<CTopToutiaoAdvertisePlan> queryWrapper = QueryGenerator.initQueryWrapper(cTopToutiaoAdvertisePlan, req.getParameterMap());
-		Page<CTopToutiaoAdvertisePlan> page = new Page<CTopToutiaoAdvertisePlan>(pageNo, pageSize);
-		IPage<CTopToutiaoAdvertisePlan> pageList = cTopToutiaoAdvertisePlanService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-	
-	/**
-	  *   添加
-	 * @param cTopToutiaoAdvertisePlan
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主广告计划信息-添加")
-	@ApiOperation(value="头条广告主广告计划信息-添加", notes="头条广告主广告计划信息-添加")
-	@PostMapping(value = "/add")
-	public Result<CTopToutiaoAdvertisePlan> add(@RequestBody CTopToutiaoAdvertisePlan cTopToutiaoAdvertisePlan) {
-		Result<CTopToutiaoAdvertisePlan> result = new Result<CTopToutiaoAdvertisePlan>();
-		try {
-			cTopToutiaoAdvertisePlanService.save(cTopToutiaoAdvertisePlan);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-	
-	/**
-	  *  编辑
-	 * @param cTopToutiaoAdvertisePlan
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主广告计划信息-编辑")
-	@ApiOperation(value="头条广告主广告计划信息-编辑", notes="头条广告主广告计划信息-编辑")
-	@PutMapping(value = "/edit")
-	public Result<CTopToutiaoAdvertisePlan> edit(@RequestBody CTopToutiaoAdvertisePlan cTopToutiaoAdvertisePlan) {
-		Result<CTopToutiaoAdvertisePlan> result = new Result<CTopToutiaoAdvertisePlan>();
-		CTopToutiaoAdvertisePlan cTopToutiaoAdvertisePlanEntity = cTopToutiaoAdvertisePlanService.getById(cTopToutiaoAdvertisePlan.getId());
-		if(cTopToutiaoAdvertisePlanEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = cTopToutiaoAdvertisePlanService.updateById(cTopToutiaoAdvertisePlan);
-			//TODO 返回false说明什么?
-			if(ok) {
-				result.success("修改成功!");
-			}
-		}
-		
-		return result;
-	}
-	
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主广告计划信息-通过id删除")
-	@ApiOperation(value="头条广告主广告计划信息-通过id删除", notes="头条广告主广告计划信息-通过id删除")
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			cTopToutiaoAdvertisePlanService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-	
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主广告计划信息-批量删除")
-	@ApiOperation(value="头条广告主广告计划信息-批量删除", notes="头条广告主广告计划信息-批量删除")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<CTopToutiaoAdvertisePlan> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<CTopToutiaoAdvertisePlan> result = new Result<CTopToutiaoAdvertisePlan>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.cTopToutiaoAdvertisePlanService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-	
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主广告计划信息-通过id查询")
-	@ApiOperation(value="头条广告主广告计划信息-通过id查询", notes="头条广告主广告计划信息-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<CTopToutiaoAdvertisePlan> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<CTopToutiaoAdvertisePlan> result = new Result<CTopToutiaoAdvertisePlan>();
-		CTopToutiaoAdvertisePlan cTopToutiaoAdvertisePlan = cTopToutiaoAdvertisePlanService.getById(id);
-		if(cTopToutiaoAdvertisePlan==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(cTopToutiaoAdvertisePlan);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<CTopToutiaoAdvertisePlan> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              CTopToutiaoAdvertisePlan cTopToutiaoAdvertisePlan = JSON.parseObject(deString, CTopToutiaoAdvertisePlan.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(cTopToutiaoAdvertisePlan, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<CTopToutiaoAdvertisePlan> pageList = cTopToutiaoAdvertisePlanService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "头条广告主广告计划信息列表");
-      mv.addObject(NormalExcelConstants.CLASS, CTopToutiaoAdvertisePlan.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("头条广告主广告计划信息列表数据", "导出人:Jeecg", "导出信息"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
-
-  /**
-      * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();// 获取上传文件对象
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<CTopToutiaoAdvertisePlan> listCTopToutiaoAdvertisePlans = ExcelImportUtil.importExcel(file.getInputStream(), CTopToutiaoAdvertisePlan.class, params);
-              cTopToutiaoAdvertisePlanService.saveBatch(listCTopToutiaoAdvertisePlans);
-              return Result.ok("文件导入成功!数据行数:" + listCTopToutiaoAdvertisePlans.size());
-          } catch (Exception e) {
-              log.error(e.getMessage(),e);
-              return Result.error("文件导入失败:"+e.getMessage());
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.ok("文件导入失败!");
-  }
-
-}

+ 0 - 244
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CTopToutiaoAdvertiserController.java

@@ -1,244 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.aspect.annotation.AutoLog;
-import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertiser;
-import org.jeecg.modules.ctop.service.ICTopToutiaoAdvertiserService;
-import java.util.Date;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.extern.slf4j.Slf4j;
-
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
- /**
- * @Description: 头条广告主信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-@Slf4j
-@Api(tags="头条广告主信息")
-@RestController
-@RequestMapping("/ctop/cTopToutiaoAdvertiser")
-public class CTopToutiaoAdvertiserController {
-	@Autowired
-	private ICTopToutiaoAdvertiserService cTopToutiaoAdvertiserService;
-	
-	/**
-	  * 分页列表查询
-	 * @param cTopToutiaoAdvertiser
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主信息-分页列表查询")
-	@ApiOperation(value="头条广告主信息-分页列表查询", notes="头条广告主信息-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<CTopToutiaoAdvertiser>> queryPageList(CTopToutiaoAdvertiser cTopToutiaoAdvertiser,
-									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-									  HttpServletRequest req) {
-		Result<IPage<CTopToutiaoAdvertiser>> result = new Result<IPage<CTopToutiaoAdvertiser>>();
-		QueryWrapper<CTopToutiaoAdvertiser> queryWrapper = QueryGenerator.initQueryWrapper(cTopToutiaoAdvertiser, req.getParameterMap());
-		Page<CTopToutiaoAdvertiser> page = new Page<CTopToutiaoAdvertiser>(pageNo, pageSize);
-		IPage<CTopToutiaoAdvertiser> pageList = cTopToutiaoAdvertiserService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-	
-	/**
-	  *   添加
-	 * @param cTopToutiaoAdvertiser
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主信息-添加")
-	@ApiOperation(value="头条广告主信息-添加", notes="头条广告主信息-添加")
-	@PostMapping(value = "/add")
-	public Result<CTopToutiaoAdvertiser> add(@RequestBody CTopToutiaoAdvertiser cTopToutiaoAdvertiser) {
-		Result<CTopToutiaoAdvertiser> result = new Result<CTopToutiaoAdvertiser>();
-		try {
-			cTopToutiaoAdvertiserService.save(cTopToutiaoAdvertiser);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-	
-	/**
-	  *  编辑
-	 * @param cTopToutiaoAdvertiser
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主信息-编辑")
-	@ApiOperation(value="头条广告主信息-编辑", notes="头条广告主信息-编辑")
-	@PutMapping(value = "/edit")
-	public Result<CTopToutiaoAdvertiser> edit(@RequestBody CTopToutiaoAdvertiser cTopToutiaoAdvertiser) {
-		Result<CTopToutiaoAdvertiser> result = new Result<CTopToutiaoAdvertiser>();
-		CTopToutiaoAdvertiser cTopToutiaoAdvertiserEntity = cTopToutiaoAdvertiserService.getById(cTopToutiaoAdvertiser.getId());
-		if(cTopToutiaoAdvertiserEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = cTopToutiaoAdvertiserService.updateById(cTopToutiaoAdvertiser);
-			//TODO 返回false说明什么?
-			if(ok) {
-				result.success("修改成功!");
-			}
-		}
-		
-		return result;
-	}
-	
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主信息-通过id删除")
-	@ApiOperation(value="头条广告主信息-通过id删除", notes="头条广告主信息-通过id删除")
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			cTopToutiaoAdvertiserService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-	
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主信息-批量删除")
-	@ApiOperation(value="头条广告主信息-批量删除", notes="头条广告主信息-批量删除")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<CTopToutiaoAdvertiser> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<CTopToutiaoAdvertiser> result = new Result<CTopToutiaoAdvertiser>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.cTopToutiaoAdvertiserService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-	
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "头条广告主信息-通过id查询")
-	@ApiOperation(value="头条广告主信息-通过id查询", notes="头条广告主信息-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<CTopToutiaoAdvertiser> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<CTopToutiaoAdvertiser> result = new Result<CTopToutiaoAdvertiser>();
-		CTopToutiaoAdvertiser cTopToutiaoAdvertiser = cTopToutiaoAdvertiserService.getById(id);
-		if(cTopToutiaoAdvertiser==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(cTopToutiaoAdvertiser);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<CTopToutiaoAdvertiser> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              CTopToutiaoAdvertiser cTopToutiaoAdvertiser = JSON.parseObject(deString, CTopToutiaoAdvertiser.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(cTopToutiaoAdvertiser, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<CTopToutiaoAdvertiser> pageList = cTopToutiaoAdvertiserService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "头条广告主信息列表");
-      mv.addObject(NormalExcelConstants.CLASS, CTopToutiaoAdvertiser.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("头条广告主信息列表数据", "导出人:Jeecg", "导出信息"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
-
-  /**
-      * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();// 获取上传文件对象
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<CTopToutiaoAdvertiser> listCTopToutiaoAdvertisers = ExcelImportUtil.importExcel(file.getInputStream(), CTopToutiaoAdvertiser.class, params);
-              cTopToutiaoAdvertiserService.saveBatch(listCTopToutiaoAdvertisers);
-              return Result.ok("文件导入成功!数据行数:" + listCTopToutiaoAdvertisers.size());
-          } catch (Exception e) {
-              log.error(e.getMessage(),e);
-              return Result.error("文件导入失败:"+e.getMessage());
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.ok("文件导入失败!");
-  }
-
-}

+ 28 - 12
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CallbackController.java

@@ -3,8 +3,10 @@ package org.jeecg.modules.ctop.controller;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouAccessToken;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResultToken;
 import cn.com.ctop.kuaishou.modules.material.service.IKuaishouAccessTokenService;
-import cn.com.ctop.kuaishou.modules.material.service.IKuaishouInterfaceService;
 import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.ctop.entity.CTopOauthToken;
+import org.jeecg.modules.ctop.mapper.CTopOauthTokenMapper;
+import org.jeecg.modules.kuaishou.service.IKuaishouInterfaceService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -14,6 +16,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 @Controller
 @RequestMapping("/")
@@ -22,25 +26,37 @@ public class CallbackController {
     private IKuaishouInterfaceService kuaishouInterfaceService;
     @Autowired
     private IKuaishouAccessTokenService kuaishouAccessTokenService;
+    @Autowired
+    private CTopOauthTokenMapper cTopOauthTokenMapper;
+
     @RequestMapping("/kuaishou")
     @ResponseBody
     public String kuaishou(HttpServletRequest request,
                            HttpServletResponse response,
-                           @RequestParam("auth_code")String authCode,
-                           @RequestParam("state")String state) {
-        System.out.println(request.getQueryString());
-        if(StringUtils.isNotBlank(authCode)){
+                           @RequestParam("auth_code") String authCode,
+                           @RequestParam("state") String state) {
+        if (StringUtils.isNotBlank(authCode)) {
             KuaishouResultToken accessToken = kuaishouInterfaceService.getAccessToken(authCode);
             KuaishouAccessToken token = accessToken.getData();
-            if(token != null){
-                long now = System.currentTimeMillis();
+            if (token != null) {
+                CTopOauthToken topOauthToken = new CTopOauthToken();
+                Long accountId = token.getAccountId();
+                topOauthToken.setAccountId(token.getAccountId());
+                topOauthToken.setMediaId("2");
+                topOauthToken.setAdvertiserId(state);
+                topOauthToken.setAccessToken(token.getAccessToken());
                 long accessTokenExpireIn = token.getAccessTokenExpiresIn() * 1000L;
+                long now = System.currentTimeMillis();
+                Date accessTokenExpireInDate = new Date(now + accessTokenExpireIn);
+                topOauthToken.setAccessTokenExpiresIn(accessTokenExpireInDate);
+                topOauthToken.setRefreshToken(token.getRefreshToken());
                 long refreshTokenExpireIn = token.getRefreshTokenExpiresIn() * 1000L;
-                Date accessTokenExpireInDate = new Date(now+accessTokenExpireIn);
-                Date refreshTokenExpireInDate = new Date(now+refreshTokenExpireIn);
-                token.setAccessTokenExpiresInDate(accessTokenExpireInDate);
-                token.setRefreshTokenExpiresInDate(refreshTokenExpireInDate);
-                kuaishouAccessTokenService.saveOrUpdate(token);
+                Date refreshTokenExpireInDate = new Date(now + refreshTokenExpireIn);
+                topOauthToken.setRefreshTokenExpiresIn(refreshTokenExpireInDate);
+
+                Map<String, Object> map = new HashMap<>();
+                map.put("account_id", accountId);
+
             }
             return "auth_success";
         }

+ 6 - 22
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/SyncDataController.java

@@ -2,50 +2,34 @@ package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.crawler.modules.account.entity.KuaishouAppAccount;
 import cn.com.ctop.crawler.modules.account.service.IKuaishouAppAccountService;
-import cn.com.ctop.crawler.modules.core.util.KuaishouUtil;
-import cn.com.ctop.crawler.modules.log.entity.CrawlerLog;
 import cn.com.ctop.kuaishou.modules.app.service.IKuaishouAppService;
-import cn.com.ctop.kuaishou.modules.material.service.IKuaishouService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Date;
 import java.util.List;
 
 @Slf4j
 @RestController
 @RequestMapping("/ctop/syncdata")
 public class SyncDataController {
-    @Autowired
-    private IKuaishouService kuaishouService;
+
     @Autowired
     private IKuaishouAppService kuaishouAppService;
     @Autowired
     private IKuaishouAppAccountService kuaishouAppAccountService;
-    @RequestMapping("/test")
-    public void test(){
-        try {
-            System.out.println(1);
-            kuaishouService.getMaterial("97ec4cbc9a26ec24a8ba952b24856e6e",2289L);
-//            kuaishouService.getReportByDay("97ec4cbc9a26ec24a8ba952b24856e6e",2289L,"2019-06-01","2019-06-14");
-//            kuaishouService.getReportByHour("97ec4cbc9a26ec24a8ba952b24856e6e",2289L,"2019-06-11","2019-06-17");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
+
 
     @RequestMapping("/test2")
-    public void test2(){
+    public void test2() {
         try {
             Integer page = 1;
-            while (page < 1000){
-                QueryWrapper<KuaishouAppAccount> queryWrapper = QueryGenerator.initQueryWrapper(new KuaishouAppAccount(),null);
-                queryWrapper.eq("path","/rest/n/feed/hot");
+            while (page < 1000) {
+                QueryWrapper<KuaishouAppAccount> queryWrapper = QueryGenerator.initQueryWrapper(new KuaishouAppAccount(), null);
+                queryWrapper.eq("path", "/rest/n/feed/hot");
                 List<KuaishouAppAccount> list = kuaishouAppAccountService.list(queryWrapper);
                 if (list != null) {
                     for (KuaishouAppAccount kuaishouAppAccount : list) {

+ 0 - 205
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TouTiaoAdvertiserController.java

@@ -1,205 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.ctop.service.ITouTiaoAdvertiserService;
-import org.jeecg.modules.system.entity.SysDictItem;
-import org.jeecg.modules.system.service.ISysDictItemService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 头条广告主相关 2019年7月10日14:13:04 @author 宋英豪
- */
-@Controller
-@RequestMapping("toutiao")
-public class TouTiaoAdvertiserController {
-    @Autowired
-    private ITouTiaoAdvertiserService touTiaoAdvertiserService;
-
-    /**
-     * 1:获取广告主信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/info")
-    @ResponseBody
-    public Map<String, Object> advertiserInfo(String accountId) {
-        return touTiaoAdvertiserService.getAdvertiserInfo(accountId);
-    }
-
-    /**
-     * 2:获取广告主广告计划信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/plan/get")
-    @ResponseBody
-    public Map<String, Object> advertiserPlan(String accountId, String ids) {
-        return touTiaoAdvertiserService.getAdvertiserPlan(accountId, ids);
-    }
-
-    /**
-     * 3:修改广告计划信息状态 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/plan/update/status")
-    @ResponseBody
-    public Map<String, Object> advertiserPlanUpdateStatus(String accountId, String adIds, String optStatus) {
-        return touTiaoAdvertiserService.advertiserPlanUpdateStatus(accountId, adIds, optStatus);
-    }
-
-    /**
-     * 3:修改广告计划信息状态 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/plan/update/bid")
-    @ResponseBody
-    public Map<String, Object> advertiserPlanUpdateBid(String accountId, String adIds, String bids) {
-        return touTiaoAdvertiserService.advertiserPlanUpdateBid(accountId, adIds, bids);
-    }
-
-    /**
-     * 3:修改广告计划信息状态 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/plan/update/budget")
-    @ResponseBody
-    public Map<String, Object> advertiserPlanUpdateBudget(String accountId, String adIds, String budgets) {
-        return touTiaoAdvertiserService.advertiserPlanUpdateBudget(accountId, adIds, budgets);
-    }
-
-    /**
-     * 4:获取广告主广告预算信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/budget/get/")
-    @ResponseBody
-    public Map<String, Object> advertiserBudget(String accountId) {
-        return touTiaoAdvertiserService.getAdvertiserBudget(accountId);
-    }
-
-    /**
-     * 3:获取广告主广告组信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/campaign/get")
-    @ResponseBody
-    public Map<String, Object> advertiserCampaign(String accountId, String ids) {
-        return touTiaoAdvertiserService.getAdvertiserCampaign(accountId, ids);
-    }
-
-    /**
-     * 5:获取广告主广告创意信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/creative/get")
-    @ResponseBody
-    public Map<String, Object> getAdvertiserCreative(String accountId, String ids) {
-        return touTiaoAdvertiserService.getAdvertiserCreative(accountId, ids);
-    }
-
-    /**
-     * 5:修改广告创意信息状态 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/update/status/")
-    @ResponseBody
-    public Map<String, Object> advertiserCreativeUpdateStatus(String accountId, String creativeIds, String optStatus) {
-        return touTiaoAdvertiserService.advertiserCreativeUpdateStatus(accountId, creativeIds, optStatus);
-    }
-
-    /**
-     * 6:获取广告主广告创意素材信息 @param accountId 本平台广告主id @param creativeIds 广告创意id
-     */
-    @RequestMapping("/advertiser/creative/material/read")
-    @ResponseBody
-    public Map<String, Object> advertiserCreativeMaterial(String accountId, String creativeIds) {
-        return touTiaoAdvertiserService.getAdvertiserCreativeMaterial(accountId, creativeIds);
-    }
-
-    /**
-     * 7:创建广告组信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/campaign/create")
-    @ResponseBody
-    public Map<String, Object> advertiserCampaignCreate(String accountId, String campaignName, String budgetMode, Integer budget, String landingType) {
-        return touTiaoAdvertiserService.advertiserCampaignCreate(accountId, campaignName, budgetMode, budget, landingType);
-    }
-
-    /**
-     * 7:广告组更新状态信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/campaign/update/status")
-    @ResponseBody
-    public Map<String, Object> advertiserCampaignUpdateStatus(String accountId, String campaignIds, String optStatus) {
-        return touTiaoAdvertiserService.advertiserCampaignUpdateStatus(accountId, campaignIds, optStatus);
-    }
-
-    /**
-     * 8:广告组更新信息 @param accountId 本平台广告主id
-     */
-    @RequestMapping("/advertiser/campaign/update")
-    @ResponseBody
-    public Map<String, Object> advertiserCampaignUpdate(String accountId, Long campaignId, String budgetMode, Integer budget, String campaignName) {
-        return touTiaoAdvertiserService.advertiserCampaignUpdate(accountId, campaignId, budgetMode, budget, campaignName);
-    }
-
-    /**
-     * @功能:查询字典数据
-     * @param sysDictItem
-     * @param pageNo
-     * @param pageSize
-     * @param req
-     * @return
-     */
-    @RequestMapping(value = "dictItem/list", method = RequestMethod.GET)
-    @ResponseBody
-    public Result<IPage<SysDictItem>> queryPageList(SysDictItem sysDictItem, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                                    @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) {
-        Result<IPage<SysDictItem>> result = new Result<IPage<SysDictItem>>();
-        QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap());
-        queryWrapper.orderByAsc("sort_order");
-        Page<SysDictItem> page = new Page<SysDictItem>(pageNo, pageSize);
-        IPage<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper);
-        result.setSuccess(true);
-        result.setResult(pageList);
-        return result;
-    }
-
-    /**
-     *
-     * @param setBidType
-     * @param setFlowControlMode
-     * @param setBudgetPrice
-     * @param setBudgetMode
-     * @param setFlowDate
-     * @param setDateFlowRange
-     * @param setDateQuantum
-     * @param setPriceType
-     * @param setConvertPrice
-     * @param setFilterType
-     * @param setDateQuantumRange
-     * @param req
-     * @return
-     */
-    @RequestMapping(value = "budgetModel/insert", method = RequestMethod.GET)
-    @ResponseBody
-    public Map<String,Object> budgetModelInsert(@RequestParam(name="setBidType", defaultValue="1")String setBidType,
-                                                @RequestParam(name="setFlowControlMode", defaultValue="1") String setFlowControlMode,
-                                                @RequestParam(name="setBudgetPrice", defaultValue="1") String setBudgetPrice,
-                                                @RequestParam(name="setBudgetMode", defaultValue="1") String setBudgetMode,
-                                                @RequestParam(name="setFlowDate", defaultValue="1") String setFlowDate,
-                                                @RequestParam(name="setDateFlowRange", defaultValue="1") String setDateFlowRange,
-                                                @RequestParam(name="setDateQuantum", defaultValue="1") String setDateQuantum,
-                                                @RequestParam(name="setPriceType", defaultValue="1") String setPriceType,
-                                                @RequestParam(name="setConvertPrice", defaultValue="1") String setConvertPrice,
-                                                @RequestParam(name="setFilterType", defaultValue="1") String setFilterType,
-                                                @RequestParam(name="setDateQuantumRange", defaultValue="1") String setDateQuantumRange,HttpServletRequest req) {
-        Map<String,Object> result = new HashMap<>();
-        return result;
-    }
-
-    @Autowired
-    private ISysDictItemService sysDictItemService;
-}

+ 0 - 244
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ToutiaoCreativeMaterialController.java

@@ -1,244 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.aspect.annotation.AutoLog;
-import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.ctop.entity.ToutiaoCreativeMaterial;
-import org.jeecg.modules.ctop.service.IToutiaoCreativeMaterialService;
-import java.util.Date;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.extern.slf4j.Slf4j;
-
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
- /**
- * @Description: 头条创意素材信息
- * @Author: jeecg-boot
- * @Date:   2019-07-11
- * @Version: V1.0
- */
-@Slf4j
-@Api(tags="头条创意素材信息")
-@RestController
-@RequestMapping("/ctop/toutiaoCreativeMaterial")
-public class ToutiaoCreativeMaterialController {
-	@Autowired
-	private IToutiaoCreativeMaterialService toutiaoCreativeMaterialService;
-	
-	/**
-	  * 分页列表查询
-	 * @param toutiaoCreativeMaterial
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@AutoLog(value = "头条创意素材信息-分页列表查询")
-	@ApiOperation(value="头条创意素材信息-分页列表查询", notes="头条创意素材信息-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<ToutiaoCreativeMaterial>> queryPageList(ToutiaoCreativeMaterial toutiaoCreativeMaterial,
-									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-									  HttpServletRequest req) {
-		Result<IPage<ToutiaoCreativeMaterial>> result = new Result<IPage<ToutiaoCreativeMaterial>>();
-		QueryWrapper<ToutiaoCreativeMaterial> queryWrapper = QueryGenerator.initQueryWrapper(toutiaoCreativeMaterial, req.getParameterMap());
-		Page<ToutiaoCreativeMaterial> page = new Page<ToutiaoCreativeMaterial>(pageNo, pageSize);
-		IPage<ToutiaoCreativeMaterial> pageList = toutiaoCreativeMaterialService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-	
-	/**
-	  *   添加
-	 * @param toutiaoCreativeMaterial
-	 * @return
-	 */
-	@AutoLog(value = "头条创意素材信息-添加")
-	@ApiOperation(value="头条创意素材信息-添加", notes="头条创意素材信息-添加")
-	@PostMapping(value = "/add")
-	public Result<ToutiaoCreativeMaterial> add(@RequestBody ToutiaoCreativeMaterial toutiaoCreativeMaterial) {
-		Result<ToutiaoCreativeMaterial> result = new Result<ToutiaoCreativeMaterial>();
-		try {
-			toutiaoCreativeMaterialService.save(toutiaoCreativeMaterial);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-	
-	/**
-	  *  编辑
-	 * @param toutiaoCreativeMaterial
-	 * @return
-	 */
-	@AutoLog(value = "头条创意素材信息-编辑")
-	@ApiOperation(value="头条创意素材信息-编辑", notes="头条创意素材信息-编辑")
-	@PutMapping(value = "/edit")
-	public Result<ToutiaoCreativeMaterial> edit(@RequestBody ToutiaoCreativeMaterial toutiaoCreativeMaterial) {
-		Result<ToutiaoCreativeMaterial> result = new Result<ToutiaoCreativeMaterial>();
-		ToutiaoCreativeMaterial toutiaoCreativeMaterialEntity = toutiaoCreativeMaterialService.getById(toutiaoCreativeMaterial.getId());
-		if(toutiaoCreativeMaterialEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = toutiaoCreativeMaterialService.updateById(toutiaoCreativeMaterial);
-			//TODO 返回false说明什么?
-			if(ok) {
-				result.success("修改成功!");
-			}
-		}
-		
-		return result;
-	}
-	
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "头条创意素材信息-通过id删除")
-	@ApiOperation(value="头条创意素材信息-通过id删除", notes="头条创意素材信息-通过id删除")
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			toutiaoCreativeMaterialService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-	
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "头条创意素材信息-批量删除")
-	@ApiOperation(value="头条创意素材信息-批量删除", notes="头条创意素材信息-批量删除")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<ToutiaoCreativeMaterial> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<ToutiaoCreativeMaterial> result = new Result<ToutiaoCreativeMaterial>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.toutiaoCreativeMaterialService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-	
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "头条创意素材信息-通过id查询")
-	@ApiOperation(value="头条创意素材信息-通过id查询", notes="头条创意素材信息-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<ToutiaoCreativeMaterial> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<ToutiaoCreativeMaterial> result = new Result<ToutiaoCreativeMaterial>();
-		ToutiaoCreativeMaterial toutiaoCreativeMaterial = toutiaoCreativeMaterialService.getById(id);
-		if(toutiaoCreativeMaterial==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(toutiaoCreativeMaterial);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<ToutiaoCreativeMaterial> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              ToutiaoCreativeMaterial toutiaoCreativeMaterial = JSON.parseObject(deString, ToutiaoCreativeMaterial.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(toutiaoCreativeMaterial, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<ToutiaoCreativeMaterial> pageList = toutiaoCreativeMaterialService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "头条创意素材信息列表");
-      mv.addObject(NormalExcelConstants.CLASS, ToutiaoCreativeMaterial.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("头条创意素材信息列表数据", "导出人:Jeecg", "导出信息"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
-
-  /**
-      * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();// 获取上传文件对象
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<ToutiaoCreativeMaterial> listToutiaoCreativeMaterials = ExcelImportUtil.importExcel(file.getInputStream(), ToutiaoCreativeMaterial.class, params);
-              toutiaoCreativeMaterialService.saveBatch(listToutiaoCreativeMaterials);
-              return Result.ok("文件导入成功!数据行数:" + listToutiaoCreativeMaterials.size());
-          } catch (Exception e) {
-              log.error(e.getMessage(),e);
-              return Result.error("文件导入失败:"+e.getMessage());
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.ok("文件导入失败!");
-  }
-
-}

+ 58 - 57
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopToutiaoAdvertisePlan.java

@@ -3,7 +3,6 @@ package org.jeecg.modules.ctop.entity;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.function.LongFunction;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -20,20 +19,20 @@ import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 /**
- * @Description: 头条广告主广告计划信息
+ * @Description: 今日头条广告计划信息
  * @Author: jeecg-boot
- * @Date:   2019-07-11
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Data
-@TableName("ctop_toutiao_advertise_plan")
+@TableName("ctop_bytedance_advertise_plan")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_advertise_plan对象", description="头条广告主广告计划信息")
-public class CTopToutiaoAdvertisePlan {
+@ApiModel(value = "ctop_bytedance_advertise_plan对象", description = "今日头条广告计划信息")
+public class ByteDanceAdvertisePlan {
     
 	/**头条平台广告计划id*/
-	@TableId()
+    @TableId
     @ApiModelProperty(value = "头条平台广告计划id")
 	private Long id;
 	/**平台广告主id*/
@@ -161,7 +160,7 @@ public class CTopToutiaoAdvertisePlan {
     @ApiModelProperty(value = "audience")
 	private Object audience;
 
-	public CTopToutiaoAdvertisePlan(JSONObject dataObject, String accountId) {
+    public ByteDanceAdvertisePlan(JSONObject dataObject, String accountId) {
 		Long id = dataObject.getLong("id");
 		this.id=id;
 		this.advertiserId = accountId;
@@ -185,23 +184,23 @@ public class CTopToutiaoAdvertisePlan {
 		}
 
         String open_url = dataObject.getString("open_url");
-        if (null!=open_url&&!"".equals(open_url.trim())){
-            this.openUrl =open_url;
+        if (null != open_url && !"".equals(open_url.trim())) {
+            this.openUrl = open_url;
         }
 
         String ad_create_time = dataObject.getString("ad_create_time");
-        if (null!=ad_create_time&&!"".equals(ad_create_time.trim())){
-            this.adCreateTime =ad_create_time;
+        if (null != ad_create_time && !"".equals(ad_create_time.trim())) {
+            this.adCreateTime = ad_create_time;
         }
 
         String ad_modify_time = dataObject.getString("ad_modify_time");
-        if (null!=ad_modify_time&&!"".equals(ad_modify_time.trim())){
-            this.adModifyTime =ad_modify_time;
+        if (null != ad_modify_time && !"".equals(ad_modify_time.trim())) {
+            this.adModifyTime = ad_modify_time;
         }
 
         String audit_reject_reason = dataObject.getString("audit_reject_reason");
-        if (null!=audit_reject_reason&&!"".equals(audit_reject_reason.trim())){
-            this.auditRejectReason =audit_reject_reason;
+        if (null != audit_reject_reason && !"".equals(audit_reject_reason.trim())) {
+            this.auditRejectReason = audit_reject_reason;
         }
 
 //        String dpa_open_url_field = dataObject.getString("dpa_open_url_field");
@@ -215,8 +214,8 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         String pricing = dataObject.getString("pricing");
-        if (null!=pricing&&!"".equals(pricing.trim())){
-            this.pricing =pricing;
+        if (null != pricing && !"".equals(pricing.trim())) {
+            this.pricing = pricing;
         }
 
 //        String dpa_open_url_type = dataObject.getString("dpa_open_url_type");
@@ -230,8 +229,8 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         Integer hide_if_exists = dataObject.getInteger("hide_if_exists");
-        if (null!=hide_if_exists){
-            this.hideIfExists =hide_if_exists;
+        if (null != hide_if_exists) {
+            this.hideIfExists = hide_if_exists;
         }
 
 //        String open_url_params = dataObject.getString("open_url_params");
@@ -250,13 +249,13 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         String app_type = dataObject.getString("app_type");
-        if (null!=app_type&&!"".equals(app_type.trim())){
-            this.appType =app_type;
+        if (null != app_type && !"".equals(app_type.trim())) {
+            this.appType = app_type;
         }
 
         String flow_control_mode = dataObject.getString("flow_control_mode");
-        if (null!=flow_control_mode&&!"".equals(flow_control_mode.trim())){
-            this.flowControlMode =flow_control_mode;
+        if (null != flow_control_mode && !"".equals(flow_control_mode.trim())) {
+            this.flowControlMode = flow_control_mode;
         }
 
 //        String union_video_type = dataObject.getString("union_video_type");
@@ -270,8 +269,8 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         BigDecimal cpa_bid = dataObject.getBigDecimal("cpa_bid");
-        if (null!=cpa_bid){
-            this.cpaBid =cpa_bid;
+        if (null != cpa_bid) {
+            this.cpaBid = cpa_bid;
         }
 
 //        String dpa_products = dataObject.getString("dpa_products");
@@ -300,23 +299,23 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         String start_time = dataObject.getString("start_time");
-        if (null!=start_time&&!"".equals(start_time.trim())){
-            this.startTime =start_time;
+        if (null != start_time && !"".equals(start_time.trim())) {
+            this.startTime = start_time;
         }
 
         String opt_status = dataObject.getString("opt_status");
-        if (null!=opt_status&&!"".equals(opt_status.trim())){
-            this.optStatus =opt_status;
+        if (null != opt_status && !"".equals(opt_status.trim())) {
+            this.optStatus = opt_status;
         }
 
         String end_time = dataObject.getString("end_time");
-        if (null!=end_time&&!"".equals(end_time.trim())){
-            this.endTime =end_time;
+        if (null != end_time && !"".equals(end_time.trim())) {
+            this.endTime = end_time;
         }
 
         String status = dataObject.getString("status");
-        if (null!=status&&!"".equals(status.trim())){
-            this.toutiaoStatus =status;
+        if (null != status && !"".equals(status.trim())) {
+            this.toutiaoStatus = status;
         }
 
 //        String dpa_product_target = dataObject.getString("dpa_product_target");
@@ -330,8 +329,8 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         Long convert_id = dataObject.getLong("convert_id");
-        if (null!=convert_id){
-            this.convertId =convert_id;
+        if (null != convert_id) {
+            this.convertId = convert_id;
         }
 
 //        String adjust_cpa = dataObject.getString("adjust_cpa");
@@ -340,8 +339,8 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         BigDecimal bid = dataObject.getBigDecimal("bid");
-        if (null!=bid){
-            this.bid =bid;
+        if (null != bid) {
+            this.bid = bid;
         }
 
 //        Long advertiser_id = dataObject.getLong("advertiser_id");
@@ -365,18 +364,18 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         String hide_if_converted = dataObject.getString("hide_if_converted");
-        if (null!=hide_if_converted&&!"".equals(hide_if_converted.trim())){
-            this.hideIfConverted =hide_if_converted;
+        if (null != hide_if_converted && !"".equals(hide_if_converted.trim())) {
+            this.hideIfConverted = hide_if_converted;
         }
 
         String toutiaoPackage = dataObject.getString("package");
-        if (null!=toutiaoPackage&&!"".equals(toutiaoPackage.trim())){
-            this.toutiaoPackage =toutiaoPackage;
+        if (null != toutiaoPackage && !"".equals(toutiaoPackage.trim())) {
+            this.toutiaoPackage = toutiaoPackage;
         }
 
         String delivery_range = dataObject.getString("delivery_range");
-        if (null!=delivery_range&&!"".equals(delivery_range.trim())){
-            this.deliveryRange =delivery_range;
+        if (null != delivery_range && !"".equals(delivery_range.trim())) {
+            this.deliveryRange = delivery_range;
         }
 
 //        String params_type = dataObject.getString("params_type");
@@ -385,18 +384,18 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         BigDecimal budget = dataObject.getBigDecimal("budget");
-        if (null!=budget){
-            this.budget =budget;
+        if (null != budget) {
+            this.budget = budget;
         }
 
         String schedule_type = dataObject.getString("schedule_type");
-        if (null!=schedule_type&&!"".equals(schedule_type.trim())){
-            this.scheduleType =schedule_type;
+        if (null != schedule_type && !"".equals(schedule_type.trim())) {
+            this.scheduleType = schedule_type;
         }
 
         String schedule_time = dataObject.getString("schedule_time");
-        if (null!=schedule_time&&!"".equals(schedule_time.trim())){
-            this.scheduleTime =schedule_time;
+        if (null != schedule_time && !"".equals(schedule_time.trim())) {
+            this.scheduleTime = schedule_time;
         }
 //
 //        String modify_time = dataObject.getString("modify_time");
@@ -415,17 +414,19 @@ public class CTopToutiaoAdvertisePlan {
 //        }
 
         String download_type = dataObject.getString("download_type");
-        if (null!=download_type&&!"".equals(download_type.trim())){
-            this.downloadType =download_type;
+        if (null != download_type && !"".equals(download_type.trim())) {
+            this.downloadType = download_type;
         }
 
         String external_url = dataObject.getString("external_url");
-        if (null!=external_url&&!"".equals(external_url.trim())){
-            this.externalUrl =external_url;
+        if (null != external_url && !"".equals(external_url.trim())) {
+            this.externalUrl = external_url;
         }
-	}
+    }
+
+    public ByteDanceAdvertisePlan() {
+
+    }
 
-	public CTopToutiaoAdvertisePlan() {
 
-	}
 }

+ 8 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopToutiaoAdvertiser.java

@@ -19,20 +19,20 @@ import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 /**
- * @Description: 头条广告主信息
+ * @Description: 今日头条广告主信息
  * @Author: jeecg-boot
- * @Date:   2019-07-10
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Data
-@TableName("ctop_toutiao_advertiser")
+@TableName("ctop_bytedance_advertiser")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_advertiser对象", description="头条广告主信息")
-public class CTopToutiaoAdvertiser {
+@ApiModel(value = "ctop_bytedance_advertiser对象", description = "今日头条广告主信息")
+public class ByteDanceAdvertiser {
     
 	/**外部平台头条id*/
-	@TableId()
+    @TableId
     @ApiModelProperty(value = "外部平台头条id")
 	private Long id;
 	/**本平台id*/
@@ -140,7 +140,7 @@ public class CTopToutiaoAdvertiser {
     @ApiModelProperty(value = "updateTime")
 	private java.util.Date updateTime;
 
-	public CTopToutiaoAdvertiser(JSONObject dataObject,String accountId) {
+    public ByteDanceAdvertiser(JSONObject dataObject, String accountId) {
 		Long id = dataObject.getLong("id");
 		this.id=id;
 		this.advertiserId = accountId;
@@ -238,6 +238,6 @@ public class CTopToutiaoAdvertiser {
 		}
 	}
 
-	public CTopToutiaoAdvertiser() {
+    public ByteDanceAdvertiser() {
 	}
 }

+ 15 - 13
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CtopToutiaoAdvertiserBudget.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.ctop.entity;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -10,33 +11,34 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
+import java.math.BigDecimal;
+
 /**
- * @Description: 头条广告主账户预算信息
+ * @Description: 今日头条广告主预算信息
  * @Author: jeecg-boot
- * @Date:   2019-07-10
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Data
-@TableName("ctop_toutiao_advertiser_budget")
+@TableName("ctop_bytedance_advertiser_budget")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_advertiser_budget对象", description="头条广告主账户预算信息")
-public class CtopToutiaoAdvertiserBudget {
+@ApiModel(value = "ctop_bytedance_advertiser_budget对象", description = "今日头条广告主预算信息")
+public class ByteDanceAdvertiserBudget {
     
 	/**头条广告主id*/
-	@TableId()
+    @TableId
     @ApiModelProperty(value = "头条广告主id")
 	private Long id;
 	/**平台账号id*/
 	@Excel(name = "平台账号id", width = 15)
     @ApiModelProperty(value = "平台账号id")
 	private String advertiserId;
-	@Excel(name = "预算类型", width = 15)
-    @ApiModelProperty(value = "预算类型")
+    @Excel(name = "预算类型")
 	private java.lang.String budgetMode;
 	@Excel(name = "预算数量", width = 15)
     @ApiModelProperty(value = "预算数量")
-	private Integer budget;
+    private java.math.BigDecimal budget;
 	/**createTime*/
     @ApiModelProperty(value = "createTime")
 	private java.util.Date createTime;
@@ -44,10 +46,10 @@ public class CtopToutiaoAdvertiserBudget {
     @ApiModelProperty(value = "updateTime")
 	private java.util.Date updateTime;
 
-	public CtopToutiaoAdvertiserBudget() {
-	}
+    public ByteDanceAdvertiserBudget() {
+    }
 
-	public CtopToutiaoAdvertiserBudget(JSONObject dataObject, String accountId) {
+    public ByteDanceAdvertiserBudget(JSONObject dataObject, String accountId) {
 		Long advertiserId = dataObject.getLong("advertiser_id");
 		this.id = advertiserId;
 		this.advertiserId = accountId;
@@ -55,7 +57,7 @@ public class CtopToutiaoAdvertiserBudget {
 		if (null!=budget_mode&&!"".equals(budget_mode.trim())){
 			this.budgetMode =budget_mode;
 		}
-		Integer budget = dataObject.getInteger("budget");
+        BigDecimal budget = dataObject.getBigDecimal("budget");
 		if (null!=budget){
 			this.budget =budget;
 		}

+ 144 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceBudgetTemplate.java

@@ -0,0 +1,144 @@
+package org.jeecg.modules.ctop.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 今日头条预算模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_bytedance_budget_template")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bytedance_budget_template对象", description = "今日头条预算模板信息")
+public class ByteDanceBudgetTemplate {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 广告主id
+     */
+    @Excel(name = "广告主id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    private String advertiserId;
+    /**
+     * 头条账号id
+     */
+    @Excel(name = "头条账号id", width = 15)
+    @ApiModelProperty(value = "头条账号id")
+    private Long toutiaoId;
+    /**
+     * 模板名称
+     */
+    @Excel(name = "模板名称", width = 15)
+    @ApiModelProperty(value = "模板名称")
+    private String name;
+    /**
+     * bidType
+     */
+    @Excel(name = "bidType", width = 15)
+    @ApiModelProperty(value = "bidType")
+    private String bidType;
+    /**
+     * flowControlMode
+     */
+    @Excel(name = "flowControlMode", width = 15)
+    @ApiModelProperty(value = "flowControlMode")
+    private String flowControlMode;
+    /**
+     * budgetPrice
+     */
+    @Excel(name = "budgetPrice", width = 15)
+    @ApiModelProperty(value = "budgetPrice")
+    private String budgetPrice;
+    /**
+     * budgetMode
+     */
+    @Excel(name = "budgetPriceMode", width = 15)
+    @ApiModelProperty(value = "budgetPriceMode")
+    private String budgetPriceMode;
+    /**
+     * flowDateType
+     */
+    @Excel(name = "flowDateType", width = 15)
+    @ApiModelProperty(value = "flowDateType")
+    private String flowDateType;
+    /**
+     * startDate
+     */
+    @Excel(name = "startDate", width = 15)
+    @ApiModelProperty(value = "startDate")
+    private String startDate;
+    /**
+     * endDate
+     */
+    @Excel(name = "endDate", width = 15)
+    @ApiModelProperty(value = "endDate")
+    private String endDate;
+    /**
+     * dateQuantum
+     */
+    @Excel(name = "dateQuantum", width = 15)
+    @ApiModelProperty(value = "dateQuantum")
+    private String dateQuantum;
+    /**
+     * dateQuantumRange
+     */
+    @Excel(name = "dateQuantumRange", width = 15)
+    @ApiModelProperty(value = "dateQuantumRange")
+    private String dateQuantumRange;
+    /**
+     * priceType
+     */
+    @Excel(name = "priceType", width = 15)
+    @ApiModelProperty(value = "priceType")
+    private String priceType;
+    /**
+     * convertPrice
+     */
+    @Excel(name = "convertPrice", width = 15)
+    @ApiModelProperty(value = "convertPrice")
+    private String convertPrice;
+    /**
+     * filterType
+     */
+    @Excel(name = "filterType", width = 15)
+    @ApiModelProperty(value = "filterType")
+    private String filterType;
+    /**
+     * status
+     */
+    @Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+    private Integer status;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 29 - 23
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopToutiaoCampaign.java

@@ -1,33 +1,38 @@
 package org.jeecg.modules.ctop.entity;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 /**
- * @Description: 头条广告主广告组信息
+ * @Description: 今日头条广告组信息
  * @Author: jeecg-boot
- * @Date:   2019-07-10
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Data
-@TableName("ctop_toutiao_campaign")
+@TableName("ctop_bytedance_campaign")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_campaign对象", description="头条广告主广告组信息")
-public class CTopToutiaoCampaign {
+@ApiModel(value = "ctop_bytedance_campaign对象", description = "今日头条广告组信息")
+public class ByteDanceCampaign {
     
 	/**今日头条广告组id*/
-	@TableId()
+    @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "今日头条广告组id")
 	private Long id;
 	/**平台用户id*/
@@ -60,12 +65,13 @@ public class CTopToutiaoCampaign {
 	private String modifyTime;
 	@Excel(name = "广告组状态", width = 15)
     @ApiModelProperty(value = "广告组状态")
-	private String status;
-
-	@Excel(name = "广告组状态", width = 15)
-	@ApiModelProperty(value = "广告组状态")
-	private String optStatus;
-
+    private java.lang.String status;
+    /**
+     * optStatus
+     */
+    @Excel(name = "optStatus", width = 15)
+    @ApiModelProperty(value = "optStatus")
+    private java.lang.String optStatus;
 	/**广告组创建时间*/
 	@Excel(name = "广告组创建时间", width = 15)
     @ApiModelProperty(value = "广告组创建时间")
@@ -81,10 +87,10 @@ public class CTopToutiaoCampaign {
     @ApiModelProperty(value = "updateTime")
 	private java.util.Date updateTime;
 
-	public CTopToutiaoCampaign() {
-	}
+    public ByteDanceCampaign() {
+    }
 
-	public CTopToutiaoCampaign(Long id, String advertiserId, Long toutiaoId, String name, BigDecimal budget, String budgetMode, String landingType, String modifyTime, String status, String optStatus, String campaignCreateTime, String campaignModifyTime, Date createTime, Date updateTime) {
+    public ByteDanceCampaign(Long id, String advertiserId, Long toutiaoId, String name, BigDecimal budget, String budgetMode, String landingType, String modifyTime, String status, String optStatus, String campaignCreateTime, String campaignModifyTime, Date createTime, Date updateTime) {
 		this.id = id;
 		this.advertiserId = advertiserId;
 		this.toutiaoId = toutiaoId;
@@ -99,9 +105,9 @@ public class CTopToutiaoCampaign {
 		this.campaignModifyTime = campaignModifyTime;
 		this.createTime = createTime;
 		this.updateTime = updateTime;
-	}
+    }
 
-	public CTopToutiaoCampaign(JSONObject dataObject, String accountId) {
+    public ByteDanceCampaign(JSONObject dataObject, String accountId) {
 		Long id = dataObject.getLong("id");
 		this.id = id;
 		this.advertiserId = accountId;
@@ -144,10 +150,10 @@ public class CTopToutiaoCampaign {
 		String campaign_modify_time = dataObject.getString("campaign_modify_time");
 		if (null!=campaign_modify_time&&!"".equals(campaign_modify_time.trim())){
 			this.campaignModifyTime =campaign_modify_time;
-		}
-	}
+        }
+    }
 
-	public CTopToutiaoCampaign(Long id,  CTopOauthToken oauthToken, String campaignName, String budgetMode, Integer budget, String landingType) {
+    public ByteDanceCampaign(Long id, CTopOauthToken oauthToken, String campaignName, String budgetMode, Integer budget, String landingType) {
 		this.id = id;
 		this.advertiserId = oauthToken.getAdvertiserId();
 		this.name = campaignName;

+ 87 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceCampaignTemplate.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.ctop.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 今日头条广告组模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_bytedance_campaign_template")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bytedance_campaign_template对象", description = "今日头条广告组模板信息")
+public class ByteDanceCampaignTemplate {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * accountId
+     */
+    @Excel(name = "头条账号id")
+    @ApiModelProperty(value = "头条账号id")
+    private Long accountId;
+    @Excel(name = "平台广告主id")
+    @ApiModelProperty(value = "平台广告主id")
+    private String advertiserId;
+    /**
+     * 投放目标
+     */
+    @Excel(name = "投放目标", width = 15)
+    @ApiModelProperty(value = "投放目标")
+    private String promotionPurpuse;
+    /**
+     * 投放方式
+     */
+    @Excel(name = "投放方式", width = 15)
+    @ApiModelProperty(value = "投放方式")
+    private String campaignBudget;
+    /**
+     * 日预算
+     */
+    @Excel(name = "日预算", width = 15)
+    @ApiModelProperty(value = "日预算")
+    private String budgetDaily;
+    /**
+     * 广告组名称
+     */
+    @Excel(name = "广告组名称", width = 15)
+    @ApiModelProperty(value = "广告组名称")
+    private String campaignName;
+    /**
+     * 模板状态
+     */
+    @Excel(name = "模板状态", width = 15)
+    @ApiModelProperty(value = "模板状态")
+    private Integer status;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 8 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ToutiaoCreative.java

@@ -18,20 +18,20 @@ import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 /**
- * @Description: 广告创意信息
+ * @Description: 今日头条创意信息
  * @Author: jeecg-boot
- * @Date:   2019-07-11
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Data
-@TableName("ctop_toutiao_creative")
+@TableName("ctop_bytedance_creative")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_creative对象", description="广告创意信息")
-public class ToutiaoCreative {
+@ApiModel(value = "ctop_bytedance_creative对象", description = "今日头条创意信息")
+public class ByteDanceCreative {
     
 	/**创意id*/
-	@TableId(type = IdType.UUID)
+    @TableId
     @ApiModelProperty(value = "创意id")
 	private Long id;
 	/**广告计划id*/
@@ -101,7 +101,7 @@ public class ToutiaoCreative {
     @ApiModelProperty(value = "updateTime")
 	private Date updateTime;
 
-	public ToutiaoCreative(JSONObject dataObject, String accountId) {
+    public ByteDanceCreative(JSONObject dataObject, String accountId) {
 		this.id = dataObject.getLong("creative_id");
 		this.planId = dataObject.getLong("ad_id");
 		this.toutiaoId = dataObject.getLong("advertiser_id");
@@ -160,6 +160,6 @@ public class ToutiaoCreative {
 //		}
 	}
 
-	public ToutiaoCreative() {
+    public ByteDanceCreative() {
 	}
 }

+ 15 - 11
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ToutiaoCreativeMaterial.java

@@ -18,20 +18,20 @@ import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 /**
- * @Description: 头条创意素材信息
+ * @Description: 今日头条创意素材信息
  * @Author: jeecg-boot
- * @Date:   2019-07-11
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
 @Data
-@TableName("ctop_toutiao_creative_material")
+@TableName("ctop_bytedance_creative_material")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_creative_material对象", description="头条创意素材信息")
-public class ToutiaoCreativeMaterial {
+@ApiModel(value = "ctop_bytedance_creative_material对象", description = "今日头条创意素材信息")
+public class ByteDanceCreativeMaterial {
     
 	/**素材id*/
-	@TableId(type = IdType.UUID)
+    @TableId
     @ApiModelProperty(value = "素材id")
 	private Long id;
 	/**平台广告主id*/
@@ -53,12 +53,13 @@ public class ToutiaoCreativeMaterial {
 	/**创意状态*/
 	@Excel(name = "创意状态", width = 15)
     @ApiModelProperty(value = "创意状态")
-	private String optStatus;
-
+    private String status;
+    /**
+     * 创意状态
+     */
 	@Excel(name = "创意状态", width = 15)
 	@ApiModelProperty(value = "创意状态")
-	private String status;
-
+    private String optStatus;
 	/**创意类型*/
 	@Excel(name = "创意类型", width = 15)
     @ApiModelProperty(value = "创意类型")
@@ -74,7 +75,10 @@ public class ToutiaoCreativeMaterial {
     @ApiModelProperty(value = "updateTime")
 	private Date updateTime;
 
-	public ToutiaoCreativeMaterial(JSONObject dataObject, String accountId) {
+    public ByteDanceCreativeMaterial() {
+    }
+
+    public ByteDanceCreativeMaterial(JSONObject dataObject, String accountId) {
 		this.id = dataObject.getLong("id");
 		this.toutiaoId = dataObject.getLong("advertiser_id");
 

+ 126 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceCustomAudience.java

@@ -0,0 +1,126 @@
+package org.jeecg.modules.ctop.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 人群包信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_bytedance_custom_audience")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bytedance_custom_audience对象", description = "人群包信息")
+public class ByteDanceCustomAudience {
+
+    /**
+     * id
+     */
+    @TableId
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 广告主id
+     */
+    @Excel(name = "广告主id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    private String advertiserId;
+    /**
+     * 头条账号id
+     */
+    @Excel(name = "头条账号id", width = 15)
+    @ApiModelProperty(value = "头条账号id")
+    private Long accountId;
+    /**
+     * 是否删除
+     */
+    @Excel(name = "是否删除", width = 15)
+    @ApiModelProperty(value = "是否删除")
+    private Integer isdel;
+    /**
+     * 数据源id
+     */
+    @Excel(name = "数据源id", width = 15)
+    @ApiModelProperty(value = "数据源id")
+    private String dataSourceId;
+    /**
+     * 人群包名称
+     */
+    @Excel(name = "人群包名称", width = 15)
+    @ApiModelProperty(value = "人群包名称")
+    private String name;
+    /**
+     * 人群包来源
+     */
+    @Excel(name = "人群包来源", width = 15)
+    @ApiModelProperty(value = "人群包来源")
+    private String source;
+    /**
+     * 人群包状态
+     */
+    @Excel(name = "人群包状态", width = 15)
+    @ApiModelProperty(value = "人群包状态")
+    private Integer status;
+    /**
+     * 人群包覆盖人群数目
+     */
+    @Excel(name = "人群包覆盖人群数目", width = 15)
+    @ApiModelProperty(value = "人群包覆盖人群数目")
+    private Long coverNum;
+    /**
+     * 上传类型人群包包含人群数目
+     */
+    @Excel(name = "上传类型人群包包含人群数目", width = 15)
+    @ApiModelProperty(value = "上传类型人群包包含人群数目")
+    private Long uploadNum;
+    /**
+     * 人群分组
+     */
+    @Excel(name = "人群分组", width = 15)
+    @ApiModelProperty(value = "人群分组")
+    private String tag;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+
+    public ByteDanceCustomAudience() {
+    }
+
+    public ByteDanceCustomAudience(CTopOauthToken token, JSONObject dataObject) {
+        this.id = dataObject.getLong("custom_audience_id");
+        this.accountId = token.getAccountId();
+        this.advertiserId = token.getAdvertiserId();
+        this.isdel = dataObject.getInteger("isdel");
+        this.dataSourceId = dataObject.getString("custom_audience_id");
+        this.name = dataObject.getString("name");
+        this.source = dataObject.getString("source");
+        this.status = dataObject.getInteger("status");
+        this.coverNum = dataObject.getLong("cover_num");
+        this.uploadNum = dataObject.getLong("upload_num");
+        this.tag = dataObject.getString("tag");
+    }
+}

+ 252 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ByteDanceUserOrientationTemplate.java

@@ -0,0 +1,252 @@
+package org.jeecg.modules.ctop.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 今日头条受众模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_bytedance_user_orientation_template")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bytedance_user_orientation_template对象", description = "今日头条受众模板信息")
+public class ByteDanceUserOrientationTemplate {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 头条账号id
+     */
+    @Excel(name = "头条账号id", width = 15)
+    @ApiModelProperty(value = "头条账号id")
+    private Long accountId;
+    /**
+     * 广告主id
+     */
+    @Excel(name = "广告主id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    private String advertiserId;
+    /**
+     * 模板名称
+     */
+    @Excel(name = "模板名称", width = 15)
+    @ApiModelProperty(value = "模板名称")
+    private String name;
+    /**
+     * 定向人群包列表
+     */
+    @Excel(name = "定向人群包列表", width = 15)
+    @ApiModelProperty(value = "定向人群包列表")
+    private String retargetingTagsInclude;
+    /**
+     * 排除人群包列表
+     */
+    @Excel(name = "排除人群包列表", width = 15)
+    @ApiModelProperty(value = "排除人群包列表")
+    private String retargetingTagsExclude;
+    /**
+     * 受众性别
+     */
+    @Excel(name = "受众性别", width = 15)
+    @ApiModelProperty(value = "受众性别")
+    private String gender;
+    /**
+     * 年龄
+     */
+    @Excel(name = "年龄", width = 15)
+    @ApiModelProperty(value = "年龄")
+    private String age;
+    /**
+     * 受众最低android版本
+     */
+    @Excel(name = "受众最低android版本", width = 15)
+    @ApiModelProperty(value = "受众最低android版本")
+    private String androidOsv;
+    /**
+     * 受众最低ios版本
+     */
+    @Excel(name = "受众最低ios版本", width = 15)
+    @ApiModelProperty(value = "受众最低ios版本")
+    private String iosOsv;
+    /**
+     * 运营商类型
+     */
+    @Excel(name = "运营商类型", width = 15)
+    @ApiModelProperty(value = "运营商类型")
+    private String carrier;
+    /**
+     * 受众网络类型
+     */
+    @Excel(name = "受众网络类型", width = 15)
+    @ApiModelProperty(value = "受众网络类型")
+    private String ac;
+    /**
+     * 手机品牌
+     */
+    @Excel(name = "手机品牌", width = 15)
+    @ApiModelProperty(value = "手机品牌")
+    private String deviceBrand;
+    /**
+     * 受众文章分类
+     */
+    @Excel(name = "受众文章分类", width = 15)
+    @ApiModelProperty(value = "受众文章分类")
+    private String articleCategory;
+    /**
+     * 用户首次激活时间
+     */
+    @Excel(name = "用户首次激活时间", width = 15)
+    @ApiModelProperty(value = "用户首次激活时间")
+    private String activateType;
+    /**
+     * 受众平台
+     */
+    @Excel(name = "受众平台", width = 15)
+    @ApiModelProperty(value = "受众平台")
+    private String platform;
+    /**
+     * 地域定向城市或者区县列表
+     */
+    @Excel(name = "地域定向城市或者区县列表", width = 15)
+    @ApiModelProperty(value = "地域定向城市或者区县列表")
+    private String city;
+    /**
+     * 商圈ID数组
+     */
+    @Excel(name = "商圈ID数组", width = 15)
+    @ApiModelProperty(value = "商圈ID数组")
+    private String businessIds;
+    /**
+     * 地域类型
+     */
+    @Excel(name = "地域类型", width = 15)
+    @ApiModelProperty(value = "地域类型")
+    private String district;
+    /**
+     * 受众位置类型
+     */
+    @Excel(name = "受众位置类型", width = 15)
+    @ApiModelProperty(value = "受众位置类型")
+    private String locationType;
+    /**
+     * 兴趣分类
+     */
+    @Excel(name = "兴趣分类", width = 15)
+    @ApiModelProperty(value = "兴趣分类")
+    private String adTag;
+    /**
+     * 兴趣关键词, 传入具体的词id,非兴趣词包id
+     */
+    @Excel(name = "兴趣关键词, 传入具体的词id,非兴趣词包id", width = 15)
+    @ApiModelProperty(value = "兴趣关键词, 传入具体的词id,非兴趣词包id")
+    private String interestTags;
+    /**
+     * 行为定向
+     */
+    @Excel(name = "行为定向", width = 15)
+    @ApiModelProperty(value = "行为定向")
+    private String appBehaviorTarget;
+    /**
+     * APP行为定向,分类集合
+     */
+    @Excel(name = "APP行为定向,分类集合", width = 15)
+    @ApiModelProperty(value = "APP行为定向,分类集合")
+    private String appCategory;
+    /**
+     * APP行为定向,APP集合
+     */
+    @Excel(name = "APP行为定向,APP集合", width = 15)
+    @ApiModelProperty(value = "APP行为定向,APP集合")
+    private String appIds;
+    /**
+     * 产品目录ID(ID由查询产品目录接口得到)
+     */
+    @Excel(name = "产品目录ID(ID由查询产品目录接口得到)", width = 15)
+    @ApiModelProperty(value = "产品目录ID(ID由查询产品目录接口得到)")
+    private String productPlatformId;
+    /**
+     * H5地址参数
+     */
+    @Excel(name = "H5地址参数", width = 15)
+    @ApiModelProperty(value = "H5地址参数")
+    private String externalUrlParams;
+    /**
+     * 直达链接参数
+     */
+    @Excel(name = "直达链接参数", width = 15)
+    @ApiModelProperty(value = "直达链接参数")
+    private String openUrlParams;
+    /**
+     * 是否自定义商品定向
+     */
+    @Excel(name = "是否自定义商品定向", width = 15)
+    @ApiModelProperty(value = "是否自定义商品定向")
+    private String dpaLocalAudience;
+    /**
+     * 排除人群包
+     */
+    @Excel(name = "排除人群包", width = 15)
+    @ApiModelProperty(value = "排除人群包")
+    private String excludeCustomActions;
+    /**
+     * 包含人群包
+     */
+    @Excel(name = "包含人群包", width = 15)
+    @ApiModelProperty(value = "包含人群包")
+    private String includeCustomActions;
+    /**
+     * 精选流量包
+     */
+    @Excel(name = "精选流量包", width = 15)
+    @ApiModelProperty(value = "精选流量包")
+    private String superiorPopularityType;
+    /**
+     * 定向流量包ID数组
+     */
+    @Excel(name = "定向流量包ID数组", width = 15)
+    @ApiModelProperty(value = "定向流量包ID数组")
+    private String flowPackage;
+    /**
+     * 排除流量包ID数组
+     */
+    @Excel(name = "排除流量包ID数组", width = 15)
+    @ApiModelProperty(value = "排除流量包ID数组")
+    private String excludeFlowPackage;
+    /**
+     * status
+     */
+    @Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+    private Integer status;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 126 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/BytedanceDeliveryTargetTemplate.java

@@ -0,0 +1,126 @@
+package org.jeecg.modules.ctop.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 投放目标模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_bytedance_delivery_target_template")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bytedance_delivery_target_template对象", description = "投放目标模板信息")
+public class BytedanceDeliveryTargetTemplate {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 头条平台id
+     */
+    @Excel(name = "头条平台id", width = 15)
+    @ApiModelProperty(value = "头条平台id")
+    private Long accountId;
+    /**
+     * 平台账号id
+     */
+    @Excel(name = "平台账号id", width = 15)
+    @ApiModelProperty(value = "平台账号id")
+    private String advertiserId;
+    /**
+     * 模板名称
+     */
+    @Excel(name = "模板名称", width = 15)
+    @ApiModelProperty(value = "模板名称")
+    private String name;
+    /**
+     * 投放目标
+     */
+    @Excel(name = "投放目标", width = 15)
+    @ApiModelProperty(value = "投放目标")
+    private String deliveryTarget;
+    /**
+     * 下载方式
+     */
+    @Excel(name = "下载方式", width = 15)
+    @ApiModelProperty(value = "下载方式")
+    private String downloadType;
+    /**
+     * 下载链接
+     */
+    @Excel(name = "下载链接", width = 15)
+    @ApiModelProperty(value = "下载链接")
+    private String downloadUrl;
+    /**
+     * 落地页链接
+     */
+    @Excel(name = "落地页链接", width = 15)
+    @ApiModelProperty(value = "落地页链接")
+    private String externalUrl;
+    /**
+     * 转化目标
+     */
+    @Excel(name = "转化目标", width = 15)
+    @ApiModelProperty(value = "转化目标")
+    private String convertTarget;
+    /**
+     * 应用包名
+     */
+    @Excel(name = "应用包名", width = 15)
+    @ApiModelProperty(value = "应用包名")
+    private String packageName;
+    /**
+     * 直达链接启用状态
+     */
+    @Excel(name = "直达链接启用状态", width = 15)
+    @ApiModelProperty(value = "直达链接启用状态")
+    private String openUrlStatus;
+    /**
+     * 直达链接生成方式
+     */
+    @Excel(name = "直达链接生成方式", width = 15)
+    @ApiModelProperty(value = "直达链接生成方式")
+    private String openUrlCreateMode;
+    /**
+     * 跳转app链接
+     */
+    @Excel(name = "跳转app链接", width = 15)
+    @ApiModelProperty(value = "跳转app链接")
+    private String redirectUrl;
+    /**
+     * status
+     */
+    @Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+    private Integer status;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 83 - 66
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CTopOauthToken.java

@@ -1,103 +1,120 @@
 package org.jeecg.modules.ctop.entity;
 
-import java.io.Serializable;
-import java.text.ParseException;
-import java.util.Date;
-
 import cn.com.ctop.common.utils.DateUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * @Description: oauth授权码
  * @Author: jeecg-boot
- * @Date:   2019-07-09
+ * @Date: 2019-07-09
  * @Version: V1.0
  */
 @Data
 @TableName("ctop_oauth_token")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_oauth_token对象", description="oauth授权码")
+@ApiModel(value = "ctop_oauth_token对象", description = "oauth授权码")
 public class CTopOauthToken {
-    
-	/**主键ID*/
-	@TableId(type = IdType.UUID)
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.UUID)
     @ApiModelProperty(value = "主键ID")
-	private String id;
-	/**媒体ID(外部广告平台类型,快手/头条/抖音等)*/
-	@Excel(name = "媒体ID(外部广告平台类型,快手/头条/抖音等)", width = 15)
+    private String id;
+    /**
+     * 媒体ID(外部广告平台类型,快手/头条/抖音等)
+     */
+    @Excel(name = "媒体ID(外部广告平台类型,快手/头条/抖音等)", width = 15)
     @ApiModelProperty(value = "媒体ID(外部广告平台类型,快手/头条/抖音等)")
-	private String mediaId;
-	/**广告主ID(自己平台用户内部id)*/
-	@Excel(name = "广告主ID(自己平台用户内部id)", width = 15)
+    private String mediaId;
+    /**
+     * 广告主ID(自己平台用户内部id)
+     */
+    @Excel(name = "广告主ID(自己平台用户内部id)", width = 15)
     @ApiModelProperty(value = "广告主ID(自己平台用户内部id)")
-	private String advertiserId;
-	/**广告账户ID(相当于头条返回的access_token数据中的advertiser_id)*/
-	@Excel(name = "广告账户ID(相当于头条返回的access_token数据中的advertiser_id)", width = 15)
+    private String advertiserId;
+    /**
+     * 广告账户ID(相当于头条返回的access_token数据中的advertiser_id)
+     */
+    @Excel(name = "广告账户ID(相当于头条返回的access_token数据中的advertiser_id)", width = 15)
     @ApiModelProperty(value = "广告账户ID(相当于头条返回的access_token数据中的advertiser_id)")
-	private Long accountId;
-	/**访问令牌*/
-	@Excel(name = "访问令牌", width = 15)
+    private Long accountId;
+    /**
+     * 访问令牌
+     */
+    @Excel(name = "访问令牌", width = 15)
     @ApiModelProperty(value = "访问令牌")
-	private String accessToken;
-	/**访问令牌有效期*/
-	@Excel(name = "访问令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private String accessToken;
+    /**
+     * 访问令牌有效期
+     */
+    @Excel(name = "访问令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "访问令牌有效期")
-	private Date accessTokenExpiresIn;
-	/**刷新令牌*/
-	@Excel(name = "刷新令牌", width = 15)
+    private Date accessTokenExpiresIn;
+    /**
+     * 刷新令牌
+     */
+    @Excel(name = "刷新令牌", width = 15)
     @ApiModelProperty(value = "刷新令牌")
-	private String refreshToken;
-	/**刷新令牌有效期*/
-	@Excel(name = "刷新令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private String refreshToken;
+    /**
+     * 刷新令牌有效期
+     */
+    @Excel(name = "刷新令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "刷新令牌有效期")
-	private Date refreshTokenExpiresIn;
-	/**创建时间*/
-	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date refreshTokenExpiresIn;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
-	private Date createTime;
-	/**修改时间*/
-	@Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "修改时间")
-	private Date updateTime;
+    private Date updateTime;
 
-	public CTopOauthToken(String accountId, JSONObject data) {
-		this.advertiserId = accountId;
-		this.mediaId = "toutiao";
-		Long advertiserId = data.getLong("advertiser_id");
-		this.accountId = advertiserId;
-		String advertiserName = data.getString("advertiser_name");
-		String accessToken = data.getString("access_token");
-		Integer refreshTokenExpiresIn = data.getInteger("refresh_token_expires_in");
-		Integer expiresIn = data.getInteger("expires_in");
-		String refreshToken = data.getString("refresh_token");
-		this.accessToken = accessToken;
-		this.refreshToken = refreshToken;
-		Date now = new Date();
-		this.accessTokenExpiresIn = DateUtils.addSecond(now,expiresIn);
-		this.refreshTokenExpiresIn = DateUtils.addSecond(now,refreshTokenExpiresIn);
-	}
+    public CTopOauthToken(String accountId, JSONObject data) {
+        this.advertiserId = accountId;
+        this.mediaId = "toutiao";
+        Long advertiserId = data.getLong("advertiser_id");
+        this.accountId = advertiserId;
+        String advertiserName = data.getString("advertiser_name");
+        String accessToken = data.getString("access_token");
+        Integer refreshTokenExpiresIn = data.getInteger("refresh_token_expires_in");
+        Integer expiresIn = data.getInteger("expires_in");
+        String refreshToken = data.getString("refresh_token");
+        this.accessToken = accessToken;
+        this.refreshToken = refreshToken;
+        Date now = new Date();
+        this.accessTokenExpiresIn = DateUtils.addSecond(now, expiresIn);
+        this.refreshTokenExpiresIn = DateUtils.addSecond(now, refreshTokenExpiresIn);
+    }
 
-	public CTopOauthToken() {
-	}
+    public CTopOauthToken() {
+    }
 }

+ 0 - 97
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/CtopToutiaoBudgetTemplate.java

@@ -1,97 +0,0 @@
-package org.jeecg.modules.ctop.entity;
-
-import java.io.Serializable;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-/**
- * @Description: 预算与出价模块模板
- * @Author: jeecg-boot
- * @Date:   2019-07-17
- * @Version: V1.0
- */
-@Data
-@TableName("ctop_toutiao_budget_template")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value="ctop_toutiao_budget_template对象", description="预算与出价模块模板")
-public class CtopToutiaoBudgetTemplate {
-    
-	/**id*/
-	@TableId(type = IdType.UUID)
-    @ApiModelProperty(value = "id")
-	private Integer id;
-	/**广告主id*/
-	@Excel(name = "广告主id", width = 15)
-    @ApiModelProperty(value = "广告主id")
-	private String advertiserId;
-	/**头条账号id*/
-	@Excel(name = "头条账号id", width = 15)
-    @ApiModelProperty(value = "头条账号id")
-	private Integer toutiaoId;
-	/**bidType*/
-	@Excel(name = "bidType", width = 15)
-    @ApiModelProperty(value = "bidType")
-	private String bidType;
-	/**flowcontrolmode*/
-	@Excel(name = "flowcontrolmode", width = 15)
-    @ApiModelProperty(value = "flowcontrolmode")
-	private String flowcontrolmode;
-	/**budgetprice*/
-	@Excel(name = "budgetprice", width = 15)
-    @ApiModelProperty(value = "budgetprice")
-	private String budgetprice;
-	/**budgetmode*/
-	@Excel(name = "budgetmode", width = 15)
-    @ApiModelProperty(value = "budgetmode")
-	private String budgetmode;
-	/**flowdate*/
-	@Excel(name = "flowdate", width = 15)
-    @ApiModelProperty(value = "flowdate")
-	private String flowdate;
-	/**dateflowrange*/
-	@Excel(name = "dateflowrange", width = 15)
-    @ApiModelProperty(value = "dateflowrange")
-	private String dateflowrange;
-	/**datequantum*/
-	@Excel(name = "datequantum", width = 15)
-    @ApiModelProperty(value = "datequantum")
-	private String datequantum;
-	/**datequantumrange*/
-	@Excel(name = "datequantumrange", width = 15)
-    @ApiModelProperty(value = "datequantumrange")
-	private String datequantumrange;
-	/**pricetype*/
-	@Excel(name = "pricetype", width = 15)
-    @ApiModelProperty(value = "pricetype")
-	private String pricetype;
-	/**convertprice*/
-	@Excel(name = "convertprice", width = 15)
-    @ApiModelProperty(value = "convertprice")
-	private String convertprice;
-	/**filtertype*/
-	@Excel(name = "filtertype", width = 15)
-    @ApiModelProperty(value = "filtertype")
-	private String filtertype;
-	/**status*/
-	@Excel(name = "status", width = 15)
-    @ApiModelProperty(value = "status")
-	private Integer status;
-	/**createTime*/
-    @ApiModelProperty(value = "createTime")
-	private Date createTime;
-	/**updateTime*/
-    @ApiModelProperty(value = "updateTime")
-	private Date updateTime;
-}

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceAdvertisePlanMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertisePlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceAdvertisePlanMapper extends BaseMapper<ByteDanceAdvertisePlan> {
+
+}

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceAdvertiserBudgetMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiserBudget;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条广告主预算信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceAdvertiserBudgetMapper extends BaseMapper<ByteDanceAdvertiserBudget> {
+
+}

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopToutiaoAdvertiserMapper.java

@@ -3,15 +3,15 @@ package org.jeecg.modules.ctop.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertiser;
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
- * @Description: 头条广告主信息
+ * @Description: 今日头条广告主信息
  * @Author: jeecg-boot
- * @Date:   2019-07-10
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
-public interface CTopToutiaoAdvertiserMapper extends BaseMapper<CTopToutiaoAdvertiser> {
+public interface ByteDanceAdvertiserMapper extends BaseMapper<ByteDanceAdvertiser> {
 
 }

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceBudgetTemplateMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceBudgetTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条预算模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceBudgetTemplateMapper extends BaseMapper<ByteDanceBudgetTemplate> {
+
+}

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopToutiaoCampaignMapper.java

@@ -3,15 +3,15 @@ package org.jeecg.modules.ctop.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.CTopToutiaoCampaign;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaign;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
- * @Description: 头条广告主广告组信息
+ * @Description: 今日头条广告组信息
  * @Author: jeecg-boot
- * @Date:   2019-07-10
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
-public interface CTopToutiaoCampaignMapper extends BaseMapper<CTopToutiaoCampaign> {
+public interface ByteDanceCampaignMapper extends BaseMapper<ByteDanceCampaign> {
 
 }

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceCampaignTemplateMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条广告组模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceCampaignTemplateMapper extends BaseMapper<ByteDanceCampaignTemplate> {
+
+}

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ToutiaoCreativeMapper.java

@@ -3,15 +3,15 @@ package org.jeecg.modules.ctop.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.ToutiaoCreative;
+import org.jeecg.modules.ctop.entity.ByteDanceCreative;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
- * @Description: 广告创意信息
+ * @Description: 今日头条创意信息
  * @Author: jeecg-boot
- * @Date:   2019-07-11
+ * @Date: 2019-07-22
  * @Version: V1.0
  */
-public interface ToutiaoCreativeMapper extends BaseMapper<ToutiaoCreative> {
+public interface ByteDanceCreativeMapper extends BaseMapper<ByteDanceCreative> {
 
 }

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceCreativeMaterialMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceCreativeMaterial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条创意素材信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceCreativeMaterialMapper extends BaseMapper<ByteDanceCreativeMaterial> {
+
+}

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceCustomAudienceMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceCustomAudience;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 人群包信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+public interface ByteDanceCustomAudienceMapper extends BaseMapper<ByteDanceCustomAudience> {
+
+}

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ByteDanceUserOrientationTemplateMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.ByteDanceUserOrientationTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条受众模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+public interface ByteDanceUserOrientationTemplateMapper extends BaseMapper<ByteDanceUserOrientationTemplate> {
+
+}

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/BytedanceDeliveryTargetTemplateMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.ctop.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.BytedanceDeliveryTargetTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 投放目标模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+public interface BytedanceDeliveryTargetTemplateMapper extends BaseMapper<BytedanceDeliveryTargetTemplate> {
+
+}

+ 2 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopOauthTokenMapper.java

@@ -1,15 +1,12 @@
 package org.jeecg.modules.ctop.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.CTopOauthToken;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.ctop.entity.CTopOauthToken;
 
 /**
  * @Description: oauth授权码
  * @Author: jeecg-boot
- * @Date:   2019-07-09
+ * @Date: 2019-07-09
  * @Version: V1.0
  */
 public interface CTopOauthTokenMapper extends BaseMapper<CTopOauthToken> {

+ 0 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CTopToutiaoAdvertisePlanMapper.java

@@ -1,17 +0,0 @@
-package org.jeecg.modules.ctop.mapper;
-
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertisePlan;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * @Description: 头条广告主广告计划信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-public interface CTopToutiaoAdvertisePlanMapper extends BaseMapper<CTopToutiaoAdvertisePlan> {
-
-}

+ 0 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CtopToutiaoAdvertiserBudgetMapper.java

@@ -1,17 +0,0 @@
-package org.jeecg.modules.ctop.mapper;
-
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.CtopToutiaoAdvertiserBudget;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * @Description: 头条广告主账户预算信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-public interface CtopToutiaoAdvertiserBudgetMapper extends BaseMapper<CtopToutiaoAdvertiserBudget> {
-
-}

+ 0 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/CtopToutiaoBudgetTemplateMapper.java

@@ -1,17 +0,0 @@
-package org.jeecg.modules.ctop.mapper;
-
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.CtopToutiaoBudgetTemplate;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * @Description: 预算与出价模块模板
- * @Author: jeecg-boot
- * @Date:   2019-07-17
- * @Version: V1.0
- */
-public interface CtopToutiaoBudgetTemplateMapper extends BaseMapper<CtopToutiaoBudgetTemplate> {
-
-}

+ 0 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ToutiaoCreativeMaterialMapper.java

@@ -1,17 +0,0 @@
-package org.jeecg.modules.ctop.mapper;
-
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.ToutiaoCreativeMaterial;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * @Description: 头条创意素材信息
- * @Author: jeecg-boot
- * @Date:   2019-07-11
- * @Version: V1.0
- */
-public interface ToutiaoCreativeMaterialMapper extends BaseMapper<ToutiaoCreativeMaterial> {
-
-}

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ToutiaoCreativeMaterialMapper.xml

@@ -1,5 +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.ctop.mapper.ToutiaoCreativeMaterialMapper">
+<mapper namespace="org.jeecg.modules.ctop.mapper.ByteDanceAdvertisePlanMapper">
 
 </mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/CtopToutiaoBudgetTemplateMapper.xml

@@ -1,5 +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.ctop.mapper.CtopToutiaoBudgetTemplateMapper">
+<mapper namespace="org.jeecg.modules.ctop.mapper.ByteDanceAdvertiserBudgetMapper">
 
 </mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/CTopToutiaoCampaignMapper.xml

@@ -1,5 +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.ctop.mapper.CTopToutiaoCampaignMapper">
+<mapper namespace="org.jeecg.modules.ctop.mapper.ByteDanceAdvertiserMapper">
 
 </mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceBudgetTemplateMapper.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.ctop.mapper.ByteDanceBudgetTemplateMapper">
+
+</mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ToutiaoCreativeMapper.xml

@@ -1,5 +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.ctop.mapper.ToutiaoCreativeMapper">
+<mapper namespace="org.jeecg.modules.ctop.mapper.ByteDanceCampaignMapper">
 
 </mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceCampaignTemplateMapper.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.ctop.mapper.ByteDanceCampaignTemplateMapper">
+
+</mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/CTopToutiaoAdvertiserMapper.xml

@@ -1,5 +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.ctop.mapper.CTopToutiaoAdvertiserMapper">
+<mapper namespace="org.jeecg.modules.ctop.mapper.ByteDanceCreativeMapper">
 
 </mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceCreativeMaterialMapper.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.ctop.mapper.ByteDanceCreativeMaterialMapper">
+
+</mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceCustomAudienceMapper.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.ctop.mapper.ByteDanceCustomAudienceMapper">
+
+</mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ByteDanceUserOrientationTemplateMapper.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.ctop.mapper.ByteDanceUserOrientationTemplateMapper">
+
+</mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/BytedanceDeliveryTargetTemplateMapper.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.ctop.mapper.BytedanceDeliveryTargetTemplateMapper">
+
+</mapper>

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceAdvertisePlanService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertisePlan;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceAdvertisePlanService extends IService<ByteDanceAdvertisePlan> {
+
+}

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceAdvertiserBudgetService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiserBudget;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条广告主预算信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceAdvertiserBudgetService extends IService<ByteDanceAdvertiserBudget> {
+
+}

+ 3 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ITouTiaoAdvertiserService.java

@@ -2,7 +2,7 @@ package org.jeecg.modules.ctop.service;
 
 import java.util.Map;
 
-public interface ITouTiaoAdvertiserService {
+public interface IByteDanceAdvertiserDataService {
     Map<String, Object> getAdvertiserInfo(String accountId);
 
     Map<String, Object> getAdvertiserPlan(String accountId,String ids);
@@ -28,4 +28,6 @@ public interface ITouTiaoAdvertiserService {
     Map<String, Object> advertiserPlanUpdateBudget(String accountId, String adIds, String budgets);
 
     Map<String, Object> advertiserCreativeUpdateStatus(String accountId, String ids, String optStatus);
+
+    Map<String, Object> advertiserCustomAudienceSelect(String accountId);
 }

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceAdvertiserService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiser;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条广告主信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceAdvertiserService extends IService<ByteDanceAdvertiser> {
+
+}

+ 23 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceBudgetTemplateService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.ctop.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.ctop.entity.ByteDanceBudgetTemplate;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @Description: 今日头条预算模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceBudgetTemplateService extends IService<ByteDanceBudgetTemplate> {
+
+    Map<String, Object> insertTemplate(ByteDanceBudgetTemplate template);
+
+    Result<IPage<ByteDanceBudgetTemplate>> getList(ByteDanceBudgetTemplate template, Integer pageNo, Integer pageSize, HttpServletRequest req);
+}

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCampaignService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCampaign;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条广告组信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceCampaignService extends IService<ByteDanceCampaign> {
+
+}

+ 22 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCampaignTemplateService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.ctop.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @Description: 今日头条广告组模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceCampaignTemplateService extends IService<ByteDanceCampaignTemplate> {
+
+    Map<String, Object> insertTemplate(ByteDanceCampaignTemplate template);
+
+    Result<IPage<ByteDanceCampaignTemplate>> getList(ByteDanceCampaignTemplate template, Integer pageNo, Integer pageSize, HttpServletRequest req);
+}

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCreativeMaterialService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCreativeMaterial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条创意素材信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceCreativeMaterialService extends IService<ByteDanceCreativeMaterial> {
+
+}

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCreativeService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCreative;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条创意信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceCreativeService extends IService<ByteDanceCreative> {
+
+}

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceCustomAudienceService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCustomAudience;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 人群包信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+public interface IByteDanceCustomAudienceService extends IService<ByteDanceCustomAudience> {
+
+}

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IByteDanceUserOrientationTemplateService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.entity.ByteDanceUserOrientationTemplate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 今日头条受众模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+public interface IByteDanceUserOrientationTemplateService extends IService<ByteDanceUserOrientationTemplate> {
+
+}

+ 22 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IBytedanceDeliveryTargetTemplateService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.ctop.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.ctop.entity.BytedanceDeliveryTargetTemplate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @Description: 投放目标模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+public interface IBytedanceDeliveryTargetTemplateService extends IService<BytedanceDeliveryTargetTemplate> {
+
+    Map<String, Object> insertTemplate(BytedanceDeliveryTargetTemplate template);
+
+    Result<IPage<BytedanceDeliveryTargetTemplate>> getList(BytedanceDeliveryTargetTemplate template, Integer pageNo, Integer pageSize, HttpServletRequest req);
+}

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopOauthTokenService.java

@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICTopOauthTokenService extends IService<CTopOauthToken> {
 
+    CTopOauthToken getOAuthTokenByAccountId(String accountId);
 }

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopToutiaoAdvertisePlanService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertisePlan;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 头条广告主广告计划信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-public interface ICTopToutiaoAdvertisePlanService extends IService<CTopToutiaoAdvertisePlan> {
-
-}

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopToutiaoAdvertiserService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertiser;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 头条广告主信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-public interface ICTopToutiaoAdvertiserService extends IService<CTopToutiaoAdvertiser> {
-
-}

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICTopToutiaoCampaignService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.CTopToutiaoCampaign;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 头条广告主广告组信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-public interface ICTopToutiaoCampaignService extends IService<CTopToutiaoCampaign> {
-
-}

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICtopToutiaoAdvertiserBudgetService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.CtopToutiaoAdvertiserBudget;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 头条广告主账户预算信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-public interface ICtopToutiaoAdvertiserBudgetService extends IService<CtopToutiaoAdvertiserBudget> {
-
-}

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICtopToutiaoBudgetTemplateService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.CtopToutiaoBudgetTemplate;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 预算与出价模块模板
- * @Author: jeecg-boot
- * @Date:   2019-07-17
- * @Version: V1.0
- */
-public interface ICtopToutiaoBudgetTemplateService extends IService<CtopToutiaoBudgetTemplate> {
-
-}

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IToutiaoCreativeMaterialService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.ToutiaoCreativeMaterial;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 头条创意素材信息
- * @Author: jeecg-boot
- * @Date:   2019-07-11
- * @Version: V1.0
- */
-public interface IToutiaoCreativeMaterialService extends IService<ToutiaoCreativeMaterial> {
-
-}

+ 0 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IToutiaoCreativeService.java

@@ -1,14 +0,0 @@
-package org.jeecg.modules.ctop.service;
-
-import org.jeecg.modules.ctop.entity.ToutiaoCreative;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @Description: 广告创意信息
- * @Author: jeecg-boot
- * @Date:   2019-07-11
- * @Version: V1.0
- */
-public interface IToutiaoCreativeService extends IService<ToutiaoCreative> {
-
-}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceAdvertisePlanServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertisePlan;
+import org.jeecg.modules.ctop.mapper.ByteDanceAdvertisePlanMapper;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertisePlanService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdvertisePlanMapper, ByteDanceAdvertisePlan> implements IByteDanceAdvertisePlanService {
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceAdvertiserBudgetServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiserBudget;
+import org.jeecg.modules.ctop.mapper.ByteDanceAdvertiserBudgetMapper;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserBudgetService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条广告主预算信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceAdvertiserBudgetServiceImpl extends ServiceImpl<ByteDanceAdvertiserBudgetMapper, ByteDanceAdvertiserBudget> implements IByteDanceAdvertiserBudgetService {
+
+}

+ 125 - 55
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/TouTiaoAdvertiserServiceImpl.java

@@ -5,9 +5,12 @@ import cn.com.ctop.common.utils.PropertiesUtils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.ctop.entity.*;
 import org.jeecg.modules.ctop.mapper.*;
-import org.jeecg.modules.ctop.service.ITouTiaoAdvertiserService;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserDataService;
+import org.jeecg.modules.ctop.service.ICTopOauthTokenService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,17 +21,22 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
 
+/**
+ * @author 宋英豪
+ */
 @Service
-public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
-    private static final Logger logger = LoggerFactory.getLogger(TouTiaoAdvertiserServiceImpl.class);
+public class ByteDanceAdvertiserDataServiceImpl implements IByteDanceAdvertiserDataService {
+    private static final Logger logger = LoggerFactory.getLogger(ByteDanceAdvertiserDataServiceImpl.class);
     @Autowired
     private CTopOauthTokenMapper cTopOauthTokenMapper;
+
     private CTopOauthToken getOAuthTokenByAccountId(String accountId){
         QueryWrapper<CTopOauthToken> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("advertiser_id", accountId).orderByDesc("create_time");
         CTopOauthToken cTopOauthToken = cTopOauthTokenMapper.selectOne(queryWrapper);
         return cTopOauthToken;
     }
+
     @Override
     public Map<String, Object> getAdvertiserInfo(String accountId) {
         Map<String,Object>resultMap = new HashMap<>();
@@ -56,19 +64,19 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             resultMap.put("message","广告主信息不存在");
             return resultMap;
         }
-        for (int i=0;i<data.size();i++){
+        for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            CTopToutiaoAdvertiser toutiaoAdvertiser = new CTopToutiaoAdvertiser(dataObject,accountId);
+            ByteDanceAdvertiser advertiser = new ByteDanceAdvertiser(dataObject, accountId);
             //清除清数据,插入新数据
-            cTopToutiaoAdvertiserMapper.deleteById(toutiaoAdvertiser.getId());
-            cTopToutiaoAdvertiserMapper.insert(toutiaoAdvertiser);
+            advertiserMapper.deleteById(advertiser.getId());
+            advertiserMapper.insert(advertiser);
         }
         resultMap.put("code",0);
         resultMap.put("message","获取广告主信息成功");
         return resultMap;
     }
 
-    private void getAdvertiserPlanByPageNumber(String accountId, Integer pageNumber,String ids){
+    private void getAdvertiserPlanByPageNumber(String accountId, Integer pageNumber, String ids) {
         CTopOauthToken cTopOauthToken = getOAuthTokenByAccountId(accountId);
         //2: 根据token以及用户id获取用户信息数据
         String url = PropertiesUtils.getValue("bytedance_config","bytedance_api_url")+PropertiesUtils.getValue("bytedance_config","bytedance_v2_ad_get");
@@ -83,7 +91,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         if(null!=ids&&!"".equals(ids.trim())){
             String[] idsArray = ids.split(",");
             JSONArray filterIdsArray = new JSONArray();
-            for (int i=0;i<idsArray.length;i++){
+            for (int i = 0; i < idsArray.length; i++) {
                 Long id = Long.parseLong(idsArray[i]);
                 filterIdsArray.add(id);
             }
@@ -104,19 +112,21 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             logger.info("获取广告主广告计划信息不存在==》accountId:{},message:{}",accountId,jsonObject.getString("message"));
             return ;
         }
-        for (int i=0;i<data.size();i++){
+        for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            CTopToutiaoAdvertisePlan toutiaoAdvertisePlan = new CTopToutiaoAdvertisePlan(dataObject,accountId);
+            ByteDanceAdvertisePlan advertisePlan = new ByteDanceAdvertisePlan(dataObject, accountId);
             //清除清数据,插入新数据
-            cTopToutiaoAdvertisePlanMapper.deleteById(toutiaoAdvertisePlan.getId());
-            cTopToutiaoAdvertisePlanMapper.insert(toutiaoAdvertisePlan);
+            advertisePlanMapper.deleteById(advertisePlan.getId());
+            advertisePlanMapper.insert(advertisePlan);
         }
         getAdvertiserPlanByPageNumber(accountId,pageNumber+1,ids);
     }
+
     @Autowired
-    private CTopToutiaoAdvertisePlanMapper cTopToutiaoAdvertisePlanMapper;
+    private ByteDanceAdvertisePlanMapper advertisePlanMapper;
+
     @Override
-    public Map<String, Object> getAdvertiserPlan(String accountId,String ids) {
+    public Map<String, Object> getAdvertiserPlan(String accountId, String ids) {
         getAdvertiserPlanByPageNumber(accountId,1,ids);
         Map<String,Object>resultMap = new HashMap<>();
         resultMap.put("code",0);
@@ -125,7 +135,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
     }
 
     @Override
-    public Map<String, Object> getAdvertiserCampaign(String accountId,String ids) {
+    public Map<String, Object> getAdvertiserCampaign(String accountId, String ids) {
         getAdvertiserCampaignByPageNumber(accountId,1,ids);
         Map<String,Object>resultMap = new HashMap<>();
         resultMap.put("code",0);
@@ -162,12 +172,12 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             resultMap.put("message","获取广告主预算信息完成");
             return resultMap;
         }
-        for (int i=0;i<data.size();i++){
+        for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            CtopToutiaoAdvertiserBudget budget = new CtopToutiaoAdvertiserBudget(dataObject,accountId);
+            ByteDanceAdvertiserBudget advertiserBudget = new ByteDanceAdvertiserBudget(dataObject, accountId);
             //清除清数据,插入新数据
-            ctopToutiaoAdvertiserBudgetMapper.deleteById(budget.getId());
-            ctopToutiaoAdvertiserBudgetMapper.insert(budget);
+            advertiserBudgetMapper.deleteById(advertiserBudget.getId());
+            advertiserBudgetMapper.insert(advertiserBudget);
         }
         resultMap.put("code",0);
         resultMap.put("message","获取广告预算信息完成");
@@ -175,7 +185,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
     }
 
     @Override
-    public Map<String, Object> getAdvertiserCreative(String accountId,String ids) {
+    public Map<String, Object> getAdvertiserCreative(String accountId, String ids) {
         Map<String,Object>resultMap = new HashMap<>();
         getAdvertiserCreativeByPageNumber(accountId,1,ids);
         resultMap.put("code",0);
@@ -213,12 +223,12 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             resultMap.put("message","获取广告主预算信息完成");
             return resultMap;
         }
-        for (int i=0;i<data.size();i++){
+        for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            ToutiaoCreativeMaterial material = new ToutiaoCreativeMaterial(dataObject,accountId);
+            ByteDanceCreativeMaterial material = new ByteDanceCreativeMaterial(dataObject, accountId);
             //清除清数据,插入新数据
-            toutiaoCreativeMaterialMapper.deleteById(material.getId());
-            toutiaoCreativeMaterialMapper.insert(material);
+            creativeMaterialMapper.deleteById(material.getId());
+            creativeMaterialMapper.insert(material);
         }
         resultMap.put("code",0);
         resultMap.put("message","获取广告主预算信息完成");
@@ -259,9 +269,9 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             return resultMap;
         }
         Long id =  data.getLong("campaign_id");
-        CTopToutiaoCampaign campaign = new CTopToutiaoCampaign(id,cTopOauthToken,campaignName,budgetMode,budget,landingType);
+        ByteDanceCampaign campaign = new ByteDanceCampaign(id, cTopOauthToken, campaignName, budgetMode, budget, landingType);
         //清除清数据,插入新数据
-        cTopToutiaoCampaignMapper.insert(campaign);
+        campaignMapper.insert(campaign);
         resultMap.put("code",0);
         resultMap.put("message","广告组创建成功");
         return resultMap;
@@ -273,7 +283,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         JSONArray ids = new JSONArray();
         String [] getIds = campaignIds.split(",");
         if(null!=getIds&&getIds.length>0){
-            for(int i=0;i<getIds.length;i++){
+            for (int i = 0; i < getIds.length; i++) {
                 ids.add(Long.parseLong(getIds[i]));
             }
         }
@@ -307,13 +317,13 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         }
         JSONArray getCampaignIds =  data.getJSONArray("campaign_ids");
         if(null!=getCampaignIds&&getCampaignIds.size()>0){
-            for(int i=0;i<getCampaignIds.size();i++){
+            for (int i = 0; i < getCampaignIds.size(); i++) {
                 Long id = getCampaignIds.getLong(i);
-                CTopToutiaoCampaign campaign = cTopToutiaoCampaignMapper.selectById(id);
+                ByteDanceCampaign campaign = campaignMapper.selectById(id);
                 if(null!=campaign){
                     campaign.setOptStatus(optStatus);
                 }
-                cTopToutiaoCampaignMapper.updateById(campaign);
+                campaignMapper.updateById(campaign);
             }
         }
         resultMap.put("code",0);
@@ -322,10 +332,10 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
     }
 
     @Override
-    public Map<String, Object> advertiserCampaignUpdate(String accountId, Long campaignId, String budgetMode, Integer budget,String campaignName) {
+    public Map<String, Object> advertiserCampaignUpdate(String accountId, Long campaignId, String budgetMode, Integer budget, String campaignName) {
         Map<String,Object>resultMap = new HashMap<>();
         CTopOauthToken cTopOauthToken = getOAuthTokenByAccountId(accountId);
-        CTopToutiaoCampaign campaign = cTopToutiaoCampaignMapper.selectById(campaignId);
+        ByteDanceCampaign campaign = campaignMapper.selectById(campaignId);
         //2: 根据token以及用户id获取用户信息数据
         String url = PropertiesUtils.getValue("bytedance_config","bytedance_api_url")+PropertiesUtils.getValue("bytedance_config","bytedance_v2_campaign_update");
         Map<String,String> headers = new HashMap<>();
@@ -373,7 +383,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         if(null!=budget){
             campaign.setBudget(new BigDecimal(budget));
         }
-        cTopToutiaoCampaignMapper.updateById(campaign);
+        campaignMapper.updateById(campaign);
 
         resultMap.put("code",0);
         resultMap.put("message","广告组信息修改成功");
@@ -386,7 +396,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         JSONArray ids = new JSONArray();
         String [] getIds = adIds.split(",");
         if(null!=getIds&&getIds.length>0){
-            for(int i=0;i<getIds.length;i++){
+            for (int i = 0; i < getIds.length; i++) {
                 ids.add(Long.parseLong(getIds[i]));
             }
         }
@@ -436,7 +446,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         String [] getadIds = adIds.split(",");
         String [] getBids = bids.split(",");
         if(null!=getadIds&&getadIds.length>0){
-            for(int i=0;i<getadIds.length;i++){
+            for (int i = 0; i < getadIds.length; i++) {
                 JSONObject object = new JSONObject();
                 Long ad_id = Long.parseLong(getadIds[i]);
                 Long bid = Long.parseLong(getBids[i]);
@@ -490,7 +500,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         String [] getadIds = adIds.split(",");
         String [] getBudgets = budgets.split(",");
         if(null!=getadIds&&getadIds.length>0){
-            for(int i=0;i<getadIds.length;i++){
+            for (int i = 0; i < getadIds.length; i++) {
                 JSONObject object = new JSONObject();
                 Long ad_id = Long.parseLong(getadIds[i]);
                 Long budget = Long.parseLong(getBudgets[i]);
@@ -541,7 +551,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         JSONArray ids = new JSONArray();
         String [] getCreativeIds = creativeIds.split(",");
         if(null!=getCreativeIds&&getCreativeIds.length>0){
-            for(int i=0;i<getCreativeIds.length;i++){
+            for (int i = 0; i < getCreativeIds.length; i++) {
                 ids.add(Long.parseLong(getCreativeIds[i]));
             }
         }
@@ -583,10 +593,69 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         return resultMap;
     }
 
+    /**
+     * 查询人群包信息
+     *
+     * @return
+     */
+    @Override
+    public Map<String, Object> advertiserCustomAudienceSelect(String accountId) {
+        Map<String, Object> resultMap = new HashMap<>();
+        CTopOauthToken token = getOAuthTokenByAccountId(accountId);
+
+        String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_dmp_custom_audience_select");
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        headers.put("Access-Token", token.getAccessToken());
+
+        TreeMap<String, Object> params = new TreeMap<>();
+        params.put("select_type", "0");
+        params.put("advertiser_id", token.getAccountId() + "");
+        params.put("limit", "100");
+        params.put("offset", "0");
+        String result = HttpUtils.httpGetRequest(url, headers, params);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        Integer code = jsonObject.getInteger("code");
+
+        if (null == code || !code.equals(0)) {
+            logger.info("获取人群包信息接口异常==》accountId:{},message:{}", token.getAdvertiserId(), jsonObject.getString("message"));
+            resultMap.put("success", false);
+            resultMap.put("message", "获取人群包信息接口异常");
+            resultMap.put("code", -1);
+            return resultMap;
+        }
+        JSONArray data = jsonObject.getJSONObject("data").getJSONArray("custom_audience_list");
+        if (null == data || data.size() <= 0) {
+            logger.info("人群包信息不存在==》accountId:{},message:{}", token.getAdvertiserId(), jsonObject.getString("message"));
+            resultMap.put("success", false);
+            resultMap.put("message", "人群包信息不存在");
+            resultMap.put("code", -1);
+            return resultMap;
+        }
+        System.out.println(data.toJSONString());
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            ByteDanceCustomAudience audience = new ByteDanceCustomAudience(token, dataObject);
+            audienceMapper.deleteById(audience.getId());
+            audienceMapper.insert(audience);
+        }
+
+        resultMap.put("success", true);
+        resultMap.put("message", "人群包信息获取成功");
+        resultMap.put("code", 0);
+        return resultMap;
+    }
+
     @Autowired
-    private ToutiaoCreativeMaterialMapper toutiaoCreativeMaterialMapper;
+    private ByteDanceCustomAudienceMapper audienceMapper;
 
-    private void getAdvertiserCreativeByPageNumber(String accountId, Integer pageNumber,String ids){
+    @Autowired
+    private ICTopOauthTokenService tokenService;
+
+    @Autowired
+    private ByteDanceCreativeMaterialMapper creativeMaterialMapper;
+
+    private void getAdvertiserCreativeByPageNumber(String accountId, Integer pageNumber, String ids) {
         CTopOauthToken cTopOauthToken = getOAuthTokenByAccountId(accountId);
         //2: 根据token以及用户id获取用户信息数据
         String url = PropertiesUtils.getValue("bytedance_config","bytedance_api_url")+PropertiesUtils.getValue("bytedance_config","bytedance_v2_creative_get");
@@ -599,7 +668,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         if(null!=ids&&!"".equals(ids.trim())){
             String[] idsArray = ids.split(",");
             JSONArray filterIdsArray = new JSONArray();
-            for (int i=0;i<idsArray.length;i++){
+            for (int i = 0; i < idsArray.length; i++) {
                 Long id = Long.parseLong(idsArray[i]);
                 filterIdsArray.add(id);
             }
@@ -621,22 +690,22 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             logger.info("广告主广告创意信息不存在==》accountId:{},message:{}",accountId,jsonObject.getString("message"));
             return ;
         }
-        for (int i=0;i<data.size();i++){
+        for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            ToutiaoCreative creative = new ToutiaoCreative(dataObject,accountId);
+            ByteDanceCreative creative = new ByteDanceCreative(dataObject, accountId);
             //清除清数据,插入新数据
-            toutiaoCreativeMapper.deleteById(creative.getId());
-            toutiaoCreativeMapper.insert(creative);
+            creativeMapper.deleteById(creative.getId());
+            creativeMapper.insert(creative);
         }
         getAdvertiserCreativeByPageNumber(accountId,pageNumber+1,ids);
     }
 
     @Autowired
-    private ToutiaoCreativeMapper toutiaoCreativeMapper;
+    private ByteDanceCreativeMapper creativeMapper;
     @Autowired
-    private CtopToutiaoAdvertiserBudgetMapper ctopToutiaoAdvertiserBudgetMapper;
+    private ByteDanceAdvertiserBudgetMapper advertiserBudgetMapper;
 
-    private void getAdvertiserCampaignByPageNumber(String accountId, Integer pageNumber,String ids){
+    private void getAdvertiserCampaignByPageNumber(String accountId, Integer pageNumber, String ids) {
         CTopOauthToken cTopOauthToken = getOAuthTokenByAccountId(accountId);
         //2: 根据token以及用户id获取用户信息数据
         String url = PropertiesUtils.getValue("bytedance_config","bytedance_api_url")+PropertiesUtils.getValue("bytedance_config","bytedance_v2_campaign_get");
@@ -649,7 +718,7 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
         if(null!=ids&&!"".equals(ids.trim())){
             String[] idsArray = ids.split(",");
             JSONArray filterIdsArray = new JSONArray();
-            for (int i=0;i<idsArray.length;i++){
+            for (int i = 0; i < idsArray.length; i++) {
                 Long id = Long.parseLong(idsArray[i]);
                 filterIdsArray.add(id);
             }
@@ -671,18 +740,19 @@ public class TouTiaoAdvertiserServiceImpl implements ITouTiaoAdvertiserService {
             logger.info("获取广告主广告组信息不存在==》accountId:{},message:{}",accountId,jsonObject.getString("message"));
             return ;
         }
-        for (int i=0;i<data.size();i++){
+        for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            CTopToutiaoCampaign toutiaoCampaign = new CTopToutiaoCampaign(dataObject,accountId);
+            ByteDanceCampaign campaign = new ByteDanceCampaign(dataObject, accountId);
             //清除清数据,插入新数据
-            cTopToutiaoCampaignMapper.deleteById(toutiaoCampaign.getId());
-            cTopToutiaoCampaignMapper.insert(toutiaoCampaign);
+            campaignMapper.deleteById(campaign.getId());
+            campaignMapper.insert(campaign);
         }
         getAdvertiserCampaignByPageNumber(accountId,pageNumber+1,ids);
     }
+
     @Autowired
-    private CTopToutiaoCampaignMapper cTopToutiaoCampaignMapper;
+    private ByteDanceCampaignMapper campaignMapper;
 
     @Autowired
-    private CTopToutiaoAdvertiserMapper cTopToutiaoAdvertiserMapper;
+    private ByteDanceAdvertiserMapper advertiserMapper;
 }

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceAdvertiserServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceAdvertiser;
+import org.jeecg.modules.ctop.mapper.ByteDanceAdvertiserMapper;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条广告主信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceAdvertiserServiceImpl extends ServiceImpl<ByteDanceAdvertiserMapper, ByteDanceAdvertiser> implements IByteDanceAdvertiserService {
+
+}

+ 70 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceBudgetTemplateServiceImpl.java

@@ -0,0 +1,70 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.*;
+import org.jeecg.modules.ctop.mapper.ByteDanceAdvertiserMapper;
+import org.jeecg.modules.ctop.mapper.ByteDanceBudgetTemplateMapper;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserBudgetService;
+import org.jeecg.modules.ctop.service.IByteDanceAdvertiserService;
+import org.jeecg.modules.ctop.service.IByteDanceBudgetTemplateService;
+import org.jeecg.modules.ctop.service.ICTopOauthTokenService;
+import org.omg.CORBA.OBJ_ADAPTER;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 今日头条预算模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceBudgetTemplateServiceImpl extends ServiceImpl<ByteDanceBudgetTemplateMapper, ByteDanceBudgetTemplate> implements IByteDanceBudgetTemplateService {
+
+    @Override
+    public Map<String, Object> insertTemplate(ByteDanceBudgetTemplate template) {
+        Map<String, Object> resultMap = new HashMap<>();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        CTopOauthToken token = tokenService.getOAuthTokenByAccountId(user.getId());
+        template.setAdvertiserId(token.getAdvertiserId());
+        template.setToutiaoId(token.getAccountId());
+        template.setStatus(1);
+        template.setStartDate(template.getStartDate().substring(0, 10));
+        template.setEndDate(template.getEndDate().substring(0, 10));
+        budgetTemplateMapper.insert(template);
+        resultMap.put("success", true);
+        resultMap.put("message", "模板保存成功");
+        return resultMap;
+    }
+
+    @Override
+    public Result<IPage<ByteDanceBudgetTemplate>> getList(ByteDanceBudgetTemplate template, Integer pageNo, Integer pageSize, HttpServletRequest req) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        CTopOauthToken token = tokenService.getOAuthTokenByAccountId(user.getId());
+        Result<IPage<ByteDanceBudgetTemplate>> result = new Result<>();
+        QueryWrapper<ByteDanceBudgetTemplate> queryWrapper = QueryGenerator.initQueryWrapper(template, req.getParameterMap());
+        queryWrapper.eq("advertiser_id", token.getAdvertiserId()).orderByDesc("create_time");
+        Page<ByteDanceBudgetTemplate> page = new Page<>(pageNo, pageSize);
+        IPage<ByteDanceBudgetTemplate> pageList = this.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    @Autowired
+    private ICTopOauthTokenService tokenService;
+    @Autowired
+    private ByteDanceBudgetTemplateMapper budgetTemplateMapper;
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCampaignServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCampaign;
+import org.jeecg.modules.ctop.mapper.ByteDanceCampaignMapper;
+import org.jeecg.modules.ctop.service.IByteDanceCampaignService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条广告组信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceCampaignServiceImpl extends ServiceImpl<ByteDanceCampaignMapper, ByteDanceCampaign> implements IByteDanceCampaignService {
+
+}

+ 65 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCampaignTemplateServiceImpl.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaign;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+import org.jeecg.modules.ctop.entity.CTopOauthToken;
+import org.jeecg.modules.ctop.mapper.ByteDanceCampaignTemplateMapper;
+import org.jeecg.modules.ctop.service.IByteDanceCampaignTemplateService;
+import org.jeecg.modules.ctop.service.ICTopOauthTokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 今日头条广告组模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceCampaignTemplateServiceImpl extends ServiceImpl<ByteDanceCampaignTemplateMapper, ByteDanceCampaignTemplate> implements IByteDanceCampaignTemplateService {
+
+    @Override
+    public Map<String, Object> insertTemplate(ByteDanceCampaignTemplate template) {
+        Map<String, Object> resultMap = new HashMap<>();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        CTopOauthToken token = tokenService.getOAuthTokenByAccountId(user.getId());
+        template.setAccountId(token.getAccountId());
+        template.setAdvertiserId(token.getAdvertiserId());
+        campaignTemplateMapper.insert(template);
+        resultMap.put("success", true);
+        resultMap.put("message", "模板保存成功");
+        return resultMap;
+    }
+
+    @Override
+    public Result<IPage<ByteDanceCampaignTemplate>> getList(ByteDanceCampaignTemplate template, Integer pageNo, Integer pageSize, HttpServletRequest req) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        CTopOauthToken token = tokenService.getOAuthTokenByAccountId(user.getId());
+        Result<IPage<ByteDanceCampaignTemplate>> result = new Result<>();
+        QueryWrapper<ByteDanceCampaignTemplate> queryWrapper = QueryGenerator.initQueryWrapper(template, req.getParameterMap());
+        queryWrapper.eq("advertiser_id", token.getAdvertiserId()).orderByDesc("create_time");
+        Page<ByteDanceCampaignTemplate> page = new Page<>(pageNo, pageSize);
+        IPage<ByteDanceCampaignTemplate> pageList = this.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    @Autowired
+    private ByteDanceCampaignTemplateMapper campaignTemplateMapper;
+    @Autowired
+    private ICTopOauthTokenService tokenService;
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCreativeMaterialServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCreativeMaterial;
+import org.jeecg.modules.ctop.mapper.ByteDanceCreativeMaterialMapper;
+import org.jeecg.modules.ctop.service.IByteDanceCreativeMaterialService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条创意素材信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceCreativeMaterialServiceImpl extends ServiceImpl<ByteDanceCreativeMaterialMapper, ByteDanceCreativeMaterial> implements IByteDanceCreativeMaterialService {
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCreativeServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCreative;
+import org.jeecg.modules.ctop.mapper.ByteDanceCreativeMapper;
+import org.jeecg.modules.ctop.service.IByteDanceCreativeService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条创意信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeMapper, ByteDanceCreative> implements IByteDanceCreativeService {
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceCustomAudienceServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceCustomAudience;
+import org.jeecg.modules.ctop.mapper.ByteDanceCustomAudienceMapper;
+import org.jeecg.modules.ctop.service.IByteDanceCustomAudienceService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 人群包信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceCustomAudienceServiceImpl extends ServiceImpl<ByteDanceCustomAudienceMapper, ByteDanceCustomAudience> implements IByteDanceCustomAudienceService {
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ByteDanceUserOrientationTemplateServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import org.jeecg.modules.ctop.entity.ByteDanceUserOrientationTemplate;
+import org.jeecg.modules.ctop.mapper.ByteDanceUserOrientationTemplateMapper;
+import org.jeecg.modules.ctop.service.IByteDanceUserOrientationTemplateService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 今日头条受众模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Service
+public class ByteDanceUserOrientationTemplateServiceImpl extends ServiceImpl<ByteDanceUserOrientationTemplateMapper, ByteDanceUserOrientationTemplate> implements IByteDanceUserOrientationTemplateService {
+
+}

+ 66 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/BytedanceDeliveryTargetTemplateServiceImpl.java

@@ -0,0 +1,66 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.ByteDanceCampaignTemplate;
+import org.jeecg.modules.ctop.entity.BytedanceDeliveryTargetTemplate;
+import org.jeecg.modules.ctop.entity.CTopOauthToken;
+import org.jeecg.modules.ctop.mapper.BytedanceDeliveryTargetTemplateMapper;
+import org.jeecg.modules.ctop.service.IBytedanceDeliveryTargetTemplateService;
+import org.jeecg.modules.ctop.service.ICTopOauthTokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 投放目标模板信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-23
+ * @Version: V1.0
+ */
+@Service
+public class BytedanceDeliveryTargetTemplateServiceImpl extends ServiceImpl<BytedanceDeliveryTargetTemplateMapper, BytedanceDeliveryTargetTemplate> implements IBytedanceDeliveryTargetTemplateService {
+
+    @Override
+    public Map<String, Object> insertTemplate(BytedanceDeliveryTargetTemplate template) {
+        Map<String, Object> resultMap = new HashMap<>();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        CTopOauthToken token = tokenService.getOAuthTokenByAccountId(user.getId());
+        template.setAccountId(token.getAccountId());
+        template.setAdvertiserId(token.getAdvertiserId());
+        template.setStatus(1);
+        deliveryTargetTemplateMapper.insert(template);
+        resultMap.put("success", true);
+        resultMap.put("message", "投放目标模板保存成功");
+        return resultMap;
+    }
+
+    @Override
+    public Result<IPage<BytedanceDeliveryTargetTemplate>> getList(BytedanceDeliveryTargetTemplate template, Integer pageNo, Integer pageSize, HttpServletRequest req) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        CTopOauthToken token = tokenService.getOAuthTokenByAccountId(user.getId());
+        Result<IPage<BytedanceDeliveryTargetTemplate>> result = new Result<>();
+        QueryWrapper<BytedanceDeliveryTargetTemplate> queryWrapper = QueryGenerator.initQueryWrapper(template, req.getParameterMap());
+        queryWrapper.eq("advertiser_id", token.getAdvertiserId()).orderByDesc("create_time");
+        Page<BytedanceDeliveryTargetTemplate> page = new Page<>(pageNo, pageSize);
+        IPage<BytedanceDeliveryTargetTemplate> pageList = this.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    @Autowired
+    private ICTopOauthTokenService tokenService;
+    @Autowired
+    private BytedanceDeliveryTargetTemplateMapper deliveryTargetTemplateMapper;
+}

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopOauthTokenServiceImpl.java

@@ -1,8 +1,10 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.jeecg.modules.ctop.entity.CTopOauthToken;
 import org.jeecg.modules.ctop.mapper.CTopOauthTokenMapper;
 import org.jeecg.modules.ctop.service.ICTopOauthTokenService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,4 +18,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 public class CTopOauthTokenServiceImpl extends ServiceImpl<CTopOauthTokenMapper, CTopOauthToken> implements ICTopOauthTokenService {
 
+    @Autowired
+    private CTopOauthTokenMapper cTopOauthTokenMapper;
+
+    @Override
+    public CTopOauthToken getOAuthTokenByAccountId(String accountId) {
+        QueryWrapper<CTopOauthToken> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("advertiser_id", accountId).orderByDesc("create_time");
+        CTopOauthToken cTopOauthToken = cTopOauthTokenMapper.selectOne(queryWrapper);
+        return cTopOauthToken;
+    }
 }

+ 0 - 19
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopToutiaoAdvertisePlanServiceImpl.java

@@ -1,19 +0,0 @@
-package org.jeecg.modules.ctop.service.impl;
-
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertisePlan;
-import org.jeecg.modules.ctop.mapper.CTopToutiaoAdvertisePlanMapper;
-import org.jeecg.modules.ctop.service.ICTopToutiaoAdvertisePlanService;
-import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-/**
- * @Description: 头条广告主广告计划信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-@Service
-public class CTopToutiaoAdvertisePlanServiceImpl extends ServiceImpl<CTopToutiaoAdvertisePlanMapper, CTopToutiaoAdvertisePlan> implements ICTopToutiaoAdvertisePlanService {
-
-}

+ 0 - 19
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopToutiaoAdvertiserServiceImpl.java

@@ -1,19 +0,0 @@
-package org.jeecg.modules.ctop.service.impl;
-
-import org.jeecg.modules.ctop.entity.CTopToutiaoAdvertiser;
-import org.jeecg.modules.ctop.mapper.CTopToutiaoAdvertiserMapper;
-import org.jeecg.modules.ctop.service.ICTopToutiaoAdvertiserService;
-import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-/**
- * @Description: 头条广告主信息
- * @Author: jeecg-boot
- * @Date:   2019-07-10
- * @Version: V1.0
- */
-@Service
-public class CTopToutiaoAdvertiserServiceImpl extends ServiceImpl<CTopToutiaoAdvertiserMapper, CTopToutiaoAdvertiser> implements ICTopToutiaoAdvertiserService {
-
-}

+ 0 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CTopToutiaoCampaignServiceImpl.java


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott