瀏覽代碼

对接 岗位 刷新 暂停 结束 筛选(全部 正在招聘 暂停招聘 结束招聘 审核状态)接口 调整岗位列表界面

ZhangXinYu 6 年之前
父節點
當前提交
f8070c9a53
共有 66 個文件被更改,包括 946 次插入133 次删除
  1. 4 4
      app/src/main/AndroidManifest.xml
  2. 12 12
      app/src/main/java/com/webrain/dailypay/bean/PositionBean.java
  3. 22 0
      app/src/main/java/com/webrain/dailypay/bean/api/ApiPositionPauseBean.java
  4. 13 0
      app/src/main/java/com/webrain/dailypay/bean/api/ApiPositionRefreshBean.java
  5. 10 1
      app/src/main/java/com/webrain/dailypay/http/Api.java
  6. 26 2
      app/src/main/java/com/webrain/dailypay/http/subscribe/PositionSubscribe.java
  7. 6 0
      app/src/main/java/com/webrain/dailypay/ui/activity/LoginActivity.java
  8. 70 5
      app/src/main/java/com/webrain/dailypay/ui/adapter/listview/PositionListAdapter.java
  9. 0 3
      app/src/main/java/com/webrain/dailypay/ui/adapter/viewpager/FragmentPagePositionAdapter.java
  10. 2 1
      app/src/main/java/com/webrain/dailypay/ui/adapter/viewpager/FragmentPageTabAdapter.java
  11. 138 24
      app/src/main/java/com/webrain/dailypay/ui/fragment/position/PositionListFragment.java
  12. 28 4
      app/src/main/java/com/webrain/dailypay/ui/mvp/contacts/PositionListFragmentContacts.java
  13. 132 55
      app/src/main/java/com/webrain/dailypay/ui/mvp/model/PositionListFragmentModel.java
  14. 78 14
      app/src/main/java/com/webrain/dailypay/ui/mvp/presenter/PositionListFragmentPresenter.java
  15. 117 0
      app/src/main/java/com/webrain/dailypay/ui/widget/popwindow/PositionStatePopWindow.java
  16. 6 0
      app/src/main/res/drawable/color_black_gray_tv.xml
  17. 8 0
      app/src/main/res/drawable/corners_purple_radio_group.xml
  18. 6 0
      app/src/main/res/drawable/drawable_position_edit.xml
  19. 6 0
      app/src/main/res/drawable/drawable_position_over.xml
  20. 6 0
      app/src/main/res/drawable/drawable_position_pause.xml
  21. 6 0
      app/src/main/res/drawable/drawable_position_refresh.xml
  22. 6 0
      app/src/main/res/drawable/drawable_position_start.xml
  23. 1 0
      app/src/main/res/layout/fragment_position.xml
  24. 94 0
      app/src/main/res/layout/fragment_position_list.xml
  25. 8 8
      app/src/main/res/layout/item_listview_position.xml
  26. 65 0
      app/src/main/res/layout/pop_position_state.xml
  27. 二進制
      app/src/main/res/mipmap-hdpi/ic_arrow_gray_right.png
  28. 二進制
      app/src/main/res/mipmap-hdpi/ic_arrow_white_down.png
  29. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_edit_n.png
  30. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_over_n.png
  31. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_pause_n.png
  32. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_refresh_n.png
  33. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_review_no.png
  34. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_start.png
  35. 二進制
      app/src/main/res/mipmap-hdpi/ic_position_start_n.png
  36. 二進制
      app/src/main/res/mipmap-xhdpi/ic_arrow_gray_right.png
  37. 二進制
      app/src/main/res/mipmap-xhdpi/ic_arrow_white_down.png
  38. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_edit_n.png
  39. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_over_n.png
  40. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_pause_n.png
  41. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_refresh_n.png
  42. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_review_no.png
  43. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_start.png
  44. 二進制
      app/src/main/res/mipmap-xhdpi/ic_position_start_n.png
  45. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_arrow_gray_right.png
  46. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_arrow_white_down.png
  47. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_edit_n.png
  48. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_over_n.png
  49. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_pause_n.png
  50. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_refresh_n.png
  51. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_review_no.png
  52. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_start.png
  53. 二進制
      app/src/main/res/mipmap-xxhdpi/ic_position_start_n.png
  54. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_arrow_gray_right.png
  55. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_arrow_white_down.png
  56. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_edit_n.png
  57. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_over_n.png
  58. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_pause_n.png
  59. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_refresh_n.png
  60. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_review_no.png
  61. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_start.png
  62. 二進制
      app/src/main/res/mipmap-xxxhdpi/ic_position_start_n.png
  63. 1 0
      app/src/main/res/values/colors.xml
  64. 12 0
      app/src/main/res/values/strings.xml
  65. 22 0
      baselibrary/src/main/java/com/webrain/baselibrary/utils/DateUtils.java
  66. 41 0
      baselibrary/src/main/java/com/webrain/baselibrary/widget/DrawableRadioButton.java

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

@@ -39,11 +39,7 @@
         <activity
             android:name=".ui.activity.MainActivity"
             android:screenOrientation="portrait">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
 
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
         </activity>
 
         <activity
@@ -89,7 +85,11 @@
         <activity
             android:name=".ui.activity.LoginActivity"
             android:screenOrientation="portrait">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
 
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
         </activity>
     </application>
 

+ 12 - 12
app/src/main/java/com/webrain/dailypay/bean/PositionBean.java

@@ -6,7 +6,7 @@ public class PositionBean {
     private String positionName;
     private String enterpriseName;
     private String positionDetail;
-    private String positionCategory;
+    private int positionCategory;
     private String fulltimePositionType;
     private String parttimePositionType;
     private String recruitNumber;
@@ -30,11 +30,11 @@ public class PositionBean {
     private String contactPhone;
     private String createTime;
     private String endDate;
-    private String isPause;
     private String updateTime;
     private String delFlag;
-    private String authenticationStatus;
-    private String isOn;
+    private int authenticationStatus;//(1:等待认证 2:未通过 3:已认证)
+    private int isOn;//(0:下架 1:上架)
+    private int isPause;//(0:不是 1:是)
     private String requireGroup;
     private String settlementMethod;
 
@@ -79,11 +79,11 @@ public class PositionBean {
         this.positionDetail = positionDetail;
     }
 
-    public String getPositionCategory() {
+    public int getPositionCategory() {
         return positionCategory;
     }
 
-    public void setPositionCategory(String positionCategory) {
+    public void setPositionCategory(int positionCategory) {
         this.positionCategory = positionCategory;
     }
 
@@ -271,11 +271,11 @@ public class PositionBean {
         this.endDate = endDate;
     }
 
-    public String getIsPause() {
+    public int getIsPause() {
         return isPause;
     }
 
-    public void setIsPause(String isPause) {
+    public void setIsPause(int isPause) {
         this.isPause = isPause;
     }
 
@@ -295,19 +295,19 @@ public class PositionBean {
         this.delFlag = delFlag;
     }
 
-    public String getAuthenticationStatus() {
+    public int getAuthenticationStatus() {
         return authenticationStatus;
     }
 
-    public void setAuthenticationStatus(String authenticationStatus) {
+    public void setAuthenticationStatus(int authenticationStatus) {
         this.authenticationStatus = authenticationStatus;
     }
 
-    public String getIsOn() {
+    public int getIsOn() {
         return isOn;
     }
 
-    public void setIsOn(String isOn) {
+    public void setIsOn(int isOn) {
         this.isOn = isOn;
     }
 

+ 22 - 0
app/src/main/java/com/webrain/dailypay/bean/api/ApiPositionPauseBean.java

@@ -0,0 +1,22 @@
+package com.webrain.dailypay.bean.api;
+
+public class ApiPositionPauseBean {
+    long date;
+    String isPause;
+
+    public long getDate() {
+        return date;
+    }
+
+    public void setDate(long date) {
+        this.date = date;
+    }
+
+    public String getIsPause() {
+        return isPause;
+    }
+
+    public void setIsPause(String isPause) {
+        this.isPause = isPause;
+    }
+}

+ 13 - 0
app/src/main/java/com/webrain/dailypay/bean/api/ApiPositionRefreshBean.java

@@ -0,0 +1,13 @@
+package com.webrain.dailypay.bean.api;
+
+public class ApiPositionRefreshBean {
+    long date;
+
+    public long getDate() {
+        return date;
+    }
+
+    public void setDate(long date) {
+        this.date = date;
+    }
+}

+ 10 - 1
app/src/main/java/com/webrain/dailypay/http/Api.java

@@ -3,6 +3,8 @@ package com.webrain.dailypay.http;
 import com.webrain.dailypay.bean.api.ApiLoginBean;
 import com.webrain.dailypay.bean.api.ApiNormalBean;
 import com.webrain.dailypay.bean.api.ApiPositionListBean;
+import com.webrain.dailypay.bean.api.ApiPositionPauseBean;
+import com.webrain.dailypay.bean.api.ApiPositionRefreshBean;
 import com.webrain.dailypay.bean.api.ApiResultBean;
 import com.webrain.dailypay.bean.api.AuthCodeBean;
 
@@ -50,8 +52,15 @@ public class Api {
 
         //刷新岗位
         @POST("api/position/changeUpdateTime")
-        Observable<ApiResultBean<ApiNormalBean>> httpUpdateTime(@Body Map<String, Object> args);
+        Observable<ApiResultBean<ApiPositionRefreshBean>> httpUpdateTime(@Body Map<String, Object> args);
 
+        //暂停岗位
+        @POST("api/position/changeAuthenticationStatus")
+        Observable<ApiResultBean<ApiPositionPauseBean>> httpPausePosition(@Body Map<String, Object> args);
+
+        //下架岗位
+        @POST("api/position/changeIsOnStatus")
+        Observable<ApiResultBean<ApiNormalBean>> httpOverPosition(@Body Map<String, Object> args);
     }
 
 }

+ 26 - 2
app/src/main/java/com/webrain/dailypay/http/subscribe/PositionSubscribe.java

@@ -5,6 +5,8 @@ import android.content.Context;
 import com.webrain.dailypay.bean.api.ApiLoginBean;
 import com.webrain.dailypay.bean.api.ApiNormalBean;
 import com.webrain.dailypay.bean.api.ApiPositionListBean;
+import com.webrain.dailypay.bean.api.ApiPositionPauseBean;
+import com.webrain.dailypay.bean.api.ApiPositionRefreshBean;
 import com.webrain.dailypay.bean.api.ApiResultBean;
 import com.webrain.dailypay.bean.api.AuthCodeBean;
 import com.webrain.dailypay.http.Api;
@@ -60,9 +62,31 @@ public class PositionSubscribe extends BaseSubscribe {
      *
      * @param mObservable
      */
-    public void requestUpdateTime(Map<String, Object> params, ApiObserver<ApiNormalBean> mObservable) {
+    public void requestUpdateTime(Map<String, Object> params, ApiObserver<ApiPositionRefreshBean> mObservable) {
         Api.PositionInterface apiService = ServiceGenerator.createService(Api.PositionInterface.class);
-        Observable<ApiResultBean<ApiNormalBean>> observable = apiService.httpUpdateTime(params);
+        Observable<ApiResultBean<ApiPositionRefreshBean>> observable = apiService.httpUpdateTime(params);
+        subscribe(observable, mObservable);
+    }
+
+    /**
+     * 暂停岗位
+     *
+     * @param mObservable
+     */
+    public void requestPausePosition(Map<String, Object> params, ApiObserver<ApiPositionPauseBean> mObservable) {
+        Api.PositionInterface apiService = ServiceGenerator.createService(Api.PositionInterface.class);
+        Observable<ApiResultBean<ApiPositionPauseBean>> observable = apiService.httpPausePosition(params);
+        subscribe(observable, mObservable);
+    }
+
+    /**
+     * 下架岗位
+     *
+     * @param mObservable
+     */
+    public void requestOverPosition(Map<String, Object> params, ApiObserver<ApiNormalBean> mObservable) {
+        Api.PositionInterface apiService = ServiceGenerator.createService(Api.PositionInterface.class);
+        Observable<ApiResultBean<ApiNormalBean>> observable = apiService.httpOverPosition(params);
         subscribe(observable, mObservable);
     }
 

+ 6 - 0
app/src/main/java/com/webrain/dailypay/ui/activity/LoginActivity.java

@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Px;
+import android.support.v7.widget.CardView;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -15,6 +16,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.webrain.baselibrary.utils.PxUtils;
+import com.webrain.dailypay.AppCacheManager;
 import com.webrain.dailypay.R;
 import com.webrain.dailypay.ui.activity.identity.IdentityChoiceActivity;
 import com.webrain.dailypay.ui.base.BaseActivity;
@@ -77,6 +79,10 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        if (AppCacheManager.getInstance().isLogin()) {
+            finish();
+            startActivity(new Intent(this, MainActivity.class));
+        }
     }
 
     @OnClick({R.id.btn_login, R.id.tv_code})

+ 70 - 5
app/src/main/java/com/webrain/dailypay/ui/adapter/listview/PositionListAdapter.java

@@ -2,6 +2,7 @@ package com.webrain.dailypay.ui.adapter.listview;
 
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
@@ -9,6 +10,7 @@ import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.TextView;
 
+import com.webrain.baselibrary.AppConstant;
 import com.webrain.baselibrary.utils.DateUtils;
 import com.webrain.dailypay.R;
 import com.webrain.dailypay.bean.AddressBean;
@@ -115,9 +117,12 @@ public class PositionListAdapter extends BaseAdapter implements AdapterView.OnIt
         TextView tvEdit;
         @BindView(R.id.tv_tips)
         TextView tvTips;
+        @BindView(R.id.tv_time_title)
+        TextView tvTimeTitle;
 
         PositionBean mBean;
 
+
         public ResumeViewHolder(Context mContext) {
             super(mContext);
         }
@@ -135,15 +140,12 @@ public class PositionListAdapter extends BaseAdapter implements AdapterView.OnIt
                     tvDate.setText("最后更新于:" + DateUtils.getFormatStrToStr(positionBean.getUpdateTime(), "MM月dd日"));
                 else
                     tvDate.setText("");
+                //岗位名称
                 if (!TextUtils.isEmpty(positionBean.getPositionName()))
                     tvPositionName.setText(positionBean.getPositionName());
                 else
                     tvPositionName.setText("");
-                if (!TextUtils.isEmpty(positionBean.getAuthenticationStatus()))//TODO 接口调整后处理
-                    tvState.setVisibility(View.VISIBLE);
-                else
-                    tvState.setVisibility(View.GONE);
-
+                //地址
                 AddressBean addressBean = bean.getAddress() == null || bean.getAddress().isEmpty() ? null : bean.getAddress().get(0);
                 String addressStr = "";
                 if (addressBean != null) {
@@ -158,6 +160,69 @@ public class PositionListAdapter extends BaseAdapter implements AdapterView.OnIt
                     addressStr = "全国";
                 }
                 tvAddress.setText(addressStr);
+                //工作时间
+                if (AppConstant.FULL_TIME_JOB == positionBean.getPositionCategory()) {//全职
+                    tvTimeTitle.setText(R.string.title_recruiting_numbers);
+                    tvTime.setText((TextUtils.isEmpty(positionBean.getRecruitNumber()) ? "若干" : positionBean.getRecruitNumber()) + "人 (全职工作)");
+                } else {
+                    tvTimeTitle.setText(R.string.title_work_time);
+                    if (!TextUtils.isEmpty(positionBean.getWorkDate())) {
+                        String[] date = positionBean.getWorkDate().split(",");
+                        if (date.length > 1) {
+                            tvTime.setText(DateUtils.getFormatStrToStr2(date[0], "MM月dd日") + " 至 " + DateUtils.getFormatStrToStr2(date[date.length - 1], "MM月dd日") + " (兼职工作)");
+                        } else {
+                            tvTime.setText(DateUtils.getFormatStrToStr2(date[0], "MM月dd日") + " (兼职工作)");
+                        }
+                    }
+                }
+                /**
+                 * 是否暂停
+                 */
+                if (positionBean.getIsPause() == 1) {
+                    Drawable drawableLeft = mContext.getResources().getDrawable(
+                            R.drawable.drawable_position_start);
+                    tvPause.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,
+                            null, null, null);
+                    tvPause.setText(R.string.start);
+                } else {
+                    Drawable drawableLeft = mContext.getResources().getDrawable(
+                            R.drawable.drawable_position_pause);
+                    tvPause.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,
+                            null, null, null);
+                    tvPause.setText(R.string.pause);
+                }
+                /**
+                 * 是否结束
+                 */
+                if (positionBean.getIsOn() == 0) {
+                    tvRefresh.setEnabled(false);
+                    tvPause.setEnabled(false);
+                    tvOver.setEnabled(false);
+                } else {
+                    tvRefresh.setEnabled(true);
+                    tvPause.setEnabled(true);
+                    tvOver.setEnabled(true);
+                }
+                /**
+                 * 审核状态
+                 */
+                if (positionBean.getAuthenticationStatus() == 1) {
+                    tvState.setVisibility(View.VISIBLE);
+                    Drawable drawableLeft = mContext.getResources().getDrawable(
+                            R.mipmap.ic_position_review);
+                    tvState.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,
+                            null, null, null);
+                    tvState.setText(R.string.in_the_review);
+                } else if (positionBean.getAuthenticationStatus() == 2) {
+                    tvState.setVisibility(View.VISIBLE);
+                    Drawable drawableLeft = mContext.getResources().getDrawable(
+                            R.mipmap.ic_position_review_no);
+                    tvState.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,
+                            null, null, null);
+                    tvState.setText(R.string.review_no);
+                } else {
+                    tvState.setVisibility(View.GONE);
+                }
             }
         }
 

+ 0 - 3
app/src/main/java/com/webrain/dailypay/ui/adapter/viewpager/FragmentPagePositionAdapter.java

@@ -28,11 +28,8 @@ public class FragmentPagePositionAdapter extends FragmentStatePagerAdapter {
         //新建一个Fragment来展示ViewPager item的内容,并传递参数
         BaseFragment fragment = null;
         if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.review_the_rejected))) {
-            fragment = new PositionListFragment(AppConstant.POSITION_LIST_BACK);
         } else if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.all_position))) {
-            fragment = new PositionListFragment(AppConstant.POSITION_LIST_ALL);
         } else if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.in_the_recruitment))) {
-            fragment = new PositionListFragment(AppConstant.POSITION_LIST_IN);
         }
         return fragment;
     }

+ 2 - 1
app/src/main/java/com/webrain/dailypay/ui/adapter/viewpager/FragmentPageTabAdapter.java

@@ -14,6 +14,7 @@ import com.webrain.dailypay.ui.fragment.MeFragment;
 import com.webrain.dailypay.ui.fragment.MsgFragment;
 import com.webrain.dailypay.ui.fragment.PositionFragment;
 import com.webrain.dailypay.ui.fragment.ResumeFragment;
+import com.webrain.dailypay.ui.fragment.position.PositionListFragment;
 
 import java.util.List;
 
@@ -34,7 +35,7 @@ public class FragmentPageTabAdapter extends FragmentStatePagerAdapter {
         if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.tab_resume))) {
             fragment = new ResumeFragment();
         } else if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.tab_position))) {
-            fragment = new PositionFragment();
+            fragment = new PositionListFragment();
         } else if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.tab_msg))) {
             fragment = new MsgFragment();
         } else if (TextUtils.equals(listTitle.get(position).getHint(), mContext.getString(R.string.tab_me))) {

+ 138 - 24
app/src/main/java/com/webrain/dailypay/ui/fragment/position/PositionListFragment.java

@@ -4,27 +4,41 @@ import android.annotation.SuppressLint;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AbsListView;
+import android.widget.LinearLayout;
 import android.widget.ListView;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
 
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
+import com.webrain.baselibrary.AppConstant;
+import com.webrain.baselibrary.EventConstant;
+import com.webrain.baselibrary.utils.PxUtils;
 import com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout;
 import com.webrain.dailypay.R;
 import com.webrain.dailypay.bean.PositionBean;
 import com.webrain.dailypay.bean.PositionListBean;
+import com.webrain.dailypay.event.StringEvent;
 import com.webrain.dailypay.ui.adapter.listview.PositionListAdapter;
 import com.webrain.dailypay.ui.base.BaseFragment;
 import com.webrain.dailypay.ui.mvp.contacts.PositionListFragmentContacts;
 import com.webrain.dailypay.ui.mvp.presenter.PositionListFragmentPresenter;
 import com.webrain.dailypay.ui.viewholder.FooterViewHolder;
+import com.webrain.dailypay.ui.viewholder.RealAuthenticationHolder;
+import com.webrain.dailypay.ui.widget.popwindow.PositionStatePopWindow;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
 
 import java.util.List;
 
 import butterknife.BindView;
+import butterknife.OnClick;
 
 @SuppressLint("ValidFragment")
 public class PositionListFragment extends BaseFragment<PositionListFragmentPresenter> implements PositionListFragmentContacts.IPositionListFragmentView {
@@ -32,14 +46,25 @@ public class PositionListFragment extends BaseFragment<PositionListFragmentPrese
     ListView lvPosition;
     @BindView(R.id.prl_refresh)
     ProgressRefreshLayout prlRefresh;
+    @BindView(R.id.tb_all)
+    RadioButton tbAll;
+    @BindView(R.id.tb_start)
+    RadioButton tbStart;
+    @BindView(R.id.tb_pause)
+    RadioButton tbPause;
+    @BindView(R.id.tb_over)
+    RadioButton tbOver;
+    @BindView(R.id.tb_state)
+    RadioButton tbState;
+    @BindView(R.id.rg_state)
+    RadioGroup rgState;
+    @BindView(R.id.ll_authentication)
+    LinearLayout llAuthentication;
 
     private FooterViewHolder mFooterHolder;
     private PositionListAdapter mAdapter;
-    private int state;
-
-    public PositionListFragment(int state) {
-        this.state = state;
-    }
+    private PositionStatePopWindow mPopWindow;
+    private RealAuthenticationHolder mHolder;
 
     @Override
     protected int getLayoutId() {
@@ -52,8 +77,8 @@ public class PositionListFragment extends BaseFragment<PositionListFragmentPrese
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = super.onCreateView(inflater, container, savedInstanceState);
         setLoadingVisible(true);
+        rgState.setOnCheckedChangeListener(onCheckedChangeListener);
         prlRefresh.setOnRefreshListener(onRefreshListener);
-        mvpPresenter.setState(state);
         mvpPresenter.init();
         return view;
     }
@@ -64,11 +89,6 @@ public class PositionListFragment extends BaseFragment<PositionListFragmentPrese
     }
 
     @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-    }
-
-    @Override
     public void onPositionList(List<PositionListBean> mData, boolean isLastPage) {
         setLoadingVisible(false);
         setErrorVisible(false);
@@ -99,6 +119,90 @@ public class PositionListFragment extends BaseFragment<PositionListFragmentPrese
     }
 
     /**
+     * 当列表数据更新进行刷新
+     */
+    @Override
+    public void onRefresh() {
+        if (mAdapter != null)
+            mAdapter.notifyDataSetChanged();
+    }
+
+    @OnClick(R.id.tb_state)
+    public void onClick(View view) {
+        if (mPopWindow == null) {
+            mPopWindow = new PositionStatePopWindow(mContext, tbState.getMeasuredWidth());
+            mPopWindow.setOnStateCheckListener(onStateCheckListener);
+        }
+        mPopWindow.showAsDropDown(rgState, Gravity.RIGHT, -PxUtils.dip2px(4), -PxUtils.dip2px(31));
+    }
+
+    /**
+     * 当尚未成功认证
+     */
+    @Override
+    public void onNoRealAuthentication(int state) {
+        setLoadingVisible(false);
+        if (mHolder == null) {
+            mHolder = new RealAuthenticationHolder(mContext);
+            llAuthentication.addView(mHolder.getView());
+            llAuthentication.setVisibility(View.VISIBLE);
+        }
+        if (state == AppConstant.APPROVE_NONE || state == AppConstant.APPROVE_FAIL) {
+            mHolder.initAuthenticationState();
+        } else {
+            mHolder.initGoingAuthenticationState();
+        }
+    }
+
+    @Subscribe
+    public void onEvent(StringEvent event) {
+        if (event.getData().equals(EventConstant.EVENT_USER_AUTHENTICATION_STATUS_CHANGE)) {
+            mvpPresenter.init();
+        }
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        EventBus.getDefault().unregister(this);
+    }
+
+    @Override
+    public boolean isShowActionBar() {
+        return true;
+    }
+
+    @Override
+    public boolean isShowStatusTitle() {
+        return true;
+    }
+
+    /**
+     * 选择回调
+     */
+    RadioGroup.OnCheckedChangeListener onCheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
+        @Override
+        public void onCheckedChanged(RadioGroup group, int checkedId) {
+            switch (checkedId) {
+                case R.id.tb_all:
+                    mvpPresenter.changeAllState();
+                    break;
+                case R.id.tb_start:
+                    mvpPresenter.changeStartState();
+                    break;
+                case R.id.tb_pause:
+                    mvpPresenter.changePauseState();
+                    break;
+                case R.id.tb_over:
+                    mvpPresenter.changeOverState();
+                    break;
+                case R.id.tb_state:
+                    break;
+            }
+        }
+    };
+
+    /**
      * 按钮点击回调
      */
     PositionListAdapter.OnMenuClickListener onMenuClickListener = new PositionListAdapter.OnMenuClickListener() {
@@ -109,31 +213,41 @@ public class PositionListFragment extends BaseFragment<PositionListFragmentPrese
 
         @Override
         public void onPause(PositionBean bean) {
-
+            mvpPresenter.doPause(bean);
         }
 
         @Override
         public void onEnd(PositionBean bean) {
-
+            mvpPresenter.doEnd(bean);
         }
 
         @Override
         public void onEdit(PositionBean bean) {
-
         }
     };
+    /**
+     * 审核状态回调
+     */
+    PositionStatePopWindow.OnStateCheckListener onStateCheckListener = new PositionStatePopWindow.OnStateCheckListener() {
+        @Override
+        public void onAllStats() {
+            tbState.setText(R.string.position_audit_all);
+            mvpPresenter.changeAllState();
+        }
+
+        @Override
+        public void onInStats() {
+            tbState.setText(R.string.position_auditing);
+            mvpPresenter.changeInState();
+        }
 
+        @Override
+        public void onNoStats() {
+            tbState.setText(R.string.position_audit_no);
+            mvpPresenter.changeNoState();
+        }
+    };
 
-//    /**
-//     * 错误页面刷新按钮
-//     */
-//    View.OnClickListener onRefreshClickListener = new View.OnClickListener() {
-//        @Override
-//        public void onClick(View v) {
-//            setLoadingVisible(true);
-//            mvpPresenter.getHttpPositionList(true, false, true);
-//        }
-//    };
     /**
      * 监听下拉刷新触发
      */

+ 28 - 4
app/src/main/java/com/webrain/dailypay/ui/mvp/contacts/PositionListFragmentContacts.java

@@ -14,13 +14,14 @@ public class PositionListFragmentContacts {
 
         void onError();
 
+        void onRefresh();
+
+        void onNoRealAuthentication(int state);
     }
 
     public interface IPositionListFragmentPresenter extends IPresenter {
         void getHttpPositionList(boolean isRefresh, boolean isShowDialog, boolean isInit);
 
-        void setState(int state);
-
         void doRefresh(PositionBean bean);
 
         void doPause(PositionBean bean);
@@ -28,6 +29,19 @@ public class PositionListFragmentContacts {
         void doEnd(PositionBean bean);
 
         void init();
+
+        void changeAllState();
+
+        void changeStartState();
+
+        void changePauseState();
+
+        void changeOverState();
+
+        void changeInState();
+
+        void changeNoState();
+
     }
 
     public interface IPositionListFragmentModel {
@@ -39,13 +53,23 @@ public class PositionListFragmentContacts {
 
         void refreshPageNum();
 
-        void setState(int state);
-
         void doRefresh(PositionBean bean, MvpDataCallBack<Boolean> callBack);
 
         void doPause(PositionBean bean, MvpDataCallBack<Boolean> callBack);
 
         void doEnd(PositionBean bean, MvpDataCallBack<Boolean> callBack);
 
+        void changeAllState();
+
+        void changeStartState();
+
+        void changePauseState();
+
+        void changeOverState();
+
+        void changeInState();
+
+        void changeNoState();
+
     }
 }

+ 132 - 55
app/src/main/java/com/webrain/dailypay/ui/mvp/model/PositionListFragmentModel.java

@@ -3,10 +3,14 @@ package com.webrain.dailypay.ui.mvp.model;
 import android.content.Context;
 
 import com.webrain.baselibrary.AppConstant;
+import com.webrain.baselibrary.utils.DateUtils;
+import com.webrain.dailypay.AppCacheManager;
 import com.webrain.dailypay.bean.PositionBean;
 import com.webrain.dailypay.bean.PositionListBean;
 import com.webrain.dailypay.bean.api.ApiNormalBean;
 import com.webrain.dailypay.bean.api.ApiPositionListBean;
+import com.webrain.dailypay.bean.api.ApiPositionPauseBean;
+import com.webrain.dailypay.bean.api.ApiPositionRefreshBean;
 import com.webrain.dailypay.callback.MvpDataCallBack;
 import com.webrain.dailypay.http.ApiObserver;
 import com.webrain.dailypay.http.RetrofitHttpParams;
@@ -24,7 +28,9 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
     private int pageNum = 0;//第一页为1开始 初始为0
     private boolean isLoading = false;//是否加载中
     private boolean isLastPage;//是否已经最后一页
-    private int state;//状态
+    private int authenticationStatus = -1;//(1:等待认证 2:未通过 3:已认证)
+    private int isOn = -1;//(0:下架 1:上架)
+    private int isPause = -1;//(0:不是 1:是)
 
 
     public PositionListFragmentModel(Context mContext) {
@@ -42,48 +48,54 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
      * @param callBack
      */
     private void httpPositionList(final MvpDataCallBack<List<PositionListBean>> callBack, boolean isShowDialog, final boolean isInit) {
-        isLoading = true;
-        RetrofitHttpParams params = new RetrofitHttpParams(mContext);
-        params.put("pageNo", pageNum + 1);
-        params.put("pageSize", 10);
-        if (state == AppConstant.POSITION_LIST_BACK) {
-            params.put("authenticationStatus", 2);
-        } else if (state == AppConstant.POSITION_LIST_IN) {
-            params.put("isPause", 0);
-        }
-        new PositionSubscribe(mContext).requestGetPositions(params.getRequestParams(), new ApiObserver<ApiPositionListBean>(mContext, isShowDialog, false) {
-            @Override
-            public void onSuccess(ApiPositionListBean data) {
-                if (data != null) {
-                    pageNum = data.getPageNum();
-                    isLastPage = data.isLastPage();
-                    if (pageNum == 1 || pageNum == 0) {
-                        mPositionData.clear();
-                    }
-                    if (data.getPositions() != null && !data.getPositions().isEmpty()) {
-                        mPositionData.addAll(data.getPositions());
+//        if (AppCacheManager.getInstance().isLogin() && AppCacheManager.getInstance().getLoginModel().getAuthenticationStatus() == AppConstant.APPROVE_SUCCESS) {//身份认证成功后才可
+            isLoading = true;
+            RetrofitHttpParams params = new RetrofitHttpParams(mContext);
+            params.put("pageNo", pageNum + 1);
+            params.put("pageSize", 10);
+            if (authenticationStatus != -1) {
+                params.put("authenticationStatus", authenticationStatus);
+            }
+            if (isPause != -1) {
+                params.put("isPause", isPause);
+            }
+            if (isOn != -1) {
+                params.put("isOn", isOn);
+            }
+            new PositionSubscribe(mContext).requestGetPositions(params.getRequestParams(), new ApiObserver<ApiPositionListBean>(mContext, isShowDialog, false) {
+                @Override
+                public void onSuccess(ApiPositionListBean data) {
+                    if (data != null) {
+                        pageNum = data.getPageNum();
+                        isLastPage = data.isLastPage();
+                        if (pageNum == 1 || pageNum == 0) {
+                            mPositionData.clear();
+                        }
+                        if (data.getPositions() != null && !data.getPositions().isEmpty()) {
+                            mPositionData.addAll(data.getPositions());
+                        }
                     }
                 }
-            }
 
-            @Override
-            public void onError(ApiPositionListBean data, ApiException exception) {
-                super.onError(data, exception);
-                if (isInit)
-                    isError = true;
-            }
+                @Override
+                public void onError(ApiPositionListBean data, ApiException exception) {
+                    super.onError(data, exception);
+                    if (isInit)
+                        isError = true;
+                }
 
-            @Override
-            public void onFinish() {
-                callBack.onData(mPositionData);
-                if (isError) {
-                    callBack.onError();
+                @Override
+                public void onFinish() {
+                    callBack.onData(mPositionData);
+                    if (isError) {
+                        callBack.onError();
+                    }
+                    isError = false;
+                    isLoading = false;
                 }
-                isError = false;
-                isLoading = false;
-            }
 
-        });
+            });
+//        }
     }
 
     /**
@@ -114,15 +126,6 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
         pageNum = 0;
     }
 
-    /**
-     * 设置列表状态
-     *
-     * @param state
-     */
-    @Override
-    public void setState(int state) {
-        this.state = state;
-    }
 
     /**
      * 刷新
@@ -130,13 +133,17 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
      * @param bean
      */
     @Override
-    public void doRefresh(PositionBean bean, final MvpDataCallBack<Boolean> callBack) {
+    public void doRefresh(final PositionBean bean, final MvpDataCallBack<Boolean> callBack) {
         RetrofitHttpParams params = new RetrofitHttpParams(mContext);
         params.put("id", bean.getId());
-        new PositionSubscribe(mContext).requestUpdateTime(params.getRequestParams(), new ApiObserver<ApiNormalBean>(mContext, true, false) {
+        new PositionSubscribe(mContext).requestUpdateTime(params.getRequestParams(), new ApiObserver<ApiPositionRefreshBean>(mContext, true, false) {
             @Override
-            public void onSuccess(ApiNormalBean data) {
-                callBack.onData(true);
+            public void onSuccess(ApiPositionRefreshBean data) {
+                if (data != null) {
+                    String date = DateUtils.getFormatLongToStr(data.getDate(), "yyyy-MM-dd HH:mm:ss");
+                    bean.setUpdateTime(date);
+                    callBack.onData(true);
+                }
             }
 
 
@@ -153,12 +160,19 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
      * @param bean
      */
     @Override
-    public void doPause(PositionBean bean, MvpDataCallBack<Boolean> callBack) {
+    public void doPause(final PositionBean bean, final MvpDataCallBack<Boolean> callBack) {
         RetrofitHttpParams params = new RetrofitHttpParams(mContext);
         params.put("id", bean.getId());
-        new PositionSubscribe(mContext).requestUpdateTime(params.getRequestParams(), new ApiObserver<ApiNormalBean>(mContext, true, false) {
+        params.put("isPause", bean.getIsPause() == 0 ? 1 : 0);
+        new PositionSubscribe(mContext).requestPausePosition(params.getRequestParams(), new ApiObserver<ApiPositionPauseBean>(mContext, true, false) {
             @Override
-            public void onSuccess(ApiNormalBean data) {
+            public void onSuccess(ApiPositionPauseBean data) {
+                if (data != null) {
+                    if ("1".equals(data.getIsPause()) || "0".equals(data.getIsPause())) {
+                        bean.setIsPause(Integer.parseInt(data.getIsPause()));
+                        callBack.onData(true);
+                    }
+                }
             }
 
 
@@ -175,12 +189,15 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
      * @param bean
      */
     @Override
-    public void doEnd(PositionBean bean, MvpDataCallBack<Boolean> callBack) {
+    public void doEnd(final PositionBean bean, final MvpDataCallBack<Boolean> callBack) {
         RetrofitHttpParams params = new RetrofitHttpParams(mContext);
         params.put("id", bean.getId());
-        new PositionSubscribe(mContext).requestUpdateTime(params.getRequestParams(), new ApiObserver<ApiNormalBean>(mContext, true, false) {
+        params.put("isOn", "0");
+        new PositionSubscribe(mContext).requestOverPosition(params.getRequestParams(), new ApiObserver<ApiNormalBean>(mContext, true, false) {
             @Override
             public void onSuccess(ApiNormalBean data) {
+                bean.setIsOn(0);
+                callBack.onData(true);
             }
 
 
@@ -190,4 +207,64 @@ public class PositionListFragmentModel extends BaseModel implements PositionList
 
         });
     }
+
+    /**
+     * 查看全部状态
+     */
+    @Override
+    public void changeAllState() {
+        isOn = -1;
+        isPause = -1;
+        authenticationStatus = -1;
+    }
+
+    /**
+     * 查看正在招聘状态
+     */
+    @Override
+    public void changeStartState() {
+        isOn = 1;
+        isPause = 0;
+        authenticationStatus = 3;
+    }
+
+    /**
+     * 查看暂停招聘状态
+     */
+    @Override
+    public void changePauseState() {
+        isOn = -1;
+        isPause = 1;
+        authenticationStatus = -1;
+    }
+
+    /**
+     * 查看结束状态
+     */
+    @Override
+    public void changeOverState() {
+        isOn = 0;
+        isPause = -1;
+        authenticationStatus = -1;
+    }
+
+    /**
+     * 审核中
+     */
+    @Override
+    public void changeInState() {
+        isOn = -1;
+        isPause = -1;
+        authenticationStatus = 1;
+    }
+
+    /**
+     * 审核驳回
+     */
+    @Override
+    public void changeNoState() {
+        isOn = -1;
+        isPause = -1;
+        authenticationStatus = 2;
+    }
 }

+ 78 - 14
app/src/main/java/com/webrain/dailypay/ui/mvp/presenter/PositionListFragmentPresenter.java

@@ -1,6 +1,8 @@
 package com.webrain.dailypay.ui.mvp.presenter;
 
+import com.webrain.baselibrary.AppConstant;
 import com.webrain.baselibrary.utils.ToastUtils;
+import com.webrain.dailypay.AppCacheManager;
 import com.webrain.dailypay.R;
 import com.webrain.dailypay.bean.PositionBean;
 import com.webrain.dailypay.bean.PositionListBean;
@@ -50,17 +52,6 @@ public class PositionListFragmentPresenter extends BasePresenter<PositionListFra
     }
 
     /**
-     * 设置列表状态
-     *
-     * @param state
-     */
-    @Override
-    public void setState(int state) {
-        if (isViewAttach())
-            mPositionListFragmentModel.setState(state);
-    }
-
-    /**
      * 刷新岗位
      *
      * @param bean
@@ -71,6 +62,7 @@ public class PositionListFragmentPresenter extends BasePresenter<PositionListFra
             mPositionListFragmentModel.doRefresh(bean, new MvpDataCallBack<Boolean>() {
                 @Override
                 public void onData(Boolean data) {
+                    mvpReference.get().onRefresh();
                     ToastUtils.show(mvpReference.get().getContext(), R.string.toast_refresh);
                 }
             });
@@ -87,7 +79,7 @@ public class PositionListFragmentPresenter extends BasePresenter<PositionListFra
             mPositionListFragmentModel.doPause(bean, new MvpDataCallBack<Boolean>() {
                 @Override
                 public void onData(Boolean data) {
-
+                    mvpReference.get().onRefresh();
                 }
             });
     }
@@ -103,7 +95,7 @@ public class PositionListFragmentPresenter extends BasePresenter<PositionListFra
             mPositionListFragmentModel.doEnd(bean, new MvpDataCallBack<Boolean>() {
                 @Override
                 public void onData(Boolean data) {
-
+                    mvpReference.get().onRefresh();
                 }
             });
     }
@@ -114,6 +106,78 @@ public class PositionListFragmentPresenter extends BasePresenter<PositionListFra
      */
     @Override
     public void init() {
-        getHttpPositionList(false, false, true);
+//        if (AppCacheManager.getInstance().isLogin()) {
+//            if (AppCacheManager.getInstance().getLoginModel().getAuthenticationStatus() != AppConstant.APPROVE_SUCCESS) {
+//                mvpReference.get().onNoRealAuthentication(AppCacheManager.getInstance().getLoginModel().getAuthenticationStatus());
+//            } else {
+                getHttpPositionList(false, false, true);
+//            }
+//        }
+    }
+
+    /**
+     * 查看全部状态
+     */
+    @Override
+    public void changeAllState() {
+        if (isViewAttach()) {
+            mPositionListFragmentModel.changeAllState();
+            getHttpPositionList(true, true, false);
+        }
+    }
+
+    /**
+     * 查看正在招聘状态
+     */
+    @Override
+    public void changeStartState() {
+        if (isViewAttach()) {
+            mPositionListFragmentModel.changeStartState();
+            getHttpPositionList(true, true, false);
+        }
+    }
+
+    /**
+     * 查看暂停招聘状态
+     */
+    @Override
+    public void changePauseState() {
+        if (isViewAttach()) {
+            mPositionListFragmentModel.changePauseState();
+            getHttpPositionList(true, true, false);
+        }
+    }
+
+    /**
+     * 查看结束状态
+     */
+    @Override
+    public void changeOverState() {
+        if (isViewAttach()) {
+            mPositionListFragmentModel.changeOverState();
+            getHttpPositionList(true, true, false);
+        }
+    }
+
+    /**
+     * 审核中
+     */
+    @Override
+    public void changeInState() {
+        if (isViewAttach()) {
+            mPositionListFragmentModel.changeInState();
+            getHttpPositionList(true, true, false);
+        }
+    }
+
+    /**
+     * 审核驳回
+     */
+    @Override
+    public void changeNoState() {
+        if (isViewAttach()) {
+            mPositionListFragmentModel.changeNoState();
+            getHttpPositionList(true, true, false);
+        }
     }
 }

+ 117 - 0
app/src/main/java/com/webrain/dailypay/ui/widget/popwindow/PositionStatePopWindow.java

@@ -0,0 +1,117 @@
+package com.webrain.dailypay.ui.widget.popwindow;
+
+import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.webrain.dailypay.R;
+import com.webrain.dailypay.ui.base.BaseViewHolder;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class PositionStatePopWindow {
+    private Context mContext;
+    private ViewHolder mViewHolder;
+    private PopupWindow mTypePop;
+    private OnStateCheckListener onStateCheckListener;
+    private int state;//0 全部 1 正在 2 驳回
+
+    public PositionStatePopWindow(Context mContext, int width) {
+        this.mContext = mContext;
+        mViewHolder = new ViewHolder(mContext);
+        mTypePop = new PopupWindow(mViewHolder.getView(), width, ViewGroup.LayoutParams.WRAP_CONTENT, false);
+        mTypePop.setBackgroundDrawable(new BitmapDrawable());
+        mTypePop.setFocusable(true);
+        mTypePop.setOutsideTouchable(true);
+        mTypePop.setOnDismissListener(onDismissListener);
+    }
+
+    public void showAsDropDown(View parent, int gravity, int x, int y) {
+        if (mTypePop != null) {
+            if (mTypePop.isShowing()) {
+                mTypePop.dismiss();
+            } else {
+                mTypePop.showAsDropDown(parent, x, y, gravity);
+            }
+        }
+    }
+
+    public void setOnStateCheckListener(OnStateCheckListener onStateCheckListener) {
+        this.onStateCheckListener = onStateCheckListener;
+    }
+
+    public void dismiss() {
+        if (mTypePop != null)
+            mTypePop.dismiss();
+    }
+
+    public boolean isShowing() {
+        if (mTypePop != null)
+            return mTypePop.isShowing();
+        return false;
+    }
+
+    PopupWindow.OnDismissListener onDismissListener = new PopupWindow.OnDismissListener() {
+        @Override
+        public void onDismiss() {
+            if (onStateCheckListener != null) {
+                if (state == 0)
+                    onStateCheckListener.onAllStats();
+                else if (state == 1)
+                    onStateCheckListener.onInStats();
+                else if (state == 2)
+                    onStateCheckListener.onNoStats();
+            }
+        }
+    };
+
+
+    class ViewHolder extends BaseViewHolder {
+
+        @BindView(R.id.tb_state)
+        TextView tbState;
+        @BindView(R.id.tb_all)
+        TextView tbAll;
+        @BindView(R.id.tb_in)
+        TextView tbIn;
+        @BindView(R.id.tb_no)
+        TextView tbNo;
+
+        public ViewHolder(Context mContext) {
+            super(mContext);
+        }
+
+        @Override
+        public int bindViewLayoutId() {
+            return R.layout.pop_position_state;
+        }
+
+        @OnClick({R.id.tb_all, R.id.tb_in, R.id.tb_no})
+        void onClick(View view) {
+            switch (view.getId()) {
+                case R.id.tb_all:
+                    state = 0;
+                    break;
+                case R.id.tb_in:
+                    state = 1;
+                    break;
+                case R.id.tb_no:
+                    state = 2;
+                    break;
+            }
+            dismiss();
+        }
+    }
+
+    public interface OnStateCheckListener {
+        void onAllStats();
+
+        void onInStats();
+
+        void onNoStats();
+    }
+}

+ 6 - 0
app/src/main/res/drawable/color_black_gray_tv.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/text_gray" android:state_enabled="false" />
+    <item android:color="@color/text_black" /> <!-- default -->
+
+</selector>

+ 8 - 0
app/src/main/res/drawable/corners_purple_radio_group.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/corners_purple_btn_bg" android:state_pressed="true" />
+    <item android:drawable="@drawable/corners_purple_btn_bg" android:state_checked="true" />
+    <item android:drawable="@drawable/corners_purple_btn_bg" android:state_selected="true" />
+    <item android:drawable="@color/transparent" android:state_enabled="false" />
+    <item android:drawable="@color/transparent" />
+</selector>

+ 6 - 0
app/src/main/res/drawable/drawable_position_edit.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/ic_position_edit_n" android:state_enabled="false" />
+    <item android:drawable="@mipmap/ic_position_edit" /> <!-- default -->
+
+</selector>

+ 6 - 0
app/src/main/res/drawable/drawable_position_over.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/ic_position_over_n" android:state_enabled="false" />
+    <item android:drawable="@mipmap/ic_position_over" /> <!-- default -->
+
+</selector>

+ 6 - 0
app/src/main/res/drawable/drawable_position_pause.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/ic_position_pause_n" android:state_enabled="false" />
+    <item android:drawable="@mipmap/ic_position_pause" /> <!-- default -->
+
+</selector>

+ 6 - 0
app/src/main/res/drawable/drawable_position_refresh.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/ic_position_refresh_n" android:state_enabled="false" />
+    <item android:drawable="@mipmap/ic_position_refresh" /> <!-- default -->
+
+</selector>

+ 6 - 0
app/src/main/res/drawable/drawable_position_start.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/ic_position_start_n" android:state_enabled="false" />
+    <item android:drawable="@mipmap/ic_position_start" /> <!-- default -->
+
+</selector>

+ 1 - 0
app/src/main/res/layout/fragment_position.xml

@@ -11,6 +11,7 @@
         android:layout_height="35dp"
         android:layout_marginLeft="15dp"
         android:layout_marginTop="13dp"
+        android:visibility="gone"
         android:layout_marginRight="15dp"
         app:cardCornerRadius="17dp"
         app:cardElevation="5dp">

+ 94 - 0
app/src/main/res/layout/fragment_position_list.xml

@@ -1,9 +1,94 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/white">
 
+    <android.support.v7.widget.CardView
+        android:layout_width="match_parent"
+        android:layout_height="35dp"
+        android:layout_marginLeft="15dp"
+        android:layout_marginTop="13dp"
+        android:layout_marginRight="15dp"
+        app:cardCornerRadius="17dp"
+        app:cardElevation="5dp">
+
+        <RadioGroup
+            android:id="@+id/rg_state"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal"
+            android:padding="4dp">
+
+            <RadioButton
+                android:id="@+id/tb_all"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="45"
+                android:background="@drawable/corners_purple_radio_group"
+                android:button="@null"
+                android:checked="true"
+                android:gravity="center"
+                android:text="@string/position_all"
+                android:textColor="@drawable/color_gray_white_tv"
+                android:textSize="@dimen/px36_12sp" />
+
+            <RadioButton
+                android:id="@+id/tb_start"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="67"
+                android:background="@drawable/corners_purple_radio_group"
+                android:button="@null"
+                android:gravity="center"
+                android:text="@string/position_recruiting"
+                android:textColor="@drawable/color_gray_white_tv"
+                android:textSize="@dimen/px36_12sp" />
+
+            <RadioButton
+                android:id="@+id/tb_pause"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="67"
+                android:background="@drawable/corners_purple_radio_group"
+                android:button="@null"
+                android:gravity="center"
+                android:text="@string/position_recruitment_freeze"
+                android:textColor="@drawable/color_gray_white_tv"
+                android:textSize="@dimen/px36_12sp" />
+
+            <RadioButton
+                android:id="@+id/tb_over"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="67"
+                android:background="@drawable/corners_purple_radio_group"
+                android:button="@null"
+                android:gravity="center"
+                android:text="@string/position_recruitment_over"
+                android:textColor="@drawable/color_gray_white_tv"
+                android:textSize="@dimen/px36_12sp" />
+
+            <RadioButton
+                android:id="@+id/tb_state"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:background="@drawable/corners_purple_radio_group"
+                android:button="@null"
+                android:drawableLeft="@mipmap/ic_arrow_gray_right"
+                android:drawablePadding="4dp"
+                android:gravity="center"
+                android:paddingLeft="11dp"
+                android:paddingRight="11dp"
+                android:text="@string/position_audit_status"
+                android:textColor="@drawable/color_gray_white_tv"
+                android:textSize="@dimen/px36_12sp" />
+
+        </RadioGroup>
+
+    </android.support.v7.widget.CardView>
+
     <com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout
         android:id="@+id/prl_refresh"
         android:layout_width="match_parent"
@@ -17,4 +102,13 @@
             android:dividerHeight="0px" />
     </com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout>
 
+    <LinearLayout
+        android:id="@+id/ll_authentication"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:clickable="true"
+        android:orientation="vertical"
+        android:visibility="gone" />
+
 </RelativeLayout>

+ 8 - 8
app/src/main/res/layout/item_listview_position.xml

@@ -141,11 +141,11 @@
                             android:id="@+id/tv_refresh"
                             android:layout_width="wrap_content"
                             android:layout_height="23dp"
-                            android:drawableLeft="@mipmap/ic_position_refresh"
+                            android:drawableLeft="@drawable/drawable_position_refresh"
                             android:drawablePadding="6dp"
                             android:gravity="center_vertical"
                             android:text="@string/refresh"
-                            android:textColor="@color/text_black"
+                            android:textColor="@drawable/color_black_gray_tv"
                             android:textSize="@dimen/px33_11sp" />
 
                         <View
@@ -157,11 +157,11 @@
                             android:id="@+id/tv_pause"
                             android:layout_width="wrap_content"
                             android:layout_height="23dp"
-                            android:drawableLeft="@mipmap/ic_position_pause"
+                            android:drawableLeft="@drawable/drawable_position_pause"
                             android:drawablePadding="6dp"
                             android:gravity="center_vertical"
                             android:text="@string/pause"
-                            android:textColor="@color/text_black"
+                            android:textColor="@drawable/color_black_gray_tv"
                             android:textSize="@dimen/px33_11sp" />
 
                         <View
@@ -173,11 +173,11 @@
                             android:id="@+id/tv_over"
                             android:layout_width="wrap_content"
                             android:layout_height="23dp"
-                            android:drawableLeft="@mipmap/ic_position_over"
+                            android:drawableLeft="@drawable/drawable_position_over"
                             android:drawablePadding="6dp"
                             android:gravity="center_vertical"
                             android:text="@string/over"
-                            android:textColor="@color/text_black"
+                            android:textColor="@drawable/color_black_gray_tv"
                             android:textSize="@dimen/px33_11sp" />
 
                         <View
@@ -189,11 +189,11 @@
                             android:id="@+id/tv_edit"
                             android:layout_width="wrap_content"
                             android:layout_height="23dp"
-                            android:drawableLeft="@mipmap/ic_position_edit"
+                            android:drawableLeft="@drawable/drawable_position_edit"
                             android:drawablePadding="6dp"
                             android:gravity="center_vertical"
                             android:text="@string/edit"
-                            android:textColor="@color/text_black"
+                            android:textColor="@drawable/color_black_gray_tv"
                             android:textSize="@dimen/px33_11sp" />
                     </LinearLayout>
 

+ 65 - 0
app/src/main/res/layout/pop_position_state.xml

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:background="@drawable/corners_purple_button_type"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/tb_state"
+        android:layout_width="wrap_content"
+        android:layout_height="25dp"
+        android:layout_gravity="center_horizontal"
+        android:background="@drawable/corners_purple_radio_group"
+        android:button="@null"
+        android:drawableLeft="@mipmap/ic_arrow_white_down"
+        android:drawablePadding="4dp"
+        android:gravity="center"
+        android:paddingTop="2dp"
+        android:singleLine="true"
+        android:text="@string/position_audit_status"
+        android:textColor="@color/white"
+        android:textSize="@dimen/px36_12sp" />
+
+    <TextView
+        android:id="@+id/tb_all"
+        android:layout_width="match_parent"
+        android:layout_height="21dp"
+        android:background="@drawable/corners_purple_radio_group"
+        android:button="@null"
+        android:gravity="center"
+        android:paddingLeft="5dp"
+        android:singleLine="true"
+        android:text="@string/position_audit_all"
+        android:textColor="@color/text_pop_purple"
+        android:textSize="@dimen/px33_11sp" />
+
+    <TextView
+        android:id="@+id/tb_in"
+        android:layout_width="match_parent"
+        android:layout_height="21dp"
+        android:background="@drawable/corners_purple_radio_group"
+        android:button="@null"
+        android:gravity="center"
+        android:paddingLeft="5dp"
+        android:singleLine="true"
+        android:text="@string/position_auditing"
+        android:textColor="@color/text_pop_purple"
+        android:textSize="@dimen/px33_11sp" />
+
+    <TextView
+        android:id="@+id/tb_no"
+        android:layout_width="match_parent"
+        android:layout_height="21dp"
+        android:layout_marginBottom="9dp"
+        android:background="@drawable/corners_purple_radio_group"
+        android:button="@null"
+        android:gravity="center"
+        android:paddingLeft="5dp"
+        android:singleLine="true"
+        android:text="@string/position_audit_no"
+        android:textColor="@color/text_pop_purple"
+        android:textSize="@dimen/px33_11sp" />
+
+
+</LinearLayout>

二進制
app/src/main/res/mipmap-hdpi/ic_arrow_gray_right.png


二進制
app/src/main/res/mipmap-hdpi/ic_arrow_white_down.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_edit_n.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_over_n.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_pause_n.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_refresh_n.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_review_no.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_start.png


二進制
app/src/main/res/mipmap-hdpi/ic_position_start_n.png


二進制
app/src/main/res/mipmap-xhdpi/ic_arrow_gray_right.png


二進制
app/src/main/res/mipmap-xhdpi/ic_arrow_white_down.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_edit_n.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_over_n.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_pause_n.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_refresh_n.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_review_no.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_start.png


二進制
app/src/main/res/mipmap-xhdpi/ic_position_start_n.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_arrow_gray_right.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_arrow_white_down.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_edit_n.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_over_n.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_pause_n.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_refresh_n.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_review_no.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_start.png


二進制
app/src/main/res/mipmap-xxhdpi/ic_position_start_n.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_arrow_gray_right.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_arrow_white_down.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_edit_n.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_over_n.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_pause_n.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_refresh_n.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_review_no.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_start.png


二進制
app/src/main/res/mipmap-xxxhdpi/ic_position_start_n.png


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

@@ -17,6 +17,7 @@
     <color name="text_purple">#7056D3</color>
     <color name="main_purple">#6046CB</color>
     <color name="text_hint_main_purple">#8D78DC</color>
+    <color name="text_pop_purple">#BBABF4</color>
     <color name="light_purple">#E6E4FE</color>
     <color name="time_picker_out">#C7BCEF</color>
     <color name="gray">#EEEEEE</color>

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

@@ -3,6 +3,7 @@
 
     <string name="refresh">刷新</string>
     <string name="pause">暂停</string>
+    <string name="start">开始</string>
     <string name="over">结束</string>
     <string name="edit">编辑</string>
     <string name="yes">是</string>
@@ -37,8 +38,10 @@
     <string name="all_position">全部职位</string>
     <string name="in_the_recruitment">招聘中</string>
     <string name="in_the_review">审核中</string>
+    <string name="review_no">审核驳回</string>
     <string name="title_work_time">工作时间:</string>
     <string name="title_work_address">工作地点:</string>
+    <string name="title_recruiting_numbers">招聘人数:</string>
     <string name="submit_audit">提交审核</string>
     <string name="long_time_valid">长期有效</string>
     <string name="no_long_time_valid">非长期</string>
@@ -158,6 +161,15 @@
     <string name="position_real_authentication_wait_tips">审核通过即可发布岗位</string>
     <string name="position_no_resume">暂时还没有简历投递进来</string>
     <string name="position_no_resume_tips">岗位信息内容填写越丰富\n越容易收到高质量的简历</string>
+    <string name="position_all">全部</string>
+    <string name="position_recruiting">正在招聘</string>
+    <string name="position_recruitment_freeze">暂停招聘</string>
+    <string name="position_recruitment_over">结束招聘</string>
+    <string name="position_audit_status">审核状态</string>
+    <string name="position_audit_all">全部审核</string>
+    <string name="position_auditing">正在审核</string>
+    <string name="position_audit_no">审核驳回</string>
+
 
     <string name="me_no_authentication">未认证</string>
     <string name="me_yes_authentication">已认证</string>

+ 22 - 0
baselibrary/src/main/java/com/webrain/baselibrary/utils/DateUtils.java

@@ -81,6 +81,28 @@ public class DateUtils {
             return dateString;
         }
     }
+    /**
+     * 将yyyy-MM-dd转化为指定格式
+     *
+     * @param dateStr
+     * @return
+     */
+    public static String getFormatStrToStr2(String dateStr, String formatKey) {
+        String dateString = "";
+        if (TextUtils.isEmpty(dateStr)) {
+            return dateString;
+        } else {
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat format2 = new SimpleDateFormat(formatKey);
+            try {
+                dateString = format2.format(format.parse(dateStr));
+            } catch (ParseException var4) {
+                var4.printStackTrace();
+            }
+            return dateString;
+        }
+    }
+
 
     /**
      * 计算2个时间戳相差小时数

+ 41 - 0
baselibrary/src/main/java/com/webrain/baselibrary/widget/DrawableRadioButton.java

@@ -0,0 +1,41 @@
+package com.webrain.baselibrary.widget;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.widget.RadioButton;
+
+@SuppressLint("AppCompatCustomView")
+public class DrawableRadioButton extends RadioButton {
+    public DrawableRadioButton(Context context) {
+        super(context);
+    }
+
+    public DrawableRadioButton(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public DrawableRadioButton(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        Drawable[] drawables = getCompoundDrawables();
+        if (drawables != null) {
+            Drawable drawableLeft = drawables[0];
+            if (drawableLeft != null) {
+                float textWidth = getPaint().measureText(getText().toString());
+                int drawablePadding = getCompoundDrawablePadding();
+                int drawableWidth = 0;
+                drawableWidth = drawableLeft.getIntrinsicWidth();
+                float bodyWidth = textWidth + drawableWidth + drawablePadding;
+                canvas.translate((getWidth() - bodyWidth) / 2, 0);
+            }
+        }
+        super.onDraw(canvas);
+    }
+
+}