Преглед изворни кода

Merge branch 'sheep_develop' of 10.8.230.114:xmy_android/small_sheep_android into sheep_develop

hanjing пре 7 година
родитељ
комит
cf19802689

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -264,6 +264,16 @@ public interface ApiService {
      */
      */
     @GET(ApiKey.GET_ALL_WELFARE)
     @GET(ApiKey.GET_ALL_WELFARE)
     Observable<BaseMessage> getAllWelfare(@Query("page") int page, @Query("per_page") int per_page);
     Observable<BaseMessage> getAllWelfare(@Query("page") int page, @Query("per_page") int per_page);
+    /**
+     * 获取游戏对应的福利
+     */
+    @GET(ApiKey.GET_ALL_WELFARE)
+    Observable<BaseMessage> getAppWelfare(@Query("page") int page, @Query("per_page") int per_page, @Query("app_id") int app_id);
+    /**
+     * 获取游戏福利专区中的全部福利
+     */
+    @GET(ApiKey.GET_MY_WELFARE)
+    Observable<BaseMessage> getMyWelfare(@Query("page") int page, @Query("per_page") int per_page);
 
 
     /**
     /**
      * 邀请赚钱
      * 邀请赚钱

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/model/entity/TaskAcceptedEty.java

@@ -207,7 +207,7 @@ public class TaskAcceptedEty implements Serializable{
     public static final int IS_SUCCESSION_ALL = 3;//所有
     public static final int IS_SUCCESSION_ALL = 3;//所有
     public static final int SHOW_GAME_TASK_NO = 0;//不获取游戏任务
     public static final int SHOW_GAME_TASK_NO = 0;//不获取游戏任务
     public static final int SHOW_GAME_TASK_YES = 1;//要获取游戏任务
     public static final int SHOW_GAME_TASK_YES = 1;//要获取游戏任务
-    //status  1,已接受任务 2,正在进行中,3完成任务,4放弃任务,5任务失败,6审核失败,7提交审核,8任务已下线,9至少完成了一个任务了
+    //status  1,已接受任务 2,正在进行中,3完成任务,4放弃任务,5任务失败,6审核失败,7提交审核,8任务已下线,9至少完成了一个任务了,10 已发放福利
     public static final int STATUS_ACCEPTED_TASK = 1;
     public static final int STATUS_ACCEPTED_TASK = 1;
     public static final int STATUS_RUNNING = 2;
     public static final int STATUS_RUNNING = 2;
     public static final int STATUS_FINISHED = 3;
     public static final int STATUS_FINISHED = 3;
@@ -217,6 +217,7 @@ public class TaskAcceptedEty implements Serializable{
     public static final int STATUS_SUBMIT = 7;
     public static final int STATUS_SUBMIT = 7;
     public static final int STATUS_OFF_LINE = 8;
     public static final int STATUS_OFF_LINE = 8;
     public static final int STATUS_AT_LEAST_COMPLETE_ONE = 9;
     public static final int STATUS_AT_LEAST_COMPLETE_ONE = 9;
+    public static final int STATUS_RELEASED_BENEFITS = 10;
     //canSubmit 失败或者下线后,是否可以再次提交截图 2 不可以 1 可以
     //canSubmit 失败或者下线后,是否可以再次提交截图 2 不可以 1 可以
     public static final int ALLOW_SUBMIT_NO = 2;
     public static final int ALLOW_SUBMIT_NO = 2;
     public static final int ALLOW_SUBMIT_YES = 1;
     public static final int ALLOW_SUBMIT_YES = 1;

+ 18 - 9
app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameGroupOrGameDetail.java

@@ -37,6 +37,7 @@ import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.module.game.adapter.AdpGameGroupGameCompare;
 import com.sheep.gamegroup.module.game.adapter.AdpGameGroupGameCompare;
 import com.sheep.gamegroup.module.game.fragment.FgtGameComment;
 import com.sheep.gamegroup.module.game.fragment.FgtGameComment;
 import com.sheep.gamegroup.module.game.fragment.FgtGameDetail;
 import com.sheep.gamegroup.module.game.fragment.FgtGameDetail;
+import com.sheep.gamegroup.module.game.fragment.FgtGameGift;
 import com.sheep.gamegroup.module.game.fragment.FgtGameWelfare;
 import com.sheep.gamegroup.module.game.fragment.FgtGameWelfare;
 import com.sheep.gamegroup.module.game.model.GameGroup;
 import com.sheep.gamegroup.module.game.model.GameGroup;
 import com.sheep.gamegroup.util.ApiUtil;
 import com.sheep.gamegroup.util.ApiUtil;
@@ -48,6 +49,7 @@ import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.RequestCodeConstants;
 import com.sheep.gamegroup.util.RequestCodeConstants;
+import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.TagListUtil;
 import com.sheep.gamegroup.util.TagListUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.viewHelper.LayoutParamsUtil;
 import com.sheep.gamegroup.util.viewHelper.LayoutParamsUtil;
@@ -96,6 +98,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     }
     }
 
 
     public static final String AUTO_DOWNLOAD = "auto_download";//自动下载的标识
     public static final String AUTO_DOWNLOAD = "auto_download";//自动下载的标识
+    public static final String KEY_HAS_WELFARE = "has_welfare";//有没有福利
 
 
     @Override
     @Override
     protected int getLayoutId() {
     protected int getLayoutId() {
@@ -163,6 +166,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         Intent intent = getIntent();
         Intent intent = getIntent();
         id = intent.getIntExtra("id", 0);
         id = intent.getIntExtra("id", 0);
         isAutoDownload = intent.getBooleanExtra(AUTO_DOWNLOAD, false);
         isAutoDownload = intent.getBooleanExtra(AUTO_DOWNLOAD, false);
+        boolean hasWelfare = intent.getBooleanExtra(KEY_HAS_WELFARE, false);//有没有福利
         gameGroup = DataUtil.getObject(intent, GameGroup.class);
         gameGroup = DataUtil.getObject(intent, GameGroup.class);
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
         //tagList
         //tagList
@@ -175,6 +179,12 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         fgtGameComment.setSmartRefreshLayout(refresh);
         fgtGameComment.setSmartRefreshLayout(refresh);
         fgtGameComment.setListAction1(fgtGameDetail);
         fgtGameComment.setListAction1(fgtGameDetail);
         mAdapter.add(fgtGameDetail, "详情");
         mAdapter.add(fgtGameDetail, "详情");
+        if(hasWelfare){
+            FgtGameWelfare fgtGameWelfare = FgtGameWelfare.newInstance(id);
+            fgtGameWelfare.setSmartRefreshLayout(refresh);
+            mAdapter.add(fgtGameWelfare, "福利");
+        }
+
         mAdapter.add(fgtGameComment, "评价");
         mAdapter.add(fgtGameComment, "评价");
         viewPager.setOffscreenPageLimit(mAdapter.getCount());
         viewPager.setOffscreenPageLimit(mAdapter.getCount());
         viewPager.setAdapter(mAdapter);
         viewPager.setAdapter(mAdapter);
@@ -259,7 +269,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         this.gameEntity = gameEntity;
         this.gameEntity = gameEntity;
         //更新关注状态
         //更新关注状态
         updateFocusTv();
         updateFocusTv();
-        tryInitWelfare();
+        tryInitGift();
         //更新评价数量
         //更新评价数量
         if (gameEntity.getApp().getComment_num() > 0) {
         if (gameEntity.getApp().getComment_num() > 0) {
             TabLayout.Tab tab = tabLayout.getTabAt(1);
             TabLayout.Tab tab = tabLayout.getTabAt(1);
@@ -334,17 +344,16 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         ViewUtil.setText(gc_game_app_detail_score_tv, NumberFormatUtils.retain1(score) + "分");
         ViewUtil.setText(gc_game_app_detail_score_tv, NumberFormatUtils.retain1(score) + "分");
     }
     }
 
 
-    private FgtGameWelfare fgtGameWelfare;
-
+    private FgtGameGift fgtGameGift;
     //重新初始化viewPager的数据
     //重新初始化viewPager的数据
-    private void tryInitWelfare() {
-        if (fgtGameWelfare != null || !gameEntity.isGift()) {
+    private void tryInitGift() {
+        if (fgtGameGift != null || !gameEntity.isGift()) {
             return;
             return;
         }
         }
-        fgtGameWelfare = FgtGameWelfare.newInstance(id);
-        fgtGameWelfare.setSmartRefreshLayout(refresh);
-        fgtGameWelfare.loadData(gameEntity);
-        mAdapter.add(fgtGameWelfare, "礼包");
+        fgtGameGift = FgtGameGift.newInstance(id);
+        fgtGameGift.setSmartRefreshLayout(refresh);
+        fgtGameGift.loadData(gameEntity);
+        mAdapter.add(fgtGameGift, "礼包");
         mAdapter.notifyDataSetChanged();
         mAdapter.notifyDataSetChanged();
         viewPager.setOffscreenPageLimit(mAdapter.getCount());
         viewPager.setOffscreenPageLimit(mAdapter.getCount());
     }
     }

+ 56 - 0
app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameWelfare.java

@@ -0,0 +1,56 @@
+package com.sheep.gamegroup.module.game.adapter;
+
+import android.support.annotation.Nullable;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.model.entity.Release_task;
+import com.sheep.gamegroup.model.entity.TaskEty;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import java.util.List;
+
+/**
+ * Created by realicing on 2019/3/28.
+ * realicing@sina.com
+ */
+public class AdpGameWelfare extends BaseQuickAdapter<Release_task, BaseViewHolder> {
+    public AdpGameWelfare(@Nullable List<Release_task> data) {
+        super(R.layout.item_all_welfare, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder holder, Release_task release_task) {
+        ImageView item_icon_iv = holder.itemView.findViewById(R.id.item_icon_iv);
+        ImageView item_level_iv = holder.itemView.findViewById(R.id.item_level_iv);
+        TextView item_name_tv = holder.itemView.findViewById(R.id.item_name_tv);
+        TextView item_time_tv = holder.itemView.findViewById(R.id.item_time_tv);
+        TextView item_info_tv = holder.itemView.findViewById(R.id.item_info_tv);
+        TextView item_value_tv = holder.itemView.findViewById(R.id.item_value_tv);
+//        TextView item_btn_tv = holder.itemView.findViewById(R.id.item_btn_tv);
+        TextView item_vip_tv = holder.itemView.findViewById(R.id.item_vip_tv);
+
+        if (release_task == null) {
+            return;
+        }
+        TaskEty taskEty = release_task.getTask();
+        if (taskEty == null) {
+            return;
+        }
+        ViewUtil.setGameImage(item_icon_iv, taskEty.getIcon());
+        ViewUtil.setImageLevel(item_level_iv, release_task.getLevel());
+        ViewUtil.setText(item_name_tv, release_task.getName());
+        ViewUtil.setText(item_time_tv, release_task.getRemainderTime());
+        ViewUtil.setText(item_info_tv, release_task.getWelfareInfo());
+        ViewUtil.setText(item_value_tv, release_task.getWelfareValue());
+        ViewUtil.setVisibility(item_vip_tv, release_task.isVipWelfare());
+        ViewUtil.setOnClickListener(holder.itemView, view -> Jump2View.getInstance().goEntity(release_task));
+    }
+}

+ 31 - 3
app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpMyWelfare.java

@@ -1,12 +1,15 @@
 package com.sheep.gamegroup.module.game.adapter;
 package com.sheep.gamegroup.module.game.adapter;
 
 
 import android.support.annotation.Nullable;
 import android.support.annotation.Nullable;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
 import com.sheep.gamegroup.model.entity.Release_task;
 import com.sheep.gamegroup.model.entity.Release_task;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.model.entity.TaskEty;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -28,7 +31,32 @@ public class AdpMyWelfare extends AdbCommonRecycler<TaskAcceptedEty> {
     }
     }
 
 
     @Override
     @Override
-    public void convert(ViewHolder holder, TaskAcceptedEty taskAcceptedEty) {
+    public void convert(ViewHolder holder, TaskAcceptedEty item) {
+
+        ImageView item_icon_iv = holder.itemView.findViewById(R.id.item_icon_iv);
+        ImageView item_level_iv = holder.itemView.findViewById(R.id.item_level_iv);
+        TextView item_name_tv = holder.itemView.findViewById(R.id.item_name_tv);
+        TextView item_time_tv = holder.itemView.findViewById(R.id.item_time_tv);
+        TextView item_info_tv = holder.itemView.findViewById(R.id.item_info_tv);
+        TextView item_value_tv = holder.itemView.findViewById(R.id.item_value_tv);
+//        TextView item_btn_tv = holder.itemView.findViewById(R.id.item_btn_tv);
+        TextView item_vip_tv = holder.itemView.findViewById(R.id.item_vip_tv);
+        Release_task release_task = item.getRelease_task();
+        if (release_task == null) {
+            return;
+        }
+        TaskEty taskEty = release_task.getTask();
+        if (taskEty == null) {
+            return;
+        }
+        ViewUtil.setGameImage(item_icon_iv, taskEty.getIcon());
+        ViewUtil.setImageLevel(item_level_iv, release_task.getLevel());
+        ViewUtil.setText(item_name_tv, release_task.getName());
+        ViewUtil.setText(item_time_tv, release_task.getRemainderTime());
+        ViewUtil.setText(item_info_tv, release_task.getWelfareInfo());
+        ViewUtil.setText(item_value_tv, release_task.getWelfareValue());
+        ViewUtil.setVisibility(item_vip_tv, release_task.isVipWelfare());
+        ViewUtil.setOnClickListener(holder.itemView, view -> Jump2View.getInstance().goEntity(release_task));
 
 
     }
     }
 }
 }

+ 154 - 0
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameGift.java

@@ -0,0 +1,154 @@
+package com.sheep.gamegroup.module.game.fragment;
+
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+
+import com.sheep.gamegroup.absBase.BaseRefreshLoadMoreFragment;
+import com.sheep.gamegroup.model.entity.Article;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.model.entity.GameInfoList;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.TestUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.AdpGcGameAppActivityRecommend;
+import com.sheep.gamegroup.view.adapter.AdpGcGameAppArticleRecommend;
+import com.sheep.gamegroup.view.adapter.AdpGcGameAppGiftBag;
+import com.sheep.gamegroup.view.adapter.AdpGcGameAppInfoList;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Created by realicing on 2019/1/22.
+ * realicing@sina.com
+ * 小绵羊3.4.10新增 -- 玩转游戏 礼包
+ */
+public class FgtGameGift extends BaseRefreshLoadMoreFragment {
+
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+
+    public static FgtGameGift newInstance(int appId) {
+        FgtGameGift fgt = new FgtGameGift();
+        fgt.appId = appId;
+        return fgt;
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.common_rv;
+    }
+
+
+    private ArrayList<GameInfoList> gameInfoListArrayList = ListUtil.emptyList();
+
+    @Override
+    public void onViewCreated() {
+        recyclerView.setHasFixedSize(true);
+        recyclerView.setNestedScrollingEnabled(false);
+        recyclerView.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
+        AdpGcGameAppInfoList adpGcGameAppInfoList = new AdpGcGameAppInfoList(gameInfoListArrayList);
+        adpGcGameAppInfoList.bindToRecyclerView(recyclerView);
+        adpGcGameAppInfoList.setEmptyView(R.layout.include_empty_view);
+
+        refreshData();
+        if(gameEntity != null){
+            loadGameData();
+        }
+    }
+
+    //加载游戏数据
+    private void loadGameData() {
+        if (gameEntity.isGift()) {
+            gameInfoListArrayList.add(new GameInfoList("礼包推荐", new AdpGcGameAppGiftBag(SheepApp.getInstance(), gameEntity.getHas_gift_bag(), gameEntity)).setSort(SORT_GIFT));
+        }
+        ViewUtil.notifyDataSetChanged(recyclerView);
+    }
+
+
+    private int appId;
+
+
+    private GameEntity gameEntity;
+    public void loadData(final GameEntity gameEntity) {
+        this.gameEntity = gameEntity;
+        if(recyclerView != null) {
+            loadGameData();
+        }
+    }
+
+    @Override
+    public void refreshData() {
+        ListUtil.removeItem(gameInfoListArrayList, new ListUtil.CallBack<GameInfoList, Boolean>() {
+            @Override
+            public Boolean call(GameInfoList gameInfoList) {
+                return gameInfoList.getSort() == SORT_ACTIVITY || gameInfoList.getSort() == SORT_ARTICLE;
+            }
+        });
+        ViewUtil.notifyDataSetChanged(recyclerView);
+        //文章推荐
+        SheepApp.getInstance().getNetComponent().getApiService().getDetailArticleRecommend(appId)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        List<Article> newList = baseMessage.getDatas(Article.class);
+                        if (!ListUtil.isEmpty(newList)) {
+                            gameInfoListArrayList.add(new GameInfoList("文章推荐", new AdpGcGameAppArticleRecommend(getContext(), newList)).setSort(SORT_ARTICLE));
+                            ViewUtil.notifyDataSetChanged(recyclerView);
+                        }
+                        refreshOrLoadMoreComplete();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        if (TestUtil.isDev()) G.showToast(baseMessage);
+                        refreshOrLoadMoreComplete();
+                    }
+                });
+        //活动推荐
+        SheepApp.getInstance().getNetComponent().getApiService().getDetailActivityRecommend(appId)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        List<Article> newList = baseMessage.getDatas(Article.class);
+                        if (!ListUtil.isEmpty(newList)) {
+                            gameInfoListArrayList.add(new GameInfoList("活动推荐", new AdpGcGameAppActivityRecommend(getContext(), newList)).setSort(SORT_ACTIVITY));
+                            ViewUtil.notifyDataSetChanged(recyclerView);
+                        }
+                        refreshOrLoadMoreComplete();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        if (TestUtil.isDev()) G.showToast(baseMessage);
+                        refreshOrLoadMoreComplete();
+                    }
+                });
+    }
+
+    @Override
+    public void loadMoreData() {
+        setNoMore(true);
+        refreshOrLoadMoreComplete();
+    }
+
+    //礼包推荐
+    public static final int SORT_GIFT = 1;
+    //文章推荐
+    public static final int SORT_ARTICLE = 2;
+    //活动推荐
+    public static final int SORT_ACTIVITY = 3;
+}

+ 97 - 68
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameWelfare.java

@@ -8,7 +8,12 @@ import com.sheep.gamegroup.model.entity.Article;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.GameInfoList;
 import com.sheep.gamegroup.model.entity.GameInfoList;
+import com.sheep.gamegroup.model.entity.Release_task;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.module.game.adapter.AdpAllWelfare;
+import com.sheep.gamegroup.module.game.adapter.AdpGameWelfare;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.ViewUtil;
@@ -20,6 +25,8 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 
+import org.afinal.simplecache.ApiKey;
+
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
@@ -27,9 +34,9 @@ import butterknife.BindView;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 import io.reactivex.schedulers.Schedulers;
 /**
 /**
- * Created by realicing on 2019/1/22.
+ * Created by realicing on 2019/3/28.
  * realicing@sina.com
  * realicing@sina.com
- * 小绵羊3.4.10新增 -- 玩转游戏 礼包
+ * 小绵羊3.5.3 新增 -- 玩转游戏 福利
  */
  */
 public class FgtGameWelfare extends BaseRefreshLoadMoreFragment {
 public class FgtGameWelfare extends BaseRefreshLoadMoreFragment {
 
 
@@ -48,106 +55,128 @@ public class FgtGameWelfare extends BaseRefreshLoadMoreFragment {
     }
     }
 
 
 
 
-    private ArrayList<GameInfoList> gameInfoListArrayList = ListUtil.emptyList();
+    private ArrayList<Release_task> list = ListUtil.emptyList();
 
 
     @Override
     @Override
     public void onViewCreated() {
     public void onViewCreated() {
         recyclerView.setHasFixedSize(true);
         recyclerView.setHasFixedSize(true);
         recyclerView.setNestedScrollingEnabled(false);
         recyclerView.setNestedScrollingEnabled(false);
         recyclerView.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
         recyclerView.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
-        AdpGcGameAppInfoList adpGcGameAppInfoList = new AdpGcGameAppInfoList(gameInfoListArrayList);
-        adpGcGameAppInfoList.bindToRecyclerView(recyclerView);
-        adpGcGameAppInfoList.setEmptyView(R.layout.include_empty_view);
+        AdpGameWelfare adapter = new AdpGameWelfare(list);
+        adapter.bindToRecyclerView(recyclerView);
+        adapter.setEmptyView(R.layout.include_empty_view);
+        initData();
+    }
 
 
-        refreshData();
-        if(gameEntity != null){
-            loadGameData();
-        }
+
+    private int appId;
+
+    public void initListener() {
     }
     }
 
 
-    //加载游戏数据
-    private void loadGameData() {
-        if (gameEntity.isGift()) {
-            gameInfoListArrayList.add(new GameInfoList("礼包推荐", new AdpGcGameAppGiftBag(SheepApp.getInstance(), gameEntity.getHas_gift_bag(), gameEntity)).setSort(SORT_GIFT));
-        }
-        ViewUtil.notifyDataSetChanged(recyclerView);
+    private boolean isFirstCache = false;//是否首先尝试缓存
+
+    //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
+    private void initData() {
+        isFirstCache = true;
+        setNoMore(false);
+        page = 1;
+        list.clear();
+        mInitData();
     }
     }
 
 
+    //强制刷新数据
+    public void refreshData() {
+        isFirstCache = false;
+        setNoMore(false);
+        page = 1;
+        list.clear();
+        mInitData();
+    }
 
 
-    private int appId;
 
 
+    public void loadMoreData() {
+        if (ListUtil.size(list) >= per_page * page) {
+            setNoMore(false);
+            page += 1;
+            //先加载缓存
+            getReleaseFromACache();
+            //再加载网络数据
+            getReleaseFromNetWork();
+        } else {
+            setNoMore(true);
+        }
+        notifyDataSetChanged();
+    }
+    private int page = 1;
+    private int per_page = DataUtil.PER_PAGE;
+
+    public void mInitData() {
 
 
-    private GameEntity gameEntity;
-    public void loadData(final GameEntity gameEntity) {
-        this.gameEntity = gameEntity;
-        if(recyclerView != null) {
-            loadGameData();
+        //先加载缓存
+        if(isFirstCache) {
+            getReleaseFromACache();
         }
         }
+        //再加载网络数据
+        getReleaseFromNetWork();
     }
     }
 
 
+    private int onResumeCount = 0;
+
     @Override
     @Override
-    public void refreshData() {
-        ListUtil.removeItem(gameInfoListArrayList, new ListUtil.CallBack<GameInfoList, Boolean>() {
-            @Override
-            public Boolean call(GameInfoList gameInfoList) {
-                return gameInfoList.getSort() == SORT_ACTIVITY || gameInfoList.getSort() == SORT_ARTICLE;
+    public void onResume() {
+        super.onResume();
+        if (onResumeCount > 0) {//直接全部刷新
+            initData();
+        }
+        onResumeCount++;
+    }
+
+
+    //从ACache获取发布的任务列表
+    private void getReleaseFromACache() {
+        try {
+            List<Release_task> cacheList = DataUtil.getInstance().getCacheList(getKey(), Release_task.class);
+            if(!ListUtil.isEmpty(cacheList)){
+                ListUtil.addAllItem(list, cacheList);
             }
             }
-        });
-        ViewUtil.notifyDataSetChanged(recyclerView);
-        //文章推荐
-        SheepApp.getInstance().getNetComponent().getApiService().getDetailArticleRecommend(appId)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        List<Article> newList = baseMessage.getDatas(Article.class);
-                        if (!ListUtil.isEmpty(newList)) {
-                            gameInfoListArrayList.add(new GameInfoList("文章推荐", new AdpGcGameAppArticleRecommend(getContext(), newList)).setSort(SORT_ARTICLE));
-                            ViewUtil.notifyDataSetChanged(recyclerView);
-                        }
-                        refreshOrLoadMoreComplete();
-                    }
+            notifyDataSetChanged();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
 
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        if (TestUtil.isDev()) G.showToast(baseMessage);
-                        refreshOrLoadMoreComplete();
-                    }
-                });
-        //活动推荐
-        SheepApp.getInstance().getNetComponent().getApiService().getDetailActivityRecommend(appId)
+    private String getKey() {
+        return ApiKey.pageKeyUrl(ApiKey.GET_ALL_WELFARE, page, per_page) + "&app_id="+appId;
+    }
+
+    //从网络获取发布的任务列表
+    private void getReleaseFromNetWork() {
+        SheepApp.getInstance().getNetComponent().getApiService().getAppWelfare(page, per_page, appId)
                 .subscribeOn(Schedulers.io())
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                     public void onNext(BaseMessage baseMessage) {
-                        List<Article> newList = baseMessage.getDatas(Article.class);
-                        if (!ListUtil.isEmpty(newList)) {
-                            gameInfoListArrayList.add(new GameInfoList("活动推荐", new AdpGcGameAppActivityRecommend(getContext(), newList)).setSort(SORT_ACTIVITY));
-                            ViewUtil.notifyDataSetChanged(recyclerView);
+                        boolean isNewData = DataUtil.getInstance().isNewData(getKey());
+                        if (isNewData || !isFirstCache) {
+                            List<Release_task> cacheList = baseMessage.getDataList(Release_task.class);
+                            if(!ListUtil.isEmpty(cacheList)){
+                                ListUtil.addAllItem(list, cacheList);
+                            }
                         }
                         }
-                        refreshOrLoadMoreComplete();
+                        notifyDataSetChanged();
                     }
                     }
 
 
                     @Override
                     @Override
                     public void onError(BaseMessage baseMessage) {
                     public void onError(BaseMessage baseMessage) {
-                        if (TestUtil.isDev()) G.showToast(baseMessage);
-                        refreshOrLoadMoreComplete();
+                        notifyDataSetChanged();
                     }
                     }
                 });
                 });
     }
     }
-
-    @Override
-    public void loadMoreData() {
-        setNoMore(true);
+    private void notifyDataSetChanged() {
+        ViewUtil.notifyDataSetChanged(recyclerView);
         refreshOrLoadMoreComplete();
         refreshOrLoadMoreComplete();
     }
     }
 
 
-    //礼包推荐
-    public static final int SORT_GIFT = 1;
-    //文章推荐
-    public static final int SORT_ARTICLE = 2;
-    //活动推荐
-    public static final int SORT_ACTIVITY = 3;
 }
 }

+ 4 - 2
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtMyWelfare.java

@@ -9,6 +9,8 @@ import com.sheep.gamegroup.module.game.adapter.AdpMyWelfare;
 import com.sheep.gamegroup.view.fragment.BaseListFragment2;
 import com.sheep.gamegroup.view.fragment.BaseListFragment2;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.R;
 
 
+import org.afinal.simplecache.ApiKey;
+
 import java.util.Locale;
 import java.util.Locale;
 
 
 import io.reactivex.Observable;
 import io.reactivex.Observable;
@@ -26,12 +28,12 @@ public class FgtMyWelfare extends BaseListFragment2<TaskAcceptedEty> {
 
 
     @Override
     @Override
     protected String getKey(int page, int per_page) {
     protected String getKey(int page, int per_page) {
-        return String.format(Locale.CHINA, "app/game_consumption/my_voucher?page=%d&per_page=%d", page, per_page);
+        return ApiKey.pageKeyUrl(ApiKey.GET_MY_WELFARE, page, per_page);
     }
     }
 
 
     @Override
     @Override
     protected Observable<BaseMessage> getApi(ApiService apiService) {
     protected Observable<BaseMessage> getApi(ApiService apiService) {
-        return apiService.getMyWelfareList(page, per_page);
+        return apiService.getMyWelfare(page, per_page);
     }
     }
 
 
     @Override
     @Override

+ 7 - 4
app/src/main/java/com/sheep/gamegroup/module/home/fragment/FgtDailyPlayList.java

@@ -77,7 +77,7 @@ public class FgtDailyPlayList extends BaseFragment implements ILoadMore, IRefres
         activity = getActivity();
         activity = getActivity();
         initView();
         initView();
         initListener();
         initListener();
-        refreshData();
+        initData();
     }
     }
 
 
     public void initView() {
     public void initView() {
@@ -98,8 +98,11 @@ public class FgtDailyPlayList extends BaseFragment implements ILoadMore, IRefres
     private boolean isFirstCache = false;//是否首先尝试缓存
     private boolean isFirstCache = false;//是否首先尝试缓存
 
 
     //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
     //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
-    public void initData() {
+    private void initData() {
         isFirstCache = true;
         isFirstCache = true;
+        noMore = false;
+        page = 1;
+        list.clear();
         mInitData();
         mInitData();
     }
     }
 
 
@@ -143,7 +146,7 @@ public class FgtDailyPlayList extends BaseFragment implements ILoadMore, IRefres
     public void onResume() {
     public void onResume() {
         super.onResume();
         super.onResume();
         if (onResumeCount > 0) {//直接全部刷新
         if (onResumeCount > 0) {//直接全部刷新
-            refreshData();
+            initData();
         }
         }
         onResumeCount++;
         onResumeCount++;
     }
     }
@@ -175,7 +178,7 @@ public class FgtDailyPlayList extends BaseFragment implements ILoadMore, IRefres
                             @Override
                             @Override
                             public void onNext(BaseMessage baseMessage) {
                             public void onNext(BaseMessage baseMessage) {
                                 boolean isNewData = DataUtil.getInstance().isNewData(getKey());
                                 boolean isNewData = DataUtil.getInstance().isNewData(getKey());
-                                if (isNewData && !isFirstCache) {
+                                if (isNewData || !isFirstCache) {
                                     List<GameEntity> cacheList = baseMessage.getDataList(GameEntity.class);
                                     List<GameEntity> cacheList = baseMessage.getDataList(GameEntity.class);
                                     if(!ListUtil.isEmpty(cacheList)){
                                     if(!ListUtil.isEmpty(cacheList)){
                                         ListUtil.addAllItem(list, cacheList);
                                         ListUtil.addAllItem(list, cacheList);

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/module/home/fragment/FgtPromoteGoodsList.java

@@ -178,7 +178,7 @@ public class FgtPromoteGoodsList extends BaseFragment implements ILoadMore, IRef
                             @Override
                             @Override
                             public void onNext(BaseMessage baseMessage) {
                             public void onNext(BaseMessage baseMessage) {
                                 boolean isNewData = DataUtil.getInstance().isNewData(getKey());
                                 boolean isNewData = DataUtil.getInstance().isNewData(getKey());
-                                if (isNewData && !isFirstCache) {
+                                if (isNewData || !isFirstCache) {
                                     GetPromoteGoodsUrl getPromoteGoodsUrl = baseMessage.getData(GetPromoteGoodsUrl.class);
                                     GetPromoteGoodsUrl getPromoteGoodsUrl = baseMessage.getData(GetPromoteGoodsUrl.class);
                                     if(getPromoteGoodsUrl != null){
                                     if(getPromoteGoodsUrl != null){
                                         adapter.setBaseUrl(getPromoteGoodsUrl.getGoods_url());
                                         adapter.setBaseUrl(getPromoteGoodsUrl.getGoods_url());

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

@@ -204,6 +204,7 @@ import okhttp3.Call;
 import rx.functions.Action1;
 import rx.functions.Action1;
 
 
 import static com.sheep.gamegroup.module.game.activity.ActGameGroupOrGameDetail.AUTO_DOWNLOAD;
 import static com.sheep.gamegroup.module.game.activity.ActGameGroupOrGameDetail.AUTO_DOWNLOAD;
+import static com.sheep.gamegroup.module.game.activity.ActGameGroupOrGameDetail.KEY_HAS_WELFARE;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.ASK_MAKE_MONEY_INVITATION;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.ASK_MAKE_MONEY_INVITATION;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_ITEM;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_ITEM;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.GAME_DOWNLOAD_WELFARE_LIST;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.GAME_DOWNLOAD_WELFARE_LIST;
@@ -2896,6 +2897,7 @@ public class Jump2View {
                             G.showToast(R.string.please_contact_customer_service);
                             G.showToast(R.string.please_contact_customer_service);
                             return;
                             return;
                         }
                         }
+
                         Activity activity = SheepApp.getInstance().getCurrentActivity();
                         Activity activity = SheepApp.getInstance().getCurrentActivity();
                         Intent intent = new Intent(activity, ActGameGroupOrGameDetail.class);
                         Intent intent = new Intent(activity, ActGameGroupOrGameDetail.class);
                         int id = gameGroup.getFirstApplicationsId();
                         int id = gameGroup.getFirstApplicationsId();
@@ -2907,7 +2909,7 @@ public class Jump2View {
                         }
                         }
                         if(ListUtil.size(gameGroup.getApplications()) > 1)//有多个游戏时才添加游戏组数据
                         if(ListUtil.size(gameGroup.getApplications()) > 1)//有多个游戏时才添加游戏组数据
                             DataUtil.putObject(intent, gameGroup);
                             DataUtil.putObject(intent, gameGroup);
-                        activity.startActivity(intent);
+                        goPlayGameDetailAndCheckWelfare(activity, intent, id);
                     }
                     }
 
 
                     @Override
                     @Override
@@ -2935,11 +2937,34 @@ public class Jump2View {
             Intent intent = new Intent(activity, ActGameGroupOrGameDetail.class);
             Intent intent = new Intent(activity, ActGameGroupOrGameDetail.class);
             intent.putExtra("id", id);
             intent.putExtra("id", id);
             intent.putExtra(AUTO_DOWNLOAD, isAutoDownload);
             intent.putExtra(AUTO_DOWNLOAD, isAutoDownload);
-            activity.startActivity(intent);
+            goPlayGameDetailAndCheckWelfare(activity, intent, id);
         } else {
         } else {
             G.showToast(R.string.please_contact_customer_service);
             G.showToast(R.string.please_contact_customer_service);
         }
         }
     }
     }
+    /**
+     * 小绵羊3.4.10新增 -- 游戏组游戏详情 界面
+     */
+    public void goPlayGameDetailAndCheckWelfare(Activity activity, Intent intent, int appId) {
+        SheepApp.getInstance().getNetComponent().getApiService().getAppWelfare(1, DataUtil.PER_PAGE, appId)
+                        .subscribeOn(Schedulers.io())
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                            @Override
+                            public void onNext(BaseMessage baseMessage) {
+                                List<Release_task> list = baseMessage.getDataList(Release_task.class);
+                                boolean hasWelfare = !ListUtil.isEmpty(list);
+                                intent.putExtra(KEY_HAS_WELFARE, hasWelfare);
+                                activity.startActivity(intent);
+                            }
+
+                            @Override
+                            public void onError(BaseMessage baseMessage) {
+                                intent.putExtra(KEY_HAS_WELFARE, false);
+                                activity.startActivity(intent);
+                            }
+                        });
+    }
 
 
     /**
     /**
      * 抢购优惠
      * 抢购优惠

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

@@ -260,7 +260,7 @@ public class TimeUtil {
         else if(duration > 0)
         else if(duration > 0)
             result = "不足1分钟";
             result = "不足1分钟";
         else
         else
-            result = "已经过期";
+            result = "永久";
         return result.replace("0小时", "").replace("0分钟", "");
         return result.replace("0小时", "").replace("0分钟", "");
     }
     }
 
 

+ 8 - 2
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtHomeTaskReleaseList.java

@@ -153,7 +153,7 @@ public class FgtHomeTaskReleaseList extends BaseFragment implements TryMakeMoney
         activity = getActivity();
         activity = getActivity();
         initView();
         initView();
         initListener();
         initListener();
-        refreshData();
+        initData();
     }
     }
 
 
     private String task_type = "-1";
     private String task_type = "-1";
@@ -198,8 +198,14 @@ public class FgtHomeTaskReleaseList extends BaseFragment implements TryMakeMoney
     private boolean isFirstCache = false;//是否首先尝试缓存
     private boolean isFirstCache = false;//是否首先尝试缓存
 
 
     //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
     //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
-    public void initData() {
+    private void initData() {
         isFirstCache = true;
         isFirstCache = true;
+        noMore = false;
+        releasePage = 1;
+        releaseBeginPage = 1;
+        acceptedEtyList.clear();
+        releaseEtyLists.clear();
+        releaseEtyListsBegin.clear();
         mInitData();
         mInitData();
     }
     }
 
 

+ 2 - 0
app/src/main/java/org/afinal/simplecache/ApiKey.java

@@ -99,6 +99,8 @@ public class ApiKey {
     public static final String FIND = "app/find";
     public static final String FIND = "app/find";
     //获取全部福利
     //获取全部福利
     public static final String GET_ALL_WELFARE = "app/release_task?platform=1&task_type=1019";
     public static final String GET_ALL_WELFARE = "app/release_task?platform=1&task_type=1019";
+    //获取我的福利
+    public static final String GET_MY_WELFARE = "app/accepted_task?status=0&task_type=1019";
 
 
     public static final String getPackageVersion(String package_name, String type, int version){
     public static final String getPackageVersion(String package_name, String type, int version){
         return String.format(Locale.CHINA, "%s?package_name=%s&type=%s&version=%d", getPackageVersion, package_name, type, version);
         return String.format(Locale.CHINA, "%s?package_name=%s&type=%s&version=%d", getPackageVersion, package_name, type, version);

+ 1 - 1
app/src/main/res/layout/item_all_welfare.xml

@@ -93,7 +93,7 @@
         android:id="@+id/item_btn_tv"
         android:id="@+id/item_btn_tv"
         style="@style/style_button_find"
         style="@style/style_button_find"
         android:layout_marginEnd="17dp"
         android:layout_marginEnd="17dp"
-        android:text="领取福利"
+        android:text="查看详情"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
         app:layout_constraintTop_toTopOf="parent" />