package eVVM.apk.ui.login.authentication; import com.allen.library.factory.ApiFactory; import com.allen.library.interceptor.Transformer; import com.allen.library.observer.CommonObserver; import com.allen.library.upload.UploadFileApi; import com.google.gson.Gson; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import eVVM.apk.api.ApiUrl; import eVVM.apk.mvp.MvpModel; import eVVM.apk.ui.bean.VerificationCodeBean; import io.reactivex.Observable; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.RequestBody; import okhttp3.ResponseBody; /** * Created by Android Studio. * User: zbb * Date: 2019/6/3 * Describe: AttctModel */ public class AttctModel extends MvpModel { public AttctModel() { } /*** * * @param userId 用户id 注册成功后返回 * @param companyName 公司名称 * @param userName 用户姓名 * @param idCard 身份证号 * @param email 邮箱 * @param roleId 职务 * @param phoneType 手机类型 0安卓 1ios * @param phoneModel 手机型号 * @param uploadimgpaths 上传图片的路径 */ public void attct(int userId, String companyName, String userName, String idCard, String email, String roleId, int phoneType, String phoneModel, List uploadimgpaths) { Map map = new HashMap<>(); map.put("userId", userId + ""); //用户id map.put("companyId", companyName + ""); //公司id map.put("userName", userName + ""); //名字 map.put("idCard", idCard + ""); //身份证 map.put("email", email + ""); //邮箱 map.put("roleId", roleId + ""); //roleid map.put("phoneType", phoneType + ""); //手机类型 map.put("phoneModel", phoneModel + ""); //手机型号 uploadFilesWithParamsByNewName(ApiUrl.BASE_URL + ApiUrl.ARTICLE_LIST + "perfectInfo", "files", map, uploadimgpaths) .compose(Transformer.switchSchedulers()) .subscribe(new CommonObserver() { @Override protected void onError(String errorMsg) { getListener().onFail(errorMsg); } @Override protected void onSuccess(ResponseBody data) { try { String json = data.string(); Gson gson = new Gson(); VerificationCodeBean verificationCodeBean = gson.fromJson(json, VerificationCodeBean.class); if (verificationCodeBean.getCode() == 200) { getListener().onSucceed(verificationCodeBean); } else { getListener().onFail(verificationCodeBean.getMsg()); } } catch (IOException e) { e.printStackTrace(); } } }); } /** * 图片和参数同时上传的请求 * * @param uploadUrl 上传图片的服务器url * @param fileName 后台协定的接受图片的name(没特殊要求就可以随便写) * @param paramsMap 普通参数 * @param filePaths 图片路径 * @return Observable */ public static Observable uploadFilesWithParamsByNewName(String uploadUrl, String fileName, Map paramsMap, List filePaths) { MultipartBody.Builder builder = new MultipartBody.Builder() .setType(MultipartBody.FORM); if (null != paramsMap) { for (String key : paramsMap.keySet()) { builder.addFormDataPart(key, (String) paramsMap.get(key)); } } for (int i = 0; i < filePaths.size(); i++) { File file = new File(filePaths.get(i)); RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); //"fileName"+i 后台接收图片流的参数名 if (i == filePaths.size() - 1) { builder.addFormDataPart(fileName, "authImage" + file.getName(), imageBody); } else { builder.addFormDataPart(fileName, file.getName(), imageBody); } } List parts = builder.build().parts(); String DEFAULT_UPLOAD_KEY = "defaultUploadUrlKey"; String DEFAULT_BASE_URL = "https://api.github.com/"; return ApiFactory.getInstance() .createApi(DEFAULT_UPLOAD_KEY, DEFAULT_BASE_URL, UploadFileApi.class) .uploadFiles(uploadUrl, parts); } }