Sfoglia il codice sorgente

对接 岗位投递接口

ZhangXinYu 6 anni fa
parent
commit
1ee5c99c83

+ 44 - 1
app/src/main/java/com/webrain/dailypay/bean/AddressBean.java

@@ -1,6 +1,9 @@
 package com.webrain.dailypay.bean;
 
-public class AddressBean {
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class AddressBean implements Parcelable {
     private int id;
     private String positionId;
     private String provinceId;
@@ -10,6 +13,29 @@ public class AddressBean {
     private String address;
     private int isThisAreaPublish;
 
+    protected AddressBean(Parcel in) {
+        id = in.readInt();
+        positionId = in.readString();
+        provinceId = in.readString();
+        cityId = in.readString();
+        countryId = in.readString();
+        adname = in.readString();
+        address = in.readString();
+        isThisAreaPublish = in.readInt();
+    }
+
+    public static final Creator<AddressBean> CREATOR = new Creator<AddressBean>() {
+        @Override
+        public AddressBean createFromParcel(Parcel in) {
+            return new AddressBean(in);
+        }
+
+        @Override
+        public AddressBean[] newArray(int size) {
+            return new AddressBean[size];
+        }
+    };
+
     public int getId() {
         return id;
     }
@@ -73,4 +99,21 @@ public class AddressBean {
     public void setIsThisAreaPublish(int isThisAreaPublish) {
         this.isThisAreaPublish = isThisAreaPublish;
     }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(id);
+        dest.writeString(positionId);
+        dest.writeString(provinceId);
+        dest.writeString(cityId);
+        dest.writeString(countryId);
+        dest.writeString(adname);
+        dest.writeString(address);
+        dest.writeInt(isThisAreaPublish);
+    }
 }

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

@@ -1,6 +1,9 @@
 package com.webrain.dailypay.bean;
 
-public class PositionBean {
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class PositionBean implements Parcelable {
     private int id;
     private String userId;
     private String positionName;
@@ -39,6 +42,57 @@ public class PositionBean {
     private String settlementMethod;
 
 
+    protected PositionBean(Parcel in) {
+        id = in.readInt();
+        userId = in.readString();
+        positionName = in.readString();
+        enterpriseName = in.readString();
+        positionDetail = in.readString();
+        positionCategory = in.readInt();
+        fulltimePositionType = in.readString();
+        parttimePositionType = in.readString();
+        recruitNumber = in.readString();
+        basicSalary = in.readString();
+        salaryPeriod = in.readString();
+        salary = in.readString();
+        otherSalary = in.readString();
+        salaryStructure = in.readString();
+        welfare = in.readString();
+        hasRegularBus = in.readString();
+        qualification = in.readString();
+        ageRange = in.readString();
+        gender = in.readString();
+        workExperience = in.readString();
+        isHealthCertification = in.readString();
+        workDate = in.readString();
+        startWorkTime = in.readString();
+        endWordTime = in.readString();
+        isPublishNationwide = in.readString();
+        contactPerson = in.readString();
+        contactPhone = in.readString();
+        createTime = in.readString();
+        endDate = in.readString();
+        updateTime = in.readString();
+        delFlag = in.readString();
+        authenticationStatus = in.readInt();
+        isOn = in.readInt();
+        isPause = in.readInt();
+        requireGroup = in.readString();
+        settlementMethod = in.readString();
+    }
+
+    public static final Creator<PositionBean> CREATOR = new Creator<PositionBean>() {
+        @Override
+        public PositionBean createFromParcel(Parcel in) {
+            return new PositionBean(in);
+        }
+
+        @Override
+        public PositionBean[] newArray(int size) {
+            return new PositionBean[size];
+        }
+    };
+
     public int getId() {
         return id;
     }
@@ -326,4 +380,49 @@ public class PositionBean {
     public void setSettlementMethod(String settlementMethod) {
         this.settlementMethod = settlementMethod;
     }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(id);
+        dest.writeString(userId);
+        dest.writeString(positionName);
+        dest.writeString(enterpriseName);
+        dest.writeString(positionDetail);
+        dest.writeInt(positionCategory);
+        dest.writeString(fulltimePositionType);
+        dest.writeString(parttimePositionType);
+        dest.writeString(recruitNumber);
+        dest.writeString(basicSalary);
+        dest.writeString(salaryPeriod);
+        dest.writeString(salary);
+        dest.writeString(otherSalary);
+        dest.writeString(salaryStructure);
+        dest.writeString(welfare);
+        dest.writeString(hasRegularBus);
+        dest.writeString(qualification);
+        dest.writeString(ageRange);
+        dest.writeString(gender);
+        dest.writeString(workExperience);
+        dest.writeString(isHealthCertification);
+        dest.writeString(workDate);
+        dest.writeString(startWorkTime);
+        dest.writeString(endWordTime);
+        dest.writeString(isPublishNationwide);
+        dest.writeString(contactPerson);
+        dest.writeString(contactPhone);
+        dest.writeString(createTime);
+        dest.writeString(endDate);
+        dest.writeString(updateTime);
+        dest.writeString(delFlag);
+        dest.writeInt(authenticationStatus);
+        dest.writeInt(isOn);
+        dest.writeInt(isPause);
+        dest.writeString(requireGroup);
+        dest.writeString(settlementMethod);
+    }
 }

+ 28 - 1
app/src/main/java/com/webrain/dailypay/bean/PositionListBean.java

@@ -1,12 +1,30 @@
 package com.webrain.dailypay.bean;
 
+import android.os.Parcel;
+import android.os.Parcelable;
+
 import java.util.List;
 
-public class PositionListBean {
+public class PositionListBean  implements Parcelable {
 
     List<AddressBean> address;
     PositionBean position;
 
+    protected PositionListBean(Parcel in) {
+    }
+
+    public static final Creator<PositionListBean> CREATOR = new Creator<PositionListBean>() {
+        @Override
+        public PositionListBean createFromParcel(Parcel in) {
+            return new PositionListBean(in);
+        }
+
+        @Override
+        public PositionListBean[] newArray(int size) {
+            return new PositionListBean[size];
+        }
+    };
+
     public List<AddressBean> getAddress() {
         return address;
     }
@@ -22,4 +40,13 @@ public class PositionListBean {
     public void setPosition(PositionBean position) {
         this.position = position;
     }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+    }
 }

+ 17 - 0
app/src/main/java/com/webrain/dailypay/bean/api/ApiPositionResumeListBean.java

@@ -0,0 +1,17 @@
+package com.webrain.dailypay.bean.api;
+
+import com.webrain.dailypay.bean.ResumeBean;
+
+import java.util.List;
+
+public class ApiPositionResumeListBean extends ApiBaseListBean {
+    private List<ResumeBean> searchResume;
+
+    public List<ResumeBean> getSearchResume() {
+        return searchResume;
+    }
+
+    public void setSearchResume(List<ResumeBean> searchResume) {
+        this.searchResume = searchResume;
+    }
+}

+ 9 - 2
app/src/main/java/com/webrain/dailypay/http/Api.java

@@ -5,6 +5,7 @@ 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.ApiPositionResumeListBean;
 import com.webrain.dailypay.bean.api.ApiResultBean;
 import com.webrain.dailypay.bean.api.ApiResumeDetailBean;
 import com.webrain.dailypay.bean.api.ApiResumeListBean;
@@ -38,7 +39,8 @@ public class Api {
         Observable<ApiResultBean<ApiNormalBean>> uploadUserAudit(@Body MultipartBody img);
 
     }
-    public interface AnterpriseInterface{
+
+    public interface AnterpriseInterface {
         //企业认证
         @POST("api/anterprise/anterpriseAuth")
         Observable<ApiResultBean<ApiNormalBean>> uploadAnterpriseAuth(@Body MultipartBody img);
@@ -68,6 +70,12 @@ public class Api {
         //下架岗位
         @POST("api/position/changeIsOnStatus")
         Observable<ApiResultBean<ApiNormalBean>> httpOverPosition(@Body Map<String, Object> args);
+
+        //查询该岗位简历
+        @GET("api/position/remuse")
+        Observable<ApiResultBean<ApiPositionResumeListBean>> getPositionResume(@QueryMap Map<String, Object> args);
+
+
     }
 
     public interface ResumeInterface {
@@ -78,6 +86,5 @@ public class Api {
         //获取简历详情
         @GET("api/resume/getResumeDetail")
         Observable<ApiResultBean<ApiResumeDetailBean>> getResumeDetail(@QueryMap Map<String, Object> args);
-
     }
 }

+ 13 - 0
app/src/main/java/com/webrain/dailypay/http/subscribe/PositionSubscribe.java

@@ -7,6 +7,7 @@ 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.ApiPositionResumeListBean;
 import com.webrain.dailypay.bean.api.ApiResultBean;
 import com.webrain.dailypay.bean.api.AuthCodeBean;
 import com.webrain.dailypay.http.Api;
@@ -91,4 +92,16 @@ public class PositionSubscribe extends BaseSubscribe {
     }
 
 
+    /**
+     * 获取岗位简历
+     *
+     * @param mObservable
+     */
+    public void requestPositionResume(Map<String, Object> params, ApiObserver<ApiPositionResumeListBean> mObservable) {
+        Api.PositionInterface apiService = ServiceGenerator.createService(Api.PositionInterface.class);
+        Observable<ApiResultBean<ApiPositionResumeListBean>> observable = apiService.getPositionResume(params);
+        subscribe(observable, mObservable);
+    }
+
+
 }

+ 82 - 21
app/src/main/java/com/webrain/dailypay/ui/activity/position/PositionApplyManagerActivity.java

@@ -1,18 +1,26 @@
 package com.webrain.dailypay.ui.activity.position;
 
 import android.os.Bundle;
-import android.support.v4.view.ViewPager;
+import android.support.annotation.NonNull;
 import android.support.v7.widget.CardView;
+import android.view.View;
+import android.widget.AbsListView;
+import android.widget.ListView;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
 import android.widget.TextView;
 
-import com.webrain.baselibrary.widget.PositionIndicator;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
+import com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout;
 import com.webrain.dailypay.R;
-import com.webrain.dailypay.bean.TabItemBean;
-import com.webrain.dailypay.ui.adapter.viewpager.FragmentPagePositionAdapter;
-import com.webrain.dailypay.ui.adapter.viewpager.FragmentPagePositionApplyAdapter;
+import com.webrain.dailypay.bean.PositionListBean;
+import com.webrain.dailypay.bean.ResumeBean;
+import com.webrain.dailypay.ui.adapter.listview.PositionApplyAdapter;
 import com.webrain.dailypay.ui.base.BaseActivity;
 import com.webrain.dailypay.ui.mvp.contacts.PositionApplyManagerContacts;
 import com.webrain.dailypay.ui.mvp.presenter.PositionApplyManagerPresenter;
+import com.webrain.dailypay.ui.viewholder.FooterViewHolder;
 
 import java.util.List;
 
@@ -22,8 +30,6 @@ import butterknife.BindView;
  * 职位报名管理
  */
 public class PositionApplyManagerActivity extends BaseActivity<PositionApplyManagerPresenter> implements PositionApplyManagerContacts.IPositionApplyManagerView {
-    @BindView(R.id.pi_position)
-    PositionIndicator piPosition;
     @BindView(R.id.tv_all_select)
     TextView tvAllSelect;
     @BindView(R.id.tv_all_refuse)
@@ -32,10 +38,19 @@ public class PositionApplyManagerActivity extends BaseActivity<PositionApplyMana
     TextView tvInvitedInterview;
     @BindView(R.id.cv_release)
     CardView cvRelease;
-    @BindView(R.id.vp_position)
-    ViewPager vpPosition;
+    @BindView(R.id.lv_resume)
+    ListView lvResume;
+    @BindView(R.id.tb_new_apply)
+    RadioButton tbNewApply;
+    @BindView(R.id.tb_wait_interview)
+    RadioButton tbWaitInterview;
+    @BindView(R.id.rg_state)
+    RadioGroup rgState;
+    @BindView(R.id.prl_refresh)
+    ProgressRefreshLayout prlRefresh;
 
-    FragmentPagePositionApplyAdapter mAdapter;
+    private FooterViewHolder mFooterHolder;
+    private PositionApplyAdapter mAdapter;
 
     @Override
     public int getLayoutId() {
@@ -50,21 +65,67 @@ public class PositionApplyManagerActivity extends BaseActivity<PositionApplyMana
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mvpPresenter.getTabItem();
+        setLoadingVisible(true);
+        prlRefresh.setOnRefreshListener(onRefreshListener);
+        mvpPresenter.init();
     }
 
-    /**
-     * 获得标签
-     *
-     * @param tabItemBeanList
-     */
     @Override
-    public void onTabItem(List<TabItemBean> tabItemBeanList) {
+    public void onPositionList(List<ResumeBean> mData, boolean isLastPage) {
+        setLoadingVisible(false);
+        setErrorVisible(false);
         if (mAdapter == null) {
-            mAdapter = new FragmentPagePositionApplyAdapter(getSupportFragmentManager(), mContext, tabItemBeanList);
-            vpPosition.setAdapter(mAdapter);
-            vpPosition.setOffscreenPageLimit(tabItemBeanList.size());
-            piPosition.setViewPager(vpPosition, tabItemBeanList.get(0).getTitle(), tabItemBeanList.get(1).getTitle());
+            mFooterHolder = new FooterViewHolder(mContext);
+            mAdapter = new PositionApplyAdapter(mContext, mData);
+            lvResume.setAdapter(mAdapter);
+            lvResume.setOnItemClickListener(mAdapter);
+//            lvResume.addHeaderView(View.inflate(mContext, R.layout.item_listview_position_header, null));
+            lvResume.addFooterView(mFooterHolder.getView());
+            lvResume.setOnScrollListener(onScrollListener);
+        } else {
+            mAdapter.updateData(mData);
+            mAdapter.notifyDataSetChanged();
+        }
+        if (isLastPage) {
+            mFooterHolder.noMoreData();
+        } else {
+            mFooterHolder.moreData();
         }
+        prlRefresh.finishRefresh();
     }
+
+    @Override
+    public void onError() {
+
+    }
+
+    /**
+     * 监听下拉刷新触发
+     */
+    OnRefreshListener onRefreshListener = new OnRefreshListener() {
+        @Override
+        public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+            mvpPresenter.getHttpPositionList(true, false, false);
+        }
+    };
+    /**
+     * 监听ListView 滑动 , 实现滑动底部加载更多
+     */
+    AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {
+        private boolean mLastItemVisible;
+
+        @Override
+        public void onScrollStateChanged(AbsListView view, int scrollState) {
+            if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE
+                    && mLastItemVisible) {
+                mvpPresenter.getHttpPositionList(false, false, false);
+            }
+        }
+
+        @Override
+        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+            mLastItemVisible = (totalItemCount > 0)
+                    && (firstVisibleItem + visibleItemCount >= totalItemCount - 1);
+        }
+    };
 }

+ 54 - 8
app/src/main/java/com/webrain/dailypay/ui/adapter/listview/PositionApplyAdapter.java

@@ -2,6 +2,7 @@ package com.webrain.dailypay.ui.adapter.listview;
 
 import android.content.Context;
 import android.content.Intent;
+import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
@@ -9,17 +10,23 @@ import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.webrain.baselibrary.imageloader.ImageLoaderUtil;
 import com.webrain.dailypay.R;
+import com.webrain.dailypay.bean.PositionListBean;
+import com.webrain.dailypay.bean.ResumeBean;
 import com.webrain.dailypay.ui.activity.position.PositionApplyManagerActivity;
 import com.webrain.dailypay.ui.base.BaseViewHolder;
+import com.webrain.dailypay.utils.BaseInformationUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import butterknife.BindView;
 
 public class PositionApplyAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
     private Context mContext;
-    private List<String> mData;
+    private List<ResumeBean> mData;
+    private List<ResumeBean> mSelect;
 
     /**
      * 构造函数,初始化岗位数据,选中数据
@@ -27,9 +34,14 @@ public class PositionApplyAdapter extends BaseAdapter implements AdapterView.OnI
      * @param mContext
      * @param mData
      */
-    public PositionApplyAdapter(Context mContext, List<String> mData) {
+    public PositionApplyAdapter(Context mContext, List<ResumeBean> mData) {
         this.mContext = mContext;
         this.mData = mData;
+        this.mSelect = new ArrayList<>();
+    }
+
+    public List<ResumeBean> getSelectResume() {
+        return mSelect;
     }
 
     /**
@@ -37,18 +49,17 @@ public class PositionApplyAdapter extends BaseAdapter implements AdapterView.OnI
      *
      * @param mData
      */
-    public void updateData(List<String> mData) {
+    public void updateData(List<ResumeBean> mData) {
         this.mData = mData;
     }
 
     @Override
     public int getCount() {
-        return 10;
-        // mData == null ? 0 : mData.size();
+        return mData == null ? 0 : mData.size();
     }
 
     @Override
-    public String getItem(int position) {
+    public ResumeBean getItem(int position) {
         return mData.get(position);
     }
 
@@ -67,12 +78,18 @@ public class PositionApplyAdapter extends BaseAdapter implements AdapterView.OnI
         } else {
             holder = (ResumeViewHolder) convertView.getTag();
         }
+        holder.initData(getItem(position));
         return convertView;
     }
 
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        mContext.startActivity(new Intent(mContext, PositionApplyManagerActivity.class));
+        ResumeBean bean = getItem(position);
+        if (mSelect.contains(bean))
+            mSelect.remove(bean);
+        else
+            mSelect.add(bean);
+        notifyDataSetChanged();
     }
 
     class ResumeViewHolder extends BaseViewHolder {
@@ -99,5 +116,34 @@ public class PositionApplyAdapter extends BaseAdapter implements AdapterView.OnI
         public int bindViewLayoutId() {
             return R.layout.item_listview_position_apply;
         }
+
+        public void initData(ResumeBean bean) {
+            if (bean != null) {
+                ImageLoaderUtil.getInstance().loadCircleImage(bean.getHeadImg(), R.mipmap.ic_default_header, ivHeader);
+                //名称
+                if (!TextUtils.isEmpty(bean.getRealName())) {
+                    tvName.setText(bean.getRealName());
+                } else {
+                    tvName.setText("");
+                }
+                //详情
+                String desc = "";
+                if ("1".equals(bean.getGender()) || "2".equals(bean.getGender())) {
+                    desc += (TextUtils.isEmpty(desc) ? BaseInformationUtils.getGender(mContext, Integer.parseInt(bean.getGender())) : "," + BaseInformationUtils.getGender(mContext, Integer.parseInt(bean.getGender())));
+                }
+                if (!TextUtils.isEmpty(bean.getBirthYear())) {
+                    desc += ((TextUtils.isEmpty(desc) ? bean.getBirthYear() : "," + bean.getBirthYear()) + "岁");
+                }
+                if (!TextUtils.isEmpty(bean.getHighestQualification())) {
+                    desc += (TextUtils.isEmpty(desc) ? BaseInformationUtils.getEducationBackground(mContext, Integer.parseInt(bean.getHighestQualification())) : "," + BaseInformationUtils.getEducationBackground(mContext, Integer.parseInt(bean.getHighestQualification())));
+                }
+                tvDesc.setText(desc);
+
+                if (mSelect.contains(bean))
+                    vState.setSelected(true);
+                else
+                    vState.setSelected(false);
+            }
+        }
     }
-}
+}

+ 6 - 1
app/src/main/java/com/webrain/dailypay/ui/adapter/listview/PositionListAdapter.java

@@ -11,6 +11,7 @@ import android.widget.BaseAdapter;
 import android.widget.TextView;
 
 import com.webrain.baselibrary.AppConstant;
+import com.webrain.baselibrary.IntentConstant;
 import com.webrain.baselibrary.utils.DateUtils;
 import com.webrain.dailypay.R;
 import com.webrain.dailypay.bean.AddressBean;
@@ -92,7 +93,11 @@ public class PositionListAdapter extends BaseAdapter implements AdapterView.OnIt
 
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        mContext.startActivity(new Intent(mContext, PositionApplyManagerActivity.class));
+        if (position == 0)
+            return;
+        Intent intent = new Intent(mContext, PositionApplyManagerActivity.class);
+        intent.putExtra(IntentConstant.BEAN, getItem(position - 1).getPosition());
+        mContext.startActivity(intent);
     }
 
     class ResumeViewHolder extends BaseViewHolder {

+ 18 - 5
app/src/main/java/com/webrain/dailypay/ui/mvp/contacts/PositionApplyManagerContacts.java

@@ -1,8 +1,9 @@
 package com.webrain.dailypay.ui.mvp.contacts;
 
-import android.content.Context;
 
-import com.webrain.dailypay.bean.TabItemBean;
+import com.webrain.dailypay.bean.PositionListBean;
+import com.webrain.dailypay.bean.ResumeBean;
+import com.webrain.dailypay.callback.MvpDataCallBack;
 import com.webrain.dailypay.ui.base.IPresenter;
 import com.webrain.dailypay.ui.base.IView;
 
@@ -10,14 +11,26 @@ import java.util.List;
 
 public class PositionApplyManagerContacts {
     public interface IPositionApplyManagerView extends IView {
-        void onTabItem(List<TabItemBean> tabItemBeanList);
+        void onPositionList(List<ResumeBean> mData, boolean isLastPage);
+
+        void onError();
     }
 
     public interface IPositionApplyManagerPresenter extends IPresenter {
-        void getTabItem();//获取岗位的TabItemBean
+        void getHttpPositionList(boolean isRefresh, boolean isShowDialog, boolean isInit);
+
+        void init();
     }
 
     public interface IPositionApplyManagerModel {
-        List<TabItemBean> getTabItem(Context mContext);
+        void initIntent();
+
+        void getHttpPositionList(MvpDataCallBack<List<ResumeBean>> callBack, boolean isShowDialog, boolean isInit);
+
+        boolean isLastPage();
+
+        boolean isLoading();
+
+        void refreshPageNum();
     }
 }

+ 103 - 8
app/src/main/java/com/webrain/dailypay/ui/mvp/model/PositionApplyManagerModel.java

@@ -2,8 +2,20 @@ package com.webrain.dailypay.ui.mvp.model;
 
 import android.content.Context;
 
+import com.webrain.baselibrary.IntentConstant;
 import com.webrain.dailypay.R;
+import com.webrain.dailypay.bean.PositionBean;
+import com.webrain.dailypay.bean.PositionListBean;
+import com.webrain.dailypay.bean.ResumeBean;
 import com.webrain.dailypay.bean.TabItemBean;
+import com.webrain.dailypay.bean.api.ApiPositionListBean;
+import com.webrain.dailypay.bean.api.ApiPositionResumeListBean;
+import com.webrain.dailypay.callback.MvpDataCallBack;
+import com.webrain.dailypay.http.ApiObserver;
+import com.webrain.dailypay.http.RetrofitHttpParams;
+import com.webrain.dailypay.http.exception.ApiException;
+import com.webrain.dailypay.http.subscribe.PositionSubscribe;
+import com.webrain.dailypay.ui.activity.position.PositionApplyManagerActivity;
 import com.webrain.dailypay.ui.base.BaseModel;
 import com.webrain.dailypay.ui.mvp.contacts.PositionApplyManagerContacts;
 
@@ -11,19 +23,102 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class PositionApplyManagerModel extends BaseModel implements PositionApplyManagerContacts.IPositionApplyManagerModel {
-    private List<TabItemBean> mTabList;
+    private List<ResumeBean> mPositionData = new ArrayList<>();//热门岗位数据
+    private PositionBean mIntentBean;//上层传入对象
+    private boolean isError = false;//是否出错
+    private int pageNum = 0;//第一页为1开始 初始为0
+    private boolean isLoading = false;//是否加载中
+    private boolean isLastPage;//是否已经最后一页
 
     public PositionApplyManagerModel(Context mContext) {
         super(mContext);
     }
 
     @Override
-    public List<TabItemBean> getTabItem(Context mContext) {
-        if (mTabList == null) {
-            mTabList = new ArrayList<>();
-            mTabList.add(new TabItemBean(mContext.getString(R.string.new_apply), mContext.getString(R.string.new_apply)));
-            mTabList.add(new TabItemBean(mContext.getString(R.string.wait_interview), mContext.getString(R.string.wait_interview)));
-        }
-        return mTabList;
+    public void initIntent() {
+        mIntentBean = ((PositionApplyManagerActivity) mContext).getIntent().getParcelableExtra(IntentConstant.BEAN);
+    }
+
+    @Override
+    public void getHttpPositionList(MvpDataCallBack<List<ResumeBean>> callBack, boolean isShowDialog, boolean isInit) {
+        httpPositionList(callBack, isShowDialog, isInit);
+    }
+
+    /**
+     * http请求获取岗位列表数据
+     *
+     * @param callBack
+     */
+    private void httpPositionList(final MvpDataCallBack<List<ResumeBean>> callBack, boolean isShowDialog, final boolean isInit) {
+        if (mIntentBean == null)
+            return;
+        isLoading = true;
+        RetrofitHttpParams params = new RetrofitHttpParams(mContext);
+        params.put("pageNo", pageNum + 1);
+        params.put("pageSize", 10);
+        params.put("positionId", mIntentBean.getId());
+        params.put("positionCategory", mIntentBean.getPositionCategory() == 0 ? 6 : 7);//兼容服务端C端
+        params.put("type", 1);
+        new PositionSubscribe(mContext).requestPositionResume(params.getRequestParams(), new ApiObserver<ApiPositionResumeListBean>(mContext, isShowDialog, false) {
+            @Override
+            public void onSuccess(ApiPositionResumeListBean data) {
+                if (data != null) {
+                    pageNum = data.getPageNum();
+                    isLastPage = data.isLastPage();
+                    if (pageNum == 1 || pageNum == 0) {
+                        mPositionData.clear();
+                    }
+                    if (data.getSearchResume() != null && !data.getSearchResume().isEmpty()) {
+                        mPositionData.addAll(data.getSearchResume());
+                    }
+                }
+            }
+
+            @Override
+            public void onError(ApiPositionResumeListBean data, ApiException exception) {
+                super.onError(data, exception);
+                if (isInit)
+                    isError = true;
+            }
+
+            @Override
+            public void onFinish() {
+                callBack.onData(mPositionData);
+                if (isError) {
+                    callBack.onError();
+                }
+                isError = false;
+                isLoading = false;
+            }
+
+        });
+    }
+
+    /**
+     * 是否最后一页
+     *
+     * @return
+     */
+    @Override
+    public boolean isLastPage() {
+        return isLastPage;
+    }
+
+    /**
+     * 是否正在加载中
+     *
+     * @return
+     */
+    @Override
+    public boolean isLoading() {
+        return isLoading;
+    }
+
+    /**
+     * 刷新页码
+     */
+    @Override
+    public void refreshPageNum() {
+        pageNum = 0;
     }
 }

+ 37 - 2
app/src/main/java/com/webrain/dailypay/ui/mvp/presenter/PositionApplyManagerPresenter.java

@@ -1,10 +1,14 @@
 package com.webrain.dailypay.ui.mvp.presenter;
 
+import com.webrain.dailypay.bean.ResumeBean;
+import com.webrain.dailypay.callback.MvpDataCallBack;
 import com.webrain.dailypay.ui.activity.position.PositionApplyManagerActivity;
 import com.webrain.dailypay.ui.base.BasePresenter;
 import com.webrain.dailypay.ui.mvp.contacts.PositionApplyManagerContacts;
 import com.webrain.dailypay.ui.mvp.model.PositionApplyManagerModel;
 
+import java.util.List;
+
 public class PositionApplyManagerPresenter extends BasePresenter<PositionApplyManagerActivity> implements PositionApplyManagerContacts.IPositionApplyManagerPresenter {
     private PositionApplyManagerModel mPositionApplyManagerModel;
 
@@ -13,10 +17,41 @@ public class PositionApplyManagerPresenter extends BasePresenter<PositionApplyMa
         this.mPositionApplyManagerModel = new PositionApplyManagerModel(mvpReference.get());
     }
 
+    /**
+     * 获取岗位列表数据
+     *
+     * @param isRefresh
+     */
     @Override
-    public void getTabItem() {
+    public void getHttpPositionList(boolean isRefresh, boolean isShowDialog, boolean isInit) {
         if (isViewAttach()) {
-            mvpReference.get().onTabItem(mPositionApplyManagerModel.getTabItem(mvpReference.get()));
+            if (isRefresh)
+                mPositionApplyManagerModel.refreshPageNum();
+            if (isRefresh || (!mPositionApplyManagerModel.isLastPage() && !mPositionApplyManagerModel.isLoading())) {
+                mPositionApplyManagerModel.getHttpPositionList(new MvpDataCallBack<List<ResumeBean>>() {
+                    @Override
+                    public void onData(List<ResumeBean> data) {
+                        if (isViewAttach())
+                            mvpReference.get().onPositionList(data, mPositionApplyManagerModel.isLastPage());
+                    }
+
+                    @Override
+                    public void onError() {
+                        super.onError();
+                        if (isViewAttach())
+                            mvpReference.get().onError();
+                    }
+                }, isShowDialog, isInit);
+            }
         }
     }
+
+    /**
+     * 初始化
+     */
+    @Override
+    public void init() {
+        mPositionApplyManagerModel.initIntent();
+        getHttpPositionList(false, false, true);
+    }
 }

+ 43 - 11
app/src/main/res/layout/activity_position_apply_manager.xml

@@ -20,17 +20,39 @@
             android:layout_height="match_parent"
             android:orientation="vertical">
 
-            <com.webrain.baselibrary.widget.PositionIndicator
-                android:id="@+id/pi_position"
+            <RadioGroup
+                android:id="@+id/rg_state"
                 android:layout_width="match_parent"
                 android:layout_height="35dp"
-                android:background="@drawable/corners_white_17dp"
                 android:orientation="horizontal"
-                app:pi_padding="4dp"
-                app:pi_select_color="@color/text_purple"
-                app:pi_text_color="@color/text_gray"
-                app:pi_text_select_color="@color/white"
-                app:pi_text_size="@dimen/px36_12sp" />
+                android:padding="4dp">
+
+                <RadioButton
+                    android:id="@+id/tb_new_apply"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:background="@drawable/corners_purple_radio_group"
+                    android:button="@null"
+                    android:checked="true"
+                    android:gravity="center"
+                    android:text="@string/new_apply"
+                    android:textColor="@drawable/color_gray_white_tv"
+                    android:textSize="@dimen/px36_12sp" />
+
+                <RadioButton
+                    android:id="@+id/tb_wait_interview"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:background="@drawable/corners_purple_radio_group"
+                    android:button="@null"
+                    android:gravity="center"
+                    android:text="@string/wait_interview"
+                    android:textColor="@drawable/color_gray_white_tv"
+                    android:textSize="@dimen/px36_12sp" />
+
+            </RadioGroup>
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -81,9 +103,19 @@
 
     </android.support.v7.widget.CardView>
 
-    <android.support.v4.view.ViewPager
-        android:id="@+id/vp_position"
+
+    <com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout
+        android:id="@+id/prl_refresh"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent">
+
+        <ListView
+            android:id="@+id/lv_resume"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:divider="@null"
+            android:dividerHeight="0px" />
+    </com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout>
+
 
 </RelativeLayout>