d934c1db75f860579c6383b59a78be9af9f528de.svn-base 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package eVVM.apk.ui.login.authentication;
  2. import com.allen.library.factory.ApiFactory;
  3. import com.allen.library.interceptor.Transformer;
  4. import com.allen.library.observer.CommonObserver;
  5. import com.allen.library.upload.UploadFileApi;
  6. import com.google.gson.Gson;
  7. import java.io.File;
  8. import java.io.IOException;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import eVVM.apk.api.ApiUrl;
  13. import eVVM.apk.mvp.MvpModel;
  14. import eVVM.apk.ui.bean.VerificationCodeBean;
  15. import io.reactivex.Observable;
  16. import okhttp3.MediaType;
  17. import okhttp3.MultipartBody;
  18. import okhttp3.RequestBody;
  19. import okhttp3.ResponseBody;
  20. /**
  21. * Created by Android Studio.
  22. * User: zbb
  23. * Date: 2019/6/3
  24. * Describe: AttctModel
  25. */
  26. public class AttctModel extends MvpModel<AttctOnListener> {
  27. public AttctModel() {
  28. }
  29. /***
  30. *
  31. * @param userId 用户id 注册成功后返回
  32. * @param companyName 公司名称
  33. * @param userName 用户姓名
  34. * @param idCard 身份证号
  35. * @param email 邮箱
  36. * @param roleId 职务
  37. * @param phoneType 手机类型 0安卓 1ios
  38. * @param phoneModel 手机型号
  39. * @param uploadimgpaths 上传图片的路径
  40. */
  41. public void attct(int userId, String companyName, String userName, String idCard,
  42. String email, String roleId, int phoneType, String phoneModel, List<String> uploadimgpaths) {
  43. Map<String, Object> map = new HashMap<>();
  44. map.put("userId", userId + ""); //用户id
  45. map.put("companyId", companyName + ""); //公司id
  46. map.put("userName", userName + ""); //名字
  47. map.put("idCard", idCard + ""); //身份证
  48. map.put("email", email + ""); //邮箱
  49. map.put("roleId", roleId + ""); //roleid
  50. map.put("phoneType", phoneType + ""); //手机类型
  51. map.put("phoneModel", phoneModel + ""); //手机型号
  52. uploadFilesWithParamsByNewName(ApiUrl.BASE_URL + ApiUrl.ARTICLE_LIST + "perfectInfo", "files", map, uploadimgpaths)
  53. .compose(Transformer.<ResponseBody>switchSchedulers())
  54. .subscribe(new CommonObserver<ResponseBody>() {
  55. @Override
  56. protected void onError(String errorMsg) {
  57. getListener().onFail(errorMsg);
  58. }
  59. @Override
  60. protected void onSuccess(ResponseBody data) {
  61. try {
  62. String json = data.string();
  63. Gson gson = new Gson();
  64. VerificationCodeBean verificationCodeBean = gson.fromJson(json, VerificationCodeBean.class);
  65. if (verificationCodeBean.getCode() == 200) {
  66. getListener().onSucceed(verificationCodeBean);
  67. } else {
  68. getListener().onFail(verificationCodeBean.getMsg());
  69. }
  70. } catch (IOException e) {
  71. e.printStackTrace();
  72. }
  73. }
  74. });
  75. }
  76. /**
  77. * 图片和参数同时上传的请求
  78. *
  79. * @param uploadUrl 上传图片的服务器url
  80. * @param fileName 后台协定的接受图片的name(没特殊要求就可以随便写)
  81. * @param paramsMap 普通参数
  82. * @param filePaths 图片路径
  83. * @return Observable
  84. */
  85. public static Observable<ResponseBody> uploadFilesWithParamsByNewName(String uploadUrl, String fileName, Map<String, Object> paramsMap, List<String> filePaths) {
  86. MultipartBody.Builder builder = new MultipartBody.Builder()
  87. .setType(MultipartBody.FORM);
  88. if (null != paramsMap) {
  89. for (String key : paramsMap.keySet()) {
  90. builder.addFormDataPart(key, (String) paramsMap.get(key));
  91. }
  92. }
  93. for (int i = 0; i < filePaths.size(); i++) {
  94. File file = new File(filePaths.get(i));
  95. RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
  96. //"fileName"+i 后台接收图片流的参数名
  97. if (i == filePaths.size() - 1) {
  98. builder.addFormDataPart(fileName, "authImage" + file.getName(), imageBody);
  99. } else {
  100. builder.addFormDataPart(fileName, file.getName(), imageBody);
  101. }
  102. }
  103. List<MultipartBody.Part> parts = builder.build().parts();
  104. String DEFAULT_UPLOAD_KEY = "defaultUploadUrlKey";
  105. String DEFAULT_BASE_URL = "https://api.github.com/";
  106. return ApiFactory.getInstance()
  107. .createApi(DEFAULT_UPLOAD_KEY, DEFAULT_BASE_URL, UploadFileApi.class)
  108. .uploadFiles(uploadUrl, parts);
  109. }
  110. }