Forráskód Böngészése

连续任务逻辑修改

zengjiebin 7 éve
szülő
commit
ca21aff404

+ 15 - 14
app/src/main/java/com/sheep/gamegroup/helper/TaskHelper.java

@@ -412,6 +412,13 @@ public class TaskHelper {
 
     /**
      * 设置当前子任务为选中状态
+     1、 任务未开启时——即将开启
+     2、 任务未领取时——可领取
+     3、 任务已领取待完成时——进行中
+     4、 任务已提交待审核——待审核
+     5、 任务审核通过——已完成
+     6、 任务审核失败——审核失败
+     7、任务已过期未完成——已过期
      * @param taskEty
      */
     public static void setSelectFlag(TaskEty taskEty) {
@@ -421,27 +428,21 @@ public class TaskHelper {
         TaskChild selectTaskChild = null;
         outFor: for (TaskChild taskChild : taskChildList) {
             switch (taskChild.getStatus()){
-                case 0:
-                case 1:
                 case 2:
                 case 3:
-                case 4:
-                case 6:
+                case 6://找到可领取或者进行中或者审核失败则直接退出循环
                     selectTaskChild = taskChild;
                     break outFor;
+                case 0:
+                case 1:
+                case 4:
+                case 5:
+                    if(selectTaskChild == null)
+                        selectTaskChild = taskChild;
+                    break;
             }
         }
         if(selectTaskChild != null)
             selectTaskChild.setSelectFlag(true);
-
-    /*
-    1、 任务未开启时——即将开启
-2、 任务未领取时——可领取
-3、 任务已领取待完成时——进行中
-4、 任务已提交待审核——待审核
-5、 任务审核通过——已完成
-6、 任务审核失败——审核失败
-7、任务已过期未完成——已过期
-     */
     }
 }

+ 12 - 3
app/src/main/java/com/sheep/gamegroup/model/entity/TaskChild.java

@@ -19,7 +19,8 @@ public class TaskChild implements Serializable {
     private String EndTime;//1530115200,
     private String Desc;//"<p>阿斯顿发射的发</p>",
     private String Amount;//1,
-    private String Id;//8,
+    private int Id;//8,
+    private int already_accepted_task_id;//8,
     private String task_id;//161,
     private String Time;//0,
     private String Name;//"212312311111111",
@@ -148,11 +149,11 @@ public class TaskChild implements Serializable {
         Amount = amount;
     }
 
-    public String getId() {
+    public int getId() {
         return Id;
     }
 
-    public void setId(String id) {
+    public void setId(int id) {
         Id = id;
     }
 
@@ -188,6 +189,14 @@ public class TaskChild implements Serializable {
         TaskType = taskType;
     }
 
+    public int getAlready_accepted_task_id() {
+        return already_accepted_task_id;
+    }
+
+    public void setAlready_accepted_task_id(int already_accepted_task_id) {
+        this.already_accepted_task_id = already_accepted_task_id;
+    }
+
     /**
      * 重组desc字段
      * @param desc

+ 151 - 11
app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java

@@ -1,5 +1,6 @@
 package com.sheep.gamegroup.model.entity;
 
+import android.support.annotation.IntDef;
 import android.text.TextUtils;
 
 import com.alibaba.fastjson.JSONArray;
@@ -8,6 +9,8 @@ import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.util.ListUtil;
 
 import java.io.Serializable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.List;
 
 /**
@@ -330,17 +333,6 @@ public class TaskEty implements Serializable, IDownload {
         return task_type != 2 && task_type != 4;//// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思
     }
 
-    public boolean hasChildInReview() {
-        if(!ListUtil.isEmpty(child)){
-            for (TaskChild taskChild : child) {
-                if(taskChild != null && taskChild.getStatus() == 4){//只要有一个子任务在审核中,就返回true
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
     /**
      * 重组desc字段
      * @param desc
@@ -433,4 +425,152 @@ public class TaskEty implements Serializable, IDownload {
         }
     }
 
+    /**
+     * 获取当前可领取子任务的id
+     *
+     1、 任务未开启时——即将开启
+     2、 任务未领取时——可领取
+     3、 任务已领取待完成时——进行中
+     4、 任务已提交待审核——待审核
+     5、 任务审核通过——已完成
+     6、 任务审核失败——审核失败
+     7、任务已过期未完成——已过期
+     * @return
+     */
+    public int getCanAcceptedChildId() {
+        if(!ListUtil.isEmpty(child)){
+            for (TaskChild taskChild : child) {
+                switch (taskChild.getStatus()) {
+                    case 2:
+                        return taskChild.getId();
+                }
+            }
+        }
+        return -1;
+    }
+    /**
+     * 获取正在进行中的子任务的id
+     *
+     1、 任务未开启时——即将开启
+     2、 任务未领取时——可领取
+     3、 任务已领取待完成时——进行中
+     4、 任务已提交待审核——待审核
+     5、 任务审核通过——已完成
+     6、 任务审核失败——审核失败
+     7、任务已过期未完成——已过期
+     * @return
+     */
+    public int getRunningChildId() {
+        if(!ListUtil.isEmpty(child)){
+            for (TaskChild taskChild : child) {
+                switch (taskChild.getStatus()) {
+                    case 3:
+                        return taskChild.getId();
+                }
+            }
+        }
+        return -1;
+    }
+    /**
+     * 获取正在进行中的子任务的id
+     *
+     1、 任务未开启时——即将开启
+     2、 任务未领取时——可领取
+     3、 任务已领取待完成时——进行中
+     4、 任务已提交待审核——待审核
+     5、 任务审核通过——已完成
+     6、 任务审核失败——审核失败
+     7、任务已过期未完成——已过期
+     * @return
+     */
+    public int getFailChildPosition() {
+        if(!ListUtil.isEmpty(child)){
+            int i = 0;
+            for (TaskChild taskChild : child) {
+                switch (taskChild.getStatus()) {
+                    case STATUS_FAIL:
+                        return i;
+                }
+                i++;
+            }
+        }
+        return -1;
+    }
+    public static final int STATUS_RUNNING = 3;//进行中
+    public static final int STATUS_FAIL= 6;//审核失败
+
+
+    @IntDef({STATUS_RUNNING, STATUS_FAIL})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface STATUS {
+    }
+    /**
+     * 根据状态获取当前第一个可提交子任务的already_accepted_task_id
+     *
+     1、 任务未开启时——即将开启
+     2、 任务未领取时——可领取
+     3、 任务已领取待完成时——进行中
+     4、 任务已提交待审核——待审核
+     5、 任务审核通过——已完成
+     6、 任务审核失败——审核失败
+     7、任务已过期未完成——已过期
+     * @return
+     */
+    public int getCanCommitChildRelease_task_id(@STATUS int status) {
+        if(!ListUtil.isEmpty(child)){
+            for (TaskChild taskChild : child) {
+                if(status == taskChild.getStatus()){
+                    return taskChild.getAlready_accepted_task_id();
+                }
+            }
+        }
+        return -1;
+    }
+    /**
+     * 获取当前第一个可提交子任务的already_accepted_task_id
+     *
+     1、 任务未开启时——即将开启
+     2、 任务未领取时——可领取
+     3、 任务已领取待完成时——进行中
+     4、 任务已提交待审核——待审核
+     5、 任务审核通过——已完成
+     6、 任务审核失败——审核失败
+     7、任务已过期未完成——已过期
+     * @return
+     */
+    public int getCanCommitChildRelease_task_id() {
+        //先找审核失败的子任务
+        int commitScreenShotTaskId = getCanCommitChildRelease_task_id(TaskEty.STATUS_FAIL);
+        //再找进行中的子任务
+        if(commitScreenShotTaskId < 1){
+            commitScreenShotTaskId = getCanCommitChildRelease_task_id(TaskEty.STATUS_RUNNING);
+        }
+        return commitScreenShotTaskId;
+    }
+
+    /**
+     * 有子任务可以接受
+     * @return
+     */
+    public boolean hasChildCanAccepted() {
+        return getCanAcceptedChildId() > 0;
+    }
+    /**
+     * 有子任务正在进行中
+     * @return
+     */
+    public boolean hasChildRunning() {
+        return getRunningChildId() > 0;
+    }
+
+    /**
+     * 传入的上一次提交的id是最后一个子任务的already_accepted_task_id
+     * 或者传入的是一个普通任务的id
+     * @param lastCommitId
+     * @return
+     */
+    public boolean hasCommitLast(int lastCommitId) {
+        TaskChild taskChild = ListUtil.getLast(child);
+        return taskChild == null || taskChild.getAlready_accepted_task_id() == lastCommitId;
+    }
 }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -633,7 +633,7 @@ public class CommonUtil {
                 state = " (已完成 )";
                 break;
             case 6:
-                state = " (审核失败)";
+                state = " (审核失败,请重新上传截图)";
                 break;
             case 7:
                 state = " (已过期 )";

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -258,7 +258,7 @@ public class Jump2View {
                 }
 
                 if(userEntity != null && userEntity.canBindMobile()
-                    //&& !BuildConfig.DEBUG
+                    && !BuildConfig.DEBUG
                         ){//老用户没有绑定手机号
                     Jump2View.getInstance().goBindPhone(activity, 2);
                     return;
@@ -284,7 +284,7 @@ public class Jump2View {
                 }
 
                 if(userEntity != null && userEntity.canBindMobile()
-//                        && !BuildConfig.DEBUG
+                        && !BuildConfig.DEBUG
                         ){//老用户没有绑定手机号
                     Jump2View.getInstance().goBindPhone(activity, 1);
                     return;

+ 122 - 19
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -319,10 +319,68 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             bottom_btn_layout.setVisibility(View.GONE);
         }
 
+        switch (taskEty.getTask_type()){
+            case 1000://连续任务
+                if(taskEty.isAppAutoCommitTask()){
+                    setBottomState2();
+                } else {//非应用自动审核的连续任务
+                    setSuccessionTaskBottomState();
+                }
+                break;
+            default:
+                setBottomState2();
+                break;
+        }
+    }
+
+    /**
+     * 设置非自动审核的连续任务底部按钮的状态
+     */
+    private void setSuccessionTaskBottomState() {
+        int failChildPosition = taskEty.getFailChildPosition();//获取第一个审核失败子任务的位置
+        boolean hasChildFail = failChildPosition > -1;//有子任务审核失败
+        boolean hasChildRunning = taskEty.hasChildRunning();//有子任务正在进行
+        boolean hasChildCanAccepted = taskEty.hasChildCanAccepted();//有子任务处于可领取状态
+
+        if(!hasChildFail && !hasChildRunning && hasChildCanAccepted){//没有审核失败的子任务和正在进行的子任务且有子任务处于可领取状态
+            bottom_btn_layout.setVisibility(View.VISIBLE);
+            btnTaskItem.setVisibility(View.VISIBLE);
+            btnUpImag.setVisibility(View.GONE);
+            btnTaskItem.setEnabled(true);
+            btnTaskItem.setText("领取任务");
+        } else if(hasChildRunning){//有子任务正在进行
+            bottom_btn_layout.setVisibility(View.VISIBLE);
+            btnTaskItem.setVisibility(View.VISIBLE);
+            btnUpImag.setVisibility(View.VISIBLE);
+            btnTaskItem.setEnabled(true);
+            btnTaskItem.setText(CommonUtil.START_PLAY);
+            btnUpImag.setEnabled(true);
+            btnUpImag.setText("上传截图");
+
+            setBottomState();
+        } else if(hasChildFail) {
+            bottom_btn_layout.setVisibility(View.VISIBLE);
+            btnTaskItem.setVisibility(View.VISIBLE);
+            btnUpImag.setVisibility(View.VISIBLE);
+            btnTaskItem.setEnabled(true);
+            btnTaskItem.setText(CommonUtil.START_PLAY);
 
+            setBottomState();
+        } else {
+            setBottomState2();
+        }
+        if(hasChildFail){
+            btnUpImag.setText(String.format(Locale.CHINA, "重新上传截图(第%d天)", failChildPosition + 1));
+        }
+    }
+
+    /**
+     * 根据TaskAcceptedEty中的status来设置底部两个按钮的状态
+     */
+    private void setBottomState2() {
         if(gettaskAcceptedEty != null){// && taskEty.getTask_type() == 1000) {//连续任务
             if(!TextUtils.isEmpty(gettaskAcceptedEty.getScreenshots())) {
-//                detailTaskTv.setVisibility(View.VISIBLE);//不显示截图
+                //                detailTaskTv.setVisibility(View.VISIBLE);//不显示截图
             }
             switch (gettaskAcceptedEty.getStatus()) {
                 case 1://"已接受任务";
@@ -362,7 +420,10 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             }
         }
     }
-    //设置底部按钮状态
+
+    /**
+     * 正在进行的任务的状态设置
+     */
     private void setBottomState() {
         taskEty.setRunTask(1);
         setBtnStr(taskEty, mDownloadTaskService, new Action1<Object>(){
@@ -398,10 +459,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                                 btnUpImag.setVisibility(View.GONE);
                                 break;
                             case 2:
-                                if (taskEty.hasChildInReview()) {//只要有一个子任务在审核中,就不能进行其它操作
-                                    btnTaskItem.setEnabled(false);
-                                    btnTaskItem.setText("审核中");
-                                }
                                 if (type == DownloadTaskService.STATUS_INIT)
                                     btnUpImag.setVisibility(View.GONE);
                                 break;
@@ -617,6 +674,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                             CommonUtil.getInstance().reservationGameTask(activity, taskReleaseEty, new Action1<Integer>() {
                                 @Override
                                 public void call(Integer integer) {
+                                    isFresh = true;
                                     freshData();
                                 }
                             });
@@ -630,13 +688,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                             e.printStackTrace();
                         }
                     } else {//截图任务
-                        if(DataUtil.IS_USE_SCREEN_SHOT) {//小绵羊截图方案
-                            File dir = DataUtil.getInstance().getScreenShotsDir(taskEty.getPackage_names());
-                            showChooseDialog(false, true, DEFAULT_MAX_COUNT, dir);
-                        } else {//用户手动截图方案
-                            showChooseDialog(false, true, DEFAULT_MAX_COUNT);
-                        }
-                        UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_UPLOAD_PICTURE);
+                        commitScreenShot();
                     }
                     break;
                 case R.id.detail_share_friend_tv:
@@ -650,6 +702,31 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     }
 
     /**
+     * 发起选择图片来上传截图
+     */
+    private void commitScreenShot() {
+        switch (taskEty.getTask_type()){
+            case 1000://连续任务
+                commitScreenShotTaskId = taskEty.getCanCommitChildRelease_task_id();
+                break;
+            default:
+                commitScreenShotTaskId = taskReleaseEty.getAccepted_task_id() == 0 && gettaskAcceptedEty != null ? gettaskAcceptedEty.getId() : taskReleaseEty.getAccepted_task_id();
+                break;
+        }
+        if(commitScreenShotTaskId > 0) {
+            if (DataUtil.IS_USE_SCREEN_SHOT) {//小绵羊截图方案
+                File dir = DataUtil.getInstance().getScreenShotsDir(taskEty.getPackage_names());
+                showChooseDialog(false, true, DEFAULT_MAX_COUNT, dir);
+            } else {//用户手动截图方案
+                showChooseDialog(false, true, DEFAULT_MAX_COUNT);
+            }
+        } else {
+            G.showToast("暂无任务可以上传");
+        }
+        UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_UPLOAD_PICTURE);
+    }
+
+    /**
      * 尝试提交应用自动审核任务
      */
     private void checkAndCommitTask() {
@@ -672,6 +749,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
 
             object.put("task_time", runTime/1000);
             object.put("release_task_id", taskReleaseEty.getId());
+            addTaskChildId(object, taskEty);
             SheepApp.getInstance().getNetComponent().getApiService().commitAutoTask(object)
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())
@@ -703,6 +781,24 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     }
 
     /**
+     * 添加子任务id参数
+     * @param object
+     * @param taskEty
+     */
+    private void addTaskChildId(JSONObject object, TaskEty taskEty) {
+        switch (taskEty.getTask_type()){
+            case 1000://连续任务
+                int task_child_id = taskEty.getCanAcceptedChildId();
+                if(task_child_id < 1){
+                    G.showToast("暂无可以领取的任务");
+                    return;
+                }
+                object.put("task_child_id", task_child_id);
+                break;
+        }
+    }
+
+    /**
      * 任务进度
      */
     private void taskSchedule() {
@@ -764,10 +860,15 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             DataUtil.getInstance().clearScreenShots();
         }
 
-        if(isFromTaskList)//之前界面为任务记录界面,需要回调刷新任务记录列表
-            setResult(RESULT_OK);
         UMConfigUtils.finishTask();
-        finish();
+        if(taskEty.hasCommitLast(commitScreenShotTaskId)){//非自动审核任务中的连续任务已经提交了最后一个子任务,或者普通任务提交截图成功
+            if (isFromTaskList)//之前界面为任务记录界面,需要回调刷新任务记录列表
+                setResult(RESULT_OK);
+            finish();
+        } else {
+            isFresh = true;
+            freshData();
+        }
     }
 
     @Override
@@ -803,12 +904,12 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     protected void onGetImage(String path) {
 
     }
-
+    private int commitScreenShotTaskId;
     @Override
     protected void onSetNetImageUrl(String data) {
         setLoaddingText("提交中");
         JSONObject jsonObject = new JSONObject();
-        jsonObject.put("id", taskReleaseEty.getAccepted_task_id() == 0 && gettaskAcceptedEty != null ? gettaskAcceptedEty.getId() : taskReleaseEty.getAccepted_task_id());
+        jsonObject.put("id", commitScreenShotTaskId);
         jsonObject.put("screenshots", data + "");
         jsonObject.put("remark", /*taskEty.getRemarks() +*/ "");
         jsonObject.put("package_name", taskEty.getPackage_names() + "");
@@ -870,6 +971,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         JSONObject object = new JSONObject();
         object.put("device_id", DeviceUtil.getDeviceId(activity));
         object.put("release_task_id", taskReleaseEty.getId());
+        addTaskChildId(object, taskEty);
         SheepApp.getInstance()
                 .getNetComponent()
                 .getApiService()
@@ -1004,7 +1106,8 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     @Override
     protected void onResume() {
         super.onResume();
-        if (taskReleaseEty == null){
+        if (taskReleaseEty == null || isFresh){
+            isFresh = true;
             freshData();
         } else {
             updateBottom();

+ 4 - 4
app/src/main/java/com/sheep/gamegroup/view/adapter/TryMakeMoneyAdp.java

@@ -903,10 +903,10 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
     public boolean isEmpty() {
         switch (type){
             case 0://推荐任务
-
-                if(getmListDatas().get(0) != null
-                        && getmListDatas().get(0).getRecyleType() == RUN_TASK
-                        && ((List<TaskAcceptedEty>)getmListDatas().get(0).getDataObj()).size() > 0){
+                RecyleObj item;
+                if((item = ListUtil.getItem(getmListDatas(), 0)) != null
+                        && item.getRecyleType() == RUN_TASK
+                        && !ListUtil.isEmpty((List<TaskAcceptedEty>)item.getDataObj())){
                     return false;
                 }else {
                     return true;