parent
							
								
									a70c9bb35c
								
							
						
					
					
						commit
						64abf589b1
					
				
									
										Binary file not shown.
									
								
							
						| @ -1,335 +0,0 @@ | ||||
| package xyz.fycz.myreader.model.user; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| 
 | ||||
| import io.reactivex.annotations.NonNull; | ||||
| import xyz.fycz.myreader.application.App; | ||||
| import xyz.fycz.myreader.model.storage.Backup; | ||||
| import xyz.fycz.myreader.model.storage.Restore; | ||||
| import xyz.fycz.myreader.webapi.ResultCallback; | ||||
| import xyz.fycz.myreader.common.APPCONST; | ||||
| import xyz.fycz.myreader.common.URLCONST; | ||||
| import xyz.fycz.myreader.util.*; | ||||
| import xyz.fycz.myreader.util.utils.FileUtils; | ||||
| 
 | ||||
| import java.io.*; | ||||
| import java.net.HttpURLConnection; | ||||
| import java.net.URL; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  * @author fengyue | ||||
|  * @date 2020/4/26 11:03 | ||||
|  */ | ||||
| public class UserService { | ||||
|     /** | ||||
|      * 登录 | ||||
|      * @param userLoginInfo 用户名输入的用户名和密码等登录信息 | ||||
|      * @return 是否成功登录 | ||||
|      */ | ||||
|     public static void login(final Map<String, String> userLoginInfo, final ResultCallback resultCallback) { | ||||
|         App.getApplication().newThread(() -> { | ||||
|             HttpURLConnection conn = null; | ||||
|             try { | ||||
|                 URL url = new URL(URLCONST.APP_WEB_URL + "login"); | ||||
|                 conn = (HttpURLConnection) url.openConnection(); | ||||
|                 conn.setRequestMethod("POST"); | ||||
|                 conn.setConnectTimeout(60 * 1000); | ||||
|                 conn.setReadTimeout(60 * 1000); | ||||
|                 conn.setDoInput(true); | ||||
|                 conn.setDoOutput(true); | ||||
|                 String params = "username=" + userLoginInfo.get("loginName") + | ||||
|                         "&password=" + userLoginInfo.get("loginPwd") + makeSignalParam(); | ||||
|                 // 获取URLConnection对象对应的输出流
 | ||||
|                 PrintWriter out = new PrintWriter(conn.getOutputStream()); | ||||
|                 // 发送请求参数
 | ||||
|                 out.print(params); | ||||
|                 // flush输出流的缓冲
 | ||||
|                 out.flush(); | ||||
|                 InputStream in = conn.getInputStream(); | ||||
|                 BufferedReader bw = new BufferedReader(new InputStreamReader(in, "utf-8")); | ||||
|                 StringBuilder sb = new StringBuilder(); | ||||
|                 String line = bw.readLine(); | ||||
|                 while (line != null) { | ||||
|                     sb.append(line); | ||||
|                     line = bw.readLine(); | ||||
|                 } | ||||
|                 resultCallback.onFinish(sb.toString(), 1); | ||||
|             } catch (IOException e) { | ||||
|                 e.printStackTrace(); | ||||
|                 resultCallback.onError(e); | ||||
|             }finally { | ||||
|                 if (conn != null) { | ||||
|                     conn.disconnect(); | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     public static void register(final Map<String, String> userRegisterInfo, final ResultCallback resultCallback) { | ||||
|         App.getApplication().newThread(() -> { | ||||
|             HttpURLConnection conn = null; | ||||
|             try { | ||||
|                 URL url = new URL(URLCONST.APP_WEB_URL + "reg"); | ||||
|                 conn = (HttpURLConnection) url.openConnection(); | ||||
|                 conn.setRequestMethod("POST"); | ||||
|                 conn.setDoInput(true); | ||||
|                 conn.setDoOutput(true); | ||||
|                 String params = "username=" + userRegisterInfo.get("username") + "&password=" + | ||||
|                         CyptoUtils.encode(APPCONST.KEY, userRegisterInfo.get("password")) + "&key=" + | ||||
|                         CyptoUtils.encode(APPCONST.KEY, APPCONST.publicKey)  + makeSignalParam(); | ||||
|                 // 获取URLConnection对象对应的输出流
 | ||||
|                 PrintWriter out = new PrintWriter(conn.getOutputStream()); | ||||
|                 // 发送请求参数
 | ||||
|                 out.print(params); | ||||
|                 // flush输出流的缓冲
 | ||||
|                 out.flush(); | ||||
|                 BufferedReader bw = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); | ||||
|                 StringBuilder sb = new StringBuilder(); | ||||
|                 String line = bw.readLine(); | ||||
|                 while (line != null) { | ||||
|                     sb.append(line); | ||||
|                     line = bw.readLine(); | ||||
|                 } | ||||
|                 resultCallback.onFinish(sb.toString(), 1); | ||||
|             } catch (IOException e) { | ||||
|                 e.printStackTrace(); | ||||
|                 resultCallback.onError(e); | ||||
|             } finally { | ||||
|                 if (conn != null) { | ||||
|                     conn.disconnect(); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 写配置 | ||||
|      * @param userLoginInfo | ||||
|      * @return | ||||
|      */ | ||||
|     public static boolean writeConfig(Map<String,String> userLoginInfo){ | ||||
|         FileOutputStream fos = null; | ||||
|         try { | ||||
|             fos = App.getApplication().openFileOutput("userConfig.fy", Context.MODE_PRIVATE); | ||||
|             String userInfo = "username='" + userLoginInfo.get("loginName") + "',\npassword='" + userLoginInfo.get("loginPwd") + "'"; | ||||
|             byte[] bs = userInfo.getBytes(); | ||||
|             fos.write(bs); | ||||
|             //写完后一定要刷新
 | ||||
|             fos.flush(); | ||||
|             return true; | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|             return false; | ||||
|         } finally { | ||||
|             IOUtils.close(fos); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 读配置 | ||||
|      * @return | ||||
|      */ | ||||
|     public static Map<String,String> readConfig(){ | ||||
|         File file = App.getApplication().getFileStreamPath("userConfig.fy"); | ||||
|         if (!file.exists()){ | ||||
|             return null; | ||||
|         } | ||||
|         BufferedReader br = null; | ||||
|         try { | ||||
|             br = new BufferedReader(new FileReader(file)); | ||||
|             String tem; | ||||
|             StringBuilder config = new StringBuilder(); | ||||
|             while ((tem = br.readLine()) != null){ | ||||
|                 config.append(tem); | ||||
|             } | ||||
|             String[] user = config.toString().split(","); | ||||
|             String userName = user[0].substring(user[0].indexOf("'") + 1, user[0].lastIndexOf("'")); | ||||
|             String password = user[1].substring(user[1].indexOf("'") + 1, user[1].lastIndexOf("'")); | ||||
|             Map<String,String> userInfo = new HashMap<>(); | ||||
|             userInfo.put("userName", userName); | ||||
|             userInfo.put("password", password); | ||||
|             return userInfo; | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         }finally { | ||||
|             IOUtils.close(br); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     public static void writeUsername(String username){ | ||||
|         File file = FileUtils.getFile(APPCONST.QQ_DATA_DIR + "user"); | ||||
|         BufferedWriter bw = null; | ||||
|         try { | ||||
|             bw = new BufferedWriter(new FileWriter(file)); | ||||
|             bw.write(username); | ||||
|             bw.flush(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         }finally { | ||||
|             IOUtils.close(bw); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static String readUsername(){ | ||||
|         File file = new File(APPCONST.QQ_DATA_DIR + "user"); | ||||
|         if (!file.exists()){ | ||||
|             return ""; | ||||
|         } | ||||
|         BufferedReader br = null; | ||||
|         try { | ||||
|             br = new BufferedReader(new FileReader(file)); | ||||
|             return br.readLine(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|             return ""; | ||||
|         } finally { | ||||
|             IOUtils.close(br); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 网络备份 | ||||
|      * @return | ||||
|      */ | ||||
|     public static void webBackup(ResultCallback rc){ | ||||
|         Map<String,String> userInfo = readConfig(); | ||||
|         if (userInfo == null){ | ||||
|             rc.onFinish(false, 0); | ||||
|         } | ||||
|         Backup.INSTANCE.backup(App.getmContext(), APPCONST.FILE_DIR + "webBackup/", new Backup.CallBack() { | ||||
|             @Override | ||||
|             public void backupSuccess() { | ||||
|                 App.getApplication().newThread(() ->{ | ||||
|                     File inputFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup"); | ||||
|                     if (!inputFile.exists()) { | ||||
|                         rc.onFinish(false, 0); | ||||
|                     } | ||||
|                     File zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip"); | ||||
|                     FileInputStream fis = null; | ||||
|                     HttpURLConnection conn = null; | ||||
|                     try { | ||||
|                         //压缩文件
 | ||||
|                         ZipUtils.zipFile(inputFile, zipFile); | ||||
|                         fis = new FileInputStream(zipFile); | ||||
|                         URL url = new URL(URLCONST.APP_WEB_URL + "bak?username=" + userInfo.get("userName") + | ||||
|                                 makeSignalParam()); | ||||
|                         conn = (HttpURLConnection) url.openConnection(); | ||||
|                         conn.setRequestMethod("POST"); | ||||
|                         conn.setRequestProperty("Content-type", "multipart/form-data"); | ||||
|                         conn.setDoInput(true); | ||||
|                         conn.setDoOutput(true); | ||||
|                         OutputStream out = conn.getOutputStream(); | ||||
|                         byte[] bytes = new byte[1024]; | ||||
|                         int len = -1; | ||||
|                         while ((len = fis.read(bytes)) != -1){ | ||||
|                             out.write(bytes, 0, len); | ||||
|                         } | ||||
|                         out.flush(); | ||||
|                         zipFile.delete(); | ||||
|                         BufferedReader bw = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); | ||||
|                         StringBuilder sb = new StringBuilder(); | ||||
|                         String line = bw.readLine(); | ||||
|                         while (line != null) { | ||||
|                             sb.append(line); | ||||
|                             line = bw.readLine(); | ||||
|                         } | ||||
|                         String[] info = sb.toString().split(":"); | ||||
|                         int code = Integer.parseInt(info[0].trim()); | ||||
|                         rc.onFinish(code == 104, 0); | ||||
|                     } catch (Exception e) { | ||||
|                         e.printStackTrace(); | ||||
|                         rc.onError(e); | ||||
|                     } finally { | ||||
|                         IOUtils.close(fis); | ||||
|                         if (conn != null) { | ||||
|                             conn.disconnect(); | ||||
|                         } | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|             public void backupError(@NonNull String msg) { | ||||
|                 ToastUtils.showError(msg); | ||||
|                 rc.onFinish(false, 0); | ||||
|             } | ||||
|         }, false); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 网络恢复 | ||||
|      * @return | ||||
|      */ | ||||
|     public static void webRestore(ResultCallback rc){ | ||||
|         Map<String,String> userInfo = readConfig(); | ||||
|         if (userInfo == null){ | ||||
|             rc.onFinish(false, 0); | ||||
|         } | ||||
|         FileOutputStream fos = null; | ||||
|         File zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip"); | ||||
|         HttpURLConnection conn = null; | ||||
|         try { | ||||
|             URL url = new URL(URLCONST.APP_WEB_URL + "ret?username=" + userInfo.get("userName") + | ||||
|                     makeSignalParam()); | ||||
|             conn = (HttpURLConnection) url.openConnection(); | ||||
|             conn.setRequestMethod("POST"); | ||||
|             conn.setDoInput(true); | ||||
|             InputStream is = conn.getInputStream(); | ||||
|             fos = new FileOutputStream(zipFile); | ||||
|             //一边读,一边写
 | ||||
|             byte[] bytes = new byte[512]; | ||||
|             int readCount = 0; | ||||
|             while ((readCount = is.read(bytes)) != -1) { | ||||
|                 fos.write(bytes,0, readCount); | ||||
|             } | ||||
|             //刷新,输出流一定要刷新
 | ||||
|             fos.flush(); | ||||
|             if (zipFile.length() == 0){ | ||||
|                 zipFile.delete(); | ||||
|                 rc.onFinish(false, 0); | ||||
|             } | ||||
|             ZipUtils.unzipFile(zipFile.getAbsolutePath(), APPCONST.FILE_DIR); | ||||
|             Restore.INSTANCE.restore(APPCONST.FILE_DIR + "webBackup/", new Restore.CallBack() { | ||||
|                 @Override | ||||
|                 public void restoreSuccess() { | ||||
|                     zipFile.delete(); | ||||
|                     rc.onFinish(true, 0); | ||||
|                 } | ||||
| 
 | ||||
|                 @Override | ||||
|                 public void restoreError(@NonNull String msg) { | ||||
|                     ToastUtils.showError(msg); | ||||
|                     rc.onFinish(false, 0); | ||||
|                 } | ||||
|             }); | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|             rc.onError(e); | ||||
|         }finally { | ||||
|             IOUtils.close(fos); | ||||
|             if (conn != null) { | ||||
|                 conn.disconnect(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public static String makeSignalParam(){ | ||||
|         return "&signal=" + AppInfoUtils.getSingInfo(App.getmContext(), | ||||
|                 App.getApplication().getPackageName(), AppInfoUtils.SHA1); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 判断是否登录 | ||||
|      * @return | ||||
|      */ | ||||
|     public static boolean isLogin(){ | ||||
|         File file = App.getApplication().getFileStreamPath("userConfig.fy"); | ||||
|         return file.exists(); | ||||
|     } | ||||
| } | ||||
| @ -1,3 +1,3 @@ | ||||
| #Fri Jun 18 21:45:31 CST 2021 | ||||
| VERSION_CODE=236 | ||||
| VERSION_CODE=238 | ||||
| NEED_CREATE_RELEASE=true | ||||
|  | ||||
					Loading…
					
					
				
		Reference in new issue