瀏覽代碼

快手 修改功能 创意名称调整

yumeng 5 年之前
父節點
當前提交
79ee37995f
共有 44 個文件被更改,包括 4266 次插入86 次删除
  1. 244 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/controller/KuaiShouCampaignDayBudgetController.java
  2. 244 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/controller/KuaiShouCampaignStatusController.java
  3. 244 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/controller/KuaiShouGroupBidController.java
  4. 244 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/controller/KuaiShouGroupDayBudgetController.java
  5. 82 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouCampaignDayBudget.java
  6. 82 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouCampaignStatus.java
  7. 82 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouGroupBid.java
  8. 82 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouGroupDayBudget.java
  9. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouSchedule.java
  10. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/KuaiShouCampaignDayBudgetMapper.java
  11. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/KuaiShouCampaignStatusMapper.java
  12. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/KuaiShouGroupBidMapper.java
  13. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/KuaiShouGroupDayBudgetMapper.java
  14. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/xml/KuaiShouCampaignDayBudgetMapper.xml
  15. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/xml/KuaiShouCampaignStatusMapper.xml
  16. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/xml/KuaiShouGroupBidMapper.xml
  17. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/xml/KuaiShouGroupDayBudgetMapper.xml
  18. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/mapper/xml/KuaiShouUnitDayBudgetMapper.xml
  19. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaiShouCampaignDayBudgetService.java
  20. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaiShouCampaignStatusService.java
  21. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaiShouGroupBidService.java
  22. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaiShouGroupDayBudgetService.java
  23. 76 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaiShouUpdateService.java
  24. 23 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaishouInterfaceService.java
  25. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouCampaignDayBudgetServiceImpl.java
  26. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouCampaignStatusServiceImpl.java
  27. 22 11
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouCreateServiceImpl.java
  28. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouGroupBidServiceImpl.java
  29. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouGroupDayBudgetServiceImpl.java
  30. 424 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouUpdateServiceImpl.java
  31. 170 71
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaishouInterfaceServiceImpl.java
  32. 188 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouCampaignDayBudgetList.vue
  33. 188 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouCampaignStatusList.vue
  34. 188 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouGroupBidList.vue
  35. 188 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouGroupDayBudgetList.vue
  36. 150 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignDayBudgetModal.vue
  37. 157 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignDayBudgetModal__Style#Drawer.vue
  38. 150 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignStatusModal.vue
  39. 157 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignStatusModal__Style#Drawer.vue
  40. 150 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupBidModal.vue
  41. 157 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupBidModal__Style#Drawer.vue
  42. 150 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupDayBudgetModal.vue
  43. 157 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupDayBudgetModal__Style#Drawer.vue
  44. 34 1
      module-kuaishou/src/main/java/constant/KuaishouInterfaceConstant.java

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

@@ -0,0 +1,244 @@
+package org.jeecg.modules.kuaishou.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.kuaishou.entity.KuaiShouCampaignDayBudget;
+import org.jeecg.modules.kuaishou.service.IKuaiShouCampaignDayBudgetService;
+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-09-11
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="快手-修改广告计划记录表")
+@RestController
+@RequestMapping("/kuaishou/kuaiShouCampaignDayBudget")
+public class KuaiShouCampaignDayBudgetController {
+	@Autowired
+	private IKuaiShouCampaignDayBudgetService kuaiShouCampaignDayBudgetService;
+	
+	/**
+	  * 分页列表查询
+	 * @param kuaiShouCampaignDayBudget
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "快手-修改广告计划记录表-分页列表查询")
+	@ApiOperation(value="快手-修改广告计划记录表-分页列表查询", notes="快手-修改广告计划记录表-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KuaiShouCampaignDayBudget>> queryPageList(KuaiShouCampaignDayBudget kuaiShouCampaignDayBudget,
+									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+									  HttpServletRequest req) {
+		Result<IPage<KuaiShouCampaignDayBudget>> result = new Result<IPage<KuaiShouCampaignDayBudget>>();
+		QueryWrapper<KuaiShouCampaignDayBudget> queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouCampaignDayBudget, req.getParameterMap());
+		Page<KuaiShouCampaignDayBudget> page = new Page<KuaiShouCampaignDayBudget>(pageNo, pageSize);
+		IPage<KuaiShouCampaignDayBudget> pageList = kuaiShouCampaignDayBudgetService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+	
+	/**
+	  *   添加
+	 * @param kuaiShouCampaignDayBudget
+	 * @return
+	 */
+	@AutoLog(value = "快手-修改广告计划记录表-添加")
+	@ApiOperation(value="快手-修改广告计划记录表-添加", notes="快手-修改广告计划记录表-添加")
+	@PostMapping(value = "/add")
+	public Result<KuaiShouCampaignDayBudget> add(@RequestBody KuaiShouCampaignDayBudget kuaiShouCampaignDayBudget) {
+		Result<KuaiShouCampaignDayBudget> result = new Result<KuaiShouCampaignDayBudget>();
+		try {
+			kuaiShouCampaignDayBudgetService.save(kuaiShouCampaignDayBudget);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+	
+	/**
+	  *  编辑
+	 * @param kuaiShouCampaignDayBudget
+	 * @return
+	 */
+	@AutoLog(value = "快手-修改广告计划记录表-编辑")
+	@ApiOperation(value="快手-修改广告计划记录表-编辑", notes="快手-修改广告计划记录表-编辑")
+	@PutMapping(value = "/edit")
+	public Result<KuaiShouCampaignDayBudget> edit(@RequestBody KuaiShouCampaignDayBudget kuaiShouCampaignDayBudget) {
+		Result<KuaiShouCampaignDayBudget> result = new Result<KuaiShouCampaignDayBudget>();
+		KuaiShouCampaignDayBudget kuaiShouCampaignDayBudgetEntity = kuaiShouCampaignDayBudgetService.getById(kuaiShouCampaignDayBudget.getId());
+		if(kuaiShouCampaignDayBudgetEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = kuaiShouCampaignDayBudgetService.updateById(kuaiShouCampaignDayBudget);
+			//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 {
+			kuaiShouCampaignDayBudgetService.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<KuaiShouCampaignDayBudget> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<KuaiShouCampaignDayBudget> result = new Result<KuaiShouCampaignDayBudget>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.kuaiShouCampaignDayBudgetService.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<KuaiShouCampaignDayBudget> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<KuaiShouCampaignDayBudget> result = new Result<KuaiShouCampaignDayBudget>();
+		KuaiShouCampaignDayBudget kuaiShouCampaignDayBudget = kuaiShouCampaignDayBudgetService.getById(id);
+		if(kuaiShouCampaignDayBudget==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(kuaiShouCampaignDayBudget);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+      // Step.1 组装查询条件
+      QueryWrapper<KuaiShouCampaignDayBudget> queryWrapper = null;
+      try {
+          String paramsStr = request.getParameter("paramsStr");
+          if (oConvertUtils.isNotEmpty(paramsStr)) {
+              String deString = URLDecoder.decode(paramsStr, "UTF-8");
+              KuaiShouCampaignDayBudget kuaiShouCampaignDayBudget = JSON.parseObject(deString, KuaiShouCampaignDayBudget.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouCampaignDayBudget, request.getParameterMap());
+          }
+      } catch (UnsupportedEncodingException e) {
+          e.printStackTrace();
+      }
+
+      //Step.2 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      List<KuaiShouCampaignDayBudget> pageList = kuaiShouCampaignDayBudgetService.list(queryWrapper);
+      //导出文件名称
+      mv.addObject(NormalExcelConstants.FILE_NAME, "快手-修改广告计划记录表列表");
+      mv.addObject(NormalExcelConstants.CLASS, KuaiShouCampaignDayBudget.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<KuaiShouCampaignDayBudget> listKuaiShouCampaignDayBudgets = ExcelImportUtil.importExcel(file.getInputStream(), KuaiShouCampaignDayBudget.class, params);
+              kuaiShouCampaignDayBudgetService.saveBatch(listKuaiShouCampaignDayBudgets);
+              return Result.ok("文件导入成功!数据行数:" + listKuaiShouCampaignDayBudgets.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("文件导入失败!");
+  }
+
+}

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

@@ -0,0 +1,244 @@
+package org.jeecg.modules.kuaishou.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.kuaishou.entity.KuaiShouCampaignStatus;
+import org.jeecg.modules.kuaishou.service.IKuaiShouCampaignStatusService;
+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-09-11
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="快手-修改状态")
+@RestController
+@RequestMapping("/kuaishou/kuaiShouCampaignStatus")
+public class KuaiShouCampaignStatusController {
+	@Autowired
+	private IKuaiShouCampaignStatusService kuaiShouCampaignStatusService;
+	
+	/**
+	  * 分页列表查询
+	 * @param kuaiShouCampaignStatus
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "快手-修改状态-分页列表查询")
+	@ApiOperation(value="快手-修改状态-分页列表查询", notes="快手-修改状态-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KuaiShouCampaignStatus>> queryPageList(KuaiShouCampaignStatus kuaiShouCampaignStatus,
+									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+									  HttpServletRequest req) {
+		Result<IPage<KuaiShouCampaignStatus>> result = new Result<IPage<KuaiShouCampaignStatus>>();
+		QueryWrapper<KuaiShouCampaignStatus> queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouCampaignStatus, req.getParameterMap());
+		Page<KuaiShouCampaignStatus> page = new Page<KuaiShouCampaignStatus>(pageNo, pageSize);
+		IPage<KuaiShouCampaignStatus> pageList = kuaiShouCampaignStatusService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+	
+	/**
+	  *   添加
+	 * @param kuaiShouCampaignStatus
+	 * @return
+	 */
+	@AutoLog(value = "快手-修改状态-添加")
+	@ApiOperation(value="快手-修改状态-添加", notes="快手-修改状态-添加")
+	@PostMapping(value = "/add")
+	public Result<KuaiShouCampaignStatus> add(@RequestBody KuaiShouCampaignStatus kuaiShouCampaignStatus) {
+		Result<KuaiShouCampaignStatus> result = new Result<KuaiShouCampaignStatus>();
+		try {
+			kuaiShouCampaignStatusService.save(kuaiShouCampaignStatus);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+	
+	/**
+	  *  编辑
+	 * @param kuaiShouCampaignStatus
+	 * @return
+	 */
+	@AutoLog(value = "快手-修改状态-编辑")
+	@ApiOperation(value="快手-修改状态-编辑", notes="快手-修改状态-编辑")
+	@PutMapping(value = "/edit")
+	public Result<KuaiShouCampaignStatus> edit(@RequestBody KuaiShouCampaignStatus kuaiShouCampaignStatus) {
+		Result<KuaiShouCampaignStatus> result = new Result<KuaiShouCampaignStatus>();
+		KuaiShouCampaignStatus kuaiShouCampaignStatusEntity = kuaiShouCampaignStatusService.getById(kuaiShouCampaignStatus.getId());
+		if(kuaiShouCampaignStatusEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = kuaiShouCampaignStatusService.updateById(kuaiShouCampaignStatus);
+			//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 {
+			kuaiShouCampaignStatusService.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<KuaiShouCampaignStatus> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<KuaiShouCampaignStatus> result = new Result<KuaiShouCampaignStatus>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.kuaiShouCampaignStatusService.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<KuaiShouCampaignStatus> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<KuaiShouCampaignStatus> result = new Result<KuaiShouCampaignStatus>();
+		KuaiShouCampaignStatus kuaiShouCampaignStatus = kuaiShouCampaignStatusService.getById(id);
+		if(kuaiShouCampaignStatus==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(kuaiShouCampaignStatus);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+      // Step.1 组装查询条件
+      QueryWrapper<KuaiShouCampaignStatus> queryWrapper = null;
+      try {
+          String paramsStr = request.getParameter("paramsStr");
+          if (oConvertUtils.isNotEmpty(paramsStr)) {
+              String deString = URLDecoder.decode(paramsStr, "UTF-8");
+              KuaiShouCampaignStatus kuaiShouCampaignStatus = JSON.parseObject(deString, KuaiShouCampaignStatus.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouCampaignStatus, request.getParameterMap());
+          }
+      } catch (UnsupportedEncodingException e) {
+          e.printStackTrace();
+      }
+
+      //Step.2 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      List<KuaiShouCampaignStatus> pageList = kuaiShouCampaignStatusService.list(queryWrapper);
+      //导出文件名称
+      mv.addObject(NormalExcelConstants.FILE_NAME, "快手-修改状态列表");
+      mv.addObject(NormalExcelConstants.CLASS, KuaiShouCampaignStatus.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<KuaiShouCampaignStatus> listKuaiShouCampaignStatuss = ExcelImportUtil.importExcel(file.getInputStream(), KuaiShouCampaignStatus.class, params);
+              kuaiShouCampaignStatusService.saveBatch(listKuaiShouCampaignStatuss);
+              return Result.ok("文件导入成功!数据行数:" + listKuaiShouCampaignStatuss.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("文件导入失败!");
+  }
+
+}

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

@@ -0,0 +1,244 @@
+package org.jeecg.modules.kuaishou.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.kuaishou.entity.KuaiShouGroupBid;
+import org.jeecg.modules.kuaishou.service.IKuaiShouGroupBidService;
+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-09-11
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="快手修改广告组出价")
+@RestController
+@RequestMapping("/kuaishou/kuaiShouGroupBid")
+public class KuaiShouGroupBidController {
+	@Autowired
+	private IKuaiShouGroupBidService kuaiShouGroupBidService;
+	
+	/**
+	  * 分页列表查询
+	 * @param kuaiShouGroupBid
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "快手修改广告组出价-分页列表查询")
+	@ApiOperation(value="快手修改广告组出价-分页列表查询", notes="快手修改广告组出价-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KuaiShouGroupBid>> queryPageList(KuaiShouGroupBid kuaiShouGroupBid,
+									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+									  HttpServletRequest req) {
+		Result<IPage<KuaiShouGroupBid>> result = new Result<IPage<KuaiShouGroupBid>>();
+		QueryWrapper<KuaiShouGroupBid> queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouGroupBid, req.getParameterMap());
+		Page<KuaiShouGroupBid> page = new Page<KuaiShouGroupBid>(pageNo, pageSize);
+		IPage<KuaiShouGroupBid> pageList = kuaiShouGroupBidService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+	
+	/**
+	  *   添加
+	 * @param kuaiShouGroupBid
+	 * @return
+	 */
+	@AutoLog(value = "快手修改广告组出价-添加")
+	@ApiOperation(value="快手修改广告组出价-添加", notes="快手修改广告组出价-添加")
+	@PostMapping(value = "/add")
+	public Result<KuaiShouGroupBid> add(@RequestBody KuaiShouGroupBid kuaiShouGroupBid) {
+		Result<KuaiShouGroupBid> result = new Result<KuaiShouGroupBid>();
+		try {
+			kuaiShouGroupBidService.save(kuaiShouGroupBid);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+	
+	/**
+	  *  编辑
+	 * @param kuaiShouGroupBid
+	 * @return
+	 */
+	@AutoLog(value = "快手修改广告组出价-编辑")
+	@ApiOperation(value="快手修改广告组出价-编辑", notes="快手修改广告组出价-编辑")
+	@PutMapping(value = "/edit")
+	public Result<KuaiShouGroupBid> edit(@RequestBody KuaiShouGroupBid kuaiShouGroupBid) {
+		Result<KuaiShouGroupBid> result = new Result<KuaiShouGroupBid>();
+		KuaiShouGroupBid kuaiShouGroupBidEntity = kuaiShouGroupBidService.getById(kuaiShouGroupBid.getId());
+		if(kuaiShouGroupBidEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = kuaiShouGroupBidService.updateById(kuaiShouGroupBid);
+			//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 {
+			kuaiShouGroupBidService.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<KuaiShouGroupBid> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<KuaiShouGroupBid> result = new Result<KuaiShouGroupBid>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.kuaiShouGroupBidService.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<KuaiShouGroupBid> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<KuaiShouGroupBid> result = new Result<KuaiShouGroupBid>();
+		KuaiShouGroupBid kuaiShouGroupBid = kuaiShouGroupBidService.getById(id);
+		if(kuaiShouGroupBid==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(kuaiShouGroupBid);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+      // Step.1 组装查询条件
+      QueryWrapper<KuaiShouGroupBid> queryWrapper = null;
+      try {
+          String paramsStr = request.getParameter("paramsStr");
+          if (oConvertUtils.isNotEmpty(paramsStr)) {
+              String deString = URLDecoder.decode(paramsStr, "UTF-8");
+              KuaiShouGroupBid kuaiShouGroupBid = JSON.parseObject(deString, KuaiShouGroupBid.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouGroupBid, request.getParameterMap());
+          }
+      } catch (UnsupportedEncodingException e) {
+          e.printStackTrace();
+      }
+
+      //Step.2 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      List<KuaiShouGroupBid> pageList = kuaiShouGroupBidService.list(queryWrapper);
+      //导出文件名称
+      mv.addObject(NormalExcelConstants.FILE_NAME, "快手修改广告组出价列表");
+      mv.addObject(NormalExcelConstants.CLASS, KuaiShouGroupBid.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<KuaiShouGroupBid> listKuaiShouGroupBids = ExcelImportUtil.importExcel(file.getInputStream(), KuaiShouGroupBid.class, params);
+              kuaiShouGroupBidService.saveBatch(listKuaiShouGroupBids);
+              return Result.ok("文件导入成功!数据行数:" + listKuaiShouGroupBids.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("文件导入失败!");
+  }
+
+}

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

@@ -0,0 +1,244 @@
+package org.jeecg.modules.kuaishou.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.kuaishou.entity.KuaiShouGroupDayBudget;
+import org.jeecg.modules.kuaishou.service.IKuaiShouGroupDayBudgetService;
+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-09-11
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="快手 修改广告组预算")
+@RestController
+@RequestMapping("/kuaishou/kuaiShouGroupDayBudget")
+public class KuaiShouGroupDayBudgetController {
+	@Autowired
+	private IKuaiShouGroupDayBudgetService kuaiShouGroupDayBudgetService;
+	
+	/**
+	  * 分页列表查询
+	 * @param kuaiShouGroupDayBudget
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "快手 修改广告组预算-分页列表查询")
+	@ApiOperation(value="快手 修改广告组预算-分页列表查询", notes="快手 修改广告组预算-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KuaiShouGroupDayBudget>> queryPageList(KuaiShouGroupDayBudget kuaiShouGroupDayBudget,
+									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+									  HttpServletRequest req) {
+		Result<IPage<KuaiShouGroupDayBudget>> result = new Result<IPage<KuaiShouGroupDayBudget>>();
+		QueryWrapper<KuaiShouGroupDayBudget> queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouGroupDayBudget, req.getParameterMap());
+		Page<KuaiShouGroupDayBudget> page = new Page<KuaiShouGroupDayBudget>(pageNo, pageSize);
+		IPage<KuaiShouGroupDayBudget> pageList = kuaiShouGroupDayBudgetService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+	
+	/**
+	  *   添加
+	 * @param kuaiShouGroupDayBudget
+	 * @return
+	 */
+	@AutoLog(value = "快手 修改广告组预算-添加")
+	@ApiOperation(value="快手 修改广告组预算-添加", notes="快手 修改广告组预算-添加")
+	@PostMapping(value = "/add")
+	public Result<KuaiShouGroupDayBudget> add(@RequestBody KuaiShouGroupDayBudget kuaiShouGroupDayBudget) {
+		Result<KuaiShouGroupDayBudget> result = new Result<KuaiShouGroupDayBudget>();
+		try {
+			kuaiShouGroupDayBudgetService.save(kuaiShouGroupDayBudget);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+	
+	/**
+	  *  编辑
+	 * @param kuaiShouGroupDayBudget
+	 * @return
+	 */
+	@AutoLog(value = "快手 修改广告组预算-编辑")
+	@ApiOperation(value="快手 修改广告组预算-编辑", notes="快手 修改广告组预算-编辑")
+	@PutMapping(value = "/edit")
+	public Result<KuaiShouGroupDayBudget> edit(@RequestBody KuaiShouGroupDayBudget kuaiShouGroupDayBudget) {
+		Result<KuaiShouGroupDayBudget> result = new Result<KuaiShouGroupDayBudget>();
+		KuaiShouGroupDayBudget kuaiShouGroupDayBudgetEntity = kuaiShouGroupDayBudgetService.getById(kuaiShouGroupDayBudget.getId());
+		if(kuaiShouGroupDayBudgetEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = kuaiShouGroupDayBudgetService.updateById(kuaiShouGroupDayBudget);
+			//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 {
+			kuaiShouGroupDayBudgetService.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<KuaiShouGroupDayBudget> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<KuaiShouGroupDayBudget> result = new Result<KuaiShouGroupDayBudget>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.kuaiShouGroupDayBudgetService.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<KuaiShouGroupDayBudget> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<KuaiShouGroupDayBudget> result = new Result<KuaiShouGroupDayBudget>();
+		KuaiShouGroupDayBudget kuaiShouGroupDayBudget = kuaiShouGroupDayBudgetService.getById(id);
+		if(kuaiShouGroupDayBudget==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(kuaiShouGroupDayBudget);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+      // Step.1 组装查询条件
+      QueryWrapper<KuaiShouGroupDayBudget> queryWrapper = null;
+      try {
+          String paramsStr = request.getParameter("paramsStr");
+          if (oConvertUtils.isNotEmpty(paramsStr)) {
+              String deString = URLDecoder.decode(paramsStr, "UTF-8");
+              KuaiShouGroupDayBudget kuaiShouGroupDayBudget = JSON.parseObject(deString, KuaiShouGroupDayBudget.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(kuaiShouGroupDayBudget, request.getParameterMap());
+          }
+      } catch (UnsupportedEncodingException e) {
+          e.printStackTrace();
+      }
+
+      //Step.2 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      List<KuaiShouGroupDayBudget> pageList = kuaiShouGroupDayBudgetService.list(queryWrapper);
+      //导出文件名称
+      mv.addObject(NormalExcelConstants.FILE_NAME, "快手 修改广告组预算列表");
+      mv.addObject(NormalExcelConstants.CLASS, KuaiShouGroupDayBudget.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<KuaiShouGroupDayBudget> listKuaiShouGroupDayBudgets = ExcelImportUtil.importExcel(file.getInputStream(), KuaiShouGroupDayBudget.class, params);
+              kuaiShouGroupDayBudgetService.saveBatch(listKuaiShouGroupDayBudgets);
+              return Result.ok("文件导入成功!数据行数:" + listKuaiShouGroupDayBudgets.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("文件导入失败!");
+  }
+
+}

+ 82 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouCampaignDayBudget.java

@@ -0,0 +1,82 @@
+package org.jeecg.modules.kuaishou.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Description: 快手-修改广告计划记录表
+ * @Author: jeecg-boot
+ * @Date: 2019-09-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_kuaishou_campaign_day_budget")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_campaign_day_budget对象", description = "快手-修改广告计划记录表")
+public class KuaiShouCampaignDayBudget {
+
+    /**
+     * 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 Long campaignId;
+    /**
+     * 修改前预算
+     */
+    @Excel(name = "修改前预算", width = 15)
+    @ApiModelProperty(value = "修改前预算")
+    private Long dayBudget;
+    /**
+     * 修改后预算
+     */
+    @Excel(name = "修改后预算", width = 15)
+    @ApiModelProperty(value = "修改后预算")
+    private Long updateDayBudget;
+    /**
+     * 操作人id
+     */
+    @Excel(name = "操作人id", width = 15)
+    @ApiModelProperty(value = "操作人id")
+    private String loginId;
+    /**
+     * 创建时间
+     */
+    @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")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 82 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouCampaignStatus.java

@@ -0,0 +1,82 @@
+package org.jeecg.modules.kuaishou.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Description: 快手-修改状态
+ * @Author: jeecg-boot
+ * @Date: 2019-09-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_kuaishou_campaign_status")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_campaign_status对象", description = "快手-修改状态")
+public class KuaiShouCampaignStatus {
+
+    /**
+     * 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 Long campaignId;
+    /**
+     * 修改前状态
+     */
+    @Excel(name = "修改前状态", width = 15)
+    @ApiModelProperty(value = "修改前状态")
+    private Integer putStatus;
+    /**
+     * 修改后状态
+     */
+    @Excel(name = "修改后状态", width = 15)
+    @ApiModelProperty(value = "修改后状态")
+    private Integer updatePutStatus;
+    /**
+     * 操作人id
+     */
+    @Excel(name = "操作人id", width = 15)
+    @ApiModelProperty(value = "操作人id")
+    private String loginId;
+    /**
+     * 创建时间
+     */
+    @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")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 82 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouGroupBid.java

@@ -0,0 +1,82 @@
+package org.jeecg.modules.kuaishou.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Description: 快手修改广告组出价
+ * @Author: jeecg-boot
+ * @Date: 2019-09-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_kuaishou_group_bid")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_group_bid对象", description = "快手修改广告组出价")
+public class KuaiShouGroupBid {
+
+    /**
+     * 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 Long unitId;
+    /**
+     * 修改前出价
+     */
+    @Excel(name = "修改前出价", width = 15)
+    @ApiModelProperty(value = "修改前出价")
+    private Long bid;
+    /**
+     * 修改后出价
+     */
+    @Excel(name = "修改后出价", width = 15)
+    @ApiModelProperty(value = "修改后出价")
+    private Long updateBid;
+    /**
+     * 操作人id
+     */
+    @Excel(name = "操作人id", width = 15)
+    @ApiModelProperty(value = "操作人id")
+    private String loginId;
+    /**
+     * 创建时间
+     */
+    @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")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 82 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouGroupDayBudget.java

@@ -0,0 +1,82 @@
+package org.jeecg.modules.kuaishou.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Description: 快手 修改广告组预算
+ * @Author: jeecg-boot
+ * @Date: 2019-09-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_kuaishou_group_day_budget")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_group_day_budget对象", description = "快手 修改广告组预算")
+public class KuaiShouGroupDayBudget {
+
+    /**
+     * 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 Long unitId;
+    /**
+     * 修改前预算
+     */
+    @Excel(name = "修改前预算", width = 15)
+    @ApiModelProperty(value = "修改前预算")
+    private Long dayBudget;
+    /**
+     * 修改后预算
+     */
+    @Excel(name = "修改后预算", width = 15)
+    @ApiModelProperty(value = "修改后预算")
+    private Long updateDayBudget;
+    /**
+     * 操作人id
+     */
+    @Excel(name = "操作人id", width = 15)
+    @ApiModelProperty(value = "操作人id")
+    private String loginId;
+    /**
+     * 创建时间
+     */
+    @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")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/entity/KuaiShouSchedule.java

@@ -33,6 +33,14 @@ public class KuaiShouSchedule {
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "id")
     private Long id;
+
+    /**
+     * accountId
+     */
+    @Excel(name = "账号id", width = 15)
+    @ApiModelProperty(value = "账号id")
+    private Long accountId;
+
     /**
      * 广告组id
      */

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.kuaishou.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.kuaishou.entity.KuaiShouCampaignDayBudget;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 快手-修改广告计划记录表
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface KuaiShouCampaignDayBudgetMapper extends BaseMapper<KuaiShouCampaignDayBudget> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.kuaishou.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.kuaishou.entity.KuaiShouCampaignStatus;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 快手-修改状态
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface KuaiShouCampaignStatusMapper extends BaseMapper<KuaiShouCampaignStatus> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.kuaishou.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.kuaishou.entity.KuaiShouGroupBid;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 快手修改广告组出价
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface KuaiShouGroupBidMapper extends BaseMapper<KuaiShouGroupBid> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.kuaishou.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.kuaishou.entity.KuaiShouGroupDayBudget;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 快手 修改广告组预算
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface KuaiShouGroupDayBudgetMapper extends BaseMapper<KuaiShouGroupDayBudget> {
+
+}

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

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

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

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

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

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kuaishou.service;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouCampaignDayBudget;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手-修改广告计划记录表
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface IKuaiShouCampaignDayBudgetService extends IService<KuaiShouCampaignDayBudget> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kuaishou.service;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouCampaignStatus;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手-修改状态
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface IKuaiShouCampaignStatusService extends IService<KuaiShouCampaignStatus> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kuaishou.service;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouGroupBid;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手修改广告组出价
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface IKuaiShouGroupBidService extends IService<KuaiShouGroupBid> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kuaishou.service;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouGroupDayBudget;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手 修改广告组预算
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+public interface IKuaiShouGroupDayBudgetService extends IService<KuaiShouGroupDayBudget> {
+
+}

+ 76 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaiShouUpdateService.java

@@ -0,0 +1,76 @@
+package org.jeecg.modules.kuaishou.service;
+
+import java.util.Map;
+
+public interface IKuaiShouUpdateService {
+    /**
+     * 修改 广告计划预算
+     *
+     * @param token
+     * @param advertiserId
+     * @param campaignId
+     * @param dayBudget
+     * @return
+     */
+    Map<String, Object> updateCampaign(String token, Long advertiserId, Long campaignId, Long dayBudget, String loginId);
+
+
+    /**
+     * 修改广告组预算
+     *
+     * @param token
+     * @param advertiserId
+     * @param unitId
+     * @param dayBudget
+     * @return
+     */
+    Map<String, Object> updateUnitDayBudget(String token, Long advertiserId, Long unitId, Long dayBudget, String loginId);
+
+
+    /**
+     * 修改广告组出价
+     *
+     * @param token
+     * @param advertiserId
+     * @param unitId
+     * @param bid
+     * @return
+     */
+
+    Map<String, Object> updateUnitBid(String token, Long advertiserId, Long unitId, Long bid, String loginId);
+
+    /**
+     * 修改 广告计划状态
+     *
+     * @param token
+     * @param advertiserId
+     * @param putStatus
+     * @return
+     */
+    Map<String, Object> updateCampaignStatus(String token, Long advertiserId, Long campaignId, int putStatus, String loginId);
+
+
+    /**
+     * 修改广告组状态
+     *
+     * @param token
+     * @param advertiserId
+     * @param unitId
+     * @param putStatus
+     * @return
+     */
+    Map<String, Object> updateUnitStatus(String token, Long advertiserId, Long unitId, int putStatus, String loginId);
+
+
+    /**
+     * 修改广告创意状态
+     *
+     * @param token
+     * @param advertiserId
+     * @param creativeId
+     * @param putStatus
+     * @return
+     */
+    Map<String, Object> updateCreativeStatus(String token, Long advertiserId, Long creativeId, int putStatus, String loginId);
+
+}

+ 23 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/IKuaishouInterfaceService.java

@@ -51,15 +51,24 @@ public interface IKuaishouInterfaceService {
 
 
     /**
-     * 获取广告计划信息
+     * 获取广告计划信息  全量
      *
      * @param accessToken
      * @param advertiserId
      */
     void getCampaignList(String accessToken, Long advertiserId, Integer page);
 
+
+    /**
+     * 获取广告计划信息  单条
+     *
+     * @param accessToken
+     * @param advertiserId
+     */
+    void getCampaign(String accessToken, Long advertiserId, Long campaignId);
+
     /**
-     * 获取广告组信息
+     * 获取广告组信息 全量
      *
      * @param accessToken
      * @param advertiserId
@@ -68,6 +77,16 @@ public interface IKuaishouInterfaceService {
     void getGroupList(String accessToken, Long advertiserId, Integer page);
 
     /**
+     * 获取广告组信息 单条
+     *
+     * @param accessToken
+     * @param advertiserId
+     * @param
+     */
+    void getGroup(String accessToken, Long advertiserId, Long unitId);
+
+
+    /**
      * 获取创意信息
      *
      * @param accessToken
@@ -104,7 +123,8 @@ public interface IKuaishouInterfaceService {
 
     /**
      * 文件上传
-     *  @param advertiserId
+     *
+     * @param advertiserId
      * @param accessToken
      * @return
      */

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kuaishou.service.impl;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouCampaignDayBudget;
+import org.jeecg.modules.kuaishou.mapper.KuaiShouCampaignDayBudgetMapper;
+import org.jeecg.modules.kuaishou.service.IKuaiShouCampaignDayBudgetService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 快手-修改广告计划记录表
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+@Service
+public class KuaiShouCampaignDayBudgetServiceImpl extends ServiceImpl<KuaiShouCampaignDayBudgetMapper, KuaiShouCampaignDayBudget> implements IKuaiShouCampaignDayBudgetService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kuaishou.service.impl;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouCampaignStatus;
+import org.jeecg.modules.kuaishou.mapper.KuaiShouCampaignStatusMapper;
+import org.jeecg.modules.kuaishou.service.IKuaiShouCampaignStatusService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 快手-修改状态
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+@Service
+public class KuaiShouCampaignStatusServiceImpl extends ServiceImpl<KuaiShouCampaignStatusMapper, KuaiShouCampaignStatus> implements IKuaiShouCampaignStatusService {
+
+}

+ 22 - 11
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouCreateServiceImpl.java

@@ -212,7 +212,12 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
 
             String unitName = groupCreateTemplate.getUnitName();
             for (int i = 0; i < createCount; i++) {
-                String name = unitName + "_" + i;
+                String name;
+                if (createCount > 1) {
+                    name = unitName + "_" + i;
+                } else {
+                    name = unitName;
+                }
                 groupJson.put("unit_name", name);
                 Map<String, Object> groupMap = kuaishouInterfaceService.adUnitCreate(accessToken, accountId, groupJson);
                 if ((Integer) groupMap.get("code") != 0) {
@@ -246,10 +251,6 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
      */
     @Override
     public Map<String, Object> createCreative(JSONObject requestJson) {
-        System.err.println("广告类型: " + requestJson.getInteger("positionType"));
-        System.err.println("素材类型:" + requestJson.getInteger("creativeMaterialType"));
-        System.err.println("后贴片图片横竖 :" + requestJson.getString("singlePicTiepianType"));
-
         Map<String, Object> returnMap = new HashMap<>();
         try {
             if (Check.isNull(requestJson)) {
@@ -332,12 +333,9 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                 }
                 createJson.put("photo_id", videoMap.get("photoId"));
                 log.info("上传信息流广告视频完成,共耗时:{} ms", System.currentTimeMillis() - startTime);
-
-
                 if (!Check.isNull(requestJson.getString("clickTrackUrl"))) {
                     createJson.put("click_track_url", requestJson.getString("clickTrackUrl"));
                 }
-
                 JSONArray imageUrlArr = requestJson.getJSONArray("imageUrl");
                 if (Check.isNull(imageUrlArr)) {
                     log.error("请选择封面图,accountId:{}", accountId);
@@ -366,7 +364,11 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                         return imageMap;
                     }
                     createJson.put("image_token", imageMap.get("imageToken"));
-                    createJson.put("creative_name", creativeName + "_" + i);
+                    if (imageUrlArr.size() == 1) {
+                        createJson.put("creative_name", creativeName);
+                    } else {
+                        createJson.put("creative_name", creativeName + "_" + i);
+                    }
                     Map<String, Object> creativeMap = kuaishouInterfaceService.creativeCreate(accessToken, accountId, createJson);
                     if ((Integer) creativeMap.get("code") != 0) {
                         return creativeMap;
@@ -422,7 +424,12 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                         }
                         log.info("上传贴片视频完成,共耗时:{} ms", System.currentTimeMillis() - startTime);
                         createJson.put("photo_id", videoMap.get("photoId"));
-                        createJson.put("creative_name", creativeName + "_" + i);
+
+                        if (haveSinglePicVideoUrlArr.size() == 1) {
+                            createJson.put("creative_name", creativeName);
+                        } else {
+                            createJson.put("creative_name", creativeName + "_" + i);
+                        }
                         Map<String, Object> creativeMap = kuaishouInterfaceService.creativeCreate(accessToken, accountId, createJson);
                         if ((Integer) creativeMap.get("code") != 0) {
                             log.error("后贴片视频素材批量创建创意失败,accountId:{},creativeName:{}", accountId, creativeName + "_" + i);
@@ -456,7 +463,11 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                             log.error("上传后贴片单张图片素材失败,accountId:{}", accountId);
                             return imageMap;
                         }
-                        createJson.put("creative_name", creativeName + "_" + i);
+                        if (haveSinglePicimagesListArr.size() == 1) {
+                            createJson.put("creative_name", creativeName);
+                        } else {
+                            createJson.put("creative_name", creativeName + "_" + i);
+                        }
                         JSONArray imageTokens = new JSONArray();
                         imageTokens.add(imageMap.get("imageToken"));
                         createJson.put("image_tokens", imageTokens);

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kuaishou.service.impl;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouGroupBid;
+import org.jeecg.modules.kuaishou.mapper.KuaiShouGroupBidMapper;
+import org.jeecg.modules.kuaishou.service.IKuaiShouGroupBidService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 快手修改广告组出价
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+@Service
+public class KuaiShouGroupBidServiceImpl extends ServiceImpl<KuaiShouGroupBidMapper, KuaiShouGroupBid> implements IKuaiShouGroupBidService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kuaishou.service.impl;
+
+import org.jeecg.modules.kuaishou.entity.KuaiShouGroupDayBudget;
+import org.jeecg.modules.kuaishou.mapper.KuaiShouGroupDayBudgetMapper;
+import org.jeecg.modules.kuaishou.service.IKuaiShouGroupDayBudgetService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 快手 修改广告组预算
+ * @Author: jeecg-boot
+ * @Date:   2019-09-11
+ * @Version: V1.0
+ */
+@Service
+public class KuaiShouGroupDayBudgetServiceImpl extends ServiceImpl<KuaiShouGroupDayBudgetMapper, KuaiShouGroupDayBudget> implements IKuaiShouGroupDayBudgetService {
+
+}

+ 424 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaiShouUpdateServiceImpl.java

@@ -0,0 +1,424 @@
+package org.jeecg.modules.kuaishou.service.impl;
+
+import cn.com.ctop.common.utils.Check;
+import cn.com.ctop.common.utils.HttpUtils;
+import cn.com.ctop.common.utils.PropertiesUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import constant.KuaishouInterfaceConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.kuaishou.entity.*;
+import org.jeecg.modules.kuaishou.mapper.*;
+import org.jeecg.modules.kuaishou.service.IKuaiShouUpdateService;
+import org.jeecg.modules.kuaishou.service.IKuaishouInterfaceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class KuaiShouUpdateServiceImpl implements IKuaiShouUpdateService {
+    @Autowired
+    private KuaiShouCampaignMapper campaignMapper;
+    @Autowired
+    private KuaiShouCampaignDayBudgetMapper campaignDayBudgetMapper;
+    @Autowired
+    private KuaiShouGroupMapper groupMapper;
+    @Autowired
+    private KuaiShouGroupDayBudgetMapper groupDayBudgetMapper;
+    @Autowired
+    private IKuaishouInterfaceService interfaceService;
+    @Autowired
+    private KuaiShouGroupBidMapper groupBidMapper;
+    @Autowired
+    private KuaiShouCampaignStatusMapper campaignStatusMapper;
+
+    @Override
+    public Map<String, Object> updateCampaign(String token, Long advertiserId, Long campaignId, Long dayBudget, String loginId) {
+        Map<String, Object> returnMap = new HashMap<>();
+        try {
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.UPDATE_CAMPAIGN;
+            Map<String, String> headers = new HashMap<String, String>();
+            headers.put("Content-Type", "application/json");
+            headers.put("Access-Token", token);
+            JSONObject params = new JSONObject();
+            params.put("advertiser_id", advertiserId);
+            params.put("campaign_id", campaignId);
+            params.put("day_budget", dayBudget);
+            String result = HttpUtils.httpPostRequest(url, params, headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    QueryWrapper<KuaiShouCampaign> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("accountId", advertiserId);
+                    queryWrapper.eq("campaign_id", campaignId);
+                    queryWrapper.orderByDesc("create_time");
+                    queryWrapper.last("limit 1");
+                    KuaiShouCampaign campaign = campaignMapper.selectOne(queryWrapper);// 查询本地记录信息
+                    KuaiShouCampaignDayBudget campaignDayBudget = new KuaiShouCampaignDayBudget();
+                    campaignDayBudget.setAccountId(advertiserId);
+                    campaignDayBudget.setCampaignId(campaignId);
+                    campaignDayBudget.setLoginId(loginId);
+                    campaignDayBudget.setDayBudget(campaign.getDayBudget());
+                    campaignDayBudget.setUpdateDayBudget(dayBudget);
+                    int i = campaignDayBudgetMapper.insert(campaignDayBudget);
+                    if (i > 0) {
+                        log.info("修改广告计划预算记录表添加成功,campaignId:{}", campaignId);
+                    }
+                    interfaceService.getCampaign(token, advertiserId, campaignId);
+                    returnMap.put("code", 0);
+                    returnMap.put("success", true);
+                    returnMap.put("message", "修改成功");
+
+                } else {
+                    log.error("修改广告计划预算失败,advertiserId:{},campaignId:{},返回信息:{}", advertiserId, campaignId, resultJson);
+                    returnMap.put("code", -1);
+                    returnMap.put("success", false);
+                    returnMap.put("message", resultJson.getString("message"));
+                }
+            } else {
+                log.error("修改广告计划预算返回结果为空,advertiserId:{},campaignId:{}", advertiserId, campaignId);
+                returnMap.put("code", -1);
+                returnMap.put("success", false);
+                returnMap.put("message", "修改广告组预算返回结果为空");
+            }
+
+        } catch (Exception e) {
+            log.error("修改广告计划预算异常,advertiserId:{},campaignId:{}", advertiserId, campaignId);
+            e.printStackTrace();
+            returnMap.put("code", -1);
+            returnMap.put("success", false);
+            returnMap.put("message", "修改广告计划预算异常");
+        }
+
+
+        return returnMap;
+    }
+
+
+    /**
+     * 修改广告组预算
+     *
+     * @param token
+     * @param advertiserId
+     * @param unitId
+     * @param dayBudget
+     * @return
+     */
+    @Override
+    public Map<String, Object> updateUnitDayBudget(String token, Long advertiserId, Long unitId, Long dayBudget, String loginId) {
+        Map<String, Object> returnMap = new HashMap<>();
+        try {
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.UPDATE_UNIT;
+            Map<String, String> headers = new HashMap<String, String>();
+            headers.put("Content-Type", "application/json");
+            headers.put("Access-Token", token);
+            JSONObject params = new JSONObject();
+            params.put("day_budget", dayBudget);
+            params.put("advertiser_id", advertiserId);
+            params.put("unit_id", unitId);
+            String result = HttpUtils.httpPostRequest(url, params, headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    QueryWrapper<KuaiShouGroup> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("accountId", advertiserId);
+                    queryWrapper.eq("unit_id", unitId);
+                    queryWrapper.orderByDesc("create_time");
+                    queryWrapper.last("limit 1");
+                    KuaiShouGroup group = groupMapper.selectOne(queryWrapper);
+
+                    KuaiShouGroupDayBudget groupDayBudget = new KuaiShouGroupDayBudget();
+                    groupDayBudget.setAccountId(advertiserId);
+                    groupDayBudget.setUnitId(unitId);
+                    groupDayBudget.setDayBudget(group.getDayBudget());
+                    groupDayBudget.setUpdateDayBudget(dayBudget);
+                    groupDayBudget.setLoginId(loginId);
+                    int i = groupDayBudgetMapper.insert(groupDayBudget);
+                    if (i > 0) {
+                        log.info("修改广告组预算本地记录添加成功,unitId:{}", unitId);
+                    }
+                    interfaceService.getGroup(token, advertiserId, unitId); // 重新请求数据
+                    returnMap.put("code", 0);
+                    returnMap.put("success", true);
+                    returnMap.put("message", "修改成功");
+                } else {
+                    log.error("修改广告组预算失败,advertiserId:{},unitId:{},返回信息:{}", advertiserId, unitId, resultJson);
+                    returnMap.put("code", -1);
+                    returnMap.put("success", false);
+                    returnMap.put("message", resultJson.getString("message"));
+                }
+            } else {
+                log.error("修改广告组预算返回结果为空,advertiserId:{},unitId:{}", advertiserId, unitId);
+                returnMap.put("code", -1);
+                returnMap.put("success", false);
+                returnMap.put("message", "修改广告组预算返回结果为空");
+            }
+
+        } catch (Exception e) {
+            log.error("修改广告组算异常,advertiserId:{},unitId:{}", advertiserId, unitId);
+            e.printStackTrace();
+            returnMap.put("code", -1);
+            returnMap.put("success", false);
+            returnMap.put("message", "修改广告组预算异常");
+        }
+
+        return returnMap;
+    }
+
+    /**
+     * 修改广告组出价
+     *
+     * @param token
+     * @param advertiserId
+     * @param unitId
+     * @param bid
+     * @return
+     */
+    @Override
+    public Map<String, Object> updateUnitBid(String token, Long advertiserId, Long unitId, Long bid, String loginId) {
+        Map<String, Object> returnMap = new HashMap<>();
+        try {
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.UPDATE_UNIT_BID;
+            Map<String, String> headers = new HashMap<String, String>();
+            headers.put("Content-Type", "application/json");
+            headers.put("Access-Token", token);
+
+            JSONObject params = new JSONObject();
+            params.put("advertiser_id", advertiserId);
+            params.put("bid", bid);
+            params.put("unit_id", unitId);
+            String result = HttpUtils.httpPostRequest(url, params, headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    QueryWrapper<KuaiShouGroup> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("unit_id", unitId);
+                    queryWrapper.eq("accountId", advertiserId);
+                    queryWrapper.orderByDesc("create_time");
+                    queryWrapper.last("limit 1");
+                    KuaiShouGroup group = groupMapper.selectOne(queryWrapper);
+
+                    KuaiShouGroupBid groupBid = new KuaiShouGroupBid();
+                    groupBid.setAccountId(advertiserId);
+                    groupBid.setUnitId(unitId);
+                    groupBid.setBid(group.getBid());
+                    groupBid.setUpdateBid(bid);
+                    groupBid.setLoginId(loginId);
+                    int i = groupBidMapper.insert(groupBid);
+                    if (i > 0) {
+                        log.info("修改广告组出价本地记录添加成功,unitId:{}", unitId);
+                    }
+                    interfaceService.getGroup(token, advertiserId, unitId); // 重新请求数据
+                } else {
+                    log.error("修改广告组出价失败,advertiserId:{},unitId:{},返回信息:{}", advertiserId, unitId, resultJson);
+                    returnMap.put("code", -1);
+                    returnMap.put("success", false);
+                    returnMap.put("message", resultJson.getString("message"));
+                }
+            } else {
+                log.error("修改广告组出价返回结果为空,advertiserId:{},unitId:{}", advertiserId, unitId);
+                returnMap.put("code", -1);
+                returnMap.put("success", false);
+                returnMap.put("message", "修改广告组预算返回结果为空");
+            }
+
+        } catch (Exception e) {
+            log.error("修改广告组出价异常,advertiserId:{},unitId:{}", advertiserId, unitId);
+            e.printStackTrace();
+            returnMap.put("code", -1);
+            returnMap.put("success", false);
+            returnMap.put("message", "修改广告组出价异常");
+        }
+
+        return returnMap;
+    }
+
+
+    /**
+     * 修改广告计划状态
+     *
+     * @param token
+     * @param advertiserId
+     * @param campaignId
+     * @param putStatus
+     * @return
+     */
+    @Override
+    public Map<String, Object> updateCampaignStatus(String token, Long advertiserId, Long campaignId, int putStatus, String loginId) {
+        Map<String, Object> returnMap = new HashMap<>();
+        try {
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.UPDATE_CAMPAIGN_STATUS;
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Access-Token", token);
+            headers.put("Content-Type", "application/json");
+            JSONObject params = new JSONObject();
+            params.put("advertiser_id", advertiserId);
+            params.put("put_status", putStatus);
+            params.put("campaign_id", campaignId);
+
+            String result = HttpUtils.httpPostRequest(url, params, headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+
+                    QueryWrapper<KuaiShouCampaign> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("campaign_id", campaignId);
+                    queryWrapper.eq("accountId", advertiserId);
+                    queryWrapper.orderByDesc("create_time");
+                    queryWrapper.last("limit 1");
+                    KuaiShouCampaign campaign = campaignMapper.selectOne(queryWrapper);// 查询本地记录信息
+
+                    KuaiShouCampaignStatus campaignStatus = new KuaiShouCampaignStatus();
+                    campaignStatus.setAccountId(advertiserId);
+                    campaignStatus.setCampaignId(campaignId);
+                    campaignStatus.setPutStatus(campaign.getStatus());
+                    campaignStatus.setUpdatePutStatus(putStatus);
+                    campaignStatus.setLoginId(loginId);
+                    int i = campaignStatusMapper.insert(campaignStatus);
+                    if (i > 0) {
+                        log.info("修改广告计划状态本地记录添加成功,campaignId:{}", campaignId);
+                    }
+
+                    interfaceService.getCampaign(token, advertiserId, campaignId);
+                    returnMap.put("code", 0);
+                    returnMap.put("success", true);
+                    returnMap.put("message", "修改成功");
+                } else {
+                    log.error("修改广告计划状态失败,advertiserId:{},campaignId:{},返回信息:{}", advertiserId, campaignId, resultJson);
+                    returnMap.put("code", -1);
+                    returnMap.put("success", false);
+                    returnMap.put("message", resultJson.getString("message"));
+                }
+            } else {
+                log.error("修改广告计划状态返回结果为空,advertiserId:{},campaignId:{}", advertiserId, campaignId);
+                returnMap.put("code", -1);
+                returnMap.put("success", false);
+                returnMap.put("message", "修改广告组预算返回结果为空");
+            }
+
+        } catch (Exception e) {
+            log.error("修改广告计划状态异常,advertiserId:{},campaignId:{}", advertiserId, campaignId);
+            e.printStackTrace();
+            returnMap.put("code", -1);
+            returnMap.put("success", false);
+            returnMap.put("message", "修改广告计划状态算异常");
+        }
+
+        return returnMap;
+    }
+
+
+    /**
+     *  TODO
+     * 修好广告组状态
+     *
+     * @param token
+     * @param advertiserId
+     * @param unitId
+     * @param putStatus
+     * @return
+     */
+    @Override
+    public Map<String, Object> updateUnitStatus(String token, Long advertiserId, Long unitId, int putStatus, String loginId) {
+        Map<String, Object> returnMap = new HashMap<>();
+        try {
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.UPDATE_UNIT_STATUS;
+            Map<String, String> header = new HashMap<>();
+            header.put("Access-Token", token);
+            header.put("Content-Type", "application/json");
+            JSONObject params = new JSONObject();
+            params.put("advertiser_id", advertiserId);
+            params.put("unit_id", unitId);
+            params.put("put_status", putStatus);
+            String result = HttpUtils.httpPostRequest(url, params, header);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    returnMap.put("code", 0);
+                    returnMap.put("success", true);
+                    returnMap.put("message", "修改成功");
+                } else {
+                    log.error("修改广告组状态失败,advertiserId:{},unitId:{},返回信息:{}", advertiserId, unitId, resultJson);
+                    returnMap.put("code", -1);
+                    returnMap.put("success", false);
+                    returnMap.put("message", resultJson.getString("message"));
+                }
+            } else {
+                log.error("修改广告组状态返回结果为空,advertiserId:{},unitId:{}", advertiserId, unitId);
+                returnMap.put("code", -1);
+                returnMap.put("success", false);
+                returnMap.put("message", "修改广告组预算返回结果为空");
+            }
+
+        } catch (Exception e) {
+            log.error("修改广告组状态异常,advertiserId:{},unitId:{}", advertiserId, unitId);
+            e.printStackTrace();
+            returnMap.put("code", -1);
+            returnMap.put("success", false);
+            returnMap.put("message", "修改广告组状态异常");
+        }
+
+        return returnMap;
+    }
+
+    /**
+     * 修改 广告创意状态
+     *
+     * @param token
+     * @param advertiserId
+     * @param creativeId
+     * @param putStatus
+     * @return
+     */
+    @Override
+    public Map<String, Object> updateCreativeStatus(String token, Long advertiserId, Long creativeId, int putStatus, String loginId) {
+        Map<String, Object> returnMap = new HashMap<>();
+        try {
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.UPDATE_CREATIVE_STATUS;
+            Map<String, String> header = new HashMap<>();
+            header.put("Access-Token", token);
+            header.put("Content-Type", "application/json");
+            JSONObject params = new JSONObject();
+            params.put("put_status", putStatus);
+            params.put("advertiser_id", advertiserId);
+            params.put("creative_id", creativeId);
+            String result = HttpUtils.httpPostRequest(url, params, header);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    returnMap.put("code", 0);
+                    returnMap.put("success", true);
+                    returnMap.put("message", "修改成功");
+                } else {
+                    log.error("修改广告创意状态失败,advertiserId:{},creativeId:{},返回信息:{}", advertiserId, creativeId, resultJson);
+                    returnMap.put("code", -1);
+                    returnMap.put("success", false);
+                    returnMap.put("message", resultJson.getString("message"));
+                }
+            } else {
+                log.error("修改广告创意状态返回结果为空,advertiserId:{},creativeId:{}", advertiserId, creativeId);
+                returnMap.put("code", -1);
+                returnMap.put("success", false);
+                returnMap.put("message", "修改广告组预算返回结果为空");
+            }
+
+        } catch (Exception e) {
+            log.error("修改广告创意状态异常,advertiserId:{},creativeId:{}", advertiserId, creativeId);
+            e.printStackTrace();
+            returnMap.put("code", -1);
+            returnMap.put("success", false);
+            returnMap.put("message", "修改广告创意状态异常");
+        }
+
+        return returnMap;
+    }
+}

+ 170 - 71
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/service/impl/KuaishouInterfaceServiceImpl.java

@@ -39,6 +39,7 @@ import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.crypto.spec.PBEParameterSpec;
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
@@ -521,18 +522,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     JSONObject dataJson = resultJson.getJSONObject("data");
                     JSONArray details = dataJson.getJSONArray("details");
                     if (!Check.isNull(details)) {
-                        for (int i = 0; i < details.size(); i++) {
-                            JSONObject detail = JSONObject.parseObject(details.get(i).toString());
-                            if (!Check.isNull(detail)) {
-                                KuaiShouCampaign campaign = new KuaiShouCampaign();
-                                campaign.setAccountId(advertiserId);
-                                campaign.setCampaignId(detail.getLong("campaign_id"));
-                                campaign.setCampaignName(detail.getString("campaign_name"));
-                                campaign.setDayBudget(detail.getLong("day_budget"));
-                                campaign.setStatus(detail.getInteger("status"));
-                                campaignMapper.insert(campaign);
-                            }
-                        }
+                        addCampaign(advertiserId, details);
                         getCampaignList(accessToken, advertiserId, page + 1);
                     }
                 } else {
@@ -546,9 +536,63 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         }
     }
 
+    /**
+     * 获取 单条 广告计划数据
+     *
+     * @param accessToken
+     * @param advertiserId
+     * @param campaignId
+     */
+    @Override
+    public void getCampaign(String accessToken, Long advertiserId, Long campaignId) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Access-Token", accessToken);
+        headers.put("Content-Type", " application/json");
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", advertiserId);
+        param.put("campaign_id", campaignId);
+        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.CAMPAIGN_LIST;
+        try {
+            String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    JSONObject dataJson = resultJson.getJSONObject("data");
+                    JSONArray details = dataJson.getJSONArray("details");
+                    if (!Check.isNull(details)) {
+                        addCampaign(advertiserId, details);
+                    }
+                } else {
+                    log.error("获取广告计划信息返回结果异常,advertiserId:{},异常信息:{}", advertiserId, resultJson);
+                }
+            } else {
+                log.error("获取广告计划信息返回结果为空,advertiserId:{}", advertiserId);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    private void addCampaign(Long advertiserId, JSONArray details) {
+        for (int i = 0; i < details.size(); i++) {
+            JSONObject detail = JSONObject.parseObject(details.get(i).toString());
+            if (!Check.isNull(detail)) {
+                KuaiShouCampaign campaign = new KuaiShouCampaign();
+                campaign.setAccountId(advertiserId);
+                campaign.setCampaignId(detail.getLong("campaign_id"));
+                campaign.setCampaignName(detail.getString("campaign_name"));
+                campaign.setDayBudget(detail.getLong("day_budget"));
+                campaign.setStatus(detail.getInteger("status"));
+                campaignMapper.insert(campaign);
+            }
+        }
+    }
+
 
     /**
-     * 获取广告组信息
+     * 获取广告组信息 全量
      *
      * @param accessToken
      * @param advertiserId
@@ -561,6 +605,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             map.put("account_id", advertiserId);
             groupMapper.deleteByMap(map);
             appInfoMapper.deleteByMap(map);
+            shouScheduleMapper.deleteByMap(map);
         }
         String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.GROUP_LIST;
         JSONObject param = new JSONObject();
@@ -580,61 +625,54 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     if (!Check.isNull(dataJson)) {
                         JSONArray details = dataJson.getJSONArray("details");
                         if (!Check.isNull(details)) {
-                            for (int i = 0; i < details.size(); i++) {
-                                JSONObject detail = JSONObject.parseObject(details.get(i).toString());
-                                if (!Check.isNull(detail)) {
-                                    KuaiShouGroup group = new KuaiShouGroup();
-                                    group.setAccountId(advertiserId);
-                                    group.setStatus(detail.getInteger("status"));
-                                    group.setBid(detail.getLong("bid"));
-                                    group.setSpeed(detail.getInteger("speed"));
-                                    group.setSchedule(detail.getString("schedule"));
-                                    group.setUrl(detail.getString("url"));
-                                    group.setCampaignId(detail.getLong("campaign_id"));
-                                    Long unitId = detail.getLong("unit_id");
-                                    group.setUnitId(unitId);
-                                    group.setUnitName(detail.getString("unit_name"));
-                                    group.setBidType(detail.getInteger("bid_type"));
-                                    group.setReviewDetail(detail.getString("review_detail"));
-                                    group.setCpaBid(detail.getLong("cpa_bid"));
-                                    group.setOcpxActionType(detail.getInteger("ocpx_action_type"));
-                                    group.setDayBudget(detail.getLong("day_budget"));
-                                    group.setBeginTime(detail.getString("begin_time"));
-                                    group.setEndTime(detail.getString("end_time"));
-                                    group.setShowModel(detail.getInteger("show_mode"));
-                                    group.setUrlType(detail.getInteger("url_type"));
-                                    group.setAppId(detail.getLong("app_id"));
-                                    group.setAppIconUrl(detail.getString("app_icon_url"));
-                                    groupMapper.insert(group);
-                                    // 添加应用信息
-                                    JSONObject diverseJson = detail.getJSONObject("diverse_data");
-                                    if (!Check.isNull(diverseJson)) {
-                                        KuaiShouAppInfo appInfo = new KuaiShouAppInfo();
-                                        appInfo.setAccountId(advertiserId);
-                                        appInfo.setAppName(diverseJson.getString("app_name"));
-                                        appInfo.setAppPackageName(diverseJson.getString("app_package_name"));
-                                        appInfo.setDeviceOsType(diverseJson.getInteger("device_os_type"));
-                                        appInfo.setUnitId(unitId);
-                                        appInfoMapper.insert(appInfo);
-                                    }
-                                    //时间段信息
-                                    JSONObject scheduleJson = detail.getJSONObject("schedule");
-                                    if (!Check.isNull(scheduleJson)) {
-                                        KuaiShouSchedule schedule = new KuaiShouSchedule();
-                                        schedule.setUnitId(unitId);
-                                        schedule.setMon(scheduleJson.getJSONArray("mon").toJSONString());
-                                        schedule.setTues(scheduleJson.getJSONArray("tues").toJSONString());
-                                        schedule.setWed(scheduleJson.getJSONArray("wed").toJSONString());
-                                        schedule.setThur(scheduleJson.getJSONArray("thur").toJSONString());
-                                        schedule.setFri(scheduleJson.getJSONArray("fri").toJSONString());
-                                        schedule.setSat(scheduleJson.getJSONArray("sat").toJSONString());
-                                        schedule.setSun(scheduleJson.getJSONArray("sun").toJSONString());
-                                        shouScheduleMapper.insert(schedule);
-                                    }
-                                }
-                                getGroupList(accessToken, advertiserId, page + 1);
-                            }
+                            addGroup(advertiserId, details);
+                            getGroupList(accessToken, advertiserId, page + 1);
+                        }
+
+                    } else {
+                        log.error("获取广告组返回结果异常,advertiserId:{},异常信息:{}", advertiserId, resultJson);
+                    }
+                } else {
+                    log.error("获取广告组返回结果为空,advertiserId:{}", advertiserId);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void getGroup(String accessToken, Long advertiserId, Long unitId) {
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("unit_id", unitId);
+        map.put("account_id", advertiserId);
+        groupMapper.deleteByMap(map);
+        appInfoMapper.deleteByMap(map);
+        shouScheduleMapper.deleteByMap(map);
+
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Access-Token", accessToken);
+        headers.put("Content-Type", " application/json");
+
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", advertiserId);
+        param.put("unit_id", unitId);
+
+        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.GROUP_LIST;
+        try {
+            String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    JSONObject dataJson = resultJson.getJSONObject("data");
+                    if (!Check.isNull(dataJson)) {
+                        JSONArray details = dataJson.getJSONArray("details");
+                        if (!Check.isNull(details)) {
+                            addGroup(advertiserId, details);
                         }
+
                     } else {
                         log.error("获取广告组返回结果异常,advertiserId:{},异常信息:{}", advertiserId, resultJson);
                     }
@@ -645,9 +683,73 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         } catch (Exception e) {
             e.printStackTrace();
         }
+
+
     }
 
 
+    private void addGroup(Long advertiserId, JSONArray details) {
+        if (!Check.isNull(details)) {
+            for (int i = 0; i < details.size(); i++) {
+                JSONObject detail = JSONObject.parseObject(details.get(i).toString());
+                if (!Check.isNull(detail)) {
+                    KuaiShouGroup group = new KuaiShouGroup();
+                    group.setAccountId(advertiserId);
+                    group.setStatus(detail.getInteger("status"));
+                    group.setBid(detail.getLong("bid"));
+                    group.setSpeed(detail.getInteger("speed"));
+                    group.setSchedule(detail.getString("schedule"));
+                    group.setUrl(detail.getString("url"));
+                    group.setCampaignId(detail.getLong("campaign_id"));
+                    Long unitId = detail.getLong("unit_id");
+                    group.setUnitId(unitId);
+                    group.setUnitName(detail.getString("unit_name"));
+                    group.setBidType(detail.getInteger("bid_type"));
+                    group.setReviewDetail(detail.getString("review_detail"));
+                    group.setCpaBid(detail.getLong("cpa_bid"));
+                    group.setOcpxActionType(detail.getInteger("ocpx_action_type"));
+                    group.setDayBudget(detail.getLong("day_budget"));
+                    group.setBeginTime(detail.getString("begin_time"));
+                    group.setEndTime(detail.getString("end_time"));
+                    group.setShowModel(detail.getInteger("show_mode"));
+                    group.setUrlType(detail.getInteger("url_type"));
+                    group.setAppId(detail.getLong("app_id"));
+                    group.setAppIconUrl(detail.getString("app_icon_url"));
+                    groupMapper.insert(group);
+                    // 添加应用信息
+                    JSONObject diverseJson = detail.getJSONObject("diverse_data");
+                    if (!Check.isNull(diverseJson)) {
+                        KuaiShouAppInfo appInfo = new KuaiShouAppInfo();
+                        appInfo.setAccountId(advertiserId);
+                        appInfo.setAppName(diverseJson.getString("app_name"));
+                        appInfo.setAppPackageName(diverseJson.getString("app_package_name"));
+                        appInfo.setDeviceOsType(diverseJson.getInteger("device_os_type"));
+                        appInfo.setUnitId(unitId);
+                        appInfoMapper.insert(appInfo);
+                    }
+                    //时间段信息
+                    JSONObject scheduleJson = detail.getJSONObject("schedule");
+                    if (!Check.isNull(scheduleJson)) {
+                        KuaiShouSchedule schedule = new KuaiShouSchedule();
+                        schedule.setUnitId(unitId);
+                        schedule.setAccountId(advertiserId);
+                        schedule.setMon(scheduleJson.getJSONArray("mon").toJSONString());
+                        schedule.setTues(scheduleJson.getJSONArray("tues").toJSONString());
+                        schedule.setWed(scheduleJson.getJSONArray("wed").toJSONString());
+                        schedule.setThur(scheduleJson.getJSONArray("thur").toJSONString());
+                        schedule.setFri(scheduleJson.getJSONArray("fri").toJSONString());
+                        schedule.setSat(scheduleJson.getJSONArray("sat").toJSONString());
+                        schedule.setSun(scheduleJson.getJSONArray("sun").toJSONString());
+                        shouScheduleMapper.insert(schedule);
+                    }
+                }
+
+            }
+        }
+
+
+    }
+
     /**
      * 获取 创意信息
      *
@@ -1374,21 +1476,18 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     log.error("快手创建应用返回信息异常 ,advertiserId:{},异常信息:{}", accountId, resultJson);
                     returnMap.put("code", -1);
                     returnMap.put("message", resultJson.getString("message"));
-                    returnMap.put("desc", "Interface exception");
                     returnMap.put("success", false);
                 }
             } else {
                 log.error("快手创建应用返回信息为空,advertiserId:{}", accountId);
                 returnMap.put("code", -1);
                 returnMap.put("message", "apk文件url上传异常");
-                returnMap.put("desc", "Interface exception");
                 returnMap.put("success", false);
             }
         } catch (Exception e) {
             log.error("创建应用失败,advertiser_id:{}", accountId);
             returnMap.put("code", -1);
-            returnMap.put("message", "应用url异常");
-            returnMap.put("desc", "Interface exception");
+            returnMap.put("message", "应用url创建应用异常");
             e.printStackTrace();
         }
         return returnMap;

+ 188 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouCampaignDayBudgetList.vue

@@ -0,0 +1,188 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账户ID">
+              <a-input placeholder="请输入账户ID" v-model="queryParam.accountId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="计划ID">
+              <a-input placeholder="请输入计划ID" v-model="queryParam.campaignId"></a-input>
+            </a-form-item>
+          </a-col>
+        <template v-if="toggleSearchStatus">
+        <a-col :md="6" :sm="8">
+            <a-form-item label="修改前预算">
+              <a-input placeholder="请输入修改前预算" v-model="queryParam.dayBudget"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="修改后预算">
+              <a-input placeholder="请输入修改后预算" v-model="queryParam.updateDayBudget"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="操作人id">
+              <a-input placeholder="请输入操作人id" v-model="queryParam.loginId"></a-input>
+            </a-form-item>
+          </a-col>
+          </template>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('快手-修改广告计划记录表')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <kuaiShouCampaignDayBudget-modal ref="modalForm" @ok="modalFormOk"></kuaiShouCampaignDayBudget-modal>
+  </a-card>
+</template>
+
+<script>
+  import KuaiShouCampaignDayBudgetModal from './modules/KuaiShouCampaignDayBudgetModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "KuaiShouCampaignDayBudgetList",
+    mixins:[JeecgListMixin],
+    components: {
+      KuaiShouCampaignDayBudgetModal
+    },
+    data () {
+      return {
+        description: '快手-修改广告计划记录表管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+           },
+		   {
+            title: '账户ID',
+            align:"center",
+            dataIndex: 'accountId'
+           },
+		   {
+            title: '计划ID',
+            align:"center",
+            dataIndex: 'campaignId'
+           },
+		   {
+            title: '修改前预算',
+            align:"center",
+            dataIndex: 'dayBudget'
+           },
+		   {
+            title: '修改后预算',
+            align:"center",
+            dataIndex: 'updateDayBudget'
+           },
+		   {
+            title: '操作人id',
+            align:"center",
+            dataIndex: 'loginId'
+           },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/kuaishou/kuaiShouCampaignDayBudget/list",
+          delete: "/kuaishou/kuaiShouCampaignDayBudget/delete",
+          deleteBatch: "/kuaishou/kuaiShouCampaignDayBudget/deleteBatch",
+          exportXlsUrl: "kuaishou/kuaiShouCampaignDayBudget/exportXls",
+          importExcelUrl: "kuaishou/kuaiShouCampaignDayBudget/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+     
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 188 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouCampaignStatusList.vue

@@ -0,0 +1,188 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账户ID">
+              <a-input placeholder="请输入账户ID" v-model="queryParam.accountId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="计划ID">
+              <a-input placeholder="请输入计划ID" v-model="queryParam.campaignId"></a-input>
+            </a-form-item>
+          </a-col>
+        <template v-if="toggleSearchStatus">
+        <a-col :md="6" :sm="8">
+            <a-form-item label="修改前状态">
+              <a-input placeholder="请输入修改前状态" v-model="queryParam.putStatus"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="修改后状态">
+              <a-input placeholder="请输入修改后状态" v-model="queryParam.updatePutStatus"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="操作人id">
+              <a-input placeholder="请输入操作人id" v-model="queryParam.loginId"></a-input>
+            </a-form-item>
+          </a-col>
+          </template>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('快手-修改状态')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <kuaiShouCampaignStatus-modal ref="modalForm" @ok="modalFormOk"></kuaiShouCampaignStatus-modal>
+  </a-card>
+</template>
+
+<script>
+  import KuaiShouCampaignStatusModal from './modules/KuaiShouCampaignStatusModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "KuaiShouCampaignStatusList",
+    mixins:[JeecgListMixin],
+    components: {
+      KuaiShouCampaignStatusModal
+    },
+    data () {
+      return {
+        description: '快手-修改状态管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+           },
+		   {
+            title: '账户ID',
+            align:"center",
+            dataIndex: 'accountId'
+           },
+		   {
+            title: '计划ID',
+            align:"center",
+            dataIndex: 'campaignId'
+           },
+		   {
+            title: '修改前状态',
+            align:"center",
+            dataIndex: 'putStatus'
+           },
+		   {
+            title: '修改后状态',
+            align:"center",
+            dataIndex: 'updatePutStatus'
+           },
+		   {
+            title: '操作人id',
+            align:"center",
+            dataIndex: 'loginId'
+           },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/kuaishou/kuaiShouCampaignStatus/list",
+          delete: "/kuaishou/kuaiShouCampaignStatus/delete",
+          deleteBatch: "/kuaishou/kuaiShouCampaignStatus/deleteBatch",
+          exportXlsUrl: "kuaishou/kuaiShouCampaignStatus/exportXls",
+          importExcelUrl: "kuaishou/kuaiShouCampaignStatus/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+     
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 188 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouGroupBidList.vue

@@ -0,0 +1,188 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账户ID">
+              <a-input placeholder="请输入账户ID" v-model="queryParam.accountId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="计划组ID">
+              <a-input placeholder="请输入计划组ID" v-model="queryParam.unitId"></a-input>
+            </a-form-item>
+          </a-col>
+        <template v-if="toggleSearchStatus">
+        <a-col :md="6" :sm="8">
+            <a-form-item label="修改前出价">
+              <a-input placeholder="请输入修改前出价" v-model="queryParam.bid"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="修改后出价">
+              <a-input placeholder="请输入修改后出价" v-model="queryParam.updateBid"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="操作人id">
+              <a-input placeholder="请输入操作人id" v-model="queryParam.loginId"></a-input>
+            </a-form-item>
+          </a-col>
+          </template>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('快手修改广告组出价')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <kuaiShouGroupBid-modal ref="modalForm" @ok="modalFormOk"></kuaiShouGroupBid-modal>
+  </a-card>
+</template>
+
+<script>
+  import KuaiShouGroupBidModal from './modules/KuaiShouGroupBidModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "KuaiShouGroupBidList",
+    mixins:[JeecgListMixin],
+    components: {
+      KuaiShouGroupBidModal
+    },
+    data () {
+      return {
+        description: '快手修改广告组出价管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+           },
+		   {
+            title: '账户ID',
+            align:"center",
+            dataIndex: 'accountId'
+           },
+		   {
+            title: '计划组ID',
+            align:"center",
+            dataIndex: 'unitId'
+           },
+		   {
+            title: '修改前出价',
+            align:"center",
+            dataIndex: 'bid'
+           },
+		   {
+            title: '修改后出价',
+            align:"center",
+            dataIndex: 'updateBid'
+           },
+		   {
+            title: '操作人id',
+            align:"center",
+            dataIndex: 'loginId'
+           },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/kuaishou/kuaiShouGroupBid/list",
+          delete: "/kuaishou/kuaiShouGroupBid/delete",
+          deleteBatch: "/kuaishou/kuaiShouGroupBid/deleteBatch",
+          exportXlsUrl: "kuaishou/kuaiShouGroupBid/exportXls",
+          importExcelUrl: "kuaishou/kuaiShouGroupBid/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+     
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 188 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/KuaiShouGroupDayBudgetList.vue

@@ -0,0 +1,188 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账户ID">
+              <a-input placeholder="请输入账户ID" v-model="queryParam.accountId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="计划组ID">
+              <a-input placeholder="请输入计划组ID" v-model="queryParam.unitId"></a-input>
+            </a-form-item>
+          </a-col>
+        <template v-if="toggleSearchStatus">
+        <a-col :md="6" :sm="8">
+            <a-form-item label="修改前预算">
+              <a-input placeholder="请输入修改前预算" v-model="queryParam.dayBudget"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="修改后预算">
+              <a-input placeholder="请输入修改后预算" v-model="queryParam.updateDayBudget"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="操作人id">
+              <a-input placeholder="请输入操作人id" v-model="queryParam.loginId"></a-input>
+            </a-form-item>
+          </a-col>
+          </template>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('快手 修改广告组预算')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <kuaiShouGroupDayBudget-modal ref="modalForm" @ok="modalFormOk"></kuaiShouGroupDayBudget-modal>
+  </a-card>
+</template>
+
+<script>
+  import KuaiShouGroupDayBudgetModal from './modules/KuaiShouGroupDayBudgetModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "KuaiShouGroupDayBudgetList",
+    mixins:[JeecgListMixin],
+    components: {
+      KuaiShouGroupDayBudgetModal
+    },
+    data () {
+      return {
+        description: '快手 修改广告组预算管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+           },
+		   {
+            title: '账户ID',
+            align:"center",
+            dataIndex: 'accountId'
+           },
+		   {
+            title: '计划组ID',
+            align:"center",
+            dataIndex: 'unitId'
+           },
+		   {
+            title: '修改前预算',
+            align:"center",
+            dataIndex: 'dayBudget'
+           },
+		   {
+            title: '修改后预算',
+            align:"center",
+            dataIndex: 'updateDayBudget'
+           },
+		   {
+            title: '操作人id',
+            align:"center",
+            dataIndex: 'loginId'
+           },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/kuaishou/kuaiShouGroupDayBudget/list",
+          delete: "/kuaishou/kuaiShouGroupDayBudget/delete",
+          deleteBatch: "/kuaishou/kuaiShouGroupDayBudget/deleteBatch",
+          exportXlsUrl: "kuaishou/kuaiShouGroupDayBudget/exportXls",
+          importExcelUrl: "kuaishou/kuaiShouGroupDayBudget/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+     
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 150 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignDayBudgetModal.vue

@@ -0,0 +1,150 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划ID">
+          <a-input placeholder="请输入计划ID" v-decorator="['campaignId', validatorRules.campaignId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前预算">
+          <a-input placeholder="请输入修改前预算" v-decorator="['dayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后预算">
+          <a-input placeholder="请输入修改后预算" v-decorator="['updateDayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouCampaignDayBudgetModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        campaignId:{rules: [{ required: true, message: '请输入计划ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouCampaignDayBudget/add",
+          edit: "/kuaishou/kuaiShouCampaignDayBudget/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','campaignId','dayBudget','updateDayBudget','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 157 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignDayBudgetModal__Style#Drawer.vue

@@ -0,0 +1,157 @@
+<template>
+  <a-drawer
+      :title="title"
+      :width="800"
+      placement="right"
+      :closable="false"
+      @close="close"
+      :visible="visible"
+  >
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划ID">
+          <a-input placeholder="请输入计划ID" v-decorator="['campaignId', validatorRules.campaignId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前预算">
+          <a-input placeholder="请输入修改前预算" v-decorator="['dayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后预算">
+          <a-input placeholder="请输入修改后预算" v-decorator="['updateDayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+    <a-button type="primary" @click="handleOk">确定</a-button>
+    <a-button type="primary" @click="handleCancel">取消</a-button>
+  </a-drawer>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouCampaignDayBudgetModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        campaignId:{rules: [{ required: true, message: '请输入计划ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouCampaignDayBudget/add",
+          edit: "/kuaishou/kuaiShouCampaignDayBudget/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','campaignId','dayBudget','updateDayBudget','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+</style>

+ 150 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignStatusModal.vue

@@ -0,0 +1,150 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划ID">
+          <a-input placeholder="请输入计划ID" v-decorator="['campaignId', validatorRules.campaignId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前状态">
+          <a-input placeholder="请输入修改前状态" v-decorator="['putStatus', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后状态">
+          <a-input placeholder="请输入修改后状态" v-decorator="['updatePutStatus', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouCampaignStatusModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        campaignId:{rules: [{ required: true, message: '请输入计划ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouCampaignStatus/add",
+          edit: "/kuaishou/kuaiShouCampaignStatus/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','campaignId','putStatus','updatePutStatus','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 157 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouCampaignStatusModal__Style#Drawer.vue

@@ -0,0 +1,157 @@
+<template>
+  <a-drawer
+      :title="title"
+      :width="800"
+      placement="right"
+      :closable="false"
+      @close="close"
+      :visible="visible"
+  >
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划ID">
+          <a-input placeholder="请输入计划ID" v-decorator="['campaignId', validatorRules.campaignId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前状态">
+          <a-input placeholder="请输入修改前状态" v-decorator="['putStatus', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后状态">
+          <a-input placeholder="请输入修改后状态" v-decorator="['updatePutStatus', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+    <a-button type="primary" @click="handleOk">确定</a-button>
+    <a-button type="primary" @click="handleCancel">取消</a-button>
+  </a-drawer>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouCampaignStatusModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        campaignId:{rules: [{ required: true, message: '请输入计划ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouCampaignStatus/add",
+          edit: "/kuaishou/kuaiShouCampaignStatus/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','campaignId','putStatus','updatePutStatus','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+</style>

+ 150 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupBidModal.vue

@@ -0,0 +1,150 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划组ID">
+          <a-input placeholder="请输入计划组ID" v-decorator="['unitId', validatorRules.unitId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前出价">
+          <a-input placeholder="请输入修改前出价" v-decorator="['bid', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后出价">
+          <a-input placeholder="请输入修改后出价" v-decorator="['updateBid', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouGroupBidModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        unitId:{rules: [{ required: true, message: '请输入计划组ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouGroupBid/add",
+          edit: "/kuaishou/kuaiShouGroupBid/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','unitId','bid','updateBid','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 157 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupBidModal__Style#Drawer.vue

@@ -0,0 +1,157 @@
+<template>
+  <a-drawer
+      :title="title"
+      :width="800"
+      placement="right"
+      :closable="false"
+      @close="close"
+      :visible="visible"
+  >
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划组ID">
+          <a-input placeholder="请输入计划组ID" v-decorator="['unitId', validatorRules.unitId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前出价">
+          <a-input placeholder="请输入修改前出价" v-decorator="['bid', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后出价">
+          <a-input placeholder="请输入修改后出价" v-decorator="['updateBid', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+    <a-button type="primary" @click="handleOk">确定</a-button>
+    <a-button type="primary" @click="handleCancel">取消</a-button>
+  </a-drawer>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouGroupBidModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        unitId:{rules: [{ required: true, message: '请输入计划组ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouGroupBid/add",
+          edit: "/kuaishou/kuaiShouGroupBid/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','unitId','bid','updateBid','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+</style>

+ 150 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupDayBudgetModal.vue

@@ -0,0 +1,150 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划组ID">
+          <a-input placeholder="请输入计划组ID" v-decorator="['unitId', validatorRules.unitId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前预算">
+          <a-input placeholder="请输入修改前预算" v-decorator="['dayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后预算">
+          <a-input placeholder="请输入修改后预算" v-decorator="['updateDayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouGroupDayBudgetModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        unitId:{rules: [{ required: true, message: '请输入计划组ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouGroupDayBudget/add",
+          edit: "/kuaishou/kuaiShouGroupDayBudget/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','unitId','dayBudget','updateDayBudget','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 157 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/kuaishou/vue/modules/KuaiShouGroupDayBudgetModal__Style#Drawer.vue

@@ -0,0 +1,157 @@
+<template>
+  <a-drawer
+      :title="title"
+      :width="800"
+      placement="right"
+      :closable="false"
+      @close="close"
+      :visible="visible"
+  >
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户ID">
+          <a-input placeholder="请输入账户ID" v-decorator="['accountId', validatorRules.accountId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="计划组ID">
+          <a-input placeholder="请输入计划组ID" v-decorator="['unitId', validatorRules.unitId ]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改前预算">
+          <a-input placeholder="请输入修改前预算" v-decorator="['dayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="修改后预算">
+          <a-input placeholder="请输入修改后预算" v-decorator="['updateDayBudget', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="操作人id">
+          <a-input placeholder="请输入操作人id" v-decorator="['loginId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+    <a-button type="primary" @click="handleOk">确定</a-button>
+    <a-button type="primary" @click="handleCancel">取消</a-button>
+  </a-drawer>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "KuaiShouGroupDayBudgetModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        accountId:{rules: [{ required: true, message: '请输入账户ID!' }]},
+        unitId:{rules: [{ required: true, message: '请输入计划组ID!' }]},
+        },
+        url: {
+          add: "/kuaishou/kuaiShouGroupDayBudget/add",
+          edit: "/kuaishou/kuaiShouGroupDayBudget/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','unitId','dayBudget','updateDayBudget','loginId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+</style>

+ 34 - 1
module-kuaishou/src/main/java/constant/KuaishouInterfaceConstant.java

@@ -1,7 +1,6 @@
 package constant;
 
 /**
- * @author 于萌萌
  * 2019年9月9日13:21:39
  */
 public class KuaishouInterfaceConstant {
@@ -81,6 +80,40 @@ public class KuaishouInterfaceConstant {
      */
     public static final String APP_LIST = "/rest/openapi/v1/file/ad/app/list";
 
+
+    /**
+     * 修改广告计划预算
+     */
+    public static final String UPDATE_CAMPAIGN = "/rest/openapi/v1/campaign/update/";
+
+    /**
+     * 修改广告组预算
+     */
+    public static final String UPDATE_UNIT = "/rest/openapi/v1/ad_unit/update/day_budget";
+
+
+    /**
+     * 修改广告组出价
+     */
+    public static final String UPDATE_UNIT_BID = "/rest/openapi/v1/ad_unit/update/bid";
+
+
+    /**
+     * 修改广告计划状态
+     */
+    public static final String UPDATE_CAMPAIGN_STATUS = "/rest/openapi/v1/campaign/update/status";
+
+    /**
+     * 修改广告组状态
+     */
+    public static final String UPDATE_UNIT_STATUS = "/rest/openapi/v1/ad_unit/update/status";
+
+    /**
+     * 修改广告创意状态
+     */
+    public static final String UPDATE_CREATIVE_STATUS = "/rest/openapi/v1/creative/update/status";
+
+
     /**
      * 登录
      */