Kaynağa Gözat

Merge remote-tracking branch 'origin/sheep_develop' into sheep_develop

# Conflicts:
#	app/src/main/AndroidManifest.xml
yuanshenglan 7 yıl önce
ebeveyn
işleme
2920d9661a
79 değiştirilmiş dosya ile 4087 ekleme ve 525 silme
  1. 1 1
      app/build.gradle
  2. 4 0
      app/src/main/AndroidManifest.xml
  3. 1 0
      app/src/main/java/com/kfzs/duanduan/event/EventTypes.java
  4. 1 1
      app/src/main/java/com/kfzs/duanduan/fragment/FgtFind.java
  5. 9 13
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java
  6. 4 0
      app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java
  7. 60 0
      app/src/main/java/com/sheep/gamegroup/helper/FindAppHelper.java
  8. 38 1
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  9. 168 0
      app/src/main/java/com/sheep/gamegroup/model/entity/DownloadWelfare.java
  10. 71 7
      app/src/main/java/com/sheep/gamegroup/model/entity/FindApp.java
  11. 98 0
      app/src/main/java/com/sheep/gamegroup/model/entity/GameEntity.java
  12. 178 0
      app/src/main/java/com/sheep/gamegroup/model/entity/GiftBag.java
  13. 43 0
      app/src/main/java/com/sheep/gamegroup/model/entity/GiftBagApp.java
  14. 64 5
      app/src/main/java/com/sheep/gamegroup/model/entity/PlayGameEntity.java
  15. 3 3
      app/src/main/java/com/sheep/gamegroup/model/entity/RequestParameEty.java
  16. 30 0
      app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java
  17. 53 4
      app/src/main/java/com/sheep/gamegroup/model/entity/TaskReleaseEty.java
  18. 33 0
      app/src/main/java/com/sheep/gamegroup/model/entity/UserEntity.java
  19. 88 0
      app/src/main/java/com/sheep/gamegroup/model/entity/VoucherRecord.java
  20. 136 0
      app/src/main/java/com/sheep/gamegroup/model/entity/VoucherUseLog.java
  21. 0 8
      app/src/main/java/com/sheep/gamegroup/model/entity/Welfare.java
  22. 72 0
      app/src/main/java/com/sheep/gamegroup/model/entity/WelfareLog.java
  23. 7 6
      app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyContract.java
  24. 9 9
      app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyPresenter.java
  25. 19 0
      app/src/main/java/com/sheep/gamegroup/util/BinaryUtils.java
  26. 17 1
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  27. 18 0
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  28. 2 1
      app/src/main/java/com/sheep/gamegroup/util/TestUtil.java
  29. 3 1
      app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java
  30. 14 14
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  31. 3 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActBindMobileRegister.java
  32. 4 3
      app/src/main/java/com/sheep/gamegroup/view/activity/ActEverydayPlayGame.java
  33. 3 4
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGameCenter.java
  34. 1 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGiftCenter.java
  35. 311 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActModifyThird.java
  36. 463 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActPlayGameDetail.java
  37. 0 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActXiaomiGame.java
  38. 16 1
      app/src/main/java/com/sheep/gamegroup/view/activity/LoginAct.java
  39. 175 18
      app/src/main/java/com/sheep/gamegroup/view/activity/PersonalInfoAct.java
  40. 6 1
      app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java
  41. 41 15
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java
  42. 50 11
      app/src/main/java/com/sheep/gamegroup/view/adapter/DownloadWelfareAdapter.java
  43. 110 10
      app/src/main/java/com/sheep/gamegroup/view/adapter/GiftCenterAdapter.java
  44. 22 18
      app/src/main/java/com/sheep/gamegroup/view/adapter/PlayGameItemAdapter.java
  45. 1 1
      app/src/main/java/com/sheep/gamegroup/view/adapter/TryMakeMoneyAdp.java
  46. 66 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/VoucherUseLogAdapter.java
  47. 211 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/WelfareAdapter.java
  48. 36 3
      app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment.java
  49. 42 6
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtDownloadWelfareList.java
  50. 43 6
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGiftCenter.java
  51. 9 4
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyDownloadWelfareList.java
  52. 22 6
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyGift.java
  53. 110 0
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlaGameGift.java
  54. 77 27
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGame.java
  55. 96 0
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGameDetail.java
  56. 30 69
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGameSon.java
  57. 182 156
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java
  58. 77 22
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtWelfareCenter.java
  59. 11 6
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtWelfareUseRecord.java
  60. 35 2
      app/src/main/java/com/sheep/jiuyan/samllsheep/utils/TitleBarUtils.java
  61. 6 2
      app/src/main/java/org/afinal/simplecache/ApiKey.java
  62. 70 0
      app/src/main/res/layout/act_modify_third.xml
  63. 189 0
      app/src/main/res/layout/act_play_game_detail_layout.xml
  64. 1 6
      app/src/main/res/layout/common_tab_vp.xml
  65. 25 0
      app/src/main/res/layout/fgt_find.xml
  66. 50 0
      app/src/main/res/layout/fgt_playgame_gift_item.xml
  67. 7 8
      app/src/main/res/layout/fgt_try_makemoney_layout.xml
  68. 53 21
      app/src/main/res/layout/item_download_welfare.xml
  69. 122 0
      app/src/main/res/layout/item_play_game_detail.xml
  70. 2 12
      app/src/main/res/layout/login_act_layout.xml
  71. 1 1
      app/src/main/res/layout/net_empty_xrecycler.xml
  72. 3 2
      app/src/main/res/layout/title.xml
  73. 32 2
      app/src/main/res/layout/xpersion_info_act_layout.xml
  74. BIN
      app/src/main/res/mipmap-xxhdpi/tip.png
  75. BIN
      app/src/main/res/mipmap-xxhdpi/welfare_gift_img_bg.png
  76. 2 0
      app/src/main/res/values/common.xml
  77. 23 0
      app/src/main/res/values/dd_styles.xml
  78. 3 1
      app/src/main/res/values/gamegroup_string.xml
  79. 1 1
      app/src/main/res/values/strings.xml

+ 1 - 1
app/build.gradle

@@ -132,7 +132,7 @@ dependencies {
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     testCompile 'junit:junit:4.12'
     compile 'com.google.code.gson:gson:2.8.2'
-    compile('com.jcodecraeer:xrecyclerview:1.5.2') {
+    compile('com.jcodecraeer:xrecyclerview:1.5.9') {
         //    compile 'com.shark:screencapture:1.0.0'
         exclude group: 'com.android.support', module: 'design'
     }

+ 4 - 0
app/src/main/AndroidManifest.xml

@@ -591,8 +591,12 @@
             android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.MessageInteractionDetailActivity"
             android:exported="true"/>
+        <activity android:name="com.sheep.gamegroup.view.activity.ActModifyThird"
+            android:exported="true"/>
         <activity android:name="com.sheep.gamegroup.view.activity.ActEverydayPlayGame"
             android:exported="true"/>
+        <activity android:name="com.sheep.gamegroup.view.activity.ActPlayGameDetail"
+            android:exported="true"/>
         <activity android:name="com.sheep.gamegroup.view.activity.MessageCenterDetailActivity"
             android:exported="true"/>
         <activity android:name="com.sheep.gamegroup.view.activity.InvitationActivity"

+ 1 - 0
app/src/main/java/com/kfzs/duanduan/event/EventTypes.java

@@ -44,4 +44,5 @@ public enum EventTypes {
     FGT_SHEEP_REFRESH_H , //刷新fgtSmallSheep高度
     FGT_SHEEP_SHOW_NEW_USER_HONG_BAO , //显示红包
     REFRESH_AUDITACTIVITY_DATA,//审核数据刷新
+    FGT_PLAYGAME_REFRESH_H , //刷新玩转游戏高度
 }

+ 1 - 1
app/src/main/java/com/kfzs/duanduan/fragment/FgtFind.java

@@ -42,7 +42,7 @@ public class FgtFind extends BaseCompatFragment {
 
     @Override
     protected void initView(Bundle savedInstanceState) {
-        setContentView(R.layout.common_tab_vp);
+        setContentView(R.layout.fgt_find);
         activity = getActivity();
         ButterKnife.bind(this, mContentView);
         initView();

+ 9 - 13
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -9,12 +9,10 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
-import android.support.annotation.RequiresApi;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.support.v4.widget.NestedScrollView;
@@ -55,18 +53,16 @@ import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BulletinEnty;
 import com.sheep.gamegroup.model.entity.CashAwarsEntity;
-import com.sheep.gamegroup.model.entity.Ext;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
 import com.sheep.gamegroup.model.entity.MoreDataEntity;
 import com.sheep.gamegroup.model.entity.RecyleObj;
 import com.sheep.gamegroup.model.entity.RecyleType;
-import com.sheep.gamegroup.model.entity.RequestParameEty;
+import com.sheep.gamegroup.model.entity.RequestParamEty;
 import com.sheep.gamegroup.model.entity.SlideshowEty;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.AutoTaskListUtil;
-import com.sheep.gamegroup.model.util.EntityUtils;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.presenter.SmallSheepContract;
 import com.sheep.gamegroup.presenter.SmallSheepPresenter;
@@ -122,7 +118,6 @@ import rx.functions.Action1;
 import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.NEWBIE_TASK;
-import static com.sheep.gamegroup.util.ViewUtil.backgroundAlpha;
 
 public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContract.View, TryMakeMoneyContract.View {
 
@@ -581,7 +576,8 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         animation.setDuration(150);
         animation.setRepeatCount(Integer.MAX_VALUE);//根据产品要求,要一直晃动
         animation.setRepeatMode(Animation.REVERSE);
-        imageView.startAnimation(animation);
+        if(imageView != null)
+            imageView.startAnimation(animation);
     }
 
     private void loadUserInfo() {
@@ -841,7 +837,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     private void refreshTaskList() {
         tryMakeMoneyPresenter.returnTask(is_succession, show_game_task);
-        RequestParameEty parameEty = new RequestParameEty();
+        RequestParamEty parameEty = new RequestParamEty();
         parameEty.setHashMap(
                 CommonUtil.getInstance()
                         .setHashMap(1,
@@ -941,7 +937,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     private int show_game_task = 1;//包含游戏任务
 
     @Override
-    public void returnTaskTaskUpdataView(Object object) {
+    public void returnTaskTaskUpdateView(Object object) {
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.new_run_task(is_succession, show_game_task));
         if (isNewData) {
             BaseMessage baseMessage = (BaseMessage) object;
@@ -975,10 +971,10 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     }
 
     @Override
-    public void releaseTaskTaskUpdataView(Object object) {
+    public void releaseTaskTaskUpdateView(BaseMessage baseMessage, int about_to_begin) {
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task);
-        if (isNewData && object instanceof BaseMessage) {
-            List<TaskReleaseEty> releaseEtyList = ((BaseMessage) object).getDataList(TaskReleaseEty.class);
+        if (isNewData) {
+            List<TaskReleaseEty> releaseEtyList = baseMessage.getDataList(TaskReleaseEty.class);
             if (releaseEtyList != null) {
                 releaseEtyLists = releaseEtyList;
                 mHandler.sendEmptyMessage(WHAT_LOAD_RUN_TASK);
@@ -987,7 +983,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     }
 
     @Override
-    public void failReleaseTask2View(Object o) {
+    public void failReleaseTask2View(BaseMessage baseMessage, int about_to_begin) {
     }
 
     @Override

+ 4 - 0
app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java

@@ -136,4 +136,8 @@ public class DownloadHelper {
     public void updateState(int status) {
         downLoadType = status;
     }
+
+    public int getDownLoadType() {
+        return downLoadType;
+    }
 }

+ 60 - 0
app/src/main/java/com/sheep/gamegroup/helper/FindAppHelper.java

@@ -10,6 +10,7 @@ import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.FindApp;
+import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.ViewUtil;
@@ -31,6 +32,10 @@ import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_APP;
 public class FindAppHelper{
     private DownloadHelper downloadHelper = new DownloadHelper();
 
+    public DownloadHelper getDownloadHelper() {
+        return downloadHelper;
+    }
+
     public void updateState(int status) {
         downloadHelper.updateState(status);
     }
@@ -45,6 +50,10 @@ public class FindAppHelper{
                         FindApp findApp = (FindApp) iTask;
                         recordAppDownloads(activity, findApp, null);
                         FIND_APP.onEvent("application_id", findApp.getId(), "action", down_tv.getText());
+                    }else if(iTask instanceof PlayGameEntity) {
+                        PlayGameEntity findApp = (PlayGameEntity) iTask;
+                        recordAppDownloads(activity, findApp, null);
+                        FIND_APP.onEvent("application_id", findApp.getId(), "action", down_tv.getText());
                     }
                 }
             }
@@ -74,6 +83,23 @@ public class FindAppHelper{
             reservation_tv.setText("已经预约");
         }
     }
+    public void updateReservationView(final Activity activity, final PlayGameEntity findApp, final TextView reservation_tv) {
+        if(findApp.isCanRecord()) {
+            reservation_tv.setEnabled(true);
+            reservation_tv.setText("预约下载");
+            reservation_tv.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    FIND_APP.onEvent("application_id", findApp.getId(), "action", "预约下载");
+                    reservation_tv.setEnabled(false);
+                    recordAppDownloads(activity, findApp, reservation_tv);
+                }
+            });
+        } else {
+            reservation_tv.setEnabled(false);
+            reservation_tv.setText("已经预约");
+        }
+    }
 
 
     /**
@@ -113,4 +139,38 @@ public class FindAppHelper{
                     }
                 });
     }
+    private void recordAppDownloads(final Activity activity, final PlayGameEntity items, final TextView textView) {
+
+        SheepApp.getInstance().getNetComponent().getApiService().recordAppDownloads(items.getId())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        items.setRecord(2);//设置为不可记录
+                        if(items.isCanDonload()){
+                            //提交下载成功
+                            if(textView != null)
+                                textView.setEnabled(true);
+                        } else {//提交预约成功
+                            if(textView != null) {
+                                textView.setEnabled(false);
+                                textView.setText("已经预约");
+                            }
+                            ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("预约成功")
+                                    .setMsg(String.format(Locale.CHINA, "请在%s准时到小绵羊下载哦", TimeUtil.TimeStamp2Date(items.getDownload_at(), "yyyy年MM月dd日HH时mm分")))
+                                    .setMsgGravity(Gravity.START).setBtnLeftText("我知道了"));
+                        }
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        if(!items.isCanDonload()){
+                            G.showToast("预约失败");
+                        }
+                        if(textView != null)
+                            textView.setEnabled(true);
+                    }
+                });
+    }
 }

+ 38 - 1
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -249,7 +249,6 @@ public interface ApiService {
 
     /**
      * 新手红包
-     *
      * @return .
      */
     @POST("app/newbie_task/login_red_packet")
@@ -916,6 +915,11 @@ public interface ApiService {
     Observable<BaseMessage> getMyGiftBagList(@Query("page") int page, @Query("per_page") int per_page);
 
     /**
+     * 领取礼包
+     */
+    @PUT("app/gift_bag/receive/{id}")
+    Observable<BaseMessage> receiveGiftBag(@Path("id") int id);
+    /**
      * 获取热门福利
      */
     @GET("app/release_task/hot_welfare")
@@ -940,6 +944,26 @@ public interface ApiService {
     Observable<BaseMessage> getMyWelfareLogList(@Query("page") int page, @Query("per_page") int per_page);
 
     /**
+     * 绑定qq或微信
+     */
+    @PUT("app/user/bind_third")
+    Observable<BaseMessage> bindThird(@Body JSONObject jsonObject);
+    /**
+     * 换绑qq或微信
+     */
+    @PUT("app/user/modify_third")
+    Observable<BaseMessage> modifyThird(@Body JSONObject jsonObject);
+    /**
+     * 发送/校验换绑验证码
+     */
+    @POST("app/user/modify_third_sms")
+    Observable<BaseMessage> modifyThirdSms(@Body JSONObject jsonObject);
+    /**
+     * 检查是否需要输入邀请码
+     */
+    @GET("app/auth/need_code")
+    Observable<BaseMessage> needCode(@Query("mobile") String mobile);
+    /**
      * 玩转游戏——每日必玩
      * 玩转游戏——近期最热
      * is_hot:1  others:0
@@ -948,4 +972,17 @@ public interface ApiService {
      */
     @GET("app/find")
     Observable<BaseMessage> playgameDailyOrHotOrTypePlay(@Query("page") int page, @Query("per_page") int per_page, @Query("is_hot") int is_hot, @Query("daily_play") int daily_play, @Query("type") int type);
+
+    /**
+     * platform 平台 1:andriod 2:ios
+     * @return
+     */
+    @GET("app/game_banner")
+    Observable<BaseMessage> gameBanner(@Query("platform") int platform);
+    /**
+     * platform 平台 1:andriod 2:ios
+     * @return
+     */
+    @GET("app/find/{id}")
+    Observable<BaseMessage> playGameDetail(@Path("id") int id);
 }

+ 168 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/DownloadWelfare.java

@@ -0,0 +1,168 @@
+package com.sheep.gamegroup.model.entity;
+
+import android.text.Html;
+
+import com.sheep.gamegroup.util.TimeUtil;
+
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2018/9/4.
+ * realicing@sina.com
+ * {
+ * "name": "tesat",
+ * "icon": "http:\/\/staticcdn.kuaifazs.com\/upload\/static\/201807\/12\/0a\/35\/HOib9G.png",
+ * "online_time": 1531382193,
+ * "deadline": 1533023768,
+ * "gift_ratio": 0,
+ * "consume_amount": 0,
+ * "game_id": "",
+ * "release_id": 734,
+ * "Log": {
+ * "Id": 173,
+ * "UserId": 63096,
+ * "GameId": "",
+ * "Platform": 1,
+ * "Balance": 50,
+ * "TotalAssets": 50,
+ * "UpdateTime": 1536022825,
+ * "CreateTime": 1536022825
+ * }
+ * }
+ */
+public class DownloadWelfare {
+    private String name;
+
+    private String icon;
+
+    private long online_time;
+
+    private long deadline;
+
+    private int gift_ratio;
+
+    private int consume_amount;
+    private String game_id;
+    private int release_id;
+
+    private WelfareLog Log;
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public String getIcon() {
+        return this.icon;
+    }
+
+    public void setOnline_time(int online_time) {
+        this.online_time = online_time;
+    }
+
+    public long getOnline_time() {
+        return this.online_time;
+    }
+
+    public void setDeadline(int deadline) {
+        this.deadline = deadline;
+    }
+
+    public long getDeadline() {
+        return this.deadline;
+    }
+
+    public void setGift_ratio(int gift_ratio) {
+        this.gift_ratio = gift_ratio;
+    }
+
+    public int getGift_ratio() {
+        return this.gift_ratio;
+    }
+
+    public void setConsume_amount(int consume_amount) {
+        this.consume_amount = consume_amount;
+    }
+
+    public int getConsume_amount() {
+        return this.consume_amount;
+    }
+
+    public void setLog(WelfareLog Log) {
+        this.Log = Log;
+    }
+
+    public WelfareLog getLog() {
+        return this.Log;
+    }
+
+    public void setOnline_time(long online_time) {
+        this.online_time = online_time;
+    }
+
+    public void setDeadline(long deadline) {
+        this.deadline = deadline;
+    }
+
+    public String getGame_id() {
+        return game_id;
+    }
+
+    public void setGame_id(String game_id) {
+        this.game_id = game_id;
+    }
+
+    public int getRelease_id() {
+        return release_id;
+    }
+
+    public void setRelease_id(int release_id) {
+        this.release_id = release_id;
+    }
+
+
+
+
+
+
+    /**
+     * 福利内容
+     *
+     * @return
+     */
+    public String getGiftRatioText() {
+        return String.format(Locale.CHINA, "每充500抵%d", gift_ratio * 5);
+    }
+
+    /**
+     * 剩余金额
+     *
+     * @return
+     */
+    public String getBalanceH5() {
+        return String.format(Locale.CHINA, "剩余<font color='#7AD5F6'>%d</font>元", this.Log != null ? this.Log.getBalance() : 0);
+    }
+
+    public String getDateText() {
+        if (deadline < 1000_000) {
+            return "永久";
+        }
+        return String.format(Locale.CHINA, "%s—%s", TimeUtil.TimeStamp2Date(online_time, "yyyy/MM/dd"), TimeUtil.TimeStamp2Date(deadline, "yyyy/MM/dd"));
+    }
+
+    /**
+     * 已使用金额
+     *
+     * @return
+     */
+    public String getUseBalanceText() {
+        return String.format(Locale.CHINA, "已使用%d", this.Log != null ? this.Log.getTotalAssets() - this.Log.getBalance() : 0);
+    }
+}

+ 71 - 7
app/src/main/java/com/sheep/gamegroup/model/entity/FindApp.java

@@ -52,6 +52,23 @@ public class FindApp implements IDownload {
     private int receive_account = 1;//integer($int64)0:未领取账号 1:已领取账号
     private int available_receive = 1;//0:可领取账号 1:不可领取账号
 
+    private String type;
+    private String package_id;
+
+    private int package_type;
+
+    private int download_count_increment;
+
+
+    private int is_recommend;
+
+    private String game_tag;
+
+    private int sort;
+
+    private int IsPlay;
+
+    private int IsHot;
     public int getAvailable_receive() {
         return available_receive;
     }
@@ -199,6 +216,60 @@ public class FindApp implements IDownload {
         this.record = record;
     }
 
+    public void setType(String type){
+        this.type = type;
+    }
+    public String getType(){
+        return this.type;
+    }
+    public void setPackage_id(String package_id){
+        this.package_id = package_id;
+    }
+    public String getPackage_id(){
+        return this.package_id;
+    }
+    public void setPackage_type(int package_type){
+        this.package_type = package_type;
+    }
+    public int getPackage_type(){
+        return this.package_type;
+    }
+    public void setDownload_count_increment(int download_count_increment){
+        this.download_count_increment = download_count_increment;
+    }
+    public int getDownload_count_increment(){
+        return this.download_count_increment;
+    }
+    public void setIs_recommend(int is_recommend){
+        this.is_recommend = is_recommend;
+    }
+    public int getIs_recommend(){
+        return this.is_recommend;
+    }
+    public void setGame_tag(String game_tag){
+        this.game_tag = game_tag;
+    }
+    public String getGame_tag(){
+        return this.game_tag;
+    }
+    public void setSort(int sort){
+        this.sort = sort;
+    }
+    public int getSort(){
+        return this.sort;
+    }
+    public void setIsPlay(int IsPlay){
+        this.IsPlay = IsPlay;
+    }
+    public int getIsPlay(){
+        return this.IsPlay;
+    }
+    public void setIsHot(int IsHot){
+        this.IsHot = IsHot;
+    }
+    public int getIsHot(){
+        return this.IsHot;
+    }
 
 
 
@@ -243,13 +314,6 @@ public class FindApp implements IDownload {
 
 
 
-
-
-
-
-
-
-
     /**
      * 是否可以下载
      * @return

+ 98 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/GameEntity.java

@@ -0,0 +1,98 @@
+package com.sheep.gamegroup.model.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by ljy on 2018/9/4.
+ */
+
+public class GameEntity implements Serializable{
+    private int accepted_task_id;//integer($int64)领取福利时使用
+
+    private PlayGameEntity app;
+    private int can_download;//boolean
+    private int is_reservation;//integer($int64)0 不是 1是预约
+
+    private int received_voucher;//boolean是否已经领取了福利
+
+    private int release_task_id;//integer($int64)发布任务id
+
+    private int status;//integer($int64)福利任务时使用,和任务记录一样
+
+    private TaskReleaseEty release_task;
+
+    private List<GiftBagApp> has_gift_bag;
+
+    public TaskReleaseEty getRelease_task() {
+        return release_task;
+    }
+
+    public void setRelease_task(TaskReleaseEty release_task) {
+        this.release_task = release_task;
+    }
+
+    public List<GiftBagApp> getHas_gift_bag() {
+        return has_gift_bag;
+    }
+
+    public void setHas_gift_bag(List<GiftBagApp> has_gift_bag) {
+        this.has_gift_bag = has_gift_bag;
+    }
+
+    public int getAccepted_task_id() {
+        return accepted_task_id;
+    }
+
+    public void setAccepted_task_id(int accepted_task_id) {
+        this.accepted_task_id = accepted_task_id;
+    }
+
+    public PlayGameEntity getApp() {
+        return app;
+    }
+
+    public void setApp(PlayGameEntity app) {
+        this.app = app;
+    }
+
+    public int getCan_download() {
+        return can_download;
+    }
+
+    public void setCan_download(int can_download) {
+        this.can_download = can_download;
+    }
+
+    public int getIs_reservation() {
+        return is_reservation;
+    }
+
+    public void setIs_reservation(int is_reservation) {
+        this.is_reservation = is_reservation;
+    }
+
+    public int getReceived_voucher() {
+        return received_voucher;
+    }
+
+    public void setReceived_voucher(int received_voucher) {
+        this.received_voucher = received_voucher;
+    }
+
+    public int getRelease_task_id() {
+        return release_task_id;
+    }
+
+    public void setRelease_task_id(int release_task_id) {
+        this.release_task_id = release_task_id;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+}

+ 178 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/GiftBag.java

@@ -0,0 +1,178 @@
+package com.sheep.gamegroup.model.entity;
+
+import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.sheep.gamegroup.util.TimeUtil;
+
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2018/9/4.
+ * realicing@sina.com
+ * AppId	integer($int64)
+ 关联的app_id
+
+ CreatedAt	integer($int64)
+ DeleteStatus	integer($int32)
+ 删除状态(1已删除,2未删除)
+
+ EndTime	integer($int64)
+ 结束时间
+
+ GiftContent	string
+ 礼包内容
+
+ GiftName	string
+ 礼包名称
+
+ Id	integer($int64)
+ Order	integer($int64)
+ 序号,越大越靠前
+
+ StartTime	integer($int64)
+ 开始时间
+
+ Status	integer($int32)
+ 状态(1显示,2不显示)
+
+ Surplus	integer($int64)
+ 剩余数量
+
+ TotalNum	integer($int64)
+ 总量
+
+ UpdatedAt	integer($int64)
+ UseMethod	string
+ 使用方法
+ */
+public class GiftBag {
+    private int Id;
+
+    private String GiftName;
+
+    private int AppId;
+
+    private long StartTime;
+
+    private long EndTime;
+
+    private String GiftContent;
+
+    private String UseMethod;
+
+    private int TotalNum;
+
+    private int Surplus;
+
+    private int Status;
+
+    private int Order;
+
+    private int DeleteStatus;
+
+    private int CreatedAt;
+
+    private int UpdatedAt;
+
+    public void setId(int Id){
+        this.Id = Id;
+    }
+    public int getId(){
+        return this.Id;
+    }
+    public void setGiftName(String GiftName){
+        this.GiftName = GiftName;
+    }
+    public String getGiftName(){
+        return this.GiftName;
+    }
+    public void setAppId(int AppId){
+        this.AppId = AppId;
+    }
+    public int getAppId(){
+        return this.AppId;
+    }
+    public void setStartTime(long StartTime){
+        this.StartTime = StartTime;
+    }
+    public long getStartTime(){
+        return this.StartTime;
+    }
+    public void setEndTime(long EndTime){
+        this.EndTime = EndTime;
+    }
+    public long getEndTime(){
+        return this.EndTime;
+    }
+    public void setGiftContent(String GiftContent){
+        this.GiftContent = GiftContent;
+    }
+    public String getGiftContent(){
+        return this.GiftContent;
+    }
+    public void setUseMethod(String UseMethod){
+        this.UseMethod = UseMethod;
+    }
+    public String getUseMethod(){
+        return this.UseMethod;
+    }
+    public void setTotalNum(int TotalNum){
+        this.TotalNum = TotalNum;
+    }
+    public int getTotalNum(){
+        return this.TotalNum;
+    }
+    public void setSurplus(int Surplus){
+        this.Surplus = Surplus;
+    }
+    public int getSurplus(){
+        return this.Surplus;
+    }
+    public void setStatus(int Status){
+        this.Status = Status;
+    }
+    public int getStatus(){
+        return this.Status;
+    }
+    public void setOrder(int Order){
+        this.Order = Order;
+    }
+    public int getOrder(){
+        return this.Order;
+    }
+    public void setDeleteStatus(int DeleteStatus){
+        this.DeleteStatus = DeleteStatus;
+    }
+    public int getDeleteStatus(){
+        return this.DeleteStatus;
+    }
+    public void setCreatedAt(int CreatedAt){
+        this.CreatedAt = CreatedAt;
+    }
+    public int getCreatedAt(){
+        return this.CreatedAt;
+    }
+    public void setUpdatedAt(int UpdatedAt){
+        this.UpdatedAt = UpdatedAt;
+    }
+    public int getUpdatedAt(){
+        return this.UpdatedAt;
+    }
+
+
+
+
+    /**
+     * 剩余份数
+     * @return
+     */
+    public String getLastNumText() {
+        return String.format(Locale.CHINA, "剩余%d份", Surplus);
+    }
+
+    public String getDateText() {
+        if(EndTime < 1000_000){
+            return "永久";
+        }
+        return String.format(Locale.CHINA, "%s—%s", TimeUtil.TimeStamp2Date(StartTime, "yyyy/MM/dd"), TimeUtil.TimeStamp2Date(EndTime, "yyyy/MM/dd"));
+    }
+}

+ 43 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/GiftBagApp.java

@@ -0,0 +1,43 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/9/4.
+ * realicing@sina.com
+ */
+public class GiftBagApp {
+
+    private GiftBag gift_bag;
+
+    private FindApp app;
+
+    private String code;
+
+    private boolean received;
+
+    public boolean isReceived() {
+        return received;
+    }
+
+    public void setReceived(boolean received) {
+        this.received = received;
+    }
+
+    public void setGift_bag(GiftBag gift_bag){
+        this.gift_bag = gift_bag;
+    }
+    public GiftBag getGift_bag(){
+        return this.gift_bag;
+    }
+    public void setApp(FindApp app){
+        this.app = app;
+    }
+    public FindApp getApp(){
+        return this.app;
+    }
+    public void setCode(String code){
+        this.code = code;
+    }
+    public String getCode(){
+        return this.code;
+    }
+}

+ 64 - 5
app/src/main/java/com/sheep/gamegroup/model/entity/PlayGameEntity.java

@@ -1,11 +1,18 @@
 package com.sheep.gamegroup.model.entity;
 
+import android.text.TextUtils;
+
+import com.sheep.gamegroup.helper.FindAppHelper;
+import com.sheep.gamegroup.model.api.IDownload;
+
+import java.io.Serializable;
+
 /**
  * 玩转游戏
  * Created by ljy on 2018/9/3.
  */
 
-public class PlayGameEntity {
+public class PlayGameEntity implements IDownload, Serializable {
     private int Id;//integer($int64)
     private int IsHot;//integer($int64)是否近期最热 1是 2不是
 
@@ -40,7 +47,7 @@ public class PlayGameEntity {
 
     private String package_name;//string应用包名称
 
-    private float package_size;//number($float)包大小(M)
+    private String package_size;//number($float)包大小(M)
 
     private int package_type;//integer($int64)出包类型:1:快发出包 2:腾讯出包 3:小米出包 4:其它
 
@@ -153,6 +160,26 @@ public class PlayGameEntity {
         this.download_url = download_url;
     }
 
+    @Override
+    public String getPackage_names() {
+        return package_name;
+    }
+
+    @Override
+    public int getTask_type() {
+        return 0;
+    }
+
+    @Override
+    public String getDownload_link() {
+        return download_url;
+    }
+
+    @Override
+    public String getTask_name() {
+        return name;
+    }
+
     public String getIcon() {
         return icon;
     }
@@ -209,11 +236,16 @@ public class PlayGameEntity {
         this.package_name = package_name;
     }
 
-    public float getPackage_size() {
-        return package_size;
+    public String getPackage_size() {
+        return TextUtils.isEmpty(package_size)?"0":package_size;
+    }
+
+    @Override
+    public int getAcceptedTaskId() {
+        return Id;
     }
 
-    public void setPackage_size(float package_size) {
+    public void setPackage_size(String package_size) {
         this.package_size = package_size;
     }
 
@@ -312,4 +344,31 @@ public class PlayGameEntity {
     public void setVersions(String versions) {
         this.versions = versions;
     }
+    /**
+     * 是否可以下载
+     * @return
+     */
+    public boolean isCanDonload(){
+        return download == 1;//可以下载
+    }
+    /**
+     * 是否可以记录
+     * @return
+     */
+    public boolean isCanRecord() {
+        return record == 1;//1:可记录 其他:不可记录
+    }
+    private FindAppHelper findAppHelper = new FindAppHelper();
+
+    public FindAppHelper getFindAppHelper() {
+        return findAppHelper;
+    }
+
+    /**
+     * 更新下载状态
+     * @param status
+     */
+    public void updateState(int status) {
+        findAppHelper.updateState(status);
+    }
 }

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

@@ -7,7 +7,7 @@ import java.util.HashMap;
  * Created by ljy on 2018/3/19.
  */
 
-public class RequestParameEty {
+public class RequestParamEty {
 
     private int page;
     private int per_page;
@@ -22,10 +22,10 @@ public class RequestParameEty {
         this.hashMap = hashMap;
     }
 
-    public RequestParameEty() {
+    public RequestParamEty() {
     }
 
-    public RequestParameEty(int page, int per_page) {
+    public RequestParamEty(int page, int per_page) {
         this.page = page;
         this.per_page = per_page;
     }

+ 30 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java

@@ -596,4 +596,34 @@ public class TaskEty implements Serializable, IDownload {
     public boolean isSuccession() {
         return task_type == 1000;
     }
+
+    /**
+     * 小绵羊截屏方案下该任务是否需要小绵羊来截屏
+     * @return
+     */
+    public boolean needShotScreen() {
+        if(inspect_type != 2){//非手动审核任务不需要上传截图
+            return false;
+        }
+        if(TextUtils.isEmpty(package_names)){//无包名情况下也不能截屏
+            return false;
+        }
+        if(TextUtils.isEmpty(download_link)){//无下载连接的任务也无需截屏
+            return false;
+        }
+        switch (task_type){//1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
+            case 2:
+            case 4:
+            case 1001:
+            case 1002:
+            case 1003:
+            case 1004:
+                return false;
+            case 1:
+            case 3:
+            case 1000:
+            default:
+                return true;
+        }
+    }
 }

+ 53 - 4
app/src/main/java/com/sheep/gamegroup/model/entity/TaskReleaseEty.java

@@ -4,6 +4,7 @@ import android.text.TextUtils;
 
 import com.kfzs.duanduan.utils.NumberFormatUtils;
 import com.sheep.gamegroup.helper.DownloadHelper;
+import com.sheep.gamegroup.util.TimeUtil;
 
 import java.io.Serializable;
 import java.util.Locale;
@@ -22,7 +23,7 @@ public class TaskReleaseEty implements Serializable{
     private int cash_task;// 0,
     private String last_num;// 0,
     private String name;//private String string",
-    private String online_time;// 0,
+    private long online_time;// 0,
     private String online_type;// 0,
     private String release_num;// 0,
     private String remarks;//private String string",
@@ -42,7 +43,8 @@ public class TaskReleaseEty implements Serializable{
     private boolean is_running;
     private String child_task_name;//
     private int demo_time;//试玩时长
-
+    private int gift_ratio;//赠送比例,取值0-100
+    private int user_task_status;//备注:和任务记录状态一样
     public int getDemo_time() {
         return demo_time;
     }
@@ -165,11 +167,11 @@ public class TaskReleaseEty implements Serializable{
         this.name = name;
     }
 
-    public String getOnline_time() {
+    public long getOnline_time() {
         return online_time;
     }
 
-    public void setOnline_time(String online_time) {
+    public void setOnline_time(long online_time) {
         this.online_time = online_time;
     }
 
@@ -254,6 +256,22 @@ public class TaskReleaseEty implements Serializable{
         this.cash_task = cash_task;
     }
 
+    public int getGift_ratio() {
+        return gift_ratio;
+    }
+
+    public void setGift_ratio(int gift_ratio) {
+        this.gift_ratio = gift_ratio;
+    }
+
+    public int getUser_task_status() {
+        return user_task_status;
+    }
+
+    public void setUser_task_status(int user_task_status) {
+        this.user_task_status = user_task_status;
+    }
+
     @Override
     public boolean equals(Object obj) {
         return obj instanceof TaskReleaseEty && ((TaskReleaseEty) obj).getId() == id;
@@ -292,4 +310,35 @@ public class TaskReleaseEty implements Serializable{
     public DownloadHelper getDownloadHelper() {
         return downloadHelper;
     }
+
+    /**
+     * 福利内容
+     * @return
+     */
+    public String getGiftRatioText() {
+        return String.format(Locale.CHINA, "每充500送%d", gift_ratio * 5);
+    }
+    /**
+     * 剩余份数
+     * @return
+     */
+    public String getLastNumText() {
+        return String.format(Locale.CHINA, "剩余%s份", last_num);
+    }
+
+    public String getDateText() {
+        long endTime = NumberFormatUtils.parseLong(deadline);
+        if(endTime < 1000_000){
+            return "永久";
+        }
+        return String.format(Locale.CHINA, "%s—%s", TimeUtil.TimeStamp2Date(online_time, "yyyy/MM/dd"), TimeUtil.TimeStamp2Date(endTime, "yyyy/MM/dd"));
+    }
+
+    /**
+     * 任务是否已经完成,对于游戏任务或者福利来说,就是已经领取奖励
+     * @return
+     */
+    public boolean isTaskFinished() {
+        return user_task_status == 3;
+    }
 }

+ 33 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserEntity.java

@@ -2,6 +2,7 @@ package com.sheep.gamegroup.model.entity;
 
 import android.text.TextUtils;
 
+import com.sheep.gamegroup.util.BinaryUtils;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.view.dialog.DialogShare;
@@ -81,6 +82,8 @@ public class UserEntity implements Serializable {
     private int package_cate;
     @Column(name = "create_time_line")
     private int create_time_line;
+    @Column(name = "bind_flag")
+    private int bind_flag;//绑定表示 二进制形式 从低到高 第一位手机号 第二位QQ号 第三位微信
 
     public int getPackage_cate() {
         return package_cate;
@@ -330,6 +333,18 @@ public class UserEntity implements Serializable {
         this.must_bind_mobile = must_bind_mobile;
     }
 
+    public int getBind_flag() {
+        return bind_flag;
+    }
+
+    public void setBind_flag(int bind_flag) {
+        this.bind_flag = bind_flag;
+    }
+
+
+
+
+
 
     public boolean isNewRegistUser() {//新注册用户
         return TextUtils.equals(create_time, last_login_time);
@@ -358,4 +373,22 @@ public class UserEntity implements Serializable {
     public String getShareLink() {//测试服对应的下载地址为http://10.8.230.17:7776/newsheep?id=32778005
         return TestUtil.isSheep() ? getShare_link() : "http://10.8.210.230:8902/share.html?invitation_code=" + getInvitation_code();
     }
+    /**
+     * 是否绑定手机号
+     */
+    public boolean isBindMobile(){
+        return BinaryUtils.is(bind_flag, 1);
+    }
+    /**
+     * 是否绑定QQ号
+     */
+    public boolean isBindQQ(){
+        return BinaryUtils.is(bind_flag, 2);
+    }
+    /**
+     * 是否绑定微信号
+     */
+    public boolean isBindWx(){
+        return BinaryUtils.is(bind_flag, 3);
+    }
 }

+ 88 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/VoucherRecord.java

@@ -0,0 +1,88 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/9/4.
+ * realicing@sina.com
+ */
+public class VoucherRecord {
+
+    private int Id;
+
+    private int Type;
+
+    private float Amount;
+
+    private long CreateTime;
+
+    private int UserId;
+
+    private String GameId;
+
+    private float ConsumptionAmount;
+
+    private float SurplusAmount;
+
+    public int getId() {
+        return Id;
+    }
+
+    public void setId(int id) {
+        Id = id;
+    }
+
+    public int getType() {
+        return Type;
+    }
+
+    public void setType(int type) {
+        Type = type;
+    }
+
+    public float getAmount() {
+        return Amount;
+    }
+
+    public void setAmount(float amount) {
+        Amount = amount;
+    }
+
+    public long getCreateTime() {
+        return CreateTime;
+    }
+
+    public void setCreateTime(long createTime) {
+        CreateTime = createTime;
+    }
+
+    public int getUserId() {
+        return UserId;
+    }
+
+    public void setUserId(int userId) {
+        UserId = userId;
+    }
+
+    public String getGameId() {
+        return GameId;
+    }
+
+    public void setGameId(String gameId) {
+        GameId = gameId;
+    }
+
+    public float getConsumptionAmount() {
+        return ConsumptionAmount;
+    }
+
+    public void setConsumptionAmount(float consumptionAmount) {
+        ConsumptionAmount = consumptionAmount;
+    }
+
+    public float getSurplusAmount() {
+        return SurplusAmount;
+    }
+
+    public void setSurplusAmount(float surplusAmount) {
+        SurplusAmount = surplusAmount;
+    }
+}

+ 136 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/VoucherUseLog.java

@@ -0,0 +1,136 @@
+package com.sheep.gamegroup.model.entity;
+
+import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.sheep.gamegroup.util.TimeUtil;
+
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2018/9/4.
+ * realicing@sina.com
+ * <p>
+ * "name": "tesat",
+ * "icon": "http:\/\/staticcdn.kuaifazs.com\/upload\/static\/201807\/12\/0a\/35\/HOib9G.png",
+ * "online_time": 1531382193,
+ * "deadline": 1533023768,
+ * "gift_ratio": 0,
+ * "consume_amount": 0,
+ * "Log": {
+ * "Id": 450,
+ * "Type": 1,
+ * "Amount": 50,
+ * "CreateTime": 1536022825,
+ * "UserId": 63096,
+ * "GameId": "",
+ * "ConsumptionAmount": 0,
+ * "SurplusAmount": 0
+ * }
+ */
+public class VoucherUseLog {
+    private String name;
+
+    private String icon;
+
+    private int online_time;
+
+    private int deadline;
+
+    private int gift_ratio;
+
+    private int consume_amount;
+
+    private VoucherRecord Log;
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public int getOnline_time() {
+        return online_time;
+    }
+
+    public void setOnline_time(int online_time) {
+        this.online_time = online_time;
+    }
+
+    public int getDeadline() {
+        return deadline;
+    }
+
+    public void setDeadline(int deadline) {
+        this.deadline = deadline;
+    }
+
+    public int getGift_ratio() {
+        return gift_ratio;
+    }
+
+    public void setGift_ratio(int gift_ratio) {
+        this.gift_ratio = gift_ratio;
+    }
+
+    public int getConsume_amount() {
+        return consume_amount;
+    }
+
+    public void setConsume_amount(int consume_amount) {
+        this.consume_amount = consume_amount;
+    }
+
+    public VoucherRecord getLog() {
+        return Log;
+    }
+
+    public void setLog(VoucherRecord log) {
+        Log = log;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getIcon() {
+        return icon;
+    }
+
+
+
+
+
+
+
+    /**
+     * 福利内容
+     *
+     * @return
+     */
+    public String getGiftRatioText() {
+        return String.format(Locale.CHINA, "每充500抵%d", gift_ratio * 5);
+    }
+
+    /**
+     * 剩余金额
+     *
+     * @return
+     */
+    public String getSurplusText() {
+        return String.format(Locale.CHINA, "剩余<font color='#7AD5F6'>%s</font>元", this.Log != null ? NumberFormatUtils.retainMost2(this.Log.getSurplusAmount()) : "0");
+    }
+
+    public String getDateText() {
+        return this.Log != null ? TimeUtil.TimeStamp2Date(this.Log.getCreateTime(), "yyyy/MM/dd") : "";
+    }
+
+    /**
+     * -金额
+     *
+     * @return
+     */
+    public String getConsumptionAmountText() {
+        return String.format(Locale.CHINA, "-%s", NumberFormatUtils.retainMost2(this.Log != null ? this.Log.getConsumptionAmount() : 0));
+    }
+}

+ 0 - 8
app/src/main/java/com/sheep/gamegroup/model/entity/Welfare.java

@@ -1,8 +0,0 @@
-package com.sheep.gamegroup.model.entity;
-
-/**
- * Created by realicing on 2018/8/28.
- * realicing@sina.com
- */
-public class Welfare {
-}

+ 72 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/WelfareLog.java

@@ -0,0 +1,72 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/9/4.
+ * realicing@sina.com
+ */
+public class WelfareLog {
+    private int Id;
+
+    private int UserId;
+
+    private String GameId;
+
+    private int Platform;
+
+    private int Balance;
+
+    private int TotalAssets;
+
+    private int UpdateTime;
+
+    private int CreateTime;
+
+    public void setId(int Id){
+        this.Id = Id;
+    }
+    public int getId(){
+        return this.Id;
+    }
+    public void setUserId(int UserId){
+        this.UserId = UserId;
+    }
+    public int getUserId(){
+        return this.UserId;
+    }
+    public void setGameId(String GameId){
+        this.GameId = GameId;
+    }
+    public String getGameId(){
+        return this.GameId;
+    }
+    public void setPlatform(int Platform){
+        this.Platform = Platform;
+    }
+    public int getPlatform(){
+        return this.Platform;
+    }
+    public void setBalance(int Balance){
+        this.Balance = Balance;
+    }
+    public int getBalance(){
+        return this.Balance;
+    }
+    public void setTotalAssets(int TotalAssets){
+        this.TotalAssets = TotalAssets;
+    }
+    public int getTotalAssets(){
+        return this.TotalAssets;
+    }
+    public void setUpdateTime(int UpdateTime){
+        this.UpdateTime = UpdateTime;
+    }
+    public int getUpdateTime(){
+        return this.UpdateTime;
+    }
+    public void setCreateTime(int CreateTime){
+        this.CreateTime = CreateTime;
+    }
+    public int getCreateTime(){
+        return this.CreateTime;
+    }
+}

+ 7 - 6
app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyContract.java

@@ -1,6 +1,7 @@
 package com.sheep.gamegroup.presenter;
 
-import com.sheep.gamegroup.model.entity.RequestParameEty;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.RequestParamEty;
 
 /**
  * Created by ljy on 2018/3/19.
@@ -10,10 +11,10 @@ public interface TryMakeMoneyContract {
 
     interface Presenter{
         void getData(Object o);
-        void acceptedTask(RequestParameEty o);//获取已接受的任务
+        void acceptedTask(RequestParamEty o);//获取已接受的任务
         void returnTask(int is_succession, int show_game_task);//获取我正在运行的任务
         void runGameTask();//获取正在运行的游戏任务
-        void releaseTask(RequestParameEty o);//获取正在运行的任务
+        void releaseTask(RequestParamEty o);//获取正在运行的任务
 
         void giveUpTask(int id);//放弃任务接口
     }
@@ -26,9 +27,9 @@ public interface TryMakeMoneyContract {
         void giveUpTaskSuccesView(Object o);//
         void giveUpTaskFailView(Object o);//
 
-        void returnTaskTaskUpdataView(Object o);
+        void returnTaskTaskUpdateView(Object o);
         void failReturnTask2View(Object o);
-        void releaseTaskTaskUpdataView(Object o);
-        void failReleaseTask2View(Object o);
+        void releaseTaskTaskUpdateView(BaseMessage baseMessage, int about_to_begin);
+        void failReleaseTask2View(BaseMessage baseMessage, int about_to_begin);
     }
 }

+ 9 - 9
app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyPresenter.java

@@ -2,7 +2,7 @@ package com.sheep.gamegroup.presenter;
 
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.RequestParameEty;
+import com.sheep.gamegroup.model.entity.RequestParamEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
@@ -33,7 +33,7 @@ public class TryMakeMoneyPresenter implements TryMakeMoneyContract.Presenter {
     }
 
     @Override
-    public void acceptedTask(RequestParameEty o) {
+    public void acceptedTask(RequestParamEty o) {
         apiService.acceptedTask(o.getPage(), o.getPer_page(), 0)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -71,7 +71,7 @@ public class TryMakeMoneyPresenter implements TryMakeMoneyContract.Presenter {
 
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        view.returnTaskTaskUpdataView(baseMessage);
+                        view.returnTaskTaskUpdateView(baseMessage);
 
                     }
                 });
@@ -90,32 +90,32 @@ public class TryMakeMoneyPresenter implements TryMakeMoneyContract.Presenter {
 
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        view.returnTaskTaskUpdataView(baseMessage);
+                        view.returnTaskTaskUpdateView(baseMessage);
 
                     }
                 });
     }
 
     @Override
-    public void releaseTask(RequestParameEty o) {
+    public void releaseTask(RequestParamEty o) {
 
         HashMap<String, String> hashMap = o.getHashMap();
-
+        final int about_to_begin = Integer.valueOf(hashMap.get("about_to_begin"));
         apiService.releaseTask(Integer.valueOf(hashMap.get("page")),Integer.valueOf(hashMap.get("per_page")),
                 Integer.valueOf(hashMap.get("platform")),Integer.valueOf(hashMap.get("is_hot")),
-                Integer.valueOf(hashMap.get("is_recommend")),Integer.valueOf(hashMap.get("about_to_begin")),
+                Integer.valueOf(hashMap.get("is_recommend")),about_to_begin,
                 hashMap.get("task_type"), Integer.valueOf(hashMap.get("is_succession")))
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
                     @Override
                     public void onError(BaseMessage baseMessage) {
-                        view.failReleaseTask2View(baseMessage);
+                        view.failReleaseTask2View(baseMessage, about_to_begin);
                     }
 
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        view.releaseTaskTaskUpdataView(baseMessage);
+                        view.releaseTaskTaskUpdateView(baseMessage, about_to_begin);
 
                     }
                 });

+ 19 - 0
app/src/main/java/com/sheep/gamegroup/util/BinaryUtils.java

@@ -0,0 +1,19 @@
+package com.sheep.gamegroup.util;
+
+/**
+ * 二进制工具
+ * Created by realicing on 2018/9/3.
+ * realicing@sina.com
+ */
+public class BinaryUtils {
+
+    /**
+     * 判断数字number的第bit位是否为1
+     * @param number
+     * @param bit
+     * @return
+     */
+    public static boolean is(int number ,int bit){
+        return ((number >> (bit - 1)) & 1) == 1;
+    }
+}

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

@@ -42,6 +42,7 @@ import com.sheep.gamegroup.model.entity.GameAccountEntity;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
 import com.sheep.gamegroup.model.entity.NewbieTask;
 import com.sheep.gamegroup.model.entity.NewbieTaskRecord;
+import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.model.entity.RouserArticlesEntity;
 import com.sheep.gamegroup.model.entity.SlideshowEty;
 import com.sheep.gamegroup.model.entity.TaskChild;
@@ -552,8 +553,8 @@ public class CommonUtil {
         if (tAskEnty != null) {
             if (AutoTaskListUtil.getInstance().addTask(tAskEnty)) {
                 AutoTaskListUtil.getInstance().resetReceiveTaskTime();//重置比对时间  5.1及以上使用
-                AppUsageManager.getInstance().tryOpenLookAppUsageStatsPermisson(true);//尝试打开权限对话框 5.1及以上使用
             }
+            AppUsageManager.getInstance().tryOpenLookAppUsageStatsPermisson(true);//尝试打开权限对话框 5.1及以上使用
             AutoTaskListUtil.getInstance().initTaskList();
         } else {//每次取消任务都重置记录
             AutoTaskListUtil.getInstance().initTaskList();
@@ -1110,6 +1111,16 @@ public class CommonUtil {
                     }
                 });
     }
+    public void callActionWithUserInfo(final Action1<UserEntity> action1) {
+        UserEntity userEntity = DataUtil.getInstance().getUserEntity();
+        if(userEntity == null) {
+            updateUserInfo(action1);
+        } else {
+            if(action1 != null){
+                action1.call(userEntity);
+            }
+        }
+    }
 
     /**
      * 判断地址是否为图片
@@ -1566,6 +1577,9 @@ public class CommonUtil {
 
     //设置无数据显示
     public void updateEmptyView(View empty_view, boolean showEmpty, boolean isNetImg) {
+        if(empty_view == null){
+            return;
+        }
         if (showEmpty) {
             empty_view.setVisibility(View.VISIBLE);
             ImageView empty_view_img = empty_view.findViewById(R.id.empty_view_img);
@@ -1628,6 +1642,8 @@ public class CommonUtil {
                     jsonObject.put("id", ((XiaomiGameEntity) items).getId());
                 } else if (items instanceof FindApp) {
                     jsonObject.put("id", ((FindApp) items).getId());
+                } else if(items instanceof PlayGameEntity){
+                    jsonObject.put("id", ((PlayGameEntity) items).getId());
                 }
 
                 ViewUtil.newInstance().showProgress((Activity) activity);

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

@@ -36,6 +36,7 @@ import com.sheep.gamegroup.model.entity.XianWanEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.view.activity.ActAudit;
 import com.sheep.gamegroup.view.activity.ActBindMobileRegister;
+import com.sheep.gamegroup.view.activity.ActModifyThird;
 import com.sheep.gamegroup.view.activity.ActCreditCardTaskList;
 import com.sheep.gamegroup.view.activity.ActCreditCardWeb;
 import com.sheep.gamegroup.view.activity.ActDownloadWelfareList;
@@ -56,6 +57,7 @@ import com.sheep.gamegroup.view.activity.ActMyWelfare;
 import com.sheep.gamegroup.view.activity.ActNewAboutUs;
 import com.sheep.gamegroup.view.activity.ActNewbieTaskList;
 import com.sheep.gamegroup.view.activity.ActNotice;
+import com.sheep.gamegroup.view.activity.ActPlayGameDetail;
 import com.sheep.gamegroup.view.activity.ActReservation;
 import com.sheep.gamegroup.view.activity.ActSearchGame;
 import com.sheep.gamegroup.view.activity.ActSetting;
@@ -1522,6 +1524,14 @@ public class Jump2View {
         GAME_MY_WELFARE.onEvent();
     }
     /**
+     * 进入验证手机号
+     */
+    public void goBindThird(final Activity activity, @ActModifyThird.THIRD_TYPE final String type) {
+        Intent intent = new Intent(activity, ActModifyThird.class);
+        intent.putExtra("type", type);
+        activity.startActivity(intent);
+    }
+    /**
      * 每日必做、近期最热
      */
     public void goEverydayOrCurrentHotGame(Activity activity, int type){
@@ -1529,4 +1539,12 @@ public class Jump2View {
         intent.putExtra("type", type);
         activity.startActivity(intent);
     }
+    /**
+     * 每日必做、近期最热
+     */
+    public void goPlayGameDetail(Activity activity, int id){
+        Intent intent = new Intent(activity, ActPlayGameDetail.class);
+        intent.putExtra("id", id);
+        activity.startActivity(intent);
+    }
 }

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

@@ -286,7 +286,8 @@ public class TestUtil {
      * @param activity
      */
     public static void test(final Activity activity) {
-        final String[] items = {"复制token","复制打点数据","审核中心","检查正版","crc32","loading","progress","查看截图","复制imsi","小米游戏","测试可用金额","测试定位信息","测试apk的渠道","幂动科技","游戏搜索",
+        final String[] items = {"复制token","复制打点数据","审核中心","检查正版","crc32","loading","progress","查看截图",
+                "复制imsi","小米游戏","测试可用金额","测试定位信息","测试apk的渠道","幂动科技","游戏搜索",
                 "游戏帐号","游戏代充","尝试开启第三方应用使用情况","测试代理页面","第三方应用使用情况",
                 "开启第三方应用使用情况","h5跳转","新手对话框","md5","空间不足提示框",
                 "显示已经安装应用列表","复制faq地址","复制代理地址","复制世界杯地址","任务游戏列表","世界杯活动","交通银行信用卡测试",

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

@@ -126,7 +126,7 @@ public class UMConfigUtils {
         QR_SAVE("保存二维码至手机"),//5093
         QR_COPY("复制二维码链接"),//5094
         LINK_SHARE("分享链接"),//5095
-        BIND_WX("绑定微信"),//5096
+        BIND_TX_WX("绑定提现微信"),//5096
         BIND_PHONE("绑定手机号"),//5097
         SHARE_TO_WX("分享到微信"),//5098
         SHARE_TO_QQ("分享到QQ"),//5099
@@ -157,6 +157,8 @@ public class UMConfigUtils {
         GAME_DOWNLOAD_WELFARE_LIST("下载福利列表"),
         GAME_GIFT_CENTER("礼包中心"),
         GAME_MY_WELFARE("我的福利"),
+        BIND_QQ("绑定QQ"),
+        BIND_WX("绑定微信"),
         ;
         private String tag;
 

+ 14 - 14
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -63,11 +63,13 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.GameAccountEntity;
+import com.sheep.gamegroup.model.entity.GiftBag;
+import com.sheep.gamegroup.model.entity.GiftBagApp;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
 import com.sheep.gamegroup.model.entity.PayEntity;
 import com.sheep.gamegroup.model.entity.PictureInvitationEntity;
 import com.sheep.gamegroup.model.entity.RobTask;
-import com.sheep.gamegroup.model.entity.Welfare;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.glide.RoundedCornersTransformation;
 import com.sheep.gamegroup.view.activity.PersonalInfoAct;
@@ -85,6 +87,7 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import org.afinal.simplecache.ACache;
@@ -495,13 +498,7 @@ public class ViewUtil {
             @Override
             public void onSetNoMore(View yourFooterView, boolean noMore) {
                 TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
-                bottom_line_text.setText("我是有底线的,点击我回到顶部");
-                yourFooterView.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        view_list.scrollToPosition(0);
-                    }
-                });
+                bottom_line_text.setText("我是有底线的");
             }
         });
         return view;
@@ -604,9 +601,9 @@ public class ViewUtil {
      * 领取福利成功的对话框
      *
      * @param activity
-     * @param welfare
+     * @param item
      */
-    public static void shareGetWelfareDialog(final Activity activity, final Welfare welfare) {
+    public static void shareGetWelfareDialog(final Activity activity, final GiftBagApp item) {
         View dialog_parent = View.inflate(activity, R.layout.dialog_parent, null);
         final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.MyDialogActivityTheme)
                 .setView(dialog_parent)
@@ -625,12 +622,14 @@ public class ViewUtil {
         final TextView get_welfare_code_tv = view.findViewById(R.id.get_welfare_code_tv);
         TextView get_welfare_copy_tv = view.findViewById(R.id.get_welfare_copy_tv);
         TextView get_welfare_content_tv = view.findViewById(R.id.get_welfare_content_tv);
-        //TODO 设置内容与兑换码
-
+        // 设置内容与兑换码
+        get_welfare_content_tv.setText(String.format(Locale.CHINA, "礼包内容:%s", item.getGift_bag().getGiftContent()));
+        get_welfare_code_tv.setText(String.format(Locale.CHINA, "兑换码:%s", item.getCode()));
         get_welfare_copy_tv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                StringUtils.CopyText(get_welfare_code_tv.getText().toString());
+                StringUtils.CopyText(item.getCode());
+                G.showToast("复制兑换码成功");
             }
         });
 
@@ -638,7 +637,8 @@ public class ViewUtil {
             @Override
             public void onClick(View v) {
                 dialog.dismiss();
-                //TODO 启动游戏
+                //启动游戏
+                PackageUtil.startApp(activity, item.getApp().getPackage_names());
             }
         });
         dialog_btn_left.setOnClickListener(new View.OnClickListener() {

+ 3 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActBindMobileRegister.java

@@ -26,6 +26,8 @@ import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
+import java.util.Locale;
+
 import butterknife.BindView;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.schedulers.Schedulers;
@@ -80,8 +82,7 @@ public class ActBindMobileRegister extends BaseActivity {
 
             @Override
             public void onTimerTick(long millisUntilFinished, int countTime) {
-                String textStr = countTime + " s";
-                bind_mobile_register_code_tv.setText(textStr);
+                bind_mobile_register_code_tv.setText(String.format(Locale.CHINA, "%d s", countTime));
             }
 
             @Override

+ 4 - 3
app/src/main/java/com/sheep/gamegroup/view/activity/ActEverydayPlayGame.java

@@ -4,6 +4,7 @@ import android.support.v7.widget.RecyclerView;
 
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.view.adapter.PlayGameItemAdapter;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
@@ -17,7 +18,7 @@ import rx.Observable;
  * Created by ljy on 2018/9/3.
  */
 
-public class ActEverydayPlayGame extends BaseListActivity<PlayGameEntity> {
+public class ActEverydayPlayGame extends BaseListActivity<GameEntity> {
     private int type;
     @Override
     protected RecyclerView.Adapter getAdapter() {
@@ -37,8 +38,8 @@ public class ActEverydayPlayGame extends BaseListActivity<PlayGameEntity> {
     }
 
     @Override
-    protected Class<PlayGameEntity> getTClass() {
-            return PlayGameEntity.class;
+    protected Class<GameEntity> getTClass() {
+            return GameEntity.class;
     }
 
     @Override

+ 3 - 4
app/src/main/java/com/sheep/gamegroup/view/activity/ActGameCenter.java

@@ -29,11 +29,10 @@ public class ActGameCenter extends BaseActivity {
         activity = this;
         TitleBarUtils.getInstance()
                 .setTitleFinish(activity)
-                .setRightBotton(activity, "我的福利", 0, new View.OnClickListener() {
+                .setRightImgBotton(activity,  R.mipmap.search_black_img, new View.OnClickListener() {
                     @Override
-                    public void onClick(View v) {
-                        // 进入我的福利界面
-                        Jump2View.getInstance().goMyWelfare(activity);
+                    public void onClick(View view) {
+                        Jump2View.getInstance().goGameSearch(activity, null);
                     }
                 })
                 .addTabs(activity, act_game_center_vp,"玩转游戏", new FgtPlayGame(), "福利中心", new FgtWelfareCenter());

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActGiftCenter.java

@@ -25,7 +25,7 @@ public class ActGiftCenter extends BaseActivity {
     @Override
     public void initView() {
         TitleBarUtils.getInstance()
-                .setTitle(this, "下载福利列表")
+                .setTitle(this, "礼包中心")
                 .setTitleFinish(this);
 
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

+ 311 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActModifyThird.java

@@ -0,0 +1,311 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.content.Intent;
+import android.support.annotation.StringDef;
+import android.support.v7.widget.AppCompatEditText;
+import android.text.InputFilter;
+import android.text.InputType;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSONObject;
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.UserEntity;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.SelfCountDownTimer;
+import com.sheep.gamegroup.util.StringUtils;
+import com.sheep.gamegroup.util.TestUtil;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.umeng.socialize.UMAuthListener;
+import com.umeng.socialize.UMShareAPI;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Locale;
+import java.util.Map;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+
+/**
+ * 验证手机号后绑定第三方账号QQ或者微信
+ * Created by realicing on 2018/9/3.
+ * realicing@sina.com
+ */
+public class ActModifyThird extends BaseActivity {
+    public static final String THIRD_TYPE_QQ = "modifyqzone";
+    public static final String THIRD_TYPE_WX = "modifywechat";
+    @BindView(R.id.modify_third_mobile_et)
+    AppCompatEditText modifyThirdMobileEt;
+    @BindView(R.id.modify_third_code_btn)
+    TextView modifyThirdCodeBtn;
+    @BindView(R.id.modify_third_code_et)
+    AppCompatEditText modifyThirdCodeEt;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.act_modify_third;
+    }
+
+    private String type;
+    @Override
+    public void initView() {
+        TitleBarUtils.getInstance()
+                .setTitle(this, "验证手机号")
+                .setTitleFinish(this);
+        type = getIntent().getStringExtra("type");
+        if(StringUtils.isMobile(DataUtil.getInstance().getUserMobile())) {
+            modifyThirdMobileEt.setText(DataUtil.getInstance().getUserMobile());
+            modifyThirdMobileEt.setEnabled(false);
+        }
+        if(BuildConfig.DEBUG){
+            modifyThirdMobileEt.setInputType(InputType.TYPE_CLASS_TEXT);
+            modifyThirdMobileEt.setFilters(new InputFilter[]{new InputFilter.LengthFilter(1000)});
+        }
+    }
+
+    private SelfCountDownTimer selfCountDownTimer;
+    @Override
+    public void initListener() {
+        selfCountDownTimer = new SelfCountDownTimer(60 * 1000, 1000, SelfCountDownTimer.FULL_SECOND) {
+            @Override
+            public void onTimerRest() {
+                modifyThirdCodeBtn.setText(getString(R.string.get_captcha));
+                modifyThirdCodeBtn.setEnabled(true);
+            }
+
+            @Override
+            public void onTimerTick(long millisUntilFinished, int countTime) {
+                modifyThirdCodeBtn.setText(String.format(Locale.CHINA, "%d s", countTime));
+            }
+
+            @Override
+            public void onTimerFinish() {
+                selfCountDownTimer.reset(SelfCountDownTimer.FULL_SECOND);
+            }
+        };
+    }
+
+    private String genre;
+
+
+    @StringDef({THIRD_TYPE_QQ, THIRD_TYPE_WX})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface THIRD_TYPE {
+    }
+    @Override
+    public void initData() {
+        genre = getIntent().getStringExtra("type");
+    }
+    @OnClick({R.id.modify_third_code_btn, R.id.modify_third_commit})
+    public void onViewClicked(View view) {
+        switch (view.getId()) {
+            case R.id.modify_third_code_btn:
+                getCaptcha(view);
+                break;
+            case R.id.modify_third_commit:
+                toCommit(view);
+                break;
+        }
+    }
+    private String mMobile;
+    /**
+     * 获取验证码
+     * captcha	string
+     genre	string
+     enum:modifyqzone,modifywechat
+     mobile	string
+     step	string
+     enum:first,second
+     * @param view
+     */
+    public void getCaptcha(View view) {
+        //检查手机号
+        final String mobile = modifyThirdMobileEt.getText().toString().trim();
+        if(!StringUtils.isMobile(mobile)){
+            G.showToast("请填写正确的手机号!");
+            return;
+        }
+        modifyThirdCodeBtn.setEnabled(false);
+        //提交数据获取验证码
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("genre", genre);
+        jsonObject.put("mobile", mobile);
+        jsonObject.put("step", "first");
+        SheepApp.getInstance().getNetComponent().getApiService().modifyThirdSms(jsonObject)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        mMobile = mobile;
+                        G.showToast("验证码已经发送");
+                        modifyThirdCodeEt.requestFocus();
+                        selfCountDownTimer.start();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+                        modifyThirdCodeBtn.setEnabled(true);
+                    }
+                });
+    }
+    /**
+     * 检验验证码
+     * @param view
+     */
+    public void toCommit(View view) {
+        final String captcha = modifyThirdCodeEt.getText().toString().trim();
+        if(TextUtils.isEmpty(captcha)){
+            G.showToast("请输入验证码");
+            if(BuildConfig.DEBUG && modifyThirdMobileEt.getText().toString().length() > 11){
+                authorization_code = modifyThirdMobileEt.getText().toString().trim();
+                modifyThird();
+            }
+            return;
+        }
+        //提交数据获取验证码
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("captcha", captcha);
+        jsonObject.put("genre", genre);
+        jsonObject.put("mobile", mMobile);
+        jsonObject.put("step", "second");
+        SheepApp.getInstance().getNetComponent().getApiService().modifyThirdSms(jsonObject)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        authorization_code = baseMessage.getData(String.class);
+                        modifyThird();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+                    }
+                });
+    }
+    private String authorization_code;//验证手机成功后得到的token
+
+    private void modifyThird() {
+        switch (type){
+            case THIRD_TYPE_QQ:
+                modifyQQ();
+                break;
+            case THIRD_TYPE_WX:
+                modifyWX();
+                break;
+        }
+    }
+
+    private void modifyQQ() {
+        UMShareAPI.get(this).doOauthVerify(this, SHARE_MEDIA.QQ, new UMAuthListener() {
+            @Override
+            public void onStart(SHARE_MEDIA platform) {
+                showProgress();
+            }
+
+            @Override
+            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
+                modifyThird("qzone", data.get("access_token"), data.get("openid"));
+            }
+
+            @Override
+            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
+                G.showToast("QQ授权失败  请检查网络是否正常");
+                hideProgress();
+            }
+
+            @Override
+            public void onCancel(SHARE_MEDIA platform, int action) {
+                G.showToast("您取消了QQ授权");
+                hideProgress();
+            }
+        });
+    }
+    private void modifyWX() {
+        UMShareAPI.get(this).doOauthVerify(this, SHARE_MEDIA.WEIXIN, new UMAuthListener() {
+            @Override
+            public void onStart(SHARE_MEDIA platform) {
+                showProgress();
+            }
+
+            @Override
+            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
+                modifyThird("wechat", data.get("access_token"), data.get("openid"));
+            }
+
+            @Override
+            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
+                G.showToast("微信授权失败  请检查网络是否正常");
+                hideProgress();
+            }
+
+            @Override
+            public void onCancel(SHARE_MEDIA platform, int action) {
+                G.showToast("您取消了微信授权");
+                hideProgress();
+            }
+        });
+    }
+
+    /**
+     * aaccess_token	string
+     authorization_code	string
+     open_id	string
+     platform	string
+            qzone, wechat
+     s_from	string
+            sheep, web_sheep
+     */
+    private void modifyThird(String platform, String access_token, String openid) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("access_token", access_token);
+        jsonObject.put("authorization_code", authorization_code);
+        jsonObject.put("open_id", openid);
+        jsonObject.put("platform", platform);
+        jsonObject.put("s_from", "sheep");
+        SheepApp.getInstance().getNetComponent().getApiService().modifyThird(jsonObject)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        hideProgress();
+                        G.showToast(baseMessage);
+                        CommonUtil.getInstance().updateUserInfo(null);
+                        finish();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        hideProgress();
+                        G.showToast(baseMessage);
+                    }
+                });
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        try {
+            UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 463 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActPlayGameDetail.java

@@ -0,0 +1,463 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.support.design.widget.AppBarLayout;
+import android.support.design.widget.TabLayout;
+import android.support.v4.view.ViewPager;
+import android.support.v7.widget.AppCompatRatingBar;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.arialyy.annotations.Download;
+import com.arialyy.aria.core.Aria;
+import com.arialyy.aria.core.download.DownloadTask;
+import com.kfzs.duanduan.event.BigEvent;
+import com.kfzs.duanduan.mine.GiftpackListAdapter;
+import com.kfzs.duanduan.services.DownloadTaskService;
+import com.kfzs.duanduan.utils.dlg.HelperUtils;
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.model.entity.PlayGameEntity;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.TimeUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.fragment.FgtPlaGameGift;
+import com.sheep.gamegroup.view.fragment.FgtPlayGameDetail;
+import com.sheep.gamegroup.view.fragment.FgtPlayGameSon;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import org.afinal.simplecache.ApiKey;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+
+import static android.content.Intent.ACTION_PACKAGE_ADDED;
+import static android.content.Intent.ACTION_PACKAGE_REMOVED;
+
+/**
+ * Created by ljy on 2018/9/4.
+ */
+
+public class ActPlayGameDetail extends BaseActivity implements Action1<Integer> {
+    @BindView(R.id.appbar_act_game_details)
+    AppBarLayout appbarActGameDetails;
+    @BindView(R.id.bottom_line_text)
+    TextView bottomLineText;
+    @BindView(R.id.bottom_line)
+    LinearLayout bottomLine;
+    @BindView(R.id.status_height_view)
+    View statusHeightView;
+    @BindView(R.id.find_game_bar)
+    View find_game_bar;
+    @BindView(R.id.title_bottom_line)
+    LinearLayout title_bottom_line;
+    @BindView(R.id.img_baseactivity_title)
+    ImageView img_baseactivity_title;
+    @BindView(R.id.txt_baseactivity_title)
+    TextView txt_baseactivity_title;
+    @BindView(R.id.ibtn_baseactivity_right)
+    ImageButton ibtn_baseactivity_right;
+    @BindView(R.id.find_game_iv)
+    ImageView find_game_iv;
+    @BindView(R.id.find_game_name_tv)
+    TextView find_game_name_tv;
+    @BindView(R.id.find_game_info_tv)
+    TextView find_game_info_tv;
+    @BindView(R.id.find_game_xin)
+    AppCompatRatingBar find_game_xin;
+    @BindView(R.id.find_game_down_tv)
+    TextView find_game_down_tv;
+    @BindView(R.id.viewpager_act_game_details)
+    ViewPager mViewPager;
+    @BindView(R.id.tabLayout)
+    TabLayout tabLayout;
+    @BindView(R.id.welfare_gift_layout)
+    LinearLayout welfare_gift_layout;
+    @BindView(R.id.welfare_tv)
+    TextView welfare_tv;
+    @BindView(R.id.gift_tv)
+    TextView gift_tv;
+
+    private Activity activity;
+    private int id;
+    private boolean mIsExpanded = false;//是否是折叠状态
+
+    private GameEntity gameEntity;
+    private PlayGameEntity playGameEntity;
+    private boolean isNeedReservation = false;
+    private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
+
+    private GiftpackListAdapter mAdapter;
+    private int curPosition = 0;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.act_play_game_detail_layout;
+    }
+
+    @Override
+    public void initView() {
+        id = getIntent().getIntExtra("id", 0);
+        activity = this;
+        TitleBarUtils.getInstance()
+                .setTitle(this, "详情")
+                .setTitleFinish(this);
+        EventBus.getDefault().register(this);
+        Aria.download(this).register();
+
+        txt_baseactivity_title.setVisibility(View.INVISIBLE);//不显示标题栏
+
+        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 0);
+        statusHeightView.setLayoutParams(params);
+
+        appbarActGameDetails.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
+            @Override
+            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
+                int nameWidth = find_game_name_tv.getWidth();
+                if (nameWidth == 0) {
+                    find_game_name_tv.measure(0, 0);
+                    nameWidth = find_game_name_tv.getMeasuredWidth();
+                }
+                int infoWidth = find_game_info_tv.getWidth();
+                if (infoWidth == 0) {
+                    find_game_info_tv.measure(0, 0);
+                    infoWidth = find_game_info_tv.getMeasuredWidth();
+                }
+                //图标位置变化
+                int find_game_top = getResources().getDimensionPixelSize(R.dimen.find_game_top);
+                int find_icon_with = getResources().getDimensionPixelSize(R.dimen.find_icon_with);
+//                int leftMargin = getResources().getDimensionPixelSize(R.dimen.content_padding_5);
+                int titleHeight = img_baseactivity_title.getHeight();
+                int titleWidth = img_baseactivity_title.getWidth();
+                int topRow = (titleHeight - find_game_name_tv.getHeight() - find_game_info_tv.getHeight()) / 5;
+                int topRow2 = (titleHeight - find_game_name_tv.getHeight()) / 2;
+                int leftRow = topRow2 / 4;//isNeedReservation ? topRow : 5 * topRow;
+
+                int willTop = Math.max(topRow/2, find_game_top + verticalOffset);
+                int row = (find_icon_with * willTop + titleHeight * (find_game_top - willTop)) / find_game_top - topRow;
+                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) find_game_iv.getLayoutParams();
+                layoutParams.leftMargin = Math.max(titleWidth, (G.WIDTH - find_icon_with) / 2 + verticalOffset);
+                layoutParams.topMargin = willTop;
+                layoutParams.width = row;
+                layoutParams.height = row;
+                find_game_iv.setLayoutParams(layoutParams);
+                //名字位置变化
+                RelativeLayout.LayoutParams layoutParams2 = (RelativeLayout.LayoutParams) find_game_name_tv.getLayoutParams();
+                layoutParams2.leftMargin = Math.max(titleWidth + row + 2 * leftRow, (G.WIDTH - nameWidth) / 2 + verticalOffset);
+                layoutParams2.topMargin = Math.max(topRow2, getResources().getDimensionPixelSize(R.dimen.find_game_top2) + verticalOffset);
+                find_game_name_tv.setLayoutParams(layoutParams2);
+                //信息位置变化
+                RelativeLayout.LayoutParams layoutParams3 = (RelativeLayout.LayoutParams) find_game_info_tv.getLayoutParams();
+                int left1 = (G.WIDTH - infoWidth) / 2;
+                int left2 = titleWidth + row + 2 * leftRow;
+                layoutParams3.leftMargin = left1;//left2 > left1 ? Math.min(left2, left1 - verticalOffset) : Math.max(left2, left1 + verticalOffset);
+                layoutParams3.topMargin = /*Math.max(find_game_name_tv.getHeight() + 4 * topRow, */getResources().getDimensionPixelSize(R.dimen.find_game_top3) + verticalOffset/*)*/;
+                find_game_info_tv.setLayoutParams(layoutParams3);
+                //下载按钮位置变化
+                RelativeLayout.LayoutParams layoutParams4 = (RelativeLayout.LayoutParams) welfare_gift_layout.getLayoutParams();
+                layoutParams4.setMarginEnd(Math.max(ibtn_baseactivity_right.getWidth(), (G.WIDTH - welfare_gift_layout.getWidth()) / 2 + verticalOffset));
+                layoutParams4.topMargin = getResources().getDimensionPixelSize(R.dimen.find_game_top5) + verticalOffset;//Math.max((titleHeight - welfare_gift_layout.getHeight()) / 2, getResources().getDimensionPixelSize(R.dimen.find_game_top4) + verticalOffset);// Math.max(topRow, getResources().getDimensionPixelSize(R.dimen.find_game_top4) + verticalOffset);
+                welfare_gift_layout.setLayoutParams(layoutParams4);
+                //星级位置变化
+                RelativeLayout.LayoutParams layoutParams5 = (RelativeLayout.LayoutParams) find_game_xin.getLayoutParams();
+                layoutParams5.topMargin = getResources().getDimensionPixelSize(R.dimen.find_game_top210) + verticalOffset;
+                find_game_xin.setLayoutParams(layoutParams5);
+                if (willTop == topRow/2) {
+                    if (mIsExpanded) {
+//                        txt_baseactivity_title.setVisibility(View.INVISIBLE);
+                        find_game_bar.setVisibility(View.VISIBLE);
+                        title_bottom_line.setVisibility(View.VISIBLE);
+                        img_baseactivity_title.setImageLevel(1);
+                        mIsExpanded = false;//修改状态标记为折叠
+                    }
+                } else {
+                    if (!mIsExpanded) {
+                        mIsExpanded = true;//修改状态标记为展开
+//                        txt_baseactivity_title.setVisibility(View.VISIBLE);
+                        find_game_bar.setVisibility(View.INVISIBLE);
+                        title_bottom_line.setVisibility(View.INVISIBLE);
+                        img_baseactivity_title.setImageLevel(0);
+                    }
+                }
+            }
+        });
+
+        //viewpaper
+        initViewPaper();
+        resetData();
+
+        initData();
+    }
+
+    private void initViewPaper() {
+        mAdapter = new GiftpackListAdapter(getSupportFragmentManager(), SheepApp.getInstance());
+        mAdapter.add(FgtPlayGameDetail.newInstance(gameEntity), "详情");
+        mAdapter.add(FgtPlaGameGift.newInstance(gameEntity), "礼包");
+        mViewPager.setAdapter(mAdapter);
+        tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
+        tabLayout.setupWithViewPager(mViewPager);
+        CommonUtil.getInstance().reflex(tabLayout, activity);
+    }
+    private void resetData() {
+        //游戏简介与下载
+        ViewUtil.setText(find_game_name_tv);
+        ViewUtil.setText(find_game_info_tv);
+        ViewUtil.setText(find_game_down_tv);
+        find_game_xin.setRating(0.0f);
+        //游戏介绍
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+
+    @Override
+    public void initData() {
+        GameEntity gameEntity = DataUtil.getInstance().getCacheResult(ApiKey.applications(id), GameEntity.class);
+        loadApp(gameEntity);
+
+        initDetailFromNet();
+    }
+
+    private void loadApp(GameEntity gameEntity) {
+        if (gameEntity != null) {
+            loadData(gameEntity);
+        } else {
+            resetData();
+        }
+    }
+
+    private void loadData(GameEntity gameEntity) {
+        this.gameEntity = gameEntity;
+        playGameEntity = gameEntity.getApp();
+        //游戏简介与下载
+        GlideImageLoader.setGameImage(find_game_iv, gameEntity.getApp().getIcon());
+        ViewUtil.setText(find_game_name_tv, gameEntity.getApp().getName());
+        isNeedReservation = !gameEntity.getApp().isCanDonload();//这里认为只有两种状态:可下载与预约下载
+        if (isNeedReservation)
+            ViewUtil.setText(find_game_info_tv, String.format(Locale.CHINA, "开放时间:%s", TimeUtil.TimeStamp2Date(gameEntity.getApp().getDownload_at(), "yyyy-MM-dd\u0020HH:mm")));
+        else {
+            String format = "包体大小 (%sM)";
+            ViewUtil.setText(find_game_info_tv, String.format(Locale.CHINA, format, gameEntity.getApp().getPackage_size()));
+        }
+
+        find_game_xin.setRating(gameEntity.getApp().getScore() / 2);
+
+        updateView(this, gameEntity.getApp(), find_game_down_tv);
+
+    }
+
+    //更新按钮状态与添加点击事件
+    private void updateView(Activity activity, PlayGameEntity playGameEntity, TextView textView) {
+//        if(playGameEntity.getAvailable_receive() == 0 && playGameEntity.getReceive_account() == 0){//未领取账号
+//
+//            CommonUtil.getInstance()
+//                    .xiaomiRevieceAcctoun(find_game_down_tv, playGameEntity, activity);
+//        }else
+        if (playGameEntity.isCanDonload()) {//可下载
+            downLoadTextViewMap.put(playGameEntity.getDownload_url(), textView);
+            downLoadTextViewMap.put(playGameEntity.getPackage_name(), textView);
+            playGameEntity.getFindAppHelper().updateDownloadTaskView(activity, playGameEntity, textView);
+        } else {//预约下载
+            playGameEntity.getFindAppHelper().updateReservationView(activity, playGameEntity, textView);
+        }
+    }
+
+
+    private void initDetailFromNet() {
+        showProgress();
+        SheepApp.getInstance().getNetComponent().getApiService().playGameDetail(id)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(this) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.playGameDetail(id));
+                        if(isNewData) {
+                            GameEntity gameEntity = baseMessage.getData(GameEntity.class);
+                            loadApp(gameEntity);
+                        }
+                        hideProgress();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+                        resetData();
+                        hideProgress();
+                    }
+                });
+    }
+    @Override
+    public void call(Integer integer) {
+
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        Aria.download(this).unRegister();
+        EventBus.getDefault().unregister(this);
+    }
+    //获取任务对应的TextView来更新进度
+    private TextView getTextViewByTask(DownloadTask task) {
+        return getTextViewByKey(task.getKey());
+    }
+
+    private TextView getTextViewByKey(String key) {
+        if (downLoadTextViewMap.containsKey(key))
+            return downLoadTextViewMap.get(key);
+        return null;
+    }
+
+    //下载状态监听
+
+    @Download.onPre
+    void onPre(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText("准备下载中");
+        }
+    }
+
+    @Download.onTaskStart
+    void taskStart(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText("开始下载中");
+        }
+    }
+
+    @Download.onTaskResume
+    void taskResume(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText("恢复下载中");
+        }
+    }
+
+    //在这里处理任务执行中的状态,如进度进度条的刷新
+    @Download.onTaskRunning
+    protected void running(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText(String.format(Locale.CHINA, "%d%%", Math.abs(task.getPercent())));
+        }
+    }
+
+    @Download.onTaskStop
+    void taskStop(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
+        }
+    }
+
+    @Download.onNoSupportBreakPoint
+    void onNoSupportBreakPoint(DownloadTask task) {
+    }
+
+    @Download.onTaskCancel
+    void taskCancel(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText("已经取消");
+        }
+    }
+
+    @Download.onTaskFail
+    void taskFail(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText(CommonUtil.FAIL_DOWNLOAD);
+        }
+    }
+
+    @Download.onTaskComplete
+    void taskComplete(DownloadTask task) {
+        TextView textView = getTextViewByTask(task);
+        if (textView != null) {
+            textView.setText(CommonUtil.START_INSTALL);
+        }
+        if (gameEntity != null && gameEntity.getApp() != null && TextUtils.equals(task.getKey(), gameEntity.getApp().getDownload_link()))
+            gameEntity.getApp().updateState(DownloadTaskService.STATUS_FINISH);
+    }
+
+    @Subscribe
+    public void onEventMainThread(Intent intent) {
+        if (intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")) {
+            String packageName = intent.getDataString().replace("package:", "");
+
+            TextView textView = getTextViewByKey(packageName);
+            if (textView != null) {
+                switch (intent.getAction()) {
+                    case ACTION_PACKAGE_ADDED:
+                        textView.setText(CommonUtil.GAME_OPEN);
+                        break;
+                    case ACTION_PACKAGE_REMOVED:
+                        String path = PackageUtil.isExistsFile(packageName);
+                        if (TextUtils.isEmpty(path)) {
+                            textView.setText(CommonUtil.START_DOWNLOAD);
+                        } else {
+                            textView.setText(CommonUtil.START_INSTALL);
+                        }
+                        break;
+                }
+            }
+
+            if (playGameEntity != null && TextUtils.equals(packageName, playGameEntity.getPackage_names())) {
+                switch (intent.getAction()) {
+                    case ACTION_PACKAGE_ADDED:
+                        playGameEntity.updateState(DownloadTaskService.STATUS_INSTALLED);
+                        break;
+                    case ACTION_PACKAGE_REMOVED:
+                        String path = PackageUtil.isExistsFile(packageName);
+                        if (TextUtils.isEmpty(path)) {
+                            playGameEntity.updateState(DownloadTaskService.STATUS_INIT);
+                        } else {
+                            playGameEntity.updateState(DownloadTaskService.STATUS_FINISH);
+                        }
+                        break;
+                }
+            }
+        }
+    }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        switch (event.getEventTypes()){
+            case REFRESH_XIAOMI_GAME_LIST:
+                initData();
+                break;
+        }
+    }
+}

+ 0 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActXiaomiGame.java

@@ -70,8 +70,6 @@ public class ActXiaomiGame extends BaseActivity {
     public void initView() {
         activity = this;
         EventBus.getDefault().register(this);
-        Aria.download(this).register();
-
         TitleBarUtils.getInstance()
                 .setTitleFinish(activity)
                 .setTitle(activity, "小米游戏中心")

+ 16 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/LoginAct.java

@@ -139,7 +139,22 @@ public class LoginAct extends BaseUMActivity implements LoginContract.View {
     private void checkAccountScope(Editable editable) {
         String mobile = editable.toString();
         if(StringUtils.isMobile(mobile)){//是手机号才检查
-            //TODO 调用接口检查账号中的邀请码
+            //调用接口检查账号中的邀请码
+            SheepApp.getInstance().getNetComponent().getApiService().needCode(mobile)
+                            .subscribeOn(Schedulers.io())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                                @Override
+                                public void onNext(BaseMessage baseMessage) {
+                                    loginEtScope.setVisibility(baseMessage.getData(Boolean.class) ? View.VISIBLE : View.GONE);
+                                }
+
+                                @Override
+                                public void onError(BaseMessage baseMessage) {
+                                }
+                            });
+        } else {
+            loginEtScope.setVisibility(View.VISIBLE);
         }
 
     }

+ 175 - 18
app/src/main/java/com/sheep/gamegroup/view/activity/PersonalInfoAct.java

@@ -9,6 +9,7 @@ import android.widget.PopupWindow;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonObject;
 import com.sheep.gamegroup.absBase.AbsChooseImageActivity;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.UserEntity;
@@ -23,6 +24,11 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.umeng.socialize.UMAuthListener;
+import com.umeng.socialize.UMShareAPI;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+
+import java.util.Map;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
@@ -32,6 +38,8 @@ import rx.functions.Action1;
 import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_PHONE;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_QQ;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_TX_WX;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_WX;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_INFO_AVATAR;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_INFO_NAME;
@@ -57,6 +65,16 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
     TextView tvSex;
     @BindView(R.id.tv_birthday)
     TextView tvBirthday;
+    @BindView(R.id.personal_info_phone)
+    TextView personal_info_phone;
+    @BindView(R.id.personal_info_bind_tx_wx)
+    TextView personal_info_bind_tx_wx;
+    @BindView(R.id.personal_info_bind_qq)
+    TextView personal_info_bind_qq;
+    @BindView(R.id.personal_info_bind_wx)
+    TextView personal_info_bind_wx;
+    @BindView(R.id.personal_info_authentication)
+    TextView personal_info_authentication;
 
 
     @Override
@@ -82,12 +100,6 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
 
     }
 
-    @BindView(R.id.personal_info_phone)
-    TextView personal_info_phone;
-    @BindView(R.id.personal_info_wx)
-    TextView personal_info_wx;
-    @BindView(R.id.personal_info_authentication)
-    TextView personal_info_authentication;
 
     @Override
     public void initData() {
@@ -158,7 +170,9 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
                 });
     }
 
-    @OnClick({R.id.personal_info_avatar_container, R.id.personal_info_name_container, R.id.personal_info_qr_container, R.id.personal_info_phone_container, R.id.personal_info_wx_container,
+    @OnClick({R.id.personal_info_avatar_container, R.id.personal_info_name_container, R.id.personal_info_qr_container,
+            R.id.personal_info_phone_container, R.id.personal_info_bind_tx_wx_container,
+            R.id.personal_info_bind_qq_container, R.id.personal_info_bind_wx_container,
             R.id.personal_info_authentication_container, R.id.llayout_sex, R.id.llayout_birthday})
 
     public void onClick(View view) {
@@ -196,14 +210,53 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
                 Jump2View.getInstance().goBindPhone(activity, null);
                 BIND_PHONE.onEvent();
                 break;
-            case R.id.personal_info_wx_container:  ////跳转到微信
-                if (userEntity == null) {
-                    G.showToast(R.string.loading_data);
-                } else if (TextUtils.isEmpty(userEntity.getWx_openid())) {
-                    Jump2View.getInstance().goNoBindWx(activity, ChangeWxOrTelAct.TYPE_NORMAL);
-                } else {
-                    G.showToast("您已经绑定微信");
-                }
+            case R.id.personal_info_bind_tx_wx_container:  //跳转到绑定提现微信号的界面
+                CommonUtil.getInstance().callActionWithUserInfo(new Action1<UserEntity>() {
+                    @Override
+                    public void call(UserEntity userEntity) {
+                        if(userEntity == null){
+                            G.showToast(R.string.error_data);
+                        } else if (TextUtils.isEmpty(userEntity.getWx_openid())) {
+                            Jump2View.getInstance().goNoBindWx(activity, ChangeWxOrTelAct.TYPE_NORMAL);
+                        } else {
+                            G.showToast("您已经绑定微信");
+                        }
+                    }
+                });
+                BIND_TX_WX.onEvent();
+                break;
+            case R.id.personal_info_bind_qq_container:  //跳转到验证手机号并绑定qq的界面
+                CommonUtil.getInstance().callActionWithUserInfo(new Action1<UserEntity>() {
+                    @Override
+                    public void call(UserEntity userEntity) {
+                        if(userEntity == null){
+                            G.showToast(R.string.error_data);
+                        } else if(!userEntity.isBindMobile()){
+                            G.showToast("请先绑定手机号");
+                        } else if(!userEntity.isBindQQ()){
+                            bindQQ();
+                        } else {
+                            Jump2View.getInstance().goBindThird(activity, ActModifyThird.THIRD_TYPE_QQ);
+                        }
+                    }
+                });
+                BIND_QQ.onEvent();
+                break;
+            case R.id.personal_info_bind_wx_container:  //跳转到验证手机号并绑定微信的界面
+                CommonUtil.getInstance().callActionWithUserInfo(new Action1<UserEntity>() {
+                    @Override
+                    public void call(UserEntity userEntity) {
+                        if(userEntity == null){
+                            G.showToast(R.string.error_data);
+                        } else if(!userEntity.isBindMobile()){
+                            G.showToast("请先绑定手机号");
+                        } else if(!userEntity.isBindWx()){
+                            bindWX();
+                        } else {
+                            Jump2View.getInstance().goBindThird(activity, ActModifyThird.THIRD_TYPE_WX);
+                        }
+                    }
+                });
                 BIND_WX.onEvent();
                 break;
             case R.id.personal_info_authentication_container: ////跳转授权
@@ -212,6 +265,99 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
         }
     }
 
+    private void bindQQ() {
+        UMShareAPI.get(this).doOauthVerify(this, SHARE_MEDIA.QQ, new UMAuthListener() {
+            @Override
+            public void onStart(SHARE_MEDIA platform) {
+                showProgress();
+            }
+
+            @Override
+            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
+                bindThird("qzone", data.get("access_token"), data.get("openid"));
+            }
+
+            @Override
+            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
+                G.showToast("QQ授权失败  请检查网络是否正常");
+                hideProgress();
+            }
+
+            @Override
+            public void onCancel(SHARE_MEDIA platform, int action) {
+                G.showToast("您取消了QQ授权");
+                hideProgress();
+            }
+        });
+    }
+    private void bindWX() {
+        UMShareAPI.get(this).doOauthVerify(this, SHARE_MEDIA.WEIXIN, new UMAuthListener() {
+            @Override
+            public void onStart(SHARE_MEDIA platform) {
+                showProgress();
+            }
+
+            @Override
+            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
+                bindThird("wechat", data.get("access_token"), data.get("openid"));
+            }
+
+            @Override
+            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
+                G.showToast("微信授权失败  请检查网络是否正常");
+                hideProgress();
+            }
+
+            @Override
+            public void onCancel(SHARE_MEDIA platform, int action) {
+                G.showToast("您取消了微信授权");
+                hideProgress();
+            }
+        });
+    }
+
+    /**
+     * access_token	string
+     open_id	string
+     platform	string
+            qzone, wechat
+     s_from	string
+            sheep, web_sheep
+     * @param access_token
+     * @param openid
+     */
+    private void bindThird(String platform, String access_token, String openid) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("access_token", access_token);
+        jsonObject.put("open_id", openid);
+        jsonObject.put("platform", platform);
+        jsonObject.put("s_from", "sheep");
+        SheepApp.getInstance().getNetComponent().getApiService().bindThird(jsonObject)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        hideProgress();
+                        CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
+                            @Override
+                            public void call(UserEntity result) {
+                                if(result != null){
+                                    userEntity = result;
+                                    loadUserInfo();
+                                }
+                            }
+                        });
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        hideProgress();
+                        G.showToast(baseMessage);
+                    }
+                });
+    }
+
     @Override
     protected void onNotGetImage(String msg) {
         G.showToast(msg);
@@ -290,13 +436,15 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
 
         if (TextUtils.isEmpty(userEntity.getWx_nickname())) {
             if (TextUtils.isEmpty(userEntity.getWx_openid())) {
-                personal_info_wx.setText("未绑定");
+                personal_info_bind_tx_wx.setText("未绑定");
             } else {
-                personal_info_wx.setText("");
+                personal_info_bind_tx_wx.setText("");
             }
         } else {
-            personal_info_wx.setText(userEntity.getWx_nickname());
+            personal_info_bind_tx_wx.setText(userEntity.getWx_nickname());
         }
+        personal_info_bind_qq.setText(userEntity.isBindQQ() ? "去修改" : "去绑定");
+        personal_info_bind_wx.setText(userEntity.isBindWx() ? "去修改" : "去绑定");
 
         boolean isId_number = TextUtils.isEmpty(userEntity.getId_number());
         boolean isRoalName = TextUtils.isEmpty(userEntity.getReal_name());
@@ -309,4 +457,13 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
         }
     }
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        try {
+            UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 6 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java

@@ -31,6 +31,7 @@ import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.RxjavaCountDownTimer;
 import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
@@ -190,7 +191,11 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     public void initView() {
         activity = this;
         GlideImageLoader.setImage(login_bg_img, "http://cdngame.kuaifazs.com/login_bg_img.png");
-        mHandler.sendEmptyMessageDelayed(1, 500);
+        if(BuildConfig.DEBUG){
+            Jump2View.getInstance().goHomePageView(activity, null);
+        } else {
+            mHandler.sendEmptyMessageDelayed(1, 500);
+        }
     }
 
     @Override

+ 41 - 15
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -225,16 +225,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         detail_task_listview.setAdapter(adpTaskDetailChildListview);
         adpTaskDetailChildListview.notifyDataSetChanged();
         bottom_btn_layout.setVisibility(View.GONE);
-        if (DataUtil.IS_USE_SCREEN_SHOT) {
-            //如果要使用小绵羊截图方案,则在进入任务详情界面启动FloatShotScreenService,并获取截屏权限,并把intent data传递给FloatShotScreenService
-            Jump2View.getInstance().startShotScreenFloat(SheepApp.getInstance(), null);
-            DataUtil.getInstance().requestCapturePermission(activity, new Action1<Integer>() {
-                @Override
-                public void call(Integer integer) {
-//                    if(BuildConfig.DEBUG) G.showToast("初始化截屏数据成功");
-                }
-            });
-        }
         ViewUtil.setDefaultText(nameTv);
         ViewUtil.setDefaultText(priceTv);
         ViewUtil.setDefaultText(dateTv);
@@ -253,10 +243,22 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         }
     }
 
-    private void initWigget() {
+    private void loadData() {
         detail_shrae_friend_layout.setVisibility(View.VISIBLE);
 
         taskEty = taskReleaseEty.getTask();
+        if(onResumeCount == 0){
+            if (DataUtil.IS_USE_SCREEN_SHOT && taskEty.needShotScreen()) {
+                //如果要使用小绵羊截图方案,则在进入任务详情界面启动FloatShotScreenService,并获取截屏权限,并把intent data传递给FloatShotScreenService
+                Jump2View.getInstance().startShotScreenFloat(SheepApp.getInstance(), null);
+                DataUtil.getInstance().requestCapturePermission(activity, new Action1<Integer>() {
+                    @Override
+                    public void call(Integer integer) {
+//                    if(BuildConfig.DEBUG) G.showToast("初始化截屏数据成功");
+                    }
+                });
+            }
+        }
         nameTv.setText(taskReleaseEty.getName() + "");
         priceTv.setText("+" + taskReleaseEty.getBonusText() + "元");
         if (!taskReleaseEty.getDeadline().equals("永久")) {
@@ -278,7 +280,13 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         setSonVuewShow();
 
         loadOld();
-
+        //用户可主动点击进行开启查看权限
+        taskdetail_explain_layout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                AppUsageManager.getInstance().openLookAppUsageStatsPermisson();
+            }
+        });
         //自动审核
         if (taskEty.getInspect_type() == 3) {
 
@@ -360,6 +368,24 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                     case 4://h5业务
                         type = TASK_TYPE_H5;
                         btnTaskItem.setText(CommonUtil.START_TASK);
+                        switch (gettaskAcceptedEty.getStatus()) {
+                            case 1://"已接受任务";
+                            case 2:// "正在进行中";
+                                break;
+                            case 6://任务审核失败可以重新提交
+                                btnUpImag.setText("重新提交");
+                                break;
+                            case 7:// "提交审核";
+                                btnUpImag.setText("正在审核");
+                                btnUpImag.setEnabled(false);
+                                btnTaskItem.setVisibility(View.GONE);
+                                break;
+                            case 3://完成任务
+                                btnUpImag.setText("已完成");
+                                btnUpImag.setEnabled(false);
+                                btnTaskItem.setVisibility(View.GONE);
+                                break;
+                        }
                         break;
                     case 2:
                     case 1001://信用卡与畅思任务不考虑
@@ -999,7 +1025,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         hideProgress();
         empty_view.setVisibility(View.GONE);
         taskReleaseEty = baseMessage.getData(TaskReleaseEty.class);
-        initWigget();
+        loadData();
     }
 
     @Override
@@ -1418,7 +1444,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 } else {
                     hideProgress();
                     empty_view.setVisibility(View.GONE);
-                    initWigget();
+                    loadData();
                 }
             }
         });
@@ -1429,7 +1455,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         hideProgress();
         if (taskReleaseEty != null) {
             empty_view.setVisibility(View.GONE);
-            initWigget();
+            loadData();
         }
         presenter.taskDesc(releaseTaskId);
     }

+ 50 - 11
app/src/main/java/com/sheep/gamegroup/view/adapter/DownloadWelfareAdapter.java

@@ -2,9 +2,14 @@ package com.sheep.gamegroup.view.adapter;
 
 import android.app.Activity;
 import android.content.Context;
+import android.graphics.Color;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 
-import com.sheep.gamegroup.model.entity.Welfare;
+import com.sheep.gamegroup.model.entity.DownloadWelfare;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
@@ -15,26 +20,60 @@ import java.util.List;
  * Created by realicing on 2018/8/28.
  * realicing@sina.com
  */
-public class DownloadWelfareAdapter extends AdbCommonRecycler<Welfare> implements View.OnClickListener{
-
-    public DownloadWelfareAdapter(Context context, List<Welfare> list) {
+public class DownloadWelfareAdapter extends AdbCommonRecycler<DownloadWelfare>{
+    public DownloadWelfareAdapter(Context context, List<DownloadWelfare> list) {
         super(context, list);
     }
-
     @Override
     public int getViewIdByType(int type) {
         return R.layout.item_download_welfare;
     }
 
     @Override
-    public void convert(ViewHolder holder, Welfare welfareCenter) {
-        holder.itemView.setOnClickListener(this);
+    public void convert(ViewHolder holder, final DownloadWelfare item) {
+        ImageView item_download_welfare_iv = (ImageView)holder.getView(R.id.item_download_welfare_iv);
+        ImageView item_download_welfare_iv2 = (ImageView)holder.getView(R.id.item_download_welfare_iv2);
+        TextView item_download_welfare_name_tv = (TextView)holder.getView(R.id.item_download_welfare_name_tv);
+        TextView item_download_welfare_money = (TextView)holder.getView(R.id.item_download_welfare_money);
+        TextView item_download_welfare_num_tv = (TextView)holder.getView(R.id.item_download_welfare_num_tv);
+        TextView item_download_welfare_num_tv1 = (TextView)holder.getView(R.id.item_download_welfare_num_tv1);
+        TextView item_download_welfare_date_tv = (TextView)holder.getView(R.id.item_download_welfare_date_tv);
+        TextView item_download_welfare_btn_bottom = (TextView)holder.getView(R.id.item_download_welfare_btn_bottom);
         View item_download_welfare_line = holder.getView(R.id.item_download_welfare_line);
+
+        item_download_welfare_iv2.setVisibility(View.GONE);
+        item_download_welfare_money.setTextColor(Color.parseColor("#ff999999"));
         item_download_welfare_line.setVisibility(holder.getAdapterPosition() + 1 == getItemCount() ? View.GONE : View.VISIBLE);
-    }
+        item_download_welfare_btn_bottom.setText("去使用");
+        item_download_welfare_btn_bottom.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (item.getGame_id() != null) {
+                    ViewUtil.showGamePayAccount((Activity) context, item.getGame_id(), item.getName());
+                }
 
-    @Override
-    public void onClick(View view) {
-        ViewUtil.shareGetWelfareDialog((Activity) context, null);
+            }
+        });
+        if(item == null){
+            ViewUtil.setDefaultText(item_download_welfare_name_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv1);
+            ViewUtil.setDefaultText(item_download_welfare_date_tv);
+            ViewUtil.setDefaultText(item_download_welfare_money);
+        } else if(context instanceof Activity){
+            GlideImageLoader.setGameImage(item_download_welfare_iv, item.getIcon());
+            ViewUtil.setText(item_download_welfare_name_tv, item.getName());
+            ViewUtil.setText(item_download_welfare_money, item.getUseBalanceText());
+            ViewUtil.setText(item_download_welfare_num_tv, item.getGiftRatioText());
+            ViewUtil.setH5Text(item_download_welfare_num_tv1, item.getBalanceH5());
+            ViewUtil.setText(item_download_welfare_date_tv, item.getDateText());
+            holder.itemView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    Jump2View.getInstance().goGameTaskDetailView(context,  item.getRelease_id(), item.getGame_id(),1);
+                }
+            });
+        }
     }
+
 }

+ 110 - 10
app/src/main/java/com/sheep/gamegroup/view/adapter/GiftCenterAdapter.java

@@ -1,25 +1,46 @@
 package com.sheep.gamegroup.view.adapter;
 
+import android.app.Activity;
 import android.content.Context;
+import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 
+import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DialogConfig;
-import com.sheep.gamegroup.model.entity.Welfare;
+import com.sheep.gamegroup.model.entity.FindApp;
+import com.sheep.gamegroup.model.entity.GiftBag;
+import com.sheep.gamegroup.model.entity.GiftBagApp;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
 
 import java.util.List;
+import java.util.Locale;
+
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+
+import static com.sheep.gamegroup.view.adapter.WelfareAdapter.TO_REFRESH;
 
 /**
  * Created by realicing on 2018/8/28.
  * realicing@sina.com
  */
-public class GiftCenterAdapter extends AdbCommonRecycler<Welfare> implements View.OnClickListener {
+public class GiftCenterAdapter extends AdbCommonRecycler<GiftBagApp> {
 
-    public GiftCenterAdapter(Context context, List<Welfare> list) {
+    private Action1<Integer> action1;
+    public GiftCenterAdapter(Context context, List<GiftBagApp> list, Action1<Integer> action1) {
         super(context, list);
+        this.action1 = action1;
     }
 
     @Override
@@ -28,14 +49,93 @@ public class GiftCenterAdapter extends AdbCommonRecycler<Welfare> implements Vie
     }
 
     @Override
-    public void convert(ViewHolder holder, Welfare welfareCenter) {
-        holder.itemView.setOnClickListener(this);
+    public void convert(ViewHolder holder, final GiftBagApp item) {
+        ImageView item_download_welfare_iv = (ImageView)holder.getView(R.id.item_download_welfare_iv);
+        ImageView item_download_welfare_tip_iv = (ImageView)holder.getView(R.id.item_download_welfare_tip_iv);
+        ImageView item_download_welfare_iv2 = (ImageView)holder.getView(R.id.item_download_welfare_iv2);
+        TextView item_download_welfare_name_tv = (TextView)holder.getView(R.id.item_download_welfare_name_tv);
+        TextView item_download_welfare_money = (TextView)holder.getView(R.id.item_download_welfare_money);
+        TextView item_download_welfare_num_tv = (TextView)holder.getView(R.id.item_download_welfare_num_tv);
+        TextView item_download_welfare_num_tv1 = (TextView)holder.getView(R.id.item_download_welfare_num_tv1);
+        TextView item_download_welfare_date_tv = (TextView)holder.getView(R.id.item_download_welfare_date_tv);
+        TextView item_download_welfare_btn_bottom = (TextView)holder.getView(R.id.item_download_welfare_btn_bottom);
+        TextView item_download_welfare_btn_top = (TextView)holder.getView(R.id.item_download_welfare_btn_top);
+        TextView item_download_welfare_btn_center = (TextView)holder.getView(R.id.item_download_welfare_btn_center);
+        View item_download_welfare_line = holder.getView(R.id.item_download_welfare_line);
+        item_download_welfare_line.setVisibility(holder.getAdapterPosition() + 1 == getItemCount() ? View.GONE : View.VISIBLE);
+        item_download_welfare_money.setVisibility(View.GONE);
+        item_download_welfare_btn_bottom.setVisibility(View.GONE);
+        item_download_welfare_btn_top.setVisibility(View.GONE);
+        item_download_welfare_num_tv1.setVisibility(View.GONE);
+        item_download_welfare_iv2.setVisibility(View.GONE);
+        item_download_welfare_btn_center.setVisibility(View.VISIBLE);
+        if(item == null){
+            ViewUtil.setDefaultText(item_download_welfare_name_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv);
+            ViewUtil.setDefaultText(item_download_welfare_date_tv);
+            item_download_welfare_iv2.setVisibility(View.GONE);
+            item_download_welfare_tip_iv.setVisibility(View.GONE);
+        } else if(context instanceof Activity){
+            final FindApp itemApp = item.getApp();
+            final GiftBag itemGiftBag = item.getGift_bag();
+            if(itemApp == null || itemGiftBag == null){
+                return;
+            }
+            GlideImageLoader.setGameImage(item_download_welfare_iv, itemApp.getIcon());
+            ViewUtil.setText(item_download_welfare_name_tv, itemApp.getName());
+            ViewUtil.setText(item_download_welfare_date_tv, itemGiftBag.getDateText());
+            if(TextUtils.isEmpty(item.getCode())){//没有code,就视为没有领取礼包
+                item_download_welfare_tip_iv.setVisibility(View.GONE);
+                ViewUtil.setText(item_download_welfare_num_tv, itemGiftBag.getLastNumText());
+                item_download_welfare_btn_center.setText("领取");
+                item_download_welfare_btn_center.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        onClickItem(item);
+                    }
+                });
+            } else {
+                item_download_welfare_tip_iv.setVisibility(View.VISIBLE);
+                ViewUtil.setH5Text(item_download_welfare_num_tv, String.format(Locale.CHINA, "兑换码:<font color='#33CCFF'>%s</font>", item.getCode()));
+                item_download_welfare_btn_center.setText("复制");
+                item_download_welfare_btn_center.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        StringUtils.CopyText(item.getCode());
+                        G.showToast("复制成功");
+                    }
+                });
+                item_download_welfare_tip_iv.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        ViewUtil.showMsgDialog(context, new DialogConfig().setTitle("礼包使用说明").setBtnLeftText("我知道了")
+                                .setMsgGravity(Gravity.START)
+                                .setMsg(String.format(Locale.CHINA, "礼包内容:\n%s\n\n使用方式:\n启动游戏---设置---激活兑换", itemGiftBag.getGiftContent())));
+                    }
+                });
+
+            }
+        }
     }
 
-    @Override
-    public void onClick(View view) {
-        ViewUtil.showMsgDialog(context, new DialogConfig().setTitle("礼包使用说明").setBtnLeftText("我知道了")
-                .setMsgGravity(Gravity.START)//.setMsgLayoutWidth()
-                .setMsg("礼包内容:\n元宝X1000、钻石X2000、符文X20\n\n使用方式:\n启动游戏---设置---激活兑换"));
+    private void onClickItem(final GiftBagApp item) {
+        SheepApp.getInstance().getNetComponent().getApiService().receiveGiftBag(item.getGift_bag().getId())
+                        .subscribeOn(Schedulers.io())
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                            @Override
+                            public void onNext(BaseMessage baseMessage) {
+                                String code = baseMessage.getData(String.class);
+                                item.setCode(code);
+                                if(action1 != null)
+                                    action1.call(TO_REFRESH);
+                                ViewUtil.shareGetWelfareDialog((Activity) context, item);
+                            }
+
+                            @Override
+                            public void onError(BaseMessage baseMessage) {
+                                G.showToast(baseMessage);
+                            }
+                        });
     }
 }

+ 22 - 18
app/src/main/java/com/sheep/gamegroup/view/adapter/PlayGameItemAdapter.java

@@ -1,13 +1,15 @@
 package com.sheep.gamegroup.view.adapter;
 
+import android.app.Activity;
 import android.content.Context;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.googlecode.protobuf.format.util.TextUtils;
+import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
@@ -18,14 +20,11 @@ import java.util.List;
  * Created by ljy on 2018/9/3.
  */
 
-public class PlayGameItemAdapter extends AdbCommonRecycler<PlayGameEntity> implements View.OnClickListener {
-    public PlayGameItemAdapter(Context context, List<PlayGameEntity> list) {
+public class PlayGameItemAdapter extends AdbCommonRecycler<GameEntity>{
+    private Context activity;
+    public PlayGameItemAdapter(Context context, List<GameEntity> list) {
         super(context, list);
-    }
-
-    @Override
-    public void onClick(View v) {
-
+        activity = context;
     }
 
     @Override
@@ -34,16 +33,21 @@ public class PlayGameItemAdapter extends AdbCommonRecycler<PlayGameEntity> imple
     }
 
     @Override
-    public void convert(ViewHolder holder, PlayGameEntity playGameEntity) {
-        holder.itemView.setOnClickListener(this);
-        View item_download_welfare_line = holder.getView(R.id.line_tv);
-        View detail_task_tv_center = holder.getView(R.id.detail_task_tv_center);
-        TextView item_name_tv = holder.getView(R.id.item_name_tv);
-        TextView item_date_tv = holder.getView(R.id.item_date_tv);
-
-        ViewUtil.setText(item_name_tv, playGameEntity.getName());
-        ViewUtil.setText(item_date_tv, playGameEntity.getPackage_size()+"M");
-        GlideImageLoader.setImage((ImageView) holder.getView(R.id.item_icon_iv), playGameEntity.getIcon());
+    public void convert(ViewHolder holder, final GameEntity gameEntity) {
+        holder.itemView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Jump2View.getInstance().goPlayGameDetail((Activity) activity, gameEntity.getApp().getId());
+            }
+        });
+        View item_download_welfare_line = holder.itemView.findViewById(R.id.line_tv);
+        View detail_task_tv_center = holder.itemView.findViewById(R.id.detail_task_tv_center);
+        TextView item_name_tv = holder.itemView.findViewById(R.id.item_name_tv);
+        TextView item_date_tv = holder.itemView.findViewById(R.id.item_date_tv);
+
+        ViewUtil.setText(item_name_tv, gameEntity.getApp().getName());
+        ViewUtil.setText(item_date_tv, gameEntity.getApp().getPackage_size()+"M");
+        GlideImageLoader.setGameImage((ImageView) holder.itemView.findViewById(R.id.item_icon_iv), gameEntity.getApp().getIcon());
 
         item_download_welfare_line.setVisibility(holder.getAdapterPosition() + 1 == getItemCount() ? View.GONE : View.VISIBLE);
     }

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

@@ -581,7 +581,7 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                 if (isBegin == 1 || type == 2) {//即将开始
                     viewHolder.itemView.setEnabled(false);
                     ((TextView) viewHolder.itemView.findViewById(R.id.item_date_tv)).setText(
-                            "开始时间:" + TimeUtil.getDate(TimeUtil.FORMAT_DD, Long.valueOf(taskReleaseEty.getOnline_time())) + "");
+                            "开始时间:" + TimeUtil.getDate(TimeUtil.FORMAT_DD, taskReleaseEty.getOnline_time()) + "");
                 } else {
                     if (!taskReleaseEty.getDeadline().equals("永久")) {
                         ((TextView) viewHolder.itemView.findViewById(R.id.item_date_tv)).setText(

+ 66 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/VoucherUseLogAdapter.java

@@ -0,0 +1,66 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.sheep.gamegroup.model.entity.VoucherUseLog;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.List;
+
+/**
+ * Created by realicing on 2018/8/28.
+ * realicing@sina.com
+ */
+public class VoucherUseLogAdapter extends AdbCommonRecycler<VoucherUseLog>{
+    public VoucherUseLogAdapter(Context context, List<VoucherUseLog> list) {
+        super(context, list);
+    }
+    @Override
+    public int getViewIdByType(int type) {
+        return R.layout.item_download_welfare;
+    }
+
+    @Override
+    public void convert(ViewHolder holder, final VoucherUseLog item) {
+        ImageView item_download_welfare_iv = (ImageView)holder.getView(R.id.item_download_welfare_iv);
+        ImageView item_download_welfare_iv2 = (ImageView)holder.getView(R.id.item_download_welfare_iv2);
+        TextView item_download_welfare_name_tv = (TextView)holder.getView(R.id.item_download_welfare_name_tv);
+        TextView item_download_welfare_money = (TextView)holder.getView(R.id.item_download_welfare_money);
+        TextView item_download_welfare_money_bottom = (TextView)holder.getView(R.id.item_download_welfare_money_bottom);
+        TextView item_download_welfare_num_tv = (TextView)holder.getView(R.id.item_download_welfare_num_tv);
+        TextView item_download_welfare_num_tv1 = (TextView)holder.getView(R.id.item_download_welfare_num_tv1);
+        TextView item_download_welfare_date_tv = (TextView)holder.getView(R.id.item_download_welfare_date_tv);
+        TextView item_download_welfare_btn_bottom = (TextView)holder.getView(R.id.item_download_welfare_btn_bottom);
+        View item_download_welfare_line = holder.getView(R.id.item_download_welfare_line);
+
+        item_download_welfare_iv2.setVisibility(View.GONE);
+        item_download_welfare_num_tv1.setVisibility(View.GONE);
+        item_download_welfare_btn_bottom.setVisibility(View.GONE);
+        item_download_welfare_money_bottom.setVisibility(View.VISIBLE);
+        item_download_welfare_money.setTextColor(Color.parseColor("#ff999999"));
+        item_download_welfare_line.setVisibility(holder.getAdapterPosition() + 1 == getItemCount() ? View.GONE : View.VISIBLE);
+        if(item == null){
+            ViewUtil.setDefaultText(item_download_welfare_name_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv1);
+            ViewUtil.setDefaultText(item_download_welfare_date_tv);
+            ViewUtil.setDefaultText(item_download_welfare_money);
+        } else if(context instanceof Activity){
+            GlideImageLoader.setGameImage(item_download_welfare_iv, item.getIcon());
+            ViewUtil.setText(item_download_welfare_name_tv, item.getName());
+            ViewUtil.setText(item_download_welfare_num_tv, item.getGiftRatioText());
+            ViewUtil.setH5Text(item_download_welfare_money, item.getSurplusText());
+            ViewUtil.setText(item_download_welfare_money_bottom, item.getConsumptionAmountText());
+            ViewUtil.setText(item_download_welfare_date_tv, item.getDateText());
+        }
+    }
+
+}

+ 211 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/WelfareAdapter.java

@@ -0,0 +1,211 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.app.Activity;
+import android.content.Context;
+import android.text.Html;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jcodecraeer.xrecyclerview.XRecyclerView;
+import com.kfzs.duanduan.services.DownloadTaskService;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.TaskEty;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DeviceUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.util.List;
+import java.util.Locale;
+
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+
+import static com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST;
+
+/**
+ * Created by realicing on 2018/8/28.
+ * realicing@sina.com
+ */
+public class WelfareAdapter extends AdbCommonRecycler<TaskReleaseEty>{
+    private Action1<Integer> action1;
+    public WelfareAdapter(Context context, List<TaskReleaseEty> list, Action1<Integer> action1) {
+        super(context, list);
+        this.action1 = action1;
+    }
+    public static final int TO_REFRESH = 1;
+    @Override
+    public int getViewIdByType(int type) {
+        return R.layout.item_download_welfare;
+    }
+
+    @Override
+    public void convert(ViewHolder holder, final TaskReleaseEty item) {
+        ImageView item_download_welfare_iv = (ImageView)holder.getView(R.id.item_download_welfare_iv);
+        ImageView item_download_welfare_iv2 = (ImageView)holder.getView(R.id.item_download_welfare_iv2);
+        TextView item_download_welfare_name_tv = (TextView)holder.getView(R.id.item_download_welfare_name_tv);
+        TextView item_download_welfare_money = (TextView)holder.getView(R.id.item_download_welfare_money);
+        TextView item_download_welfare_num_tv = (TextView)holder.getView(R.id.item_download_welfare_num_tv);
+        TextView item_download_welfare_num_tv1 = (TextView)holder.getView(R.id.item_download_welfare_num_tv1);
+        TextView item_download_welfare_date_tv = (TextView)holder.getView(R.id.item_download_welfare_date_tv);
+        TextView item_download_welfare_btn_bottom = (TextView)holder.getView(R.id.item_download_welfare_btn_bottom);
+        TextView item_download_welfare_btn_top = (TextView)holder.getView(R.id.item_download_welfare_btn_top);
+        View item_download_welfare_line = holder.getView(R.id.item_download_welfare_line);
+        item_download_welfare_line.setVisibility(holder.getAdapterPosition() + 1 == getItemCount() ? View.GONE : View.VISIBLE);
+        if(item == null){
+            ViewUtil.setDefaultText(item_download_welfare_name_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv);
+            ViewUtil.setDefaultText(item_download_welfare_num_tv1);
+            ViewUtil.setDefaultText(item_download_welfare_date_tv);
+            ViewUtil.setDefaultText(item_download_welfare_money);
+            item_download_welfare_iv2.setVisibility(View.GONE);
+        } else if(context instanceof Activity){
+            final TaskEty itemTask = item.getTask();
+            if(itemTask == null){
+                return;
+            }
+            GlideImageLoader.setGameImage(item_download_welfare_iv, itemTask.getIcon());
+            ViewUtil.setText(item_download_welfare_name_tv, item.getName());
+            item_download_welfare_money.setText(Html.fromHtml(String.format(Locale.CHINA, "<font size='1'>¥</font>%s", item.getBonusText())));
+            ViewUtil.setText(item_download_welfare_num_tv, item.getGiftRatioText());
+            ViewUtil.setText(item_download_welfare_num_tv1, item.getLastNumText());
+            ViewUtil.setText(item_download_welfare_date_tv, item.getDateText());
+            item_download_welfare_iv2.setVisibility(item.isTaskFinished()? View.VISIBLE : View.INVISIBLE);
+
+            item_download_welfare_btn_bottom.setTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + itemTask.getDownload_link());
+            switch (item.getUser_task_status()){//1,已接受任务 2,正在进行中,3完成任务,4放弃任务,5任务失败,6审核失败,7提交审核,8任务已下线,9至少完成了一个任务了
+                case 0:
+                    item_download_welfare_money.setVisibility(View.VISIBLE);
+                    item_download_welfare_btn_top.setVisibility(View.INVISIBLE);
+                    item_download_welfare_btn_bottom.setEnabled(true);
+                    item_download_welfare_btn_bottom.setText("下载领取");
+                    item_download_welfare_btn_bottom.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            acceptedTask(item.getId());
+                        }
+                    });
+                    break;
+                case 1:
+                case 2:
+                    item_download_welfare_money.setVisibility(View.VISIBLE);
+                    item_download_welfare_btn_top.setVisibility(View.INVISIBLE);
+                    item_download_welfare_btn_bottom.setEnabled(true);
+                    item.getDownloadHelper().updateDownloadTaskView((Activity) context, itemTask, item_download_welfare_btn_bottom);
+                    if(item.getDownloadHelper().getDownLoadType() == DownloadTaskService.STATUS_INSTALLED){//已经安装的话
+                        item_download_welfare_btn_bottom.setText("领取奖励");
+                        item_download_welfare_btn_bottom.setOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View view) {
+                                if (itemTask.isGameReservationCantDownload()) {
+                                    CommonUtil.getInstance().reservationGameTask(context, item, new Action1<Integer>() {
+                                        @Override
+                                        public void call(Integer integer) {
+                                            if(action1 != null)
+                                                action1.call(TO_REFRESH);
+                                        }
+                                    });
+                                } else {
+                                    acceptedReceiveAward(item);
+                                }
+                            }
+                        });
+                    }
+                    break;
+                case 3:
+                    item_download_welfare_money.setVisibility(View.INVISIBLE);
+                    item_download_welfare_btn_top.setVisibility(View.VISIBLE);
+                    item.getDownloadHelper().updateDownloadTaskView((Activity) context, itemTask, item_download_welfare_btn_bottom);
+                    if(item.getDownloadHelper().getDownLoadType() == DownloadTaskService.STATUS_INSTALLED) {//已经安装的话
+                        item_download_welfare_btn_bottom.setText("启动");
+                    }
+                    item_download_welfare_btn_top.setText("充值");
+                    item_download_welfare_btn_top.setEnabled(true);
+                    item_download_welfare_btn_top.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            if (itemTask.getThird_task_id() != null) {
+                                ViewUtil.showGamePayAccount((Activity) context, itemTask.getThird_task_id(), item.getName());
+                            }
+                        }
+                    });
+                    break;
+                default:
+                    item_download_welfare_money.setVisibility(View.VISIBLE);
+                    item_download_welfare_btn_top.setVisibility(View.INVISIBLE);
+                    item_download_welfare_btn_bottom.setText("已经下线");
+                    item_download_welfare_btn_bottom.setEnabled(false);
+                    break;
+            }
+            holder.itemView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    Jump2View.getInstance().goGameTaskDetailView(context,  item.getId(), itemTask.getThird_task_id(),1);
+                }
+            });
+        }
+    }
+
+    /**
+     * 领取任务
+     */
+    private void acceptedTask(int release_task_id) {
+        JSONObject object = new JSONObject();
+        object.put("device_id", DeviceUtil.getDeviceId(SheepApp.getInstance()));
+        object.put("release_task_id", release_task_id);
+        SheepApp.getInstance()
+                .getNetComponent()
+                .getApiService()
+                .acceptedTask(object)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {//领取任务成功
+                        G.showToast(baseMessage);
+                        if(action1 != null)
+                            action1.call(TO_REFRESH);
+                    }
+                });
+    }
+    /**
+     * 领取奖励
+     */
+    private void acceptedReceiveAward(TaskReleaseEty item) {
+        SheepApp.getInstance()
+                .getNetComponent()
+                .getApiService()
+                .receive_award(item.getAccepted_task_id())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        //这里领取了奖励,要刷新用户信息
+                        CommonUtil.getInstance().updateUserInfo(null);
+                        if(action1 != null)
+                            action1.call(TO_REFRESH);
+                    }
+                });
+    }
+}

+ 36 - 3
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment.java

@@ -7,6 +7,7 @@ import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.TextView;
 
 import com.jcodecraeer.xrecyclerview.XRecyclerView;
 import com.sheep.gamegroup.model.api.ApiService;
@@ -47,7 +48,7 @@ public abstract class BaseListFragment<T> extends BaseFragment {
         activity = getActivity();
         initView();
         initListener();
-        initData();
+        view_list.refresh();
 
     }
     @BindView(R.id.title)
@@ -95,7 +96,6 @@ public abstract class BaseListFragment<T> extends BaseFragment {
         //先尝试获取缓存数据
         List<T> newList = DataUtil.getInstance().getCacheList(urlKey, getTClass());
         loadList(newList);
-        empty_view.setVisibility(View.INVISIBLE);
         SysAppUtil.checkNet(new Action1<Integer>() {
             @Override
             public void call(Integer result) {
@@ -129,6 +129,7 @@ public abstract class BaseListFragment<T> extends BaseFragment {
     }
 
     public void refreshData(){
+        empty_view.setVisibility(View.INVISIBLE);
         list.clear();
         view_list.getAdapter().notifyDataSetChanged();
         page = 1;
@@ -140,13 +141,26 @@ public abstract class BaseListFragment<T> extends BaseFragment {
     }
     protected void notifyDataSetChanged(){
         CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
-        bottomLine.setVisibility(list.isEmpty() ? View.INVISIBLE : View.VISIBLE);
+        if(bottomLine != null) {
+            bottomLine.setVisibility(list.isEmpty() ? View.INVISIBLE : View.VISIBLE);
+            final boolean isCanScrollToPosition = page > 1 ;//页数大于一页才显示点击回到顶部
+            TextView bottom_line_text = bottomLine.findViewById(R.id.bottom_line_text);
+            bottom_line_text.setText(isCanScrollToPosition ? "我是有底线的,点击我回到顶部" : "我是有底线的");
+            bottomLine.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    if(isCanScrollToPosition)
+                        view_list.scrollToPosition(0);
+                }
+            });
+        }
         if(page == 1){
             view_list.refreshComplete();
         } else {
             view_list.loadMoreComplete();
         }
         view_list.getAdapter().notifyDataSetChanged();
+        notifyData();
     }
     Unbinder unbinder;
     @Override
@@ -161,9 +175,28 @@ public abstract class BaseListFragment<T> extends BaseFragment {
     public void onDestroyView() {
         super.onDestroyView();
         unbinder.unbind();
+        // any time,when you finish your activity or fragment,call this below
+        if(view_list != null){
+            view_list.destroy(); // this will totally release XR's memory
+            view_list = null;
+        }
+    }
+    public int getDataCount() {
+        return list.size();
+    }
+
+    /**
+     *
+     * @return
+     */
+    public void setNoFresh(){
+        if(view_list != null)
+            view_list.setPullRefreshEnabled(false);
     }
     protected abstract RecyclerView.Adapter getAdapter();
     protected abstract String getKey(int page, int per_page);
     protected abstract Observable<BaseMessage> getApi(ApiService apiService);
     protected abstract Class<T> getTClass();
+
+    public abstract void notifyData();
 }

+ 42 - 6
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtDownloadWelfareList.java

@@ -1,24 +1,55 @@
 package com.sheep.gamegroup.view.fragment;
 
+import android.os.Bundle;
+import android.support.annotation.Nullable;
 import android.support.v7.widget.RecyclerView;
 
+import com.kfzs.duanduan.event.BigEvent;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
-import com.sheep.gamegroup.view.adapter.DownloadWelfareAdapter;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.view.adapter.WelfareAdapter;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
 
 import java.util.Locale;
 
 import rx.Observable;
+import rx.functions.Action1;
 
 /**
  * Created by realicing on 2018/9/3.
  * realicing@sina.com
  */
-public class FgtDownloadWelfareList extends BaseListFragment<Welfare> {
+public class FgtDownloadWelfareList extends BaseListFragment<TaskReleaseEty> implements Action1<Integer> {
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        EventBus.getDefault().register(this);
+    }
+
+    @Override
+    public void call(Integer integer) {
+        switch (integer){
+            case WelfareAdapter.TO_REFRESH:
+                refreshData();
+                break;
+        }
+    }
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        CommonUtil.getInstance().setEventResultViewStatus(event, view_list);
+    }
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        EventBus.getDefault().unregister(this);
+    }
     @Override
     protected RecyclerView.Adapter getAdapter() {
-        return new DownloadWelfareAdapter(activity, list);
+        return new WelfareAdapter(activity, list, this);
     }
 
     @Override
@@ -32,7 +63,12 @@ public class FgtDownloadWelfareList extends BaseListFragment<Welfare> {
     }
 
     @Override
-    protected Class<Welfare> getTClass() {
-        return Welfare.class;
+    protected Class<TaskReleaseEty> getTClass() {
+        return TaskReleaseEty.class;
+    }
+
+    @Override
+    public void notifyData() {
+
     }
 }

+ 43 - 6
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGiftCenter.java

@@ -1,24 +1,56 @@
 package com.sheep.gamegroup.view.fragment;
 
+import android.os.Bundle;
+import android.support.annotation.Nullable;
 import android.support.v7.widget.RecyclerView;
 
+import com.kfzs.duanduan.event.BigEvent;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
-import com.sheep.gamegroup.view.adapter.DownloadWelfareAdapter;
+import com.sheep.gamegroup.model.entity.GiftBagApp;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.view.adapter.WelfareAdapter;
+import com.sheep.gamegroup.view.adapter.GiftCenterAdapter;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
 
 import java.util.Locale;
 
 import rx.Observable;
+import rx.functions.Action1;
 
 /**
  * Created by realicing on 2018/9/3.
  * realicing@sina.com
  */
-public class FgtGiftCenter extends BaseListFragment<Welfare> {
+public class FgtGiftCenter extends BaseListFragment<GiftBagApp> implements Action1<Integer> {
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        EventBus.getDefault().register(this);
+    }
+
+    @Override
+    public void call(Integer integer) {
+        switch (integer){
+            case WelfareAdapter.TO_REFRESH:
+                refreshData();
+                break;
+        }
+    }
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        CommonUtil.getInstance().setEventResultViewStatus(event, view_list);
+    }
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        EventBus.getDefault().unregister(this);
+    }
     @Override
     protected RecyclerView.Adapter getAdapter() {
-        return new DownloadWelfareAdapter(activity, list);
+        return new GiftCenterAdapter(activity, list, this);
     }
 
     @Override
@@ -32,7 +64,12 @@ public class FgtGiftCenter extends BaseListFragment<Welfare> {
     }
 
     @Override
-    protected Class<Welfare> getTClass() {
-        return Welfare.class;
+    protected Class<GiftBagApp> getTClass() {
+        return GiftBagApp.class;
+    }
+
+    @Override
+    public void notifyData() {
+
     }
 }

+ 9 - 4
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyDownloadWelfareList.java

@@ -4,7 +4,7 @@ import android.support.v7.widget.RecyclerView;
 
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
+import com.sheep.gamegroup.model.entity.DownloadWelfare;
 import com.sheep.gamegroup.view.adapter.DownloadWelfareAdapter;
 
 import java.util.Locale;
@@ -16,7 +16,7 @@ import rx.Observable;
  * Created by realicing on 2018/8/28.
  * realicing@sina.com
  */
-public class FgtMyDownloadWelfareList extends BaseListFragment<Welfare> {
+public class FgtMyDownloadWelfareList extends BaseListFragment<DownloadWelfare> {
     @Override
     protected RecyclerView.Adapter getAdapter() {
         return new DownloadWelfareAdapter(activity, list);
@@ -33,7 +33,12 @@ public class FgtMyDownloadWelfareList extends BaseListFragment<Welfare> {
     }
 
     @Override
-    protected Class<Welfare> getTClass() {
-        return Welfare.class;
+    protected Class<DownloadWelfare> getTClass() {
+        return DownloadWelfare.class;
+    }
+
+    @Override
+    public void notifyData() {
+
     }
 }

+ 22 - 6
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyGift.java

@@ -4,22 +4,32 @@ import android.support.v7.widget.RecyclerView;
 
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
-import com.sheep.gamegroup.view.adapter.DownloadWelfareAdapter;
+import com.sheep.gamegroup.model.entity.GiftBagApp;
+import com.sheep.gamegroup.view.adapter.GiftCenterAdapter;
+import com.sheep.gamegroup.view.adapter.WelfareAdapter;
 
 import java.util.Locale;
 
 import rx.Observable;
+import rx.functions.Action1;
 
 /**
  * 我的福利--我的礼包
  * Created by realicing on 2018/8/28.
  * realicing@sina.com
  */
-public class FgtMyGift extends BaseListFragment<Welfare> {
+public class FgtMyGift extends BaseListFragment<GiftBagApp> implements Action1<Integer> {
+    @Override
+    public void call(Integer integer) {
+        switch (integer){
+            case WelfareAdapter.TO_REFRESH:
+                refreshData();
+                break;
+        }
+    }
     @Override
     protected RecyclerView.Adapter getAdapter() {
-        return new DownloadWelfareAdapter(activity, list);
+        return new GiftCenterAdapter(activity, list, this);
     }
 
     @Override
@@ -33,7 +43,13 @@ public class FgtMyGift extends BaseListFragment<Welfare> {
     }
 
     @Override
-    protected Class<Welfare> getTClass() {
-        return Welfare.class;
+    protected Class<GiftBagApp> getTClass() {
+        return GiftBagApp.class;
     }
+
+    @Override
+    public void notifyData() {
+
+    }
+
 }

+ 110 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlaGameGift.java

@@ -0,0 +1,110 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.model.entity.GiftBagApp;
+import com.sheep.gamegroup.util.GlideImageLoader;
+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 com.sheep.jiuyan.samllsheep.base.BaseFragment;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+/**
+ * Created by ljy on 2018/9/4.
+ */
+
+public class FgtPlaGameGift extends BaseFragment {
+    @BindView(R.id.recyclerview_list)
+    RecyclerView recyclerviewList;
+    Unbinder unbinder;
+
+    private Activity activity;
+    private GameEntity gameEntity;
+    private List<GiftBagApp> has_gift_bag = new ArrayList<>();
+
+    public static FgtPlayGameDetail newInstance(GameEntity gameEntity){
+        FgtPlayGameDetail fgt = new FgtPlayGameDetail();
+        Bundle bundle = new Bundle();
+        bundle.putSerializable("game_entitiy", gameEntity);
+        fgt.setArguments(bundle);
+        return fgt;
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.recyclerview_layout;
+    }
+
+    @Override
+    public void onViewCreated() {
+        if(gameEntity == null)
+            return;
+        has_gift_bag.clear();
+        has_gift_bag.addAll(gameEntity.getHas_gift_bag());
+
+        activity = getActivity();
+        recyclerviewList.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
+        recyclerviewList.setAdapter(new AdbCommonRecycler<GiftBagApp>(SheepApp.mContext, has_gift_bag) {
+            @Override
+            public int getViewIdByType(int type) {
+                return R.layout.fgt_playgame_gift_item;
+            }
+
+            @Override
+            public void convert(ViewHolder holder, GiftBagApp giftBagApp) {
+                View view = holder.itemView;
+                ViewUtil.setText((TextView) holder.getView(R.id.name_tv), giftBagApp.getGift_bag().getGiftName());
+                ViewUtil.setText((TextView) holder.getView(R.id.num_tv), giftBagApp.getGift_bag().getLastNumText());
+
+                TextView btn_tv = holder.getView(R.id.btn_tv);
+
+                if (giftBagApp.isReceived()){
+                    btn_tv.setText("领取");
+
+                }else {
+                    btn_tv.setText("已领取");
+                }
+                btn_tv.setEnabled(false);
+                holder.getView(R.id.line_tv).setVisibility(holder.getAdapterPosition() + 1 == getItemCount() ? View.GONE : View.VISIBLE);
+            }
+        });
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        // TODO: inflate a fragment view
+        View rootView = super.onCreateView(inflater, container, savedInstanceState);
+        unbinder = ButterKnife.bind(this, rootView);
+        Bundle bundle = getArguments();
+        if(bundle != null){
+            gameEntity = (GameEntity) bundle.getSerializable("game_entitiy");
+        }
+        return rootView;
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        unbinder.unbind();
+    }
+}

+ 77 - 27
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGame.java

@@ -3,6 +3,8 @@ package com.sheep.gamegroup.view.fragment;
 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.support.v4.widget.NestedScrollView;
@@ -18,12 +20,12 @@ import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
+import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.mine.GiftpackListAdapter;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindTag;
-import com.sheep.gamegroup.model.entity.PlayGameEntity;
+import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.SlideshowEty;
-import com.sheep.gamegroup.model.entity.Welfare;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
@@ -43,6 +45,8 @@ import com.youth.banner.listener.OnBannerListener;
 import com.youth.banner.loader.ImageLoader;
 
 import org.afinal.simplecache.ApiKey;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -54,8 +58,6 @@ import butterknife.Unbinder;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.schedulers.Schedulers;
 
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_TAG;
-
 /**
  * Created by ljy on 2018/9/3.
  */
@@ -85,15 +87,37 @@ public class FgtPlayGame extends BaseFragment {
     NestedScrollView scrollView;
     Unbinder unbinder;
 
+    public static final int WHAT_UPDATE_VP_HEIGHT = 1;//刷新viewpager高度
     private Activity activity;
-    private List<PlayGameEntity> everyDayPlayListData = new ArrayList<>();
-    private List<PlayGameEntity> hotListData = new ArrayList<>();
+    private List<GameEntity> everyDayPlayListData = new ArrayList<>();
+    private List<GameEntity> hotListData = new ArrayList<>();
 
     private List<SlideshowEty> slideshowEtyLists = new ArrayList<>();
     private List<String> slideshowTitleList = new ArrayList<>();
 
     private List<FindTag> list = ListUtil.emptyList();
     private GiftpackListAdapter mAdapter;
+    private int curPosition = 0;
+
+    Handler mHandler = new Handler(){
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch (msg.what) {
+                case WHAT_UPDATE_VP_HEIGHT:
+                    FgtPlayGameSon item = (FgtPlayGameSon) mAdapter.getItem(curPosition);
+                    if (pager == null || item == null) {
+                        return;
+                    }
+                    int count = item.getDataCount();
+                    item.setNoFresh();
+                    ViewGroup.LayoutParams params = pager.getLayoutParams();
+                    params.height = count == 0 ? G.HEIGHT / 2 : (count * getResources().getDimensionPixelSize(R.dimen.content_padding_96) + getResources().getDimensionPixelSize(R.dimen.content_padding));
+                    pager.setLayoutParams(params);
+                    break;
+            }
+        }
+    };
 
     @Override
     public int getLayoutId() {
@@ -103,6 +127,7 @@ public class FgtPlayGame extends BaseFragment {
     @Override
     public void onViewCreated() {
         activity = getActivity();
+        EventBus.getDefault().register(this);
 
         //banner
         LinearLayout.LayoutParams bannerLayoutParams = (LinearLayout.LayoutParams) banner.getLayoutParams();
@@ -115,22 +140,22 @@ public class FgtPlayGame extends BaseFragment {
         everyDayPlayList.setHasFixedSize(true);
         everyDayPlayList.setNestedScrollingEnabled(false);
         everyDayPlayList.setLayoutManager(playHotManager);
-        everyDayPlayList.setAdapter(new AdbCommonRecycler<PlayGameEntity>(SheepApp.getInstance(), everyDayPlayListData) {
+        everyDayPlayList.setAdapter(new AdbCommonRecycler<GameEntity>(SheepApp.getInstance(), everyDayPlayListData) {
             @Override
             public int getViewIdByType(int type) {
                 return R.layout.item_hot_welfare;
             }
 
             @Override
-            public void convert(ViewHolder holder, PlayGameEntity welfareCenter) {
-                ImageView item_hot_welfare_iv = holder.getView(R.id.item_hot_welfare_iv);
-                TextView item_hot_welfare_tv = holder.getView(R.id.item_hot_welfare_tv);
+            public void convert(ViewHolder holder, GameEntity welfareCenter) {
+                ImageView item_hot_welfare_iv =  holder.itemView.findViewById(R.id.item_hot_welfare_iv);
+                TextView item_hot_welfare_tv = holder.itemView.findViewById(R.id.item_hot_welfare_tv);
                 if(welfareCenter == null){
                     ViewUtil.setDefaultText(item_hot_welfare_tv);
                 } else {
                     //TODO 加载数据
-                    ViewUtil.setText(item_hot_welfare_tv, welfareCenter.getName());
-                    GlideImageLoader.setImage(item_hot_welfare_iv, welfareCenter.getIcon());
+                    ViewUtil.setText(item_hot_welfare_tv, welfareCenter.getApp().getName());
+                    GlideImageLoader.setGameImage(item_hot_welfare_iv, welfareCenter.getApp().getIcon());
                     onClickToPlayGameDetail(holder.itemView, welfareCenter);
                 }
             }
@@ -140,22 +165,22 @@ public class FgtPlayGame extends BaseFragment {
         recentHoeList.setHasFixedSize(true);
         recentHoeList.setNestedScrollingEnabled(false);
         recentHoeList.setLayoutManager(hotManager);
-        everyDayPlayList.setAdapter(new AdbCommonRecycler<PlayGameEntity>(SheepApp.getInstance(), hotListData) {
+        recentHoeList.setAdapter(new AdbCommonRecycler<GameEntity>(SheepApp.getInstance(), hotListData) {
             @Override
             public int getViewIdByType(int type) {
                 return R.layout.item_hot_welfare;
             }
 
             @Override
-            public void convert(ViewHolder holder, PlayGameEntity welfareCenter) {
-                ImageView item_hot_welfare_iv = holder.getView(R.id.item_hot_welfare_iv);
-                TextView item_hot_welfare_tv = holder.getView(R.id.item_hot_welfare_tv);
+            public void convert(ViewHolder holder, GameEntity welfareCenter) {
+                ImageView item_hot_welfare_iv = holder.itemView.findViewById(R.id.item_hot_welfare_iv);
+                TextView item_hot_welfare_tv = holder.itemView.findViewById(R.id.item_hot_welfare_tv);
                 if(welfareCenter == null){
                     ViewUtil.setDefaultText(item_hot_welfare_tv);
                 } else {
                     //TODO 加载数据
-                    ViewUtil.setText(item_hot_welfare_tv, welfareCenter.getName());
-                    GlideImageLoader.setImage(item_hot_welfare_iv, welfareCenter.getIcon());
+                    ViewUtil.setText(item_hot_welfare_tv, welfareCenter.getApp().getName());
+                    GlideImageLoader.setGameImage(item_hot_welfare_iv, welfareCenter.getApp().getIcon());
                     onClickToPlayGameDetail(holder.itemView, welfareCenter);
                 }
             }
@@ -173,11 +198,11 @@ public class FgtPlayGame extends BaseFragment {
         initTab();
     }
 
-    private void onClickToPlayGameDetail(View view, PlayGameEntity playGameEntity){
+    private void onClickToPlayGameDetail(View view, final GameEntity playGameEntity){
         view.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-//                Jump2View.getInstance().goFindInformation(activity, null);
+                Jump2View.getInstance().goPlayGameDetail(activity, playGameEntity.getApp().getId());
             }
         });
     }
@@ -245,7 +270,7 @@ public class FgtPlayGame extends BaseFragment {
 
     private void initData(){
 
-        SheepApp.getInstance().getNetComponent().getApiService().slideshow(1)
+        SheepApp.getInstance().getNetComponent().getApiService().gameBanner(1)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
@@ -271,6 +296,10 @@ public class FgtPlayGame extends BaseFragment {
                                 }
                                 bindBanner();
                             }
+                        }else {
+                            if (ListUtil.isEmpty(slideshowEtyLists)) {
+                                banner.setVisibility(View.GONE);
+                            }
                         }
                         notifyDataSetChanged();
                     }
@@ -283,8 +312,10 @@ public class FgtPlayGame extends BaseFragment {
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        List<PlayGameEntity> newList = baseMessage.getDatas(PlayGameEntity.class);
-                        if(everyDayPlayListData.isEmpty() && !ListUtil.isEmpty(newList)) {//有缓存时不会加载,没有缓存时获取到数据会加载
+                        List<GameEntity> newList = baseMessage.getDatas(GameEntity.class);
+                        if(!ListUtil.isEmpty(newList)) {//有缓存时不会加载,没有缓存时获取到数据会加载
+                            everyDayPlayListData.clear();
+                            everyDayPlayListData.addAll(newList);
                             everyDayPlayList.getAdapter().notifyDataSetChanged();
                             notifyDataSetChanged();
                         }
@@ -297,14 +328,16 @@ public class FgtPlayGame extends BaseFragment {
                 });
 
         //近期最热
-        SheepApp.getInstance().getNetComponent().getApiService().playgameDailyOrHotOrTypePlay(1, 10, 0,1,0)
+        SheepApp.getInstance().getNetComponent().getApiService().playgameDailyOrHotOrTypePlay(1, 10, 1,0,0)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        List<PlayGameEntity> newList = baseMessage.getDatas(PlayGameEntity.class);
-                        if(hotListData.isEmpty() && !ListUtil.isEmpty(newList)) {//有缓存时不会加载,没有缓存时获取到数据会加载
+                        List<GameEntity> newList = baseMessage.getDatas(GameEntity.class);
+                        if(!ListUtil.isEmpty(newList)) {//有缓存时不会加载,没有缓存时获取到数据会加载
+                            hotListData.clear();
+                            hotListData.addAll(newList);
                             recentHoeList.getAdapter().notifyDataSetChanged();
                             notifyDataSetChanged();
                         }
@@ -346,7 +379,9 @@ public class FgtPlayGame extends BaseFragment {
 
                 @Override
                 public void onPageSelected(int i) {
-                    FIND_TAG.onEvent("find_tag_name", ListUtil.hasIndex(list, i - 1) );
+//                    FIND_TAG.onEvent("find_tag_name", ListUtil.hasIndex(list, i - 1) );
+                    curPosition = i;
+                    mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);//重新计算viewpager高度
                 }
 
                 @Override
@@ -374,4 +409,19 @@ public class FgtPlayGame extends BaseFragment {
                 break;
         }
     }
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        switch (event.getEventTypes()) {
+            case FGT_PLAYGAME_REFRESH_H:
+                mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);
+                break;
+        }
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+
+        EventBus.getDefault().unregister(this);
+    }
 }

+ 96 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGameDetail.java

@@ -0,0 +1,96 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.sheep.gamegroup.helper.ImageListHelper;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.MyListview;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.base.BaseFragment;
+import com.tencent.smtt.sdk.WebView;
+
+import java.util.ArrayList;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+/**
+ * 玩转游戏 详情
+ * Created by ljy on 2018/9/4.
+ */
+
+public class FgtPlayGameDetail extends BaseFragment {
+    @BindView(R.id.find_game_list)
+    RecyclerView find_game_list;
+    @BindView(R.id.find_game_info_wv)
+    WebView find_game_info_wv;
+    @BindView(R.id.item_detail_listview)
+    MyListview item_detail_listview;
+    Unbinder unbinder;
+
+    private ArrayList<String> pictureList = ListUtil.emptyList();
+    private ImageListHelper imageListHelper = new ImageListHelper();
+    private Activity activity;
+    private GameEntity gameEntity;
+
+    public static FgtPlayGameDetail newInstance(GameEntity gameEntity){
+        FgtPlayGameDetail fgt = new FgtPlayGameDetail();
+        Bundle bundle = new Bundle();
+        bundle.putSerializable("game_entitiy", gameEntity);
+        fgt.setArguments(bundle);
+        return fgt;
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_play_game_detail;
+    }
+
+    @Override
+    public void onViewCreated() {
+        activity = getActivity();
+        imageListHelper.initList(activity, find_game_list, pictureList);
+
+        if(gameEntity == null || gameEntity.getApp() == null)
+            return;
+
+        //游戏图片banner
+        String pictures = gameEntity.getApp().getPictures();
+        if (!TextUtils.isEmpty(pictures) && pictures.contains(";")) {
+            pictureList.clear();
+            ListUtil.addAll(pictureList, pictures.split(";"));
+            find_game_list.setVisibility(View.VISIBLE);
+            imageListHelper.notifyDataSetChanged();
+        } else {
+            find_game_list.setVisibility(View.GONE);
+        }
+        ViewUtil.loadDataWithBaseURL(find_game_info_wv, gameEntity.getApp().getIntro());
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        // TODO: inflate a fragment view
+        View rootView = super.onCreateView(inflater, container, savedInstanceState);
+        unbinder = ButterKnife.bind(this, rootView);
+        Bundle bundle = getArguments();
+        if(bundle != null){
+            gameEntity = (GameEntity) bundle.getSerializable("game_entitiy");
+        }
+        return rootView;
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        unbinder.unbind();
+    }
+}

+ 30 - 69
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGameSon.java

@@ -1,45 +1,31 @@
 package com.sheep.gamegroup.view.fragment;
 
-import android.app.Activity;
 import android.os.Bundle;
-import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.kfzs.duanduan.event.BigEvent;
+import com.kfzs.duanduan.event.EventTypes;
+import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
-import com.sheep.gamegroup.model.util.SheepSubscriber;
-import com.sheep.gamegroup.util.ListUtil;
-import com.sheep.gamegroup.view.adapter.DownloadWelfareAdapter;
-import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.base.BaseFragment;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.view.adapter.PlayGameItemAdapter;
 
-import java.util.ArrayList;
-import java.util.List;
+import org.greenrobot.eventbus.EventBus;
+
+import java.util.Locale;
 
-import butterknife.BindView;
 import butterknife.ButterKnife;
-import butterknife.Unbinder;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import rx.Observable;
 
 /**
  * Created by ljy on 2018/9/3.
  */
 
-public class FgtPlayGameSon extends BaseFragment {
-    @BindView(R.id.recyclerview_list)
-    RecyclerView recyclerviewList;
-    Unbinder unbinder;
-
-    private int page = 1;//页数
-    private int per_page = 10;
+public class FgtPlayGameSon extends BaseListFragment<GameEntity> {
     private int type;
-    private Activity activity;
-    private List<Welfare> listData = ListUtil.emptyList();
 
     public static FgtPlayGameSon newInstance(int type){
         FgtPlayGameSon fgt = new FgtPlayGameSon();
@@ -50,65 +36,40 @@ public class FgtPlayGameSon extends BaseFragment {
     }
 
     @Override
-    public int getLayoutId() {
-        return R.layout.recyclerview_layout;
-    }
-
-    @Override
-    public void onViewCreated() {
-        activity = getActivity();
-        LinearLayoutManager downloadLayoutManager = new LinearLayoutManager(SheepApp.getInstance());
-        recyclerviewList.setHasFixedSize(true);
-        recyclerviewList.setNestedScrollingEnabled(false);
-        recyclerviewList.setLayoutManager(downloadLayoutManager);
-        recyclerviewList.setAdapter(new DownloadWelfareAdapter(SheepApp.getInstance(), listData));
-
-        initData();
-    }
-
-    private void initData() {
-        SheepApp.getInstance().getNetComponent().getApiService().getFindList(page, per_page, type)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        ArrayList<Welfare> newList = baseMessage.getDataList(Welfare.class);
-                        listData.clear();
-                        ListUtil.addAll(listData, newList);
-                        recyclerviewList.getAdapter().notifyDataSetChanged();
-                    }
-
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        listData.clear();
-                        recyclerviewList.getAdapter().notifyDataSetChanged();
-                    }
-                });
-    }
-
-    @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         // TODO: inflate a fragment view
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
         unbinder = ButterKnife.bind(this, rootView);
         Bundle bundle = getArguments();
         if(bundle != null){
-            type = bundle.getInt("type", 0);
+            type = bundle.getInt("type", 1002);
         }
         return rootView;
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
-        initData();
+    protected RecyclerView.Adapter getAdapter() {
+        return new PlayGameItemAdapter(activity, list);
+    }
+
+    @Override
+    protected String getKey(int page, int per_page) {
+        return String.format(Locale.CHINA, "app/find?page=%d&per_page=%d&is_hot=%d&daily_play=%d&type=%d", page, per_page, 0, 0, type);
+    }
+
+    @Override
+    protected Observable<BaseMessage> getApi(ApiService apiService) {
+        return apiService.playgameDailyOrHotOrTypePlay(page, per_page, 0, 0, type);
+    }
+
+    @Override
+    protected Class<GameEntity> getTClass() {
+        return GameEntity.class;
     }
 
     @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-        unbinder.unbind();
+    public void notifyData() {
+        EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_PLAYGAME_REFRESH_H));
     }
 
 }

+ 182 - 156
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java

@@ -9,7 +9,9 @@ import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.TextView;
 
+import com.jcodecraeer.xrecyclerview.XRecyclerView;
 import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.event.EventTypes;
 import com.sheep.gamegroup.di.components.DaggerFgtTryMakeMoneyComponent;
@@ -17,7 +19,7 @@ import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.RecyleObj;
 import com.sheep.gamegroup.model.entity.RecyleType;
-import com.sheep.gamegroup.model.entity.RequestParameEty;
+import com.sheep.gamegroup.model.entity.RequestParamEty;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.presenter.TryMakeMoneyContract;
@@ -25,6 +27,7 @@ import com.sheep.gamegroup.presenter.TryMakeMoneyPresenter;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.activity.GamemakeMoneyAct;
 import com.sheep.gamegroup.view.activity.TryMakeMoneyact;
 import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
@@ -51,11 +54,9 @@ import butterknife.Unbinder;
  * Created by ljy on 2018/4/26.
  */
 
-public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContract.View{
+public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContract.View {
     @BindView(R.id.recyclerview)
-    RecyclerView recyclerview;
-    @BindView(R.id.refresh)
-    SwipeRefreshLayout refresh;
+    XRecyclerView recyclerview;
     @BindView(R.id.empty_view)
     View empty_view;
     Unbinder unbinder;
@@ -67,42 +68,69 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     private List<TaskAcceptedEty> acceptedEtyList = new ArrayList<>();
     private List<TaskReleaseEty> releaseEtyLists = new ArrayList<>();
     private List<TaskReleaseEty> releaseEtyListsBegin = new ArrayList<>();
-    private int type = 0;
-    private String show_type;
+    private int about_to_begin = 0;
+    private String show_type;//有值代表来自主页
     private int is_succession;//0:一般任务 1:连续任务
 
     private void checkAndInitView() {
-        if(refresh == null)
-            refresh = findViewById(R.id.refresh);
-        if(empty_view == null)
+        if (empty_view == null)
             empty_view = findViewById(R.id.empty_view);
     }
+
     private static final int LIST_COUNT = 3;//tryMakeMoneyAdp 总共有3条数据
     private static final RecyleObj NULL = RecyleObj.make(RecyleType.NONE, null);//空数据
-    private void notifyDataSetChanged(){
+
+    private void notifyDataSetChanged() {
         checkAndInitView();
         tryMakeMoneyAdp.clear();
-        if(!ListUtil.isEmpty(acceptedEtyList))
+        if (!ListUtil.isEmpty(acceptedEtyList))
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, acceptedEtyList));
-        if(!ListUtil.isEmpty(releaseEtyLists))
+        if (!ListUtil.isEmpty(releaseEtyLists))
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists));
-        if(!ListUtil.isEmpty(releaseEtyListsBegin))
+        if (!ListUtil.isEmpty(releaseEtyListsBegin))
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.BEGIN_TASK, releaseEtyListsBegin));
         tryMakeMoneyAdp.refreshAdapter();
         boolean showEmpty = acceptedEtyList.isEmpty() && releaseEtyLists.isEmpty() && releaseEtyListsBegin.isEmpty();
         CommonUtil.getInstance().updateEmptyView(empty_view, showEmpty);
-        refresh.setRefreshing(false);
-        if(!TextUtils.isEmpty(show_type))
+        recyclerview.refreshComplete();
+        recyclerview.loadMoreComplete();
+        notifyBottomLine(false);
+        if (!TextUtils.isEmpty(show_type))
             EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_SHEEP_REFRESH_H));
     }
-    public static FgtTryMakeMoney newInstance(int type){
+
+    private void notifyBottomLine(boolean noMore) {
+        if(bottomLine != null) {
+            if (!TextUtils.isEmpty(show_type)){
+                bottomLine.setVisibility(View.GONE);
+                return;
+            }
+            int count = getDataCount();
+            bottomLine.setVisibility(count == 0 ? View.INVISIBLE : View.VISIBLE);
+            if(noMore) {
+                final boolean isCanScrollToPosition = count > 10;//页数大于一页才显示点击回到顶部
+                TextView bottom_line_text = bottomLine.findViewById(R.id.bottom_line_text);
+                bottom_line_text.setText(isCanScrollToPosition ? "我是有底线的,点击我回到顶部" : "我是有底线的");
+                bottomLine.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        if (isCanScrollToPosition)
+                            recyclerview.scrollToPosition(0);
+                    }
+                });
+            }
+        }
+    }
+
+    public static FgtTryMakeMoney newInstance(int type) {
         FgtTryMakeMoney fgtTryMakeMoney = new FgtTryMakeMoney();
         Bundle bundle = new Bundle();
         bundle.putInt("type", type);
         fgtTryMakeMoney.setArguments(bundle);
         return fgtTryMakeMoney;
     }
-    public static FgtTryMakeMoney newInstance(int type,String show_type){
+
+    public static FgtTryMakeMoney newInstance(int type, String show_type) {
         FgtTryMakeMoney fgtTryMakeMoney = new FgtTryMakeMoney();
         Bundle bundle = new Bundle();
         bundle.putInt("type", type);
@@ -116,13 +144,24 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        // TODO: inflate a fragment view
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
         unbinder = ButterKnife.bind(this, rootView);
         Bundle bundle = getArguments();
-        if(bundle != null){
-            type = bundle.getInt("type", 0);
+        if (bundle != null) {
+            about_to_begin = bundle.getInt("type", 0);
             show_type = bundle.getString("show_type", "");
+            switch (show_type){
+                case "is_hot":
+                    isGetRelease = true;
+                    break;
+                case "about_to_begin":
+                    isGetReleaseBegin = true;
+                    break;
+                default:
+                    isGetRelease = true;
+                    isGetReleaseBegin = true;
+                    break;
+            }
         }
         return rootView;
     }
@@ -137,18 +176,21 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         activity = getActivity();
         initView();
         initData();
+        initListener();
     }
+
     private String task_type = "-1";
     private boolean isGameTask = false;
+
     public void initView() {
-        if(activity == null){
+        if (activity == null) {
             return;
         }
-        if(activity instanceof TryMakeMoneyact) {//试玩任务、连续任务
+        if (activity instanceof TryMakeMoneyact) {//试玩任务、连续任务
             is_succession = ((TryMakeMoneyact) activity).getIsSuccession();
             task_type = "-1";
             isGameTask = false;
-        } else if(activity instanceof GamemakeMoneyAct) {//游戏任务
+        } else if (activity instanceof GamemakeMoneyAct) {//游戏任务
             is_succession = ((GamemakeMoneyAct) activity).getIsSuccession();
             task_type = "1002,1003,1004";
             isGameTask = true;
@@ -160,102 +202,134 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 .inject(FgtTryMakeMoney.this);
         recyclerview.setLayoutManager(new LinearLayoutManager(activity));
         tryMakeMoneyAdp = new TryMakeMoneyAdp(activity);
-        tryMakeMoneyAdp.addType(type);
+        tryMakeMoneyAdp.addType(about_to_begin);
         tryMakeMoneyAdp.addShowType(show_type);
-        tryMakeMoneyAdp.setIs_succession(TextUtils.isEmpty(show_type)?is_succession:3);
+        tryMakeMoneyAdp.setIs_succession(TextUtils.isEmpty(show_type) ? is_succession : 3);
         tryMakeMoneyAdp.addPresenter(presenter);
         for (int i = 0; i < LIST_COUNT; i++) {
             tryMakeMoneyAdp.add(NULL);
         }
         recyclerview.setAdapter(tryMakeMoneyAdp);
 
-        initListener();
+        bottomLine = ViewUtil.setBottomLine(recyclerview);
 
     }
+    private View bottomLine;
 
     public void initListener() {
-        refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+        recyclerview.setLoadingListener(new XRecyclerView.LoadingListener() {
             @Override
             public void onRefresh() {
                 refreshData();
             }
-        });
-        recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
-            @Override
-            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-                super.onScrollStateChanged(recyclerView, newState);
-            }
 
             @Override
-            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-
-                int topRowVerticalPosition =
-                        (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();
-
-                refresh.setEnabled(topRowVerticalPosition >= 0);
+            public void onLoadMore() {
+                boolean noMoreRelease = true;
+                boolean noMoreReleaseBegin = true;
+
+                if(isGetRelease) {
+                    if (ListUtil.size(releaseEtyLists) >= per_page * releasePage) {
+                        releasePage += 1;
+                        noMoreRelease = false;
+                        //先加载缓存
+                        getReleaseFromACache(0);
+                        //再加载网络数据
+                        getReleaseFromNetWork(0);
+                    }
+                }
+                if(isGetReleaseBegin) {
+                    if (ListUtil.size(releaseEtyListsBegin) >= per_page * releaseBeginPage) {
+                        releaseBeginPage += 1;
+                        noMoreReleaseBegin = false;
+                        //先加载缓存
+                        getReleaseFromACache(1);
+                        //再加载网络数据
+                        getReleaseFromNetWork(1);
+                    }
+                }
+                if(noMoreRelease && noMoreReleaseBegin){
+                    recyclerview.setNoMore(true);
+                    notifyBottomLine(true);
+                }
             }
         });
     }
+
     private boolean isFirstCache = false;//是否首先尝试缓存
+
     //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
-    public void initData(){
+    public void initData() {
         isFirstCache = true;
         mInitData();
     }
+
     //强制刷新数据
-    public void refreshData(){
+    public void refreshData() {
         isFirstCache = false;
-        if(TextUtils.isEmpty(show_type))
-            if(refresh != null)
-                refresh.setRefreshing(true);
+        releasePage = 1;
+        releaseBeginPage = 1;
         mInitData();
     }
+
+    private int releasePage = 1;
+    private int releaseBeginPage = 1;
+    private int per_page = 10;
+    //是否获取发布的任务列表
+    private boolean isGetRelease = false;
+    //是否获取即将开始的列表
+    private boolean isGetReleaseBegin = false;
+
     public void mInitData() {
-        if(!acceptedEtyList.isEmpty()) {
+        if (!acceptedEtyList.isEmpty()) {
             acceptedEtyList.clear();
             notifyDataSetChanged();
         }
         CommonUtil.getInstance().resetEmptyView(empty_view);
-        //加载缓存
-        if(TextUtils.isEmpty(show_type))
-            type = 0;
-        if(isFirstCache){
+        if (isFirstCache) {
             //注释掉获取缓存的正在进行的任务
             List<TaskAcceptedEty> cacheTaskAcceptedEtyList;
-            if(isGameTask) {
+            if (isGameTask) {
                 cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
             } else {
-                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(TextUtils.isEmpty(show_type)?is_succession:3, 0), TaskAcceptedEty.class);
+                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(TextUtils.isEmpty(show_type) ? is_succession : 3, 0), TaskAcceptedEty.class);
             }
             if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
                 acceptedEtyList.clear();
             } else {
                 acceptedEtyList = cacheTaskAcceptedEtyList;
-                if(!ListUtil.isEmpty(acceptedEtyList)){//清除时间数据,缓存数据不显示时间
+                if (!ListUtil.isEmpty(acceptedEtyList)) {//清除时间数据,缓存数据不显示时间
                     for (TaskAcceptedEty taskAcceptedEty : acceptedEtyList) {
                         taskAcceptedEty.setEnd_time(0);
                     }
                 }
             }
-            getFromACache(type);
         }
-        //加载网络数据
-        if(TextUtils.isEmpty(show_type))//这里为
-            type = 0;
-        getFromNetWork(type);
+        initAcceptedTaskList();
+        if(isGetRelease) {
+            //先加载缓存
+            getReleaseFromACache(0);
+            //再加载网络数据
+            getReleaseFromNetWork(0);
+        }
+        if(isGetReleaseBegin) {
+            //先加载缓存
+            getReleaseFromACache(1);
+            //再加载网络数据
+            getReleaseFromNetWork(1);
+        }
     }
 
     /**
      * 获取正在运行的任务
      */
     private void initAcceptedTaskList() {
-        if(isGameTask){
+        if (isGameTask) {
             presenter.runGameTask();
-        } else if(!TextUtils.isEmpty(show_type)){
-
-        }
-        else {
-            presenter.returnTask(TextUtils.isEmpty(show_type)?is_succession:3, 0);
+        } else if (TextUtils.isEmpty(show_type)) {
+            presenter.returnTask(is_succession, 0);
+        } else {//主页不加载数据
+//            presenter.returnTask(3, 0);
         }
     }
 
@@ -284,7 +358,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     public void failAcceptedTask2View(Object o) {
         try {
             BaseMessage baseMessage = (BaseMessage) o;
-            switch (baseMessage.getCode()){
+            switch (baseMessage.getCode()) {
                 case 300://未查询到数据
                     G.showToast(" 未查询到数据!");
                     break;
@@ -292,7 +366,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                     G.showToast(" 网络错误!");
                     break;
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             G.showToast(" 网络错误!");
         }
@@ -309,16 +383,16 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     public void giveUpTaskFailView(Object o) {
         try {
             BaseMessage baseMessage = (BaseMessage) o;
-            G.showToast(baseMessage.getMsg()+"");
-        }catch (Exception e){
+            G.showToast(baseMessage.getMsg() + "");
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
     @Override
-    public void returnTaskTaskUpdataView(Object object) {
-        boolean isNewData = DataUtil.getInstance().isNewData(isGameTask ? ApiKey.run_game_task : ApiKey.new_run_task(TextUtils.isEmpty(show_type)?is_succession:3, 0));
-        if(isNewData) {
+    public void returnTaskTaskUpdateView(Object object) {
+        boolean isNewData = DataUtil.getInstance().isNewData(isGameTask ? ApiKey.run_game_task : ApiKey.new_run_task(TextUtils.isEmpty(show_type) ? is_succession : 3, 0));
+        if (isNewData) {
             if (object instanceof BaseMessage) {
                 List<TaskAcceptedEty> taskAcceptedEty = ((BaseMessage) object).getDataList(TaskAcceptedEty.class);
                 if (ListUtil.isEmpty(taskAcceptedEty)) {
@@ -327,64 +401,52 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                     acceptedEtyList.clear();
                     acceptedEtyList.addAll(taskAcceptedEty);
                 }
-                notifyDataSetChanged();
             }
         }
-        refresh.setRefreshing(false);
+        notifyDataSetChanged();
     }
 
     @Override
     public void failReturnTask2View(Object object) {
-        if(!acceptedEtyList.isEmpty()) {
+        if (!acceptedEtyList.isEmpty()) {
             acceptedEtyList.clear();
-            notifyDataSetChanged();
         }
-        refresh.setRefreshing(false);
+        notifyDataSetChanged();
     }
 
     /**
-     *  获取已经发布任务
-     * @param object
+     * 获取已经发布任务
+     *
+     * @param baseMessage
      */
     @Override
-    public void releaseTaskTaskUpdataView(Object object) {
-        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task(type, task_type, TextUtils.isEmpty(show_type)?is_succession:3));
-        if(isNewData && object instanceof BaseMessage) {
-            List<TaskReleaseEty> releaseEtyList = ((BaseMessage) object).getDataList(TaskReleaseEty.class);
-            switch (type) {
+    public void releaseTaskTaskUpdateView(BaseMessage baseMessage, int about_to_begin) {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, TextUtils.isEmpty(show_type) ? is_succession : 3));
+        if (isNewData) {
+            List<TaskReleaseEty> releaseEtyList = baseMessage.getDataList(TaskReleaseEty.class);
+            switch (about_to_begin) {
                 case 0:
-                    releaseEtyLists.clear();
-                    releaseEtyLists.addAll(releaseEtyList);
+                    ListUtil.addAll(releaseEtyLists, releaseEtyList);
                     break;
                 case 1:
-                    releaseEtyListsBegin.clear();
-                    releaseEtyListsBegin.addAll(releaseEtyList);
+                    ListUtil.addAll(releaseEtyListsBegin, releaseEtyList);
                     break;
             }
-            notifyDataSetChanged();
         }
-        getFromNetWorkFirst(type);
+        notifyDataSetChanged();
     }
 
     @Override
-    public void failReleaseTask2View(Object object) {
-        switch (type){
-            case 0:
-                releaseEtyLists.clear();
-                break;
-            case 1:
-                releaseEtyListsBegin.clear();
-                break;
-        }
+    public void failReleaseTask2View(BaseMessage baseMessage, int about_to_begin) {
         notifyDataSetChanged();
-        getFromNetWorkFirst(type);
     }
 
     private int onResumeCount = 0;
+
     @Override
     public void onResume() {
         super.onResume();
-        if (onResumeCount > 0 && presenter != null){//直接全部刷新
+        if (onResumeCount > 0 && presenter != null) {//直接全部刷新
             refreshData();
         }
         onResumeCount++;
@@ -393,79 +455,43 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     @Override
     public void onPause() {
         super.onPause();
-        if(tryMakeMoneyAdp != null){
+        if (tryMakeMoneyAdp != null) {
             tryMakeMoneyAdp.cancelAllTimers();
         }
     }
-    /**
-     * 发布的任务
-     * type: 0 1
-     */
-    private void getFromACacheFirst(int type){
-        if(TextUtils.isEmpty(show_type)){
-            this.type = ++type;
-            getFromACache(this.type);
-        }
-    }
-    private void getFromACache(int type){
+
+    //从ACache获取发布的任务列表
+    private void getReleaseFromACache(int about_to_begin) {
         try {
-            if(type > 1){
-                return;
-            }
-            List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(type, task_type, TextUtils.isEmpty(show_type)?is_succession:3), TaskReleaseEty.class);
-            switch (type){
+            List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, TextUtils.isEmpty(show_type) ? is_succession : 3), TaskReleaseEty.class);
+            switch (about_to_begin) {
                 case 0:
-                    if(cacheTaskReleaseEtyList == null) {
-                        releaseEtyLists.clear();
-                    } else {
-                        releaseEtyLists.clear();
-                        releaseEtyLists.addAll(cacheTaskReleaseEtyList);
-                        notifyDataSetChanged();
-                        getFromACacheFirst(type);
-                    }
+                    ListUtil.addAll(releaseEtyLists, cacheTaskReleaseEtyList);
                     break;
                 case 1:
-                    if(cacheTaskReleaseEtyList == null) {
-                        releaseEtyListsBegin.clear();
-                    } else {
-                        releaseEtyListsBegin.clear();
-                        releaseEtyListsBegin.addAll(cacheTaskReleaseEtyList);
-                        notifyDataSetChanged();
-                        getFromACacheFirst(type);
-                    }
+                    ListUtil.addAll(releaseEtyListsBegin, cacheTaskReleaseEtyList);
                     break;
             }
+            notifyDataSetChanged();
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
-    /**
-     * 发布的任务
-     * type: 0 1
-     */
-    private void getFromNetWorkFirst(int type){
-        if(TextUtils.isEmpty(show_type)){
-            this.type = ++type;
-            getFromNetWork(this.type);
-        }
-    }
-    private void getFromNetWork(int type){
-        if(type > 1){
-            initAcceptedTaskList();
-            return;
-        }
-        RequestParameEty parameEty = new RequestParameEty();
-        parameEty.setHashMap(
+
+    //从网络获取发布的任务列表
+    private void getReleaseFromNetWork(int about_to_begin) {
+        RequestParamEty paramEty = new RequestParamEty();
+        paramEty.setHashMap(
                 CommonUtil.getInstance()
-                        .setHashMap(1,
-                                100,
+                        .setHashMap(about_to_begin == 0 ? releasePage : releaseBeginPage,
+                                per_page,
                                 SheepApp.getInstance().getConnectAddress().getPlatForm(),
-                                TextUtils.isEmpty(show_type)?0:show_type.equals("is_hot")?1:0,
+                                TextUtils.isEmpty(show_type) ? 0 : show_type.equals("is_hot") ? 1 : 0,
                                 0,
-                                type,
+                                about_to_begin,
                                 task_type,
-                                TextUtils.isEmpty(show_type)?is_succession:3));
-        presenter.releaseTask(parameEty);
+                                TextUtils.isEmpty(show_type) ? is_succession : 3));
+        presenter.releaseTask(paramEty);
     }
 
     public int getDataCount() {

+ 77 - 22
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtWelfareCenter.java

@@ -3,28 +3,38 @@ package com.sheep.gamegroup.view.fragment;
 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
+import android.support.annotation.Nullable;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.kfzs.duanduan.event.BigEvent;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
+import com.sheep.gamegroup.model.entity.GiftBagApp;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 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.DownloadWelfareAdapter;
+import com.sheep.gamegroup.view.adapter.WelfareAdapter;
 import com.sheep.gamegroup.view.adapter.GiftCenterAdapter;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.base.BaseFragment;
 
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -33,13 +43,14 @@ import butterknife.ButterKnife;
 import butterknife.OnClick;
 import butterknife.Unbinder;
 import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
 import rx.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/8/28.
  * realicing@sina.com
  */
-public class FgtWelfareCenter extends BaseFragment {
+public class FgtWelfareCenter extends BaseFragment{
     @BindView(R.id.refresh)
     SwipeRefreshLayout refresh;
     @BindView(R.id.wc_hot_welfare_list)
@@ -62,35 +73,42 @@ public class FgtWelfareCenter extends BaseFragment {
     public int getLayoutId() {
         return R.layout.fgt_welfare_center;
     }
-    private List<Welfare> hotWelfareList = ListUtil.emptyList();
-    private List<Welfare> downloadWelfareList = ListUtil.emptyList();
-    private List<Welfare> giftCenterList = ListUtil.emptyList();
+    private List<TaskReleaseEty> hotWelfareList = ListUtil.emptyList();
+    private List<TaskReleaseEty> downloadWelfareList = ListUtil.emptyList();
+    private List<GiftBagApp> giftCenterList = ListUtil.emptyList();
     private Activity activity;
     @Override
     public void onViewCreated() {
         activity = getActivity();
-        Context context = SheepApp.getInstance();
+        final Context context = SheepApp.getInstance();
         //热门福利
         LinearLayoutManager hotLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
         wcHotWelfareList.setHasFixedSize(true);
         wcHotWelfareList.setNestedScrollingEnabled(false);
         wcHotWelfareList.setLayoutManager(hotLayoutManager);
-        wcHotWelfareList.setAdapter(new AdbCommonRecycler<Welfare>(context, hotWelfareList) {
+        wcHotWelfareList.setAdapter(new AdbCommonRecycler<TaskReleaseEty>(context, hotWelfareList) {
             @Override
             public int getViewIdByType(int type) {
                 return R.layout.item_hot_welfare;
             }
 
             @Override
-            public void convert(ViewHolder holder, Welfare welfareCenter) {
-//                ImageView item_hot_welfare_iv = holder.getView(R.id.item_hot_welfare_iv);
-//                TextView item_hot_welfare_tv = holder.getView(R.id.item_hot_welfare_tv);
-//                if(welfareCenter == null){
-//                    ViewUtil.setDefaultText(item_hot_welfare_tv);
-//                } else {
-//                    //TODO 加载数据
-//                    ViewUtil.setText(item_hot_welfare_tv);
-//                }
+            public void convert(ViewHolder holder, final TaskReleaseEty item) {
+                ImageView item_hot_welfare_iv = holder.getView(R.id.item_hot_welfare_iv);
+                TextView item_hot_welfare_tv = holder.getView(R.id.item_hot_welfare_tv);
+                if(item == null || item.getTask() == null){
+                    ViewUtil.setDefaultText(item_hot_welfare_tv);
+                } else {
+                    GlideImageLoader.setGameImage(item_hot_welfare_iv, item.getTask().getIcon());
+                    ViewUtil.setText(item_hot_welfare_tv, item.getName());
+                }
+                holder.itemView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        if(item != null && item.getTask() != null)
+                            Jump2View.getInstance().goGameTaskDetailView(activity,  item.getId(), item.getTask().getThird_task_id(),1);
+                    }
+                });
             }
         });
         //下载福利
@@ -98,13 +116,33 @@ public class FgtWelfareCenter extends BaseFragment {
         wcDownloadWelfareList.setHasFixedSize(true);
         wcDownloadWelfareList.setNestedScrollingEnabled(false);
         wcDownloadWelfareList.setLayoutManager(downloadLayoutManager);
-        wcDownloadWelfareList.setAdapter(new DownloadWelfareAdapter(activity, downloadWelfareList));
+        wcDownloadWelfareList.setAdapter(new WelfareAdapter(activity, downloadWelfareList, new Action1<Integer>() {
+            @Override
+            public void call(Integer integer) {
+                switch (integer){
+                    case WelfareAdapter.TO_REFRESH:
+                        refreshDownloadWelfare = true;
+                        refreshData();
+                        break;
+                }
+            }
+        }));
         //礼包中心
         LinearLayoutManager layoutManager = new LinearLayoutManager(context);
         wcGiftCenterList.setHasFixedSize(true);
         wcGiftCenterList.setNestedScrollingEnabled(false);
         wcGiftCenterList.setLayoutManager(layoutManager);
-        wcGiftCenterList.setAdapter(new GiftCenterAdapter(activity, giftCenterList));
+        wcGiftCenterList.setAdapter(new GiftCenterAdapter(activity, giftCenterList, new Action1<Integer>() {
+            @Override
+            public void call(Integer integer) {
+                switch (integer){
+                    case WelfareAdapter.TO_REFRESH:
+                        refreshGiftCenter = true;
+                        refreshData();
+                        break;
+                }
+            }
+        }));
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
@@ -139,7 +177,7 @@ public class FgtWelfareCenter extends BaseFragment {
                         @Override
                         public void onNext(BaseMessage baseMessage) {
                             refreshHotWelfare = false;
-                            ArrayList<Welfare> newList = baseMessage.getDataList(Welfare.class);
+                            ArrayList<TaskReleaseEty> newList = baseMessage.getDataList(TaskReleaseEty.class);
                             hotWelfareList.clear();
                             ListUtil.addAll(hotWelfareList, newList);
                             wcHotWelfareList.getAdapter().notifyDataSetChanged();
@@ -164,7 +202,7 @@ public class FgtWelfareCenter extends BaseFragment {
                         @Override
                         public void onNext(BaseMessage baseMessage) {
                             refreshDownloadWelfare = false;
-                            ArrayList<Welfare> newList = baseMessage.getDataList(Welfare.class);
+                            ArrayList<TaskReleaseEty> newList = baseMessage.getDataList(TaskReleaseEty.class);
                             downloadWelfareList.clear();
                             ListUtil.addAll(downloadWelfareList, newList);
                             wcDownloadWelfareList.getAdapter().notifyDataSetChanged();
@@ -189,7 +227,7 @@ public class FgtWelfareCenter extends BaseFragment {
                         @Override
                         public void onNext(BaseMessage baseMessage) {
                             refreshGiftCenter = false;
-                            ArrayList<Welfare> newList = baseMessage.getDataList(Welfare.class);
+                            ArrayList<GiftBagApp> newList = baseMessage.getDataList(GiftBagApp.class);
                             giftCenterList.clear();
                             ListUtil.addAll(giftCenterList, newList);
                             wcGiftCenterList.getAdapter().notifyDataSetChanged();
@@ -226,6 +264,7 @@ public class FgtWelfareCenter extends BaseFragment {
         unbinder.unbind();
     }
 
+
     @OnClick({R.id.wc_all_welfare, R.id.wc_all_gift})
     public void onViewClicked(View view) {
         switch (view.getId()) {
@@ -237,4 +276,20 @@ public class FgtWelfareCenter extends BaseFragment {
                 break;
         }
     }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        EventBus.getDefault().register(this);
+    }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        CommonUtil.getInstance().setEventResultViewStatus(event, wcDownloadWelfareList);
+    }
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        EventBus.getDefault().unregister(this);
+    }
 }

+ 11 - 6
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtWelfareUseRecord.java

@@ -4,8 +4,8 @@ import android.support.v7.widget.RecyclerView;
 
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.Welfare;
-import com.sheep.gamegroup.view.adapter.DownloadWelfareAdapter;
+import com.sheep.gamegroup.model.entity.VoucherUseLog;
+import com.sheep.gamegroup.view.adapter.VoucherUseLogAdapter;
 
 import java.util.Locale;
 
@@ -16,10 +16,10 @@ import rx.Observable;
  * Created by realicing on 2018/8/28.
  * realicing@sina.com
  */
-public class FgtWelfareUseRecord extends BaseListFragment<Welfare> {
+public class FgtWelfareUseRecord extends BaseListFragment<VoucherUseLog> {
     @Override
     protected RecyclerView.Adapter getAdapter() {
-        return new DownloadWelfareAdapter(activity, list);
+        return new VoucherUseLogAdapter(activity, list);
     }
 
     @Override
@@ -33,7 +33,12 @@ public class FgtWelfareUseRecord extends BaseListFragment<Welfare> {
     }
 
     @Override
-    protected Class<Welfare> getTClass() {
-        return Welfare.class;
+    protected Class<VoucherUseLog> getTClass() {
+        return VoucherUseLog.class;
+    }
+
+    @Override
+    public void notifyData() {
+
     }
 }

+ 35 - 2
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/TitleBarUtils.java

@@ -15,6 +15,7 @@ import android.widget.TextView;
 import com.kfzs.duanduan.mine.GiftpackListAdapter;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.view.adapter.AdpTryMakemoney;
 import com.sheep.gamegroup.view.fragment.FgtTryMakeMoney;
 import com.sheep.gamegroup.view.fragment.FgtWelfareCenter;
@@ -380,7 +381,7 @@ public class TitleBarUtils {
         return this;
     }
 
-    public TitleBarUtils addTabs(BaseActivity activity, ViewPager viewPager, String tab1, Fragment fragment1, String tab2, Fragment fragment2) {
+    public TitleBarUtils addTabs(final BaseActivity activity, ViewPager viewPager, String tab1, Fragment fragment1, String tab2, Fragment fragment2) {
         //设置标题不可见
         TextView titleView = activity.findViewById(R.id.txt_baseactivity_title);
         titleView.setVisibility(View.GONE);
@@ -392,11 +393,43 @@ public class TitleBarUtils {
         adapter.add(fragment1, tab1);
         adapter.add(fragment2, tab2);
 
-        viewPager.setOffscreenPageLimit(2);
+//        viewPager.setOffscreenPageLimit(2);
         viewPager.setAdapter(adapter);
 
         tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
         tabLayout.setupWithViewPager(viewPager);
+        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                if(position == 0){
+                    setRightImgBotton(activity,  R.mipmap.search_black_img, new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            Jump2View.getInstance().goGameSearch(activity, null);
+                        }
+                    });
+                }else {
+                    setRightBotton(activity, "我的福利", 0, new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+                            // 进入我的福利界面
+                            Jump2View.getInstance().goMyWelfare(activity);
+                        }
+                    });
+                }
+
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+
+            }
+        });
 //        CommonUtil.getInstance().reflex(tabLayout, activity);
         return this;
     }

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

@@ -42,9 +42,9 @@ public class ApiKey {
     public static final String my_games = "app/game_consumption/my_games?page=1&per_page=100";
     //首页获取所有发布的热门任务(试玩任务、游戏任务、连续任务)
     public static final String release_task = "app/release_task?page=1&per_page=100&platform=1&is_hot=1&is_recommend=0&about_to_begin=0&task_type=-1&is_succession=3";
-    public static String release_task(int type, String task_type, int is_succession){
+    public static String release_task(int page, int per_page, int about_to_begin, String task_type, int is_succession){
         task_type = task_type.replaceAll(",", "%2C");
-        return String.format(Locale.CHINA, "app/release_task?page=1&per_page=100&platform=1&is_hot=0&is_recommend=0&about_to_begin=%d&task_type=%s&is_succession=%d", type, task_type, is_succession);
+        return String.format(Locale.CHINA, "app/release_task?page=%d&per_page=%d&platform=1&is_hot=0&is_recommend=0&about_to_begin=%d&task_type=%s&is_succession=%d", page, per_page, about_to_begin, task_type, is_succession);
     }
     //获取正在运行的任务(试玩任务、游戏任务、连续任务)
     public static String new_run_task(int is_succession, int show_game_task){
@@ -89,5 +89,9 @@ public class ApiKey {
     public static String awakenApp(){
         return "app/awaken/article";
     }
+    //发现模块游戏或应用详情
+    public static String playGameDetail(int id){
+        return "app/find?id="+id;
+    }
 
 }

+ 70 - 0
app/src/main/res/layout/act_modify_third.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical">
+    <include layout="@layout/title" />
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="#F5F5F5"
+        android:paddingBottom="20dp"
+        android:paddingEnd="17dp"
+        android:paddingStart="17dp"
+        android:paddingTop="20dp"
+        android:text="为了保证你的帐号安全,换绑手机时需要先验证你的手机号码,为了确保您的信息安全,本功能将会向你关联手机号码自动发送一条验证码(该条短信资费由本公司承担)。您收到后应根据验证码短信内容填写,系统校验成功才能修改。"
+        android:textColor="@color/black_666666"
+        android:textSize="12sp" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="5dp"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <android.support.v7.widget.AppCompatEditText
+            android:id="@+id/modify_third_mobile_et"
+            style="@style/style_modify_third_et"
+            android:hint="手机号"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:inputType="phone"
+            android:maxLength="11" />
+        <TextView
+            android:id="@+id/modify_third_code_btn"
+            style="@style/style_code_btn"
+            android:layout_marginEnd="@dimen/content_padding_16"/>
+    </LinearLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginEnd="@dimen/content_padding_16"
+        android:layout_marginStart="@dimen/content_padding_16"
+        android:background="#ffcccccc" />
+
+    <android.support.v7.widget.AppCompatEditText
+        android:id="@+id/modify_third_code_et"
+        style="@style/style_modify_third_et"
+        android:hint="验证码"
+        android:layout_marginTop="35dp"
+        android:layout_marginBottom="5dp"
+        android:inputType="number"
+        android:maxLength="6" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginEnd="@dimen/content_padding_16"
+        android:layout_marginStart="@dimen/content_padding_16"
+        android:layout_marginBottom="56dp"
+        android:background="#ffcccccc" />
+
+    <TextView
+        android:id="@+id/modify_third_commit"
+        style="@style/style_button"
+        android:text="提交"/>
+</LinearLayout>

+ 189 - 0
app/src/main/res/layout/act_play_game_detail_layout.xml

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white_light">
+
+    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <android.support.design.widget.AppBarLayout
+            android:id="@+id/appbar_act_game_details"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white_light"
+            android:fitsSystemWindows="true">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="280dp"
+                android:gravity="center_horizontal"
+                android:orientation="vertical"
+                app:expandedTitleTextAppearance="@style/TextAppearance.Design.CollapsingToolbar.Expanded"
+                app:layout_scrollFlags="scroll|exitUntilCollapsed"/>
+
+        </android.support.design.widget.AppBarLayout>
+
+        <android.support.v4.widget.NestedScrollView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:fillViewport="false"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+                <!--选项卡-->
+                <include layout="@layout/tablayout_viewpager_layout" />
+
+                <include layout="@layout/find_item_bottom"/>
+            </LinearLayout>
+        </android.support.v4.widget.NestedScrollView>
+    </android.support.design.widget.CoordinatorLayout>
+
+    <View
+        android:id="@+id/status_height_view"
+        android:layout_width="match_parent"
+        android:layout_height="0dp" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="?attr/actionBarSize"
+        android:layout_below="@+id/status_height_view">
+
+        <View
+            android:id="@+id/find_game_bar"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/white_F9F9F9"
+            android:visibility="invisible" />
+
+        <include
+            layout="@layout/title_bottom_line"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:visibility="invisible" />
+
+        <ImageView
+            android:id="@+id/img_baseactivity_title"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:paddingEnd="@dimen/content_padding"
+            android:paddingStart="@dimen/content_padding"
+            android:scaleType="centerInside"
+            android:src="@drawable/narrow_back_black" />
+
+        <TextView
+            android:id="@+id/txt_baseactivity_title"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:text="@string/app_name"
+            android:textColor="@color/black_text_deep"
+            android:textSize="@dimen/text_size_4"
+            android:visibility="invisible" />
+        <!--右边图片按钮-->
+        <ImageButton
+            android:id="@+id/ibtn_baseactivity_right"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignParentEnd="true"
+            android:layout_centerVertical="true"
+            android:paddingEnd="@dimen/content_padding"
+            android:paddingStart="@dimen/content_padding"
+            android:background="@color/translate"
+            android:src="@mipmap/share"
+            android:gravity="center"
+            android:visibility="invisible"/>
+    </RelativeLayout>
+
+    <ImageView
+        android:id="@+id/find_game_iv"
+        android:layout_width="@dimen/find_icon_with"
+        android:layout_height="@dimen/find_icon_with"
+        android:layout_marginTop="@dimen/find_game_top"
+        android:src="@drawable/loading_01"
+        android:layout_below="@+id/status_height_view" />
+
+    <TextView
+        android:id="@+id/find_game_name_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/find_game_top2"
+        android:layout_below="@+id/status_height_view"
+        android:text="@string/app_name"
+        android:textColor="@color/title"
+        android:textSize="16sp" />
+
+    <LinearLayout
+        android:id="@+id/ll_game_tag"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/find_game_top3"
+        android:orientation="horizontal"/>
+
+    <TextView
+        android:id="@+id/find_game_info_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="190dp"
+        android:layout_below="@+id/status_height_view"
+        android:gravity="center"
+        android:text="厂商:网易 | 版本号:7.9"
+        android:textColor="@color/black_666666"
+        android:textSize="12sp" />
+
+    <android.support.v7.widget.AppCompatRatingBar
+        android:id="@+id/find_game_xin"
+        style="@style/style_rating_bar"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/find_game_top210"
+        android:layout_centerHorizontal="true"
+        android:isIndicator="true"
+        android:numStars="5"
+        android:rating="1.5"
+        android:stepSize="0.5" />
+
+    <LinearLayout
+        android:id="@+id/welfare_gift_layout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="@dimen/find_game_top6"
+        android:layout_below="@+id/status_height_view"
+        android:orientation="horizontal">
+        <TextView
+            android:id="@+id/welfare_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:padding="@dimen/content_padding_3"
+            android:background="@mipmap/welfare_gift_img_bg"
+            android:text="123"
+            android:textSize="10sp"
+            android:textColor="@color/white"/>
+        <TextView
+            android:id="@+id/gift_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:padding="@dimen/content_padding_3"
+            android:background="@mipmap/welfare_gift_img_bg"
+            android:text="123"
+            android:textSize="10sp"
+            android:layout_marginStart="@dimen/content_padding_15"
+            android:textColor="@color/white"/>
+    </LinearLayout>
+    <TextView
+        android:id="@+id/find_game_down_tv"
+        style="@style/style_button"
+        android:layout_centerInParent="true"
+        android:layout_alignParentBottom="true"
+        android:text="下载" />
+</RelativeLayout>

+ 1 - 6
app/src/main/res/layout/common_tab_vp.xml

@@ -2,14 +2,9 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/bg_gray"
+    android:background="@color/white"
     android:orientation="vertical">
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_marginTop="24dp" />
-
     <include layout="@layout/title" />
 
     <android.support.design.widget.TabLayout

+ 25 - 0
app/src/main/res/layout/fgt_find.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/bg_gray"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_marginTop="24dp" />
+
+    <include layout="@layout/title" />
+
+    <android.support.design.widget.TabLayout
+        android:id="@+id/indicator"
+        style="@style/style_tab"
+        android:layout_marginTop="7dp" />
+
+    <android.support.v4.view.ViewPager
+        android:id="@+id/pager"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1" />
+</LinearLayout>

+ 50 - 0
app/src/main/res/layout/fgt_playgame_gift_item.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:padding="@dimen/content_padding_15">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/name_tv"
+            android:layout_width="0dp"
+            android:layout_weight="2"
+            android:layout_height="wrap_content"
+            android:text="充值福利300元"
+            android:textColor="#666666"
+            android:textSize="13sp" />
+
+        <TextView
+            android:id="@+id/num_tv"
+            android:layout_width="0dp"
+            android:layout_weight="2"
+            android:layout_height="wrap_content"
+            android:text="剩余500份"
+            android:textColor="#666666"
+            android:textSize="13sp" />
+
+        <TextView
+            android:id="@+id/btn_tv"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:text="下载领取"
+            android:textColor="#666666"
+            android:textSize="13sp"
+            android:gravity="center" />
+
+    </LinearLayout>
+
+    <View
+        android:id="@+id/line_tv"
+        android:layout_width="match_parent"
+        android:layout_height="0.5dp"
+        android:background="@color/gray_F0F0F0"
+        android:layout_marginTop="@dimen/content_padding_15"
+        android:layout_gravity="bottom" />
+</LinearLayout>

+ 7 - 8
app/src/main/res/layout/fgt_try_makemoney_layout.xml

@@ -11,15 +11,14 @@
         layout="@layout/empty_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
-    <com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout
-        android:id="@+id/refresh"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+    <!--<com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout-->
+        <!--android:id="@+id/refresh"-->
+        <!--android:layout_width="match_parent"-->
+        <!--android:layout_height="wrap_content">-->
 
-        <android.support.v7.widget.RecyclerView
+        <com.jcodecraeer.xrecyclerview.XRecyclerView
             android:id="@+id/recyclerview"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical" />
-    </com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout>
+            android:layout_height="match_parent" />
+    <!--</com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout>-->
 </RelativeLayout>

+ 53 - 21
app/src/main/res/layout/item_download_welfare.xml

@@ -25,22 +25,38 @@
             android:layout_width="0dp"
             android:layout_height="62dp"
             android:layout_marginStart="@dimen/content_padding"
-            android:orientation="vertical"
             android:layout_marginTop="16dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toStartOf="@+id/item_download_welfare_btn_top"
-            app:layout_constraintStart_toEndOf="@+id/item_download_welfare_iv">
+            android:orientation="vertical"
+            android:layout_marginEnd="@dimen/find_bt_with"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/item_download_welfare_iv"
+            app:layout_constraintTop_toTopOf="parent">
 
-            <TextView
-                android:id="@+id/item_download_welfare_name_tv"
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:ellipsize="middle"
-                android:gravity="start"
-                android:maxLines="2"
-                android:text="游戏名称"
-                android:textColor="#444444"
-                android:textSize="14sp" />
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/item_download_welfare_name_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:ellipsize="middle"
+                    android:gravity="start"
+                    android:maxLines="2"
+                    android:text="游戏名称"
+                    android:textColor="#444444"
+                    android:textSize="14sp" />
+
+                <ImageView
+                    android:id="@+id/item_download_welfare_tip_iv"
+                    android:layout_width="25dp"
+                    android:layout_height="25dp"
+                    android:padding="5dp"
+                    android:src="@mipmap/tip"
+                    android:visibility="gone"/>
+            </LinearLayout>
 
             <View
                 android:layout_width="match_parent"
@@ -58,6 +74,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="第充500送500"
+                    android:lines="1"
                     android:textColor="#cc8e8e8e"
                     android:textSize="10sp" />
 
@@ -66,7 +83,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="@dimen/content_padding"
-                    android:text=""
+                    android:lines="1"
                     android:textColor="#cc8e8e8e"
                     android:textSize="10sp" />
 
@@ -93,47 +110,62 @@
             android:id="@+id/item_download_welfare_iv2"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginEnd="14dp"
             android:layout_marginTop="5dp"
-            app:layout_constraintEnd_toStartOf="@+id/item_download_welfare_btn_top"
-            app:layout_constraintTop_toTopOf="parent"
-            android:src="@mipmap/yilingq"/>
+            android:src="@mipmap/yilingq"
+            android:layout_marginEnd="85dp"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
         <TextView
             android:id="@+id/item_download_welfare_money"
             android:layout_width="@dimen/find_bt_with"
             android:layout_height="wrap_content"
+            android:layout_marginTop="21dp"
             android:gravity="center"
             android:text="+10元"
             android:textColor="@color/txt_red"
             android:textSize="15sp"
             app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginTop="21dp"
             app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/item_download_welfare_money_bottom"
+            android:layout_width="@dimen/find_bt_with"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="5dp"
+            android:gravity="center"
+            android:text="+10元"
+            android:textColor="@color/txt_red"
+            android:textSize="12sp"
+            android:visibility="gone"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent" />
+
         <TextView
             android:id="@+id/item_download_welfare_btn_top"
             style="@style/style_button_find"
+            android:layout_marginTop="21dp"
             android:text="取消任务"
             android:visibility="invisible"
             app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginTop="21dp"
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
             android:id="@+id/item_download_welfare_btn_center"
             style="@style/style_button_find"
             android:layout_centerInParent="true"
+            android:layout_marginTop="16dp"
             android:text="取消任务"
             android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="@+id/item_download_welfare_iv"
             app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginTop="16dp"
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
             android:id="@+id/item_download_welfare_btn_bottom"
             style="@style/style_button_find"
-            android:text="取消任务"
             android:layout_marginBottom="5dp"
+            android:text="取消任务"
             app:layout_constraintBottom_toBottomOf="@+id/item_download_welfare_iv"
             app:layout_constraintEnd_toEndOf="parent" />
     </android.support.constraint.ConstraintLayout>

+ 122 - 0
app/src/main/res/layout/item_play_game_detail.xml

@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/find_game_list"
+            android:layout_width="match_parent"
+            android:layout_height="200dp"
+            android:layout_marginTop="@dimen/dp_10"
+            android:layout_marginBottom="@dimen/dp_10"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:layout_margin="@dimen/dp_10"
+            android:padding="@dimen/content_padding_20"
+            android:background="@drawable/x_shap_shadow_bg_rectgangle_white">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <View
+                    android:layout_width="5dp"
+                    android:layout_height="16dp"
+                    android:background="#2FBCF1" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="3dp"
+                    android:text="游戏介绍"
+                    android:textColor="@color/black_6_3"
+                    android:textSize="15sp" />
+
+            </LinearLayout>
+            <com.tencent.smtt.sdk.WebView
+                android:id="@+id/find_game_info_wv"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/dp_10"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:layout_margin="@dimen/dp_10"
+            android:padding="@dimen/content_padding_20"
+            android:background="@drawable/x_shap_shadow_bg_rectgangle_white">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <View
+                    android:layout_width="5dp"
+                    android:layout_height="16dp"
+                    android:background="#2FBCF1" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="3dp"
+                    android:text="奖励领取步骤"
+                    android:textColor="@color/black_6_3"
+                    android:textSize="15sp" />
+
+            </LinearLayout>
+
+            <com.sheep.gamegroup.util.MyListview
+                android:id="@+id/item_detail_listview"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="@dimen/content_padding_15"
+                android:layout_marginStart="@dimen/content_padding_15"
+                android:divider="@null"
+                android:listSelector="@color/transparent"
+                android:scrollbars="none" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:layout_margin="@dimen/dp_10"
+            android:padding="@dimen/content_padding_20"
+            android:background="@drawable/x_shap_shadow_bg_rectgangle_white">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <View
+                    android:layout_width="5dp"
+                    android:layout_height="16dp"
+                    android:background="#2FBCF1" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="3dp"
+                    android:text="福利剩余数量"
+                    android:textColor="@color/black_6_3"
+                    android:textSize="15sp" />
+
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="进度条"/>
+
+
+        </LinearLayout>
+</LinearLayout>

+ 2 - 12
app/src/main/res/layout/login_act_layout.xml

@@ -52,17 +52,7 @@
 
                 <TextView
                     android:id="@+id/login_btn_code"
-                    android:layout_width="wrap_content"
-                    android:layout_height="30dp"
-                    android:layout_gravity="center|center_vertical"
-                    android:layout_marginStart="5dp"
-                    android:paddingStart="11dp"
-                    android:paddingEnd="11dp"
-                    android:gravity="center"
-                    android:textSize="12sp"
-                    android:text="@string/get_captcha"
-                    android:textColor="@color/white"
-                    android:background="@drawable/shape_blue_solid_rectangle_15"/>
+                    style="@style/style_code_btn"/>
 
             </LinearLayout>
 
@@ -75,7 +65,7 @@
                 style="@style/style_login_et"
                 android:hint="请输入邀请码(非必填)"
                 android:inputType="number"
-                android:maxLength="6"
+                android:maxLength="10"
                 android:gravity="center"/>
         </LinearLayout>
         <View

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

@@ -2,7 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/bg_gray">
+    android:background="@color/white">
 
     <include
         android:id="@+id/title"

+ 3 - 2
app/src/main/res/layout/title.xml

@@ -76,7 +76,7 @@
         android:id="@+id/ibtn_baseactivity_right"
         android:layout_width="?attr/actionBarSize"
         android:layout_height="match_parent"
-        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true"
         android:layout_centerVertical="true"
         android:background="@color/translate"
         android:gravity="center"
@@ -90,7 +90,8 @@
         android:background="@color/translate"
         android:gravity="center"
         android:minWidth="?attr/actionBarSize"
-        android:layout_toLeftOf="@+id/ibtn_baseactivity_right"
+        android:layout_alignParentEnd="true"
+        android:layout_marginEnd="?attr/actionBarSize"
         android:visibility="gone"/>
 
     <TextView

+ 32 - 2
app/src/main/res/layout/xpersion_info_act_layout.xml

@@ -161,11 +161,41 @@
                 style="@style/style_item_end_next" />
         </LinearLayout>
 
+        <View style="@style/style_item_line_3_0" />
+
+        <LinearLayout
+            android:id="@+id/personal_info_bind_tx_wx_container"
+            style="@style/style_item_container">
+
+            <TextView
+                style="@style/style_item_label"
+                android:text="@string/bind_tx_wx" />
+
+
+            <TextView
+                android:id="@+id/personal_info_bind_tx_wx"
+                style="@style/style_item_end_next" />
+        </LinearLayout>
 
         <View style="@style/style_item_line_3_0" />
 
         <LinearLayout
-            android:id="@+id/personal_info_wx_container"
+            android:id="@+id/personal_info_bind_qq_container"
+            style="@style/style_item_container">
+
+            <TextView
+                style="@style/style_item_label"
+                android:text="@string/bind_qq" />
+
+
+            <TextView
+                android:id="@+id/personal_info_bind_qq"
+                style="@style/style_item_end_next" />
+        </LinearLayout>
+        <View style="@style/style_item_line_3_0" />
+
+        <LinearLayout
+            android:id="@+id/personal_info_bind_wx_container"
             style="@style/style_item_container">
 
             <TextView
@@ -174,7 +204,7 @@
 
 
             <TextView
-                android:id="@+id/personal_info_wx"
+                android:id="@+id/personal_info_bind_wx"
                 style="@style/style_item_end_next" />
         </LinearLayout>
 

BIN
app/src/main/res/mipmap-xxhdpi/tip.png


BIN
app/src/main/res/mipmap-xxhdpi/welfare_gift_img_bg.png


+ 2 - 0
app/src/main/res/values/common.xml

@@ -98,6 +98,8 @@
     <dimen name="find_game_top">68dp</dimen>
     <dimen name="find_game_top2">144dp</dimen>
     <dimen name="find_game_top3">172dp</dimen>
+    <dimen name="find_game_top210">210dp</dimen>
     <dimen name="find_game_top4">230dp</dimen>
     <dimen name="find_game_top5">228dp</dimen>
+    <dimen name="find_game_top6">234dp</dimen>
 </resources>

+ 23 - 0
app/src/main/res/values/dd_styles.xml

@@ -480,4 +480,27 @@
         <item name="android:textColor">#666666</item>
         <item name="android:textSize">12sp</item>
     </style>
+    <style name="style_modify_third_et">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/edt_heigh_default</item>
+        <item name="android:layout_marginStart">16dp</item>
+        <item name="android:layout_marginEnd">16dp</item>
+        <item name="android:background">@color/transparent</item>
+        <item name="android:textColor">@color/black</item>
+        <item name="android:textColorHint">#CCCCCC</item>
+        <item name="android:textSize">15sp</item>
+    </style>
+    <style name="style_code_btn">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">30dp</item>
+        <item name="android:layout_gravity">center|center_vertical</item>
+        <item name="android:layout_marginStart">5dp</item>
+        <item name="android:paddingStart">11dp</item>
+        <item name="android:paddingEnd">11dp</item>
+        <item name="android:gravity">center</item>
+        <item name="android:textSize">12sp</item>
+        <item name="android:text">@string/get_captcha</item>
+        <item name="android:textColor">@color/white</item>
+        <item name="android:background">@drawable/shape_blue_solid_rectangle_15</item>
+    </style>
 </resources>

+ 3 - 1
app/src/main/res/values/gamegroup_string.xml

@@ -17,7 +17,9 @@
     <string name="ask_task_hint">*好友完成任务后,我获得20%提成奖励</string>
 
     <string name="phone">手机号</string>
-    <string name="bind_wx">提现绑定微信号</string>
+    <string name="bind_qq">绑定QQ号</string>
+    <string name="bind_wx">绑定微信号</string>
+    <string name="bind_tx_wx">提现微信号</string>
     <string name="auther">实名认证</string>
 
     <string name="header">头像</string>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -47,7 +47,7 @@
     <string name="user_know_four">4、下载成功后,请进入游戏任务—我的游戏,点击充值进行消费;</string>
 
     <string name="supplement_explain">部分机型的用户需要去手机设置里开启允许小绵羊查看应用使用情况权限,方可点击 \"领取奖励\" 完成</string>
-    <string name="supplement_explain_n">补充说明</string>
+    <string name="supplement_explain_n">补充说明(点我开启权限)</string>
     <string name="warm_prompt_n">温馨提示</string>
     <string name="warm_prompt_content">游戏必须是在小绵羊平台下载的游戏,且游戏账号是新注册的,否者任务奖励无法使用。</string>
     <string name="warm_prompt_content_notice">注意:用户若删除游戏后,系统自动检测让其下载安装游戏。</string>