瀏覽代碼

Merge branch 'master' into test

syh 5 年之前
父節點
當前提交
ba46f7f615
共有 18 個文件被更改,包括 349 次插入97 次删除
  1. 21 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CrawlerController.java
  2. 7 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/ICrawlerService.java
  3. 105 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CrawlerServiceImpl.java
  4. 5 1
      jeecg-boot-module-system/src/main/resources/application-dev.yml
  5. 4 0
      jeecg-boot-module-system/src/main/resources/application-prod.yml
  6. 4 0
      jeecg-boot-module-system/src/main/resources/application-test.yml
  7. 57 0
      jeecg-boot-module-system/src/main/resources/logback-dev.xml
  8. 57 0
      jeecg-boot-module-system/src/main/resources/logback-prod.xml
  9. 57 0
      jeecg-boot-module-system/src/main/resources/logback-test.xml
  10. 4 1
      module-common/src/main/java/cn/com/ctop/common/module/utils/StatusCode.java
  11. 0 24
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/controller/AppiumJobController.java
  12. 1 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/IAppiumDeviceService.java
  13. 5 7
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/IAppiumJobService.java
  14. 1 1
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/IAppiumTaskService.java
  15. 7 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/impl/AppiumDeviceServiceImpl.java
  16. 7 56
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/impl/AppiumJobServiceImpl.java
  17. 2 2
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/impl/AppiumTaskServiceImpl.java
  18. 5 5
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/util/AppiumUtil.java

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

@@ -0,0 +1,21 @@
+package org.jeecg.modules.ctop.controller;
+
+import org.jeecg.modules.ctop.service.ICrawlerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("appium/crawler")
+public class CrawlerController {
+    @Autowired
+    private ICrawlerService crawlerService;
+
+    @PostMapping("startJob")
+    public Map<String, Object> runTask(Long jobId, Long num, String creativeName, String accountId, String publishName) {
+        return crawlerService.startJob(jobId, num, creativeName, accountId, publishName);
+    }
+}

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

@@ -0,0 +1,7 @@
+package org.jeecg.modules.ctop.service;
+
+import java.util.Map;
+
+public interface ICrawlerService {
+    Map<String, Object> startJob(Long jobId, Long num, String creativeName, String ksid, String publishName);
+}

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

@@ -0,0 +1,105 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import cn.com.ctop.common.module.entity.BindAccountLogin;
+import cn.com.ctop.common.module.service.IBindAccountLoginService;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import cn.com.ctop.crawler.modules.appium.entity.AppiumDevice;
+import cn.com.ctop.crawler.modules.appium.entity.AppiumTaskLog;
+import cn.com.ctop.crawler.modules.appium.mapper.AppiumTaskLogMapper;
+import cn.com.ctop.crawler.modules.appium.service.IAppiumDeviceService;
+import cn.com.ctop.crawler.modules.appium.service.IAppiumJobService;
+import cn.com.ctop.crawler.modules.appium.service.IAppiumTaskService;
+import org.jeecg.modules.ctop.service.ICrawlerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Service
+public class CrawlerServiceImpl implements ICrawlerService {
+    static ExecutorService executorService = null;
+    @Autowired
+    private IBindAccountLoginService bindAccountLoginService;
+    @Autowired
+    private IAppiumJobService jobService;
+    @Autowired
+    private IAppiumTaskService taskService;
+    @Autowired
+    private IAppiumDeviceService deviceService;
+    @Autowired
+    private AppiumTaskLogMapper taskLogMapper;
+
+    @Override
+    public Map<String, Object> startJob(Long jobId, Long num, String creativeName, String accountId, String publishName) {
+        Map<String, Object> result = new HashMap<>();
+        //TODO 需要考虑多个任务并行的问题
+        //1:根据id查询快手账号信息
+        BindAccountLogin accountLogin = bindAccountLoginService.getById(accountId);
+        if (null == accountLogin) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR.getCode());
+            return result;
+        }
+        if (jobId == null || jobId == 0 || num == null || num == 0 || creativeName == null || "".equals(creativeName) || publishName == null || "".equals(publishName.trim())) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR.getCode());
+            return result;
+        }
+        //获取手机设备信息
+        AppiumDevice device = deviceService.getEnabled();
+        if (null == device || device.getStatus() != 1) {
+            ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_CRAWLER_APP_NO_ENABLED_DEVICE.getCode());
+            return result;
+        }
+        executorService = Executors.newFixedThreadPool(2);
+        executorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                int i = 0;
+                while (i < num) {
+                    if (i > num) {
+                        break;
+                    }
+                    deviceService.updateById(device);
+                    AppiumTaskLog log = new AppiumTaskLog();
+                    log.setDeviceId(2);
+                    log.setDeviceIp(device.getIp());
+                    log.setDevicePort(device.getPort());
+                    log.setStatus(1);
+                    log.setTaskId(1);
+                    log.setTaskName("快手刷量任务");
+                    taskLogMapper.insert(log);
+                    log.setId(log.getId());
+                    try {
+                        //一键新机
+                        boolean success = jobService.refreshWebPhone();
+                        if (!success) {
+                            jobService.updateStatus(device, log, -4, 1);
+                            continue;
+                        }
+                        Thread.sleep(10000L);
+                        String ksId = jobService.loginTask(2L, device);
+                        if (null == ksId) {
+                            jobService.updateStatus(device, log, -1, 1);
+                            continue;
+                        }
+                        boolean isBind = jobService.bindCreative(accountLogin.getAccountName(), accountLogin.getPassword(), creativeName, ksId);
+                        if (!isBind) {
+                            jobService.updateStatus(device, log, -2, 1);
+                            continue;
+                        }
+                        taskService.runTask(1, 1, publishName);
+                        i++;
+                    } catch (Exception e) {
+                        jobService.updateStatus(device, log, -3, 1);
+                        continue;
+                    }
+                }
+            }
+        });
+        ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_CRAWLER_APP_JOB_StART.getCode());
+        return result;
+    }
+}

+ 5 - 1
jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -1,3 +1,4 @@
+
 server:
   port: 8080
   servlet:
@@ -151,4 +152,7 @@ kuaishou:
   group-control:
     path: http://39.106.184.70
     port: 4723
-
+logging:
+  level:
+    root: info
+  config: classpath:logback-dev.xml

+ 4 - 0
jeecg-boot-module-system/src/main/resources/application-prod.yml

@@ -149,4 +149,8 @@ kuaishou:
   group-control:
     path: http://39.106.184.70
     port: 4723
+logging:
+  level:
+    root: info
+  config: classpath:logback-prod.xml
 

+ 4 - 0
jeecg-boot-module-system/src/main/resources/application-test.yml

@@ -155,3 +155,7 @@ kuaishou:
   group-control:
     path: http://127.0.0.1
     port: 4723
+logging:
+  level:
+    root: info
+  config: classpath:logback-test.xml

+ 57 - 0
jeecg-boot-module-system/src/main/resources/logback-dev.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <contextName>logback</contextName>
+
+
+    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 定义日志存储的路径,不要配置相对路径 -->
+    <property name="FILE_PATH" value="D:/Desktop/log/spring-log.%d{yyyy-MM-dd}.%i.log"/>
+
+    <!-- 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志级别过滤INFO以下 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <encoder>
+            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->
+    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+
+            <fileNamePattern>${FILE_PATH}</fileNamePattern>
+
+            <!-- keep 15 days' worth of history -->
+            <maxHistory>30</maxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 日志文件的最大大小 -->
+                <maxFileSize>2MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+
+            <!-- 超出删除老文件 -->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- project default level -->
+    <logger name="net.sh.rgface.serive" level="ERROR"/>
+
+    <!-- 日志输出级别 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="rollingFile"/>
+    </root>
+</configuration>

+ 57 - 0
jeecg-boot-module-system/src/main/resources/logback-prod.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <contextName>logback</contextName>
+
+
+    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 定义日志存储的路径,不要配置相对路径 -->
+    <property name="FILE_PATH" value="/mnt/webapps/logs/spring-log.%d{yyyy-MM-dd}.%i.log"/>
+
+    <!-- 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志级别过滤INFO以下 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <encoder>
+            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->
+    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+
+            <fileNamePattern>${FILE_PATH}</fileNamePattern>
+
+            <!-- keep 15 days' worth of history -->
+            <maxHistory>30</maxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 日志文件的最大大小 -->
+                <maxFileSize>2MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+
+            <!-- 超出删除老文件 -->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- project default level -->
+    <logger name="net.sh.rgface.serive" level="ERROR"/>
+
+    <!-- 日志输出级别 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="rollingFile"/>
+    </root>
+</configuration>

+ 57 - 0
jeecg-boot-module-system/src/main/resources/logback-test.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <contextName>logback</contextName>
+
+
+    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 定义日志存储的路径,不要配置相对路径 -->
+    <property name="FILE_PATH" value="D:/Desktop/log/spring-log.%d{yyyy-MM-dd}.%i.log"/>
+
+    <!-- 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志级别过滤INFO以下 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <encoder>
+            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->
+    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+
+            <fileNamePattern>${FILE_PATH}</fileNamePattern>
+
+            <!-- keep 15 days' worth of history -->
+            <maxHistory>30</maxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 日志文件的最大大小 -->
+                <maxFileSize>2MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+
+            <!-- 超出删除老文件 -->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- project default level -->
+    <logger name="net.sh.rgface.serive" level="ERROR"/>
+
+    <!-- 日志输出级别 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="rollingFile"/>
+    </root>
+</configuration>

+ 4 - 1
module-common/src/main/java/cn/com/ctop/common/module/utils/StatusCode.java

@@ -33,8 +33,11 @@ public enum StatusCode {
     KUAISHOU_CRAWLER_APP_ELEMENT_IS_NULL("此快手元素获取不到", -1003, false),
     KUAISHOU_CRAWLER_APP_MOBILE_CODE_IS_NULL("短信验证码未获取到", -1004, false),
     KUAISHOU_CRAWLER_APP_ELEMENT_DETAIL_ERROR("快手元素内容异常", -1005, false),
+    KUAISHOU_CRAWLER_APP_NO_ENABLED_DEVICE("暂无可用设备", -2001, false),
     KUAISHOU_CRAWLER_APP_SUCCESS("爬虫运行正常", 0, true),
-    KUAISHOU_CRAWLER_APP_TASK_END("爬虫任务运行结束", 1, true);
+    KUAISHOU_CRAWLER_APP_TASK_END("爬虫任务运行结束", 1, true),
+    KUAISHOU_CRAWLER_APP_JOB_StART("任务开始执行开始", 0, true),
+    KUAISHOU_CRAWLER_APP_JOB_END("任务运行结束", 1, true);
     private String desc;
     private int code;
     private boolean flag;

+ 0 - 24
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/controller/AppiumJobController.java

@@ -1,7 +1,5 @@
 package cn.com.ctop.crawler.modules.appium.controller;
 
-import cn.com.ctop.common.module.utils.ResultMapUtils;
-import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.crawler.modules.appium.entity.AppiumJob;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumJobService;
 import com.alibaba.fastjson.JSON;
@@ -32,7 +30,6 @@ 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;
 
@@ -247,25 +244,4 @@ public class AppiumJobController {
         }
         return Result.ok("文件导入失败!");
     }
-
-    @PostMapping("runTask")
-    public Map<String, Object> runTask(Long jobId, Long num) {
-        Map<String, Object> result = new HashMap<>();
-        if (null == jobId || jobId == 0 || null == num || num == 0) {
-            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR.getCode());
-            return result;
-        }
-        try {
-            appiumJobService.runTask(jobId, num);
-            ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());
-        } catch (Exception e) {
-            ResultMapUtils.setResultMap(result, StatusCode.COMMON_SERVER_ERROR.getCode());
-        }
-        return result;
-    }
-
-    @PostMapping("startTask")
-    public Map<String, Object> startTask(String account, String password, String creativeName, Integer num) {
-        return appiumJobService.startTask(account, password, creativeName, num);
-    }
 }

+ 1 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/IAppiumDeviceService.java

@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IAppiumDeviceService extends IService<AppiumDevice> {
 
+    AppiumDevice getEnabled();
 }

+ 5 - 7
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/IAppiumJobService.java

@@ -1,10 +1,10 @@
 package cn.com.ctop.crawler.modules.appium.service;
 
+import cn.com.ctop.crawler.modules.appium.entity.AppiumDevice;
 import cn.com.ctop.crawler.modules.appium.entity.AppiumJob;
+import cn.com.ctop.crawler.modules.appium.entity.AppiumTaskLog;
 import com.baomidou.mybatisplus.extension.service.IService;
 
-import java.util.Map;
-
 /**
  * 爬虫调度任务
  *
@@ -14,13 +14,11 @@ import java.util.Map;
  */
 public interface IAppiumJobService extends IService<AppiumJob> {
 
-    void runTask(Long jobId, Long num);
-
-    String loginTask(Long taskId);
+    String loginTask(Long taskId, AppiumDevice device);
 
     boolean bindCreative(String account, String password, String creativeName, String ksId);
 
-    Map<String, Object> startTask(String account, String password, String creativeName, Integer num);
-
     boolean refreshWebPhone();
+
+    void updateStatus(AppiumDevice appiumDevice, AppiumTaskLog log, Integer logStatus, Integer deviceStatus);
 }

+ 1 - 1
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/IAppiumTaskService.java

@@ -16,7 +16,7 @@ public interface IAppiumTaskService extends IService<AppiumTask> {
      * @param taskId
      * @param deviceId
      */
-    public void runTask(Integer taskId, Integer deviceId);
+    public void runTask(Integer taskId, Integer deviceId, String publishName);
 
     public void runKuaishouLoginTask();
 }

+ 7 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/impl/AppiumDeviceServiceImpl.java

@@ -3,6 +3,7 @@ package cn.com.ctop.crawler.modules.appium.service.impl;
 import cn.com.ctop.crawler.modules.appium.entity.AppiumDevice;
 import cn.com.ctop.crawler.modules.appium.mapper.AppiumDeviceMapper;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumDeviceService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,4 +17,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 public class AppiumDeviceServiceImpl extends ServiceImpl<AppiumDeviceMapper, AppiumDevice> implements IAppiumDeviceService {
 
+    @Override
+    public AppiumDevice getEnabled() {
+        QueryWrapper<AppiumDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("status", 1).orderByDesc("id").last("linit 1");
+        return getOne(queryWrapper);
+    }
 }

+ 7 - 56
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/impl/AppiumJobServiceImpl.java

@@ -7,6 +7,7 @@ import cn.com.ctop.crawler.modules.appium.entity.*;
 import cn.com.ctop.crawler.modules.appium.mapper.AppiumJobMapper;
 import cn.com.ctop.crawler.modules.appium.mapper.AppiumTaskItemMapper;
 import cn.com.ctop.crawler.modules.appium.mapper.AppiumTaskLogMapper;
+import cn.com.ctop.crawler.modules.appium.mapper.AppiumTaskMapper;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumDeviceService;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumJobService;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumTaskService;
@@ -40,7 +41,7 @@ import java.util.Stack;
 @Service
 public class AppiumJobServiceImpl extends ServiceImpl<AppiumJobMapper, AppiumJob> implements IAppiumJobService {
     @Autowired
-    private AppiumJobMapper appiumJobMapper;
+    private AppiumTaskMapper taskMapper;
     @Autowired
     private AppiumTaskItemMapper taskItemMapper;
     @Value("${jeecg.path.chrome-driver}")
@@ -51,19 +52,12 @@ public class AppiumJobServiceImpl extends ServiceImpl<AppiumJobMapper, AppiumJob
     private AppiumTaskLogMapper appiumTaskLogMapper;
 
     @Override
-    public void runTask(Long jobId, Long num) {
-        //TODO 需要考虑多个任务并列
-        //1:根据jobId查询所属执行task信息
-        List<AppiumTask> taskList = appiumJobMapper.getTaskByJobId(jobId);
-    }
-
-    @Override
-    public String loginTask(Long taskId) {
+    public String loginTask(Long taskId, AppiumDevice device) {
         String kuaishouId = null;
         try {
+            AppiumTask task = taskMapper.selectById(taskId);
             AppiumUtil appiumUtil = new AppiumUtil();
-            AndroidDriver androidDriver = appiumUtil.initAndroidDriver("http://39.106.184.70:4723/wd/hub", "183.131.157.66:10005", "com.smile.gifmaker", "com.yxcorp.gifshow.HomeActivity");
-//            appiumUtil.loginTask(androidDriver, null, null);
+            AndroidDriver androidDriver = appiumUtil.initAndroidDriver("http://39.106.184.70:4723/wd/hub", device.getIp() + ":" + device.getPort(), task.getAppPackage(), task.getAppActivity());
             Map<String, Object> result = new HashMap<>();
             ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_CRAWLER_APP_SUCCESS.getCode());
             boolean loop = true;
@@ -162,50 +156,6 @@ public class AppiumJobServiceImpl extends ServiceImpl<AppiumJobMapper, AppiumJob
     private IAppiumTaskService appiumTaskService;
 
     @Override
-    public Map<String, Object> startTask(String account, String password, String creativeName, Integer num) {
-        Map<String, Object> result = new HashMap<>();
-        int i = 0;
-        while (i < num) {
-            if (i > num) {
-                break;
-            }
-            //获取手机设备信息
-            AppiumDevice appiumDevice = appiumDeviceService.getById(2L);
-            appiumDevice.setStatus(2);
-            appiumDeviceService.updateById(appiumDevice);
-            AppiumTaskLog log = new AppiumTaskLog();
-            log.setDeviceId(2);
-            log.setDeviceIp(appiumDevice.getIp());
-            log.setDevicePort(appiumDevice.getPort());
-            log.setStatus(1);
-            log.setTaskId(1);
-            log.setTaskName("快手刷量任务");
-            appiumTaskLogMapper.insert(log);
-            log.setId(log.getId());
-            try {
-                //一键新机
-                boolean success = refreshWebPhone();
-                String ksId = loginTask(2L);
-                if (null == ksId) {
-                    updateStatus(appiumDevice, log, -1, 1);
-                    continue;
-                }
-                boolean isBind = bindCreative(account, password, creativeName, ksId);
-                if (!isBind) {
-                    updateStatus(appiumDevice, log, -2, 1);
-                    continue;
-                }
-                appiumTaskService.runTask(1, 1);
-                i++;
-            } catch (Exception e) {
-                updateStatus(appiumDevice, log, -3, 1);
-                continue;
-            }
-        }
-        return result;
-    }
-
-    @Override
     public boolean refreshWebPhone() {
         boolean success = false;
         String url = "https://lcloud.longene.com.cn/";
@@ -256,7 +206,8 @@ public class AppiumJobServiceImpl extends ServiceImpl<AppiumJobMapper, AppiumJob
         }
     }
 
-    private void updateStatus(AppiumDevice appiumDevice, AppiumTaskLog log, Integer logStatus, Integer deviceStatus) {
+    @Override
+    public void updateStatus(AppiumDevice appiumDevice, AppiumTaskLog log, Integer logStatus, Integer deviceStatus) {
         log.setStatus(3);
         appiumTaskLogMapper.updateById(log);
         appiumDevice.setStatus(1);

+ 2 - 2
module-crawler/src/main/java/cn/com/ctop/crawler/modules/appium/service/impl/AppiumTaskServiceImpl.java

@@ -49,7 +49,7 @@ public class AppiumTaskServiceImpl extends ServiceImpl<AppiumTaskMapper, AppiumT
     }
 
     @Override
-    public void runTask(Integer taskId, Integer deviceId) {
+    public void runTask(Integer taskId, Integer deviceId, String publishName) {
         //获取当前需要执行的任务信息
         AppiumTask task = this.getById(taskId);
         //获取手机设备信息
@@ -72,7 +72,7 @@ public class AppiumTaskServiceImpl extends ServiceImpl<AppiumTaskMapper, AppiumT
             AndroidDriver androidDriver = appiumUtil.initAndroidDriver(groupControlPath + ":" + groupControlPort + "/wd/hub", appiumDevice.getIp() + ":" + appiumDevice.getPort(), task.getAppPackage(), task.getAppActivity());
             if (taskItemList != null && taskItemList.size() > 0) {
                 for (AppiumTaskItem appiumTaskItem : taskItemList) {
-                    appiumUtil.runTask(androidDriver, appiumTaskItem, null);
+                    appiumUtil.runTask(androidDriver, appiumTaskItem, null, publishName);
                 }
                 log.setStatus(2);
                 appiumTaskLogMapper.updateById(log);

+ 5 - 5
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/util/AppiumUtil.java

@@ -701,7 +701,7 @@ public class AppiumUtil {
         return getText;
     }
 
-    public String runTask(AndroidDriver androidDriver, AppiumTaskItem appiumTaskItem, WebElement loopElement) throws Exception {
+    public String runTask(AndroidDriver androidDriver, AppiumTaskItem appiumTaskItem, WebElement loopElement, String publishName) throws Exception {
         String getText = null;
         if (appiumTaskItem != null) {
             System.out.println(new Gson().toJson(appiumTaskItem));
@@ -729,7 +729,7 @@ public class AppiumUtil {
                                     return getText;
                                 }
                             } else if (appiumTaskItem.getTextEqualType().equals("start")) {
-                                boolean check = checkAdvertiser(androidDriver, appiumTaskItem.getTextEqualKey());
+                                boolean check = checkAdvertiser(androidDriver, publishName);
                                 if (!check) {
                                     return getText;
                                 }
@@ -760,7 +760,7 @@ public class AppiumUtil {
                         List<AppiumTaskItem> subTask = appiumTaskItem.getSubList();
                         if (subTask != null && subTask.size() > 0) {
                             for (AppiumTaskItem task : subTask) {
-                                runTask(androidDriver, task, element);
+                                runTask(androidDriver, task, element, publishName);
                             }
                         }
                     } else {
@@ -769,7 +769,7 @@ public class AppiumUtil {
                             if (appiumTaskItem.getLoopRate() != null && appiumTaskItem.getLoopRate() > 0) {
                                 Thread.sleep(appiumTaskItem.getLoopRate());
                             }
-                            runTask(androidDriver, appiumTaskItem, element);
+                            runTask(androidDriver, appiumTaskItem, element, publishName);
                         }
                         //非必须执行情况下
                         if (appiumTaskItem.getClickType() != null && appiumTaskItem.getClickType().equals("point")) {
@@ -796,7 +796,7 @@ public class AppiumUtil {
                                 List<AppiumTaskItem> subTask = appiumTaskItem.getSubList();
                                 if (subTask != null && subTask.size() > 0) {
                                     for (AppiumTaskItem task : subTask) {
-                                        runTask(androidDriver, task, element);
+                                        runTask(androidDriver, task, element, publishName);
                                     }
                                 }
                             }