소스 검색

Merge remote-tracking branch 'origin/master'

yumeng 4 년 전
부모
커밋
c86fcf14bf
19개의 변경된 파일426개의 추가작업 그리고 308개의 파일을 삭제
  1. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActCustomFormController.java
  2. 0 234
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActFormFieldController.java
  3. 31 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActFormPorcessController.java
  4. 1 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java
  5. 143 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MusicKuaishouTypeController.java
  6. 0 17
      jeecg-boot-module-system/src/main/resources/drools/rule.drl
  7. 0 17
      jeecg-boot-module-system/src/main/resources/drools/rule2.drl
  8. 110 29
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  9. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/ActCustomForm.java
  10. 11 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/IKuaishouCrawlerService.java
  11. 14 5
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/impl/KuaishouCrawlerServiceImpl.java
  12. 45 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/entity/MusicKuaishouType.java
  13. 14 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/MusicKuaishouTypeMapper.java
  14. 5 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/xml/MusicKuaishouTypeMapper.xml
  15. 14 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/IMusicKuaishouTypeService.java
  16. 18 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/impl/MusicKuaishouTypeServiceImpl.java
  17. 4 2
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMonitoringLinksCheckJob.java
  18. 1 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceAdvertisePlanService.java
  19. 5 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceAdvertisePlanServiceImpl.java

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

@@ -9,8 +9,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -29,6 +31,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -79,6 +82,11 @@ public class ActCustomFormController {
 	public Result<ActCustomForm> add(@RequestBody ActCustomForm actCustomForm) {
 		Result<ActCustomForm> result = new Result<>();
 		try {
+			LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+			actCustomForm.setUserId(user.getId());
+			actCustomForm.setStatus(1);
+			actCustomForm.setCreateTime(new Date());
+			actCustomForm.setUpdateTime(new Date());
 			actCustomFormService.save(actCustomForm);
 			result.success("添加成功!");
 		} catch (Exception e) {

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

@@ -1,234 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import cn.com.ctop.common.module.entity.ActFormField;
-import cn.com.ctop.common.module.service.IActFormFieldService;
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.util.oConvertUtils;
-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 javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
- /**
- * 自定义表单字段信息
- * @author jeecg-boot
- * @date   2020-08-25
- * @version V1.0
- */
-@Slf4j
-@Api(tags="自定义表单字段信息")
-@RestController
-@RequestMapping("/ctop/actFormField")
-public class ActFormFieldController {
-	@Autowired
-	private IActFormFieldService actFormFieldService;
-
-	/**
-	  * 分页列表查询
-	 * @param actFormField
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-分页列表查询", notes="自定义表单字段信息-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<ActFormField>> queryPageList(ActFormField actFormField,
-													 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-													 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-													 HttpServletRequest req) {
-		Result<IPage<ActFormField>> result = new Result<>();
-		QueryWrapper<ActFormField> queryWrapper = QueryGenerator.initQueryWrapper(actFormField, req.getParameterMap());
-		Page<ActFormField> page = new Page<>(pageNo, pageSize);
-		IPage<ActFormField> pageList = actFormFieldService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-
-	/**
-	  *   添加
-	 * @param actFormField
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-添加", notes="自定义表单字段信息-添加")
-	@PostMapping(value = "/add")
-	public Result<ActFormField> add(@RequestBody ActFormField actFormField) {
-		Result<ActFormField> result = new Result<>();
-		try {
-			actFormFieldService.save(actFormField);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-
-	/**
-	  *  编辑
-	 * @param actFormField
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-编辑", notes="自定义表单字段信息-编辑")
-	@PutMapping(value = "/edit")
-	public Result<ActFormField> edit(@RequestBody ActFormField actFormField) {
-		Result<ActFormField> result = new Result<ActFormField>();
-		ActFormField actFormFieldEntity = actFormFieldService.getById(actFormField.getId());
-		if(actFormFieldEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = actFormFieldService.updateById(actFormField);
-			if(ok) {
-				result.success("修改成功!");
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-通过id删除", notes="自定义表单字段信息-通过id删除")
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			actFormFieldService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-批量删除", notes="自定义表单字段信息-批量删除")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<ActFormField> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<ActFormField> result = new Result<>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.actFormFieldService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-通过id查询", notes="自定义表单字段信息-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<ActFormField> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<ActFormField> result = new Result<>();
-		ActFormField actFormField = actFormFieldService.getById(id);
-		if(actFormField==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(actFormField);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<ActFormField> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              ActFormField actFormField = JSON.parseObject(deString, ActFormField.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(actFormField, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<ActFormField> pageList = actFormFieldService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "自定义表单字段信息列表");
-      mv.addObject(NormalExcelConstants.CLASS, ActFormField.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<ActFormField> listActFormFields = ExcelImportUtil.importExcel(file.getInputStream(), ActFormField.class, params);
-              actFormFieldService.saveBatch(listActFormFields);
-              return Result.ok("文件导入成功!数据行数:" + listActFormFields.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("文件导入失败!");
-  }
-
-}

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

@@ -1,7 +1,11 @@
 package org.jeecg.modules.ctop.controller;
 
+import cn.com.ctop.common.module.entity.ActCustomForm;
 import cn.com.ctop.common.module.entity.ActFormPorcess;
+import cn.com.ctop.common.module.service.IActCustomFormService;
 import cn.com.ctop.common.module.service.IActFormPorcessService;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.activiti.entity.ActZprocess;
+import org.jeecg.modules.activiti.service.IActZprocessService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -29,6 +35,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -44,8 +51,32 @@ import java.util.Map;
 @RequestMapping("/ctop/actFormPorcess")
 public class ActFormPorcessController {
 	@Autowired
+	private IActZprocessService actZprocessService;
+	@Autowired
 	private IActFormPorcessService actFormPorcessService;
+	@Autowired
+	private IActCustomFormService customFormService;
+	@PostMapping("bindProcess")
+	public Map<String,Object>bindProcess(Long formId,String processId){
+		Map<String,Object>result = new HashMap<>();
+		if(null == formId||formId == 0||null == processId||processId.trim().equals("")){
+			ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+			return result;
+		}
+		ActZprocess actZprocess = actZprocessService.getById(processId);
+		ActCustomForm customForm = customFormService.getById(formId);
+		if(null == actZprocess||null == customForm){
+			ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+			return result;
+		}
 
+		ActFormPorcess actFormPorcess = new ActFormPorcess();
+		actFormPorcess.setFormId(formId);
+		actFormPorcess.setProcessId(processId);
+		actFormPorcess.setStatus(1);
+		actFormPorcessService.save(actFormPorcess);
+		return result;
+	}
 	/**
 	  * 分页列表查询
 	 * @param actFormPorcess

+ 1 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java

@@ -233,8 +233,7 @@ public class MaterialImageInfoController {
         Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
         try {
             if (!Check.isNull(updateArr)) {
-                LoginUser user = (LoginUser) SecurityUtils.getSubject()
-                        .getPrincipal();
+                LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
                 for (int i = 0; i < updateArr.size(); i++) {
                     JSONObject updateJson = updateArr.getJSONObject(i);
                     if (!Check.isNull(updateJson)) {

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

@@ -0,0 +1,143 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import cn.com.ctop.crawler.modules.music.service.IMusicKuaishouTypeService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+ /**
+ * 快手音乐类别
+ * @author jeecg-boot
+ * @date   2020-09-11
+ * @version V1.0
+ */
+@Slf4j
+@Api(tags="快手音乐类别")
+@RestController
+@RequestMapping("/ctop/musicKuaishouType")
+public class MusicKuaishouTypeController {
+	@Autowired
+	private IMusicKuaishouTypeService musicKuaishouTypeService;
+
+	/**
+	  * 分页列表查询
+	 * @param musicKuaishouType
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<MusicKuaishouType>> queryPageList(MusicKuaishouType musicKuaishouType,
+														  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+														  HttpServletRequest req) {
+		Result<IPage<MusicKuaishouType>> result = new Result<>();
+		QueryWrapper<MusicKuaishouType> queryWrapper = QueryGenerator.initQueryWrapper(musicKuaishouType, req.getParameterMap());
+		Page<MusicKuaishouType> page = new Page<>(pageNo, pageSize);
+		IPage<MusicKuaishouType> pageList = musicKuaishouTypeService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param musicKuaishouType
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<MusicKuaishouType> add(@RequestBody MusicKuaishouType musicKuaishouType) {
+		Result<MusicKuaishouType> result = new Result<>();
+		try {
+			musicKuaishouTypeService.save(musicKuaishouType);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param musicKuaishouType
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<MusicKuaishouType> edit(@RequestBody MusicKuaishouType musicKuaishouType) {
+		Result<MusicKuaishouType> result = new Result<>();
+		MusicKuaishouType musicKuaishouTypeEntity = musicKuaishouTypeService.getById(musicKuaishouType.getId());
+		if(musicKuaishouTypeEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = musicKuaishouTypeService.updateById(musicKuaishouType);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			musicKuaishouTypeService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<MusicKuaishouType> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<MusicKuaishouType> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.musicKuaishouTypeService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<MusicKuaishouType> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<MusicKuaishouType> result = new Result<>();
+		MusicKuaishouType musicKuaishouType = musicKuaishouTypeService.getById(id);
+		if(musicKuaishouType==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(musicKuaishouType);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+}

+ 0 - 17
jeecg-boot-module-system/src/main/resources/drools/rule.drl

@@ -1,17 +0,0 @@
-import org.jeecg.modules.ctop.service.impl.RuleEngineServiceImpl
-import org.slf4j.LoggerFactory
-import org.slf4j.Logger
-import org.jeecg.modules.ctop.vo.QueryParam;
-import org.jeecg.modules.ctop.vo.RuleResult;
-dialect  "java"
-rule "paramcheck1"
-    salience 99
-    when queryParam : QueryParam(paramId != null && paramSign.equals("+"))
-        resultParam : RuleResult()
-    then
-        final Logger LOGGER = LoggerFactory.getLogger("param-check-one 规则引擎") ;
-        LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());
-        RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;
-        ruleEngineService.executeAddRule(queryParam);
-        resultParam.setPostCodeResult(true);
-end

+ 0 - 17
jeecg-boot-module-system/src/main/resources/drools/rule2.drl

@@ -1,17 +0,0 @@
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import org.jeecg.modules.ctop.service.impl.RuleEngineServiceImpl
-import org.jeecg.modules.ctop.vo.QueryParam;
-import org.jeecg.modules.ctop.vo.RuleResult;
-dialect  "java"
-rule "paramcheck2"
-    salience 88
-    when queryParam : QueryParam(paramId != null && paramSign.equals("-"))
-        resultParam : RuleResult()
-    then
-        final Logger LOGGER = LoggerFactory.getLogger("param-check-two 规则引擎") ;
-        LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());
-        RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;
-        ruleEngineService.executeRemoveRule(queryParam);
-        resultParam.setPostCodeResult(true);
-end

+ 110 - 29
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -5,15 +5,20 @@ import cn.com.ctop.check.entity.CtopCheckTaskList;
 import cn.com.ctop.check.service.ICtopCheckTaskListService;
 import cn.com.ctop.common.module.entity.BindAccountLogin;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.entity.UReportSubscriber;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.crawler.modules.core.service.IKuaishouCrawlerService;
+import cn.com.ctop.crawler.modules.music.service.IMusicKuaishouTypeService;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
+import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
 import org.junit.Test;
@@ -23,10 +28,10 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.io.File;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -56,11 +61,93 @@ public class SampleTest {
 //                advertiserDataService.getAdvertiserPlan(token, "", null, null);
 //            }
 //        }
-        CtopOauthToken token = oauthTokenService.getTokenByAccountId(1667284088260616L);
-        advertiserDataService.getAdvertiserPlan(token, "", null, null);
+        UserAllocation allocation = userAllocationService.getByAccountId(1648083559613447L);
+        CtopOauthToken token = oauthTokenService.getTokenByAccountId(1648083559613447L);
+//        advertiserDataService.getAdvertiserPlan(token, "", null, null);
+        List<ByteDanceAdvertisePlan> plans = advertisePlanService.getAllPlans(token.getAccountId(),DateUtils.formatDate(new Date()));
+        if(null!=plans&&!plans.isEmpty()){
+            for (ByteDanceAdvertisePlan plan:plans) {
+                Map<String, Object> creativeDetail = creativeService.getCreativeDetail(token.getAccountId(), plan.getId());
+                if(null!=creativeDetail.get("data")){
+                    JSONObject data = (JSONObject) creativeDetail.get("data");
+                    checkMonitorLink(data,plan,allocation);
+                }
+            }
+        }
+    }
+
+    private void checkMonitorLink(JSONObject data, ByteDanceAdvertisePlan plan, UserAllocation allocation) {
+        String downloadUrl = plan.getDownloadUrl();
+        boolean errorflag = false;
+        String errorMsg = "";
+        String token = plan.getName().split("-")[0];
+        String tokenInfo = "surl_token="+token;
+        String appType = plan.getAppType();
+
+        if(null!=downloadUrl){
+            if(null!=appType&&appType.equals("APP_IOS")){
+                if(!downloadUrl.equals("https://apps.apple.com/cn/app/id1468454200")){
+                    errorMsg+= "应用下载链接填写异常;";
+                    errorflag = true;
+                }
+            }
+            if(null!=appType&&appType.equals("APP_ANDROID")){
+                if(!downloadUrl.contains(token)){
+                    errorMsg+= "应用下载链接填写异常;";
+                    errorflag = true;
+                }
+            }
+        }
+        //展示监测链接
+        String trackUrl = data.getString("trackUrl");
+        if(null!=trackUrl&&!trackUrl.trim().equals("")){
+            if(!trackUrl.contains(tokenInfo)){
+                errorMsg+= "展示监测链接填写异常;";
+                errorflag = true;
+            }
+        }
+        //点击监测链接
+        String actionTrackUrl = data.getString("actionTrackUrl");
+        if(null!=actionTrackUrl&&!actionTrackUrl.trim().equals("")){
+            if(null!=appType&&appType.equals("APP_IOS")){
+                if(!actionTrackUrl.contains(tokenInfo)||!actionTrackUrl.contains("app_platform=ios")){
+                    errorMsg+= "点击监测链接填写异常;";
+                    errorflag = true;
+                }
+            }
+            if(null!=appType&&appType.equals("APP_ANDROID")){
+                if(!actionTrackUrl.contains(tokenInfo)||!actionTrackUrl.contains("tt/1967")){
+                    errorMsg+= "点击监测链接填写异常;";
+                    errorflag = true;
+                }
+            }
+        }
+        //视频有效播放监测链接
+        String videoPlayEffectiveTrackUrl = data.getString("videoPlayEffectiveTrackUrl");
+        if(null!=videoPlayEffectiveTrackUrl&&!videoPlayEffectiveTrackUrl.trim().equals("")){
+            if(!videoPlayEffectiveTrackUrl.contains(tokenInfo)){
+                errorMsg+= "视频有效播放监测链接填写异常;";
+                errorflag = true;
+            }
+        }
+        if(errorflag){
+            sendMessage(allocation,"警告:账户:"+allocation.getAuthName()+"(id:"+allocation.getAccountId()+")下的广告计划:"+plan.getName()+"(id:"+plan.getId()+")"+"监测链接异常>>"+errorMsg);
+        }
+    }
+    private void sendMessage(UserAllocation allocation, String errorMsg) {
+        sendMessageService.sendMessage(allocation.getUserId(),errorMsg);
     }
 
     @Autowired
+    private IUserAllocationService allocationService;
+    @Autowired
+    private IByteDanceAdvertisePlanService advertisePlanService;
+    @Autowired
+    private IByteDanceCreativeService creativeService;
+    @Autowired
+    private ISendMessageService sendMessageService;
+
+    @Autowired
     private IBindAccountLoginService bindAccountLoginService;
     @Autowired
     private IKuaishouWebInterfaceService kuaishouWebInterfaceService;
@@ -112,9 +199,6 @@ public class SampleTest {
         }
     }
 
-    @Autowired
-    private IUserAllocationService allocationService;
-
     @Test
     public void testLoadBytedanceData() {
         List<UserAllocation> allocations = allocationService.getByParams(435L, null, 0);
@@ -172,28 +256,25 @@ public class SampleTest {
     @Autowired
     IUReportService uReportService;
 
+    @Autowired
+    private IKuaishouCrawlerService crawlerService;
+    @Autowired
+    private IMusicKuaishouTypeService musicKuaishouTypeService;
     @Test
-    public void sendUReport() {
-        uReportService.uReportList().forEach(uReport -> {
-            List<UReportSubscriber> uReportSubscriber = uReportService.getUReportSubscriberByFileId(uReport.getString("id"));
-            if (!uReportSubscriber.isEmpty()) {
-                String title = uReport.getString("name").replace(".ureport.xml", "");
-                String content = "您订阅的日报在附件中请注意查收》》》";
-                //下载文件到本地
-                uReportExportService.exportExcel(uReport.getString("name"));
-                uReportSubscriber.forEach(sender -> {
-                    emailSendMsgHandle.SendAttachment("bijiequan@c-top.com.cn", title, content,
-                            new File(System.getProperty("user.dir") + File.separator + "uReport" + File.separator + uReport.getString("name").replace("ureport.xml", "") + "xlsx"));
-                });
-            }
-        });
-        //发完全部订阅,删除文件
-        File file = new File(System.getProperty("user.dir") + File.separator + "uReport");
-        File[] files = file.listFiles();
-        if (files != null && files.length > 0) {
-            for (File f : files) {
-                f.delete();
-            }
-        }
+    public void loadKuaishouMusicInfo(){
+//        String musicTypeString = crawlerService.getMusicTypeList("");
+//        String llsid = JSONObject.parseObject(musicTypeString).getString("llsid");
+//        System.out.println(llsid);
+//        JSONArray channels = JSONObject.parseObject(musicTypeString).getJSONArray("channels");
+//        if (null!=channels&&!channels.isEmpty()){
+//            for(int i=0;i<channels.size();i++){
+//                JSONObject object = channels.getJSONObject(i);
+//                MusicKuaishouType kuaishouType = new MusicKuaishouType(object);
+//                musicKuaishouTypeService.save(kuaishouType);
+//            }
+//        }
+        String llsid = "2000106667298730337";
+        String musicTypeString = crawlerService.getMusicList("200032",llsid);
+        System.out.println(musicTypeString);
     }
 }

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/ActCustomForm.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.common.module.entity;
 
+import cn.com.ctop.common.module.annotation.Dict;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -27,6 +28,7 @@ public class ActCustomForm {
 	private Long id;
 	private String name;
 	private String text;
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
 	private String userId;
 	private Integer status;
 	private Date createTime;

+ 11 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/IKuaishouCrawlerService.java

@@ -4,10 +4,21 @@ import cn.com.ctop.crawler.modules.account.entity.KuaishouAdAccount;
 import cn.com.ctop.crawler.modules.account.entity.KuaishouAppAccount;
 import cn.com.ctop.crawler.modules.account.entity.KuaishouIosAccount;
 
+import java.io.UnsupportedEncodingException;
+
 public interface IKuaishouCrawlerService {
     String getVideoFeeds(KuaishouAppAccount kuaishouAppAccount,Integer page);
     String getVideoFeeds(KuaishouIosAccount kuaishouIosAccount);
     String getAdAccountVideoFeeds(KuaishouAdAccount kuaishouAdAccount,String pcursor);
+
+    String getMusicTypeList(String llsid);
+
+    String musicSearchSuggest(String keyword) throws UnsupportedEncodingException;
+
+    String musicSearchList(String keyword) throws UnsupportedEncodingException;
+
+    String getMusicList(String channel, String llsid);
+
     String getAdFeeds();
     String getUserProfile(Long userId);
 }

+ 14 - 5
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/impl/KuaishouCrawlerServiceImpl.java

@@ -77,6 +77,7 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         return null;
     }
 
+    @Override
     public String getMusicTypeList(String llsid){
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
@@ -86,9 +87,14 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/channel/music";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
+    }
+
+    public static void main(String[] args) {
+
     }
 
+    @Override
     public String musicSearchSuggest(String keyword) throws UnsupportedEncodingException {
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
@@ -98,9 +104,10 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/search/suggest";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
     }
 
+    @Override
     public String musicSearchList(String keyword) throws UnsupportedEncodingException {
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
@@ -110,10 +117,11 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/search/v3";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
     }
 
-    public String getMusicList(String channel,String llsid){
+    @Override
+    public String getMusicList(String channel, String llsid){
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
         String staticStr = String.format("app=0&kpf=ANDROID_PHONE&ver=6.5&c=HUAWEI&mod=HUAWEI(VOG-AL10)&appver=6.5.5.9591&ftt=&isp=CUCC&kpn=KUAISHOU&lon=0&language=zh-cn&sys=ANDROID_9&max_memory=384&ud=1144829703&country_code=cn&pm_tag=&oc=HUAWEI&hotfix_ver=&did_gt=%s&iuid=&extId=4db221a192e4d1d713c5dafb204400a8&net=WIFI&did=ANDROID_07264410e70db2ca&lat=0", String.valueOf(System.currentTimeMillis()));
@@ -122,9 +130,10 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/channel/music";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
     }
 
+
     @Override
     public String getAdFeeds(){
         IpPool ipPool = iIpPoolService.getAvaliableIp();

+ 45 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/entity/MusicKuaishouType.java

@@ -0,0 +1,45 @@
+package cn.com.ctop.crawler.modules.music.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 快手音乐类别
+ * @author jeecg-boot
+ * @date   2020-09-11
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_music_kuaishou_type")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_music_kuaishou_type对象", description="快手音乐类别")
+public class MusicKuaishouType {
+
+	@TableId
+    private Long id;
+	private String type;
+	private String name;
+	private String icon;
+	private Date createTime;
+	private Date updateTime;
+
+	public MusicKuaishouType(JSONObject data) {
+		this.setIcon(data.getString("icon"));
+		this.setName(data.getString("name"));
+		this.setType(data.getString("type"));
+		this.setId(data.getLong("id"));
+	}
+
+	public MusicKuaishouType() {
+
+	}
+
+}

+ 14 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/MusicKuaishouTypeMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.crawler.modules.music.mapper;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 快手音乐类别
+ * @author: jeecg-boot
+ * @date:   2020-09-11
+ * @cersion: V1.0
+ */
+public interface MusicKuaishouTypeMapper extends BaseMapper<MusicKuaishouType> {
+
+}

+ 5 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/xml/MusicKuaishouTypeMapper.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="cn.com.ctop.crawler.modules.music.mapper.MusicKuaishouTypeMapper">
+
+</mapper>

+ 14 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/IMusicKuaishouTypeService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.crawler.modules.music.service;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手音乐类别
+ * @Author: jeecg-boot
+ * @Date:   2020-09-11
+ * @Version: V1.0
+ */
+public interface IMusicKuaishouTypeService extends IService<MusicKuaishouType> {
+
+}

+ 18 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/impl/MusicKuaishouTypeServiceImpl.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.crawler.modules.music.service.impl;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import cn.com.ctop.crawler.modules.music.mapper.MusicKuaishouTypeMapper;
+import cn.com.ctop.crawler.modules.music.service.IMusicKuaishouTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 快手音乐类别
+ * @author jeecg-boot
+ * @date   2020-09-11
+ * @version V1.0
+ */
+@Service
+public class MusicKuaishouTypeServiceImpl extends ServiceImpl<MusicKuaishouTypeMapper, MusicKuaishouType> implements IMusicKuaishouTypeService {
+
+}

+ 4 - 2
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMonitoringLinksCheckJob.java

@@ -13,8 +13,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.log.XxlJobLogger;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -44,7 +46,7 @@ public class BytedanceMonitoringLinksCheckJob {
                 continue;
             }
             for(UserAllocation allocation:allocations){
-                List<ByteDanceAdvertisePlan> plans = advertisePlanService.getAllPlans(allocation.getAccountId());
+                List<ByteDanceAdvertisePlan> plans = advertisePlanService.getAllPlans(allocation.getAccountId(), DateUtils.formatDate(new Date()));
                 if(null!=plans&&!plans.isEmpty()){
                     for (ByteDanceAdvertisePlan plan:plans) {
                         Map<String, Object> creativeDetail = creativeService.getCreativeDetail(allocation.getAccountId(), plan.getId());
@@ -109,7 +111,7 @@ public class BytedanceMonitoringLinksCheckJob {
         //视频有效播放监测链接
         String videoPlayEffectiveTrackUrl = data.getString("videoPlayEffectiveTrackUrl");
         if(null!=videoPlayEffectiveTrackUrl&&!videoPlayEffectiveTrackUrl.trim().equals("")){
-            if(!actionTrackUrl.contains(tokenInfo)){
+            if(!videoPlayEffectiveTrackUrl.contains(tokenInfo)){
                 errorMsg+= "视频有效播放监测链接填写异常;";
                 errorflag = true;
             }

+ 1 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceAdvertisePlanService.java

@@ -44,5 +44,5 @@ public interface IByteDanceAdvertisePlanService extends IService<ByteDanceAdvert
     //查询需要预警的深度转化出价
     List<String> selectWarningCpaBid(Long accountId, BigDecimal maxCapBid);
 
-    List<ByteDanceAdvertisePlan> getAllPlans(Long accountId);
+    List<ByteDanceAdvertisePlan> getAllPlans(Long accountId,String createDate);
 }

+ 5 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceAdvertisePlanServiceImpl.java

@@ -410,10 +410,14 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
     }
 
     @Override
-    public List<ByteDanceAdvertisePlan> getAllPlans(Long accountId) {
+    public List<ByteDanceAdvertisePlan> getAllPlans(Long accountId,String createDate) {
         QueryWrapper<ByteDanceAdvertisePlan>queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("account_id",accountId+"");
+        if(null!=createDate&&!createDate.trim().equals("")){
+            queryWrapper.ge("ad_create_time",createDate+" 00:00:00");
+        }
         queryWrapper.ne("opt_status","AD_STATUS_DELETE");
+        queryWrapper.orderByDesc("ad_create_time");
         return this.list(queryWrapper);
     }