Просмотр исходного кода

个人资料,领红包,抢任务,

yuanshenglan лет назад: 7
Родитель
Сommit
033c11a0f7
24 измененных файлов с 1067 добавлено и 261 удалено
  1. 1 0
      app/src/main/java/com/kfzs/duanduan/fragment/FgtFindChild.java
  2. 43 2
      app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java
  3. 51 20
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java
  4. 2 0
      app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java
  5. 106 38
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  6. 30 19
      app/src/main/java/com/sheep/gamegroup/model/entity/UserEntity.java
  7. 46 28
      app/src/main/java/com/sheep/gamegroup/model/entity/Version.java
  8. 1 0
      app/src/main/java/com/sheep/gamegroup/presenter/PhoneContract.java
  9. 52 8
      app/src/main/java/com/sheep/gamegroup/presenter/PhonePresenter.java
  10. 39 2
      app/src/main/java/com/sheep/gamegroup/util/LogUtil.java
  11. 417 80
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  12. 2 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActCreditCardWeb.java
  13. 83 4
      app/src/main/java/com/sheep/gamegroup/view/activity/PersonalInfoAct.java
  14. 26 22
      app/src/main/java/com/sheep/gamegroup/view/activity/PhoneAct.java
  15. 2 3
      app/src/main/res/layout/fgt_personacenter_item_top.xml
  16. 14 11
      app/src/main/res/layout/fgt_personalcenter_item_center_one.xml
  17. 6 8
      app/src/main/res/layout/fgt_personalcenter_item_center_two.xml
  18. 10 1
      app/src/main/res/layout/fgt_personalcenter_layout.xml
  19. 21 1
      app/src/main/res/layout/homepage_act_layout.xml
  20. 44 12
      app/src/main/res/layout/xpersion_info_act_layout.xml
  21. 30 1
      app/src/main/res/values/dd_styles.xml
  22. 1 0
      app/src/main/res/values/dimens.xml
  23. 24 0
      app/src/main/res/values/strings.xml
  24. 16 0
      app/src/main/res/values/styles.xml

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

@@ -467,5 +467,6 @@ public class FgtFindChild extends BaseCompatFragment {
     public void onDestroy() {
         super.onDestroy();
         EventBus.getDefault().unregister(this);
+        Aria.download(this).unRegister();
     }
 }

+ 43 - 2
app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java

@@ -3,18 +3,24 @@ package com.kfzs.duanduan.fragment;
 import android.app.Activity;
 import android.graphics.Color;
 import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
+import android.widget.PopupWindow;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.kfzs.duanduan.BaseCompatFragment;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.model.entity.AgentEntity;
 import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.DialogConfig;
 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.GlideImageLoader;
@@ -35,7 +41,9 @@ import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 import butterknife.Unbinder;
+import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
+import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_AGENT;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_FAQ;
@@ -145,11 +153,40 @@ public class FgtPersonalCenter extends BaseCompatFragment {
         // TODO: inflate a fragment view
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
         unbinder = ButterKnife.bind(this, rootView);
-
         return rootView;
     }
 
     @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+    }
+
+    /**
+     * 领取红包
+     *
+     * @param code 邀请码
+     */
+    public void getRedPackage(String code, final PopupWindow popupWindow) {
+        SheepApp.getInstance().getNetComponent().getApiService().getInfo()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        popupWindow.dismiss();
+                        ViewUtil.showRedPackageAfterInvitation(getActivity(),getView());
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        ViewUtil.showRedPackageAfterInvitation(getActivity(),getView());
+                        G.showToast(baseMessage);
+                    }
+                });
+    }
+
+
+    @Override
     public void onDestroyView() {
         super.onDestroyView();
         unbinder.unbind();
@@ -158,10 +195,14 @@ public class FgtPersonalCenter extends BaseCompatFragment {
     @OnClick({R.id.icon_img_iv, R.id.account_detail_layout, R.id.personalcenter_price_layout,
             R.id.account_task_layout, R.id.proxy_service_layout, R.id.feedbook_layout,
             R.id.recommend_friend_layout, R.id.faq_layout, R.id.reservation_layout, R.id.version_layout,
-            R.id.change_layout, R.id.order_layout, R.id.proxy_game_account_layout
+            R.id.change_layout, R.id.order_layout, R.id.proxy_game_account_layout,
+            R.id.iv_redpackage
     })
     public void onViewClicked(View view) {
         switch (view.getId()) {
+            case R.id.iv_redpackage://邀请成功后有可领红包
+                ViewUtil.changeRedPackage(getActivity(),getView(),FgtPersonalCenter.this);
+                break;
             case R.id.icon_img_iv://图片
             case R.id.account_detail_layout://个人资料
                 Jump2View.getInstance().goPersionInfo(activity, null);

+ 51 - 20
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -1,5 +1,6 @@
 package com.kfzs.duanduan.fragment;
 
+import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -20,11 +21,13 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.PopupWindow;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSONArray;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
+import com.google.gson.Gson;
 import com.kfzs.duanduan.BaseCompatFragment;
 import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.react.ConfigUtil;
@@ -43,10 +46,12 @@ import com.sheep.gamegroup.model.entity.RecyleType;
 import com.sheep.gamegroup.model.entity.RequestParameEty;
 import com.sheep.gamegroup.model.entity.SlideshowEty;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.model.entity.TaskEty;
 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;
 import com.sheep.gamegroup.presenter.TryMakeMoneyContract;
@@ -56,6 +61,7 @@ import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.MyListview;
 import com.sheep.gamegroup.util.SysAppUtil;
@@ -92,10 +98,15 @@ import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 import butterknife.Unbinder;
+import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
+import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.NEWBIE_TASK;
 
+/**
+ *
+ */
 public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContract.View, TryMakeMoneyContract.View {
 
     @BindView(R.id.upview1)
@@ -130,6 +141,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     NestedScrollView scrollView;
     @BindView(R.id.newbie_task)
     View newbie_task;
+
     @BindView(R.id.refresh)
     SwipeRefreshLayout refresh;
     @BindView(R.id.recyclerview)
@@ -146,6 +158,11 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     View check_net_ll;
     @BindView(R.id.bg_newbie_task)
     ImageView bg_newbie_task;
+    @BindView(R.id.view_rob_duty)
+    View viewRobDuty;
+    @BindView(R.id.iv_rob_duty)
+    ImageView ivDuty;
+
 
     @Inject
     SmallSheepPresenter pagePresenter;
@@ -168,6 +185,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     private List<HomeListEntity> homeListEntitysListview = new ArrayList<>();
     private AdpHomeListGrideview adpHomeListGrideview;
     private AdpHomeListListview adpHomeListListview;
+    private TaskReleaseEty taskEty;
 
     private static final int LIST_COUNT = 2;//tryMakeMoneyAdp 总共有2条数据
     private static final RecyleObj NULL = RecyleObj.make(RecyleType.NONE, null);//空数据
@@ -181,13 +199,13 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                     break;
                 case 1:
                     int position = 0;
-                    if(!ListUtil.isEmpty(allTaskAcceptedTaskList)){
+                    if (!ListUtil.isEmpty(allTaskAcceptedTaskList)) {
                         tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, allTaskAcceptedTaskList), position++);
                     }
-                    if(!ListUtil.isEmpty(releaseEtyLists)) {
+                    if (!ListUtil.isEmpty(releaseEtyLists)) {
                         tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists), position++);
                     }
-                    while(position < LIST_COUNT){
+                    while (position < LIST_COUNT) {
                         tryMakeMoneyAdp.add(NULL, position++);
                     }
                     tryMakeMoneyAdp.notifyDataSetChanged();
@@ -209,6 +227,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         TestUtil.testChange(activity, (TextView) getViewById(R.id.test_change));
         TestUtil.testChangeUser(activity, (TextView) getViewById(R.id.test_change_user));
         GlideImageLoader.setImage(bg_newbie_task, "http://cdngame.kuaifazs.com/bg_newbie_task.png");
+       // GlideImageLoader.setImage(ivDuty, "http://pic.616pic.com/ys_b_img/00/08/15/0Yc1l1EOfN.jpg");
         if (pagePresenter != null) {
             initData();
         }
@@ -250,6 +269,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     }
 
 
+    @SuppressLint("ClickableViewAccessibility")
     public void initListener() {
         scrollView.setOnTouchListener(new View.OnTouchListener() {
             @Override
@@ -310,7 +330,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
         //用户信息
         userEntity = DataUtil.getInstance().getUserEntity();
-        if(userEntity != null){
+        if (userEntity != null) {
             loadUserInfo();
         }
         //任务
@@ -323,13 +343,13 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
         //实时动态
         List<MoreDataEntity> cacheMoreDataEtyList = DataUtil.getInstance().getCacheList(ApiKey.award_detail, MoreDataEntity.class);
-        if(!ListUtil.isEmpty(cacheMoreDataEtyList)){
+        if (!ListUtil.isEmpty(cacheMoreDataEtyList)) {
             invite(cacheMoreDataEtyList);
         }
 
         //公告
         List<BulletinEnty> cacheBulletinEtyList = DataUtil.getInstance().getCacheList(ApiKey.bulletin, BulletinEnty.class);
-        if(ListUtil.isEmpty(cacheBulletinEtyList)){
+        if (ListUtil.isEmpty(cacheBulletinEtyList)) {
             homepageItemNoticeLayout.setVisibility(View.GONE);
         } else {
             bulletinEntyLists.clear();
@@ -338,7 +358,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         }
         //轮播
         List<SlideshowEty> cacheSlideshowEtyList = DataUtil.getInstance().getCacheList(ApiKey.slideshow, SlideshowEty.class);
-        if(ListUtil.isEmpty(cacheSlideshowEtyList)){
+        if (ListUtil.isEmpty(cacheSlideshowEtyList)) {
             banner.setVisibility(View.GONE);
         } else {
             for (SlideshowEty slideshowEty : cacheSlideshowEtyList) {
@@ -350,7 +370,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         }
         //首页list
         List<HomeListEntity> cacheHomeListEtyList = DataUtil.getInstance().getCacheList(ApiKey.home_list, HomeListEntity.class);
-        if(ListUtil.isEmpty(cacheHomeListEtyList)){
+        if (ListUtil.isEmpty(cacheHomeListEtyList)) {
             home_list_gridview_layout.setVisibility(View.GONE);
         } else {
             home_list_gridview_layout.setVisibility(View.VISIBLE);
@@ -453,7 +473,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                                 1,
                                 0,
                                 0,
-                                 "-1",
+                                "-1",
                                 3));
         tryMakeMoneyPresenter.releaseTask(parameEty);
     }
@@ -493,7 +513,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         }
         BaseMessage baseMessage = (BaseMessage) o;
         userEntity = baseMessage.getData(UserEntity.class);
-        if(userEntity == null){
+        if (userEntity == null) {
             return;
         }
         DataUtil.getInstance().setUserEntity(userEntity);
@@ -527,12 +547,14 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     public void giveUpTaskFailView(Object o) {
 
     }
+
     private int is_succession = 3;//所有
     private int show_game_task = 1;//包含游戏任务
+
     @Override
     public void returnTaskTaskUpdataView(Object object) {
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.new_run_task(is_succession, show_game_task));
-        if(isNewData) {
+        if (isNewData) {
             BaseMessage baseMessage = (BaseMessage) object;
             allTaskAcceptedTaskList = baseMessage.getDataList(TaskAcceptedEty.class);
             AutoTaskListUtil.getInstance().loadList(allTaskAcceptedTaskList);
@@ -563,7 +585,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void releaseTaskTaskUpdataView(Object object) {
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task);
-        if(isNewData && object instanceof BaseMessage) {
+        if (isNewData && object instanceof BaseMessage) {
             List<TaskReleaseEty> releaseEtyList = ((BaseMessage) object).getDataList(TaskReleaseEty.class);
             if (releaseEtyList != null) {
                 releaseEtyLists = releaseEtyList;
@@ -601,7 +623,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void successSlideshow(BaseMessage baseMessage) {
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.slideshow);
-        if(isNewData){
+        if (isNewData) {
             List<SlideshowEty> slideshowEtyList = baseMessage.getDataList(SlideshowEty.class);
             if (ListUtil.isEmpty(slideshowEtyList)) {
                 banner.setVisibility(View.GONE);
@@ -625,7 +647,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void successbulletin(BaseMessage baseMessage) {
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.bulletin);
-        if(isNewData){
+        if (isNewData) {
             List<BulletinEnty> bulletinEntyList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), BulletinEnty.class);
             if (ListUtil.isEmpty(bulletinEntyList)) {
                 homepageItemNoticeLayout.setVisibility(View.GONE);
@@ -641,7 +663,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     public void successhomeList(BaseMessage baseMessage) {
         checkAndInitView();
         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.home_list);
-        if(isNewData){
+        if (isNewData) {
             List<HomeListEntity> homeListEntityList = baseMessage.getDataList(HomeListEntity.class);
             if (ListUtil.isEmpty(homeListEntityList)) {
                 home_list_gridview_layout.setVisibility(View.GONE);
@@ -693,16 +715,18 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         home_list_gridview_layout.setVisibility(View.GONE);
 
     }
+
     private int onResumeCount = 0;
+
     @Override
     public void onResume() {
         super.onResume();
         UserEntity result = DataUtil.getInstance().getUserEntity();
-        if(result == null) {
+        if (result == null) {
             CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
                 @Override
                 public void call(UserEntity item) {
-                    if(item != null) {
+                    if (item != null) {
                         userEntity = item;
                         loadUserInfo();
                     }
@@ -712,13 +736,20 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             userEntity = result;
             loadUserInfo();
         }
-        if(DataUtil.getInstance().isTaskListChange(getClass()))//数据变化才刷新
+        if (DataUtil.getInstance().isTaskListChange(getClass()))//数据变化才刷新
             refreshTaskList();
-        if(onResumeCount == 0)//第一次才调用
+        if (onResumeCount == 0)//第一次才调用
             Jump2View.getInstance().tryShowNewbieTask(activity, userEntity, newbie_task);
         onResumeCount++;
+        viewRobDuty.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                ViewUtil.showRobDutyDialog(getActivity(), getView());
+            }
+        });
     }
 
+
     @Override
     public void onPause() {
         super.onPause();
@@ -974,7 +1005,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
      * 点击一条公告
      */
     private void onClickNotice(BulletinEnty item) {
-        switch (item.getJumpType()){// 跳转类型:11,任务 98,内部h5 99,外部h5
+        switch (item.getJumpType()) {// 跳转类型:11,任务 98,内部h5 99,外部h5
             case 11:
                 Jump2View.getInstance().goTaskDetailView(activity, NumberFormatUtils.parseInteger(item.getJumpValue()));
                 break;

+ 2 - 0
app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java

@@ -14,6 +14,7 @@ import com.kfzs.duanduan.adp.ViewPagerFragmentAdapter;
 import com.kfzs.duanduan.fragment.FgtPersonalCenter;
 import com.kfzs.duanduan.fragment.FgtSmallSheep;
 import com.kfzs.libs.utils.DrawablesHelper;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.R;
@@ -177,6 +178,7 @@ public class TabsHelper {
     private int lastPosition = MainTab.FgtSmallSheep.ordinal();//默认选中小绵羊
 
     private void initViewPager() {
+        LogUtil.logI("fragmentList.size---"+fragmentList.size());
         ViewPagerFragmentAdapter mViewPagerFragmentAdapter = new ViewPagerFragmentAdapter(activity.getSupportFragmentManager(), fragmentList);
         view_pager_container.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
 

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

@@ -33,7 +33,6 @@ public interface ApiService {
     Call<Object> getTimeInfoPostForm(@FieldMap Map<String, String> map);
 
     /**
-     *
      * @param jsonObject
      * @return
      */
@@ -45,25 +44,36 @@ public interface ApiService {
     Observable<BaseMessage> loginByCaptcha(@Body JSONObject jsonObject);
 
     /**
+     * @return ,
+     * 主页抢任务
+     */
+    @GET("app/release_task/commend_task/")
+    Observable<BaseMessage> getNewTask(@Query("order") int order);
+
+    /**
      * 获取用户信息
      */
     @GET("app/user/get_info/")
     Observable<BaseMessage> getInfo();
+
     /**
      * 获取用户的已经挂机微信
      */
     @GET("app/wechat/")
     Observable<BaseMessage> getWebchat();
+
     /**
      * 提交用户的微信账号与密码
      */
     @POST("app/wechat/")
     Observable<BaseMessage> postWebchat(@Body JSONObject jsonObject);
+
     /**
      * 提交用户的微信账号与密码
      */
     @PUT("app/wechat/{id}")
     Observable<BaseMessage> putWebchat(@Path("id") int id, @Body JSONObject jsonObject);
+
     /**
      * 获取微信挂机功能是否开启
      */
@@ -103,12 +113,13 @@ public interface ApiService {
      */
     @GET("app/accepted_task/new_run_task/")
     Observable<BaseMessage> returnTask(@Query("is_succession") int is_succession, @Query("show_game_task") int show_game_task);
+
     /**
      * 自动提交时长任务
-     *
-     "gps": "string",
-     "release_task_id": 0,
-     "task_time": 0
+     * <p>
+     * "gps": "string",
+     * "release_task_id": 0,
+     * "task_time": 0
      */
     @POST("app/accepted_task/auto_check/")
     Observable<BaseMessage> commitAutoTask(@Body JSONObject param);
@@ -121,6 +132,7 @@ public interface ApiService {
                                         @Query("platform") int platform, @Query("is_hot") int is_hot,
                                         @Query("is_recommend") int is_recommend, @Query("about_to_begin") int about_to_begin,
                                         @Query("task_type") String task_type, @Query("is_succession") int is_succession);
+
     /**
      * 搜索游戏
      */
@@ -131,38 +143,37 @@ public interface ApiService {
                                         @Query("task_type") String task_type, @Query("is_succession") int is_succession, @Query("name") String name);
 
 
-
     /**
      * 邀请赚钱
      */
     @GET("app/auth/login_by_we_chat")
     Observable<BaseMessage> askMakeMoney(@Body String jsonObject);
+
     /**
      * 用户提现记录
      */
     @GET("app/withdraw/")
-    Observable<BaseMessage> goWithdrawal(@Query("page") int page, @Query("per_page") int per_page, @Query("start_time ") String start_time , @Query("end_time ") String end_time );
-
+    Observable<BaseMessage> goWithdrawal(@Query("page") int page, @Query("per_page") int per_page, @Query("start_time ") String start_time, @Query("end_time ") String end_time);
 
 
     /**
      * 微信登录
+     *
      * @param jsonObject
      */
     @POST("app/auth/login_by_we_chat")
     Observable<BaseMessage> LoginByWX(@Body com.alibaba.fastjson.JSONObject jsonObject);
 
 
-
     /**
      * qq登录
+     *
      * @param jsonObject
      */
     @POST("app/auth/login_by_qq")
     Observable<BaseMessage> LoginByQQ(@Body com.alibaba.fastjson.JSONObject jsonObject);
 
 
-
     @GET("app/user/friend_count_and_award")
     Observable<BaseMessage> FriendCountAndAward();
 
@@ -179,9 +190,8 @@ public interface ApiService {
     Observable<BaseMessage> giveTaskStatue(@Path("id") int id);
 
 
-
     @PUT("app/user/change_base_info")
-    Observable<BaseMessage> changeBaseInfo (@Body com.alibaba.fastjson.JSONObject jsonObject);
+    Observable<BaseMessage> changeBaseInfo(@Body com.alibaba.fastjson.JSONObject jsonObject);
 
     /**
      * 更换手机号
@@ -190,12 +200,12 @@ public interface ApiService {
     Observable<BaseMessage> switchPhone(@Body JSONObject jsonObject);
 
 
-
     /**
      * 更换手机号
      */
     @PUT("app/user/bind_all_real_info")
     Observable<BaseMessage> bindALl(@Body JSONObject jsonObject);
+
     /**
      * 绑定手机号
      */
@@ -206,23 +216,26 @@ public interface ApiService {
      * 实时动态
      */
     @GET("app/user/award_detail")
-    Observable<BaseMessage> awardDetail(@Query("page") int page,@Query("per_page") int per_page);
+    Observable<BaseMessage> awardDetail(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 发送绑定手机号短信,只传mobile
      */
     @POST("app/user/sms_for_bind_mobile")
     Observable<BaseMessage> smsBindMobile(@Body JSONObject jsonObject);
+
     /**
      * 修改任务进度
      */
     @GET("app/accepted_task/status")
-    Observable<BaseMessage> taskStatus(@Query("id") int id,@Query("screenshots") String screenshots,
-        @Query("remark") String remark,@Query("package_name") String package_name,@Query("status") String status);
+    Observable<BaseMessage> taskStatus(@Query("id") int id, @Query("screenshots") String screenshots,
+                                       @Query("remark") String remark, @Query("package_name") String package_name, @Query("status") String status);
 //    @GET("app/accepted_task/status")
 //    Observable<BaseMessage> taskStatus(@Body JSONObject jsonObject);
 
     /**
-     *下载任务回调
+     * 下载任务回调
+     *
      * @param jsonObject
      * @return
      */
@@ -231,6 +244,7 @@ public interface ApiService {
 
     /**
      * 获取可用余额
+     *
      * @return
      */
     @GET("app/user/get_can_withdraw_amount")
@@ -238,8 +252,10 @@ public interface ApiService {
 
     @GET("loan/userRecord")
     Observable<BaseMessage> userRecord();
+
     @GET("loan/getYinkerLoanUrl")
     Observable<BaseMessage> getYinkerLoanUrl();
+
     @GET("loan/getYinkerRepaymentUrl")
     Observable<BaseMessage> getYinkerRepaymentUrl();
 
@@ -252,17 +268,22 @@ public interface ApiService {
 
     @GET("app/newbie_task")
     Observable<BaseMessage> getNewbieTask();
+
     @PUT("app/newbie_task")
     Observable<BaseMessage> putNewbieTask(@Body JSONObject jsonObject);
+
     @POST("app/newbie_task/learn_finish")
     Observable<BaseMessage> appNewbieTaskLearnFinish();
 
     @GET("app/user/friend_list")
     Observable<BaseMessage> getUserFriendList(@Query("page") int page, @Query("per_page") int per_page);
+
     @GET("app/release_task/credit_card")
     Observable<BaseMessage> getReleaseTaskCreditCard();
+
     @POST("app/accepted_task/credit_card")
     Observable<BaseMessage> releaseTaskCreditCard(@Body JSONObject jsonObject);
+
     @PUT("app/accepted_task/{id}/credit_card")
     Observable<BaseMessage> releaseTaskCreditCard(@Path("id") int id, @Body JSONObject jsonObject);
 
@@ -277,6 +298,7 @@ public interface ApiService {
      */
     @GET("app/bulletin")
     Observable<BaseMessage> bulletin(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 获取微信辅助h5链接
      */
@@ -288,8 +310,10 @@ public interface ApiService {
      */
     @GET("app/release_task/{id}/desc")
     Observable<BaseMessage> taskDesc(@Path("id") int id);
+
     @GET("app/credit/{id}")
     Observable<BaseMessage> getCredit(@Path("id") int id);
+
     @POST("app/newbie_task/add_qq")
     Observable<BaseMessage> newbieTaskAddQq(@Body JSONObject jsonObject);
 
@@ -314,11 +338,13 @@ public interface ApiService {
      */
     @GET("app/user/my_assets")
     Observable<BaseMessage> getMyAssets();
+
     /**
      * 充值记录
      */
     @GET("app/recharge/recharge_balance_log")
     Observable<BaseMessage> getRechargeBalanceLog(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 充值q币记录
      */
@@ -330,6 +356,7 @@ public interface ApiService {
 
     /**
      * 获取下发充值类型
+     *
      * @param page
      * @return
      */
@@ -338,6 +365,7 @@ public interface ApiService {
 
     /**
      * 充值
+     *
      * @param jsonObject
      * @return
      */
@@ -347,6 +375,7 @@ public interface ApiService {
 
     /**
      * 绵羊币充值
+     *
      * @param parame
      * @return
      */
@@ -378,6 +407,7 @@ public interface ApiService {
      */
     @GET("app/user/agreement/")
     Observable<BaseMessage> getAgreement();
+
     /**
      * 提交协议
      */
@@ -448,11 +478,13 @@ public interface ApiService {
      */
     @GET("app/punch/punch_and_sign_count")
     Observable<BaseMessage> getPunchAndSignCount();
+
     /**
      * 获取广告类型 1:开屏广告 2:弹窗广告
      */
     @GET("app/advertising/advertisements")
     Observable<BaseMessage> getAdvertising(@Query("type") int type);
+
     /**
      * 新功能介绍
      */
@@ -464,51 +496,61 @@ public interface ApiService {
      */
     @GET("app/user/check_label")
     Observable<BaseMessage> checkLabel();
+
     /**
      * 查询标签列表
      */
     @GET("app/user/label")
     Observable<BaseMessage> getLabelList();
+
     /**
      * 查询标签列表
      */
     @POST("app/user/label")
     Observable<BaseMessage> postLabelList(@Body JSONObject jsonObject);
+
     /**
      * 关于我们
      */
     @GET("app/about_us/new_about_us")
     Observable<BaseMessage> getNewAboutUs();
+
     /**
      * 获取定向消费游戏列表
      */
     @GET("app/game_consumption/my_games")
     Observable<BaseMessage> getMyGames(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 获取定向消费游戏
      */
     @GET("app/game_consumption/my_game/{id}")
     Observable<BaseMessage> getMyGame(@Path("id") String third_task_id);
+
     /**
      * 获取正在运行的游戏任务
      */
     @GET("app/accepted_task/run_game_task")
     Observable<BaseMessage> run_game_task();
+
     /**
      * 领取游戏任务奖励
      */
     @PUT("app/accepted_task/receive_award/{id}")
     Observable<BaseMessage> receive_award(@Path("id") int id);
+
     /**
      * 游戏消费下单
      */
     @POST("app/game_consumption")
     Observable<BaseMessage> game_consumption(@Body JSONObject jsonObject);
+
     /**
      * 能用的绵羊币金额
      */
     @GET("app/game_consumption/can_user_sheep_amount")
     Observable<BaseMessage> can_user_sheep_amount(@Query("amount") int amount, @Query("game_id") String game_id);
+
     /**
      * url配置
      */
@@ -517,12 +559,15 @@ public interface ApiService {
 
     /**
      * 充值订单列表
+     *
      * @return
      */
     @GET("app/game_consumption/orders")
     Observable<BaseMessage> getConsumptionOrders(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 再次充值 或 放弃充值
+     *
      * @return
      */
     @PUT("app/game_consumption/order/{id}")
@@ -530,12 +575,15 @@ public interface ApiService {
 
     /**
      * 获取最新版本信息
+     *
      * @return
      */
     @GET("app/version/new_version")
     Observable<BaseMessage> getNewVersion(@Query("type") int type);
+
     /**
      * 获取接收任务详情
+     *
      * @return
      */
     @GET("app/accepted_task/detail/{id}")
@@ -552,11 +600,13 @@ public interface ApiService {
      */
     @GET("app/common_config")
     Observable<BaseMessage> commonConfig(@Query("type_name") String type_name);
+
     /**
      * 获取用户当前代理信息
      */
     @GET("app/agent/region")
     Observable<BaseMessage> agentRegion();
+
     /**
      * 收支明细
      */
@@ -569,66 +619,78 @@ public interface ApiService {
      */
     @GET("app/find/articles_tags/list")
     Observable<BaseMessage> getFindTagList();
+
     /**
      * 发现模块列表
      */
     @GET("app/find/articles/list")
     Observable<BaseMessage> getFindList(@Query("page") int page, @Query("per_page") int per_page, @Query("tag_id") int id);
+
     /**
      * 发现内容详情
      */
     @GET("app/find/articles")
     Observable<BaseMessage> getFindDetail(@Query("id") int id);
+
     /**
      * 应用评分
      * {
-     "application_id": 0,
-     "score": 0,
-     "user_id": 0
-     }
+     * "application_id": 0,
+     * "score": 0,
+     * "user_id": 0
+     * }
      */
     @POST("app/find/applications/score")
     Observable<BaseMessage> commitAppScore(@Body JSONObject jsonObject);
+
     /**
      * 获取应用详情
      */
     @GET("app/find/applications")
     Observable<BaseMessage> getAppDetail(@Query("id") int id);
+
     /**
      * 应用 各评分人数
      */
     @GET("app/find/applications/score_num")
     Observable<BaseMessage> getAppScoreNum(@Query("id") int id);
+
     /**
      * 应用我的评分
      */
     @GET("app/find/applications/my_score")
     Observable<BaseMessage> getMyAppScore(@Query("id") int id);
+
     /**
      * 应用 下载/预约 时先调用此接口生成记录
      */
     @GET("app/find/applications/downloads")
     Observable<BaseMessage> recordAppDownloads(@Query("id") int id);
+
     /**
      * 取消  应用 下载/预约
      */
     @DELETE("app/find/applications/downloads")
     Observable<BaseMessage> deleteDownloads(@Query("id") int id);
+
     /**
      * 获取预约未下载数量
      */
     @GET("app/find/applications/downloads/status")
     Observable<BaseMessage> getFindAppDownloadsStatus();
+
     /**
      * 获取预约下载列表
      */
     @GET("app/find/applications/downloads_list")
     Observable<BaseMessage> getFindAppReservationList(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 发现点击统计
      */
     @GET("app/find/add_clicks")
     Observable<BaseMessage> getFindItemAddClicks(@Query("id") int id);
+
     /**
      * 首页list
      */
@@ -636,79 +698,84 @@ public interface ApiService {
     Observable<BaseMessage> getHomeListItem(@Path("id") int id);
 
     /**
-     *获取游戏任务下拉列表
+     * 获取游戏任务下拉列表
      */
     @GET("app/release_task/recharge_game_List")
     Observable<BaseMessage> rechargeGameList(@Query("task_type") int task_type, @Query("name") String name);
 
     /**
-     *领取游戏账号
+     * 领取游戏账号
      */
     @PUT("app/game_account/{task_id}")
     Observable<BaseMessage> gameAccountManager(@Path("task_id") int task_id);
 
     /**
-     *
-     创建游戏账号
+     * 创建游戏账号
      */
     @POST("app/game_account/add")
     Observable<BaseMessage> addGameAccount(@Body JSONObject jsonObject);
 
     /**
-     *
-     删除游戏账号
+     * 删除游戏账号
      */
     @DELETE("app/game_account/del/{id}")
     Observable<BaseMessage> delGameAccount(@Path("id") int id);
 
     /**
-     *编辑游戏账号密码
+     * 编辑游戏账号密码
      */
     @PUT("app/game_account/edit")
     Observable<BaseMessage> editGameAccount(@Body JSONObject jsonObject);
+
     /**
-     *查询游戏账号详情
+     * 查询游戏账号详情
      */
     @GET("app/game_account/detail/{id}")
     Observable<BaseMessage> getGameAccountDetail(@Path("id") int id);
+
     /**
-     *获取平台对应的游戏
+     * 获取平台对应的游戏
      * task_type:1002平台游戏,1003 腾讯游戏,1004 小米游戏
      */
     @GET("app/game_account/game/list")
     Observable<BaseMessage> getGameList(@Query("game_type") int game_type);
+
     /**
-     *查询游戏账号
+     * 查询游戏账号
      * task_type:1002平台游戏,1003 腾讯游戏,1004 小米游戏
      */
     @GET("app/game_account/account/list")
     Observable<BaseMessage> getGameAccountList(@Query("game_type") int game_type, @Query("account") String account, @Query("task_id") int task_id);
+
     /**
-     *查询所有游戏账号
+     * 查询所有游戏账号
      * task_type:1002平台游戏,1003 腾讯游戏,1004 小米游戏
      */
     @GET("app/game_account/all/list")
     Observable<BaseMessage> getGameAccountAllList();
+
     /**
-     *获取计算可用定向消费券的数据
+     * 获取计算可用定向消费券的数据
      */
     @GET("app/game_consumption/voucher_and_ratio")
     Observable<BaseMessage> getVoucherAndRatio(@Query("game_id") String game_id);
+
     /**
-     *获取任务
+     * 获取任务
      */
     @GET("app/release_task/game_task")
-    Observable<BaseMessage> releaseGameTask(@Query("page") int page, @Query("per_page") int per_page,@Query("is_hot") int is_hot, @Query("task_type") String task_type, @Query("name") String name);
+    Observable<BaseMessage> releaseGameTask(@Query("page") int page, @Query("per_page") int per_page, @Query("is_hot") int is_hot, @Query("task_type") String task_type, @Query("name") String name);
+
     /**
-     *获取小米游戏列表
+     * 获取小米游戏列表
      * platform 1:安卓 2:IOS
      * download_type  1:非预约下载 2:预约下载
      */
     @GET("app/xiaomi/list")
-    Observable<BaseMessage> xiaomiGameList(@Query("page") int page, @Query("per_page") int per_page,@Query("platform") int platform , @Query("download_type") int download_type, @Query("name") String name);
+    Observable<BaseMessage> xiaomiGameList(@Query("page") int page, @Query("per_page") int per_page, @Query("platform") int platform, @Query("download_type") int download_type, @Query("name") String name);
 
     /**
-     *领取小米游戏账号
+     * 领取小米游戏账号
      */
     @POST("app/xiaomi/Receive")
     Observable<BaseMessage> receiveXiaomiAccount(@Body JSONObject id);
@@ -718,6 +785,7 @@ public interface ApiService {
      */
     @GET("app/user/invitation_top")
     Observable<BaseMessage> getInvitationTop(@Query("top") int top);//top默认为5,可以不传
+
     /**
      * 获取邀请用户进两月礼物发放记录
      */

+ 30 - 19
app/src/main/java/com/sheep/gamegroup/model/entity/UserEntity.java

@@ -73,6 +73,26 @@ public class UserEntity implements Serializable {
     private int certification_count;//实名认证次数
     @Column(name = "must_bind_mobile")
     private int must_bind_mobile;//是否必须绑定手机号 0不是 1是
+    @Column(name = "gender")
+    private int gender;
+    @Column(name = "birthday")
+    private String birthday;
+
+    public int getGender() {
+        return gender;
+    }
+
+    public void setGender(int gender) {
+        this.gender = gender;
+    }
+
+    public String getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(String birthday) {
+        this.birthday = birthday;
+    }
 
     public String getWx_nickname() {
         return wx_nickname;
@@ -107,7 +127,7 @@ public class UserEntity implements Serializable {
     }
 
     public String getBalance() {
-        return balance == null?"0":balance;
+        return balance == null ? "0" : balance;
     }
 
     public void setBalance(String balance) {
@@ -131,7 +151,7 @@ public class UserEntity implements Serializable {
     }
 
     public String getTotal_asset() {
-        return total_asset == null?"0":total_asset;
+        return total_asset == null ? "0" : total_asset;
     }
 
     public void setTotal_asset(String total_asset) {
@@ -291,22 +311,10 @@ public class UserEntity implements Serializable {
     }
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
     public boolean isNewRegistUser() {//新注册用户
         return TextUtils.equals(create_time, last_login_time);
     }
+
     //没有实名认证
     public boolean notCertification() {
         return TextUtils.isEmpty(getReal_name()) || TextUtils.isEmpty(getId_number());
@@ -314,17 +322,20 @@ public class UserEntity implements Serializable {
 
     /**
      * 老用户选择绑定手机号
+     *
      * @return
      */
-    public boolean canBindMobile(){
+    public boolean canBindMobile() {
         return must_bind_mobile == 0 && TextUtils.isEmpty(mobile);
     }
+
     //测试服用测试分享链接,正式服用正式的
-    public String getShareLink(@DialogShare.SHARE_TYPE String type){
+    public String getShareLink(@DialogShare.SHARE_TYPE String type) {
         return CommonUtil.getInstance().jointString(getShareLink(), type);
     }
+
     //测试服用测试分享链接,正式服用正式的
-    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 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();
     }
 }

+ 46 - 28
app/src/main/java/com/sheep/gamegroup/model/entity/Version.java

@@ -4,16 +4,16 @@ package com.sheep.gamegroup.model.entity;
  * Created by realicing on 2018/6/20.
  * realicing@sina.com
  * {
- "address": "2",
- "md5_address": "2",
- "status": 1,
- "id": 2,
- "strong_update": 0,
- "version_number": 2,
- "type": 1,
- "update_time": 1529480619,
- "create_time": 1529465833
- }
+ * "address": "2",
+ * "md5_address": "2",
+ * "status": 1,
+ * "id": 2,
+ * "strong_update": 0,
+ * "version_number": 2,
+ * "type": 1,
+ * "update_time": 1529480619,
+ * "create_time": 1529465833
+ * }
  */
 public class Version {
 
@@ -39,58 +39,75 @@ public class Version {
 
     private int create_time;
 
-    public void setAddress(String address){
+    public void setAddress(String address) {
         this.address = address;
     }
-    public String getAddress(){
+
+    public String getAddress() {
         return this.address;
     }
-    public void setMd5_address(String md5_address){
+
+    public void setMd5_address(String md5_address) {
         this.md5_address = md5_address;
     }
-    public String getMd5_address(){
+
+    public String getMd5_address() {
         return this.md5_address;
     }
-    public void setStatus(int status){
+
+    public void setStatus(int status) {
         this.status = status;
     }
-    public int getStatus(){
+
+    public int getStatus() {
         return this.status;
     }
-    public void setId(int id){
+
+    public void setId(int id) {
         this.id = id;
     }
-    public int getId(){
+
+    public int getId() {
         return this.id;
     }
-    public void setStrong_update(int strong_update){
+
+    public void setStrong_update(int strong_update) {
         this.strong_update = strong_update;
     }
-    public int getStrong_update(){
+
+    public int getStrong_update() {
         return this.strong_update;
     }
-    public void setVersion_number(int version_number){
+
+    public void setVersion_number(int version_number) {
         this.version_number = version_number;
     }
-    public int getVersion_number(){
+
+    public int getVersion_number() {
         return this.version_number;
     }
-    public void setType(int type){
+
+    public void setType(int type) {
         this.type = type;
     }
-    public int getType(){
+
+    public int getType() {
         return this.type;
     }
-    public void setUpdate_time(int update_time){
+
+    public void setUpdate_time(int update_time) {
         this.update_time = update_time;
     }
-    public int getUpdate_time(){
+
+    public int getUpdate_time() {
         return this.update_time;
     }
-    public void setCreate_time(int create_time){
+
+    public void setCreate_time(int create_time) {
         this.create_time = create_time;
     }
-    public int getCreate_time(){
+
+    public int getCreate_time() {
         return this.create_time;
     }
 
@@ -113,6 +130,7 @@ public class Version {
 
     /**
      * 是否强更
+     *
      * @return
      */
     public boolean isForceUpdate() {

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/presenter/PhoneContract.java

@@ -14,6 +14,7 @@ public interface PhoneContract {
     interface Presenter{
 
         void getCaptcha(String telphone) throws JSONException;
+        boolean getCaptchaa(String telphone) throws JSONException;
         void loginByCaptcha(String telphone, String code);
 
         void switchPhone(JSONObject object);

+ 52 - 8
app/src/main/java/com/sheep/gamegroup/presenter/PhonePresenter.java

@@ -3,16 +3,17 @@ package com.sheep.gamegroup.presenter;
 import android.util.Log;
 
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.ChannelContent;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.PreferenceUtils;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
 
-
 import java.util.HashMap;
 import java.util.Map;
 
@@ -28,6 +29,7 @@ import rx.schedulers.Schedulers;
 public class PhonePresenter implements PhoneContract.Presenter {
     private PhoneContract.View view;
     private ApiService apiService;
+    private boolean isOk=true;
 
     @Inject
     public PhonePresenter(PhoneContract.View view, ApiService apiService) {
@@ -36,8 +38,8 @@ public class PhonePresenter implements PhoneContract.Presenter {
     }
 
     @Override
-    public void getCaptcha(String telphone){
-        try{
+    public void getCaptcha(String telphone) {
+        try {
             Map map = new HashMap();
             map.put("account", telphone);
             Log.e("hash-map", map.toString());
@@ -50,29 +52,71 @@ public class PhonePresenter implements PhoneContract.Presenter {
                     .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
                         @Override
                         public void onError(BaseMessage baseMessage) {
+                            LogUtil.logI(new Gson().toJson(baseMessage));
                             view.gaptchaFail(baseMessage);
                         }
 
                         @Override
                         public void onNext(BaseMessage baseMessage) {
+                            LogUtil.logI(new Gson().toJson(baseMessage));
                             view.returnGaptcha(baseMessage);
 
                         }
                     });
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
 
 
     }
 
+    /**
+     * @param telphone  手机号
+     * @return  true 获取验证码成功,false获取验证码失败
+     */
+    @Override
+    public boolean getCaptchaa(String telphone) {
+
+        try {
+            Map map = new HashMap();
+            map.put("account", telphone);
+            Log.e("hash-map", map.toString());
+            com.alibaba.fastjson.JSONObject j = new com.alibaba.fastjson.JSONObject();
+            j.put("account", telphone);
+
+            apiService.getCaptcha(j)
+                    .subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                        @Override
+                        public void onError(BaseMessage baseMessage) {
+                            isOk = false;
+                            view.gaptchaFail(baseMessage);
+                            LogUtil.logE(new Gson().toJson(baseMessage));
+                        }
+
+                        @Override
+                        public void onNext(BaseMessage baseMessage) {
+                            isOk = true;
+                            view.returnGaptcha(baseMessage);
+                            LogUtil.logI(new Gson().toJson(baseMessage));
+                        }
+                    });
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        LogUtil.logI("isOk=="+isOk);
+        return isOk;
+
+    }
+
     @Override
     public void loginByCaptcha(String telphone, String code) {
         com.alibaba.fastjson.JSONObject m = new com.alibaba.fastjson.JSONObject();
-        m.put("account",telphone);
-        m.put("sec_code",code);
-        m.put("invitation_code", ChannelContent.getInstance().getChannel_name() );
-        PreferenceUtils.setPrefString(SheepApp.mContext, UMConfigUtils.LOGIN_TYPE,UMConfigUtils.Source.SHEEP);
+        m.put("account", telphone);
+        m.put("sec_code", code);
+        m.put("invitation_code", ChannelContent.getInstance().getChannel_name());
+        PreferenceUtils.setPrefString(SheepApp.mContext, UMConfigUtils.LOGIN_TYPE, UMConfigUtils.Source.SHEEP);
         apiService.loginByCaptcha(m)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())

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

@@ -1,14 +1,22 @@
 package com.sheep.gamegroup.util;
 
+import android.util.Log;
+
 /**
  * Created by realicing on 2018/5/12.
  * realicing@sina.com
  */
 public class LogUtil {
+
+    /**
+     * isDebug ,debug环境下设成true,方便查看日志,release环境下设成false,减少打印信息的输出,
+     */
+    private static boolean isDebug = true;
+
     public static void println(Object... msgs) {
-        if(TestUtil.isTest()) {
+        if (TestUtil.isTest()) {
             for (int i = 0; i < msgs.length; i++) {
-                if(i != 0) {
+                if (i != 0) {
                     System.out.print(" ");
                 }
                 System.out.print(msgs[i]);
@@ -16,4 +24,33 @@ public class LogUtil {
             System.out.println();
         }
     }
+
+    /**
+     * @param message 需要打印的String,
+     *                调用系统的Log.i(?,?);
+     */
+    public static void logI(String message){
+        if (isDebug){
+            Log.i("LOGI",message);
+        }
+    }
+    /**
+     * @param message 需要打印的String,
+     *                  调用系统的Log.e(?,?);
+     */
+    public static void logE(String message){
+        if (isDebug){
+            Log.e("LOGE",message);
+        }
+    }
+    /**
+     * @param message 需要打印的String,
+     *                  调用系统的Log.d(?,?);
+     */
+    public static void logD(String message){
+        if (isDebug){
+            Log.d("LOGD",message);
+        }
+    }
+
 }

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

@@ -1,16 +1,20 @@
 package com.sheep.gamegroup.util;
 
+import android.app.ActionBar;
 import android.app.Activity;
+import android.app.Dialog;
 import android.app.ProgressDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.Color;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.Build;
+import android.os.Bundle;
 import android.provider.MediaStore;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.GridLayoutManager;
@@ -18,27 +22,49 @@ import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.TextUtils;
 import android.text.method.ScrollingMovementMethod;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Display;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
 import android.webkit.WebView;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.VideoView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.RequestBuilder;
 import com.bumptech.glide.request.RequestOptions;
+import com.google.gson.Gson;
+import com.kfzs.duanduan.fragment.FgtPersonalCenter;
+import com.kfzs.duanduan.fragment.FgtSmallSheep;
+import com.sheep.gamegroup.dateview.DatePickerDialog;
+import com.sheep.gamegroup.dateview.DateUtil;
 import com.sheep.gamegroup.model.entity.Advertising;
+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.PayEntity;
+import com.sheep.gamegroup.model.entity.RobTask;
+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.glide.RoundedCornersTransformation;
+import com.sheep.gamegroup.view.activity.PersonalInfoAct;
 import com.sheep.gamegroup.view.activity.SplashAct;
+import com.sheep.gamegroup.view.activity.TaskDetailAct;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.gamegroup.view.dialog.DialogAddAccount;
 import com.sheep.gamegroup.view.dialog.DialogModifyAccount;
@@ -52,6 +78,7 @@ import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 import org.afinal.simplecache.ACache;
+import org.greenrobot.eventbus.EventBus;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -61,7 +88,10 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import io.reactivex.annotations.Nullable;
+import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
+import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.AD_TOAST;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.QR_COPY;
@@ -73,11 +103,14 @@ import static com.sheep.gamegroup.util.UMConfigUtils.Event.QR_SHARE;
  * realicing@sina.com
  */
 public class ViewUtil {
+
     public static final int REQUEST_CODE_TASK_LIST = 110;
     private static ViewUtil viewUtil;
+    static int result = 0;
+    static RobTask mRobTask;
 
-    public static ViewUtil newInstance(){
-        if(viewUtil == null){
+    public static ViewUtil newInstance() {
+        if (viewUtil == null) {
             viewUtil = new ViewUtil();
         }
         return viewUtil;
@@ -135,6 +168,288 @@ public class ViewUtil {
     }
 
     /**
+     * @param context   Activity的上下文
+     * @param mTextView 显示日期的TextView
+     */
+    public static void showDateDialog(final PersonalInfoAct context, final TextView mTextView) {
+        List<Integer> date = DateUtil.getDateForString("1990-01-01");//从1990-01-01开始显示
+        DatePickerDialog.Builder builder = new DatePickerDialog.Builder(context);
+        builder.setOnDateSelectedListener(new DatePickerDialog.OnDateSelectedListener() {
+            @Override
+            public void onDateSelected(int[] dates) {
+                mTextView.setText(dates[0] + "-" + (dates[1] > 9 ? dates[1] : ("0" + dates[1])) + "-" + (dates[2] > 9 ? dates[2] : ("0" + dates[2])));
+                context.upLoadBirthday(mTextView.getText().toString());
+            }
+
+            @Override
+            public void onCancel() {
+
+            }
+        }).setSelectYear(date.get(0) - 1)
+                .setSelectMonth(date.get(1) - 1)
+                .setSelectDay(date.get(2) - 1);
+        Dialog dateDialog = builder.create();
+        dateDialog.show();
+    }
+
+    /**
+     * 主页抢任务,更换任务时,获取新的任务
+     *
+     * @return , TaskEty对象
+     */
+    public static RobTask getTask(final ImageView ivIcon, final TextView tvTitel, final TextView tvDutyMoney) {
+        SheepApp.getInstance().getNetComponent().getApiService().getNewTask(0)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        try {
+                            mRobTask = baseMessage.getData(RobTask.class);
+                            LogUtil.logI("---mRobTask" + new Gson().toJson(mRobTask));
+                            LogUtil.logI("---" + new Gson().toJson(baseMessage));
+                            tvDutyMoney.setText(mRobTask.getM().getBonus() + "元");//设置任务奖励金额
+                            tvTitel.setText(mRobTask.getM().getTask().getTask_name());//设置任务名字
+                            GlideImageLoader.setImage(ivIcon, mRobTask.getM().getTask().getIcon());//设置任务图标
+                        } catch (Exception e) {
+
+                        }
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+                    }
+                });
+        return mRobTask;
+    }
+
+    /**
+     * 抢任务弹框
+     *
+     * @param mActivity  当前Activity,
+     * @param viewAnchor 锚
+     */
+    public static void showRobDutyDialog(final Activity mActivity, View viewAnchor) {
+        View view = LayoutInflater.from(mActivity).inflate(R.layout.pop_robduty, null, false);
+        ImageView ivChangeOne = view.findViewById(R.id.iv_change_one);
+        ImageView ivDoNow = view.findViewById(R.id.iv_do_now);
+
+        final ImageView ivIcon = view.findViewById(R.id.iv_duty);
+        final TextView tvTitel = view.findViewById(R.id.tv_duty_title);
+        final TextView tvDutyMoney = view.findViewById(R.id.tv_robduty_money);
+        mRobTask = getTask(ivIcon, tvTitel, tvDutyMoney);
+        /**
+         * */
+        final PopupWindow popupWindow = new PopupWindow(mActivity);
+        popupWindow.setContentView(view);
+        popupWindow.setAnimationStyle(R.style.Rising);
+        popupWindow.setWidth(ActionBar.LayoutParams.WRAP_CONTENT);
+        popupWindow.setHeight(ActionBar.LayoutParams.WRAP_CONTENT);
+        popupWindow.setTouchable(true);
+        popupWindow.setFocusable(true);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        backgroundAlpha(0.5f, mActivity);
+        popupWindow.showAtLocation(viewAnchor, Gravity.CENTER, 0, 0);
+        popupWindow.setOnDismissListener(new PopDismissListener(mActivity));
+        //更换任务
+        ivChangeOne.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mRobTask = getTask(ivIcon, tvTitel, tvDutyMoney);
+                G.showToast("更换任务");
+            }
+        });
+        //立即去做,跳转到任务详情去
+        ivDoNow.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                popupWindow.dismiss();
+                if (mRobTask == null) {
+                    G.showToast("抢任务失败!");
+                    return;
+                }
+                Intent intent = new Intent(mActivity, TaskDetailAct.class);
+                intent.putExtra("btn_show", true);
+                intent.putExtra("is_from_task_list", true);
+                intent.putExtra("task_id", mRobTask.getM().getTask().getId());
+                mActivity.startActivity(intent);
+
+            }
+        });
+
+
+    }
+
+    /**
+     * 邀请成功后在个人资料显示领红包弹窗
+     *
+     * @param mActivity 当前Activity,
+     */
+    public static void showRedPackageAfterInvitation(final Activity mActivity, View viewAnchor) {
+        View view = LayoutInflater.from(mActivity).inflate(R.layout.dialog_redpackage_after_invitation, null, false);
+        TextView tvGetRedPackage = view.findViewById(R.id.tv_get_redpackage);
+        final PopupWindow popupWindow = new PopupWindow(mActivity);
+        popupWindow.setContentView(view);
+        popupWindow.setAnimationStyle(R.style.Rising);
+        popupWindow.setWidth(ActionBar.LayoutParams.WRAP_CONTENT);
+        popupWindow.setHeight(measureHeight(mActivity) / 3);
+        popupWindow.setTouchable(true);
+        popupWindow.setFocusable(true);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        backgroundAlpha(0.7f, mActivity);
+        popupWindow.showAtLocation(viewAnchor, Gravity.CENTER, 0, 0);
+        popupWindow.setOnDismissListener(new PopDismissListener(mActivity));
+        tvGetRedPackage.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                popupWindow.dismiss();
+            }
+        });
+
+    }
+
+    /**
+     * 兑换红包弹窗
+     *
+     * @param mActivity 当前Activity的,
+     */
+    public static void changeRedPackage(final Activity mActivity, View viewAnchor, final FgtPersonalCenter fgtPersonalCenter) {
+        View view = LayoutInflater.from(mActivity).inflate(R.layout.pop_get_redpackage, null);
+        final EditText edInvitationCode = view.findViewById(R.id.ed_invitation_code);
+        TextView tvGetRedPackage = view.findViewById(R.id.tv_get_redpackage);
+        final PopupWindow popupWindow = new PopupWindow(mActivity);
+        popupWindow.setContentView(view);
+        popupWindow.setWidth(measureWidth(mActivity) * 6 / 10);
+        popupWindow.setHeight(ActionBar.LayoutParams.WRAP_CONTENT);
+        popupWindow.setTouchable(true);
+        popupWindow.setFocusable(true);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        backgroundAlpha(0.7f, mActivity);
+        popupWindow.showAtLocation(viewAnchor, Gravity.CENTER, 0, 0);
+        popupWindow.setOnDismissListener(new PopDismissListener(mActivity));
+        tvGetRedPackage.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (TextUtils.isEmpty(edInvitationCode.getText())) {
+                    G.showToast("邀请码不能为空");
+                } else {
+                    fgtPersonalCenter.getRedPackage(edInvitationCode.getText().toString(), popupWindow);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 测量屏幕的宽
+     *
+     * @param mActivity ,
+     * @return 屏幕的宽
+     */
+    private static int measureWidth(Activity mActivity) {
+        WindowManager manager = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE);
+        Display defaultDisplay = manager.getDefaultDisplay();
+        DisplayMetrics outMetrics = new DisplayMetrics();
+        defaultDisplay.getMetrics(outMetrics);
+        return outMetrics.widthPixels;
+    }
+
+    /**
+     * 测量屏幕的宽
+     *
+     * @param mActivity ,
+     * @return 屏幕的宽
+     */
+    private static int measureHeight(Activity mActivity) {
+        WindowManager manager = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE);
+        Display defaultDisplay = manager.getDefaultDisplay();
+        DisplayMetrics outMetrics = new DisplayMetrics();
+        defaultDisplay.getMetrics(outMetrics);
+        return outMetrics.heightPixels;
+    }
+
+    /**
+     * @param mActivity  ,个人资料Activity
+     * @param viewAnchor ,锚
+     *                   选择性别弹窗
+     */
+    public static void choiceSex(final PersonalInfoAct mActivity, View viewAnchor) {
+        View view = LayoutInflater.from(mActivity).inflate(R.layout.pop_choice_sex, null);
+        TextView tvOk = view.findViewById(R.id.tv_cancel);
+        final CheckBox cbMale = view.findViewById(R.id.btn_male);
+        final CheckBox cbFemale = view.findViewById(R.id.btn_female);
+        final PopupWindow popupWindow = new PopupWindow(mActivity);
+        cbFemale.setTextColor(Color.parseColor("#ff444444"));
+        cbMale.setTextColor(Color.parseColor("#ff444444"));
+        popupWindow.setContentView(view);
+        popupWindow.setWidth(measureWidth(mActivity));
+        popupWindow.setHeight(ActionBar.LayoutParams.WRAP_CONTENT);
+        popupWindow.setAnimationStyle(R.style.Rising);
+        popupWindow.setTouchable(true);
+        popupWindow.setFocusable(true);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        backgroundAlpha(0.5f, mActivity);
+        popupWindow.showAtLocation(viewAnchor, Gravity.BOTTOM, 0, 0);
+        popupWindow.setOnDismissListener(new PopDismissListener(mActivity));
+        tvOk.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mActivity.upLoadSex((!cbFemale.isChecked() && !cbMale.isChecked()) ? 0 : cbMale.isChecked() ? 1 : 2, popupWindow);
+            }
+        });
+        //选择男
+        cbMale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked) {
+                    cbMale.setTextColor(Color.parseColor("#ff2d4b"));
+                    cbFemale.setTextColor(Color.parseColor("#ff444444"));
+                }
+            }
+        });
+        //选择女
+        cbFemale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked) {
+                    cbFemale.setTextColor(Color.parseColor("#ff2d4b"));
+                    cbMale.setTextColor(Color.parseColor("#ff444444"));
+
+                }
+            }
+        });
+
+    }
+
+    /**
+     * popwindow消失监听类,消失恢复window透明度
+     */
+    static class PopDismissListener implements PopupWindow.OnDismissListener {
+        Activity mActivity;
+
+        public PopDismissListener(Activity activity) {
+            mActivity = activity;
+        }
+
+        @Override
+        public void onDismiss() {
+            backgroundAlpha(1f, mActivity);
+        }
+
+    }
+
+    /**
+     * @param bgAlpha  ,透明度值
+     * @param activity 恢复透明度
+     */
+    public static void backgroundAlpha(float bgAlpha, Activity activity) {
+        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
+        lp.alpha = bgAlpha;
+        activity.getWindow().setAttributes(lp);
+    }
+
+    /**
      * 分享对话框
      *
      * @param activity
@@ -249,14 +564,14 @@ public class ViewUtil {
         return null;
     }
 
-    public static void setH5Text(TextView textView,WebView webView, String content) {
-        if(textView == null || webView == null){
+    public static void setH5Text(TextView textView, WebView webView, String content) {
+        if (textView == null || webView == null) {
             return;
         }
-        if(ViewUtil.isH5Content(content)){
+        if (ViewUtil.isH5Content(content)) {
             webView.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
             textView.setVisibility(View.GONE);
-        } else if(content.startsWith("<p>")){
+        } else if (content.startsWith("<p>")) {
             ViewUtil.loadDataWithBaseURL(webView, content);
             textView.setVisibility(View.GONE);
         } else {
@@ -274,8 +589,8 @@ public class ViewUtil {
     }
 
     public static void setH5Text(TextView textView, String content) {
-        if(textView != null) {
-            if(TextUtils.isEmpty(content)){
+        if (textView != null) {
+            if (TextUtils.isEmpty(content)) {
                 textView.setText("");
                 return;
             }
@@ -302,6 +617,7 @@ public class ViewUtil {
     public static AlertDialog showMsgDialog(final Context context, String msg, String title) {
         return showMsgDialog(context, new DialogConfig().setMsg(msg).setTitle(title).setBtnLeftText("知道了"));
     }
+
     public static AlertDialog showMsgDialog(final Context context, String msg, String title, String leftBtn, String rightBtn,
                                             View.OnClickListener onClickListener, View.OnClickListener onRightClickListener, View.OnClickListener onCloseClickListener) {
         return showMsgDialog(context, new DialogConfig().setMsg(msg).setTitle(title).setBtnLeftText(leftBtn)
@@ -310,10 +626,12 @@ public class ViewUtil {
                 .setBtnRightOnClickListener(onRightClickListener)
                 .setBtnCloseOnClickListener(onCloseClickListener));
     }
-    public static AlertDialog showMsgDialog(final Context context, String msg, String title,boolean isFinish) {
+
+    public static AlertDialog showMsgDialog(final Context context, String msg, String title, boolean isFinish) {
         return showMsgDialog(context, new DialogConfig().setMsg(msg).setTitle(title).setFinish(isFinish).setBtnLeftText("知道了"));
     }
 
+
     public static AlertDialog showMsgDialog(Context context, final DialogConfig dialogConfig) {
         final Context mContext = context == null ? ActivityManager.getInstance().currentActivity() : context;
         String title = dialogConfig.getTitle();
@@ -328,7 +646,7 @@ public class ViewUtil {
         View dialog_parent = View.inflate(mContext, R.layout.dialog_parent, null);
         final AlertDialog dialog = new AlertDialog.Builder(mContext, mContext instanceof Activity ? R.style.MyDialogActivityTheme : R.style.AppTheme_Dialog_Alert).setView(dialog_parent).create();
         TextView dialog_title = dialog_parent.findViewById(R.id.dialog_title);
-        switch (dialogConfig.getTheme()){//设置按钮风格
+        switch (dialogConfig.getTheme()) {//设置按钮风格
             case DialogConfig.THEME_PURPLE:
                 dialog_title.setBackgroundResource(R.drawable.shape_purple_solid_rectangle_top);
                 break;
@@ -340,7 +658,7 @@ public class ViewUtil {
             dialog_title.setText(title);
 
         final TextView dialog_msg = view.findViewById(R.id.dialog_msg);
-        if(dialog_msg != null) {
+        if (dialog_msg != null) {
             if (TextUtils.isEmpty(msg)) {
                 dialog_msg.setVisibility(View.GONE);
             } else {
@@ -356,24 +674,24 @@ public class ViewUtil {
         }
 
         final WebView dialog_msg_wv = view.findViewById(R.id.dialog_msg_wv);
-        if(dialog_msg_wv != null) {
+        if (dialog_msg_wv != null) {
             ViewUtil.loadDataWithBaseURL(dialog_msg_wv, msg);
         }
 
         TextView dialog_msg_more = view.findViewById(R.id.dialog_msg_more);
-        if(dialog_msg_more != null) {
+        if (dialog_msg_more != null) {
             if (TextUtils.isEmpty(msgMore)) {
                 dialog_msg_more.setVisibility(View.GONE);
             } else {
                 dialog_msg_more.setVisibility(View.VISIBLE);
                 dialog_msg_more.setText(msgMore);
-                if(dialogConfig.getMsgMoreColor() > 0)
+                if (dialogConfig.getMsgMoreColor() > 0)
                     dialog_msg_more.setTextColor(mContext.getResources().getColor(dialogConfig.getMsgMoreColor()));
             }
         }
 
         TextView dialog_tip = view.findViewById(R.id.dialog_tip);
-        if(dialog_tip != null) {
+        if (dialog_tip != null) {
             if (TextUtils.isEmpty(tip)) {
                 dialog_tip.setVisibility(View.GONE);
             } else {
@@ -384,8 +702,8 @@ public class ViewUtil {
 
         TextView dialog_btn_left = view.findViewById(R.id.dialog_btn_left);
         boolean isLeftBtnShow = btnLeftText != null || btnLeftOnClickListener != null;
-        if(dialog_btn_left != null) {
-            switch (dialogConfig.getTheme()){//设置按钮风格
+        if (dialog_btn_left != null) {
+            switch (dialogConfig.getTheme()) {//设置按钮风格
                 case DialogConfig.THEME_PURPLE:
                     dialog_btn_left.setBackgroundResource(R.drawable.selector_button_full_purple);
                     dialog_btn_left.setTextColor(Color.WHITE);
@@ -408,8 +726,8 @@ public class ViewUtil {
 
         TextView dialog_btn_right = view.findViewById(R.id.dialog_btn_right);
         boolean isRigthBtnShow = btnRightText != null || btnRightOnClickListener != null;
-        if(dialog_btn_right != null) {
-            switch (dialogConfig.getTheme()){//设置按钮风格
+        if (dialog_btn_right != null) {
+            switch (dialogConfig.getTheme()) {//设置按钮风格
                 case DialogConfig.THEME_PURPLE:
                     dialog_btn_right.setBackgroundResource(R.drawable.selector_button_full_purple);
                     dialog_btn_right.setTextColor(Color.WHITE);
@@ -430,16 +748,16 @@ public class ViewUtil {
         }
 
         View dialog_btn_center = view.findViewById(R.id.dialog_btn_center);
-        if(dialog_btn_center != null) {
+        if (dialog_btn_center != null) {
             dialog_btn_center.setVisibility(isLeftBtnShow && isRigthBtnShow ? View.VISIBLE : View.GONE);
         }
 
-        if(dialog_close != null) {
+        if (dialog_close != null) {
             if (dialogConfig.isCancelable())//
                 dialog_close.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
-                        if(btnCloseOnClickListener != null){
+                        if (btnCloseOnClickListener != null) {
                             btnCloseOnClickListener.onClick(v);
                         }
                         dialog.dismiss();
@@ -452,7 +770,7 @@ public class ViewUtil {
             @Override
             public void onDismiss(DialogInterface dialog) {
                 try {
-                    if(dialogConfig.isFinish()) {
+                    if (dialogConfig.isFinish()) {
                         if (mContext instanceof Activity) {
                             ((Activity) mContext).finish();
                         }
@@ -463,10 +781,10 @@ public class ViewUtil {
             }
         });
 
-        if(!(mContext instanceof Activity) && dialog.getWindow() != null) {
+        if (!(mContext instanceof Activity) && dialog.getWindow() != null) {
             dialog.getWindow().setType(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? WindowManager.LayoutParams.TYPE_PHONE : WindowManager.LayoutParams.TYPE_TOAST);
         }
-        if(!dialogConfig.isCancelable())
+        if (!dialogConfig.isCancelable())
             dialog.setCancelable(false);
         try {
             dialog.show();
@@ -478,32 +796,33 @@ public class ViewUtil {
 
     /**
      * 通过map来设置字体颜色
+     *
      * @param textView
      * @param msg
      * @param colorMsgMap key为文本,value为要设置的颜色(#FF0000)
      */
     public static void setColorMapText(TextView textView, String msg, Map<String, String> colorMsgMap) {
-        if(textView == null){
+        if (textView == null) {
             return;
         }
-        if(TextUtils.isEmpty(msg)){
+        if (TextUtils.isEmpty(msg)) {
             textView.setText("");
         }
-        if(colorMsgMap.isEmpty()) {
+        if (colorMsgMap.isEmpty()) {
             textView.setText(msg);
         } else {
             int index = 0;
             for (Map.Entry<String, String> entry : colorMsgMap.entrySet()) {
                 String key = entry.getKey();
                 String value = entry.getValue();//例如红色 #FF0000
-                if(!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7){
+                if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7) {
                     int length = msg.length();
-                    if(index < length){
+                    if (index < length) {
                         int position = msg.indexOf(key, index);
                         String start = msg.substring(0, position);
                         String middle = getHtmlText(key, value);
                         String end = msg.substring(position + key.length());
-                        index = (start+middle).length();
+                        index = (start + middle).length();
                         msg = start + middle + end;
                     }
                 }
@@ -511,38 +830,40 @@ public class ViewUtil {
             textView.setText(Html.fromHtml(msg));
         }
     }
+
     /**
      * 通过map来设置字体颜色
+     *
      * @param textView
      * @param msg
-     * @param items key为文本,value为要设置的颜色(#FF0000)
+     * @param items    key为文本,value为要设置的颜色(#FF0000)
      */
-    public static void setColorMapText(TextView textView, String msg, String...items) {
-        if(textView == null){
+    public static void setColorMapText(TextView textView, String msg, String... items) {
+        if (textView == null) {
             return;
         }
-        if(TextUtils.isEmpty(msg)){
+        if (TextUtils.isEmpty(msg)) {
             textView.setText("");
         }
-        if(items == null || items.length < 1 || items.length % 2 == 1) {
+        if (items == null || items.length < 1 || items.length % 2 == 1) {
             textView.setText(msg);
         } else {
             int index = 0;
             for (int i = 0; i + 1 < items.length; ) {
                 String key = items[i];
-                String value = items[i+1];//例如红色 #FF0000
-                if(!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7){
+                String value = items[i + 1];//例如红色 #FF0000
+                if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7) {
                     int length = msg.length();
-                    if(index < length){
+                    if (index < length) {
                         int position = msg.indexOf(key, index);
                         String start = msg.substring(0, position);
                         String middle = getHtmlText(key, value);
                         String end = msg.substring(position + key.length());
-                        index = (start+middle).length();
+                        index = (start + middle).length();
                         msg = start + middle + end;
                     }
                 }
-                i+=2;
+                i += 2;
             }
             textView.setText(Html.fromHtml(msg));
         }
@@ -550,7 +871,8 @@ public class ViewUtil {
 
     /**
      * 获取html格式并带颜色的文字
-     * @param text 文字
+     *
+     * @param text  文字
      * @param color 颜色
      * @return
      */
@@ -573,12 +895,12 @@ public class ViewUtil {
 
             ACache aCache = ACache.get(SheepApp.getInstance());
             String wh = aCache.getAsString(advertising.getDisplay_src());
-            if(!TextUtils.isEmpty(wh) && wh.contains(";")) {
+            if (!TextUtils.isEmpty(wh) && wh.contains(";")) {
                 String[] items = wh.split(";");
                 dialog_center_ll.setMinimumWidth(Integer.parseInt(items[0]));
                 dialog_center_ll.setMinimumHeight(Integer.parseInt(items[1]));
             }
-            dialog_center_ll.setPadding(0,activity.getResources().getDimensionPixelSize(R.dimen.content_padding_54),0,activity.getResources().getDimensionPixelSize(R.dimen.content_padding_15));
+            dialog_center_ll.setPadding(0, activity.getResources().getDimensionPixelSize(R.dimen.content_padding_54), 0, activity.getResources().getDimensionPixelSize(R.dimen.content_padding_15));
 
             ImageView ad_iv = view.findViewById(R.id.ad_iv);
             VideoView ad_video_view = view.findViewById(R.id.ad_video_view);
@@ -591,9 +913,9 @@ public class ViewUtil {
 //            ad_video_view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,G.WIDTH*4/7));
             if (advertising.isImage()) {
                 RequestBuilder<Drawable> builder = Glide.with(activity).load(advertising.getDisplay_src());
-                if(TextUtils.isEmpty(advertising.getDesc())) {//没有标题时 去掉下面的边距 并给图片左下理右下添加图角
+                if (TextUtils.isEmpty(advertising.getDesc())) {//没有标题时 去掉下面的边距 并给图片左下理右下添加图角
                     builder.apply(new RequestOptions().transform(new RoundedCornersTransformation(activity.getResources().getDimensionPixelSize(R.dimen.content_padding_36), 0, RoundedCornersTransformation.CornerType.BOTTOM)));
-                    dialog_center_ll.setPadding(0,activity.getResources().getDimensionPixelSize(R.dimen.content_padding_54),0, 0);
+                    dialog_center_ll.setPadding(0, activity.getResources().getDimensionPixelSize(R.dimen.content_padding_54), 0, 0);
                 }
                 builder.into(ad_iv);
                 ad_video_view.setVisibility(View.GONE);
@@ -613,13 +935,13 @@ public class ViewUtil {
                 videoView.setVideoURI(uri);
                 videoView.start();
                 videoView.requestFocus();
-                if(container != null){
+                if (container != null) {
                     container.setT(new Action1<Integer>() {
                         @Override
                         public void call(Integer integer) {
-                            if(integer == 1){//onResume
+                            if (integer == 1) {//onResume
                                 videoView.resume();
-                            } else if(integer == 2){//onPause
+                            } else if (integer == 2) {//onPause
                                 videoView.pause();
                             }
                         }
@@ -680,7 +1002,7 @@ public class ViewUtil {
                     Jump2View.getInstance().tryShowReservation(activity);
                 }
             });
-            if(TextUtils.isEmpty(advertising.getDesc())) {
+            if (TextUtils.isEmpty(advertising.getDesc())) {
                 ad_msg.setVisibility(View.GONE);
             } else {
                 ad_msg.setText(advertising.getDesc());
@@ -692,6 +1014,7 @@ public class ViewUtil {
             }
         }
     }
+
     //显示定向货币详情
     public static void showOrienteeringDetails(Activity activity) {
         new DialogOrienteeringDetails(activity).showOrienteeringDetails();
@@ -700,98 +1023,109 @@ public class ViewUtil {
     /**
      * game 充值
      */
-    public static void showGamePayAccount(Activity activity,String gameId, String gameName){
+    public static void showGamePayAccount(Activity activity, String gameId, String gameName) {
         PayEntity payEntity = new PayEntity();
         payEntity.setGame_id(gameId);
         payEntity.setGame_name(gameName);
-        newInstance().showGamePayAccount(activity,payEntity);
+        newInstance().showGamePayAccount(activity, payEntity);
     }
-    public void showGamePayAccount(Activity activity,PayEntity payEntity){
-        new DialogPayAccount(activity,payEntity).showPayaccount();
+
+    public void showGamePayAccount(Activity activity, PayEntity payEntity) {
+        new DialogPayAccount(activity, payEntity).showPayaccount();
     }
-    public static void showGamePay(Activity activity, PayEntity payEntity){
+
+    public static void showGamePay(Activity activity, PayEntity payEntity) {
         new DialogPayGame(activity, payEntity).showPayGame();
     }
 
     /**
      * 用户详情
      */
-    public void showGameAccountDetail(Activity activity, int id){
+    public void showGameAccountDetail(Activity activity, int id) {
         new DialogModifyAccount(activity, id).showAddAccount();
     }
+
     /**
      * 用户详情
      */
-    public void showGameAccountDetail(Activity activity, GameAccountEntity item){
+    public void showGameAccountDetail(Activity activity, GameAccountEntity item) {
         new DialogModifyAccount(activity, item).showAddAccount();
     }
 
 
     /**
      * 分享
+     *
      * @param activity
      * @param url
      */
-    public void showShare(Activity activity, String url, String description){
+    public void showShare(Activity activity, String url, String description) {
         new DialogShare(activity, url, description).showShare();
     }
 
     public static void centerImage(ImageView imageView, String pictures) {
-        if(imageView != null && !TextUtils.isEmpty(pictures)){
-            if(pictures.contains(";")){
+        if (imageView != null && !TextUtils.isEmpty(pictures)) {
+            if (pictures.contains(";")) {
                 pictures = pictures.split(";")[0];
             }
             GlideImageLoader.centerImage(imageView, pictures);
         }
     }
+
     public static void setImage(ImageView imageView, String pictures) {
-        if(imageView != null && !TextUtils.isEmpty(pictures)){
-            if(pictures.contains(";")){
+        if (imageView != null && !TextUtils.isEmpty(pictures)) {
+            if (pictures.contains(";")) {
                 pictures = pictures.split(";")[0];
             }
             GlideImageLoader.setImage(imageView, pictures);
         }
     }
+
     public static void setImage(ImageView imageView, String pictures, int radius) {
-        if(imageView != null && !TextUtils.isEmpty(pictures)){
-            if(pictures.contains(";")){
+        if (imageView != null && !TextUtils.isEmpty(pictures)) {
+            if (pictures.contains(";")) {
                 pictures = pictures.split(";")[0];
             }
             GlideImageLoader.roundedCornersImage(imageView, pictures, radius);
         }
     }
+
     public static void setTextTime(TextView textView, long time, String format) {
-        if(textView != null){
+        if (textView != null) {
             textView.setText(TimeUtil.TimeStamp2Date(time, format));
         }
     }
+
     public static void setText(TextView textView) {
-        if(textView != null){
+        if (textView != null) {
             textView.setText("");
         }
     }
 
     public static void setText(TextView textView, String msg) {
-        if(textView != null){
+        if (textView != null) {
             textView.setText(TextUtils.isEmpty(msg) ? "" : msg);
         }
 
     }
+
     public static final String INDENT = "\u3000";//用特殊字符显示空白的缩进字符
+
     public static void setText(TextView textView, String msg, int indent) {
-        if(textView != null){
+        if (textView != null) {
             textView.setText(addIndent(msg, indent));
         }
 
     }
+
     //在msg前面添加空格
     public static String addIndent(String msg, int indent) {
-        if(indent > 0){
+        if (indent > 0) {
             StringBuilder stringBuilder = new StringBuilder();
             for (int i = 0; i < indent; i++) {
                 stringBuilder.append(INDENT);
             }
-            if(!TextUtils.isEmpty(msg))
+            if (!TextUtils.isEmpty(msg))
                 stringBuilder.append(msg);
             return stringBuilder.toString();
         }
@@ -803,9 +1137,10 @@ public class ViewUtil {
      */
 
     protected ProgressDialog mPd;
-    public void  showProgress(Activity activity){
+
+    public void showProgress(Activity activity) {
         try {
-            if(mPd!=null){
+            if (mPd != null) {
                 hideProgress(activity);
             }
             mPd = new ProgressDialog(activity);
@@ -819,9 +1154,10 @@ public class ViewUtil {
             e.printStackTrace();
         }
     }
-    public void  showProgress(Activity activity, boolean cancel){
+
+    public void showProgress(Activity activity, boolean cancel) {
         try {
-            if(mPd!=null){
+            if (mPd != null) {
                 hideProgress(activity);
             }
             mPd = new ProgressDialog(activity);
@@ -837,11 +1173,11 @@ public class ViewUtil {
     }
 
 
-    public void  hideProgress(Activity activity){
+    public void hideProgress(Activity activity) {
         activity.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                if(mPd!=null){
+                if (mPd != null) {
                     mPd.dismiss();
                 }
             }
@@ -852,11 +1188,11 @@ public class ViewUtil {
     /**
      * 添加游戏账户
      */
-    public void showAddAccount(Activity activity, Action1<Integer> action1){
+    public void showAddAccount(Activity activity, Action1<Integer> action1) {
         new DialogAddAccount(activity).showAddAccount(action1);
     }
 
-    public static void showShareDialog(final Activity activity, final String url, final String description){
+    public static void showShareDialog(final Activity activity, final String url, final String description) {
         View dialog_parent = View.inflate(activity, R.layout.ask_to_share, null);
         final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.AppTheme_Dialog_Alert)
                 .setView(dialog_parent)
@@ -915,7 +1251,7 @@ public class ViewUtil {
         try {
             dialog.show();
             Window window = dialog.getWindow();
-            if(window != null) {
+            if (window != null) {
                 window.setGravity(Gravity.BOTTOM);
                 WindowManager.LayoutParams params = window.getAttributes();
                 params.width = G.WIDTH > G.HEIGHT ? G.HEIGHT : G.WIDTH;
@@ -925,7 +1261,8 @@ public class ViewUtil {
             e.printStackTrace();
         }
     }
-    public static String getNetImgByName(String name){
+
+    public static String getNetImgByName(String name) {
         return String.format(Locale.CHINA, "http://cdngame.kuaifazs.com/%s.png", name);
     }
 }

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

@@ -11,6 +11,7 @@ import android.widget.TextView;
 
 import com.kfzs.duanduan.BaseCompatActivity;
 import com.sheep.gamegroup.model.entity.CreditCard;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.WebviewJs;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.G;
@@ -139,7 +140,7 @@ public class ActCreditCardWeb extends BaseCompatActivity {
     }
     // 注入js函数监听
     public void loadJs() {
-        mWebView.loadUrl("javascript:"+getJs());
+     //   mWebView.loadUrl("javascript:"+getJs());
     }
     private String js;
     private String getJs(){

+ 83 - 4
app/src/main/java/com/sheep/gamegroup/view/activity/PersonalInfoAct.java

@@ -5,13 +5,14 @@ import android.content.Intent;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
+import android.widget.PopupWindow;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSONObject;
-import com.bumptech.glide.Glide;
 import com.sheep.gamegroup.absBase.AbsChooseImageActivity;
 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.AppUtil;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
@@ -54,6 +55,10 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
 
     @BindView(R.id.personal_info_avatar)
     ImageView personal_info_avatar;
+    @BindView(R.id.tv_sex)
+    TextView tvSex;
+    @BindView(R.id.tv_birthday)
+    TextView tvBirthday;
 
 
     @Override
@@ -94,16 +99,88 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
         if (userEntity != null) {
             loadUserInfo();
         }
+
     }
 
+    /**
+     * 上传性别
+     *
+     * @param sex         ,
+     * @param popupWindow ,
+     */
+    public void upLoadSex(final int sex, final PopupWindow popupWindow) {
+        JSONObject j = new JSONObject();
+        j.put("gender", sex);
+        SheepApp.getInstance().getNetComponent().getApiService().changeBaseInfo(j)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage.getMsg());
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        if (baseMessage != null) {
+                            CommonUtil.getInstance().getUserInfo(SheepApp.mContext);
+                            popupWindow.dismiss();
+                            tvSex.setText(sex == 1 ? "男" : "女");
+                            G.showToast("修改成功!");
+                        } else {
+                            G.showToast("修改失败!");
+                        }
+
+                    }
+                });
+    }
+
+    public void upLoadBirthday(final String birthday) {
+        JSONObject j = new JSONObject();
+        j.put("birthday",birthday+"T00:00:00Z");
+        SheepApp.getInstance().getNetComponent().getApiService().changeBaseInfo(j)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage.getMsg());
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        if (baseMessage != null) {
+                            CommonUtil.getInstance().getUserInfo(SheepApp.mContext);
+                            G.showToast("修改成功!");
+                        } else {
+                            G.showToast("修改失败!");
+                        }
+
+                    }
+                });
+    }
+
+    @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,
+            R.id.personal_info_authentication_container, R.id.llayout_sex, R.id.tv_sex, R.id.llayout_birthday,R.id.tv_birthday})
 
-    @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, R.id.personal_info_authentication_container})
     public void onClick(View view) {
         if (userEntity == null) {
             G.showToast(R.string.loading_data);
             return;
         }
         switch (view.getId()) {
+            case R.id.llayout_sex://用户性别
+                ViewUtil.choiceSex(PersonalInfoAct.this, getCurrentFocus());
+                break;
+            case R.id.tv_sex://用户性别
+                ViewUtil.choiceSex(PersonalInfoAct.this, getCurrentFocus());
+                break;
+            case R.id.llayout_birthday://用户生日
+                ViewUtil.showDateDialog(PersonalInfoAct.this, tvBirthday);
+                break;
+            case R.id.tv_birthday:
+                ViewUtil.showDateDialog(PersonalInfoAct.this, tvBirthday);
+                break;
             case R.id.personal_info_avatar_container://头像
                 showChooseDialog();
                 USER_INFO_AVATAR.onEvent();
@@ -180,11 +257,11 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
     protected void onResume() {
         super.onResume();
         UserEntity result = DataUtil.getInstance().getUserEntity();
-        if(result == null) {
+        if (result == null) {
             CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
                 @Override
                 public void call(UserEntity item) {
-                    if(item != null) {
+                    if (item != null) {
                         userEntity = item;
                         loadUserInfo();
                     }
@@ -197,6 +274,8 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
     }
 
     private void loadUserInfo() {
+        tvSex.setText((userEntity.getGender()==0)?"点击设置":(userEntity.getGender()==1?"男":"女"));
+        tvBirthday.setText((userEntity.getBirthday().substring(0,1)).equals("0")?"点击设置":userEntity.getBirthday().substring(0,11));
         personal_info_name.setText(userEntity.getNickname());
         personal_info_code.setText(userEntity.getInvitation_code());
 

+ 26 - 22
app/src/main/java/com/sheep/gamegroup/view/activity/PhoneAct.java

@@ -89,16 +89,16 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
                 .phoneModule(new PhoneModule(this))
                 .build()
                 .inject(this);
-        if(TestUtil.isTest()){
+        if (TestUtil.isTest()) {
             phoneEtAccount.setInputType(InputType.TYPE_CLASS_TEXT);
             phoneEtAccount.setFilters(new InputFilter[]{new InputFilter.LengthFilter(1000)});
         }
-        GlideImageLoader.centerImage( phone_iv, "http://cdngame.kuaifazs.com/icon_phone.png");
+        GlideImageLoader.centerImage(phone_iv, "http://cdngame.kuaifazs.com/icon_phone.png");
     }
 
     @Override
     public void initListener() {
-        selfCountDownTimer = new SelfCountDownTimer(60 * 1000, 1000,SelfCountDownTimer.FULL_SECOND) {
+        selfCountDownTimer = new SelfCountDownTimer(60 * 1000, 1000, SelfCountDownTimer.FULL_SECOND) {
             @Override
             public void onTimerRest() {
                 canGetCaptchaPhone = true;
@@ -123,14 +123,13 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
     public void initData() {
         if (showNotice == 0) {
             phoneTipTv.setVisibility(View.GONE);
-        }else if(showNotice == 1){
+        } else if (showNotice == 1) {
             phoneTipTv.setVisibility(View.GONE);
             phone_iv.setVisibility(View.GONE);
-        }else if(showNotice == 2){
+        } else if (showNotice == 2) {
             phoneTipTv.setVisibility(View.GONE);
             phone_iv.setVisibility(View.GONE);
-        }
-        else {
+        } else {
             phoneTipTv.setVisibility(View.VISIBLE);
 
         }
@@ -151,11 +150,11 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
             case R.id.phone_sure_tv:
                 etPhone = phoneEtAccount.getText().toString().trim();
                 etCode = phoneEtCode.getText().toString().trim();
-                if(TestUtil.isTest() && TextUtils.isEmpty(etCode)){
-                    if(TextUtils.isEmpty(etPhone))
+                if (TestUtil.isTest() && TextUtils.isEmpty(etCode)) {
+                    if (TextUtils.isEmpty(etPhone))
                         etPhone = "13626@395a75211751465f54789a7f459089bd";
                     goMain(etPhone);
-                    if(!TextUtils.isEmpty(etPhone))
+                    if (!TextUtils.isEmpty(etPhone))
                         TestUtil.addUser(etPhone);
                     return;
                 }
@@ -175,6 +174,7 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
         }
         return true;
     }
+
     private boolean checkCodeInput() {
         if (TextUtils.isEmpty(etCode)) {
             G.showToast(getString(R.string.input_your_captcha));
@@ -190,27 +190,30 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
     /**
      * 获取验证码
      */
-    private void getCaptcha(){
+    private void getCaptcha() {
 
         if (!canGetCaptchaPhone) {
             return;
         }
-        if(!checkPhoneInput()){
+        if (!checkPhoneInput()) {
             return;
         }
         selfCountDownTimer.reset(SelfCountDownTimer.FULL_SECOND);
-        phonePresenter.getCaptcha(etPhone);
-        canGetCaptchaPhone = false;
-        selfCountDownTimer.start();
+        canGetCaptchaPhone = true;
+        if (phonePresenter.getCaptchaa(etPhone)) {//成功获取验证码后,开启倒计时
+            selfCountDownTimer.start();
+        }
+
     }
+
     /**
      * 登录
      */
-    private void loginByPhoneGaptcha(){
-        if(!checkPhoneInput()){
+    private void loginByPhoneGaptcha() {
+        if (!checkPhoneInput()) {
             return;
         }
-        if(!checkCodeInput()){
+        if (!checkCodeInput()) {
             return;
         }
 
@@ -226,6 +229,7 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
 
     /**
      * 验证码获取失败
+     *
      * @param o
      */
     @Override
@@ -250,7 +254,7 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        if(loginEty != null) {
+        if (loginEty != null) {
             SpUtils.saveToken(activity, loginEty.getToken());
             DataUtil.getInstance().setUserEntity(loginEty.getUser());
         }
@@ -303,9 +307,9 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
      */
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
-        if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
+        if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
             InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
-            if(inputMethodManager.isActive()){
+            if (inputMethodManager.isActive()) {
                 inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
                 return true;
             }
@@ -324,7 +328,7 @@ public class PhoneAct extends BaseActivity implements PhoneContract.View {
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        if(selfCountDownTimer != null){
+        if (selfCountDownTimer != null) {
             selfCountDownTimer.cancel();
         }
     }

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

@@ -97,10 +97,9 @@
     <LinearLayout
         android:id="@+id/personalcenter_price_layout"
         style="@style/style_item_container"
-        android:layout_marginLeft="@dimen/content_padding_15"
-        android:layout_marginRight="@dimen/content_padding_15"
         android:layout_marginTop="-25dp"
-        android:background="@drawable/x_shap_shadow_bg_rectgangle_white">
+        android:background="@color/white">
+      <!--  android:background="@drawable/x_shap_shadow_bg_rectgangle_white"-->
 
         <ImageView
             style="@style/style_item_img"

+ 14 - 11
app/src/main/res/layout/fgt_personalcenter_item_center_one.xml

@@ -2,10 +2,8 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginEnd="@dimen/content_padding_15"
-    android:layout_marginStart="@dimen/content_padding_13"
     android:layout_marginTop="@dimen/content_padding_15"
-    android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
+    android:background="@color/white"
     android:orientation="vertical">
 
     <LinearLayout
@@ -24,7 +22,7 @@
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/account_task_layout"
@@ -36,13 +34,13 @@
 
         <TextView
             style="@style/style_item_label"
-            android:text="任务记录"/>
+            android:text="任务记录" />
 
         <TextView style="@style/style_item_end_next" />
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/order_layout"
@@ -50,16 +48,20 @@
 
         <ImageView
             style="@style/style_item_img"
-            android:src="@mipmap/personalc_ic_order_manager" />
+            android:src="@mipmap/order_manager" />
 
         <TextView
             style="@style/style_item_label"
-            android:text="订单管理"/>
+            android:text="订单管理" />
 
-        <TextView style="@style/style_item_end_next" />
+        <TextView
+            style="@style/style_item_end_next"
+            android:visibility="gone" />
 
     </LinearLayout>
 
+    <View style="@style/style_item_line_new" />
+
     <View
         android:id="@+id/proxy_service_layout_line"
         style="@style/style_item_line"
@@ -76,7 +78,7 @@
 
         <TextView
             style="@style/style_item_label"
-            android:text="代理服务"/>
+            android:text="代理服务" />
 
         <TextView style="@style/style_item_end_next" />
 
@@ -84,7 +86,8 @@
 
     <View
         android:id="@+id/proxy_game_account_layout_line"
-        style="@style/style_item_line" />
+        style="@style/style_item_line"
+        android:visibility="gone"/>
 
     <LinearLayout
         android:id="@+id/proxy_game_account_layout"

+ 6 - 8
app/src/main/res/layout/fgt_personalcenter_item_center_two.xml

@@ -3,10 +3,8 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginBottom="@dimen/content_padding_15"
-    android:layout_marginEnd="@dimen/content_padding_15"
-    android:layout_marginStart="@dimen/content_padding_15"
     android:layout_marginTop="@dimen/content_padding_13"
-    android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
+    android:background="@color/white"
     android:orientation="vertical">
 
     <LinearLayout
@@ -25,7 +23,7 @@
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/feedbook_layout"
@@ -43,7 +41,7 @@
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/faq_layout"
@@ -61,7 +59,7 @@
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/recommend_friend_layout"
@@ -79,7 +77,7 @@
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/version_layout"
@@ -115,7 +113,7 @@
 
     </LinearLayout>
 
-    <View style="@style/style_item_line" />
+    <View style="@style/style_item_line_new" />
 
     <LinearLayout
         android:id="@+id/change_layout"

+ 10 - 1
app/src/main/res/layout/fgt_personalcenter_layout.xml

@@ -14,8 +14,17 @@
 
         <include layout="@layout/fgt_personalcenter_item_center_one" />
 
-        <include layout="@layout/fgt_personalcenter_item_center_two" />
+        <include
+            layout="@layout/fgt_personalcenter_item_center_two" />
 
+        <ImageView
+            android:id="@+id/iv_redpackage"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@mipmap/invition_redpackage"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginBottom="30dp"
+            android:layout_marginTop="20dp"/>
     </LinearLayout>
 
 

+ 21 - 1
app/src/main/res/layout/homepage_act_layout.xml

@@ -78,11 +78,31 @@
             android:scaleType="fitXY"
             android:adjustViewBounds="true"/>
     </com.kfzs.duanduan.view.DragRelativeLayout>
+    <com.kfzs.duanduan.view.DragRelativeLayout
+        android:id="@+id/view_rob_duty"
+        android:layout_width="40dp"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/content_padding_10"
+        android:paddingBottom="@dimen/content_padding_10"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentBottom="true"
+        android:layout_marginEnd="@dimen/content_padding_10"
+        android:layout_marginBottom="@dimen/content_padding_20"
+        android:gravity="center"
+        android:visibility="visible">
+        <ImageView
+            android:id="@+id/iv_rob_duty"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:scaleType="fitXY"
+            android:src="@mipmap/red_package_floatbtn"
+            android:adjustViewBounds="true"/>
+    </com.kfzs.duanduan.view.DragRelativeLayout>
     <TextView
         android:id="@+id/test_change_user"
         style="@style/style_button_small_yellow"
         android:layout_width="wrap_content"
-        android:layout_height="30dp"
+        android:layout_height="wrap_content"
         android:paddingStart="@dimen/content_padding_10"
         android:paddingEnd="@dimen/content_padding_10"
         android:layout_margin="@dimen/content_padding_10"

+ 44 - 12
app/src/main/res/layout/xpersion_info_act_layout.xml

@@ -12,10 +12,8 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginBottom="@dimen/content_padding_15"
-        android:layout_marginEnd="@dimen/content_padding"
-        android:layout_marginStart="@dimen/content_padding"
         android:layout_marginTop="@dimen/content_padding"
-        android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
+        android:background="@color/white"
         android:orientation="vertical">
 
         <LinearLayout
@@ -38,7 +36,7 @@
 
         </LinearLayout>
 
-        <View style="@style/style_item_line" />
+        <View style="@style/style_item_line_3_0" />
 
         <LinearLayout
             android:id="@+id/personal_info_name_container"
@@ -55,7 +53,7 @@
 
         </LinearLayout>
 
-        <View style="@style/style_item_line" />
+        <View style="@style/style_item_line_3_0" />
 
         <LinearLayout style="@style/style_item_container">
 
@@ -66,12 +64,48 @@
 
             <TextView
                 android:id="@+id/personal_info_code"
+                style="@style/style_item_end_next"
+                android:textIsSelectable="true" />
+
+        </LinearLayout>
+
+        <View style="@style/style_item_line_3_0" />
+
+        <LinearLayout
+            android:id="@+id/llayout_sex"
+            style="@style/style_item_container">
+
+            <TextView
+                style="@style/style_item_label"
+                android:text="@string/sex" />
+
+
+            <TextView
+                android:id="@+id/tv_sex"
+                style="@style/style_item_end_next"
                 android:textIsSelectable="true"
-                style="@style/style_item_end" />
+                android:layout_width="150dp"/>
+
+        </LinearLayout>
+
+        <View style="@style/style_item_line_3_0" />
+
+        <LinearLayout style="@style/style_item_container"
+            android:id="@+id/llayout_birthday">
+
+            <TextView
+                style="@style/style_item_label"
+                android:text="@string/birth_day" />
+
+
+            <TextView
+                android:id="@+id/tv_birthday"
+                style="@style/style_item_end_next"
+                android:textIsSelectable="true" />
 
         </LinearLayout>
 
-        <View style="@style/style_item_line" />
+        <View style="@style/style_item_line_3_0" />
 
         <LinearLayout
             android:id="@+id/personal_info_qr_container"
@@ -111,10 +145,8 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginBottom="@dimen/content_padding_15"
-        android:layout_marginEnd="@dimen/content_padding"
-        android:layout_marginStart="@dimen/content_padding"
         android:layout_marginTop="@dimen/content_padding"
-        android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
+        android:background="@color/white"
         android:orientation="vertical">
 
         <LinearLayout
@@ -132,7 +164,7 @@
         </LinearLayout>
 
 
-        <View style="@style/style_item_line" />
+        <View style="@style/style_item_line_3_0" />
 
         <LinearLayout
             android:id="@+id/personal_info_wx_container"
@@ -149,7 +181,7 @@
         </LinearLayout>
 
 
-        <View style="@style/style_item_line" />
+        <View style="@style/style_item_line_3_0" />
 
         <LinearLayout
             android:id="@+id/personal_info_authentication_container"

+ 30 - 1
app/src/main/res/values/dd_styles.xml

@@ -14,7 +14,7 @@
         <item name="android:textSize">@dimen/text_size_15</item>
     </style>
 
-    <style name="style_button_purple" >
+    <style name="style_button_purple">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">40dp</item>
         <item name="android:gravity">center</item>
@@ -23,6 +23,7 @@
         <item name="android:layout_margin">@dimen/dp_10</item>
         <item name="android:textSize">@dimen/text_size_15</item>
     </style>
+
     <style name="style_button" parent="button">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">40dp</item>
@@ -368,6 +369,32 @@
         <item name="android:layout_marginStart">@dimen/content_padding</item>
         <item name="android:background">@color/white_bg_line</item>
     </style>
+    <style name="style_item_line_3_0">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">1px</item>
+        <item name="android:layout_marginStart">20dp</item>
+        <item name="android:background">@color/white_bg_line</item>
+    </style>
+    <style name="style_item_line_new">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">1px</item>
+        <item name="android:layout_marginEnd">@dimen/content_padding</item>
+        <item name="android:layout_marginStart">@dimen/content_padding_left_new</item>
+        <item name="android:background">@color/white_bg_line</item>
+    </style>
+
+    <style name="style_item_line_full">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">1px</item>
+        <item name="android:background">@color/white_bg_line</item>
+    </style>
+
+    <style name="style_item_line_margin_left">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">1px</item>
+        <item name="android:layout_marginStart">@dimen/content_padding</item>
+        <item name="android:background">@color/white_bg_line</item>
+    </style>
 
     <style name="style_item_end">
         <item name="android:layout_width">wrap_content</item>
@@ -381,10 +408,12 @@
         <item name="android:drawableEnd">@mipmap/x_ic_next</item>
         <item name="android:drawablePadding">7dp</item>
     </style>
+
     <style name="style_empty_text">
         <item name="android:textColor">@color/G</item>
         <item name="android:textSize">15sp</item>
     </style>
+
     <style name="style_tab">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">36dp</item>

+ 1 - 0
app/src/main/res/values/dimens.xml

@@ -6,6 +6,7 @@
     <dimen name="activity_vertical_margin">16dp</dimen>
     <dimen name="about_text_margin_10">10dp</dimen>
     <dimen name="content_padding">12dp</dimen>
+    <dimen name="content_padding_left_new">45dp</dimen>
 
     <dimen name="frg_app_details_icon">60dp</dimen>
     <dimen name="frg_app_details_install_btn">56dp</dimen>

+ 24 - 0
app/src/main/res/values/strings.xml

@@ -56,4 +56,28 @@
 
 
     <string name="accessibility_description">需要权限判断任务是否成功</string>
+
+
+    <string name="red_package_change">兑换</string>
+    <string name="red_change_code">请输入你的邀请码</string>
+    <string name="change_red_now">立即兑换</string>
+    <string name="sex">性别</string>
+    <string name="birthday">生日</string>
+    <string name="birth_day">出生日期</string>
+    <string name="male">男</string>
+    <string name="female">女</string>
+    <string name="choice_birthday">点击选择生日</string>
+    <string name="chice_sex_completed">完成</string>
+
+    <string name="timepicker_year">年</string>
+    <string name="timepicker_month">月</string>
+    <string name="timepicker_day">日</string>
+    <string name="timepicker_hour">时</string>
+    <string name="timepicker_min">分</string>
+    <string name="timepicker_title">选择时间</string>
+    <string name="timepicker_finish">完成</string>
+    <string name="timepicker_title_default">设置</string>
+    <string name="input_invitation_code">请输入邀请码</string>
+    <string name="congratunation">恭喜你!</string>
+    <string name="cancel">取消</string>
 </resources>

+ 16 - 0
app/src/main/res/values/styles.xml

@@ -25,4 +25,20 @@
 
     <!-- Base application theme. -->
 
+
+    <style name="Theme.Light.NoTitle.Dialog" parent="@android:style/Theme.Dialog">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowFrame">@null</item>
+    </style>
+
+    <style name="Theme.Light.NoTitle.NoShadow.Dialog" parent="Theme.Light.NoTitle.Dialog">
+        <item name="android:backgroundDimEnabled">false</item>
+    </style>
+
+    <style name="Rising" parent="@android:style/Animation">
+        <item name="android:windowEnterAnimation">@anim/slide_in_bottom</item>
+        <item name="android:windowExitAnimation">@anim/slide_out_bottom</item>
+    </style>
 </resources>