901 lines
46 KiB
Java
901 lines
46 KiB
Java
package com.fisherbone.fuzhu.activity;
|
||
|
||
import android.content.Context;
|
||
import android.util.Log;
|
||
|
||
import com.blankj.utilcode.util.ToastUtils;
|
||
import com.fisherbone.ContactsHelp;
|
||
import com.fisherbone.fuzhu.ChangLiang;
|
||
import com.fisherbone.fuzhu.abllib.AblStepHandler;
|
||
import com.fisherbone.fuzhu.abllib.AblSteps;
|
||
import com.fisherbone.fuzhu.abllib.utils.AblUtil;
|
||
import com.fisherbone.fuzhu.db.dao.ZhanghaoDao;
|
||
import com.fisherbone.fuzhu.db.zhuanghaoBeanData;
|
||
import com.fisherbone.fuzhu.entity.LiveBean;
|
||
import com.fisherbone.fuzhu.entity.RecFollowBean;
|
||
import com.fisherbone.fuzhu.entity.RedEnvBean;
|
||
import com.fisherbone.fuzhu.entity.UrgentTaskBean;
|
||
import com.fisherbone.fuzhu.entity.touchTaskBean;
|
||
import com.fisherbone.fuzhu.okgonet.HttpConstants;
|
||
import com.fisherbone.fuzhu.okgonet.NetApi;
|
||
import com.fisherbone.fuzhu.utils.DateUtils;
|
||
import com.fisherbone.fuzhu.utils.JsonUtils;
|
||
import com.fisherbone.fuzhu.utils.ProfileSpUtils;
|
||
import com.lzy.okgo.model.HttpParams;
|
||
import com.lzy.okgo.model.Response;
|
||
|
||
import org.json.JSONException;
|
||
import org.json.JSONObject;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import java.util.concurrent.TimeUnit;
|
||
|
||
import io.reactivex.Flowable;
|
||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||
import io.reactivex.disposables.Disposable;
|
||
import io.reactivex.functions.Action;
|
||
import io.reactivex.functions.Consumer;
|
||
|
||
/**
|
||
* Time: 2021/6/28
|
||
* Description:
|
||
* @author : jianbo
|
||
*/
|
||
public class StartTask {
|
||
public String valueZero="0";
|
||
public String valueOne="1";
|
||
public String valueTwo="2";
|
||
public String valueTwoF="-2";
|
||
private Disposable mdDisposable;
|
||
Context mContext;
|
||
private boolean isRandGoodb;
|
||
private boolean isRandCommentb;
|
||
private boolean isRandFollowb;
|
||
|
||
public StartTask(Context mContext, ControlWindow controlWindow, ZhanghaoDao zhanghaoDao){
|
||
this.mContext=mContext;
|
||
this.controlWindow=controlWindow;
|
||
this.zhanghaoDao=zhanghaoDao;
|
||
}
|
||
private List<zhuanghaoBeanData> phoneNumber = new ArrayList<>();
|
||
ControlWindow controlWindow;
|
||
private ZhanghaoDao zhanghaoDao;
|
||
|
||
public void startTask(String body) {
|
||
UrgentTaskBean urgentTaskBean = JsonUtils.fromJson(body, UrgentTaskBean.class);
|
||
int success = urgentTaskBean.getSuccess();
|
||
//success=-1:代表报错;success=0:代表暂无任务;success=1:代表账号登录;success=2:代表停止任务;success=3:代表紧急任务;success=4:代表固定任务
|
||
switch (success) {
|
||
case -1:
|
||
Log.w("TIAOSHI###", "5s----代表报错");
|
||
break;
|
||
case 0:
|
||
Log.w("TIAOSHI###", "5s----暂无紧急任务");
|
||
break;
|
||
case 1:
|
||
Log.w("TIAOSHI###", "5s----账号登录");
|
||
ChangLiang.istask = true;
|
||
//领取到任务开始执行,调接口通知后台
|
||
//有任务且任务没有执行
|
||
if (ChangLiang.istask && valueZero.equals(ChangLiang.isstart)) {
|
||
ChangLiang.isstart = "1";
|
||
//拿到这个功能类型,然后去解析数据。
|
||
tastJiexidenglu(body);
|
||
//daojishithree(20);
|
||
} else {
|
||
Log.e("TIAOSHI###", "当前没有认领到可执行的任务");
|
||
}
|
||
break;
|
||
//代表停止任务
|
||
case 2:
|
||
Log.w("TIAOSHI###", "5s----停止任务");
|
||
ChangLiang.task_type = "2";
|
||
ChangLiang.istask = false;
|
||
//领取到任务开始执行,调接口通知后台
|
||
Log.e("TIAOSHI###", "开始给后台上报拿到了停任务");
|
||
updateTaskStatus();
|
||
AblStepHandler.getInstance().setStop(true);
|
||
ChangLiang.isstart = "0";
|
||
if (valueZero.equals(ChangLiang.isstarttwo)) {
|
||
ChangLiang.isstarttwo = "1";
|
||
Log.e("TIAOSHI###", "停止了任务,并开始倒计时10秒关闭抖音");
|
||
taskdaojishi(30);
|
||
}
|
||
break;
|
||
//代表紧急任务
|
||
case 3:
|
||
Log.w("TIAOSHI###", "5s----紧急任务");
|
||
ChangLiang.task_type = "3";
|
||
ChangLiang.istask = true;
|
||
if (!ChangLiang.istask) {
|
||
Log.e("TIAOSHI###", "紧急任务——当前没有认领到可执行的任务");
|
||
}
|
||
//任务没有执行
|
||
if (valueZero.equals(ChangLiang.isstart)) {
|
||
ChangLiang.isstart = "1";
|
||
//func_type 1:推荐加关,2:一键取关,3:撞号设置
|
||
String funcType = urgentTaskBean.getData().getFunc_type();
|
||
Log.e("TIAOSHI###", "执行的功能类型==" + funcType);
|
||
//领取到任务开始执行,调接口通知后台
|
||
//updateTaskStatus();
|
||
switch (funcType) {
|
||
case "1":
|
||
tastJiexi(body);
|
||
// daojishitwo(20);
|
||
break;
|
||
case "2":
|
||
tastJiexitwo(body);
|
||
// daojishitwo(20);
|
||
break;
|
||
//幢号任务
|
||
case "3":
|
||
//解析数据,开始执行幢号任务
|
||
Log.e("TIAOSHI###", "temp1");
|
||
tastJiexithree(body);
|
||
break;
|
||
default:
|
||
Log.e("TIAOSHI###", "执行的功能类型不匹配");
|
||
break;
|
||
}
|
||
|
||
} else {
|
||
Log.e("TIAOSHI###", "固定任务——任务正在执行");
|
||
}
|
||
break;
|
||
//代表固定任务
|
||
case 4:
|
||
Log.w("TIAOSHI###", "5s----固定任务");
|
||
ChangLiang.istask = true;
|
||
ChangLiang.task_type = "4";
|
||
if (!ChangLiang.istask) {
|
||
Log.e("TIAOSHI###", "固定任务——没有任务");
|
||
}
|
||
//任务没有执行
|
||
Log.e("TIAOSHI###", "任务是否执行==" + ChangLiang.isstart);
|
||
if (valueZero.equals(ChangLiang.isstart)) {
|
||
ChangLiang.isstart = "1";
|
||
//func_type 1:推荐加关,2:一键取关,3:撞号设置 5.抢红包
|
||
String funcType = urgentTaskBean.getData().getFunc_type();
|
||
Log.e("TIAOSHI###", "执行的功能类型==" + funcType);
|
||
//领取到任务开始执行,调接口通知后台
|
||
// updateTaskStatus();
|
||
switch (funcType) {
|
||
case "1":
|
||
tastJiexi(body);
|
||
// daojishitwo(20);
|
||
break;
|
||
case "2":
|
||
tastJiexitwo(body);
|
||
// daojishitwo(20);
|
||
break;
|
||
case "3":
|
||
//解析数据,开始执行幢号任务
|
||
tastJiexithree(body);
|
||
break;
|
||
case "5":
|
||
tastJiexifive(body);
|
||
break;
|
||
case "6":
|
||
tastJiexisix(body);
|
||
break;
|
||
default:
|
||
Log.e("TIAOSHI###", "执行的功能类型不匹配");
|
||
break;
|
||
}
|
||
|
||
} else {
|
||
Log.e("TIAOSHI###", "固定任务——任务正在执行");
|
||
}
|
||
break;
|
||
default:
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* app拿到任务调用接口
|
||
*/
|
||
private void updateTaskStatus() {
|
||
final HttpParams paramsPost = new HttpParams();
|
||
paramsPost.put("short_id", ChangLiang.short_id);
|
||
paramsPost.put("task_id", ChangLiang.task_id);
|
||
paramsPost.put("task_type", ChangLiang.task_type);
|
||
new NetApi().getPostData(paramsPost, HttpConstants.URi_device_Appscanlogin_updateTaskStatus).subscribe(new com.fisherbone.fuzhu.okgonet.Observer<Response>() {
|
||
@Override
|
||
public void onNext(Response response) {
|
||
String body = (String) response.body();
|
||
try {
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
String msg = jsonObject.getString("msg");
|
||
String success = jsonObject.getString("success");
|
||
if (valueZero.equals(success)) {
|
||
com.fisherbone.fuzhu.utils.ToastUtils.showToast(mContext, "开始执行新任务");
|
||
Log.e("TIAOSHI###", "给后台上报任务==" + msg);
|
||
}
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onError(Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
private void tastJiexi(String body) {
|
||
//拿到这个功能类型,然后去解析数据。
|
||
try {
|
||
/**
|
||
* -- ----------------------------
|
||
* DROP TABLE IF EXISTS `t_sys_task_function_tjjg`;
|
||
* CREATE TABLE `t_sys_task_function_tjjg` (
|
||
* `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
|
||
* `task_id` varchar(32) NOT NULL COMMENT '任务id',
|
||
* `account_duration` int(11) DEFAULT '0' COMMENT '单账号时长(h)',
|
||
* `watch_duration_max` int(11) DEFAULT '0' COMMENT '视频最大观看时长(s)',
|
||
* `watch_duration_min` int(11) DEFAULT '0' COMMENT '视频最小观看时长(s)',
|
||
* `is_rand_good` tinyint(2) DEFAULT '1' COMMENT '是否随机点赞(1:是随机点赞,0:否)',
|
||
* `is_rand_follow` tinyint(2) DEFAULT '1' COMMENT '是否随机关注(1:是随机关注,0:否)',
|
||
* `is_rand_comment` tinyint(2) DEFAULT '1' COMMENT '是否随机评论(1:是随机评论,0:否)',
|
||
* `max_follow` int(11) DEFAULT '0' COMMENT '最大关注数',
|
||
* `and_follow_max` int(11) DEFAULT '0' COMMENT '最大加关关注数',
|
||
* `and_follow_min` int(11) DEFAULT '0' COMMENT '最小加关关注数',
|
||
* `and_fans_max` int(11) DEFAULT '0' COMMENT '最大加关粉丝数',
|
||
* `and_fans_min` int(11) DEFAULT '0' COMMENT '最小加关粉丝数',
|
||
* `min_work` int(11) DEFAULT '0' COMMENT '最小作品数',
|
||
* `max_work_time` int(11) DEFAULT '0' COMMENT '最大作品时间(天)',
|
||
* `create_time` datetime DEFAULT NULL COMMENT '系统时间',
|
||
* `is_rand_forward` tinyint(2) DEFAULT '0' COMMENT '是否随机转发(1:是随机转发,0:否)',
|
||
* PRIMARY KEY (`id`)
|
||
* ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='任务功能推荐加关表';
|
||
*/
|
||
//拿到json字符串,假数据
|
||
// String JsonData = new GetJsonDataUtil().getJson(MainActivity.this, "jiaguan.json");//获取assets目录下的json文件数据
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
JSONObject data = jsonObject.getJSONObject("data");
|
||
String funcType = data.getString("func_type");
|
||
JSONObject functionExecute = data.getJSONObject("function_execute");
|
||
String taskId = data.getString("task_id");//任务id
|
||
String shortId = data.getString("short_id");//抖音id
|
||
String shortName = data.getString("short_name");//抖音昵称
|
||
String end_time = data.getString("end_time");//抖音昵称
|
||
String accountDuration = functionExecute.getString("account_duration");//单账号时长(h)
|
||
String watchDurationMax = functionExecute.getString("watch_duration_max");//视频最大观看时长(s)
|
||
String watchDurationMin = functionExecute.getString("watch_duration_min");//视频最小观看时长(s)
|
||
String isRandGood = functionExecute.getString("is_rand_good");//是否随机点赞(1:是随机点赞,0:否)
|
||
if(isRandGood.equals("1")){
|
||
isRandGoodb = true;
|
||
}else {
|
||
isRandGoodb =false;
|
||
}
|
||
String isRandComment = functionExecute.getString("is_rand_comment");//是否随机评论(1:是随机评论,0:否)
|
||
if(isRandComment.equals("1")){
|
||
isRandCommentb = true;
|
||
}else {
|
||
isRandCommentb =false;
|
||
}
|
||
String isRandFollow = functionExecute.getString("is_rand_follow");//是否随机关注(1:是随机关注,0:否)
|
||
if(isRandFollow.equals("1")){
|
||
isRandFollowb = true;
|
||
}else {
|
||
isRandFollowb =false;
|
||
}
|
||
String maxFollow = functionExecute.getString("max_follow");//最大关注数
|
||
// String maxFollow = "30";//最大关注数
|
||
String andFollow = functionExecute.getString("and_follow");//加关关注数
|
||
String andFans = functionExecute.getString("and_fans");//加关粉丝数
|
||
String minWork = functionExecute.getString("min_work");//最小作品数
|
||
String maxWork = functionExecute.getString("max_work");//最大作品数(新)
|
||
String andFollowMax = functionExecute.getString("and_follow_max");//最大加关关注数(新)
|
||
String andFansMax = functionExecute.getString("and_fans_max");//最大加关粉丝数(新)
|
||
String maxWorkTime = functionExecute.getString("max_work_time");//最大作品时间(天)
|
||
String createTime = functionExecute.getString("create_time");//系统时间
|
||
String isRandForward = functionExecute.getString("is_rand_forward");//是否随机转发
|
||
String id = functionExecute.getString("id");//功能id
|
||
ChangLiang.short_id = shortId;//抖音id
|
||
ChangLiang.task_short_name = shortName;//任务抖音昵称
|
||
ChangLiang.task_id = taskId;//任务id
|
||
ChangLiang.id = id;//功能id
|
||
String gaizaotime = gaizaotime(end_time);
|
||
RecFollowBean recFollowBean = new RecFollowBean(accountDuration,watchDurationMin,watchDurationMax,isRandGoodb,isRandCommentb,isRandFollowb,maxFollow,andFollow,andFans,minWork,maxWorkTime,maxWork,andFollowMax,andFansMax,gaizaotime);
|
||
ProfileSpUtils.getInstance().saveProfile(recFollowBean);
|
||
Log.e("TIAOSHI###", "一键加关的数据解析成功");
|
||
//领取到任务开始执行,调接口通知后台
|
||
updateTaskStatus();
|
||
//执行帐号切换帐号
|
||
Log.e("TIAOSHI###", "开始执行帐号切换帐号");
|
||
AblStepHandler.getInstance().setStop(false);
|
||
startExecution(mContext, AblSteps.STEP_3);
|
||
daojishifour(35, funcType);
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
private String gaizaotime(String end_time) {
|
||
String nowString = DateUtils.getNowString();
|
||
String[] all = nowString.split(" ");
|
||
// Log.e("TIAOSHI###", nowString);
|
||
// Log.e("TIAOSHI###", "获得的抖音号==" + all[0]);
|
||
// Log.e("TIAOSHI###", "获得的抖音号==" + all[1]);
|
||
String xend_time = all[0]+" "+end_time;
|
||
//Log.e("TIAOSHI###", xend_time);
|
||
return xend_time;
|
||
}
|
||
|
||
private void tastJiexitwo(String body) {
|
||
Log.e("TIAOSHI###", "一键取关的数据开始解析");
|
||
//拿到这个功能类型,然后去解析数据。
|
||
try {
|
||
/**
|
||
* -- ----------------------------
|
||
*DROP TABLE IF EXISTS `t_sys_task_function_yjqg`;
|
||
* CREATE TABLE `t_sys_task_function_yjqg` (
|
||
* `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
|
||
* `task_id` varchar(32) NOT NULL COMMENT '任务id',
|
||
* `account_duration` int(11) DEFAULT '0' COMMENT '单账号时长(h)',
|
||
* `cancel_type` tinyint(2) DEFAULT '1' COMMENT '取消状态(1:取消已关 2:取消互关)',
|
||
* `cancel_num` int(11) DEFAULT '0' COMMENT '取关数',
|
||
* `cancel_gap_max` int(11) DEFAULT '0' COMMENT '最大取关间隔(s)',
|
||
* `cancel_gap_min` int(11) DEFAULT '0' COMMENT '最小取关间隔(s)',
|
||
* `min_cancel_num` int(11) DEFAULT '0' COMMENT '最小开始取关数',
|
||
* `save_fans` int(11) DEFAULT '0' COMMENT '互关保留粉丝数',
|
||
* `create_time` datetime DEFAULT NULL COMMENT '系统时间',
|
||
* PRIMARY KEY (`id`)
|
||
* ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='任务功能一键取关表';
|
||
*/
|
||
//拿到json字符串,假数据
|
||
// String JsonData = new GetJsonDataUtil().getJson(MainActivity.this, "quguan.json");//获取assets目录下的json文件数据
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
JSONObject data = jsonObject.getJSONObject("data");
|
||
String funcType = data.getString("func_type");
|
||
JSONObject functionExecute = data.getJSONObject("function_execute");
|
||
String taskId = data.getString("task_id");//任务id
|
||
String shortId = data.getString("short_id");//抖音id
|
||
String shortName = data.getString("short_name");//抖音昵称
|
||
functionExecute.getString("account_duration");//单账号时长(h)
|
||
String cancelType = functionExecute.getString("cancel_type");//取消状态(1:取消已关 2:取消互关)
|
||
String cancelNum = functionExecute.getString("cancel_num");//取关数
|
||
functionExecute.getString("cancel_gap_max");//最大取关间隔(s)
|
||
functionExecute.getString("cancel_gap_min");//最小取关间隔(s)
|
||
String minCancelNum = functionExecute.getString("min_cancel_num");//最小开始取关数
|
||
String saveFans = functionExecute.getString("save_fans");//互关保留粉丝数
|
||
functionExecute.getString("create_time");//系统时间
|
||
String id = functionExecute.getString("id");//功能id
|
||
ChangLiang.task_id = taskId;//任务id
|
||
ChangLiang.short_id = shortId;//抖音id
|
||
ChangLiang.task_short_name = shortName;//任务抖音昵称
|
||
ChangLiang.id = id;//功能id
|
||
if (valueOne.equals(cancelType)) {
|
||
ChangLiang.cancelclosed = true;
|
||
} else {
|
||
ChangLiang.cancelcrosscor = true;
|
||
}
|
||
ChangLiang.passnumber = cancelNum;
|
||
ChangLiang.swiinterval = "1";
|
||
ChangLiang.minthrthr = minCancelNum;
|
||
ChangLiang.minfans = saveFans;
|
||
Log.e("TIAOSHI###", "一键取关的数据解析成功");
|
||
//领取到任务开始执行,调接口通知后台
|
||
updateTaskStatus();
|
||
//执行帐号切换帐号
|
||
Log.e("TIAOSHI###", "执行帐号切换帐号");
|
||
startExecution(mContext, AblSteps.STEP_3);
|
||
daojishifour(30, funcType);
|
||
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
|
||
private void tastJiexithree(String body) {
|
||
Log.e("TIAOSHI###", "幢号的数据开始解析");
|
||
//拿到这个功能类型,然后去解析数据。
|
||
try {
|
||
//拿到json字符串,假数据
|
||
// String JsonData = new GetJsonDataUtil().getJson(MainActivity.this, "quguan.json");//获取assets目录下的json文件数据
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
JSONObject data = jsonObject.getJSONObject("data");
|
||
String funcType = data.getString("func_type");
|
||
JSONObject functionExecute = data.getJSONObject("function_execute");
|
||
String taskId = data.getString("task_id");//任务id
|
||
String shortId = data.getString("short_id");//抖音id
|
||
String shortName = data.getString("short_name");//抖音昵称
|
||
|
||
String accountDuration = functionExecute.getString("account_duration");//单账号时长
|
||
String touchNum = functionExecute.getString("touch_num");//幢号数量
|
||
String ifQuguan = functionExecute.getString("if_quguan");//是否取关
|
||
ChangLiang.if_quguan = ifQuguan;//是否要先取关,0是要取关 1是不要取关
|
||
|
||
functionExecute.getString("create_time");//系统时间
|
||
String id = functionExecute.getString("id");//功能id
|
||
ChangLiang.task_id = taskId;//任务id
|
||
ChangLiang.short_id = shortId;//抖音id
|
||
ChangLiang.task_short_name = shortName;//任务抖音昵称
|
||
ChangLiang.id = id;//功能id
|
||
ChangLiang.account_duration = ChangLiang.account_duration;//功能id
|
||
ChangLiang.touch_num = touchNum;//功能id
|
||
|
||
Log.e("TIAOSHI###", "幢号的数据解析成功");
|
||
updateTaskStatus();
|
||
//如果当前登录的抖音号和后台指派任务的抖音号不一致
|
||
touchTask(touchNum, new MainActivity.Zhuanhaoretren() {
|
||
@Override
|
||
public void call(touchTaskBean urgentTaskBean, String success) {
|
||
if (valueZero.equals(success)) {
|
||
phoneNumber = urgentTaskBean.getData();
|
||
Log.e("TIAOSHI###", "幢号的数据解析成功个数==" + phoneNumber.size());
|
||
//存入本地数据库
|
||
for (int i = 0; i < phoneNumber.size(); i++) {
|
||
zhuanghaoBeanData zhuanghaoBeanData = phoneNumber.get(i);
|
||
if (null != zhanghaoDao.queryByCustom("Id", zhuanghaoBeanData.getId()) && zhanghaoDao.queryByCustom("Id", zhuanghaoBeanData.getId()).size() > 0) {
|
||
zhanghaoDao.updateData(zhuanghaoBeanData);
|
||
} else {
|
||
zhanghaoDao.addInsert(zhuanghaoBeanData);
|
||
}
|
||
}
|
||
//导入通讯录
|
||
ContactsHelp.getInstance(mContext).importContacts(phoneNumber);
|
||
//执行帐号切换帐号
|
||
startExecution(mContext, AblSteps.STEP_3);
|
||
daojishifour(30, funcType);
|
||
} else if (valueTwoF.equals(success)) {
|
||
Log.e("TIAOSHI###", "获取撞号账号==" + urgentTaskBean.getMsg());
|
||
//表示撞号结束,可以去请求其他任务
|
||
finishTask();
|
||
}
|
||
}
|
||
});
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
/**
|
||
* app每执行完一个任务成功后调取接口
|
||
*/
|
||
private void finishTask() {
|
||
final HttpParams paramsPost = new HttpParams();
|
||
paramsPost.put("short_id", ChangLiang.short_id);// 拿到的抖音id
|
||
paramsPost.put("task_id", ChangLiang.task_id);//拿到的任务id
|
||
paramsPost.put("id", ChangLiang.id);//功能id
|
||
paramsPost.put("task_type", ChangLiang.task_type);//拿到的任务类型 1:代表账号登录 2:停任务 3:代表紧急任务,4:代表固定任务
|
||
|
||
new NetApi().getPostData(paramsPost, HttpConstants.URi_device_Appscanlogin_FinishTask).subscribe(new com.fisherbone.fuzhu.okgonet.Observer<Response>() {
|
||
@Override
|
||
public void onNext(Response response) {
|
||
String body = (String) response.body();
|
||
try {
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
String msg = jsonObject.getString("msg");
|
||
String success = jsonObject.getString("success");
|
||
if (valueZero.equals(success)) {
|
||
Log.e("TIAOSHI###", "每执行完一个任务成功后调取接口==" + msg);
|
||
Log.e("TIAOSHI###", "任务执行完毕,领取新的任务。");
|
||
ChangLiang.isstarttwo = "0";
|
||
ChangLiang.isstart = "0";
|
||
fixedTask();
|
||
}
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onError(Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
});
|
||
}
|
||
/**
|
||
* 固定任务(当前任务执行完请求下一个任务接口)
|
||
* 此处有一个核心逻辑,最后三个参数,传值分两种情况,一、如果来的紧急任务是一个停任务,那么就传空。二、如果来的紧急任务是一个其它任务。那么就传值
|
||
*/
|
||
private void fixedTask() {
|
||
if (valueTwo.equals(ChangLiang.task_type)) {
|
||
Log.e("TIAOSHI###", "执行了传值分两种情况第一种情况");
|
||
final HttpParams paramsPost = new HttpParams();
|
||
paramsPost.put("short_id", ChangLiang.short_id);// 拿到的抖音id
|
||
paramsPost.put("task_id", ChangLiang.task_id);//拿到的任务id
|
||
paramsPost.put("id", ChangLiang.id);//功能id
|
||
paramsPost.put("task_type", ChangLiang.task_type);//拿到的任务类型 1:代表账号登录 2:停任务 3:代表紧急任务,4:代表固定任务
|
||
paramsPost.put("urgent_short_id", "");//未处理完成紧急任务抖音id
|
||
paramsPost.put("urgent_task_id", "");//未处理完成紧急任务id
|
||
paramsPost.put("urgent_id", "");// 未处理完成紧急功能id
|
||
paramsPost.put("fixed_short_id", "");//未处理完成固定任务抖音id
|
||
paramsPost.put("fixed_task_id", "");//未处理完成固定任务id
|
||
paramsPost.put("fixed_id", "");//未处理完成固定功能id
|
||
new NetApi().getPostData(paramsPost, HttpConstants.URi_device_Appscanlogin_fixedTask).subscribe(new com.fisherbone.fuzhu.okgonet.Observer<Response>() {
|
||
@Override
|
||
public void onNext(Response response) {
|
||
String body = (String) response.body();
|
||
UrgentTaskBean urgentTaskBean = JsonUtils.fromJson(body, UrgentTaskBean.class);
|
||
int success = urgentTaskBean.getSuccess();
|
||
if (success == 0) {
|
||
//初始化5秒的接口参数
|
||
ChangLiang.task_id = "";//当前执行任务id
|
||
ChangLiang.id = "";//当前执行任务功能id
|
||
ChangLiang.task_type = "";//当前执行任务类型
|
||
}
|
||
startTask(body);
|
||
}
|
||
|
||
@Override
|
||
public void onError(Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
});
|
||
} else {
|
||
final HttpParams paramsPost = new HttpParams();
|
||
paramsPost.put("short_id", ChangLiang.short_id);// 拿到的抖音id
|
||
paramsPost.put("task_id", ChangLiang.task_id);//拿到的任务id
|
||
paramsPost.put("id", ChangLiang.id);//功能id
|
||
paramsPost.put("task_type", ChangLiang.task_type);//拿到的任务类型 1:代表账号登录 2:停任务 3:代表紧急任务,4:代表固定任务
|
||
paramsPost.put("urgent_short_id", ChangLiang.short_id_jf);//未处理完成紧急任务抖音id
|
||
paramsPost.put("urgent_task_id", ChangLiang.task_id_jf);//未处理完成紧急任务id
|
||
paramsPost.put("urgent_id", ChangLiang.id_jf);// 未处理完成紧急功能id
|
||
paramsPost.put("fixed_short_id", ChangLiang.short_id_f);//未处理完成固定任务抖音id
|
||
paramsPost.put("fixed_task_id", ChangLiang.task_id_f);//未处理完成固定任务id
|
||
paramsPost.put("fixed_id", ChangLiang.id_f);//未处理完成固定功能id
|
||
new NetApi().getPostData(paramsPost, HttpConstants.URi_device_Appscanlogin_fixedTask).subscribe(new com.fisherbone.fuzhu.okgonet.Observer<Response>() {
|
||
@Override
|
||
public void onNext(Response response) {
|
||
String body = (String) response.body();
|
||
startTask(body);
|
||
}
|
||
|
||
@Override
|
||
public void onError(Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
private void tastJiexifive(String body) {
|
||
Log.e("TIAOSHI###", "抢红包的数据开始解析");
|
||
/**
|
||
* -- 直播间抢抖币
|
||
* {
|
||
* "success": 4,
|
||
* "msg": "执行固定任务",
|
||
* "data": {
|
||
* "task_type": "4", -- 固定任务
|
||
* "short_id": "tangjie0501", -- 抖音号
|
||
* "short_name": "软件工程师蝴蝶剑", -- 抖音名称
|
||
* "task_id": "3000def9108812dbd2df76980516532e", -- 任务id
|
||
* "start_time": "09:00:00", -- 开始时间
|
||
* "end_time": "16:00:00", -- 结束时间
|
||
* "create_time": "2021-01-12 18:31:22", -- 创建时间
|
||
* "function_execute": {
|
||
* "id": 1, -- 任务功能id
|
||
* "task_id": "3000def9108812dbd2df76980516532e", -- 任务id
|
||
* "account_duration": 2, -- 单账号时长(h)
|
||
* "live_num": 10, -- 直播间个数
|
||
* "change_time": 3, -- 切换时间设置(s)
|
||
* "live_speech": 1, -- 直播间话术是否开启 1:开启 0:关闭'
|
||
* "live_click": 1, -- 是否点赞 1:是 0:否
|
||
* "grab_lucky_bag": 1, -- 是否抢福袋 1:是 0:否
|
||
* "bag_min_coin": 1, -- 抢福袋时,抖币的最小数字,小于则不参与
|
||
* "grab_red_envelopes": 1, -- 是否抢红包 1:是 0:否
|
||
* "red_min_coin": 1, -- 抢红包时,抖币的最小数字,大于参与
|
||
* "create_time": "2021-07-01 10:48:37", -- 创建时间
|
||
* "task_type": 1, -- 任务类型(1:固定 0:临时)
|
||
* "if_quguan": 1, -- 0:要取关,1:不要取关
|
||
* "touch_num": "0" -- 撞号数量
|
||
* },
|
||
* "func_type": "5" -- 任务功能是直播间抢抖币* }
|
||
* }
|
||
*/
|
||
//拿到这个功能类型,然后去解析数据。
|
||
try {
|
||
//拿到json字符串,假数据
|
||
// String JsonData = new GetJsonDataUtil().getJson(MainActivity.this, "quguan.json");//获取assets目录下的json文件数据
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
JSONObject data = jsonObject.getJSONObject("data");
|
||
String createTime =data.getString("create_time");
|
||
String endTime =data.getString("end_time");
|
||
String startTime =data.getString("start_time");
|
||
String funcType = data.getString("func_type");
|
||
String taskId = data.getString("task_id");//任务id
|
||
String shortId = data.getString("short_id");//抖音id
|
||
String shortName = data.getString("short_name");//抖音昵称
|
||
String taskType = data.getString("task_type");//固定任务
|
||
|
||
JSONObject functionExecute = data.getJSONObject("function_execute");
|
||
String id = functionExecute.getString("id");//单账号时长(h)
|
||
String accountDuration = functionExecute.getString("account_duration");//单账号时长(h)
|
||
String liveNum = functionExecute.getString("live_num");//直播间个数
|
||
String changeTime = functionExecute.getString("change_time");//直播间切换时间
|
||
String redMinCoin = functionExecute.getString("red_min_coin");//抢红包时,抖币的最小数字,大于参与
|
||
String liveSpeech = functionExecute.getString("live_speech");//直播间话术是否开启 1:开启 0:关闭'
|
||
String liveClick = functionExecute.getString("live_click");//是否点赞 1:是 0:否
|
||
String grabRedEnvelopes = functionExecute.getString("grab_red_envelopes");//是否抢红包 1:是 0:否
|
||
|
||
|
||
ChangLiang.task_id = taskId;//任务id
|
||
ChangLiang.short_id = shortId;//抖音id
|
||
ChangLiang.task_short_name = shortName;//任务抖音昵称
|
||
ChangLiang.task_type = taskType;//固定任务
|
||
ChangLiang.id = id;//功能id
|
||
ChangLiang.func_type = funcType;//功能id
|
||
String gaizaotime = gaizaotime(endTime);
|
||
RedEnvBean redEnvBean = new RedEnvBean();
|
||
redEnvBean.setEndtime(gaizaotime);
|
||
String accountduration = Integer.parseInt(accountDuration)*60+"";
|
||
// String accountduration = Integer.parseInt(accountDuration)+"";
|
||
redEnvBean.setRuntime(accountduration);
|
||
redEnvBean.setLivenum(liveNum);
|
||
String changetime = Integer.parseInt(changeTime)+"";
|
||
redEnvBean.setQiehuantime(changetime);
|
||
redEnvBean.setDoubinum(redMinCoin);
|
||
if(valueOne.equals(liveSpeech)){
|
||
redEnvBean.setRedswitchone(true);
|
||
}else {
|
||
redEnvBean.setRedswitchone(false);
|
||
}
|
||
if(valueOne.equals(liveClick)){
|
||
redEnvBean.setRedswitchtwo(true);
|
||
}else {
|
||
redEnvBean.setRedswitchtwo(false);
|
||
}
|
||
if(valueOne.equals(grabRedEnvelopes)){
|
||
redEnvBean.setRedswitchthree(true);
|
||
}else {
|
||
redEnvBean.setRedswitchthree(false);
|
||
}
|
||
ProfileSpUtils.getInstance().saveRedEnvBean(redEnvBean);
|
||
Log.e("TIAOSHI###", "抢红包的数据解析成功");
|
||
//领取到任务开始执行,调接口通知后台
|
||
updateTaskStatus();
|
||
Log.e("TIAOSHI###", "执行帐号切换帐号");
|
||
startExecution(mContext, AblSteps.STEP_3);
|
||
daojishifour(30, funcType);
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
private void tastJiexisix(String body) {
|
||
Log.e("TIAOSHI###", "抢红包的数据开始解析");
|
||
/**
|
||
-- 直播间加热
|
||
{
|
||
"success": 4,
|
||
"msg": "执行固定任务",
|
||
"data": {
|
||
"task_type": "4", -- 固定任务
|
||
"short_id": "tangjie0501", -- 抖音id
|
||
"short_name": "软件工程师蝴蝶剑", -- 抖音名
|
||
"task_id": "3000def9108812dbd2df76980516532e", -- 任务id
|
||
"start_time": "09:00:00",-- 开始时间
|
||
"end_time": "16:00:00", -- 结束时间
|
||
"create_time": "2021-01-12 18:31:22", -- 创建时间
|
||
"function_execute": {
|
||
"id": 1, -- 任务功能id
|
||
"task_id": "3000def9108812dbd2df76980516532e", -- 任务id
|
||
"account_duration": 1, -- 单账号时长(h)
|
||
"live_nickname": "12", -- 加热直播间抖音昵称
|
||
"live_come": 1, -- 进直播间方式 1:直播广场 2:关注列表
|
||
"live_speech": 1, -- 直播间话术是否开启 1:开启 0:关闭
|
||
"live_click": 0, -- 是否点赞 1:是 0:否
|
||
"live_documentary": 1, -- 直播间跟单 1:是 0:否
|
||
"fans_gift": 1, -- 优先粉丝团礼物 1:是 0:否
|
||
"fans_gift_type": 1, -- 礼物类型 1:固定礼物 2:全部礼物
|
||
"gift_heart": 1, -- 心心相吸的个数
|
||
"gift_time_min": 3, -- 随机间隔时间的最小时间(分)
|
||
"gift_time_max": 10, -- 随机间隔时间的最大时间(分)
|
||
"grab_lucky_bag": 1, -- 是否抢福袋 1:是 0:否
|
||
"bag_min_coin": 1, -- 抢福袋时,抖币的最小数字,小于则不参与
|
||
"grab_red_envelopes": 1, -- 是否抢红包 1:是 0:否
|
||
"red_min_coin": 2, -- 抢红包时,抖币的最小数字,大于参与
|
||
"create_time": "2021-07-01 10:50:51", -- 创建事假
|
||
"task_type": 1, -- 任务类型(1:固定 0:临时)
|
||
"if_quguan": 1, -- 0:要取关,1:不要取关
|
||
"touch_num": "0" -- -- 撞号数量
|
||
},
|
||
"func_type": "6" -- 任务功能是直播间加热
|
||
}
|
||
}
|
||
*/
|
||
//拿到这个功能类型,然后去解析数据。
|
||
try {
|
||
//拿到json字符串,假数据
|
||
// String JsonData = new GetJsonDataUtil().getJson(MainActivity.this, "quguan.json");//获取assets目录下的json文件数据
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
JSONObject data = jsonObject.getJSONObject("data");
|
||
String createTime =data.getString("create_time");
|
||
String endTime =data.getString("end_time");
|
||
String startTime =data.getString("start_time");
|
||
String funcType = data.getString("func_type");
|
||
String taskId = data.getString("task_id");//任务id
|
||
String shortId = data.getString("short_id");//抖音id
|
||
String shortName = data.getString("short_name");//抖音昵称
|
||
String taskType = data.getString("task_type");//固定任务
|
||
|
||
JSONObject functionExecute = data.getJSONObject("function_execute");
|
||
String id = functionExecute.getString("id");//-- 任务功能id
|
||
String taskId1 = functionExecute.getString("task_id");//-- 任务id
|
||
String accountDuration = functionExecute.getString("account_duration");//单账号时长(h)
|
||
String liveNickname = functionExecute.getString("live_nickname");//-- 加热直播间抖音昵称
|
||
String liveCome = functionExecute.getString("live_come");//-- -- 进直播间方式 1:直播广场 2:关注列表
|
||
String liveSpeech = functionExecute.getString("live_speech");// -- 直播间话术是否开启 1:开启 0:关闭
|
||
String liveClick = functionExecute.getString("live_click");// -- 是否点赞 1:是 0:否
|
||
String liveDocumentary = functionExecute.getString("live_documentary");// -- 直播间跟单 1:是 0:否
|
||
String fansGift = functionExecute.getString("fans_gift");// -- 优先粉丝团礼物 1:是 0:否
|
||
String fansGiftType = functionExecute.getString("fans_gift_type");// -- 礼物类型 1:固定礼物 2:全部礼物
|
||
String giftHeart = functionExecute.getString("gift_heart");// -- 心心相吸的个数
|
||
String giftTimeMin = functionExecute.getString("gift_time_min");// -- 随机间隔时间的最小时间(分)
|
||
String giftTimeMax = functionExecute.getString("gift_time_max");// -- 随机间隔时间的最大时间(分)
|
||
String grabLuckyBag = functionExecute.getString("grab_lucky_bag");// -- 是否抢福袋 1:是 0:否
|
||
String bagMinCoin = functionExecute.getString("bag_min_coin");// -- 抢福袋时,抖币的最小数字,小于则不参与
|
||
String grabRedEnvelopes = functionExecute.getString("grab_red_envelopes");// -- 是否抢红包 1:是 0:否
|
||
String redMinCoin = functionExecute.getString("red_min_coin");//-- 抢红包时,抖币的最小数字,大于参与
|
||
String ifQuguan = functionExecute.getString("if_quguan");//-- 0:要取关,1:不要取关
|
||
String touchNum = functionExecute.getString("touch_num");//-- 撞号数量
|
||
|
||
ChangLiang.task_id = taskId;//任务id
|
||
ChangLiang.short_id = shortId;//抖音id
|
||
ChangLiang.task_short_name = shortName;//任务抖音昵称
|
||
ChangLiang.task_type = taskType;//固定任务
|
||
ChangLiang.id = id;//功能id
|
||
String gaizaotime = gaizaotime(endTime);
|
||
|
||
LiveBean liveBean = new LiveBean();
|
||
liveBean.setEndtime(gaizaotime);
|
||
liveBean.setDouyinhao(liveNickname);
|
||
String accountduration = Integer.parseInt(accountDuration)*60+"";
|
||
liveBean.setZhibomin(accountduration);
|
||
if(valueOne.equals(liveSpeech)){
|
||
liveBean.setSwitchone(true);
|
||
}else {
|
||
liveBean.setSwitchone(false);
|
||
}
|
||
if(valueOne.equals(liveClick)){
|
||
liveBean.setSwitchtwo(true);
|
||
}else {
|
||
liveBean.setSwitchtwo(false);
|
||
}
|
||
if(valueOne.equals(liveDocumentary)){
|
||
liveBean.setSwitchthree(true);
|
||
}else {
|
||
liveBean.setSwitchthree(false);
|
||
}
|
||
if(valueOne.equals(fansGift)){
|
||
liveBean.setSwitchfive(true);
|
||
}else {
|
||
liveBean.setSwitchfive(false);
|
||
}
|
||
|
||
ProfileSpUtils.getInstance().saveLiveBean(liveBean);
|
||
Log.e("TIAOSHI###", "直播间加热的数据解析成功");
|
||
//领取到任务开始执行,调接口通知后台
|
||
updateTaskStatus();
|
||
//执行帐号切换帐号
|
||
Log.e("TIAOSHI###", "执行帐号切换帐号");
|
||
startExecution(mContext, AblSteps.STEP_3);
|
||
daojishifour(30, funcType);
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
private void tastJiexidenglu(String body) {
|
||
//拿到这个功能类型,然后去解析数据。
|
||
try {
|
||
//拿到json字符串,假数据
|
||
// String JsonData = new GetJsonDataUtil().getJson(MainActivity.this, "denglu.json");//获取assets目录下的json文件数据
|
||
JSONObject jsonObject = new JSONObject(body);
|
||
JSONObject data = jsonObject.getJSONObject("data");
|
||
String phone = data.getString("phone");
|
||
ChangLiang.phonenum = phone;
|
||
// ChangLiang.tasktype = 1;
|
||
ChangLiang.task_type = "1";
|
||
updateTaskStatus();
|
||
AblUtil.addSuspensionWindowView(mContext, controlWindow.initWindowView("4"));
|
||
} catch (JSONException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 停任务的倒计时
|
||
*
|
||
* @param a
|
||
*/
|
||
private void taskdaojishi(final int a) {
|
||
//启动计时器
|
||
//从0开始发射11个数字为:0-10依次输出,延时0s执行,每1s发射一次。
|
||
mdDisposable = Flowable.intervalRange(0, a + 1, 0, 1, TimeUnit.SECONDS)
|
||
.observeOn(AndroidSchedulers.mainThread())
|
||
.doOnNext(new Consumer<Long>() {
|
||
@Override
|
||
public void accept(Long aLong) throws Exception {
|
||
long b = a - aLong;
|
||
Log.e("TIAOSHI###", b + "");
|
||
}
|
||
})
|
||
.doOnComplete(new Action() {
|
||
@Override
|
||
public void run() throws Exception {
|
||
AblStepHandler.getInstance().setStop(false);
|
||
// StartExecution(MainActivity.this, AblSteps.STEP_109);
|
||
Log.e("TIAOSHI###", "开始执行关闭抖音程序");
|
||
startExecution(mContext, AblSteps.STEP_192);
|
||
}
|
||
})
|
||
.subscribe();
|
||
}
|
||
|
||
|
||
/**
|
||
* 开始执行
|
||
*/
|
||
public void startExecution(Context context,int arg) {
|
||
if (AblUtil.isAccessibilityServiceOpen(context)) {
|
||
AblStepHandler.getInstance().setStop(false);
|
||
AblStepHandler.sendMsg(arg);
|
||
} else {
|
||
ToastUtils.showShort("点到了");
|
||
ToastUtils.showShort("请先开启辅助服务");
|
||
AblUtil.openAccessibilitySettings();
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 获取撞号账号
|
||
* 如果{"success":-2,"msg":"暂无需要撞号的账号"}停止撞号任务
|
||
*/
|
||
private void touchTask(String touchNum, MainActivity.Zhuanhaoretren zhuanhaoretren) {
|
||
final HttpParams paramsPost = new HttpParams();
|
||
paramsPost.put("short_id", ChangLiang.short_id);// 拿到的抖音id
|
||
paramsPost.put("touch_num", touchNum);//功能id
|
||
new NetApi().getPostData(paramsPost, HttpConstants.URi_device_Appscanlogin_touchTask).subscribe(new com.fisherbone.fuzhu.okgonet.Observer<Response>() {
|
||
@Override
|
||
public void onNext(Response response) {
|
||
String body = (String) response.body();
|
||
touchTaskBean urgentTaskBean = JsonUtils.fromJson(body, touchTaskBean.class);
|
||
int success = urgentTaskBean.getSuccess();
|
||
zhuanhaoretren.call(urgentTaskBean, urgentTaskBean.getSuccess() + "");
|
||
}
|
||
|
||
@Override
|
||
public void onError(Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 倒计时开始执行任务
|
||
*
|
||
* @param a
|
||
*/
|
||
private void daojishifour(final int a, String funcType) {
|
||
//启动计时器
|
||
//从0开始发射11个数字为:0-10依次输出,延时0s执行,每1s发射一次。
|
||
mdDisposable = Flowable.intervalRange(0, a + 1, 0, 1, TimeUnit.SECONDS)
|
||
.observeOn(AndroidSchedulers.mainThread())
|
||
.doOnNext(new Consumer<Long>() {
|
||
@Override
|
||
public void accept(Long aLong) throws Exception {
|
||
long b = a - aLong;
|
||
Log.e("TIAOSHI###", b + "");
|
||
}
|
||
})
|
||
.doOnComplete(new Action() {
|
||
@Override
|
||
public void run() throws Exception {
|
||
//先判断无障碍是否开启
|
||
Log.e("TIAOSHI###", "temp3");
|
||
AblUtil.addSuspensionWindowView(mContext, controlWindow.initWindowView(funcType));
|
||
}
|
||
})
|
||
.subscribe();
|
||
}
|
||
}
|