From 6cd3b0cc220739ca7110b0cc1519b0e31c3871c0 Mon Sep 17 00:00:00 2001 From: tangxi <1464524503@qq.com> Date: Wed, 3 May 2023 13:55:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=85=AD=E5=89=8D=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CatApp_android_End/.gitignore | 31 + .../.mvn/wrapper/MavenWrapperDownloader.java | 118 + .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes .../.mvn/wrapper/maven-wrapper.properties | 2 + CatApp_android_End/mvnw | 310 + CatApp_android_End/mvnw.cmd | 182 + CatApp_android_End/pom.xml | 83 + .../java/com/example/cat/CatApplication.java | 13 + .../example/cat/config/WebMvcConfigure.java | 30 + .../cat/controller/CatMessageController.java | 82 + .../cat/controller/CatProductController.java | 152 + .../cat/controller/CatSaleController.java | 82 + .../controller/CatShoppingCartController.java | 15 + .../cat/controller/CatUserController.java | 63 + .../com/example/cat/entity/CatMessage.java | 17 + .../com/example/cat/entity/CatProduct.java | 21 + .../example/cat/entity/CatProductSale.java | 20 + .../java/com/example/cat/entity/CatSale.java | 14 + .../example/cat/entity/CatShoppingCart.java | 15 + .../java/com/example/cat/entity/CatUser.java | 16 + .../com/example/cat/mapper/MessageMapper.java | 32 + .../com/example/cat/mapper/ProductMapper.java | 55 + .../com/example/cat/mapper/SaleMapper.java | 40 + .../cat/mapper/ShoppingCartMapper.java | 11 + .../com/example/cat/mapper/UserMapper.java | 26 + .../example/cat/service/MessageService.java | 44 + .../example/cat/service/ProductService.java | 67 + .../com/example/cat/service/SaleService.java | 110 + .../cat/service/ShoppingCartService.java | 12 + .../com/example/cat/service/UserService.java | 35 + .../src/main/resources/application.properties | 19 + .../main/resources/mapper/MessageMapper.xml | 16 + .../main/resources/mapper/ProductMapper.xml | 26 + .../src/main/resources/mapper/SaleMapper.xml | 17 + .../src/main/resources/mapper/UserMapper.xml | 11 + .../src/main/resources/static/back.jpeg | Bin 0 -> 147014 bytes .../main/resources/static/images/apple.png | Bin 0 -> 1988 bytes .../src/main/resources/static/images/juzi.png | Bin 0 -> 1898 bytes .../main/resources/static/images/lemon.png | Bin 0 -> 2954 bytes .../src/main/resources/static/images/li.png | Bin 0 -> 1862 bytes .../main/resources/static/images/orange.png | Bin 0 -> 6129 bytes .../main/resources/static/images/youzi.png | Bin 0 -> 1798 bytes CatApp_android_frontEnd/.gitignore | 14 + CatApp_android_frontEnd/.idea/.gitignore | 3 + .../.idea/codeStyles/Project.xml | 116 + CatApp_android_frontEnd/.idea/compiler.xml | 6 + CatApp_android_frontEnd/.idea/gradle.xml | 20 + .../.idea/jarRepositories.xml | 25 + CatApp_android_frontEnd/.idea/misc.xml | 9 + CatApp_android_frontEnd/app/.gitignore | 1 + CatApp_android_frontEnd/app/build.gradle | 36 + .../app/proguard-rules.pro | 21 + .../catapp/ExampleInstrumentedTest.java | 27 + .../app/src/main/AndroidManifest.xml | 30 + .../java/com/example/catapp/MainActivity.java | 92 + .../catapp/activity/CategoryActivity.java | 90 + .../catapp/activity/IndexActivity.java | 128 + .../catapp/activity/RegisterActivity.java | 176 + .../example/catapp/activity/UserActivity.java | 66 + .../com/example/catapp/adapter/Adapter.java | 69 + .../catapp/adapter/ListViewAdapter.java | 78 + .../catapp/adapter/ProductAdapter.java | 68 + .../com/example/catapp/entity/CatMessage.java | 52 + .../com/example/catapp/entity/CatProduct.java | 64 + .../example/catapp/entity/CatProductPack.java | 66 + .../com/example/catapp/entity/CatUser.java | 59 + .../com/example/catapp/entity/Condition.java | 30 + .../com/example/catapp/entity/Product.java | 43 + .../example/catapp/entity/ShoppingCart.java | 44 + .../catapp/fragment/IndexFragment.java | 146 + .../catapp/fragment/PearsonFragment.java | 64 + .../catapp/fragment/ProductFragment.java | 102 + .../catapp/fragment/SetDetailFragment.java | 53 + .../catapp/fragment/ShoppingCartFragment.java | 61 + .../netrequest/OkHttpClientProduct.java | 80 + .../catapp/netrequest/OkHttpMessage.java | 40 + .../example/catapp/netrequest/OkHttpUser.java | 71 + .../example/catapp/service/TimeService.java | 105 + .../drawable-v24/ic_launcher_foreground.xml | 34 + .../app/src/main/res/drawable/a.xml | 7 + .../app/src/main/res/drawable/address.png | Bin 0 -> 1028 bytes .../app/src/main/res/drawable/all.png | Bin 0 -> 1045 bytes .../app/src/main/res/drawable/apple.png | Bin 0 -> 1988 bytes .../app/src/main/res/drawable/applep.png | Bin 0 -> 8824 bytes .../app/src/main/res/drawable/arrow_down.png | Bin 0 -> 368 bytes .../app/src/main/res/drawable/arrow_left.png | Bin 0 -> 231 bytes .../app/src/main/res/drawable/arrow_right.png | Bin 0 -> 233 bytes .../src/main/res/drawable/button_login.xml | 15 + .../src/main/res/drawable/button_register.xml | 14 + .../app/src/main/res/drawable/cart.png | Bin 0 -> 5573 bytes .../app/src/main/res/drawable/cat.png | Bin 0 -> 3224 bytes .../app/src/main/res/drawable/chengzi.png | Bin 0 -> 1666 bytes .../app/src/main/res/drawable/city.png | Bin 0 -> 790 bytes .../res/drawable/ic_launcher_background.xml | 170 + .../res/drawable/ic_launcher_foreground.xml | 34 + .../app/src/main/res/drawable/index.png | Bin 0 -> 1272 bytes .../app/src/main/res/drawable/index_menu.xml | 16 + .../app/src/main/res/drawable/juzi.png | Bin 0 -> 1898 bytes .../app/src/main/res/drawable/juzip.png | Bin 0 -> 8150 bytes .../app/src/main/res/drawable/lemon.png | Bin 0 -> 2954 bytes .../app/src/main/res/drawable/lemonp.png | Bin 0 -> 10312 bytes .../app/src/main/res/drawable/li.png | Bin 0 -> 1862 bytes .../app/src/main/res/drawable/mangguo.png | Bin 0 -> 2192 bytes .../app/src/main/res/drawable/maoliang.png | Bin 0 -> 6660 bytes .../app/src/main/res/drawable/maowanju.png | Bin 0 -> 5188 bytes .../app/src/main/res/drawable/maowo.png | Bin 0 -> 6470 bytes .../app/src/main/res/drawable/mhot.png | Bin 0 -> 592 bytes .../app/src/main/res/drawable/ml.png | Bin 0 -> 1914 bytes .../app/src/main/res/drawable/ml1.png | Bin 0 -> 1636 bytes .../app/src/main/res/drawable/ml2.png | Bin 0 -> 1087 bytes .../app/src/main/res/drawable/ml3.png | Bin 0 -> 2236 bytes .../app/src/main/res/drawable/mlp.png | Bin 0 -> 2069 bytes .../app/src/main/res/drawable/mlp2.png | Bin 0 -> 2384 bytes .../app/src/main/res/drawable/mls.png | Bin 0 -> 2407 bytes .../app/src/main/res/drawable/mwj.png | Bin 0 -> 1102 bytes .../app/src/main/res/drawable/mwj2.png | Bin 0 -> 1497 bytes .../app/src/main/res/drawable/mwj3.png | Bin 0 -> 3040 bytes .../app/src/main/res/drawable/orange.png | Bin 0 -> 6129 bytes .../app/src/main/res/drawable/password.png | Bin 0 -> 1462 bytes .../app/src/main/res/drawable/pearson.png | Bin 0 -> 3302 bytes .../app/src/main/res/drawable/price.png | Bin 0 -> 1047 bytes .../app/src/main/res/drawable/product.png | Bin 0 -> 1315 bytes .../src/main/res/drawable/qingjieyongpin.png | Bin 0 -> 5268 bytes .../app/src/main/res/drawable/salenum.png | Bin 0 -> 1294 bytes .../app/src/main/res/drawable/search.png | Bin 0 -> 1299 bytes .../app/src/main/res/drawable/setting.png | Bin 0 -> 1101 bytes .../app/src/main/res/drawable/sex.png | Bin 0 -> 1509 bytes .../src/main/res/drawable/shoppingcart.png | Bin 0 -> 1155 bytes .../app/src/main/res/drawable/shuiguo.png | Bin 0 -> 1212 bytes .../res/drawable/spinner_drop_down_shape.xml | 16 + .../src/main/res/drawable/sure_apssword.png | Bin 0 -> 799 bytes .../src/main/res/drawable/sure_pssword.png | Bin 0 -> 799 bytes .../src/main/res/drawable/tab_menu_text.xml | 5 + .../app/src/main/res/drawable/time.png | Bin 0 -> 2219 bytes .../app/src/main/res/drawable/user.png | Bin 0 -> 2173 bytes .../src/main/res/drawable/user_account.png | Bin 0 -> 1045 bytes .../src/main/res/drawable/user_general.png | Bin 0 -> 402 bytes .../app/src/main/res/drawable/user_icon.png | Bin 0 -> 5995 bytes .../app/src/main/res/drawable/user_pay.png | Bin 0 -> 554 bytes .../app/src/main/res/drawable/user_sex.png | Bin 0 -> 1123 bytes .../app/src/main/res/drawable/xigua.png | Bin 0 -> 2622 bytes .../app/src/main/res/drawable/xiguap.png | Bin 0 -> 6605 bytes .../app/src/main/res/drawable/xmw.png | Bin 0 -> 2278 bytes .../app/src/main/res/drawable/youzi.png | Bin 0 -> 1798 bytes .../app/src/main/res/drawable/youzip.png | Bin 0 -> 9547 bytes .../app/src/main/res/layout/activity_main.xml | 30 + .../src/main/res/layout/cart_have_product.xml | 15 + .../src/main/res/layout/cart_no_product.xml | 45 + .../src/main/res/layout/category_detail.xml | 16 + .../main/res/layout/category_list_item.xml | 14 + .../res/layout/categoty_detail_content.xml | 32 + .../src/main/res/layout/content_category.xml | 29 + .../app/src/main/res/layout/content_index.xml | 222 + .../app/src/main/res/layout/content_nav.xml | 119 + .../src/main/res/layout/content_product.xml | 28 + .../main/res/layout/content_product_title.xml | 33 + .../app/src/main/res/layout/content_user.xml | 234 + .../app/src/main/res/layout/index_famous.xml | 56 + .../res/layout/product_condition_item.xml | 39 + .../main/res/layout/shopping_cart_product.xml | 12 + .../main/res/layout/shoppingcart_title.xml | 33 + .../app/src/main/res/layout/user_login.xml | 99 + .../app/src/main/res/layout/user_register.xml | 168 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes .../app/src/main/res/values/colors.xml | 6 + .../app/src/main/res/values/strings.xml | 5 + .../app/src/main/res/values/styles.xml | 11 + .../com/example/catapp/ExampleUnitTest.java | 17 + CatApp_android_frontEnd/build.gradle | 27 + CatApp_android_frontEnd/gradle.properties | 20 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + CatApp_android_frontEnd/gradlew | 172 + CatApp_android_frontEnd/gradlew.bat | 84 + CatApp_android_frontEnd/settings.gradle | 2 + CatApp_web_frontEnd/.idea/.gitignore | 3 + .../.idea/libraries/chromedriver_win32.xml | 9 + .../selenium_server_standalone_3_141_59.xml | 9 + CatApp_web_frontEnd/.idea/misc.xml | 6 + CatApp_web_frontEnd/.idea/modules.xml | 8 + .../.idea/orange_front_end.iml | 9 + CatApp_web_frontEnd/orange_front_end/.babelrc | 18 + .../orange_front_end/.editorconfig | 9 + .../orange_front_end/.eslintignore | 6 + .../orange_front_end/.eslintrc.js | 29 + .../orange_front_end/.gitignore | 17 + .../orange_front_end/.postcssrc.js | 10 + .../orange_front_end/README.md | 30 + .../orange_front_end/build/build.js | 41 + .../orange_front_end/build/check-versions.js | 54 + .../orange_front_end/build/logo.png | Bin 0 -> 6849 bytes .../orange_front_end/build/utils.js | 101 + .../orange_front_end/build/vue-loader.conf.js | 22 + .../build/webpack.base.conf.js | 92 + .../build/webpack.dev.conf.js | 95 + .../build/webpack.prod.conf.js | 149 + .../orange_front_end/config/dev.env.js | 7 + .../orange_front_end/config/index.js | 76 + .../orange_front_end/config/prod.env.js | 4 + .../orange_front_end/config/test.env.js | 7 + .../orange_front_end/index.html | 12 + CatApp_web_frontEnd/orange_front_end/npm | 0 .../orange_front_end/package-lock.json | 36652 ++++++++++++++++ .../orange_front_end/package.json | 89 + .../orange_front_end/src/App.vue | 26 + .../orange_front_end/src/assets/logo.png | Bin 0 -> 6849 bytes .../src/components/Content.vue | 183 + .../src/components/ProductAdd.vue | 120 + .../src/components/ProductSearch.vue | 75 + .../src/components/PushMessage.vue | 46 + .../orange_front_end/src/main.js | 21 + .../orange_front_end/src/router/index.js | 30 + .../orange_front_end/static/.gitkeep | 0 .../e2e/custom-assertions/elementCount.js | 27 + .../test/e2e/nightwatch.conf.js | 46 + .../orange_front_end/test/e2e/runner.js | 48 + .../orange_front_end/test/e2e/specs/test.js | 19 + .../orange_front_end/test/unit/.eslintrc | 7 + .../orange_front_end/test/unit/jest.conf.js | 30 + .../orange_front_end/test/unit/setup.js | 3 + .../test/unit/specs/HelloWorld.spec.js | 11 + orange.sql | 133 + 233 files changed, 44226 insertions(+) create mode 100644 CatApp_android_End/.gitignore create mode 100644 CatApp_android_End/.mvn/wrapper/MavenWrapperDownloader.java create mode 100644 CatApp_android_End/.mvn/wrapper/maven-wrapper.jar create mode 100644 CatApp_android_End/.mvn/wrapper/maven-wrapper.properties create mode 100644 CatApp_android_End/mvnw create mode 100644 CatApp_android_End/mvnw.cmd create mode 100644 CatApp_android_End/pom.xml create mode 100644 CatApp_android_End/src/main/java/com/example/cat/CatApplication.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/config/WebMvcConfigure.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/controller/CatMessageController.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/controller/CatSaleController.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/controller/CatUserController.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/entity/CatMessage.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/entity/CatProduct.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/entity/CatProductSale.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/entity/CatSale.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/entity/CatShoppingCart.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/entity/CatUser.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/mapper/MessageMapper.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/mapper/ProductMapper.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/mapper/SaleMapper.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/mapper/UserMapper.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/service/MessageService.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/service/ProductService.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/service/SaleService.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java create mode 100644 CatApp_android_End/src/main/java/com/example/cat/service/UserService.java create mode 100644 CatApp_android_End/src/main/resources/application.properties create mode 100644 CatApp_android_End/src/main/resources/mapper/MessageMapper.xml create mode 100644 CatApp_android_End/src/main/resources/mapper/ProductMapper.xml create mode 100644 CatApp_android_End/src/main/resources/mapper/SaleMapper.xml create mode 100644 CatApp_android_End/src/main/resources/mapper/UserMapper.xml create mode 100644 CatApp_android_End/src/main/resources/static/back.jpeg create mode 100644 CatApp_android_End/src/main/resources/static/images/apple.png create mode 100644 CatApp_android_End/src/main/resources/static/images/juzi.png create mode 100644 CatApp_android_End/src/main/resources/static/images/lemon.png create mode 100644 CatApp_android_End/src/main/resources/static/images/li.png create mode 100644 CatApp_android_End/src/main/resources/static/images/orange.png create mode 100644 CatApp_android_End/src/main/resources/static/images/youzi.png create mode 100644 CatApp_android_frontEnd/.gitignore create mode 100644 CatApp_android_frontEnd/.idea/.gitignore create mode 100644 CatApp_android_frontEnd/.idea/codeStyles/Project.xml create mode 100644 CatApp_android_frontEnd/.idea/compiler.xml create mode 100644 CatApp_android_frontEnd/.idea/gradle.xml create mode 100644 CatApp_android_frontEnd/.idea/jarRepositories.xml create mode 100644 CatApp_android_frontEnd/.idea/misc.xml create mode 100644 CatApp_android_frontEnd/app/.gitignore create mode 100644 CatApp_android_frontEnd/app/build.gradle create mode 100644 CatApp_android_frontEnd/app/proguard-rules.pro create mode 100644 CatApp_android_frontEnd/app/src/androidTest/java/com/example/catapp/ExampleInstrumentedTest.java create mode 100644 CatApp_android_frontEnd/app/src/main/AndroidManifest.xml create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/CategoryActivity.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/UserActivity.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/Adapter.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ListViewAdapter.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ProductAdapter.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatMessage.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProduct.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProductPack.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatUser.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Condition.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Product.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/PearsonFragment.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/SetDetailFragment.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/service/TimeService.java create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/a.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/address.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/all.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/apple.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/applep.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/arrow_down.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/arrow_left.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/arrow_right.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/button_login.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/button_register.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/cart.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/cat.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/chengzi.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/city.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/index.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/index_menu.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/juzi.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/juzip.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/lemon.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/lemonp.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/li.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mangguo.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/maoliang.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/maowanju.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/maowo.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mhot.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/ml.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/ml1.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/ml2.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/ml3.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mlp.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mlp2.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mls.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mwj.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mwj2.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/mwj3.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/orange.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/password.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/pearson.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/price.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/product.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/qingjieyongpin.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/salenum.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/search.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/setting.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/sex.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/shoppingcart.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/shuiguo.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/spinner_drop_down_shape.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/sure_apssword.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/sure_pssword.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/tab_menu_text.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/time.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/user.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/user_account.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/user_general.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/user_icon.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/user_pay.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/user_sex.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/xigua.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/xiguap.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/xmw.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/youzi.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/youzip.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/activity_main.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/cart_have_product.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/cart_no_product.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/category_detail.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/category_list_item.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/categoty_detail_content.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/content_category.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/content_index.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/content_nav.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/content_product.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/content_product_title.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/content_user.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/index_famous.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/product_condition_item.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/shopping_cart_product.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_title.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/user_login.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/user_register.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/values/colors.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/values/strings.xml create mode 100644 CatApp_android_frontEnd/app/src/main/res/values/styles.xml create mode 100644 CatApp_android_frontEnd/app/src/test/java/com/example/catapp/ExampleUnitTest.java create mode 100644 CatApp_android_frontEnd/build.gradle create mode 100644 CatApp_android_frontEnd/gradle.properties create mode 100644 CatApp_android_frontEnd/gradle/wrapper/gradle-wrapper.jar create mode 100644 CatApp_android_frontEnd/gradle/wrapper/gradle-wrapper.properties create mode 100644 CatApp_android_frontEnd/gradlew create mode 100644 CatApp_android_frontEnd/gradlew.bat create mode 100644 CatApp_android_frontEnd/settings.gradle create mode 100644 CatApp_web_frontEnd/.idea/.gitignore create mode 100644 CatApp_web_frontEnd/.idea/libraries/chromedriver_win32.xml create mode 100644 CatApp_web_frontEnd/.idea/libraries/selenium_server_standalone_3_141_59.xml create mode 100644 CatApp_web_frontEnd/.idea/misc.xml create mode 100644 CatApp_web_frontEnd/.idea/modules.xml create mode 100644 CatApp_web_frontEnd/.idea/orange_front_end.iml create mode 100644 CatApp_web_frontEnd/orange_front_end/.babelrc create mode 100644 CatApp_web_frontEnd/orange_front_end/.editorconfig create mode 100644 CatApp_web_frontEnd/orange_front_end/.eslintignore create mode 100644 CatApp_web_frontEnd/orange_front_end/.eslintrc.js create mode 100644 CatApp_web_frontEnd/orange_front_end/.gitignore create mode 100644 CatApp_web_frontEnd/orange_front_end/.postcssrc.js create mode 100644 CatApp_web_frontEnd/orange_front_end/README.md create mode 100644 CatApp_web_frontEnd/orange_front_end/build/build.js create mode 100644 CatApp_web_frontEnd/orange_front_end/build/check-versions.js create mode 100644 CatApp_web_frontEnd/orange_front_end/build/logo.png create mode 100644 CatApp_web_frontEnd/orange_front_end/build/utils.js create mode 100644 CatApp_web_frontEnd/orange_front_end/build/vue-loader.conf.js create mode 100644 CatApp_web_frontEnd/orange_front_end/build/webpack.base.conf.js create mode 100644 CatApp_web_frontEnd/orange_front_end/build/webpack.dev.conf.js create mode 100644 CatApp_web_frontEnd/orange_front_end/build/webpack.prod.conf.js create mode 100644 CatApp_web_frontEnd/orange_front_end/config/dev.env.js create mode 100644 CatApp_web_frontEnd/orange_front_end/config/index.js create mode 100644 CatApp_web_frontEnd/orange_front_end/config/prod.env.js create mode 100644 CatApp_web_frontEnd/orange_front_end/config/test.env.js create mode 100644 CatApp_web_frontEnd/orange_front_end/index.html create mode 100644 CatApp_web_frontEnd/orange_front_end/npm create mode 100644 CatApp_web_frontEnd/orange_front_end/package-lock.json create mode 100644 CatApp_web_frontEnd/orange_front_end/package.json create mode 100644 CatApp_web_frontEnd/orange_front_end/src/App.vue create mode 100644 CatApp_web_frontEnd/orange_front_end/src/assets/logo.png create mode 100644 CatApp_web_frontEnd/orange_front_end/src/components/Content.vue create mode 100644 CatApp_web_frontEnd/orange_front_end/src/components/ProductAdd.vue create mode 100644 CatApp_web_frontEnd/orange_front_end/src/components/ProductSearch.vue create mode 100644 CatApp_web_frontEnd/orange_front_end/src/components/PushMessage.vue create mode 100644 CatApp_web_frontEnd/orange_front_end/src/main.js create mode 100644 CatApp_web_frontEnd/orange_front_end/src/router/index.js create mode 100644 CatApp_web_frontEnd/orange_front_end/static/.gitkeep create mode 100644 CatApp_web_frontEnd/orange_front_end/test/e2e/custom-assertions/elementCount.js create mode 100644 CatApp_web_frontEnd/orange_front_end/test/e2e/nightwatch.conf.js create mode 100644 CatApp_web_frontEnd/orange_front_end/test/e2e/runner.js create mode 100644 CatApp_web_frontEnd/orange_front_end/test/e2e/specs/test.js create mode 100644 CatApp_web_frontEnd/orange_front_end/test/unit/.eslintrc create mode 100644 CatApp_web_frontEnd/orange_front_end/test/unit/jest.conf.js create mode 100644 CatApp_web_frontEnd/orange_front_end/test/unit/setup.js create mode 100644 CatApp_web_frontEnd/orange_front_end/test/unit/specs/HelloWorld.spec.js create mode 100644 orange.sql diff --git a/CatApp_android_End/.gitignore b/CatApp_android_End/.gitignore new file mode 100644 index 0000000..a2a3040 --- /dev/null +++ b/CatApp_android_End/.gitignore @@ -0,0 +1,31 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/CatApp_android_End/.mvn/wrapper/MavenWrapperDownloader.java b/CatApp_android_End/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..74f4de4 --- /dev/null +++ b/CatApp_android_End/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,118 @@ +/* + * Copyright 2012-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.5"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/CatApp_android_End/.mvn/wrapper/maven-wrapper.jar b/CatApp_android_End/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..0d5e649888a4843c1520054d9672f80c62ebbb48 GIT binary patch literal 50710 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�zysyX$qy=e$fT3I);zi(d{LG!_|v^=p4+LvsaO4ZCN~ zB-KmIW}S_KN_ATX;5;x^db&s|}S8E#kzLatD!GN+|kuC<-^@23Y! z*;N4OIffqekU*ZaeTLtsHRzwQKbwq>RI6t0q&$~4;x_R!j1^WDlIWM;4owb|LaUU;gB#MA@JqI#y;!{{X|Dopjjm?}-C%NvfAIc8KU4twNO{gMnKTHPgD_kgT>dPikq_{#R~- z5_LG$FSLUqOdW;v1Sld5H;iO?Kt~1>?KtDuV~QlMHwU1aUdmH2gDOt#2doNPh*b#| zj*nPhH-OXD^b|$QA2mZwnAQ5#*o;#inRD_HLwn9_qvcj5qS$^Yzr%^V?>svB2OgQa zwb)=f5m@1E6{{~15H$w6r>|_>&!pWVf>~#bcLb7PI#F2VX+|c^cxRYg&Rf-g+-+8Y z+9b3@@uoR2Bq#b(GR}?7e?R`l7gp&^LqAg<39sS{n)*aB#u2+xXKf+_@NCse$b#x> z|D853NTEM!txFmuZ8~B&9*E?|7&T6{ePv{9!U&CK=H^@W*dbvN(+dW(86zl_2SRqP zVz1T$USo{^tp6su9fqL}hRYP2kXl7zv=9Bn*2NMrfQhT&#$P@F8ojHpeo#G{UN)Iu zdyFTF6Xog5MPav;ZC%%W)qUR&gnUzG9AFiT?H=GzZZ6FKLWIy$S~hi#wUT9KwV+!!3ux(uIY&xNOy#_ zb@YdgY}y@5sivI8BEhQ<)Xve#*}|P)>n+>UHSP72oB%los3Hnc@M*l^04)-w?h#El zLnO=xj4vs{#Y3SZyJTN7gLy-Z6bZHV{H-j>HQ)Dia)VL&*G8}J&5qXvX9;%%O%?6& zymuDI1Z2O%G2gl0tF2evSCQCMwY8zQjaDzY-8}2#$9nyGauUh5mPja>5XSRj}YzFxKs12=Ie0gr;4-rl7ES2utCIaTjqFNg{V`5}Rdt~xE^I;Bwp4)|cs8=f)1YwHz zp?r7}s2~qsDV+gL1e}}NpUE#`^Aq8l%yL9DyQeXSADg5*qMprGAELiHg0Q39`O+i1 z!J@iV!`Y~C$wJ!5?|2X&h?5r(@)tBG$JL=!*uk=2k;T<@{|s1xYL079FvK(6NMedO zP8^EEZnp`(hVMZ;sTk(k5YXnG-b6v;nlw+^* zEwj5-yyMEI3=z&TduBb3HLKz9{|qCfLrTof>=V;1r2y;LT3N)to9fNmN^_w;gpvtr z#4Z->#;&${rrl6`uidUzwT0ab5cAd(eq1^_;`7#H*J0NAJlc@Q>a;+uk$1Fo%q1>V ztuCG3YmenEJhn45P;?%`k@Y>ot+ZzKw9qU`LM| z5^tVL}`9?D;Hzd>_%ptW6 z#N#GToeLGh=K(xh3^-Wj zJpQ)7Zzj6MZdx3^Jn@dh#&_`!w5*<+z^_z~Zc1EyN73#a8yMu*us=j$zX|$sa7Qja zJqh|s-0NjR=L@{4^RexB5aiQJk-m~K^0-AnoCz)nOyncC9+EzeaOQ;W`3Fy|tX21Z zYS`m6!*in{AkaUR|EZKLvNDL+D#(Pz#TTPwImog9dM47L2Ha*RhaXuWuVNEk zv^yjmQQilZpE!xi)2UL9FThU@%XPr@><}RDNOnAZVo7F@UzrdfIeQ}ztxG;_5D8{x zpghA^U4P0{+lr65_?%+D?R-Z|%F4h9&{UhTF&^rKK@f1|DYh1V+z?V5Y7DoHO;E04 zspYSv9AuJII$U~Vbe9+yNypV&&?1%5*S@Sm!g@KaK*D-8e_jd`d3{_7GkL8lN20!~ zSPC<%ss zq}c{_ZD89J{JbXK-yZNh=_2;Spj0~&Rmdy@G~6|)6IWLW0jN_~ZwBq!r;7F}yhPMw zyGvM6nVXhJVb3P#P^wo6Z79Mus9+P-E zn<4+(Z00{oIR8jvgroal`}p94zw;8~W8Hp$q0z8RcM-&i5e2?mkT#ZWnJAyHVRQWo zLDUQsCt>vcvL*RGaPI(0&ArSQKsR%QXGrRc8xlXN6w)_JuSZbSE)|-Hje-i9jWVVY zCRpOHe4+=#$V2c!5b$mFdJku;)298132#glg?KN(>C4atl4%gDXow)md;WfQq-vT& zL$Y%hKKUSwlx&yzsU(lOCd9m0fz9X#b2@`^U(GKka``>d5|X z8pLfJo%F4&{{5gKOU+#m`?vEqw|S9z)o@CrRm1=l=xeOA9+pvT)Ga=S5RtlC^5D82 z<8t)jPzUD(Zn9DJFKa~bJ#g{9U^~uf0N{n%dIUWUKy$@)rc>c{CTsKbZR)P;)*e<* zGu3#c0Xz+F#+~==PoHb=`>mX=FVtTs4wHOgdT~g27WD?py|^9Z2A2&5(gXICs0|0w zmvch%kRg|?05N(`)XO{-CG42L%3p)78)BYwkMaX%@s{urW?yoQC%DBEl!tb z+qIV({K_N1-m(n1;jmQ*ldFehGiLQOkR?{M6fYE{)aVjKNPxDp7}3Evlw_rsYy}oo z>I9tCT81hPGr>ar(HF(_{zaxdE81dX1-~r?=j0r+a^H`!Dd1h2GgBTRxH2+xF9pfV zr6vcp_)q7Jy;0zmGH&t|RPUuzQ}I)m5W?5B%SLTDyQc_%oO2lUg5E3L#Bv&FxyQKi z+fU*dE#u%YtnXn4ttri0=4<>be51WT)4n68^vuXmTH^6Z+fCF-eDF)m9m%XHJDTGF zIEy_YfPDHk!(NVDJJpEjIN#gfT&=Cox92;W20|ojSNW{vzaAn<;#~#@5vh#9gD(nk zwn)`Foh-(wGTz2RI2N(gbSCGv80UV8_#sF%3LA{cuN-W^Xh~#g&6j3boo%h#=n-r4 zzTONgkxjx=zE4PLMVm0JmzcL3+r`_YJ>=-LptK4UcoP?JWwCqf%qGnj2CAm1g;bpW zc=Snp-L_MK9X)Fsj)3uZR`gGIHyh=uw6L<#l7A@g^IoduM7G|<3opaWkZR123QBQe z00cg!%35wF(b@x%^mL~rWQlDI`05vX#~75`3=_F9oA05`X!XIX77X!|g`nXw{BmX! z6m;1XDruiW3Ww$3vFdvSZ9h$jNopc#&JX!Lm^j}U6XH_xz^q7YD$fFP(xubauVuWz z<6GkJyg;wwwaAO^O5pP-(*t@MEMCWM2zY2v@Mg*Wfeu@(C>6lg2d_U zXkydADuMO6yx@Eu(!0C8t@4I)Kim_!gvMDPqnrH|Q0~ zM1vX0ItXknO){#fNgWNwScueS#7wP-InL$k5%`gmg2$Q*%%nHTm8!0ibosAkct7cz zUtu!`{C5zJG1se79|^BUxb762i~QxxNp5PlPY5KIx6w9S7W)w|h#0}~EQ%BQ&si;v zvBI8D+-qFH1E9DiHj1v&*nLQqpQYUKnb5pz2KW0D7wlDM?#|A1$j6!?Mde@a>w}D# zX4D@r9Y`{4NsY{4OGn32Ts7Slqe4+C6%?Y$S@x^2$%U7xXyIx_fkbJjdmDr zG3TY$_(^f=PBth@PU$(P>s!2$RLv%3)7@|mtg4-wo7s7oU+B4BNs3}s989xGNB*`oRQ~ocNDijOq26fjIl>+`e#NPDIsyiIXm) zO6rQjqHyQsl_p6IiTj+=@|BQ}zDkR^rcmMq&oQ33;P>sMy?7ccB1k+i zzGvMKP%A`m~)r;gNhP zBG|G-*d?Gi=i|R|0=eVu^)%Ie#t7U-pL(u|zVIUP4w%;;dE;Lt+v}s4I;$NZ#VH87 zNoFz{FCfRDmeE@U#b;!-s*Yo9;c||hjW4zHvdCZf5XeRBz|$^`yL%W~*v&?7^i?%K z2?~03DjYqn7t|@mQ*5XZHB_~y7Ei{eO{!~X^Yxl{>v@o^<^rHFWNgQ>Kitlni=V*J z8&xA_4J@Yp91m4yN^uuvZ(19gFDzGzqNrJLaXH%8Dl7#rdER!XgTXFZgt!JY4@OiE}3b32Pzbj)nI7kKeR7Br|x zFR(8p8qdMMMM8=K+g?R_3k5jVrgJ83ZYTPrPbmW`?T@mhzag=Dq36?8PJvqDhJ*7M z0{U4XGtN6%(UWf%&O~EnuHG79nFT(v<+PHK2@Y4^C{=zs*iZ~EVbHOrTvBXqb4KD- z&pMMu663ByI}OEAJj3+~A1el$m5AEkh>#bjKl}^vf=j&adgZY0GLlE$6Bc?oqF_v18Ix%3(Zw?{!V=p{lIxU6SIk<4$I{0U}@ znuoM`TGm!vNuyX}Ok@KCxC{MNwpj+F1w`;;HRctuLQtmg;0uBl2u`*zW@F6+S(osl zTvrKIpkiQV8PFO)4gh%NaFh9FGYSLK43{Ek@zGdr;Y=uSsWxHK1&J)Fjs9jG8yJXV zx=Ohi7D%i|h>hT{lPMvC;>|N1bOO&N-EtcUVLFeZGCG1F>}4r9qu`q}hp)qjt$2we zacGRO$2cn_%FV~IS~VW=F>6StmI}!`2guXSr=Jcb~qj;b#nxT)|t4%GlNo} zo-yQLi!cprmaZK3oadq|cp*}4sy$IjFo8HziwdsYPr%mFS+Azxn1UU=tO=7jXCoKb zip6_)Q>vdzvhRoZ?t`%*?gyzdo{HT+W8$amGE=a^wb~60Jv&??XvYkLKNRqRMWJB1 zX+q3@<+IG(P1d_`+lvL^C}4-90*LuRnRiC;-4{O-FPODpxiGBN#SQ9H2+B;JqhDnfLY&c`Hbsh*Nbd_6nZ zl9=4Ovg803&N()m4bzp_yjrrARDUr~a$e!;?Bd?vw8ZsDm-ZHMwfhtN@I6AG9&-QH zp+LW1tt1Dra(n>zr90}1%cETiD2XOVUyjdP+I|8|b7kQMcaAl$<^rr5T|iD3jp7%K zq{bY)q)csIS*0Z=qmr2^5Lb=N47!L*t@wXzq;4}I>+)>*)t}$y!`^)Wbs92AHPo@ zdua*H4TdfzFK?I&g5+RhbwlA4(mh_lf?~mq!q!Gx`Zs#^rRq2uu&9jhOc7_XlSpv& zndOJPFccid+ddXM_uV{N{~Jh&K@0jn#U;~#GqEHPLjA!642j_ zfmuhn!AA{O@pb#89k4lnb8lW8od-;6nP}7Kwt2wq=&Mxsa(!U>WVx^N15Z?r|MniI zEn#jJy1{bGdF@aQzRA!^!Y5|kYq{aR+M)4&vG&Tr@J@Ny1>1a7_?Eoo^it)I`UdSe zujc6wdEwSLC^&+;1@lr3gDVXbe@*MctM`z2$bj|zo~`QQb(pwUu5OH7i8&DUqyK14 zF!!3!uRQGGg=kFdS<+HjzhDo(w-~SBrtDBd_w_+fdW0dpT|j)mdk||XX}?%o;4RAu zof1gVjZI&#T;yLg0DoK!m}u1rsXedYXgOLrw)E_>1k>a`D0NA^S)|f<_P(23i(7lg zf0lS~zhD zINR|YzR{)5#+1eU-cV3cOg5=L0GxVkQ%ElBEP?#FTWn7cc%XnFH$G0E#!RA2{rf-x z2R-4HdYE2m1>Mn@pTyp>liQrVC8voT4OpXdhy7DAIr^m|T0fgoo@T$Ep+T$iEs0zOXJ0fTVEpTA8jJ#DNdUtDDZWpgKH$btBLEEiU}KG?R? z4H{)_NnT}8qb=N2*IxC!m11tft~qS;L(sc}q?7ma& zZND)34!)yzz{@9ao%c+Gk#>O4ateAf-r9zca_-tkU3@Xn1E?aUqinmCi@GbT=sa3q zKPyB15v|h50)Z%l8}i1uh!&SB3F>UeI*IDe zp_`qKh7)LFd?kcTS|Vb>7g`miC!nC_+=A))I>^T#K>3UD)(1MlPR`J92n`_y98@Ux5!dAKe4XCRi{*wZl3|cn#H~> zln&utaatEGJ*&(vZl)7X1C61?Ha*xOW3{2vqdM!e31Q#sClAMPhq#`Ka@v1>cAR~DMS4iLzdBb4eS(%%!+{Y`g?TvfF(P`@$UlOa`mDQD=5akH5k zDiHth|Hhyk62Bh@VZQ0U8Rxd-g>eu#3hx8p zi|oL$BN#2DPTbRW#xZ;0KC`*U=lca>7a`k>jE;%$RNbq03rPR*RW5Kj?l8bFHW|k~ zI~G#{nlZ#{wCYz#cGCtYvQ2+3yQZzqg-Z+iDo;T79;nX==?r>!Rr7${dgL|~PC}!k zkwgbMsN=@knrF&0M(QvM3?tfLN6x;`gY+WZgxr%5K|lV0#RQM2cp;w0`KA3RAI=KX zq_)ze1xdAGw%slLZ~l*QC_-`;cPjL=6!UAT8fi#RkF@ zFxZst_L;sr5tbf50#s=#KGg)g7y5zt&z#Veu(J@neBV}k3go5ounsf%c6o`t6;USM zdL1NE{Ni12$lQQ;%q#jy9R-%#ACwQa4Vm_K%6hV6qt&1bJzFGHsYns96?D zu6bH|YY>l#n2}{~YPIh#5Yz?`l~yo#&^V_jcvsLcfgQmy4?&(GaL%s5Ae}hwXFL;; zXNK><%cyZM&kruofu8Rn!5agDfDxL|+~#HN%(=q~=~%daMa?>XN(ziX2O?SpqXxKp z)d23BQA0#Ic_H)cv&?K<@K@GXS5O^wfeIHm;`1nHhs*V4RoQa7J9@6R6o}Y_tSafq`yu?q+R3QVihW#6!;r0i*8g@y}^BuXI4( zYjeJup^poCg`0?-DuDya_3$Y|Yobf5os0HIm>YDtaTkcDqe3yU-Xw%oT8t74?KK>lC8lZvtn88Us;`n_Fi|I2tT|jV7h`d#n z^_Pq;imf6s`vT@tn`ISTC{Oy70Vf&~)vbh>&wT7Jo!$^f-jN?B4rmtWDwj*ipFxqK zC7x-<>ak}hi5?vS!gRK3bYx>*tv0;X54>@)2byTK2y1;*Y@N{!4b#hZIl@x!N_i~A zYIzm?!Ve}7xGJreRHfI_>+|dMz9Om~LIGg{&)NemNSH~v?})&p32_-lMvWZD=#XzN zm5_|sqLFBX!txXVQM6*v=hDU0^U!rWn}mI9%=?0u z0ZZDa#qHZVM;C^8Xe_EI9xPrVPq*4>}!b>O2eNTFpD@8%>`D`P1u(pN08RgFL|RY%Vx zvpY-hUiMA3Dw`ZRf;1S z#Cu`s5D}AdwIa~Q+0r&?vvpvwe?CviFiE#pT}-G!niAWZc#u%j80DQdC@sWu?D&~L z#Hv!bq3BEzEnobi>z`8?&CyQN`gN2`UgW2}Fs{tGRxTlC1d|rcWJ46*+e*bwsI8JH z%H*wnbPeCo&lr~wku@g7uIC7?72@jG zH^*vFO#Lgh6e}yPi4VKC8_y+I>L6i#q_>pb!UZdTb)?4)gx7eGtU{4GGez?~ymG|Y z#+N*o2=uK(jyriZ?N%1D)?~sWtc>Jcb zeT!t&0+8lyrT@3y;q(TVQo9IQ@}g#hz0XR*6S85oIz)(==#=`RJGEOBfWd zi7hK@k$=v$9Rx#y=!WeNMFq@mMM7LRzsrdY|2?W z%HgE2NY4PC*2^a{cEda5S12$2EA@ex?M9@bHSkRih{`eda>jg>nHHs4B<*euVyo=< zS8ea}=RvXk`l)*8a?b%d+84dHONPI%OkPpUP15KKYfZI0mbA}@C<45{+?-7DqFTLK zd|JAHbh|JHX*jC#3d{s+KE3QBe%A zQOXRbgI1;D;E(~gAT4JjS9JKQy%`GDq0&Vp&)tJc%c_(jIYGzi!ln6qij-O0iJ21C zt+4ZsJ$vz+6m`BZ5^7GgFhI;Ig@v}k#^NBWb|%5u;b0pbB4d2Irk&Kzra|GTDaT~- zucRc|44P1pqk!FytDFu!6ccd9nasV@vv`}-H%gg5ELCA#Ev zpYVkWMW#%inszrWSTUZ}-r){tK4Oc*-02p~))ykW*Y4hJU8P!;Rvm>}o$<$d|3`=F zE|7DIYFY|4RmZM;y{`E4bpJ;Sx0hzr^HxWC*Xr6Ppk*n8&sbMM&{e3vhspxId#ymu8XF#OJh0P)zHxw)GbS$>5$8boRB7VOaXgcP?o4~jG=|} z%c=aGdp?6K-(hT@89XL!+gIQI;vcK&!yH#0_v2omRtSg3r z>&&!(96I2Q+)df;nk6^J`+=Vbll1z|knbhXI>R|0Iu4PS*%sx(b(KA@iK2T+DL z!;6nOt%!%m%xkt1jrw*5zr%T1Vi*UEP1g@STbmlHGn9F=2i#0&ikU_(9jd4s&`9dO zy?Y8=(JQ_`K$JohV6~R~ZZ1izAuMOr@;OVEo=We}WibfqVGTfz@}?Jp)3o6z&sduG z;E>P~&s??jO@_<~IRB|bOy~mJgl03A@^0UTgDnL$uKu$3#-LhWb`Q z=6~+5nHxAencMy|kdIQ(mPL|>=Wd|xkW*D_egxv>2RBD^`aMNPj}IRuUOLxJyd3m zz&rirB*|SxZz_W_e?&k$luAU2N0AAqavrW$l8ysI02=+GGKE)rE-T4Tus7WT4R`dO++T@(&Sk+;BM^7Q5=b) zq2_D@d1+HRn%NqmJ|p~21^NrH#+oV)_d)9eMxNe*W!Y7zym4muj{kxQw(X2~$Dahx z>2DJ}s{b`i{*m2fsl56kJtKHqN+wgG0z#&)>rqUP$5RK9Gy(&K(bg(VxOn^7W7Q|4 zy7O-Q-;zw>7T8&nC!&pzOW1lvLzF3c_ol@a1wFvz6IM`qWA1< zEiQS)%$S0m(Nk@z1!8^Lot8IOv5+8$q#80ZFQ`gdLZVQBh7u@xHk?pxo!X`Y!U;yT zV9&geHFqb>9jXEXXKkOWxAHQ$swfDgsI1Cg3JJJm>a^#V>Eh(MsY~Ff|!X(;Zg8TwnS&1vah^ul7@4~nns()56G~~XOJ)fG+*TkUVBhmoVR>Skq z1{GZJlcS#72i;B9i7~M{O@-`4t`4aKou#BBAXt#(D56?F4brAF;94??^0eLLFua+B z)1#v~?00I)%&=Y;KDGeSFIUPF_uNzp*j+j(yvy=KlQSC!4+3Fd$mnvm-~&h(B}S~J zLR``O4C;=nB|j^lm~gUov4|>K4av7zYE@R8m}I0mPuI;6aV=q1kI>#`DuG%`@M0`B zH@)KPTX;SNzxKM`{!?+3>!AWj+--#|pDFzKuDSOgyhZ!oZax0+En(z!D`}RoFYSeZ zZd!d`RVtstggHyreG3))R)k#nG4Rs|V?VN27e`RwDBfmgXf)%Su{)ZJz>{=rwE`E= z6T1yIt}KClNx-K8iOGY>QDpaktmN=FCl$gs%AJ@wX;n0aN(<4Ps>Uba5z*0p;1%Mw zJm?a#_0JWCliL#<>e55@_i$y)+nWy<>Qntv2Pyg9DTdl(I0D`XLDt%Q!ZuG7^v<{Y zGG?Jr=D!0dlD<1ivoBKiU(?tDH99?=)r|9luNMQ$t(oXvpUc;UG~sVoZIv*Ug|VC# zfL}p*iQybOhz6&wF+d1hahR${WA-7#wUxVQvkr?44R`5AJW!8*eAq36$3_Oq-2lpN zD=-aj-lHL1Xg@Gxe^Qij)k2YMRZo*8zivp-ry;$jZ6DV0AkH#I!Rr$hPi4BOuehJs zjc}QIgo=$Rdtu}0Q;G+ z8f@Gg1tgC|H_1B@!JZK$2u!&(hImH-sS`15_%gESYql9LsZ&*W#}t+N)TSorQ{|d) z^&kv`Jd$)T=AOv6n*OLwtbG2U01!uoF6xQjWuDeQa40 z_ZWlsiCo@XQ}zP%CFcKN8lkbh2I!>ysp{_*KtXxumN1H`B!S@zspot@s^g;NEkBeo z??-TDzhRKkF~I;07T^}aZ&aEU25g^#iZBp{JcU*4ypZSthq&1J><%fdAV0^&cx0qR!i8l<~S2Mpf3|(f=ik)2g|GBhPJDX2$RnSS%`DSPwsCzH)mu!HA2v+xkWme<4 z_M4wmgmz>u94Wh`Iox?Ep%OUx7u&A@<(zL~J3ntuRNB0TNWxP!R}4}SL+)D!15+G0ynmrkBY0e;$&v6?5L*q z4bAb^dIianfZARpSxOHvK7R-z`d^}U5h3p4)~$f;$?Mi$=(3DODqJBIn;V1Ll5W8j zCK{;^ivkv)vv5(!FQ=xYM{S6b*%jqRTE|#;H6aENfw)&o1~mbd;Js_Ozs`b>syNb zj+Smd%c4{{6bDaNVh}mn;x&7}*KW|%3TU?;x$uguy4%B=biQ(mAZO&=k6)i4u!jrqd&&Y( zB>lWCqTs4jIoK%Uknd?S`yS}+{iP#*dsmWIwUJp+cX2Sbo{Eds2 z*V9FF*R#0==ork%|FWB%{=2*vbmjQ*1dsI0Duq>Ann0}R^Vnpes%yqFIUE|1Uz zY`$br1QQXQFV_LRmkLe7cwj^@J9SlYscieuKXJ#^mEQ$k#3kEx9b@sHO%w}k(9*_c zI^B|W?b-AD<7=d*2Y@Z=n#l@@&A211b`Slw5V|DleI9bABltj!6IWkZ)UPc0k_{6EC}Q&X(FNjY!45E84Z3x z$I4*Et{$T!Msz7k6-{{&GnX*MFHQM=?9{jqLLj?3T-oavFPE0qX+_21ypuc zpuLXc;XW5*lc|D`iC}j13$o#NC6=l4{Vukj;*vffTCUA3k7K2wbtx^B!JdEQ?gXv$ z@d79z*VRfn&k7!RJTC&Mj}kUXo;1FiyM{7dXL%pgMarar-uBVy9)$C~HINFEwgxy! zww4OXfq=`#E!&9(hfZINFJj%COcycF0$(U64@aKDM}34D8Y#2G0YJ*F3~>laER1HOMb>l>=k9d&Sh^WJ`-97;M-oc?Dc9$tPoAVUX zP92Y_zn=|OLWq}%!=YuDzEsNyN~=`&Kv$(JsxsmY`ZJk{p~ zD4SZU2q!5(D7TKhP7G}+cAHD{U1pVhOLdrbsy?)wp@QB91PFySQI_yKKU{i&G8c)g zBcyYWex8Kn4dH;a(Zc-i#k&U3EQ|JYXW^4op(Kl;c{x92F5`&l7sutto@}^&)P@Ed zEmS_<`$)1H(Xu`A6U@byC|@tjHVdwxHmIwnK9t4JMAO%{<-@Qlvx9OpkXGB{t)Do* z#LKkZS2xE)-2`m7XLxJ!%q>7Y3;M9r@d}zP-C=%+vvJi2FH>yIvaI2Z?>-^k`{4P? zfO*L-H3tq9Sc1z`<$0EunSz#-Zf6WU&q5N)W`OzjMHFnZYiSQr0lha#wj!5m53zlE z=l!G$8N;^uvjTeN;P#HN2JB4SwOIq&h;5RS+eVe^OjX7XS>0dWCtWnP$n)V?Wtj%R z-tUE-fBiOHfOi)tPCy@KQZ0(H0vPtpjB8fhBbLq53h;t&w+pwVd%OcD@W+*@TSy(o z*dTh~&KxT7a>Cui?k*XGE2LADAn?c_N2Hw(MJb$lvCIbeJ9fA$DP^$M#=jj4%Xr~38&Wt$N4Y~}rm_K#TV z38Y7J^7UQp%9m@>zn4+}t#!+P46p=kZA{EfogMW5ZvmW?xUGn#j6BkVCV)5}6bMot z+B9#mIv7kN(5Mj(BTi{8h$s#`enO9?Hn3cqvAWr-^htu}Br+Tg_YVA4fIYLh$ydL@ zbx+{wlk>XjIeoPK`QZ+w2Rem5jQ%@$bJ;BgFY9EDf_Fjsa^q;T+Q!nen_B&7Mx?{k zaiw+=oe;WA^)1p8$ELaIWtZxG)Hszw2~ML)r0#w%S7F^)Ott2B`d3+VDGIH) zIBnl{di7gIHpVbsU%#VOvkd3r5*aIMe7aALELch}<=nH$qDu|6YhMoCMttJM92)XE z^KM0EqR{m<$nTO->b1Jw*~W$1M~ZzUSkNeh`_=~eF-&@MNrQ7Hl!Y06`yd+Efw|SQ zAO3aexzN5FpW~%%R4cA12(M}^zml0Hq>1+>6sTjU zLPNR!S<}{Oo=wj|2#z*&g!3S0#|BFv4ja)`*e<=FE$XbUx!nEtRWeI`!5MfidAlqmysJN-CXU#*!Nekce6V#ZVa(@aoPENcLt=k^0zIth+X+ zHyG3{y;~s3w)?2=?5QH&4nCfgW!l=k(~4}Jrv=Mb67Fkw{F7X8{o-1_?F;MQGy+4~ z)C;U%_ah`R?M^zw$sh6aW5b+J7h6VHtC4&&-fw>ccx(6RK#Co9@N--xP;G18A1fwa$ zCee>3BNtNsP=^RmDl_o}5hMM!n(SX0%#W!Mn~rV74E;OaLW79U1UR-Gxey-gSqE}H zHUPOFpI2c@mWb~NDE7KDJ?pRWb^CW-{nW3{2KnCtpZ4!a)PDe9*v;6``TsaCB&kAp zBCVis13M5$=p(V{B`fJe)OVH^5*wFnePbO~p*A!CFETW@f{SB5GYbSXimw$~$0uKD z&XZc3X|%62>dm!6Xp3iDdHPECWIvh^M-6`4y?Zp@@^oBroawrITmIDX1nzZtV+|FC zG$>|HoBgffAt5VeX?m|^Fg*X;eNzJ4G27ep!D)`A3LgkkC3AV&EUYp)Lkc=7XL+I7 zKY8n8an#QDaW3v7uTN1l2I;8qGyP zGo@NCL*yrqPBSc%tI{Op+Uj8oSJmgXtUqrZNj5&)JWtex)zo&5TqOI6$(*mbi?*09jV8NM^q=~7HK@8ND z&vN68l_s#o2c$x~ep-k$I0#vnnjJ^D3?&XWL=24?H`-IU$*xUGqbEQj0=t%*#w1c} zq>DwBSCC3Y=!Y5n!9?|ywp8I~P{E4m*^t?n6snQ6QfCGs-q9HnfA8PO^ z1N!Pkvx4>;bv8178CXOHk6I??d^wa28AiXj>7vvG!{8bhvbpt!N^QcS^%sfd34w#J z*ic7ZLfg6N*o=SVlN)@8_=yGlz)+^O)Va6mf``r`TVNODns&wnQW-YQ_fHUHD%|>*U9631xSLio4|(~i#Hz%72ThiniprGkUijgXBk+{Q1)`uY zv1p^bdn7jaxL0Z z{Zc(2iyibQk>6wJ+Qf^JTKDc}40|_}DoYT4wsP&(MCPK^^zyU{F$hk!>McayQc-fX zG4T^=PrJTWZ%M$Dk~?3=3ndRxtTk~x1sDen+1#;`7p`tDC_i~Uw<%{%E#%k)4N;_z z_)tnv*im?xl8!7El1O@aGyS7~IGQjYOtW}QCLL&lSy4sKpv6Svo^jt{&0WSWE7RNQ zXMJeCYGrrXo^syCBq=k^Yp6WATl?5g=}O)aItJ~NH7E3x z8}7cCYt@eC%a`o?bs;BZps4ykulwV3IE$5mXI>v5XxJ=Cr04q{V(Qe{ zvb9mW^n%H~#z!b=Jc&9vtzLVyF4!#;XvUS5&QQ&bWwTg%>MsXMDmM6z2`*d02isc{ zcvhQ7c_z|UNda0@4gf#m`nu@Xjy=ZvXlLnN=IM{Hemi4 zp{UGjCfaRf4)yUwY}n~u^YVeeZ$iW^ zBJBJYg- ze9E0S`OXy%=;XkHZlWzF?aR*tR<0h(-U%rV_r3s)Y;FWZE`|BfwE^`>^vEF^)O z$G?O`1dT)^Tnoa2I-bgJ-QcXMkFgPchk`ET?Hzp^jQrhRy+6_m*ouH-1_r)fwmS?} zJb?;5bHvpBxA43%u5OxTg$k_z4Sy9Fbev6$9+E=#nYBHUCBA%jc+K1j;cZ>d*kh^| zaK@=6K4SWaBx|k1cQmm%If!lY-6Zz5b~mXq*LU*GXu#0OFH^E2%O${JJ8Z;xZIj6Q^6sgRB=E;`=6Nfv51nLu&4KRfVORYFQ+Dy#DzxBi+9`b~5tqoFmrpcOKzZf)MeQGfnzqaf*ZD!X0Mn))xrX z9{!URDm3nK7?i`DeP=jaS#d^nFq%?ibJsmLL)YAbDiZpbZLMm{d38dM=-A9hczOi_ zJrLVnxOrU=-@zPW2*M}E4}nd3q$etV1g8C>F=;)xZSXR^PHBCtrIMS#5b3_~4Ezt$ zZ79KZOS523`S}NbLE>}C036oYS-{Hl_MbMkAJaqSx6VpGrkLk<6q<(|_UgiotcD%u z^)~>@_N`ma;Pv9otwheygmDX zbNRlWqBq|UxPMeRPa_5FabGU5)JXqY<@{&kSe(BjJBC(&Z*BUY?Sy#$t3Ts6_=n%6 zp_8Dkwe?r`Ny^;D_^X6+`7$E?-wM+#<#QQKespf4h!cq}6a?$@B2~4%C5?5;#l>Ig zsdAQt1gAZ)=g2F)0?ESXlK1Ktcv5SHaI+y6FH^L_i8T4VF0|WTj?>T6&;!@JyguL6 zhDE@=p)FB5O7AFHVS{vzM*8Pvt#qm&HCZK!yVXnCSy(fxB-$pc0xHeJs=}SAtwetj zkV6-UzNMa%*q}Vb1QF@85!^FUyMjId8=lOhCZAf-gY1QI1=K6E!&3sGLlOmk4@OAq z(WFBQ%-Ro%*F&FCfz}y!Tu;0+k+X-L!W882Ja3$0G*R@nAs7Fq&Osn7(TIF~Go^q8Za8|$-Iy+a4Qn#}FVY!-Vc z_#iS^*LjbyR1reR#=gN9W1xB#ZSA{A|Dr6WFZAE#NB=U_@+kj|P;FBc# zjcCUc8R9kwUpY=b@W(gv0`iIww^6>ZXp&4na-U+L!?Mu%>JK+t(7JGYGy<=;)3Nru z({qZ=8SrMdj%>94!%@?$xg;yKPQ{Vk1bzpReU66li=+7#q~OPJV3u3A zi_X3x8SOy(_2x-ZjcLjly*Xx9nV={w_A}S>H?WONy^RUwM=Ixa`1N8h&7+Pk+z7;o zT}RTEEr^aejI(DRZTFl+caGt2-uy2y;0m%|!m$9R^}_72QWw|cDjHw#(6e0Mqr?g`$scr<)u=4{sv>;udHUn4Yq>Sz zUX`r*E%BFnf3GI}F42a;ZC{(uMSOwM=%E*|W;9p|xh|S`j8Z{9Gn6KBX-Z@wB#9E! zF?h^O&7(9G@5`(Zxck$rG?*?kI!Dz>n*3dXm>Z&Xoa@+tM%F-Dw)2hoo+8`}gnZ9j ztAy?{nqg`*#ybi*|L3_%s$N#t@PTo6fESL+fz2r;k2Mbf*D4e@;z(1A2tH z8zB6Q3iznqQ`558k0)QV*-fY4ZdYn*zG;ob5U!z{KvU(!ORKLcCobX+;)MrlW1}> zSrH=e8c|$;!6B&1l)RbjdZ5I=d{<^XGJnq%_QylWR9SQx@(fH+H-TBRuCaV5*We^W zquU6z;NCX>Nqxp;?>wejhO_ zUOtEm&3n&T;9_x>N=7V%KJ-yoiw8I}yf}~w-5|Ev$a8HxCA|Dy zCs>h!Y?ezghb$^;EwMq|q^By0S8#|DwUhIVdFL$JN{jN4_>Y@VzfG7tD0T>{Cw~F; z1=hu`A?e^NldDOPo7C?(Y6Gf--9~JxuJef9!-|x)CSlE;I1g7RS>`|y`|2sVKg%U% zX>U11G92lQ7^KG$(Y6ov++o|(KpqoF^|59`@wGjnswGRok$8swF9?_FnvD1VAbiVwwF0*+<5h=aKy zSnVTXx|3r2nH@&!17KmD2VS<#ya zy^Bgq=tFov5dCz`W`p6IF0YK>f_U+jK}valfCKsZw|cj(x&F>JB6O>;SR^*@UR?_O zbakqF*)zVUu7Oe3qKyc=TxJ4(2BZ;Ct_pQ}ayU;MLANSg--jGj+8jR37wsSMv* zKpgz+8R~L10&WiVCRf^XwT9^|A2}aN1oswPx0KR)>j>OIHS!CzycvVnWbKkA3iPF2 zu_@Js=HrwDR!!1Q#8@gB;Qdn;oiq?F^$Z1;e&z;K8)^Vy@A+BUx8;+)e{6U3?0fc8 z?Qfv2F@4>Z9%%R0bviB@!76IIFWcsv51*t1a&Ox4i9pCu#8>ntdxK1TD{-k=voI4} zB*SUFOgV(&bk}7$zB%J2FdVQvJbZDa?buE7cj{k-yNj)kWr%D23xnPvg)yy;)AsXw zTW~{2V=HP@hAne3lfrXgfu^U(xGIKvrKoDg7oQc7@4m;)+p0M41HAv>HWtVDBGq3V z-03e*kbfT}|4TaZFCmfN!PMFM%TQC;&CuBH|8{e;V)5)f1g?~Ba<3oxdMs0vZ zMu-Lw0ECbdh63QPjF}2d&Xa9`dy>fz;e5XFCf4DAL?OccneBdjxxRka-R9NV{-(7z zD-^v$nV2n2bS9IEGfRQ=M{1tjVBW>s=CL0?*Wkjg&!#X1Op3T=hBg8b7ZS?S`?;`tlS(@ zA_OF@wBb-?^%A1mJAD#u$G%7Our4Yc(>EA+;T5V9!Uu5+R^?@7cbP1a3ht33Nf+C) z&GB+k3H6cYa0@7u@Lyx(U@r0s&{LFj>W}3CSNhFs$Bq~8fjAYSWEdAt1e$%5BvPWU zY@^gF4J%Eu|2V)`YnDW%FP)L;SEl>-2gv$gWx0Pj!2iS}lfHClUkBHf)eF*d!}$UH zCpQTm$vAK@my}eJ$?ryI*g4s1Q(^eN<#`A0MifI5AXYe67gF41`k3jses}x)2lksY zTXP?wT#PZFdjFegA;N^*EZSH+2+4z>45vLZ0C3;hD?`nYNFjj*2~tj!48UYSm<{Oz ze^2~*IrD)pSK-ck(`BI_0Ixmry19>7y3zfTTF8ZJh&2vU{d=t~xsO;NZu%7>v4abq zI!lb$&Z2%+qtsb(On9eRyJSU?CtYM>B05Si^B7f8gRv_k{qeXkMk?CAmA*#(*}xf- zW?Q$7?pRr?T8gVDzJ7cL3GV)m`6Evqe>QU7`Grzy(~Z!(b3ZSi4Pg9eWuXq*xMWG& zVM~`H0RmpxcTZKmh?WO}`s++d?!mdVGz%09bCn5S6LXaXpA)kTGgdq3qOW@k@8sbI zi~Z%FI~KUvauTJ!4y@yEg<(wpjRTYYSC}blsv@Z(f54)V1&a47wW(F82?-JocBt@G zw1}WK+>LTXnX(8vwSeUw{3i%HX6-pvQS-~ zOmm#x+WyDG{=9#!>kDiLwrysHfZmiP)jx_=CY?5l5mS`pwuk=Q>4aETnU>n<$UY!J zCM`LAti908)Cl2ZixCqgv|P&&_8di%<^amHzD^77MAEgHZ)t)AHIIXIqDIe{yo-uM zL9f=qnO(_8(;97VJX}35$eJkyAfs`;RnL}rt*9hz5Xs|90DiFC2OO@ZB?l!MdW?Y! zVeW$Z2knWJ4@RJxr@0!9%l(-MHk=DYEl#4ev6Ge_Ebr~MUtrj*0P32f95h$u7#2~9 zhM|KP%(!GKDydv2y=;WeN9p1qJV7#xf~7NO6RJ*n*61NJ)-33TQ{}I zRJO7(=F0iqd5tRKCuN=Y>ce7iLGXL*r#jK1o=E#$hpC0Hw5mjjMX8T9T&|4Dal3CO z$n^Yq*7KP%JSfbV_NjYZf{9-%L2-wibG3!?PDz21yQnBSK{$cw0aS!b(~MH%+@Y^g zMbh^HDT{IkJhPp#^C~#|0yC3^d5Arm)5NNiSpq25j%UngFeBVnu~h> zF6a63K7QC#d~?Uq-H#2|W|=~t7C;0wMBTC6W6CFDxKLt2tEh74!D7i0?eogkWEP2>jmm?Q?6ZS)p&ZkxzP?QLz9V1yTAnzUG107^d4Edc`eU(7{J!5-g|<@s1*(lgQ*l63GoeHDU})F-AHL zvTY+9qB`=3Fo!*RAf{x*KSAfbPOq3%0h!l5u^eIT#VnZj2b@r(B}rE6_bCSU8n7qu zdec9Hxl#li5;L|xqIzgWajIz_wSJ(^J;CDo#OQT;>isx9bR#bKlQ`G@hyd_j7v0XU z*FuwLt6w(Lu!EGE2Wj%0P4wtqSqlayo+lvv zvIwLW5a2I5Wvx@<3FE9`l67?{Pqta37`H_2r~Rh`mvn?bJK@;O)^qixzSP z^P7CNTSUwq9Gw)M4gTZjzl6F|Dw_XLZ+{fiP*YDRx4HEw)6&%LXori@JXVM&1&$2V zCl9%_tkT{{zQOSrdbD;S|Z<8bkmY!{JPNXC^QcUh(0cJobNZ#riP{Tx=a`7jDT(xzwJmnVm}Q6nGa zT%9oRYxj^klt5N6rBVfWzD|HYra%E#V{M!|U{lqAWU5u;2wSi)CD3xrI}RgWkKKi* zt118z~o_nKw#_j#v?MmwVR4Y4%(_3PW5iE|2cLH5fIE*5dkli zhMU*G#1uhwUc7sWMQKdYx(}>KKo5C^Na{U&-}Juh(tJ@rJN|MpKkE-g*?$uEfI)Df zEKxb*aGUWk@AbOG4U4la2-@}0F=Hic3Hbt1$B5!c5KQ?(k1sgs-0D%@;n-Z!;Cq{_ zBxJAabMsyPcV@;G1Rigb1OIssZO!;$tnF|9-D0Ch+6n9!tdd`(8ByDFFBrN*Pw-ox zcV*7Bjv^{JEh7HuPApmjnY9PxmQ)K@DFj4j3(eN;VU44QQrXUERI5f0;}m-Qhavv{ zAo};V$FL>UK(bU-j-UyFc?~OsvWG++(fb-0aA?&mKI!s`30^Wcl%YSpWaxX6T@^c1 z9B2^VL6{LQH~s$jJ$`4p@eN3n2U2DV=D-vsx?58lKAsCS!SC4v^m0uDX+)@O*S*6p zxE&BJ&X}FQ`&WGT8o3PW#xq+Lc4Hrpp9a6o_4GuWGj_K@^PZT~F*)^q?e|>&QQasO zz!YVY&QCQ(D0S!VN*Dx((~2}A$YsEKa0aLWn#Aix;u5Zffc7dqF+dYcNSDBMynuIX zQZkv0a*uw4IsVMi4?Km>!1qz*GL=a@C11c_a3lYTCN&~ZuiavZO-Y(66Lb)0HNv#0 z`wt#_)H7j8^F@hB{uZPB{|#F7uNeJ{B02tr&7!1#Zk!nTbfl@$f&xVW!9zeWr@{_> z5%40FkfMzLCVdd4zSfl4>^b%D?OmojR)}P75Uw|bVR|d8=oe5MQ_9BG^z@sHiHpnQ z&dkjAw<9|`h=AIiRusuaVRK0h<~pLJrt@$Q?RJ$i3(W|bDpI93J*qasul!Ax-St@b zT70z{Z9$Ac#uW+8Hp8cW+BEZCFHLQE003gFJgjd6bC(a>_%r4gt1PIKDxdlOmG5bxg!q%}OBBmE^em zMD$CGBvlqmJ64Hwq#{I&4eLk+K>MijQH1o}Sp;1j}*B%iMG#<^c!LVvstF3s)e4ogyjcWT?4>;2{JEMM^F`i ztl&9)S?Kp*~8M)+^p!-&4ec07Sw$10W>b#&6n%ipaV=_5%8df_LS_JKqMhAo?C zqfLGE@2z6ldhp zB1D>7Em+1(_>RhmZGt+*m*>vO9G<q3-DZfdDKlO|pcqDz5KKociyxl*E4@0RqM*whqSsCQV%`BALQ}T07Xe zv6IXT6bWO|KoSQMh10z?M!+PW0uSf#1-I1kgk z$8cTzXe9WR9(n1HVJyrm=o%KA*Hs*XgBr zE~W$D{Akz4%O;jWEpVS~xHMj`dsp{o#$0+@dXX+_VySrh1<6m*YPkmw4uPY6vJ5|> zk3;DJ-lbq(C$EXJh2z*X?*4$HJyBVmnoTqFT`_J95tUE`O9u=LU;nba8?|q`5IjUX zI{BaGy-liq*$IgD_s6J_j=g@C%d8izHOUrg{RJtXW*OPMx*~M{ZIa|kJrE^ zZ(;A+Tvr91Ir=~(%4j6geD?WU0);@_g?gbbo=l=iVVjjY6%Lr~YRs0YC@-KA`pP|` z>K$Ca=mj>xP}M+LwguRU`7>bsXU^y~bxIMUgGB*h|G4G2z9$<4Q;6eyG8fq)kX@0% zwGHQP*A3~Cf|`RB_Ob%FYqQb4%8MAsKvVs9gj>z9HSWtP+@(LptM+K+Y_h3aH9hP# z^Q90YIiG!q(x%+4Vr&>svY;)Z&Ew@1EoHHo?Amx~asX+u?q3v`zgzS7e&fnR$>20R zrP3L77h8PI5}d&I9(6aP{E~wyCdb;fiS9$(;^4JnczkSvfXefJf35vR||0K|IC(?ottwQUIsMi9qL-Ki1PC5|H3*{%XN(vI#!0?7F?op25ln65L)@Tz?(<+kxO<@M9G=^I#=9#3WgVT| zbl4nf1a+Z@&odHk*mqzIJ=?%Y1ViaVpn3@R6~TLbG?~$hX}&VYvoWg7VH@-iPK$D+ zp=cy^wSS3hojkEf*hOx2F4Om(YXd10{e&yT!%sCcf=xKZtyz{x)}4C6it(*XMQ>&R z4Z2SnR+GnjToyoV2iGEZuo%;D!GfAc+?So=e;}fkPp_O|MsuCNM6*e+(Ip-I=Dqy( ziA_?>c;WB1-#U;9w9p~7FQuA@-mRyha=^kiNVj5_bGj0q`62iOw)W2<$OZDt_U2bw z{RZ=QK}G4mA5;YO9gV*%aE)yo&7I6$j1|AWUbHd&qQG|gUmDK;vq(qriv{x|f0(p5 z6$f zH|!s{Xq#l;{(2gCeZ1en^x!yQse=Rf;JA5?0vLCro|MS13y${dX197%bU4wYS~*T7 zNMPGwgSIU0JW2NftQ-3$QXmuq?@1Y^@`;R^fPG&PD=ww}!g($Q^w@U%jh~>J&{$ zIT8p4^dD`WnJ_Z>t>mLFB_6}o5mz%Gl{ncGYtQr!*NEda(Jb9YovwZL-9Tsg=!3Nl&5$2Pez6&4IAf6x^6Qf=1#(zvhhNAUu7#{N>lx@!d z+2KhRXK3(adQQw|B#w9(1`V(JO-7w)D&ou3Aw-!D{s&7PYIJVqQo|)uLy|#Jserq0 zp;ZCFc%J&KZ-~*Vm$tJYJ;QtohtMEla^-AW-eR_`_ipuJ`1HUK?hs)m#r%vaUS-_* z+@<QOd6bSo61=b|nA%cU98n%d+|}3iuZ( z{8|y|Wc(Kyyi_}NMOH@r>?#ywo&q)`n)@kP_C0=jJ~z~WUJzu^3|ueO$e+=ys6z^p zQ`uVC8K^aSoto0do?vf!^n}e&Pbvi6emgpQ{|E0Y-qTPIUsp?cdxMi>EfTK>n^V_= z>-GEQVOL6xug5j;H_O{Le+Iv*Z3DA0iX zHb3Sb%u&(Yt_VcM08@~gL9&uQc)pu7mkm)2gtU2&;d73)p35qTW<8pc`u|WSj&}5nCmZjz<;EMxr zl^p?8=QuuhYi%?t`?^5`>fPlcL=?5&sw70n{tXS9I(P(|C2?whWVVPPS0gYFXU~@9 zjC{H9W=#m1rJ_}^$ACWgAJM(d3YQc*^yKM;$*UHR#$ZkhD8JM-(W{;BZY2Y$wW#bd zXwlT>OFC98rxTg-En@tsKv>>1AlkY#AIY3%lIg3FTe;NcQu9g5b*&bcsIrzU=I3#i z8nu>|Y*v(~l$yTfiuZwyA5s{)-d`;s9gLc273l3pQsn#yLw)m$zh;@hofUhA5iV_S z^Jc-XQ>~@+cQ!jTYg5rv2lRKSMbRK?+T%b-otosVU)L?64nHW3X-F&MiFN$=y<94o zUQldpIV*N1p2VbtRH9#Kj$p&r;g2e(ZcVm;a+wq#hlUi+fEkQ4c>2B}!hY0BP&*#e%)U|_eQgXde%vfhiAhy&HT&-bI#pprT2RHl-n9Or9kKY@ z*y6h^2Ln;NAa*rkeMxTgnOJI23y^g-A!~?`3V~4otb&p;eW9M5-lobP=P*BL2RaxZ3%Wziqya7JN{_s8TzoHXh3ST@OSRX1e6 z>$kR7wI$QYF$t&v}!NXCxg*MV=COu(&$S|cT(SuBvRZ&%%PHyp%;O;VXhH_;x z2HE2!upKD-`%LYo4-j(^+!AN!uZa;`%`G%%&#FDxOtExn{+1$mp2Zq&fXt@IQ+Vd5 zxy8=T8HbuT)*Nf;;=>yVza}=`u*qPzR-qSAEnH34$p9#bZ^G__*EM(OsuHn9s(iSs z@1b-`{6L6cDAQp=<-~@Rg8P;+;HJIPnVAD4Dh;+F&&1@R@G%6ml^W!^W;MP0d)imB zbBq?EBbgVY&-X?b)b_aAoKZUE36E1#{7!D%s3ckf+ca?KU~yW?7Cs%}4bKpA3#HZL zY9w6<)gF>&;-Yp^>p9k(4$X1%!Lb75zWg?uNWkgi10?l4%`F`Zu-y%^bv*Eb-G1bx zfx(%lYkITUQU0wktRS*;%_P0Oi@k^)R&}m?Z&ryTJbM7h6wNb0mMpv9Y>ilHz81R| zNa)#|zlxlfx|5EZ>g%QadIiiL)E8+5jg3iqB0IB;t?;L)3$_{phsj~;UI0o%gKX0g z(gwmaY_#YBn3m`RBz41p#ldnxLp79&YIMO%dpLkd4_drcD1y-7of@f5?&C7T7bg!* z+9O$vNRgMdT#m~Ql>Nl~UZcEw+Do(CxnWs%MNl)erW)%a9eV7n)cJr@N4*@WH$=Sr zAhZ%9vs<41`&UP6;T>@`?np7*dBd--?u-hXv~`mYkhSp%X)aEIJ5@3x@SZdI9=Z7^ zm`a$T8G>!TbmyVE+@a)*=B%I01?eWpM`#8RPKUTB|8^2_5otvAK&gp4QmeXLlLl8< z7q`?^RRNV0Zx>wC?=eUpiywAApVgW1 z26PBx#Gj)=xWi}Wm@kzi;q}eouVi_z3bwY7Et>>Nthd&%~TRU2RklNMo zjR1tO$Zmf2ikfZdY{w4qmcEwuj?VBt(Z~4uu{D*;?462ZUxjtkN26g-Mx^A|7~3vj$%%WKOuq#P1%TfMi%b5 z3A+m!PpQ1fx`!Y4u-@>yAKa9?1&rN1_!|NmOYN}D@6ev!<-68YDd`CqblRnk9+=E&zlax$$Z zEo3QqIOH#=`aS0F!U%onRIz#%d+Uu-ZTV~+KOW5lgf3#92 zs=j>nz*M{C5^SxuTa3NC5PoHADLhR5{6QFiJm3{lXa=#5F|Pw|uTB(`gmtPyy?-|e- zo!SpO%F=zX?002uubhHWls4g@ z$#c|C53m9UmMZnqljx2rvZ|CtTMy21QWa}%;DQqL1`b>3BPxm@4VTtyDBge$=!Puw zyd&F+VEvOtPlX2!>NBKqg7?CC`V+rmZA=K7Y?*qaE@CQvOWin}e)41=!WLN*AmICp zmApxQI7fZ@Fn$iKs11M+Um$0c@jZLYE;LiUT>Q z;mj4M9@HGF55B8!suGMpT5sP$Z0H81g`%akXopX=;Vuyya|V^5eGs80E$GcNc_7{w z^8xFDCK;Ge+b0TnY01uz&_%fk-3~ zvi@tUr$)PwWk9(8y{S8#NB)r=Z&8RFES$pdKZz}*U-@kS(R3c6ORIFKDCtI3bCeVK5Ouo`CNgYaXVC;;%_1`Y%C zS$Gkx5qw1G7=P5+GQv2jWqBM^c;nED(khcK>H|id>bS}R(2;{C#FXUv_o-0C=w18S z!7fg}MXAN-iF$lV4>ADs{#}r_Pj3`vONGc>LbCQ$kqa~BpZsXaR3r4-jfEZh6lG;g zH2?O&x)$tLCc6%_^X-$8UCQbq`iWZf3k_#t`>d-3RZ1*6t})5ZW#k?<7x4jX1;FIv z#JqAvG!v>ArA>Oj^}~zAj*s-^uw4QHo?OwxadvD*vQw8q!$k+PkzQ$ck-*m5V;_V^ zO&2BUt>Gxc!AIbE;ki~+_O#~NVhaYQx6FHt%&w_T7mmi9xrCyXhJ_PZ`?rYlZS;Gx zW*VdJVQtk}tC$DGfP9YCu&PI)g+*tzI1J1+`ggxT`r>R1{5ZK7^vgg50`)~XxH#op zaFi4=I&6N~23d3&(`fqN-9g-AD4TjsqHwXNH!B-hK#bOSvK=vpVyEh|pjvqg?2bX_Aq~vcQBK+U4{r-Z;e{M_^DgE#9TxFsI4gL-&iiIYv zc6g{nT!eB$I+&D&*!`uP%y|6Qh;DOl`zGXO4+>ozdgcSKpd0AWrFrJpE8_Np(d2u{OsCVzDh!qE*XZ~Qkk-UV;Za2i^fWH z4GBwmrBGEgJC z2615hax*kh=rlN!7SVm_!m?!&jd>4(rm^_RjHa;s7IJgmpKidx6*{aw&1Vjb5xBy0^j5%jkNfAs?F~Z@CFq3O^wFH- z#IYRF>aR{2o|F+6=`?(!PHgaN-~%e>IHc&2lxTYNE~aNaMm0JjWHoW#EQ1yr@uOXY zKBd2o6w+Rpm!V{ui6q0wL35|47?O$R;hFf&*I;d1L?g;zf#AW{5r+BsgjI9#8$50~ z&kOiWjaUVk9(WcPI%tIn+M%Q%H=Lk!9ECDuUV&bs)b8?PYtO4@A55o)1xlN-2uVDn zw7Ka-zkOkWep`@x4Vn~s$4_Lb3lX-~ySpE74Ur15s#rZA1R#rs6CJQyr_^D_>jwn= zcz|gF9BRbkd}iENr&_k%#j~p{}>)f0wtqOec{LNZ}B7YKgG}glU<4wq-_`Y;Jx=- z#m|G8r1QKMaQP%WN{5nEP~iRe!q+7D+3nU_iCn2Xt*cmrczfZ_Ai{uof8r?v&P6Cg zbtF{QyzfLBY+bXDRt{rwzUdfr1pT~euQjifNXm4`tZ-zxMXMN(x6U-;z(sYho*Way z;!$Zfczr8%YNuBT7-k=DyG^RowGu^y(QO&%=nRCdBrv~E$7_y&?K!6DP-#b?a_ojj86^W z&>qkL(X+DkI^|n^^#TTQ88cjqV^Ut;YOxE@e{|8suiT~=n*p!+*rx42!=v6v4#vEx z2yh*NAiv>w>={9^8@c$;SO)UNrtQ@wk3hM8=^JP-igxR51Qx_72dHv$GqPmq4 z(E|^Cw3ope@#CReHwW%Uu9gg87a=azdA81=6> z`d6FxKgOtve;L#%YBX0`mVrV(g+b2KHd6WQh%WsAkdlHhrDA&huJ59dZ2q#D_y4jm zhw@4ilE@F^?d>rVI<`>-2@eYn*~;?#ilJ$33$~s)JwT~~(t_b~cLBvDYyCPYDw0;> zGagu>E}CG;mmJIf+ZGTtbti7W+rR}dq-a}+Mjlo2dvDV*=L6q@e<3DQbrv^uHWOTi z&XW0)=G8upEJW2Hyu7E*3-&)Eg!Y*Cm!1c;5PiYrE7+NQX?p&Bh50|`)Bk3cp(Opqr_p^(+Kr9X$+rnLX&MeW5Zt-D}b4V$BS=UJD|xt*F3*Vo6OHIj>hb z@3>|ruWGipeZHv;v_nka%)?nkn}u6wbHLaWC*1+yr;4F7%a1vPd*_LPp&Yfy2+EO zBsv&8pr30tVSW-^u;e(0PH!WZzc2s2DJfy8-d^JeU)MhCJxZZUez zJF5P5ln|;{3z;aB3sH*>7p)^yOi7c|Ia7nlM^IU^Mp>LO^y*1%al!pk5cX9Z`8J95 zt_qXct{-X)mk2s#Gps{N;>a;1F&d-Y$lfj0GWlL<)IUaumu}UVA8U?U7{6J!0CCqq z9vN&-9eW=a+N5h!PU$TmkrW#ce&^X%RoZ+F~T?ID_qB<7o;6)tE?w27|Os*&^xT@2LZzS)!=F9Rs>0^B|0u-B}( zNl0w@E%`{tV4q4{t{__9SVnWcNEc?!;cl=6y&*Vw9Pc07N2Ov@%v%!fnZhC)wX%C0%n=#QHv5J7TY8!vhxp{?=|zv7 zAEG-l>AX-1l3ws!-vLVLAv(vo8p4K)$v6X%<}{pS8vKc{%CQF|KZfD;Bq>oi=_`D21zg3JX3?P=l`+lVmBQ!pkr~VHokJ zkUjk=g6YEs30vQeuhMQF-A(SCx$7>Tpm87k%W?nw-!JliUfyGe0OQZm{Xfdg^EfER zKtCPu%<_~V)vqMSAQB}a7PZV%Qm;tm%IS*dkLUrQ>~{qqzMyjkBY?B%eG35?O&kW}0mXETeorvq1l6J1rIfv^TUGSBgSo70>;HXQrLxnw#l zzSR3fe*g)pStm&xV^_TOqpW~Evs)ooSiO^JRga^PsCScYkR|wtxxRc;A!_Y3S%%h> ziF!I)cB4pSS!2O`D93)MG6F7UigV8r6_L!_C@>`!<>O2(x?eG zS(xrKNzk#e2;SgykHF$k)tvEi)JQXqe+75%;zGtiDSmBypv(DEa%x+{Q1W0jS2^Ar z;YD~xkS_*DhM;Kax5gw4>v^vR`?{Bsf<_TIx!qdaz5peT)}_<+*GaY^MaJYf6k3+c z1VP?sheS}%x=20boUc{2NQYcrsn+u6g|QgUn7Xr=&95h=PS2`a&?ZI{Y+fTY;n6nF zc7mHHa6>*W)Exe8+i+#C=(_{jHdOrb>P_a~k1S=t>t9^Hbu0hz8K$a+N%ewu2@#`4 z3l9D>qu&b{8dyP8AW{qdY;4u+9>*O0!Pf1eASy#J(s!`$;MxT4huv5=k9xT05S8Fk zLV}SNK%VL!I9b1Z;9j^mJjM62nGYrvabBqxRa6r3P){+cB(b!c#E1{EA9C+!DM+(b zpZ4b-On~nwlXTihz8P~=*`>q)xkz4q&ZgwU5%)XD6s@2@2N4Y=qS?{wvuDmz`uS^; z9S^@prtP4EZ8BwWEjPltC?sv&m%_e!gGX31f*cO6kCtHR66>eBX?(4+7@=rPAs!^n z3spoM2EfOEfowchCdA?3?LF7Nvl)~lWA=t;HjA1*k2C~3OY`F6rva(4H#7;73O2hd zqSTbHq{@7Ug6b@kVXMpX?I+@xue3xr`7tM{>(pqa=9X0oSUxpQ3=hShumN9(NinFl$s?Q8J<@-6+ChwFU0UJCfs*;U-p3wK6*i}AC@um4L8yQV z-FS*mbw#A8CzujxFrLzM{h8e1v(#{DS$0d2g-2;uz>SIdW_QyfZfW-Ru;LWh%Th}z zr$(}3W%cmo*^E9w2k|l95$0#I`71Zc^YBZfNl&GI>=mER>y*IJl0EX*@3)38W31=~ zv4ujAYPVOElT}d?Bz$W}jS#G|d;0)Oe#}+DD?EgL)-kQr(2sUWB=@sMAKQnG#|7u(x2 z)M#MD`z668XwdFC)-^2vv=+pR_5hP*Z|e7EC;e|Sc%8KSi4e}OlI`}nzg)S0xpiNE zVnyI~LF5%`_%47>P?Tvx-pn4iEX~*`v9cdQ3Gf7GVZpetYI47%6yDJR$Gg_3#jBwM z#(yXZI*`c9x3a(R7}q;uV3i*C!&H#2MFsB?Jah-VTPg{$PNpyGAYE~K&_|saU3*pd zd6||7FO*H#WS{(r$rK~lXnF9-LD|WQ)r7UJiwUOTgDc-uTzAb6wHp>{L?uwmWf$8J zxR2V0yw4>)QfKg4G!ai4eRxQXU%W)F>B1@n=BxO-zs=t`91mx@sZ+zc=nxD2Vu4m~ zZYte|mCV@3kldi~wGh5GnIKHuJD?iJ&rj3A18zh<$PUuq(s&w+WzO7yB$XsgY8tg_ z7SUU^7u#70c~jRwPBjz<SJi3`odU zmq#fdmS}~iWq-w}7N=m$Vb9@WrM~ z{%r%(NO6`w6&H^H&up8LT@eHaiJ*{+-ay2}+_%Yw4KF!i6KTnT;t0g)7h!NonrhEY zddbMJq5{g5z-p={e2D-PBlLv>BXb*>vS63U5Q^0A1~)93xzR#IkZ6T$C7xny>tYbOh!m+CjB#s@$O&J}%2rvMwpjU51_{tnM&kfLv(F%N80N!> zVP}2xs$MuVKJlG8r`0aq>WLQ5o(l1JV;GE4z~nqX&tCVN9nKDZdc7uGYO10PZXO@= z@s{l6l6nxcb6Q7mkW+rJbB}ntX<+tJ?CD!Ei(XkoUP#rqMRfQ&oxVQIwY1^V`ssu| z7vwl|$rf4gI_t2;;%~G?i{Oqp?fHDP5SkfBi~;JOhg0-|wkH)bLT(9^Jx?}$Tks<{ z&nXBBMs$fB+hA342M<}RuV5j3j5x|17a5iIO4U_cYO|F(onU5Q9S&tJY^cx;0}m{f zsJ`xhI^R3X~j1MPVe+zPYsVBQw6SU!W%4f%#@2 zkG6br=Z)@*rW@lfC0>^oy(Q-;h{vhk5ibfRGp0(0H+y+(7v)#Kq2a$PN&A2Z{nXdd zstoxQ5nnuxrEDCggii_RS+x8vO5D8~*u?>;Ji6YorzD76-iwB@9qVDXJTnTej1hWi zM?u|WwAx&4>jD)h`g$}llxvrCMD&a4<4}eZkC8e2 zCepXI)#OPr^e9_{ zYd4Scc9b?M0?Jz1lkfc3fi&-&*qbxPfLgdLG8~pq1<>iZ$_`4dIZL(Me31@#^Hxb6 zwURj`a&pz#Z#Az4VXv19WtoC$un3pY5O3qhtj8$vZ^Lipbw{UEw$D5T8T(nke`NNn zn!9cjtETsmx>VAe>n)DGY(?0+mG@-BThH473ZckUtQ-)a>9LVXS)Z5%IOR&y_GN?$ zC*s+#d=a9DxHiygz;9mL?ZK+bl;j-y`Oc0 zvPu_k+{!kKw)47^1rj0BX z@zvAzPeR^{BqoO}bT5e8rSTAOBOYQ6SGveRQqE0;Be%zu+vW}!wJ z*GFPOUqaXO4arQg?Zj?+4mo#CMpbAcBXxP$07>Q1O-$9^sPFY=Hcsx4O9L+TIU^raS#^ovwxDwoPDB(vMdHzNV1yxNs zwT0D=68C7?L}bU3t+3}r*wjmhis;f+eVL-()6%cwdi3dMrKhrSR#{CK*G(gwBI9;h zG&F~-op}z=mcpJr8hVw6+$Ia;umjKWAPEXiO>=HmvtHelBsjtNGLF6jTazN?UQEh> z*R7gWALMr8?S)e%Fikr#R7s;9dj;uG@a;msE07M;{L+m7!r-wt`>qL-3;{Bmv8h-Z z3di;%JyzsXQTNmj(OPJVS7hiZJ0F^NHB-)O$Twv>>kD*7Rlh=h!!orwe{1@drC;^GUBR&u5qtIFNF(8ji_75OmnK6P4q3 zCE^BD<~IPPp(|@`rjVx;HDp_xw}x( z7%FkWhm!4e4Ly@*8KNAoqs#wBuR-ouM?bY~-Lna&)8@xdMRcOAurIjB)H1~Hc7&|{ zLTOd$yK9>8IRNwWWuYOrWq5+ac^-X}WHl9g>e1Sf9^d5K+hZb+OsWjRHYxLYmDQt0 zXzNU*3vJa8sYR0QV5w?%=4E zN?&Rbk>-u)qG>uT{m_YTr|yV=n3{U^sbx&F-m)DRK&u$S%~kGs zTH$)RCwi%PJvT>B2%>VFUw-ZsJ|ea|LgORx>|rQDNS8OG&*&cTl2ctYk-maGV)*{l zv$HFM!fJ8-T=Vi3`PG5bIn*FYm%^pn>|U;%;sMe*Mh1b&P%(G7$L8r)fpf;^8wlA; z^wp7#QQ~XTb+$`;U-tFv8o<>ie(Er}K*HC#xSjk+#e*l@eCGw&vucjttCh=deLQPM zjh~b$LzTz#oGyRL3vP^rn93<#=#2rB3Voyka776e4|et;InBp7#BIjKh~^I^pbFw* z2|GjYx#4AAtm_IvN>N|Dx3(JCw>HiThEc&YhW4{z ziN+s?4tWAr_*UPsyxi_>7*LygZXy^_JmmX$#U0h0GR3ANlci70c?Bb3>R1#>iIjAq(S{mMok@b!UR&rJGT z!}ajGkq%L`+k4r*bERW&J_(H=9F%URu;XHA+qUJexjGD(_b0VQ`W%rci!{rgl7!dY974z_%*3gps|ODyecqNgmTxu+K3iNgXAJxf6EE zIW@ei=IR5ddbn$YESSluDwtBfC-&&;5;-({8s{PC)!25X1pthkSe5eF)heGVWp!<# z2Klm2UBH3FLiXYk>hf)k1jo2(6Fir&U&s6}RggF7(@MR+Q=+b8>R6eY~V* zqnNH5BR*k_bSTAWAi=xC^Y%_gpqJ86!QAc^~^Z4Ps*iwxC7UZKqX z`NDU`=UMisO?a@SRa~6b&9RGLuti~UhoXYCr=nE0Zay5PY zBs60NHz?mxeH?s~AnqWm>bl@D8LG}_K7E(hwbBgMJN)05m;|g;WJWTNIpWm4vdn`Q zzKUQbYI%f9>bN9pRX^c1Z>0vsv9THMkMAH^69^b`dGwZVke zXqVcM50=?#K24Y*ZED#fOPCus=jKxw^dU>&T^VMhON^LMz}+vbR(rp-zfcu#0ArAg zPP;--pt@l}T8paV*uQ;B1SW6$n*6grN zT_-8%{EPgSIU>?VpzkpCt>@ciw1ey4{GQmSudb_*!N7o2zq+US+cS~h4nhq72(P|l zy8Hc1q)f%^jw{&X9p+%4Z+iqY6|9(UTU8W&ZImux1p>99F*pUs~&uk(wa z>12FgwE}zcH4+69@{*o6aVpf+c=QG1=AanyO$!OVgB88LW*fy4t+d?JP~E z-H@H(fW+K#3ZzigYJ37sxsNa%*63-SbOyw<%rQjAb1G6oGMchB9n)%EvU_i9_{!1Z zP1kUI;zmRS$0xj0HmR}kJ$9+>dh@3&@cFEC73}f`OpDmH9s*Vfr^B$)=er1RI1oJ` zU+82p)4mo#5eW>CnI=J&J{}gWP|mc(*n@o!e6g3aA<_#CGhad+mJhRMRY4*uKfkWA zJ5m8Y3gZYjUv18=KX(}t_AI3Sb)BYfKsfz$s0buK#BO-I*@mb>=1iPjZxs{|+Ix0) zS?6tE`WIQxd|E;h8?_M4c1-%9jHNPjma@dseNphP`SLiKaN6~}JDo^7sGekz4#2s+ z>=fprK_0>>(YGjpmmjEv@{P$M_6~QzMM3y9nL=BD>5h?u5;mdE8veBBfC){DF4jK~ zHJpsC{G5qAnc&j_j4X@@=E)e4Bz}vVb})!oHZgG+_Y@~tz}R4HVB>;&fn#-E6M;LF zVtL*(5b6U-uo^}T&vl5O^2$^9@^3v=$Riado%qDxk0R@g-0xV;LoCrR;U0_@J@C z>uGtz(a|tb@8>iOlvwP1!F)DSweafR0)+G7bdp3}O1UJCqPDt*NI)cByZP2$V>UNM|uud8-v z-64JmvjGO)LY#6_cfodFPZrAh3%xuD_Jl$+F9Q_;Io?g>l+%m-3#qRb@E%0G>!GEO zS`}F?6WL$&z@@5w9*}uDDAqC?#CszTL)OX#ITQ9}_?mRhCm#DTY)s9PDE0(W$SC(`6j zZ-co==Vd&6!B9M`$+dn}z+<(_kW@5;*F%8Kc z_rTY}>*1bvz+bomfD)PNYATayfBuov(FS3z3->J`KSGJHhQQW zm+?%nE*$Dl@ld%WwmS`dP`x*fDSIp8&ocBIZ#tZTx*=nh>$wpgSxI2uXFYwsj!|Fiuivcw=)!HRLSB{Gx-<@~n!QqZ z#bNhJEVwX-OYn5C*?`inLYhIC{gvcZ0eYf^8$lu(AI8@@`i6bz^z=j#mZ^1!dKGfU zVuXm;7#paZasHS7qdg+&@_^P*tYRe(xdu=F9OTyb_Lpz+hRZM<2vQ|uViE@X z)XMpMDn@W9HkHfr-Kx)+ZsOY0W200)HB38EAwE9JR)x*<)g@1QE;C`f&khyo>7YG9 z?xRGIdkMRH0tSwsB6)*02Uy{Sg#dnHP8!Ler-$cGa9u){}=A&D)}f6^Xnu1jgvk5Ou%ju$#HX z@C<&+l_|L#J)ng`K4cA<0L+$vr+(kSlOC2C#8cvHfqsXT(&D!R52(@44LTKIW9 z&s?K0TJx}M$37;8NcA?;UF(MM?t&qRc>Vb{G#HpGXhHqoP7gePcSZN7#q@W_p5K?$ zv^$rcJD=eM0JW4igmOzRjF2XfHsmA+L$u2;7bQ03sWa}ZM3Z5YWvwRqZLmP<`I0XM zjUejD453kTbraA(087Wwac|yjuK`3{d2zK&>4i~Bd%#>eRTk2N+pL745l#rB=w^8+ zCak8>KT?A=Zys_a_FiS#nEPF-ev{s|gQB39o^uAF_0U&i(YeoaSmde1&TZidreo@# zxh-ZIvsO>?(~LG4H!x!7=%twG-trEw@~T12jSWdUhD-WzFHG#RLwk~_8^Tyj43Z!` zgH}E!E!7Ru13m%*)URJ=`=hk$KEuwYxkNU^j`@&LXYSVF+JA;Xf;{v|YM#ngD$$J* zyP|~0=Htq(IBGU-F-#K`lrFXunVUEqTAl=kVp9G*jg@Ny+kCkXEy$NWguW9Q1AuM; z2p!@iUj)Js%Sr&6oEsQYY^njhC0$IzL!I?GZ+OCRUd3O2U=5>ml^_d!R3AVN6^amD zU6)DXP1Zj$@ud-1E2L(ebi{+Y>|ACv?b?Y9s5aKnUw9cEAO^+OvePih-?$xC>J!fz zVACH(ElWFliv?cC4|P}X4An~j;&!Z@?eP?NuYi%L+i!l3o&Ofr|; z)tY=*7~}O(2m1R4_1DvZ2#Z4RjpDmlwOoxaA$W7ivDY?wZjPs6w0NRb{2c}SOnY+! zH+i2&Q^s|h;>+R-%A^rh+4(J6VP7m6MvieVeGMb^!VWOS&q>>w8ev#FuJ;=x(C+LU z%xy7P;)j-FszyuW@0fo#p&Eu~;0?I&#ga`6xaqCm>$IA`p5J>)n%)LkncfAHZ{z8cLT!f? z7+w>pxMXWfwbk?`EL5zwbQ#dMU5E#fpO}luPRNyVUBvgWT(01H-PDQ8{2Hh<9!T zUsa*7eD#3U^poU!)1b#rv13vnn4Vy!(Gj7gkQmPDiz-t#Ts9VgQ!$R)pSdp$ThJrZ zy2-|~NOqVO5L*c&_R0!%K#P5h;5Mco3E$)OxiJgL6WufKl@&|lGhKtx&#y`h9S#p* z^Tbo>GA#^<=>hsPJp&WE4&>dcl^njftX!&Eo=L(^Etw5+z!Y!5aL!foh9mT)0ReyC zbJ(V$*ZcT)y}vJH85jieZ(#qWTcr5k_5Q=eZ}+}Q9#O7&!@Zy06ttL}UY%QEH3Stw> zQf&xDZC_&;N!AS@bzD#%c<|vW943zxN5W2sY6AC-P-R)bD^YMMS~Zd2ij*zJ-bJqy zIcAuom)kUQkZ-b#Qa*-=vc?3zS3GMq;Uz1*y0+clRJO}lM6Z@_a)Oi8bfrV=dI zG~}ijJz9lVr=Z~rH8cl8*y%Kzj_4}BD+YM>Y#{)KzY1CIe#C1$fu?WHuE9GVY z(oY&lK|24V!BWrB2=FKP`-O3SDy;wK!e&+s_Ij`NY|VbDhVmyhCBIVhTb<~gZ1t?I zjcosuw=WZKvX9)J6ltO^o`=DX}t=rE^t*tB>tZl78`t8k(?0#iCkjK(J$pArE z*_!;RQg{FI!`dK*se3a1M+rS^Jp)stUlv5UR}2j731~FkLH$wi-*%MTUlsq!rjLFf zrFXdj#-^`(gg`5oE*u!xT{^WN0tCOy!t|$F{7@rgWo3VtC%{@p&kO(xm;7&bfZr^7 z4}g6~I2#pYiB*s~mLJ+dParri=&ksl03t@ldJY!$A|QSR3oAWC5G5Y-?>otd`Ui1! z;9x=etwG(T_>=xJPF{-;WryUFd3L|}JA^slXOKb5+`Ps+tX^UVKL{!-80RM5`O$Wk9< z2{LIb13e27Gtk>$rtk1yTIz=lxt|>tWQ_j^5FEhwPqF^G758%`-es5lAwclQBEQi5 zaJ>JNYxZI7@26$^d74lJv0MI6Oa0LUpe@Y99E=YE?x#Yz%kK6=fZ);~=g_|c_&L|x zZ@T}-N_>}0<-fwM@(bN}sZ}0U^M2}wJMQuy0t65EJ5_(5SmhzueF}AumH#6^@B{U~ zsrL`CfATr;5cWRt_s?y_(D@tKd)wCk!Pfo|>^^Dr9hdkI0fJBI{&TPgd*p{8_i0-1 zE(LxF5Ij)-pM%^#&v=M%pJejquDUe&=Lo+$X8wZw^&#wiWK JS$+5G{{hr`vzY(@ literal 0 HcmV?d00001 diff --git a/CatApp_android_End/.mvn/wrapper/maven-wrapper.properties b/CatApp_android_End/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..7d59a01 --- /dev/null +++ b/CatApp_android_End/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar diff --git a/CatApp_android_End/mvnw b/CatApp_android_End/mvnw new file mode 100644 index 0000000..21d3ee8 --- /dev/null +++ b/CatApp_android_End/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/CatApp_android_End/mvnw.cmd b/CatApp_android_End/mvnw.cmd new file mode 100644 index 0000000..84d60ab --- /dev/null +++ b/CatApp_android_End/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/CatApp_android_End/pom.xml b/CatApp_android_End/pom.xml new file mode 100644 index 0000000..e8cf69d --- /dev/null +++ b/CatApp_android_End/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.8.RELEASE + + + com.orangesale + orange + 0.0.1-SNAPSHOT + orange + Demo project for Spring Boot + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + 2.1.8.RELEASE + + + org.springframework + spring-web + 5.2.0.RELEASE + + + mysql + mysql-connector-java + 8.0.33 + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + org.projectlombok + lombok + 1.18.10 + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.1 + + + org.apache.commons + commons-lang3 + 3.4 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/CatApp_android_End/src/main/java/com/example/cat/CatApplication.java b/CatApp_android_End/src/main/java/com/example/cat/CatApplication.java new file mode 100644 index 0000000..4372364 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/CatApplication.java @@ -0,0 +1,13 @@ +package com.example.cat; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class CatApplication { + + public static void main(String[] args) { + SpringApplication.run(CatApplication.class, args); + } + +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/config/WebMvcConfigure.java b/CatApp_android_End/src/main/java/com/example/cat/config/WebMvcConfigure.java new file mode 100644 index 0000000..02827fc --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/config/WebMvcConfigure.java @@ -0,0 +1,30 @@ +package com.example.cat.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +/** + * @Author zhijun + * @Date 2019/10/11 14:40 + */ +@Configuration +public class WebMvcConfigure extends WebMvcConfigurationSupport { + private static final Logger logger = LoggerFactory.getLogger(WebMvcConfigure.class); + @Value("${uploadFilePath}") + private String uploadFilePath; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + logger.info(uploadFilePath); + + //和页面有关的静态目录都放在项目的static目录下 + registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); + //上传的图片路径 + registry.addResourceHandler("/uploaded/**").addResourceLocations("file:" + uploadFilePath); + + } +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatMessageController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatMessageController.java new file mode 100644 index 0000000..2fc1bf8 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatMessageController.java @@ -0,0 +1,82 @@ +package com.example.cat.controller; + +import com.example.cat.entity.CatMessage; +import com.example.cat.service.MessageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@RestController +@RequestMapping("/orange/message") +@CrossOrigin +public class CatMessageController { + + @Autowired + private MessageService messageService; + + /** + * 推送消息 + * + * @param message + * @return + */ + @RequestMapping(value = "/pushMessage", method = RequestMethod.POST) + public Map insertMessage(@RequestBody CatMessage message) { + Integer insertFlag = messageService.insertMessage(message); + Map map = new HashMap<>(); + if (insertFlag > 0) { + map.put("flag", true); + map.put("msg", "success"); + return map; + } + map.put("flag", false); + map.put("msg", "error"); + return map; + } + + /** + * 消费消息 + * + * @return + */ + @RequestMapping(value = "/consumeMessage", method = RequestMethod.GET) + public Map consumeMessage() { + CatMessage catMessage = messageService.consumeMessage(); + Map map = new HashMap<>(); + if (Objects.isNull(catMessage)) { + map.put("flag", false); + map.put("msg", "consume error"); + return map; + } + map.put("flag", true); + map.put("data", catMessage); + return map; + } + + /** + * 设置消息为已使用 + * + * @return + */ + @RequestMapping(value = "/updateMessage", method = RequestMethod.GET) + public Map updateMessage() { + Integer updateFlag = messageService.updateMessage(); + Map map = new HashMap<>(); + if (updateFlag > 0) { + map.put("flag", true); + map.put("msg", "success"); + return map; + } + map.put("flag", false); + map.put("msg", "error"); + return map; + } + +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java new file mode 100644 index 0000000..18425e7 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java @@ -0,0 +1,152 @@ +package com.example.cat.controller; + +import com.example.cat.entity.CatProduct; +import com.example.cat.service.ProductService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.*; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@RestController +@RequestMapping("/orange/product") +@CrossOrigin +public class CatProductController { + @Autowired + private ProductService productService; + @Value("${uploadFilePath}") + private String uploadFilePath; + + /** + * 根据id查询商品信息 + * + * @param productId + * @return + */ + @RequestMapping(value = "/searchById", method = RequestMethod.POST) + public Map searchProductById(String productId) { + CatProduct catProduct = productService.selectById(Integer.valueOf(productId)); + Map map = new HashMap<>(); + if (Objects.isNull(catProduct)) { + map.put("flag", false); + map.put("msg", "search by id error"); + return map; + } + map.put("flag", true); + map.put("data", catProduct); + return map; + } + + /** + * 查询商品详细信息 + * + * @return + */ + @RequestMapping(value = "/search", method = RequestMethod.GET) + public Map searchProduct() { + List productList = productService.selectAll(); + Map map = new HashMap<>(); + if (CollectionUtils.isEmpty(productList)) { + map.put("flag", false); + map.put("msg", "search error"); + return map; + } + map.put("flag", true); + map.put("data", productList); + return map; + } + + /** + * 更新商品信息 + * + * @param catProduct + * @return + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + public Map updateProduct(@RequestBody CatProduct catProduct) { + Integer updateFlag = productService.updateProduct(catProduct); + Map map = new HashMap<>(); + if (updateFlag <= 0) { + map.put("flag", false); + map.put("msg", "search error"); + return map; + } + map.put("flag", true); + map.put("msg", "update success"); + return map; + } + + /** + * 删除商品信息 + * + * @param catProduct + * @return + */ + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public Map deleteProduct(@RequestBody CatProduct catProduct) { + Integer deleteFlag = productService.deleteProduct(catProduct); + Map map = new HashMap<>(); + if (deleteFlag <= 0) { + map.put("flag", false); + map.put("msg", "delete error"); + return map; + } + map.put("flag", true); + map.put("msg", "delete success"); + return map; + } + + /** + * 添加商品信息 + * + * @param catProduct + * @return + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + public Map addProduct(@RequestBody CatProduct catProduct) { + Integer addFlag = productService.addProduct(catProduct); + Map map = new HashMap<>(); + if (addFlag <= 0) { + map.put("flag", false); + map.put("msg", "add error"); + return map; + } + map.put("flag", true); + map.put("msg", "add success"); + return map; + } + + /** + * 上传图片 + * + * @param file 上传文件 + * @return + */ + @RequestMapping("/uploadCover") + public Map uploadCover(@RequestParam("file") MultipartFile file) { + Map map = new HashMap<>(); + try { + String fileName = file.getOriginalFilename(); + String changeFileName = uploadFilePath + fileName; + File destFile = new File(changeFileName); + if (!destFile.exists()) { + destFile.getParentFile().mkdirs(); + file.transferTo(destFile); + } + map.put("flag", true); + map.put("data", "http://10.21.77.233:8081/uploaded/" + fileName); + return map; + } catch (Exception e) { + map.put("flag", false); + map.put("msg", "upload error"); + return map; + } + } +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatSaleController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatSaleController.java new file mode 100644 index 0000000..211939e --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatSaleController.java @@ -0,0 +1,82 @@ +package com.example.cat.controller; + +import com.example.cat.entity.CatProductSale; +import com.example.cat.entity.CatSale; +import com.example.cat.service.SaleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@RestController +@RequestMapping("/orange/sale") +@CrossOrigin +public class CatSaleController { + @Autowired + private SaleService saleService; + + /** + * 根据销量从大到小排序 + * + * @return + */ + @RequestMapping(value = "/getBySaleNum", method = RequestMethod.GET) + public Map getBySalesNum() { + List productSaleList = saleService.getProductBySalesNum(); + Map map = new HashMap<>(); + if (CollectionUtils.isEmpty(productSaleList)) { + map.put("flag", false); + map.put("msg", "商品信息为空!"); + return map; + } + map.put("flag", true); + map.put("data", productSaleList); + return map; + } + + /** + * 查询销量信息 + * + * @return + */ + @RequestMapping(value = "/searchSaleNum", method = RequestMethod.GET) + public Map searchSaleNum() { + List list = saleService.searchSaleNum(); + Map map = new HashMap<>(); + if (CollectionUtils.isEmpty(list)) { + map.put("flag", false); + map.put("msg", "商品销量信息为空!"); + return map; + } + map.put("flag", true); + map.put("data", list); + return map; + } + + /** + * 更新销量信息 + * + * @param catSale + * @return + */ + @RequestMapping(value = "/updateSaleNum", method = RequestMethod.POST) + public Map updateSaleNum(@RequestBody CatSale catSale) { + Integer updateFlag = saleService.updateSaleNum(catSale); + Map map = new HashMap<>(); + if (updateFlag <= 0) { + map.put("flag", false); + map.put("msg", "update error!"); + return map; + } + map.put("flag", true); + map.put("msg", "update success"); + return map; + } +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java new file mode 100644 index 0000000..aca3c1a --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java @@ -0,0 +1,15 @@ +package com.example.cat.controller; + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@RestController +@RequestMapping("/orange/shoppingCart") +@CrossOrigin +public class CatShoppingCartController { +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatUserController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatUserController.java new file mode 100644 index 0000000..ff2686f --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatUserController.java @@ -0,0 +1,63 @@ +package com.example.cat.controller; + +import com.example.cat.entity.CatUser; +import com.example.cat.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@RestController +@RequestMapping("/orange/user") +@CrossOrigin +public class CatUserController { + + @Autowired + private UserService userService; + + /** + * 用户登录验证 + * @param catUser + * @return + */ + @RequestMapping(value = "/login", method = RequestMethod.POST) + public Map userLogin(@RequestBody CatUser catUser) { + Map map = new HashMap<>(); + CatUser user = userService.userLogin(catUser); + if (Objects.isNull(user)) { + map.put("flag", false); + map.put("msg", "login error"); + return map; + } + map.put("flag", true); + map.put("data", user); + return map; + } + + /** + * 用户注册验证 + * + * @param catUser + * @return + */ + @RequestMapping(value = "/register", method = RequestMethod.POST) + public Map userRegister(@RequestBody CatUser catUser) { + Map map = new HashMap<>(); + Integer insertFlag = userService.userRegister(catUser); + if (insertFlag > 0) { + map.put("flag", true); + map.put("msg", "register success"); + return map; + } + map.put("flag", false); + map.put("msg", "register failed"); + return map; + } + +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/entity/CatMessage.java b/CatApp_android_End/src/main/java/com/example/cat/entity/CatMessage.java new file mode 100644 index 0000000..e05ba60 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/entity/CatMessage.java @@ -0,0 +1,17 @@ +package com.example.cat.entity; + +import lombok.Data; + +import java.sql.Timestamp; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Data +public class CatMessage { + private Integer id; + private String content; + private Timestamp sendTime; + private String used; +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/entity/CatProduct.java b/CatApp_android_End/src/main/java/com/example/cat/entity/CatProduct.java new file mode 100644 index 0000000..c0f6aa2 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/entity/CatProduct.java @@ -0,0 +1,21 @@ +package com.example.cat.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Data +public class CatProduct { + private Integer id; + private String name; + private String imgUrl; + private BigDecimal price; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp addTime; +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/entity/CatProductSale.java b/CatApp_android_End/src/main/java/com/example/cat/entity/CatProductSale.java new file mode 100644 index 0000000..56271a6 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/entity/CatProductSale.java @@ -0,0 +1,20 @@ +package com.example.cat.entity; + +import lombok.Data; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Data +public class CatProductSale { + private Integer productId; + private String name; + private String imgUrl; + private BigDecimal price; + private Timestamp addTime; + private Integer salesNum; +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/entity/CatSale.java b/CatApp_android_End/src/main/java/com/example/cat/entity/CatSale.java new file mode 100644 index 0000000..a0040d3 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/entity/CatSale.java @@ -0,0 +1,14 @@ +package com.example.cat.entity; + +import lombok.Data; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Data +public class CatSale { + private Integer id; + private Integer productId; + private Integer salesNum; +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/entity/CatShoppingCart.java b/CatApp_android_End/src/main/java/com/example/cat/entity/CatShoppingCart.java new file mode 100644 index 0000000..7bb4b8e --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/entity/CatShoppingCart.java @@ -0,0 +1,15 @@ +package com.example.cat.entity; + +import lombok.Data; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Data +public class CatShoppingCart { + private Integer id; + private Integer userId; + private Integer productId; + private Integer num; +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/entity/CatUser.java b/CatApp_android_End/src/main/java/com/example/cat/entity/CatUser.java new file mode 100644 index 0000000..a4460d2 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/entity/CatUser.java @@ -0,0 +1,16 @@ +package com.example.cat.entity; + +import lombok.Data; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Data +public class CatUser { + private Integer id; + private String username; + private String password; + private String city; + private String sex; +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/mapper/MessageMapper.java b/CatApp_android_End/src/main/java/com/example/cat/mapper/MessageMapper.java new file mode 100644 index 0000000..d4fa9bd --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/mapper/MessageMapper.java @@ -0,0 +1,32 @@ +package com.example.cat.mapper; + +import com.example.cat.entity.CatMessage; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Mapper +public interface MessageMapper { + + /** + * 插入一条推送消息 + * + * @param message + */ + Integer insertMessage(CatMessage message); + + /** + * 更新推送消息 + * + */ + Integer updateMessage(); + + /** + * 获取推送的消息 + * + * @return + */ + CatMessage getMessage(); +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/mapper/ProductMapper.java b/CatApp_android_End/src/main/java/com/example/cat/mapper/ProductMapper.java new file mode 100644 index 0000000..58bee8a --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/mapper/ProductMapper.java @@ -0,0 +1,55 @@ +package com.example.cat.mapper; + +import com.example.cat.entity.CatProduct; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Mapper +public interface ProductMapper { + + /** + * 根据商品id查询商品信息 + * + * @param productId + * @return + */ + CatProduct selectById(@Param("productId") Integer productId); + + /** + * 查询所有商品信息 + * + * @return + */ + List selectAll(); + + /** + * 更新商品 + * + * @param product + * @return + */ + Integer updateProduct(CatProduct product); + + /** + * 删除商品 + * + * @param product + * @return + */ + Integer deleteProduct(CatProduct product); + + /** + * 添加商品 + * + * @param catProduct + * @return + */ + Integer addProduct(CatProduct catProduct); + +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/mapper/SaleMapper.java b/CatApp_android_End/src/main/java/com/example/cat/mapper/SaleMapper.java new file mode 100644 index 0000000..57b1450 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/mapper/SaleMapper.java @@ -0,0 +1,40 @@ +package com.example.cat.mapper; + +import com.example.cat.entity.CatSale; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Mapper +public interface SaleMapper { + /** + * 根据销量查询 + * + * @return + */ + List getBySalesNum(); + + /** + * 设置商品的销量信息 + */ + Integer updateSalesNum(CatSale catSale); + + /** + * 查询商品的销量信息 + * + * @return + */ + List selectAll(); + + /** + * 插入商品销量信息 + * + * @param catSale + * @return + */ + Integer addSalesNum(CatSale catSale); +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java b/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java new file mode 100644 index 0000000..7e6b270 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java @@ -0,0 +1,11 @@ +package com.example.cat.mapper; + +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Mapper +public interface ShoppingCartMapper { +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/mapper/UserMapper.java b/CatApp_android_End/src/main/java/com/example/cat/mapper/UserMapper.java new file mode 100644 index 0000000..28ae260 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/mapper/UserMapper.java @@ -0,0 +1,26 @@ +package com.example.cat.mapper; + +import com.example.cat.entity.CatUser; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Mapper +public interface UserMapper { + /** + * 用户登录验证 + * @param catUser + * @return + */ + CatUser userLogin(CatUser catUser); + + /** + * 用户注册 + * + * @param catUser + * @return + */ + Integer userRegister(CatUser catUser); +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/service/MessageService.java b/CatApp_android_End/src/main/java/com/example/cat/service/MessageService.java new file mode 100644 index 0000000..ffee580 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/service/MessageService.java @@ -0,0 +1,44 @@ +package com.example.cat.service; + +import com.example.cat.entity.CatMessage; +import com.example.cat.mapper.MessageMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Service +public class MessageService { + @Autowired + private MessageMapper messageMapper; + + /** + * 推送消息 + * + * @param message + * @return + */ + public Integer insertMessage(CatMessage message) { + return messageMapper.insertMessage(message); + } + + /** + * 消费消息 + * + * @return + */ + public CatMessage consumeMessage() { + return messageMapper.getMessage(); + } + + /** + * 消息设置为已读 + * + * @return + */ + public Integer updateMessage() { + return messageMapper.updateMessage(); + } +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/service/ProductService.java b/CatApp_android_End/src/main/java/com/example/cat/service/ProductService.java new file mode 100644 index 0000000..7613914 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/service/ProductService.java @@ -0,0 +1,67 @@ +package com.example.cat.service; + +import com.example.cat.entity.CatProduct; +import com.example.cat.mapper.ProductMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Service +public class ProductService { + @Autowired + private ProductMapper productMapper; + + /** + * 根据商品id查询商品信息 + * + * @param productId + * @return + */ + public CatProduct selectById(Integer productId) { + return productMapper.selectById(productId); + } + + /** + * 查询所有商品信息 + * + * @return + */ + public List selectAll() { + return productMapper.selectAll(); + } + + /** + * 更新商品 + * + * @param product + * @return + */ + public Integer updateProduct(CatProduct product) { + return productMapper.updateProduct(product); + } + + /** + * 删除商品 + * + * @param product + * @return + */ + public Integer deleteProduct(CatProduct product) { + return productMapper.deleteProduct(product); + } + + /** + * 添加商品 + * + * @param catProduct + * @return + */ + public Integer addProduct(CatProduct catProduct) { + return productMapper.addProduct(catProduct); + } +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/service/SaleService.java b/CatApp_android_End/src/main/java/com/example/cat/service/SaleService.java new file mode 100644 index 0000000..cffb3f3 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/service/SaleService.java @@ -0,0 +1,110 @@ +package com.example.cat.service; + +import com.example.cat.entity.CatProduct; +import com.example.cat.entity.CatProductSale; +import com.example.cat.entity.CatSale; +import com.example.cat.mapper.ProductMapper; +import com.example.cat.mapper.SaleMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Service +public class SaleService { + + @Autowired + private SaleMapper saleMapper; + @Autowired + private ProductMapper productMapper; + + /** + * 根据销量查询 + * + * @return + */ + private List getBySalesNum() { + return saleMapper.getBySalesNum(); + } + + /** + * 按照销量排序好的商品信息 + * + * @return + */ + public List getProductBySalesNum() { + List saleList = getBySalesNum(); + return selectAllProductSale(saleList); + } + + /** + * 查询销量信息 + */ + public List searchSaleNum() { + List productList = productMapper.selectAll(); + List saleList = saleMapper.selectAll(); + List productIdList = new ArrayList<>(); + List productIdExistList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(productList)) { + for (CatProduct catProduct : productList) { + productIdList.add(catProduct.getId()); + } + } + if (!CollectionUtils.isEmpty(saleList)) { + for (CatSale catSale : saleList) { + productIdExistList.add(catSale.getProductId()); + } + } + if (!CollectionUtils.isEmpty(productIdList)) { + for (Integer productId : productIdExistList) { + if (!productIdList.contains(productId)) { + CatSale catSale = new CatSale(); + catSale.setProductId(productId); + catSale.setSalesNum(0); + saleMapper.addSalesNum(catSale); + } + } + } + saleList = saleMapper.selectAll(); + return selectAllProductSale(saleList); + } + + /** + * 组装商品和销量信息 + * + * @param catSaleList + * @return + */ + private List selectAllProductSale(List catSaleList) { + List list = new ArrayList<>(); + if (!CollectionUtils.isEmpty(catSaleList)) { + for (CatSale catSale : catSaleList) { + CatProduct catProduct = productMapper.selectById(catSale.getProductId()); + CatProductSale catProductSale = new CatProductSale(); + catProductSale.setAddTime(catProduct.getAddTime()); + catProductSale.setImgUrl(catProduct.getImgUrl()); + catProductSale.setName(catProduct.getName()); + catProductSale.setPrice(catProduct.getPrice()); + catProductSale.setSalesNum(catSale.getSalesNum()); + list.add(catProductSale); + } + } + return list; + } + + /** + * 更新销量信息 + * + * @param catSale + * @return + */ + public Integer updateSaleNum(CatSale catSale) { + return saleMapper.updateSalesNum(catSale); + } +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java b/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java new file mode 100644 index 0000000..e1a7ac3 --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java @@ -0,0 +1,12 @@ +package com.example.cat.service; + +import org.springframework.stereotype.Service; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Service +public class ShoppingCartService { + +} diff --git a/CatApp_android_End/src/main/java/com/example/cat/service/UserService.java b/CatApp_android_End/src/main/java/com/example/cat/service/UserService.java new file mode 100644 index 0000000..d10f5ea --- /dev/null +++ b/CatApp_android_End/src/main/java/com/example/cat/service/UserService.java @@ -0,0 +1,35 @@ +package com.example.cat.service; + +import com.example.cat.entity.CatUser; +import com.example.cat.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Author zhijun + * @Date 2019/12/13 + */ +@Service +public class UserService { + @Autowired + private UserMapper userMapper; + + /** 用户登录验证 + * @param catUser + * @return + */ + public CatUser userLogin(CatUser catUser) { + return userMapper.userLogin(catUser); + } + + /** + * 用户注册 + * + * @param catUser + * @return + */ + public Integer userRegister(CatUser catUser) { + return userMapper.userRegister(catUser); + } + +} diff --git a/CatApp_android_End/src/main/resources/application.properties b/CatApp_android_End/src/main/resources/application.properties new file mode 100644 index 0000000..359c3e5 --- /dev/null +++ b/CatApp_android_End/src/main/resources/application.properties @@ -0,0 +1,19 @@ +server.port=8081 +spring.datasource.url=jdbc:mysql://localhost:3306/orange?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true + +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=root +#շԶת +mybatis.configuration.map-underscore-to-camel-case=true +mybatis.mapper-locations=classpath:mapper/*Mapper.xml +mybatis.type-aliases-package= com.test.vue.entity + +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss +spring.jackson.time-zone=GMT+8 + +#ϴͼƬ· +uploadFilePath=C:/uploaded/ + +spring.servlet.multipart.max-file-size=10MB +spring.servlet.multipart.max-request-size=200MB \ No newline at end of file diff --git a/CatApp_android_End/src/main/resources/mapper/MessageMapper.xml b/CatApp_android_End/src/main/resources/mapper/MessageMapper.xml new file mode 100644 index 0000000..576061e --- /dev/null +++ b/CatApp_android_End/src/main/resources/mapper/MessageMapper.xml @@ -0,0 +1,16 @@ + + + + + + insert into orange_message(content) values (#{content}) + + + + update orange_message set used='YES' + + + \ No newline at end of file diff --git a/CatApp_android_End/src/main/resources/mapper/ProductMapper.xml b/CatApp_android_End/src/main/resources/mapper/ProductMapper.xml new file mode 100644 index 0000000..bf87347 --- /dev/null +++ b/CatApp_android_End/src/main/resources/mapper/ProductMapper.xml @@ -0,0 +1,26 @@ + + + + + + + update orange_product set + + name =#{name}, + img_url=#{imgUrl}, + price=#{price} + + where id=#{id} + + + insert into orange_product(name,img_url,price,add_time) values (#{name},#{imgUrl},#{price},#{addTime}) + + + delete from orange_product where id=#{id} + + \ No newline at end of file diff --git a/CatApp_android_End/src/main/resources/mapper/SaleMapper.xml b/CatApp_android_End/src/main/resources/mapper/SaleMapper.xml new file mode 100644 index 0000000..8cac522 --- /dev/null +++ b/CatApp_android_End/src/main/resources/mapper/SaleMapper.xml @@ -0,0 +1,17 @@ + + + + + + + update orange_sale sales_num=#{salesNum} where product_id=#{productId} + + + insert into orange_sale(product_id,sales_num) values (#{productId},#{salesNum}) + + \ No newline at end of file diff --git a/CatApp_android_End/src/main/resources/mapper/UserMapper.xml b/CatApp_android_End/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..7019fac --- /dev/null +++ b/CatApp_android_End/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,11 @@ + + + + + + insert into orange_user(username,password,sex,city) values(#{username},#{password},#{sex},#{city}) + + \ No newline at end of file diff --git a/CatApp_android_End/src/main/resources/static/back.jpeg b/CatApp_android_End/src/main/resources/static/back.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d1c6d3407272a1f18c4bb5f5935741e0a44d4886 GIT binary patch literal 147014 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≫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 Ad;kCd literal 0 HcmV?d00001 diff --git a/CatApp_android_End/src/main/resources/static/images/li.png b/CatApp_android_End/src/main/resources/static/images/li.png new file mode 100644 index 0000000000000000000000000000000000000000..0834592eec8473923839451f695e4c84438dce01 GIT binary patch literal 1862 zcmV-M2f6r(P);0P13!cO)FOFCB2rRPGEz~Ln+PG50Ez){0F8u@L!9%yjIk9? zAJnjesH$2aE7Ec+!p8`)Iip5ENhOxQEo}94hLjkOcs%$l&(k_A* zA8^i#Ez7EsBx%c(+luhpvit#cz4`b7v>fX>=&RGm4QL!Q7*Y^Q=^_A609Xy+jvJP` zky(%$SKIL~JF#WiAz|}0V{GA10z}g^k@Pz`=i5_9$Wv!8^PE1zV~SVLXVEi7QGV(5 zdjESyK`5n{0Vn}*A%IGWAS|Uw%CE*{qqw{fzjo*RK;Ox4{Lx4Rdm`fA^^CENb|Ho& zM<}Js0n8VjkIa+9?y-uJnnK_^5acJ?tmvzpRgj8vi?flQmlD+)=nCU--AOZKa?6TX z3k}0q=>#I_Ae7Q30Anw5yKw83=@?)1z0lsa|40aHxA^f{gW2c0B$Jj%*jg(|(mGw& z>zzU*6(shBn)dg(IhaaaakcDZCjPpr9g;-01Ei|8we?t2Q&V3$hcrp~YH6Bw3+Mdh z7aq(<@tEFnDZY|}Uxjh!qb*|gzSb~|O%8SczxP6o)$gphSBs`KC;+czf$64!7zg!whCA}SLN!`L^FeZ2dF2BDNL z2C($)nnL7e4LD8o(bCpw;p*xWAcV};b$#8L23eJtCEfN`O`*Ny=%=>g&nH6dU6z=| zMNO7)8+1feRefJAPMuzRe_lc&7ChC8`a_{@jIkLBbr5qJ6i8`lX{lvdbye47;+D(f zm*%Gvx$a#*R=&{%Ns`KZKA$g9m_dP1O8*Vuf+rW`qHKKpV(@eV>-Gn+sJ2Zc{J#vt zxN+D)D5X2aN^nj^25zs&NOb(D-0r>shGc$41 zWr@8~{l)%sn;*|^>JpcaGRBIW!Z-$@l)et&n#bOw-uGCTE@6A`D{_SRvX^Lb9HVA~*Ww>vL8)Ai-0nycV}+1ZKewB@&C zbw}3@JlLae6Oftk#a7 zZICjJem<&D)?Qg!(0518&L|1kT)+5a_&+BjUR`Gw+i|xIQd&y=Q#`ITksrg+#CqkE zJ?2qwoxLxZEs)rTTjLGW({WE_=5TP}nOD28afjdU^D$eKlr0cS=~w_w*G)^ug6oC` zgmaF7KY+B1wCIDX-PncKcKEw}INfTV>K6=;CyjmeMi0;mAWaegx ztsp%3TsuD7XCAEcF$5YYKfd#1;gBV}Wm%$lj7FqlQM1+7Wo@uqf7u36 zRdp62Wc|bQaxle{+!?)p(tT8KV)66sV!>6Z>-uYUlF~NFagtN!vndVBB7lp$7imY@gJiXMV{O-IIj5|+3(K$c9sdD6a7+)L> zLquWg?jFkwK~iLF35Kkv>g(&bCjv2OklsPXFK0=TsyOFY_g+(EAU|7*9-_5$SkWUK z{cG@jBZRzdS(f+>y*W{U|MxZ64o>ygG;IQaa?7&H0gNMr`~rYDL~G`pHv{-WlB8V# zcImnAEUC?Ys6gP-W=AflrvxD5k-<1)&) z4Kl*P0TD$Ybaz?>MD|5wao7VSWM6wp*L&Z2)nw_U8#+)4-EH4<`tx9Zh> z_r4+sOGs;ggmmx1okJLKh#v%Dz+u24u7MEmUf6=efJ0mZA>O^P1&0BLxCTPJdtnO> z0}gQwgn0MD790i~;u;9??u9Kl3^>F!5aQhnTW}a~h-)CkyZ5WM;PmwLD+EF4Dlj3I z5*o`GiQ~L27SoHN!u?kTI4vzrB?#)Vgs?0yWC7^b5+nm=g#icI;hmP2mLLeK`vFWO zz`(}lckV-(Hc}vECxGe_`DX^qu~w=(rel;;9EI2DY>jBn&Mn2&Bm&VQp zBICWoP3R7qK1Kdt{MS?lDpi^-rr03h=64fA4lv*-5e3y50BU;c46u05fpVkeCiZZ{ zHN=4&+X2C{fS<@Wnl0uV{nlO(6bw1QqTqT1Ah)x@xu8RC^KQAFdb#07#K`{(>)rt= z_z8sJ&!&9SUxR>~-%SiDzzmo{fLB@1Ye8?8FUze5R7t%-(>PqC{2wVl31P)-{;^h~ zu7Oso^{C(43xa|n1sK2<0N2vt)4-DZwuamJH*UE4sHXpRd=0X56+p1SY&Ja<1kBph z#83ka)~P4xEl;J=>X(0GySPy@$yzNCxSS7Xf2Z6Wo*m zZp-DKss^bkgZTMO_ca)J(_}F{5sGln_AmImmYI=t2tZF3mkK(1W)s}hfo{uH>zYp4 zKQ0CNIp6)A;3KoyG&%S+;JXJQVZoUhSp@)6*nkY6u0r-LbC;wHSEY5cEI9_UZ3W1w z{b#koJ~3O&lR_D8C|PhZfCQFsnGBM3yTT1u5J8S?139u4m400cg6=HuRW~I>MNh z5w={Cq-9pCwc^)cwaxn&DuCS<%&>|O9HBrdKrJ?#ZOaco{J`P=Y9&+vd(0;NYH51u zco=Yq9}PhTI6Xc0@`PA=t+u-SfM0y^MPbXP_1WDziw~ZupqUj_%ss!?M$u`Al$;=LktqB3 z$rAQuUS8gbHdYa|#RC%XRRUZQ~jDsW-TUMFg8tPxVDc<~@(Y)xgY`26bCtE+;Ro*xYlD8T9I zIlt|lD!g_0r0ZJV_6QxpZwF~`%>ef+%5dS$-F>hg+xI)M_2+sVE^x`Ji8BhN2A%Nw zCyUpF)Fgkv-6rLx<@WB@4f78dNTYb;x+aOZHBFD3uGU@@R9^@9fuk<0`rZc9j}Ey= zN+p?#ghJh%I4bj=3tuWNCBg7*2!=U`u1qO z`K=9`e{#yb>6xOk9xI~1&&$i>FNcM6tsoo8i(N^0LK`nzO>IkSJ5+Ft-oVRXX zVD7)FVcFt7Z6|jUW-VHh7xYPJ9S%4vD{GJdvQwf=NKF#)%%mvvOjY>=z+qB*1teQJ zXnmbupjs9pf(oKO9%4kC{C+NZYjF)$Z?MZn5@W^XOO~x2b3r=|kc~PNa8_1Ue@5{$ z@B4tBYRrAo9ogtjBzq-XHK!rfxs$?_5+lv9i0NTu~nL|+^ns8o%qW?+>i-Hy2)y?Dxvg_tfNB!|LKvDdv+dh4jeK-gO?wT z_S!#Z*&+Fqd?`c~nG8)_FR#0{Y<6Jo!fFTtsgtNQ*kZBp_^+Umb_e|A!z0%0I#{2} z2UPQ(ib158`&&ox&+_Q_QVJhwYvOu?56D`|;x%>n^y@kvv}w}l)T36fUhN)g2Z6LJ z;3*SwCmlH@eWXzn%$XXE%X_I?sl-`&u-&h>{&L_0Fil(^2% z@)+vZEEdxYf9t%|<=PeS{ded7_e7D@YvS)B@cZ0|R(<6IDGoT0gs61T#Poomive@l zA=ye%UwIsrbt+6>*j*~ER!Nl68!Q&f_CRX4ueP)s;7Rw4c;t9t{kz?gMa+LH270aM zt|WT}9A|zC1|2oF@$0Q|_{7qQhxRQpTg>+cL*v^G@c6rOjun>BZjap^i4iw?#=~)k z1;6fc3kfEn40vW?cY3%;Cs0O4=jX3m8R+eA7r+z74uA4=sq1fpdaLpJwARiHXXydB zYI!Jg@X2?3jrjYjWIo`sn)6NRf!>350X*)`oPy#qnlf`rG;X}o)5pv`Q;w2`?1Dg7 zkN5V?{=6&OdBi{%$UPRzy2XLq3&jDar)S?N5VpQ|R~7y~y=8uwjK#X$(EuSYo6YOondAW|iUOW;U+zao3ZzM+Zqnh=yF4cpg7Ngsc{!ab zIP9%GaC?sHG4C6GPfRwOE$aeyI#E%;0*9RNh#`acMdHSXs{&@P| zDJZE{@%1hHn$70G^0}UEq@sXFjm&n~>`e2`+nzB{Ja)=kaZWLt z^F9p34k`vXGcz*@j1=>fhQ~T6pG2Iu42e4v*hYib3)~KaZp?D4UHON}I&4@3y#BjiKOab~J55)iv88Sp2 zV~ll%;wZYdRtxIoHt8d4JieDl(d=Qf+3a4`G{8hLz`S20hi5w-PNwdt``{Orc#mgR zTE~*hdotVcQVr@H@_&24_{u)Y2w|9|R1CJFfXCdLQ&~|%qdUrzHSTZy;F6S4Y9Q6Z zKyS2IEE|<*lcIp{9-DLWOeyWsQNHMh-s^+XDiP1jd8JVo0Wk{6MS{S2{>WV?s28fzSNRBFq+Gy~4c~mHMRJN^d9-3=(`><`18L&sliy6qW zWAkRL{c;5uXm6zg>=gw(Y5efz$4|R%zdb{b2k&VA$^PjJd*D!^7H=(FgeYT^bEVUX zW^0TxDtpn+o0&*Ni267gEPn@Ma;62J1=DrD60Yi#P(`K4DXToiMitcsf+iBwQ4LpJ zv7G(LT<4$b=4mnwsWR1ZlVCH*>Cv*hHuG8R|7j1Oyoj<|tu<{ra(on46fj?7Lm+fh zmqZaCywK8Jsr-EKtIJZc?NB6U&3_Y@^=wK#NjNnPg4ASL94@zF4x_p79AXZM1LbL@ zM07`PaLeRCsk2sw!C&^%+vQ|6l_BZu0b_$Ys*C(vLpB75ET_9VD&=iG_9dvHic0p# zgQ|>w6pm&V{KNzIqoTaL&Sc8-o)LEe#1#e1_kY(NITfW9)W~C@`*!zq4k#Vb@$Q;r zSauun_{`^U)pbo%vav;Tpmw(QoVf$p%g-i<8(L*BaOkE2Fz-)CRNt(RMIbKyrdSBz2t@4Jo~@bc2GNFP1|6CY_x-&H%0 zAhzfwzX0<#$yQtKnc3K2z5LyAW)FBmIu~u?0Qr>8%R9?G6AgV?v$uvgb%Rim_+;Z> zrd3~K(SrB+wf_xszInP|jrXIF;(+-+@4qLf{6ry*@fH`&uWioqBYrgP{6!>6Fn)et z2r4b!Te1{_&~(2VSNI%M^(W6+iF|D?J<#fU$v0}SUcMHHdoJ6(keWI=73!Go^4cKw z!W~|N2%8V2d^Mmtc06p6?uUnPd1b~kIQa8k#q*Hc1@QF8ZkfMzuVb3m%m&6_FXE>+ z&q2ufae6N?cSQ;|9gM<5Pd&q`~s{`l^$tuke1bo)2HQQtHfhh@BUUwa)&1`xyj;j8Ie3~ZAy{cVHIoAwVb2xmO zlMkwzi$3*w`C99~=*wN4jqevq`>cU@F2YGTGU{=9bOmstEEf0m~5&yi?1z*DE> z&fa%en&~UMP^nY(v0^R$^l=YaSuf0;haP?UG_&F*h^Suc6|ns@KfSg-i?jq|JGHIV z{jD~!f8(gRzS8%=Q4`-+zOQaBRE$Ge(oFF82Kn2p7qMsiHva6y@uqy!XBTt8x7@bf z0P`K)eP>SLnKGK>D?gZLIdDh9#Y)3zdRSIACO`JSjn#>+V#F4`41u;zmGKn>s7>hC zxULqrOxr2`v^-DYBW6u(&&D5ptx(|YG|erSTX2K?@a?yFf8JakG_c8RHhDhe_+k~~ zelAq|$;9!)XB3=vy`okT%z7jmSN3h64F7!v5qSPH_r$}DS6)Tm%Lg`g%GWKEx8(Dd zK%}}-I7;@lQjnlELYLI^BynEAR`4Sjt#2&L9Vq-By16*?SEDk4-wL^fQi_-V{1lG- z@(UQqeHP2QPnD+8u7G)CC;UEV_vvCfD5aB#_nwP|*kWRaE5%W?`=V1?{<$s*Yj?!r zx}ihy=+mBe8QeFmwY7dMA$3%_of?Ed_CH6u2R#kqD_GwfV7?7MBk@6->=}!Q2VZfo zL0sxoly{m5CN$+ruUYX0mVEpXzxGbeRV#Ho0$$ z3k&h;volauTEefrV@&y`Eidg)hFExp9&&0(cR<;27jfz({$8p`*{@q>hq;ow&+uS`ux%E zw2xT7e!aW`V0%c10p^X*$jJF00xG9kPQKlMF`0VVpUWNj-d2rm=rCi1&)z{0nwI51 zmolFF>@w^x(EEfOS+Num)vMd2Pku`!sPuj>RV<0|sEVJ`3hw6h-{alCz9H|MGO1sF zetwe|rA;mJuW*L~c3X08Z&8rs8ThoTBs`FI91&{Y>xwmxXe5L|6sh~AqV53%Ur0fI z@lh#15QzN#=z<<7uT`N>|NfZynp>gGMPFl)?~&VjT|S>$8PULQ7zSHp8u-AfxophO z$AUNKxql+;CbQZ6{rT#<*#A2mFmG^nc6JvkvF`x%x-8Lwi5X`w__Eec2Ve2X{&srm z$6ZnD5YVkh4?O$o>(J>vlgRk}F^8_Iys)sqGIYv|jA3 zq^JlVzwmZRX9JO_S~P)txNTGC&gT)g)D-P1YBWoBlM0u%lKFgc_lCEkgVSC`?+ zZVp7Wc79#Z9yc5`VCkj=RMi1}`VWu;1g^iSDIV&AD)q4u_bcap^_A>jc3*F?R+3x~ zUy8@t1_a;+J+%a_Q&SA+YRBa%c3j)DPPXt1m0id5*m5`m{JqBRP6Zuw)zvcS{#RT9 zt=4-Me_Qr<=)eJ3R(}I-xiVLQ>|+vr+njHHw=MN3SvH^mdxFMzfQ$yvI5O&=V#k0~ zJEC+FqI49|dI?c_Du36i8LDgos%+xfmmq^YTCB#dV-c`9oB2oy_Av&D0J76s9}$6G zef!}z0|v;@o6ks{OW7r7&d5=a`}gdT-}!egf+(I~F6k{nExenTm#56c_XSc9NWcw! z88K``qEqD@3nJVGupe_^3qb2mzBETOG{z5wFr}Curh*gwe{+ER)4=bAl7OOXu!>ZHo#_t^cDcV zMnpUVNdTDqnLi1S2S)%X0aytLDF$UFjF1vS*mASky!%`SNM>f{aK^|T1h^gU`u!C0 z1%tGbQfj>v*VywlGH3vwuOmwSf6LHYVjY5`GXx|tup|)hX(j_9q>zFZ3W8ARa=A`h ztya%a4<#F+P+eib3Mn#Bs|f=RR5A*+D-2j6MFwg$VZeb(Mxl0v0V|})K&>VWI8ezb z)UGgKg%la6)r0{DDj9{^6$Y%3A_KLWFyKHXqfooTfE7|?pjHzG9H?XzYF8MrLW&I3 zYQlg6m5f5|3IkS1k%3xG7;vDHQK(&EzzQicP^Gjf5y&T~1*QQ~>1Y!!DV2ofRA`i0Sc>boluI!!(qd*hxs*08leSpd zl%?W6W+iToj;Z64OA3f7B&jSuk&wp|-fh179-1t^d*8w|jpr|T-}%ltzkAMizVCil z;(sF2|Ad2^Af9A0W@C)WnsH@PWo~)2DK=hbKUO2Z{ZzbC}&|h|U|ZXM2-)%MrQ4 zad&V+SW{h40On4iO3c+I_HBjpaziVQU5b-T`t@>U^=6;|SgjVyuON{tdYFwmdAT*? z%oEn-XK0yzCqZ4CH5l9F0~e3kvdVtExVqqWU?yoG&P@o!y- z!DNbRD(P=A1RGiy9kvtY<@WsY>MMB_m#VCGvs@+50DkhMy!@IG;2|IZm;?j>Q-I$9 z@xDQ;{FOYbXk@U0)&12turKGT10&x%Y;I|#SC_Ql!v9KQjws;eG z?YaH{dD>uL?y@B~o=kqKjbwO;vXV5Kn4PZIZeU}|5LyGnw5$Pl(7py47aYu(l04c= zx){Ce$VF#(3dfbTATCD1bd!Z7;9hqDsvY+w$Skv&=SmBd`UlAZ@&zPa6i986 z^!FfFZANw+QHC9m6lft87^F7X8|nE9WT7E|LFI*nXb5VD(LzsP8StEjdG)IL0%Sfg z!F~ZGDFRs*``ERND1ZL@ch{JNSTqG0hGwJ#zqmS?$2{JG%mO9~2qivU3}Ri>=_pc! zv(&`;aFte#jwCU~(2T!;0j_T55sWt=Vo!Lt2Errn*Cy>TS~%@ZiFpdrPn?6C5N1~< zj?^uoI;pWBNtSxEcJL6n_a!3EFJYcM6i+~+TZD6P_f~=ksZi-(=wH*7bRDmj z+mKPLShflsAddH%L^DWiH2dbyrgJZG@bFs9AeogmEyQNyY>O!JZ8k*4&uTHR38Yg8 z(vtf&nKC(D4wdxXkgNAz|8%eZRyzc)a=PwXb>qyS*-f9U8 z4|BDte|c)CV`&OTir`q5wdmgaFIPJp%ArzqR#a!iVqx0op`=ZHho+i>(-&k~?-{^pMU_>rl*|+tR}|b9ODmu=a7c|gRUoY+ST}YQ z$*;bo#-wj_T1Js;y~tePV>K34fryjE(LJD)RXw7dr9`>7+Nc`G?sSr#=IG|_56eRATgn#94|VhysG+6T*v%|3@%zs{>u}UR{}LLx>rhwXLyx^FSm)#-iWek3-opF z@6Ca_{k~Q#ZfOUmure@^{-20yZA4kI8d66p4n;xNJyL50N$JP_E^)-AjcY^-;Ipq_ z{Hu!3?!X>*-rZ)T-xHh~mP*^ld%H8`+wl+Q!rN07n^C|ich=p31ocWFdteF?L!NhM z%D3aGBdN+*LxC*QR*mKQK-vRifWaeD3CcQQs_fCNGI)mS!-5*O?sXz!u@x07cfYDG zCu)O;KJos{DddbEGb}M6aAcFQO;)&>z*oZE8t zv8ZMA?=L#IjiujA;=|b=b3$BnHj>O)fbG2*9JJYpSL?FA(t52`OS+uS9zUQ$p2m^G znevyd0|8q!-Q!+ zOHzNxJ;{pG`O2+|YH6rzP3oP9dF`47Z`tKkmM(deO__UH`K@ZZ9x1*t8Gg(p|9CcS zv>Ip#L>!^#SC$SBy6pHU$-qK-Cce$mFCh93tuEB*kD371i=12k1GlQ1alO`!_K}(G zqLB{n?$uAy_YTfE{$^?KR#1Mv;k2O@Uv<5?7%gP5MNih16cbO&;s?J6tD4w;FI7IXic`H*|qGuP8* z!TCapyLBd`?=!sKsuks)S-Lh$6G+Xp$_q?9caFhpH*ojr_2{#5U{DGS8UP)|SM&Nr zR)Wn(;*dk;>%iv9w?dzZM<6xcWf_Cr%AJnthOasGGNm><`5}>%_$=yr40#3O&%m_W oz6qlBiTPXqW=8z|gtglL2kTlMQDP6NJ^%m!07*qoM6N<$g5iyKc>n+a literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/.gitignore b/CatApp_android_frontEnd/.gitignore new file mode 100644 index 0000000..603b140 --- /dev/null +++ b/CatApp_android_frontEnd/.gitignore @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx diff --git a/CatApp_android_frontEnd/.idea/.gitignore b/CatApp_android_frontEnd/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/CatApp_android_frontEnd/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/CatApp_android_frontEnd/.idea/codeStyles/Project.xml b/CatApp_android_frontEnd/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/CatApp_android_frontEnd/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/CatApp_android_frontEnd/.idea/compiler.xml b/CatApp_android_frontEnd/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/CatApp_android_frontEnd/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/.idea/gradle.xml b/CatApp_android_frontEnd/.idea/gradle.xml new file mode 100644 index 0000000..4877ac9 --- /dev/null +++ b/CatApp_android_frontEnd/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/.idea/jarRepositories.xml b/CatApp_android_frontEnd/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/CatApp_android_frontEnd/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/.idea/misc.xml b/CatApp_android_frontEnd/.idea/misc.xml new file mode 100644 index 0000000..d5d35ec --- /dev/null +++ b/CatApp_android_frontEnd/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/.gitignore b/CatApp_android_frontEnd/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/CatApp_android_frontEnd/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/CatApp_android_frontEnd/app/build.gradle b/CatApp_android_frontEnd/app/build.gradle new file mode 100644 index 0000000..977889f --- /dev/null +++ b/CatApp_android_frontEnd/app/build.gradle @@ -0,0 +1,36 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.2" + defaultConfig { + applicationId "com.example.catapp" + minSdkVersion 26 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation 'liji.library.dev:citypickerview:1.1.0' + implementation "com.squareup.okhttp3:okhttp:4.2.2" + implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.12' +} diff --git a/CatApp_android_frontEnd/app/proguard-rules.pro b/CatApp_android_frontEnd/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/CatApp_android_frontEnd/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/CatApp_android_frontEnd/app/src/androidTest/java/com/example/catapp/ExampleInstrumentedTest.java b/CatApp_android_frontEnd/app/src/androidTest/java/com/example/catapp/ExampleInstrumentedTest.java new file mode 100644 index 0000000..77d35b4 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/androidTest/java/com/example/catapp/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package com.example.catapp; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see
Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.example.catapp", appContext.getPackageName()); + } +} diff --git a/CatApp_android_frontEnd/app/src/main/AndroidManifest.xml b/CatApp_android_frontEnd/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b8be69e --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java new file mode 100644 index 0000000..f8239ee --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java @@ -0,0 +1,92 @@ +package com.example.catapp; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Looper; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.catapp.activity.IndexActivity; +import com.example.catapp.activity.RegisterActivity; +import com.example.catapp.entity.CatUser; +import com.example.catapp.netrequest.OkHttpUser; + +import java.io.IOException; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + private Button registerButton, loginButton; + private EditText usernameText, paswdEdit; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.user_login); + init(); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.register: + Intent intent = new Intent(MainActivity.this, RegisterActivity.class); + startActivity(intent); + break; + case R.id.login: + //注册时,我们引入了数据库,登录这里可以通过数据库进行验证,验证跳转到首页,不通过进行提示 + Thread thread = new Thread(runnable); + thread.start(); + break; + } + + } + + //界面组件初始化 + private void init() { + usernameText = findViewById(R.id.username); + paswdEdit = findViewById(R.id.password); + loginButton = findViewById(R.id.login); + loginButton.setOnClickListener(this); + registerButton = findViewById(R.id.register); + registerButton.setOnClickListener(this); + } + + /** + * 登录验证 + */ + Runnable runnable = new Runnable() { + @Override + public void run() { + String username = usernameText.getText().toString(); + String password = paswdEdit.getText().toString(); + CatUser orangeUser = new CatUser(); + orangeUser.setUsername(username); + orangeUser.setPassword(password); + OkHttpUser okHttpUser = new OkHttpUser(); + CatUser catUser1 = null; + try { + catUser1 = okHttpUser.userLogin(orangeUser); + if (catUser1 != null) { + Intent intent1 = new Intent(MainActivity.this, IndexActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("username", usernameText.getText().toString()); + bundle.putString("password", catUser1.getPassword()); + bundle.putString("city", catUser1.getCity()); + bundle.putString("sex", catUser1.getSex()); + intent1.putExtras(bundle); + startActivity(intent1); + } else { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare(); + Toast.makeText(MainActivity.this, "账号或者密码错误", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }; +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/CategoryActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/CategoryActivity.java new file mode 100644 index 0000000..bf62b04 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/CategoryActivity.java @@ -0,0 +1,90 @@ +package com.example.catapp.activity; + +import android.app.Activity; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.widget.ListView; + +import androidx.annotation.Nullable; + +import com.example.catapp.R; +import com.example.catapp.adapter.Adapter; +import com.example.catapp.entity.Product; +import com.example.catapp.fragment.SetDetailFragment; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + +public class CategoryActivity extends Activity { + public OnChangeListener onchangedListener; + private List productList; + private List productCategory = new ArrayList<>(); + private ListView titleList; + private Adapter adapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.content_category); + initData(); + init(); + SetDetailFragment fragment = new SetDetailFragment(); + FragmentManager fragmentManager = getFragmentManager(); + FragmentTransaction transaction = fragmentManager.beginTransaction(); + transaction.replace(R.id.category_detail, fragment); + transaction.commit(); + titleList.setOnItemClickListener((parent, view, position, id) -> { + adapter.setSelectedPosition(position); + adapter.notifyDataSetInvalidated(); + if (onchangedListener != null) { + onchangedListener.changeText(productList.get(position)); + } + }); + + } + + public void setOnChangeListener(OnChangeListener onChangeListener) { + this.onchangedListener = onChangeListener; + } + + public interface OnChangeListener { + void changeText(Product product); + } + + /** + * 初始化数据 + */ + private void initData() { + productList = new ArrayList<>(); + productCategory.add("橘子"); + productCategory.add("橙子"); + productCategory.add("柚子"); + Product product = new Product(); + product.setImageUrlId(R.drawable.arrow_down); + product.setProductName("橘子"); + product.setProductPrice(new BigDecimal("9.9")); + Product product1 = new Product(); + product1.setImageUrlId(R.drawable.orange); + product1.setProductName("橙子"); + product1.setProductPrice(new BigDecimal("29.9")); + Product product2 = new Product(); + product2.setImageUrlId(R.drawable.arrow_left); + product2.setProductName("柚子"); + product2.setProductPrice(new BigDecimal("19.9")); + productList.add(product); + productList.add(product1); + productList.add(product2); + } + + /** + * 初始化组件 + */ + private void init() { + titleList = findViewById(R.id.category_title_list); + adapter = new Adapter(productCategory, CategoryActivity.this); + titleList.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java new file mode 100644 index 0000000..cf5fc96 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java @@ -0,0 +1,128 @@ +package com.example.catapp.activity; + +import android.app.Activity; +import android.app.FragmentTransaction; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.annotation.Nullable; + +import com.example.catapp.R; +import com.example.catapp.fragment.IndexFragment; +import com.example.catapp.fragment.PearsonFragment; +import com.example.catapp.fragment.ProductFragment; +import com.example.catapp.fragment.ShoppingCartFragment; +import com.example.catapp.service.TimeService; + +public class IndexActivity extends Activity implements View.OnClickListener { + private IndexFragment indexFragment; + private ProductFragment productFragment; + private ShoppingCartFragment shoppingCartFragment; + private PearsonFragment pearsonFragment; + private LinearLayout indexLine, productLine, shoppingCartLine, pearsonLine; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + init(); + initIndexFragment(); + Thread thread = new Thread(runnable); + thread.start(); + } + + /** + * 组件初始化 + */ + private void init() { + indexLine = findViewById(R.id.content_index); + indexLine.setOnClickListener(this); + productLine = findViewById(R.id.content_product); + productLine.setOnClickListener(this); + shoppingCartLine = findViewById(R.id.content_cart); + shoppingCartLine.setOnClickListener(this); + pearsonLine = findViewById(R.id.content_pearson); + pearsonLine.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.content_index: + initIndexFragment(); + break; + case R.id.content_product: + initproductFragment(); + break; + case R.id.content_cart: + initshoppingCartFragment(); + break; + case R.id.content_pearson: + initpearsonFragment(); + break; + } + } + + /** + * 初始化首页Fragment + */ + private void initIndexFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (indexFragment == null) { + indexFragment = new IndexFragment(); + } + transaction.replace(R.id.main_content0, indexFragment); + transaction.commit(); + } + + /** + * 初始化产品Fragment + */ + private void initproductFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (productFragment == null) { + productFragment = new ProductFragment(); + } + transaction.replace(R.id.main_content0, productFragment); + transaction.commit(); + } + + /** + * 初始化购物车Fragment + */ + private void initshoppingCartFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (shoppingCartFragment == null) { + shoppingCartFragment = new ShoppingCartFragment(); + } + transaction.replace(R.id.main_content0, shoppingCartFragment); + transaction.commit(); + } + + /** + * 初始化个人Fragment + */ + private void initpearsonFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (pearsonFragment == null) { + Intent intent = IndexActivity.this.getIntent(); + Bundle bundle = intent.getExtras(); + pearsonFragment = new PearsonFragment(); + pearsonFragment.setArguments(bundle); + } + transaction.replace(R.id.main_content0, pearsonFragment); + transaction.commit(); + } + + Runnable runnable = () -> { + Intent intent = new Intent(IndexActivity.this, TimeService.class); + startService(intent); + }; + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java new file mode 100644 index 0000000..374d331 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java @@ -0,0 +1,176 @@ +package com.example.catapp.activity; + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Looper; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.RadioGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.example.catapp.entity.CatUser; +import com.lljjcoder.citypickerview.widget.CityPicker; +import com.example.catapp.R; +import com.example.catapp.netrequest.OkHttpUser; + +import java.io.IOException; + +public class RegisterActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener { + private EditText usernameEdit, passwordEdit, surePasswordEdit; + private TextView cityText; + private CityPicker cityPicker; + private Button regButton; + private RadioGroup sexGroup; + private String sexStr = "男"; + + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.user_register); + init(); + } + + /** + * 界面组件初始化 + */ + private void init() { + cityText = findViewById(R.id.reg_province); + cityText.setOnClickListener(this); + usernameEdit = findViewById(R.id.reg_username); + passwordEdit = findViewById(R.id.reg_password); + surePasswordEdit = findViewById(R.id.reg_sure_password); + regButton = findViewById(R.id.reg_register); + regButton.setOnClickListener(this); + sexGroup = findViewById(R.id.sex); + sexGroup.setOnCheckedChangeListener(this); + + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.reg_province: + initCityPicker(); + cityPicker.show(); + break; + case R.id.reg_register: + //注册验证方法 + //validateRegister(); + Thread thread = new Thread(runnable); + thread.start(); + break; + + } + } + + /** + * 初始化城市选择器 + */ + public void initCityPicker() { + cityPicker = new CityPicker.Builder(RegisterActivity.this) + .textSize(16) + .title("地址选择") + .backgroundPop(0xa0000000) + .titleBackgroundColor("#EFB81C") + .titleTextColor("#000000") + .backgroundPop(0xa0000000) + .confirTextColor("#000000") + .cancelTextColor("#000000") + .province("江西省") + .city("赣州市") + .district("章贡区") + .textColor(Color.parseColor("#000000")) + .provinceCyclic(true) + .cityCyclic(false) + .districtCyclic(false) + .visibleItemsCount(7) + .itemPadding(10) + .onlyShowProvinceAndCity(false) + .build(); + cityPicker.setOnCityItemClickListener(new CityPicker.OnCityItemClickListener() { + @Override + public void onSelected(String... strings) { + String province = strings[0]; + String city = strings[1]; + String district = strings[2]; + cityText.setText(String.format("%s %s %s", province, city, district)); + } + + @Override + public void onCancel() { + } + }); + + } + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + //根据用户选择来改变sex的值 + sexStr = checkedId == R.id.reg_man ? "男" : "女"; + } + + /** + * 注册验证 + */ + Runnable runnable = new Runnable() { + @Override + public void run() { + String username = usernameEdit.getText().toString(); + String password = passwordEdit.getText().toString(); + String surePassword = surePasswordEdit.getText().toString(); + String city = cityText.getText().toString(); + //判断两次密码是否输入一致 + if (password.equals(surePassword)) { + //这里也可以再进行其它的验证,如是否符合要求等,符合就进行插入数据库操作 + if (!username.equals("") || !password.equals("")) { + if (!city.equals("")) { + Bundle bundle = new Bundle(); + bundle.putString("username", username); + bundle.putString("password", password); + bundle.putString("sex", sexStr); + bundle.putString("city", city); + CatUser cateUser = new CatUser(); + cateUser.setUsername(username); + cateUser.setPassword(password); + cateUser.setCity(city); + cateUser.setSex(sexStr); + //将使用安卓自身带的SQLite数据库换成调用okhttp的方式 + OkHttpUser okHttpUser = new OkHttpUser(); + try { + if (okHttpUser.userRegister(cateUser)) { + Intent intent = new Intent(RegisterActivity.this, IndexActivity.class); + intent.putExtras(bundle); + startActivity(intent); + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "注册失败!", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "请选择地址", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "账号或密码未填写", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "两次密码输入不一致", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } + }; +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/UserActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/UserActivity.java new file mode 100644 index 0000000..b378b2b --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/UserActivity.java @@ -0,0 +1,66 @@ +package com.example.catapp.activity; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.example.catapp.R; + +public class UserActivity extends Activity implements View.OnClickListener { + private ImageView userIconImage; + private TextView usernameText, userSexText, userCityText; + private LinearLayout usernameLine, userSexline, userCityLine, userPayLine, userSettingLine, userGeneralLine, userSearchProductLine; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.content_user); + init(); + } + + /** + * 组件初始化 + */ + private void init() { + userIconImage = findViewById(R.id.user_icon); + usernameText = findViewById(R.id.user_username); + userSexText = findViewById(R.id.user_sex); + userCityText = findViewById(R.id.user_city); + usernameLine = findViewById(R.id.user_username_line); + userSexline = findViewById(R.id.user_sex_line); + userCityLine = findViewById(R.id.user_city_line); + userPayLine = findViewById(R.id.user_pay); + userSettingLine = findViewById(R.id.user_setting); + userGeneralLine = findViewById(R.id.user_general); +// userSearchProductLine = findViewById(R.id.user_searchProduct); + userSearchProductLine.setOnClickListener(this); + setData(); + } + + /** + * 组件赋值 + */ + private void setData() { + Intent intent = UserActivity.this.getIntent(); + Bundle bundle = intent.getExtras(); + usernameText.setText(String.format("用户名:%s", bundle.getString("username"))); + userSexText.setText(String.format("性别:%s", bundle.getString("sex"))); + userCityText.setText(String.format("城市:%s", bundle.getString("city"))); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + /*case R.id.user_searchProduct: + Intent intent1 = new Intent(UserActivity.this, CategoryActivity.class); + startActivity(intent1); + break;*/ + } + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/Adapter.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/Adapter.java new file mode 100644 index 0000000..c11e11c --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/Adapter.java @@ -0,0 +1,69 @@ +package com.example.catapp.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.example.catapp.R; + +import java.util.List; + +public class Adapter extends BaseAdapter { + private List productCategory; + private LayoutInflater layoutInflater; + private int selectionPosition = -1; + + public Adapter(List productCategory, Context context) { + this.productCategory = productCategory; + this.layoutInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return productCategory.size(); + } + + @Override + public Object getItem(int position) { + return productCategory.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder = null; + if (convertView == null) { + viewHolder = new ViewHolder(); + convertView = layoutInflater.inflate(R.layout.category_list_item, null); + Log.i("adapts", "getView: " + convertView); + viewHolder.tv = convertView.findViewById(R.id.categor_titles); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + viewHolder.tv.setText(productCategory.get(position)); + if (selectionPosition == position) { + viewHolder.tv.setBackgroundColor(Color.YELLOW); + } else { + viewHolder.tv.setBackgroundColor(Color.WHITE); + } + return convertView; + } + + public void setSelectedPosition(int position) { + this.selectionPosition = position; + } + + class ViewHolder { + TextView tv; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ListViewAdapter.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ListViewAdapter.java new file mode 100644 index 0000000..b1bf23a --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ListViewAdapter.java @@ -0,0 +1,78 @@ +package com.example.catapp.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.example.catapp.R; +import com.example.catapp.entity.Condition; + +import java.util.List; + +public class ListViewAdapter extends BaseAdapter { + private List conditionList; + private LayoutInflater layoutInflater; + private int selectedPosition = -1; + private int selectColor = Color.GRAY; + + public ListViewAdapter(Context context, List conditionList) { + this.conditionList = conditionList; + this.layoutInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return conditionList.size(); + } + + @Override + public Object getItem(int position) { + return conditionList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.product_condition_item, null); + viewHolder = new ViewHolder(); + viewHolder.imageView = convertView.findViewById(R.id.condition_icon); + viewHolder.jiange = convertView.findViewById(R.id.image_jiange); + viewHolder.textView = convertView.findViewById(R.id.condition_name); + viewHolder.linearLayout = convertView.findViewById(R.id.item_bg); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + Condition condition = conditionList.get(position); + if (condition != null) { + viewHolder.imageView.setBackgroundResource(condition.getConditionIcon()); + viewHolder.textView.setText(condition.getConditionName()); + viewHolder.jiange.setBackgroundColor(Color.rgb(207, 207, 207)); + if (selectedPosition == position) { + viewHolder.linearLayout.setBackgroundColor(selectColor); + } + + } + return convertView; + } + + class ViewHolder { + ImageView imageView, jiange; + TextView textView; + LinearLayout linearLayout; + } + + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ProductAdapter.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ProductAdapter.java new file mode 100644 index 0000000..e906b13 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ProductAdapter.java @@ -0,0 +1,68 @@ +package com.example.catapp.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.example.catapp.R; +import com.example.catapp.entity.CatProductPack; + +import java.util.List; + +public class ProductAdapter extends BaseAdapter { + //private List productList; + private List catProductList; + private LayoutInflater layoutInflater; + + public ProductAdapter(Context context, List catProductList) { + this.catProductList = catProductList; + this.layoutInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return catProductList.size(); + } + + @Override + public Object getItem(int position) { + return catProductList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.categoty_detail_content, null); + viewHolder = new ViewHolder(); + viewHolder.productImage = convertView.findViewById(R.id.category_product_image); + viewHolder.productName = convertView.findViewById(R.id.category_product_name); + viewHolder.productPrice = convertView.findViewById(R.id.category_product_price); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + CatProductPack product = catProductList.get(position); + if (product != null) { + viewHolder.productImage.setImageBitmap(product.getImgBitmap()); + viewHolder.productName.setText(product.getName()); + viewHolder.productPrice.setText(String.format("%s元", String.valueOf(product.getPrice()))); + } + return convertView; + } + + class ViewHolder { + ImageView productImage; + TextView productName, productPrice; + } + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatMessage.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatMessage.java new file mode 100644 index 0000000..51b954d --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatMessage.java @@ -0,0 +1,52 @@ +package com.example.catapp.entity; + +import java.sql.Timestamp; + +public class CatMessage { + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Timestamp getSendTime() { + return sendTime; + } + + public void setSendTime(Timestamp sendTime) { + this.sendTime = sendTime; + } + + public String getUsed() { + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + private Integer id; + private String content; + private Timestamp sendTime; + private String used; + + @Override + public String toString() { + return "CatMessage{" + + "id=" + id + + ", content='" + content + '\'' + + ", sendTime=" + sendTime + + ", used='" + used + '\'' + + '}'; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProduct.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProduct.java new file mode 100644 index 0000000..d81d3de --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProduct.java @@ -0,0 +1,64 @@ +package com.example.catapp.entity; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +public class CatProduct { + private Integer id; + private String name; + private BigDecimal price; + private String imgUrl; + + @Override + public String toString() { + return "CatProduct{" + + "id=" + id + + ", name='" + name + '\'' + + ", price=" + price + + ", imgUrl='" + imgUrl + '\'' + + ", addTime=" + addTime + + '}'; + } + + public Timestamp getAddTime() { + return addTime; + } + + public void setAddTime(Timestamp addTime) { + this.addTime = addTime; + } + + private Timestamp addTime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProductPack.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProductPack.java new file mode 100644 index 0000000..d7df633 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatProductPack.java @@ -0,0 +1,66 @@ +package com.example.catapp.entity; + +import android.graphics.Bitmap; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +public class CatProductPack { + private Integer id; + private String name; + private Timestamp addTime; + private Bitmap imgBitmap; + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + private BigDecimal price; + + @Override + public String toString() { + return "CatProductPack{" + + "id=" + id + + ", name='" + name + '\'' + + ", addTime=" + addTime + + ", imgBitmap=" + imgBitmap + + ", price=" + price + + '}'; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Timestamp getAddTime() { + return addTime; + } + + public void setAddTime(Timestamp addTime) { + this.addTime = addTime; + } + + public Bitmap getImgBitmap() { + return imgBitmap; + } + + public void setImgBitmap(Bitmap imgBitmap) { + this.imgBitmap = imgBitmap; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatUser.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatUser.java new file mode 100644 index 0000000..f206d96 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/CatUser.java @@ -0,0 +1,59 @@ +package com.example.catapp.entity; + +public class CatUser { + private Integer id; + private String username; + private String password; + private String sex; + private String city; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + @Override + public String toString() { + return "CatUser{" + + "username='" + username + '\'' + + ", password='" + password + '\'' + + ", sex='" + sex + '\'' + + ", city='" + city + '\'' + + '}'; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Condition.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Condition.java new file mode 100644 index 0000000..7237b0a --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Condition.java @@ -0,0 +1,30 @@ +package com.example.catapp.entity; + +public class Condition { + private Integer conditionIcon; + private String conditionName; + + public Integer getConditionIcon() { + return conditionIcon; + } + + public void setConditionIcon(Integer conditionIcon) { + this.conditionIcon = conditionIcon; + } + + public String getConditionName() { + return conditionName; + } + + public void setConditionName(String conditionName) { + this.conditionName = conditionName; + } + + @Override + public String toString() { + return "Condition{" + + "conditionIcon=" + conditionIcon + + ", conditionName='" + conditionName + '\'' + + '}'; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Product.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Product.java new file mode 100644 index 0000000..abb851c --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/Product.java @@ -0,0 +1,43 @@ +package com.example.catapp.entity; + +import java.math.BigDecimal; + +public class Product { + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public BigDecimal getProductPrice() { + return productPrice; + } + + public void setProductPrice(BigDecimal productPrice) { + this.productPrice = productPrice; + } + + public Integer getImageUrlId() { + return imageUrlId; + } + + public void setImageUrlId(Integer imageUrlId) { + this.imageUrlId = imageUrlId; + } + + private Integer imageUrlId; + private String productName; + private BigDecimal productPrice; + + @Override + public String toString() { + return "Product{" + + "imageUrlId=" + imageUrlId + + ", productName='" + productName + '\'' + + ", productPrice=" + productPrice + + '}'; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java new file mode 100644 index 0000000..556f8d4 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java @@ -0,0 +1,44 @@ +package com.example.catapp.entity; + +public class ShoppingCart { + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public Integer getProductId() { + return ProductId; + } + + public void setProductId(Integer productId) { + ProductId = productId; + } + + public Integer getNumber() { + return number; + } + + public void setNumber(Integer number) { + this.number = number; + } + + private Integer id; + private Integer userId; + private Integer ProductId; + /** + * 购买数量 + */ + private Integer number; +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java new file mode 100644 index 0000000..98e4aed --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java @@ -0,0 +1,146 @@ +package com.example.catapp.fragment; + +import android.app.Fragment; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; +import android.widget.LinearLayout; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.catapp.R; +import com.example.catapp.adapter.ProductAdapter; +import com.example.catapp.entity.CatProductPack; +import com.example.catapp.entity.Product; +import com.example.catapp.netrequest.OkHttpClientProduct; + +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + +public class IndexFragment extends Fragment implements View.OnClickListener { + private SearchView searchView; + private LinearLayout orangeLine, youziLine, juziLine, xiguaLine, liLine, appleLine, lemonLine, mangguoLine; + private GridView gridView; + private ProductAdapter productAdapter; + private List productList; + private List list = new ArrayList<>(); + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_index, container, false); + init(view); + return view; + } + + /** + * 初始化组件 + */ + private void init(View view) { + searchView = view.findViewById(R.id.searchView); + searchView.setOnClickListener(this); + orangeLine = view.findViewById(R.id.wjy); + orangeLine.setOnClickListener(this); + youziLine = view.findViewById(R.id.ml); + youziLine.setOnClickListener(this); + juziLine = view.findViewById(R.id.ml2); + juziLine.setOnClickListener(this); + xiguaLine = view.findViewById(R.id.ml3); + xiguaLine.setOnClickListener(this); + liLine = view.findViewById(R.id.mlp); + liLine.setOnClickListener(this); + lemonLine = view.findViewById(R.id.mlp2); + lemonLine.setOnClickListener(this); + mangguoLine = view.findViewById(R.id.wj); + mangguoLine.setOnClickListener(this); + appleLine = view.findViewById(R.id.wj2); + appleLine.setOnClickListener(this); + gridView = view.findViewById(R.id.index_famous_gridview); + //initData(); + new SearchProductTask().execute(); + } + + + @Override + public void onClick(View v) { + + } + + /** + * 初始化商品数据 + */ + private void initData() { + productList = new ArrayList<>(); + Product product = new Product(); + product.setImageUrlId(R.drawable.mlp); + product.setProductName("猫粮盆"); + product.setProductPrice(new BigDecimal("9.9")); + Product product1 = new Product(); + product1.setImageUrlId(R.drawable.ml); + product1.setProductName("猫粮"); + product1.setProductPrice(new BigDecimal("29.9")); + Product product2 = new Product(); + product2.setImageUrlId(R.drawable.mwj3); + product2.setProductName("玩具"); + product2.setProductPrice(new BigDecimal("19.9")); + Product product3 = new Product(); + product3.setImageUrlId(R.drawable.ml3); + product3.setProductName("美味猫粮"); + product3.setProductPrice(new BigDecimal("19.9")); + Product product4 = new Product(); + product4.setImageUrlId(R.drawable.ml2); + product4.setProductName("营养猫粮"); + product4.setProductPrice(new BigDecimal("49.9")); + Product product5 = new Product(); + product5.setImageUrlId(R.drawable.mwj); + product5.setProductName("玩具"); + product5.setProductPrice(new BigDecimal("9.9")); + Product product6=new Product(); + product6.setImageUrlId(R.drawable.mwj2); + product6.setProductName("玩具"); + product6.setProductPrice(new BigDecimal("9.9")); + Product product7=new Product(); + product7.setImageUrlId(R.drawable.xmw); + product7.setProductName("小型猫窝"); + product7.setProductPrice(new BigDecimal("29.9")); + productList.add(product); + productList.add(product1); + productList.add(product2); + productList.add(product3); + productList.add(product4); + productList.add(product5); + productList.add(product6); + productList.add(product7); + } + + /** + * 发送网络请求获取数据 + */ + class SearchProductTask extends AsyncTask> { + + @Override + protected List doInBackground(Void... voids) { + OkHttpClientProduct clientProduct = new OkHttpClientProduct(); + try { + list = clientProduct.getProductPack(); + } catch (IOException e) { + e.printStackTrace(); + } + return list; + } + + @Override + protected void onPostExecute(List orangeProducts) { + productAdapter = new ProductAdapter(getActivity(), list); + gridView.setAdapter(productAdapter); + } + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/PearsonFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/PearsonFragment.java new file mode 100644 index 0000000..7c39bc5 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/PearsonFragment.java @@ -0,0 +1,64 @@ +package com.example.catapp.fragment; + +import android.app.Fragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.catapp.R; + +public class PearsonFragment extends Fragment implements View.OnClickListener { + private ImageView userIconImage; + private TextView usernameText, userSexText, userCityText; + private LinearLayout usernameLine, userSexline, userCityLine, userPayLine, userSettingLine, userGeneralLine; + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_user, container, false); + init(view); + return view; + } + + /** + * 组件初始化 + */ + private void init(View view) { + userIconImage = view.findViewById(R.id.user_icon); + usernameText = view.findViewById(R.id.user_username); + userSexText = view.findViewById(R.id.user_sex); + userCityText = view.findViewById(R.id.user_city); + usernameLine = view.findViewById(R.id.user_username_line); + userSexline = view.findViewById(R.id.user_sex_line); + userCityLine = view.findViewById(R.id.user_city_line); + userPayLine = view.findViewById(R.id.user_pay); + userSettingLine = view.findViewById(R.id.user_setting); + userGeneralLine = view.findViewById(R.id.user_general); + setData(); + } + + /** + * 组件赋值 + */ + private void setData() { + Bundle bundle = getArguments(); + usernameText.setText(String.format("用户名:%s", bundle.getString("username"))); + userSexText.setText(String.format("性别:%s", bundle.getString("sex"))); + userCityText.setText(String.format("城市:%s", bundle.getString("city"))); + } + + @Override + public void onClick(View v) { + + } + + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java new file mode 100644 index 0000000..0b9af75 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java @@ -0,0 +1,102 @@ +package com.example.catapp.fragment; + +import android.app.Fragment; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; +import android.widget.Spinner; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.catapp.R; +import com.example.catapp.adapter.ListViewAdapter; +import com.example.catapp.adapter.ProductAdapter; +import com.example.catapp.entity.CatProductPack; +import com.example.catapp.entity.Condition; +import com.example.catapp.netrequest.OkHttpClientProduct; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class ProductFragment extends Fragment { + private Spinner conditonListSpinner; + private ListViewAdapter listViewAdapter; + private List conditionList; + private GridView productGridView; + private List catProductList = new ArrayList<>(); + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_product, container, false); + init(view); + return view; + } + + /** + * 组件初始化方法 + * + * @param view + */ + private void init(View view) { + conditonListSpinner = view.findViewById(R.id.product_select_condition); + initCondList(); + listViewAdapter = new ListViewAdapter(getActivity(), conditionList); + conditonListSpinner.setAdapter(listViewAdapter); + productGridView = view.findViewById(R.id.product_list); + new SearchProductTask().execute(); + } + + /** + * 初始化conditionList + */ + private void initCondList() { + conditionList = new ArrayList<>(); + Condition allCondition = new Condition(); + allCondition.setConditionIcon(R.drawable.all); + allCondition.setConditionName("全部"); + Condition saleCondition = new Condition(); + saleCondition.setConditionIcon(R.drawable.salenum); + saleCondition.setConditionName("按销量高低排序"); + Condition timeCondition = new Condition(); + timeCondition.setConditionIcon(R.drawable.time); + timeCondition.setConditionName("按上市时间排序"); + Condition priceCondition = new Condition(); + priceCondition.setConditionIcon(R.drawable.price); + priceCondition.setConditionName("按商品价格排序"); + conditionList.add(allCondition); + conditionList.add(saleCondition); + conditionList.add(timeCondition); + conditionList.add(priceCondition); + } + + /** + * 发送网络请求获取数据 + */ + class SearchProductTask extends AsyncTask> { + + @Override + protected List doInBackground(Void... voids) { + OkHttpClientProduct clientProduct = new OkHttpClientProduct(); + try { + catProductList = clientProduct.getProductPack(); + } catch (IOException e) { + e.printStackTrace(); + } + return catProductList; + } + + @Override + protected void onPostExecute(List orangeProducts) { + ProductAdapter productAdapter = new ProductAdapter(getActivity(), catProductList); + productGridView.setAdapter(productAdapter); + } + } + + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/SetDetailFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/SetDetailFragment.java new file mode 100644 index 0000000..1c23e4e --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/SetDetailFragment.java @@ -0,0 +1,53 @@ +package com.example.catapp.fragment; + +import android.annotation.SuppressLint; +import android.app.Fragment; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.catapp.R; +import com.example.catapp.activity.CategoryActivity; + +import java.util.Objects; + +public class SetDetailFragment extends Fragment { + private View view; + private ImageView imageView; + private TextView nameText, priceText; + + @SuppressLint("SetTextI18n") + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + view = inflater.inflate(R.layout.categoty_detail_content, container, false); + if (view != null) { + init(); + } + CategoryActivity categoryActivity = (CategoryActivity) getActivity(); + Objects.requireNonNull(categoryActivity).setOnChangeListener(product -> { + Log.i("sss", "onCreateView: " + product.getProductName()); + imageView.setBackgroundResource(product.getImageUrlId()); + nameText.setText(product.getProductName()); + priceText.setText(product.getProductPrice().toString()); + }); + return view; + } + + /** + * 内容组件初始化 + */ + private void init() { + imageView = view.findViewById(R.id.category_product_image); + nameText = view.findViewById(R.id.category_product_name); + priceText = view.findViewById(R.id.category_product_price); + } + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java new file mode 100644 index 0000000..94524eb --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java @@ -0,0 +1,61 @@ +package com.example.catapp.fragment; + +import android.app.Fragment; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.catapp.R; +import com.example.catapp.entity.ShoppingCart; + +import java.util.ArrayList; +import java.util.List; + +public class ShoppingCartFragment extends Fragment implements View.OnClickListener { + private Button walkButton; + private List cartList = new ArrayList<>(); + private ProductFragment productFragment; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view; + if (cartList.size() > 0) { + //有商品 + view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_have_product, container, false); + } else { + view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_no_product, container, false); + } + init(view); + return view; + } + + /** + * 组件初始化 + */ + private void init(View view) { + walkButton = view.findViewById(R.id.random_search); + walkButton.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.random_search: + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (productFragment == null) { + productFragment = new ProductFragment(); + } + transaction.replace(R.id.main_content0, productFragment); + transaction.commit(); + break; + } + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java new file mode 100644 index 0000000..a36d64d --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java @@ -0,0 +1,80 @@ +package com.example.catapp.netrequest; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.example.catapp.entity.CatProduct; +import com.example.catapp.entity.CatProductPack; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OkHttpClientProduct { + + /** + * 查询商品信息 + * + * @return + */ + public List getProduct() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://10.21.77.233:8081/orange/product/search") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + List list = JSON.parseObject(jsonObject.getString("data"), new TypeReference>() { + }); + return list; + } + + /** + * 获取图片 + * + * @param imgUrl + * @return + * @throws IOException + */ + public Bitmap getImageBitMap(String imgUrl) throws IOException { + Bitmap bitmap; + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url(imgUrl) + .build(); + Response response = okHttpClient.newCall(request).execute(); + byte[] bytes = Objects.requireNonNull(response.body()).bytes(); + bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + return bitmap; + + } + + /** + * 封装信息 + * + * @return + * @throws IOException + */ + + public List getProductPack() throws IOException { + List packList = new ArrayList<>(); + List list = getProduct(); + for (CatProduct catProduct : list) { + CatProductPack catProductPack = new CatProductPack(); + catProductPack.setId(catProduct.getId()); + catProductPack.setImgBitmap(getImageBitMap(catProduct.getImgUrl())); + catProductPack.setAddTime(catProduct.getAddTime()); + catProductPack.setPrice(catProduct.getPrice()); + packList.add(catProductPack); + } + return packList; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java new file mode 100644 index 0000000..a27845d --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java @@ -0,0 +1,40 @@ +package com.example.catapp.netrequest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.example.catapp.entity.CatMessage; + +import java.io.IOException; +import java.util.Objects; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OkHttpMessage { + + /** + * 消费消息 + * + * @return + */ + public CatMessage consumeMessage() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + //.url("http://192.168.0.102:8081/orange/message/consumeMessage") + .url("http://10.21.77.233:8081/orange/message/consumeMessage") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + CatMessage orangeMessage = JSON.toJavaObject(jsonObject.getJSONObject("data"), CatMessage.class); + /** + * 消费完消息以后,设置消息为已读 + */ + Request request1 = new Request.Builder() + .url("http://10.21.77.233:8081/orange/message/updateMessage") + .build(); + okHttpClient.newCall(request1).execute(); + return orangeMessage; + } + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java new file mode 100644 index 0000000..e416e65 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java @@ -0,0 +1,71 @@ +package com.example.catapp.netrequest; + +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.example.catapp.entity.CatUser; + +import java.io.IOException; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class OkHttpUser { + /** + * 用户登录验证 + * + * @param catUser + */ + public CatUser userLogin(CatUser catUser) throws IOException { + OkHttpClient okHttpClient= new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(catUser); + + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://10.21.77.233:8081/orange/user/login") + .post(requestBody) + .build(); + + Response response = okHttpClient.newCall(request).execute(); + + String responseStr = response.body().string(); + System.out.println("responseStr = " + responseStr); + JSONObject jsonObject = JSON.parseObject(responseStr); + JSONObject jsonObject1 = jsonObject.getJSONObject("data"); + CatUser catUser1 = JSON.toJavaObject(jsonObject1, CatUser.class); + return catUser1; + } + + /** + * 用户注册 + * + * @param catUser + * @return + * @throws IOException + */ + public boolean userRegister(CatUser catUser) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(catUser); + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://10.21.77.233:8081/orange/user/register") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + Log.i("register", "userRegister: "+jsonObject); + return jsonObject.getBoolean("flag"); + } + + +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/service/TimeService.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/service/TimeService.java new file mode 100644 index 0000000..023febb --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/service/TimeService.java @@ -0,0 +1,105 @@ +package com.example.catapp.service; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.IBinder; +import android.util.Log; + +import androidx.annotation.Nullable; +import androidx.core.app.NotificationCompat; + +import com.example.catapp.R; +import com.example.catapp.entity.CatMessage; +import com.example.catapp.netrequest.OkHttpMessage; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Objects; +import java.util.Timer; +import java.util.TimerTask; + +public class TimeService extends Service { + private static Timer timer = null; + private NotificationManager manager; + private NotificationCompat.Builder builder; + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + /** + * 清除通知 + */ + private void cleanAllNotification() { + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.cancelAll(); + if (timer != null) { + timer.cancel(); + timer = null; + } + + } + + /** + * 添加通知 + */ + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + long period = 60 * 1000; //1分钟一个周期 + if (timer == null) { + timer = new Timer(); + } + timer.schedule(new TimerTask() { + @Override + public void run() { + new ConsumeMessageTask().execute(); + } + }, 0, period); + + return super.onStartCommand(intent, flags, startId); + } + + class ConsumeMessageTask extends AsyncTask { + @Override + protected Void doInBackground(Void... voids) { + /** + * NotificationChannel是android8.0新增的特性,如果App的targetSDKVersion>=26, + * 没有设置channel通知渠道的话,就会导致通知无法展示。 + * 报错内容:Failed to post notification on channel “null” + */ + OkHttpMessage okHttpMessage = new OkHttpMessage(); + CatMessage orangeMessage; + try { + orangeMessage = okHttpMessage.consumeMessage(); + if (!Objects.isNull(orangeMessage)) { + Log.i("orangeMessage", "run: " + orangeMessage.toString()); + NotificationChannel channel = new NotificationChannel("channel", "通知", NotificationManager.IMPORTANCE_DEFAULT); + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.createNotificationChannel(channel); + builder = new NotificationCompat.Builder(TimeService.this); + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + builder.setContentTitle("来自橙一色的系统通知消息" + " " + formatter.format(date)); + builder.setSmallIcon(R.drawable.chengzi); + builder.setChannelId("channel"); + builder.setContentText(orangeMessage.getContent()); + builder.setAutoCancel(true); + builder.setDefaults(Notification.DEFAULT_ALL); + Notification notification = builder.build(); + manager.notify(1, notification); + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + } +} diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/CatApp_android_frontEnd/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/a.xml b/CatApp_android_frontEnd/app/src/main/res/drawable/a.xml new file mode 100644 index 0000000..8574cca --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/drawable/a.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/address.png b/CatApp_android_frontEnd/app/src/main/res/drawable/address.png new file mode 100644 index 0000000000000000000000000000000000000000..7318be016a0fea789da57d99dcecd6485834d90d GIT binary patch literal 1028 zcmV+f1pE7mP)5000BaNklDk%Y z^L1WPEtqb%ySve7d?6yolv15K!uE{TxjPY%sF{WvH z!8)_=MtOV2+5Z`4zRuVE#u(eYwu!B~+Ih6Z%+n?3e~qGOr*AxXVHOt`uU=VM`9VYu zDWyIrNiZcM+lc6#?yu{Y^-*=#E{ zy?(!c?5x`B%yss*@F3cSOJ_lgk^>1IP5;w+J-?8Snmzlq+I$sOMy`3W#rtp<2 z;i5bihM8ZiI&b%D!#JRi0bHt6E?1sS%zSqpkYE_C^>!k%^K z@3t(*3%)0>owB>TQ=PG7? zuqx@uVP)q?Rk(M)1uBc%`;<|FSx5J@HrrFBuT(1l9e zh(ZvONukA9qgdxFE!DQ#DilhW?LsLSsiHO;Gn1Cd%sb`Im~me6X5QCe@*s=MyZ785 z=YBuJCVyy?``{V46p3^SMQLQ_Mm&n9$6vem2#6OUuz(f)7WJj>cu9gQ;F6{d3g!*~ zhXCv-0|eu-L-&jx#sUcEQPAh8FZHcctRrAH66qx&-eRE3v>`KKWkI6r(De_gH~FPq zs4ZZ2WTYAS{7C>>&A?W`|0>Uca^n=Z@P`%D5||wx?gP=M0G_rA2Kzu6>Mj@|>P=j# z6}KjENmWk>;9X1DY5`}!QZ2#&1rpy>YojVKt7-edeA6~g7IXtFBB_f4@yljynF2Wy zX2s63c43@h3ECmvSmO#0bK!}v1%y}7u zl?@5JPTh%fhLve8WLZ_etGdovsl8;d6#GZ&NxWDUm{HXs0?t@Ds=oIQ1O#Py5lheFr#V5i1~f@ zy7E@1dx`-dCzRt`y3f6507ldNHh>9F!Kr{u%V(ZK$jV#v!aI|Dhd(d?$5I?2!i=Zr zbpjHxHr*CBcJXMM2L$l-W&i^Ga?BSlUJuH%cr?MCLV>qsrcN0|ex)V0U;Etvl>bE2 z{FmVpi8|K*q0J$RC*5ul{WdC<~2V;N7Bt+qPik z5$$fPBPboyzM=9d+OmsR3ydZB1yXR`Hqu1~nYe$ZEu5^@hUKS^H&fiyK*f8?OO{Xv zKn4~7gl2r9?`y@i1j@>h%e-~leS8E!o*An@c7cS?S9FY@_J`!oRXe0rfy(#MBtHjH zM4Cgbfj<#wV%irp+&G+Db;~v@ZhGKDEs|t7g22|C P00000NkvXXu0mjfWqIjS literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/apple.png b/CatApp_android_frontEnd/app/src/main/res/drawable/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..0810381d53b6ac6f3163f5dc3e3002e09562c290 GIT binary patch literal 1988 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 O0000pWc?Ln7SYUUTGXFyL{y_+-L2 zAe`!S*CTxHOaYa5+UMsh6?*@xD4H)SFgHMSO;ZNrmzui=x3C_U*gmtg{5?mI(WBPg zVrvvVtUff)J{GxgZrBp0n>&66nk-;)XI@nxvOtKP`KkqnM58sE+rxj{bK=E91%L6o zDJUkmcuK5r3u^FE;a%Yr)X1eGyTkEWRK)$GCSOn0@3MV=&eJW%A&v1%tmz}I4l#%G d*JWL}?QZm^Xy&~w{S0(DgQu&X%Q~loCIB + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/button_register.xml b/CatApp_android_frontEnd/app/src/main/res/drawable/button_register.xml new file mode 100644 index 0000000..3eb0673 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/drawable/button_register.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/cart.png b/CatApp_android_frontEnd/app/src/main/res/drawable/cart.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e1190318bac5a414c75ec24d955fae176d1a7c GIT binary patch literal 5573 zcmYM2cTm$ow}yYzNH?LV6qO)YXkq}RNRd#bOF()LH56&mqX>pBQZyhSL5dJTqy$1Q zQX~*TiWn(^6zLra2shuobLZQc-TiNOXZP$m@B73X8)|c~^0NW}z@e)HH>J&w|I^Pf z(?$gs`C$OyP11#{n?1H$vt@gI1relD;)x8Nu#7ve4n3RM+ljyC{S(I(;IvvR6ZN8zTQvOqoxIUR@S!j@(?) z7HX}w4=N!Rmo*X_%N9dhD_bXgkER01ccZ7R34`2@1p^)|GjHrBJ7yi|W)x0DURMM8 zQPe*RpIrNijYJ}mqjO2C%Ln+HTE_y$ZYuji^T|fulsc5tTz7I&17`0H@ESXvgz-I4 z-f;NG22eu-V$gS)0BcQ`a>w(jOZL#=)0|P%7@e}L?5zut1a~N?_@Z`x8dpB7NF&8(cHfLvNP=;R7JmAL)y(k4miVc?<)jY$f@}@}^d-yD` ztb{k6y!f*w<4ku^P|&8yrSIhfO_v78^VATcS~C0$_8H*EO!3}piBoyU!E0*e%dKKWkxq)Bs9B<=39Y}JitB(-JJ7g z!vowfb~CA5vOkQd%a3KxkpWVZlA3tIoXzKztu!wwm2a858^2t4j=MJMepgb3PM#Me{c^r7nnIXx+H_so&228js2|%q5<* zgE1#YusuC`D=#mvDpTCT&=BjryFx3tNYDlAdEQ zPa~y(RbB!geB@x+A4)8qyiDMAXjY5wJrBIG;(7>fc#84yB&cO$jY5J{^6f3T+<~vw zA@)krPAG=gSR+$E@D`fCbyu>Q<@=^0y;?p9Xw?4j0DjTp1!Zpz#nx7_@&kGc0>WdI z<1mHr-92RRSA7APtZX3KBm3V;N{R~?I3UYa!Ez^0p^bFR0elVlQMzA7-{?Ms8$y(u zul0sitre3=VRP#s^qkW|OBQDE%gaiAI^+Te;1@=s_mMMzjgOBXR7;$@!|e{Me!AMd z`3M9S%ID3;(ve66IyJ$$FhOfeNl&q1*9Gp#7o)?xKB;ovm3zjn z1|EDis-HB3U%gVoGY#WKV-NRVTRe%)wFZff2O06D35XC;S8y;ZrUqBESJR>tI_GTe zuV24Ha*8jw!aWY}Hi)9V+)Me|49@s82*9Gx11;Pa$I80PJ^&zEm;V#LPP~qeBxGND#sQ+{d7bZ$XREwt0A&YAcz)^82t+pjHTKTO_Av9( zVgR{dU?QdpRtRsoA(Q<)a9Ic0!UUM@@OtOO>)gFB;K{*&?+ye0mS8Lwa;a6qy0^bh z1lb17w(^2Ivp=NXUY7lOwyh;+zzC`=<0Fd8UKi)U`xb};cTxiQpyr|IQa2qVBeF?y z{i!VD#}#5eZyNde*~g=@1BHt*h|GTXBu0d$*37&9$Rk(nw zQc+-^*mqfA8-c-O`@^7AmzP*>I=tbZILA^)l~qC$bO|{p{`FL%ud7`}NJwaLe}7+P zVyXUcI3K&gjCN*Nk$jwYkaA^kFCGXM)Xtp`(;z>U%yP|z9Jg8_KPo!BQHKjGvNpFYXEowvDrizb^Y?Ew`>y5j zVAz*bBA}GA6AC}}Zk{ZkZmeiDhcgQ>-Glqop^l{ag>L6lwcp2S{&u3&dD;1S(XT%D z^Yk{j^F`Y9_Aez}u;2z@QFMv%`yU#x!ynV6(T6U zw-YdCS>{WVt3z=S?uDo%1=${4R2}wTe5CnXsSefCAl6f2GF-z#OUZ1SW2%ik7sH!G zlhtk_qX6LK9Xl)3=cB}m^df`K2fWOx^9L+5d*?&GSBB7F5G;Tb=ulc_gVzvwnfsk> z$D2*zCyHt-EYO5xYdz<|2DKQh9Ctf8rsNX9e%8dr-B^N_NXo3XOWzv9f0Mr@kX;wZ zK-;`-X#eKQ&v9a|0WxKftvYK8=g(Pmf1}z z!fRNN zkwk=VQ1@1p?4u6nqq#KIY&7BR&W%!ENy;C8h8V16?w^tO6~hUiXIIAXmW4gRp2=7QTYw4rZCtaU4m_Lwx=BtY z&{%Qg3O+OgW+>hi&c;J{tC&o+7}td4Uad^O5??d5y<0i}tdp@POe zIl2yx=7fRIZa1M*mRt^}(Bo)fwSBg$#<}#gkDM)U+$kg^6Zk4$*by8k+1}EfVOsz%0Mv)|J*p^;4%<_#& zXzmxCJkx)!q4y32l8hoVFF!-XJkcOs!wwerA4>f;{&ERoren3bl}lOv_4^DJe-n?Gv3 z!ikNIo#Yl$?hovtC-4`J9$Jhqofv5e5E}nN)zZ>Rxy4?n7osX7Q$^7{XKSXbi(uL; zdSyqY4h{}3me<{x73=>bTO(85OWu)nxVSdlvXKuH13AEv%J;8p%OqeHt+ROR1>oG$NCak*U%W)&aXLGtYV>kxV|Ii41>ZTQ99fn7O`$f}3sQmX z14lFj04ZVI4Z?)PGswL9Z0M9gK*P^yq|CI<+Xlx@<{hkC-utkX_aMI!aBloXMTwcT zv@~b-&aeEM?dIQ{jgiRs#5BbUU_I=LYM(0&6ifRPlm9!$AdN?X{sFhyO+U;q#q{i zBsa8BkHT5-sCeyf$i*$Tg15Mhou*7HP78?ENi%_Q$Cczg5Q|%%?V)L#54Rp+mGb zrB9Y=_Re4@=An!ardP5K<>h%C%l8t1l{>#v)XB1r3~)3{s$^}l?HjNe|A)gwD7NkP z!_6xF#+n#aS2MGFXD-cu5`kW-Ln*Cxr^g#(E$7n9o>CMQ6{n^sl=43b=d9G|N%$Lm zdhuwul#+>I2;jgCCTI{}**xl-vbD8EYy?BMLumU#UdNhqd@Q>j!g6d8S)z2RU^6dY zF88Qf{sMCv+jxXpm+!-@q6_xT+@jyS|6Fd`;q>J5|+(oB1IYNTjbU zP`q#2p&|s7AK!aeha!9iE~U$tqRus6NbumbCgJS_qK!|;aZky(4sA`B7!(B+-h zF|*5;k$r)vx<54`|C!-u_?zcBL7$lSK00S}B@9W#49c{AVd zMp1G4$7?Yr9vQ%l5ZrA3^{XP9#B_csk|^n>;QON{oiXSt_M873ad6d3rh-4RdM7e> zMZs29Nn)1z4P3AlXJHfSPpzf8YG3|G-&p5j@2PvKGDmL?T)mg5>-sms&26z@jp&`J z?kBi-2QEmD?xe8jTLl!+`8^XZtu>4L&uSMu_(}32cWTdhrQIj*OvPffLS3ozPcJw z)7pA!;juGET-O4>e-}82$EQU9O1O~}^dBj|-_fxfVZ<%@vovL^a}o|oYP@)yJRHmiPL^+c z5jOXd=SZz9N3!4Z{^avBwwoEEHOr;-K9j_|JBP;~g!9Y2?^6!Rv-PtX8=_FxYoq3c zioqkwmxOV?C12Dq50fA5|MIZjz8YeCzzO7!% znM&Y=Z1Prl8PNCT^X-nIrUg^*P_2ac65)-G>@WQK$=m&mS9|%NkHYe97pVpQ81xUT zqN#?ew`Lu}uYP@hClO%yJpJ=C?k>$Y^5nB7^-cx`FR+%}37-FE^t{5KxSy7$NNnX5 z(?7%3e(#E7raQ@|RrKEu@xcZ!4S%`$(xcmD2X61~?ftWWP^0dYb|VoHx&QpvB)9C4 zV?nmo@Zu3x9X6L9f9lz)E-^_6@vVmwL0h+hEOVJ%@2d>l2gaZ!$BS zWSND?Y*b>YoLAwP#1)=_RgbA=&uYbBBC}j$%aQUOIX?=G)Vj(Nt?#1gE?3_Q{nevR zkKUmf^+rxk&V?1ppR}+)Dee^XkK5j@Tu*G<)9>eDWT?yV%l z1GUPVO6Wgwed^{E;z5><>erGYB!Oc@N9>dayq%qn<+QM=xeF}A#tICp1U*vZDJ=G^hDvAwS@KMM#}t$1;$e>4k4`30%=s6cgpHSJU{ zF!mD(?Em6iJXWtyx38WOVYFX#I&b=3_Q(2MZEo+8nCf2l8LyIzA7?YQo}&NY}Wzsd~kf|B>tPpn6cMKd+6f&GweT_|oa++WnCc5|x~MY%2J z8YQ;>0My`A^|%GI`~0VO@Tc-PhS6>CkiptaD+)ML3bkjt02n4)3qpOsY2rUb(KXNT zZ3{bxnJvVs*+xNJ>x9KGmE5tWy`>u7nOiVYggkUVLC3o)b%H(+;sD+PN6JBQdb;1k z+TQK`s{!z&qjl9t;H_HELi@e0OYyxlV4xwQDgF&&EGU$`&7H<2j1!YdWlwnkQUK0x z{P}aiy5W&4Vs;&WDE=*99^KFWSL+`l>b1LDa_ppLmWL8kazgPPG-*LgIWpx> zt;BJ-|00{3ID(;4o2%Mr!^QulNLTv24*=-YV(1jtU2>zdgTu_Y#|En;A5ALB0Dcls z&(GUoMNxK;wDR5b{`oRxli>x)>&+J!{IHJ6vD?bNOwh9A25`u$ML=%!2siC&b@-oFSDN$?I+ywBey98U;7`UqqQ~0*CY@OEsLS|4Ze*eI39`2M$rJ+ zbiozpS{G^!#)jtnN3&dO*XT1De_sIkVLem>5#j|>x7jsLvvv7KDpdF_H$wBK5^ft9 z8v4)x+%c+g!N(=<0-K*7INK0sc0&?`esFec(}U4^gYLh~E@#W%vYLM8@^>qX zS4)daj|rxW1!?vnPg|@s?y<%G{C^fGk+;Y4*PYmpXSm~8#6N~ZDv@_MrE)gz@tUQd z(J^@Qe{7LDRi>%1cZv+k;RdvY-_EmSNm`Fhj*gC^&THL<1~Z_eY78*F&lW?u4Gw`&E4ItCMuyWiADSh`7xbAuMfre)RT}?xH J#XX0o{{y$Isht1- literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/cat.png b/CatApp_android_frontEnd/app/src/main/res/drawable/cat.png new file mode 100644 index 0000000000000000000000000000000000000000..20e01963a0b9846e9d3f1a548d545a0d4a4c4459 GIT binary patch literal 3224 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 KMNUMnLSTYoDk*~i literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/chengzi.png b/CatApp_android_frontEnd/app/src/main/res/drawable/chengzi.png new file mode 100644 index 0000000000000000000000000000000000000000..fff03064b0057c455eb8cf7525fb18cbeb3d9d59 GIT binary patch literal 1666 zcmV-|27UR7P)D=Q?yt` zgL^K3ZRLf*#XIUe*_u;i3GU4nB(iit*~G{uLY8F8Cde!TWiv1f0xzV~%pfC%v5I>4 zYfR8L76!Ll8P$qI?uQ`go$|uKOe^@|z{E7N>sayVo@;u&0$RPHFmT3-a7BaXGZ43x z7X&w1!4EYirV&G=vcdB(gO`^V23K1Vtqi!QuoEXhSX5pRJZmLpC^2!3L`tl|y`KmN zUoHq9up+v>-cv@zPnH)3=Uc%KCC1c9WrJr9gKM}Ci#B?K;Y7lHyVQjrOrKJH&y~)W zd6zpoNyw?pWXzjP0xp2KotfGp(XJ`&ggCI&P9OW2CNU933|%JgK`kYstmSb8MUWJG(Na zG~}}qYsrXSU6r0e9R-L<+h-(rN4d-CTW#h zu)LqjT93xV$2G#fnKv_ON11t+Rk7j4af_zOm6_|$owoHH(fzrvgZZuDP0k*>u{1l% zTGm=N!n>!tq^=vcahyG=;YUj;3t~MqW0scgQ;j9BbokSQywA|nn%w!pSU4BptSUAbt?#IdFQq}5>jG|v)|Tbpb?+C z55UuQNz;U{QM{pNW8M+Xrye3;ahejdB}>EsQQA@zue5#v;ci=uX#yLs$-*1@cl#7w zTAcuHNmFiiWjhsbXiV%o;!}+tZ^E}fyNY)3RC3}c5<-{z7P`U;@ z7&-aTJTq?d$?jA404PZ|IXiKpvArg&Rk9k575C*0@DEfU}X zFD)rCWh}kRYc8RuOP8OoSYW0pLB-Kc@0hQ;(&zeuL90??z@~`hS6zd*uPP^B2+?R$ zBPDQK%?BeRt=hGhh}NVeJBuQ=+d+{ht3P+P1lNIKzng9`F`ciiy5X_+$c znAtHy!X~!vSG{0V+Zw&023t5@NNB{!Nv~2jBSl-6=rM@iio_cuOGYAd#+T!k5P_i{ zY%@M9#|by$EgOlLiL{GoA3y_oN<(jsTLkknX2%H8nzoD>!96?gnx!aW!*DIl#uBUR za!0)5ga2GwgSIkNIr)kp?@;XkQgS?PRyvwrEhdR#5Q+ih*etVFFlt$#Ho7TolgIk0 zt`%b5oqMm=#}5jD$wWLEOp_UyV#N0U7Y-@W?r_rA{ac<^_{}hX0R}#BQQ@)#!~g&Q M07*qoM6N<$f;J}@jQ{`u literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/city.png b/CatApp_android_frontEnd/app/src/main/res/drawable/city.png new file mode 100644 index 0000000000000000000000000000000000000000..790fb2bf39c33588894e33135a78fc1c05ed6caf GIT binary patch literal 790 zcmV+x1L^#UP)&Rd)Azkx1s<6Vd&j0As9)Z*~+qJ9V@fa4!+P{tX}Cn;o^A z0#97z2mE6~ArY9|$W0q=J1aL74vbT;Z%FVmj;V60)XN)l{^KlBNLW;uIF({2YuBE2 zcC5=9TWbna9I^Z8o0G7cl2!yYdy`1SwG$;-psw+IfN$Dm9 zVUm|{P*tj+F;%2fy_G)hks&M$df^`vz-0I;1liSc%k + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/ic_launcher_foreground.xml b/CatApp_android_frontEnd/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/index.png b/CatApp_android_frontEnd/app/src/main/res/drawable/index.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1ec04f66cffa7b889c016953f3616b8305adb9 GIT binary patch literal 1272 zcmVop#=&eKH z-<)^}Lr0G3n-TDRLZFwOBoNXvPRPE{;p=^LTSPAe9ZBZ8!8}U9{UW9=HCKu0Kq?-Z zw2QZeRtv|Fs%mPTLm4}GTRx_louc! zkNGjSs{w;Ec??b8@xl_!i<{GN<*H@2+#XRadyYXhFK;E_5~+vaBf2X0EkidC&p%W! z&Fi(6q!QR;@U(7(nylU~R$579dqH%v7U;Ery##0Gz3F&(ya*l9a^DiT-7T~ou!rDd zx+-@qRa(m#0EgT_ivll$Pv89JbAGXjB3gD2fzCUH zc3R;||3Q}(H$l&kq8SGP3_F3Y6}YB~v)N%)`Y3@8i$Z$^T*KttM@rHd0plG}=+iGY z;FVUts9Z?5Yy5BgaIGMu1*3};E%!0NN5mq4otu0}?rgxuM%zP=kfjCt(!>ICc^1-J zYc(m!Y%kc|hb0wrwMrJ@+bOa~xM2)$;7s2a3YxuKbSnesyC>hrK$Xft2f zLSZfQxDS$}dxsLyTF_RHmd5rLAH0L6+qxPG-u)sPa{!`Ft6g_!!jvA9cie@}P5{*L ze}`t~qv?3~$kK)>k?SU6$LGR&S6U+Jxw%+ydI|cN9;JZaY7s}H&d|T=s@!S;E-$u9 z()bdL*PT#X6U>@uD~Gjuh)l%Z?-p?OmqjP(R9%&mmC#Ruamk6xp=a;IYuo(TApiTJ z5rO_@b`kq8EQqHf+|&c17W7gvsQd~cnL9(wZ;HFsNy#{<$K?~HY-P}m!|5h6eU}N? zP$wMwG|W?aJiKG2aPuF`lLv`<&%vz3-> zZq*`M_B4Us@|Ho|jS2B|OxCJJth>KdwCpK>dc;$CqqMtNx7`#gTJC*-KlBDiz=hGJ z$K|p0l(x`Ta3q=CO-!Ewcu*j%I|<<@2~y8oEcm0Hfe>^N{0v7iZ+uFiH|$IuJtr_s z`bdw521Mh8p-YBJGWQg?_{Y(H(InM%oB`+yi55=I#hR}<@p24ZG7q21G)oJho$IRU)#qq%qh0000 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/juzi.png b/CatApp_android_frontEnd/app/src/main/res/drawable/juzi.png new file mode 100644 index 0000000000000000000000000000000000000000..106df92a6a38fdf5074c2969a512e2e19dde5f7d GIT binary patch literal 1898 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 literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/lemon.png b/CatApp_android_frontEnd/app/src/main/res/drawable/lemon.png new file mode 100644 index 0000000000000000000000000000000000000000..39f12cc86e2eee35fb7435398cb8dafd48007433 GIT binary patch literal 2954 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 Ad;kCd literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/lemonp.png b/CatApp_android_frontEnd/app/src/main/res/drawable/lemonp.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5eca84fc6fed54c0441a05ce0b9e3d333db3f7 GIT binary patch literal 10312 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 SP*iyU0000$f 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 M3L5eiP^-}Y0ZeS-vj6}9 literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/maowanju.png b/CatApp_android_frontEnd/app/src/main/res/drawable/maowanju.png new file mode 100644 index 0000000000000000000000000000000000000000..77285c7c43cfa90dd24a41d8481d66cd93c613f1 GIT binary patch literal 5188 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 FV1lK$3E%(# literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/ml3.png b/CatApp_android_frontEnd/app/src/main/res/drawable/ml3.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d3149728b5aa31a7b1b1c31ac2ce68db18cc31 GIT binary patch literal 2236 zcmV;t2t)UYP)Px-c1c7*RA@uJS_^PgXBGa=y_*fmW;c+8G-6*QP=|qvar&B8+l)@FR;pE@=z!9wgCLPmXso4BVtAB>keg&fvUjt4_mTTJ z&c7)Mo87(l-)->B>?C{dcfNDJ|NU5kgr$djKCCM0F#yJ;4*>>)4L~tKFwoIet@K{3 zgn}d~Y68RwFcJ2d&1yG*s)9_36x8P5c*O$Wd;^?&Kjn!N0NU39 z<)6o3UR}G|-?Zu(FDFkSW~AqnMCyLm{&9W)%5#7AiUsG>3&5Ya#SQ8n8gHf0> zgD3nCue;gH$y10O?O(&}Jnbsv)ss;69`=d_XX$6bbFcQqA(nL1M}Mmbpi@$ zyqr9RSi1HH0Qb7~kCzXCj-B<21-t3%Kvjh&j*p*(Z^wagoH=*aLjRf-9j=Ax#cJtV zAAkl|A+1M2?Z@4zYD2Ksx|YYdKkYgI<&BAgvFk(6`!=n09qwFfgrng(He08?#M0>t zQ1-L~daNLnKl&j!cP{dx%Dh*$z5p`C)G}sHsPeq}$OG4vTq9PbZ#jscmx`Vm1$FlW z@gxvSfQ%$yq{qHD)WBIh515uS5$00&4?%tQPg&1dRakj)W2Vm(GS?chbnRyVR!Rw( zD$wB*P+!SiA=q`nWxgM*`*le|Y+dVMVE$C)D8=*3y-?4IZkcU%)wEZ9+ctczBq5fr zu~hJ>0+}|H<`=X2$0cg6EWe;MH(gV-kWpQmuK=z?-c;p3o^1aRcuyP3dWLeSxlFZ` z#~&&&Kz{BMV$Bu8`O1}m?nA3o5NFQI}$c+-HL3JclvL<%EDdEP8% z1Ti6SIxsx|1S`S8%FN$V&HUqjV05e|gb*RE)$3 ze6rw}Eu*I(#$N`m2?C)2P#qW(7Ye{hrC{}Bm!0VJ>PT{&%JKUQ^|9~g-A?3fTK4vx zk1DTqu76Jn7wK#*xDi$|k>y2c3*~3}v!6ZvaNeBrK6F~P@1@RnTz7;;=IIF^T`&hu zGL?fX({!kj`1o_Pvf?&>^ZM5&1M>@Me)bG$L$f`jPaz<6Q~rGlnKsH#O*A=YdSIQp z<-1Qw39-&~?V@CQ2}TSc5(kODBXK~FgQ5v!o=>5Pfg#-xEXe5VkHR-Jwz9UXD}LqM zx_-Ho5Hq43B*N_lnZ-(Xcmxn1-2e%ZqWVV+P}BetxlP1PH_v@P(*DBhSF#ysWn0t7rG!|zCU!M9lw9bxlM$H_8;QLuItGfw03meL%%Zj%=fE6w7w-#4;Tw#> zsq}ZN&ELCTPDoTsfsubQELq(oN6}0pqE=&Y1|zVdQFmr$ly~(3D#et?9tz0`(KRup zO6-EBMwQj}I#|nHl1ye7{X`uYVdbe!IWubBhH2@2QGjz)PfgmnELQ6waCBmbb&FGe zN^_LQH>y%KVn_Q1n7RH+B|e$g-1&Dv^eYKdBL>PIT&)n0wO7htBaz7s{SurLrMA!ZX;4{UL%V62GVC~wMfhwT@lso2w2X)x5zA58Aj*%A< z?b{9JFBHWt0p^Q3tbG%QZ*)~Hlxyl?cXUd4Pe9~_=-Lhd_Y}o00p?^H*6xW@cHu(r zs{{94l<+P^NL1Sn#(hPxOM=bc|1}Fq4RzrDD}?|7SXhNp8;rN(4W*$j z^WD(~;dH(YF+$1Ml@$`{-AszoNX(54ZrezH9?9ea7>VngSi<}M`7%uY_mvd1=t;YRBv))Z+2SaJ8_|7udpNvd- z(<(*W=+Q$9F_Qc$#}jvOJoy1s2f~gv*lH8C1Xq6Rtx`CJ&;I}fpv_>D(_6~`0000< KMNUMnLSTYp6FANQ literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/mlp.png b/CatApp_android_frontEnd/app/src/main/res/drawable/mlp.png new file mode 100644 index 0000000000000000000000000000000000000000..d5461b4cf44617952a940e0e6183767ba1a2b9ef GIT binary patch literal 2069 zcmV+w2Px+&q+i zAS4n=Q^BaQky^(_N2+3BG{!!#;uwoIT4O;NRBQq9g-T`1!xb1{5%+y}?{@C4rJ}HV zm&e#~I5P})xaT|P{J!&@b3QHyFNknn5Dtuj{J&*#G$W%K8KE5*@uT(2)aCvi3T>)^ zHc+ktGH*-%iMu1gGNK^y3xCpBFY6lrWZ=HzT$&1t&rKL^m|+3QOh|Ar63S0hIx583 zQMffH@92$$*vPB5nmQ&&PW6OD>|lz!y<3U1)l&Ruf@_tBM4Y5jYIcox6=Lr6=RUCc)Fq30Lkuz`Y0EnBwh*Fn^DJ<6?A3f(u8X9j-~+QGT-p z(V?D&U;eIW#d85+vQc@bH6>=cFT#WRl!8t1WaOWRkGojsBC>CF5!si!ibUHob|0y; z#mJB{vOXzhPwDmM^tI7b;p6UXi{EFCTj}*CXeoo~?-D10adx0b)P~%ne`9NONFZBM zm-!S|Hq@^O55OC*xwG=A((2Kp(t>YCLhNAQyXN5|1*9@LWZg=fyLKO55=UxwklV!c z9fdMBh6e?*J}LIY#`cGsDFe-K>3Ae&YGK(-Kdb(pF7$|yiCFNuw`rZCM*&JtnVxU8 z$Wc@&#WXKT`+;NMyID01*nay>Te)xM!k@x3a){Lr95oCShve42S4gc(Wi{*eI zxHcEIB@(^f0Ify?2IOfey(L3gT`N}3^7~cB?muJ=3Z!`F&s-0jx!r7_Y5s>1{@`*6 z5F{5|E*AusF#WcDq?$vaX(RM{Jq*mx<8Ig5t;WkQ*@H)Ld*fwh2{Tg`P4oG9^MRwe zg92d|rN+Pg@5=i232%6hK~%`A&)DfvQ{Zv{5ueBE_za}<&4s&Y>QG>eBOh}E$H8x$ zxc90uRxG4WpD(u?RE_M+&YpR%x%tqQn>T%i6yY!}o)Z$%GtJ*WWkqIYQGX@}tdXqr z^t`hdFMcp((xhPu#WpiWBMqAR-_*Y*l_DW3vTWV9oN${!K3%h>^g?xY_^I8y;3Q%- zlWdFBind;@hW61Tlh#9}63e&cU~yPjy>|C&v)P97e?jKI_f#|XXJ`~i_mlCTqr zK&e$Gz=1@s(U>y%UrG6T7aWB`!|zX=AT0%8_4d1N_3D!HnwmM^ez^sn9{qoC8_0pO zy}kDpbDRV&E(0GcnucDdgI1w1Z2}{$U0q1p`5UI~HgC$!wfN!8DoDZBt-1S8o=p2_ z@ggj-u??HL7EPP#1ssmW+F-ic)AE-~m$0w+6w+d2_a$%KxOPYxVHPJXU8=t>l@e!i zwy{25!=bote;!DZ&>t>3Znf1}%?K0Fk?q?L?ml)bnR$M1-n`+6(W;G-+FHmuJCU{| zW^Z!#7ircOumWL>?BBfkyi|67`uXab0eiVMXSTd&E{R_5?w8ko^;IOBb*w?y7<-;N zqae?7_xtlbnvv0rjL;5@9<34D*g>0pVKVX`q5T734n@0V00000NkvXXu0mjfzmV~Y literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/mlp2.png b/CatApp_android_frontEnd/app/src/main/res/drawable/mlp2.png new file mode 100644 index 0000000000000000000000000000000000000000..aabe170f36b71dbecc160ef964e5a3a7eeb49645 GIT binary patch literal 2384 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 ULTRDuZ2$lO07*qoM6N<$f*O1jrT_o{ literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/mwj2.png b/CatApp_android_frontEnd/app/src/main/res/drawable/mwj2.png new file mode 100644 index 0000000000000000000000000000000000000000..db3a5967b11f0b9aa43c60c9e6235a30734d354f GIT binary patch literal 1497 zcmV;~1t$85P)Px)lSxEDRA@u(n0bg*RUF4Z$9vx>sf84oX{afsV3XO7wAdz;3N~d(jth>qprvh= z{m}wto6#mYCZ?tY8HqHNVPXAai<(N7Eea7d7A;^&HFM9M6Tdm z9_QY3&-s0S>-QYRF(T?1!9fMc(dNmDM=BoaBnwnRtCI{{^0F0=v}3wnIhbPLOa*-n z^i#0kKqIh8!}}$hyn_!j@knU}-b#jw|QEiwfpAkc%Cl zYu$KV0F$x+Q!)_W8du~e19L-IpHS#TAL@Y`;DCV{(HtKh0v>kr-_|gpTred8$-x^2 zZUi3D|0|T&r3%h!fn^d_z#awD0~>02@!>K98x`~b8Z?YA2TajGe0U642z;esL~?T< zu2Hbuz-hpT8m5WY65%#kS#R}@J%3QcctXPiiBOSoWYI<1dMyd!Y2Y6B z@IDPP#)pl-SSjBjtUVGyzE?0*!KeUsL>qdrM8WMcmI@WXl7uonb5L*KX6K2T5Z;RB z=b1a@c`8&oHnrv^j7vsa+0c z84Fgda}w}-!3f;Mf`Q~RfgF6j8=W?dqxc4mp0V47Na1}6G!Ogm+UmALu|x1^dKy+DX~%@ge`Ay)TPx6zU6BYrX|yqqJZR}&cG|cHyVa}aFep0 z5aPF9TS_kdC7Cx@0IPxil4tP(A>7OrkTgSYcZ5>HI3EFJd&F5!s>_uMwi!52o=I5_ z;f{8a`UVBBIk1ON7aw*4XLk@zjS40v`&9g!qC6rWdN4uR5Q}7iww3A-iKvH5{`r9` z$`LBVxBpHl@ zZ0}s-*6ioO76pSe31usJZugK7oCge4mo=)!4I2X`6c>HzTzQ#zj{{ z@p;n4g<#4rwEubWKu(r&({eh{CuRLc4gC)XIx`@NP5M;9DJ{^~gT^M?1O7@=#J2~m ziSC^=(tN*gx0K(dU2r7V>MS4~guQ+3!?VDAp)1{>t{J{A=);srT?s_UoOo!Fsudk7+4v?jB-G9DG=YD7&mv&3=78BWgY>J7d9K5p35;00000NkvXXu0mjfDgmCI literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/mwj3.png b/CatApp_android_frontEnd/app/src/main/res/drawable/mwj3.png new file mode 100644 index 0000000000000000000000000000000000000000..eb32a9ed8c40469ee2e869aef2050372634261be GIT binary patch literal 3040 zcmV<63m^1}P)Px=nn^@KRA@u(SX-=A)fxWQzRv8~duGnz4hISzA>suElqjNA+DKEcHTclh2lYjv zsj=zhrD9buO>9l7ZKXD8&^Gp=rlzeAji$C*MKlCZ1dkPzfE+o%IWRM4_I-+!jzb%H(iLlQJ4x9z@|7OXv7CCE?Go*pD)H*|oJ?&}F zTI94r@0ISu4M4-+J^chp3xegf9fGh(Ek-z2~Ok;q2 zF2&HnbRCqW5cNUu1HEABFgON0D~O&dKd|<-&jM(|Kn5S#cp(Hm1h8Ax1_g(H{(NX< z7f3U;CLgFF?mLRK)_@+yauArbh8)ir$k0H=0*q<}#hKH<%BB3Ju0b3*2EOkgnBD>m zdY)-`$o=8kof82xAs~(QPkx_)Jt`*@DTi@>H?&C=AWo4S>_c>*7kV=sy`H8iOB7eF zK=9A4KoCK3Oww+Ih>C~expQDl>QErk-ov2Y!(dt)5bpQZt$E~BU``37x&BwbBhc+~ zeXcVUmR<;C9PuYd5clkb&T|SuX}m=nT|;5nBDlAFNxe#YJ_6$$(asML_k0LSlH6A~ z2U@teZNXi7p`xcqGbGz~!LY5|nxH>5x&FBpqpRc1oeSq@Tz67R+B2h zBt0Lgv015zinNxd!QZk2!VgfWdMY9k=m+I>YkzVgm@zFfxMAamBIW1AO<$?Ayy_}Y znyFA4yu4*-4sr_0H>5;ii0brdNPHi~d2_&~cB<#i&D+$~xp*NAO$XT~{O!A;X&UPN zM^SRUd_FEv5wA zW?LvY4vfq4NF}BA;%hKlRxlULMbdjX*PP(cG#!@XDD4^3rvOzC&9`#y7w2|CD|?`$ z0}wJ4OKbHXgV7EWQKBN7l*G``v2wZkubT#1lLBe1-?%pm zqi*ToW@i;vlEJw8Qiv$GWNpW8m`9K2+OjQZ(Bk40@bi^~YDZT8WFl#!TS<^<%1=EBfBbyBK zvhZXK@#K6jBoz@xFs@nlap~G+bH)YY|LmC?V3;qYef`6gsZ3_IX6}%Z7F7@Wilq>S z27bITdJ{u;gt*}&sW%{+AxLL1N+noTPeq;aM4#3P)_W9u^Kgh4#R5{dkORpw7^VqY zcnmpEGYY-krP0M{6V1k~dC zxVt>b3%%+AgFa~6d!YL8IwY&%4o|fJQlyXAlRCg>PK9yZ@=e83aVP|j0y6N}ua_5{ z%4YcyuQ$MjP|-(<>@SQHOLb|Xi{?W=zZ;^}P|0$FT6tp3y&DEJr=aGQ2@nSlgTMdL zP){>b!*SIeDn>;V!KzfiEECy+*)T4@onKl;hEPR2ne_|y zsQvIXg@{w=d-em(aa)KnK?tdFuK<#DnT&902BYi^DKlXL*6laT$oFT*b8Zl=tgwzl7 zARrSU5v8wfde}aZ@n2ERG@!{wYoHDxsnr&ZDX=6Hr#x&h43$qP;~<_wholH$HBM7&L4?k=@@ycDW3b6p=;w9A zTy$QZe{z3#l7m0wdERifI>tg10@D6248v9 z+DMB@3bl)OSiC#ECyyE|=e*h=M*7 zkoJT@5OhJ{HV|$E!?o?_)M$b?1_3_=MX@^Hl~GBtLq;OogeF^I8CpBaqrxkIeh~g9 zk9-QH!gGwV;g)d%NKOmL$a(wv`bt%|dWC>kLZAy6v2HMQF~+74(O9Lfq(~ou4luAi z#Ap{0ZF61soeAuB+#&xlkdrM=L?-%CIIbVpIyyRH##nypa0cXz0yzWw{oh#RERfUC iz*%aYhSJXHC;tXf0T+H5GnNkk0000)4 literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/orange.png b/CatApp_android_frontEnd/app/src/main/res/drawable/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..70e8db8381261f4157481ffc28fedfde33b58f5b GIT binary patch literal 6129 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 kysS}tl^Sj`oj{`Y56voTT^KUvI4VJ~OqYP#V z=xUQ0uykCXRpEq1z_Xz*4_N4$N-_aXeyzF7%b2FW-7@f*(3eLowb#iq0S1x&0^IEq zP=!;|c^P)G$#jzhk(wvTHrGI_`o++f?Jl-X84M!*8@R(IKojj!=*xhu4{N|6(%*s2 zwvJPDODnf<-^_FJXPQ4Nz*3}h+VK=~1Ii-8?l3Puw}VUtEJb=$;gz&2&A5Lu^kr9O zz*1FTROPdb!R^eHcf%2RyOp?Q2KUYBz{Va<11%3(b9A7b7ueq{fWk3>hkys$(h9r6 zyqs*NX$cra8UW>Xj@O=TL8RXUI~w|!sjwgiCywj$B7BjO&JRLgCS3umzzb=0QW&51 zWya`&NdExtRG~PXm&$=Jb*NUuye70AZUufQ`|_|W;6Ffr8ep=o912GynU*K2T5y4@ z`(LTCWu_>^hQI*m^iGKXn&y^+sryX4`6PsIldvu9rAwDu%|FgTn<$ejBJdwAaHUC?BTvie6!0 z`XyQFZU)zR>!idNYiy_#rDg@VdSv|A?vPF#*=2A$%6lmp{5JIEN!MfM4dDH@jx7L< zed>u2^JZ9(rmoR_~c116cgIRh(k%y9i^>IiW4t~O0J}$laX>kVYWW~*!XY)tUC;7*u7Dn7;bH_Hee=%e>9oTgN@E|HP)nI)ZLW@$I2-Pz9GxpLn&d(QuV{(JVG zd(ORr#ie^0SMKHRSh>M*n5@E7Q7%{52kckn$EGIsHqYiei?kIeu>}|g%tv?$<;HrL z0;g4Y(Q9X&EpBT>-=gvqN@G-E^G$7Bn^RLJyloqx4;2YJYyk! z0Vf2mG$kJ4CvhTPBUZjKC9UbFZ1M_pm|_|U2}?YOT0aMNyFRnew~$Xz z?lmQ?oe9A(=;Qmq4`VZIYA4Dy>_lYuR@|C_p7kglr$wHTV0<;rkF+<>D$G% zGKQn3q_zAsW_8OPR+(ZN2}#JJ5(jjY2C5yk^02TIND?6DcVmGb+41!Rgl>Siw&nHCE(fZGv{NlYp3 zXJ5;0{9;O4&oAj3oF=BLLp#bfz}Jqlr@6rXdVV#9{Qe~uUfjxBU_NklEdUV?qI}@` zylg{I6tDu}p*r2dabWvjy>wo2C;txT93iBy$YO-G0+(h9P+&jGqi%s8ve*x|iHb}@ z*qrrXRXB;#*;3%0)IAaw`5a-MNk9UtT%XmA`1WL3p4Q|IG@;3xqO~RPiu4tE zN`$wpp~7*`uXL@cD-1Z6){L6Oq41=XyP2vnT?!YOfYk6w-ROh1HaC3oxOxT(m0l|> zu^g?m?YUOcnV#xpLajD?C~z_+jBDj+)(*RFP(o+&LR@Vc!+@Q@+&oHDd182boraf; z3nILohYzT}44*TPgaK*{JglwGf|F-#NbrZg2#*-7!hrR_Gg$(uR;eNFbR&L=t>O4E z;w8A|s2c?=ieZDmWpx8nijJ}@X`>qzFx0*>MhNRi>%c3Irm(cu3vlY?LsVpnI?N*G zCK09pQy2{C);EJy?I0o`X=K<`4Se!N}B_d71{=hL2~PV0Eh1-W_Q}l Z?|&mRgtdm$lv4lz002ovPDHLkV1jf(W2yiE literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/qingjieyongpin.png b/CatApp_android_frontEnd/app/src/main/res/drawable/qingjieyongpin.png new file mode 100644 index 0000000000000000000000000000000000000000..e9eb596d805929d6a3e25a42d33557d561136eb2 GIT binary patch literal 5268 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 Eg43}^wEzGB literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/search.png b/CatApp_android_frontEnd/app/src/main/res/drawable/search.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b5ac0dbdcef88a2050139005fe5704a4ae21fe GIT binary patch literal 1299 zcmV+u1?>8XP)w$0$^CL1&DqI@L}Le zzjajK(0;v(xCZP*LRDbi0AMJ9eIT3!qlpN=02E-BV~E9ANnB3AL;yc9I2^R%@#}&2 z0AC0j&oMzk+d%Y`7H#}AS23==cVI&LH!$#oiea#EJ@Bhw$22wqSPbI#v}k;Bp{sXl zjhT?xmx>pdrLD2|7m}L-J7MEl5Z+gkYBBrv>_lg2We~~YF&)rZMCI0!Fa#)suAR0%U@)NsHRm zUb`kIV$28QGiKBWWA=;L3288cRuXuHGFc#M-`Q&Fbp%=g#wiph%Q@*UA@E@kO8tUw z>Axo4oVT5vu<;fMwJhE8;M#AFrh^?bw3;9%kf6;{@=}2AQicQbCm98m^nYoVJx_hR zU>YAV@Fa*9<}+qWJtty(3&yldiNt{6n~q#kA2a1m1ra~bOc4M{FdhZLBIeD3SbUpf z8f!Gmu1$d>`b*5TUJ$J=i8e0Fzhl$*6O6V@Q(atk-%vMMbXK!$a!lg{fUyA22IwOK ze&eF#L)z+tt*Y?3S3)C(tZO`-T5v?4OiV{roMtsX<^{e2;784}r)35@rm+gZG6L5z zQw;mc1am@cCC~1%&H50CsDZJ;w{&1fWE-?3=qnZ0DJ9C(MWPY`svuw%7tZ}PXfkarp!zKE-`@f8n&gJ%9C(czZ|GH_1S8k8pT@25h z;FA0ffV%wm5a=DZQy$1RQfoLgiUibyA*ui!os#`UB2`Pl8;-ZU!NkY%E#MkiyWwjA zq>a`I@KJ&|#LT52OaU-1V@F$R_a5Iie?sY(Q%3}DYPp=m-~V)Qv5%4sO)U#@!E>Ic zW9mV>CgaktDXK+r}6@cxv_C!}krkvAF*|!vi9{`&`l&WTdkZeVEV1 zXg~Q99UcDWT&?nX)uc1}s6nNfi_CTI1%bVck~zO~;p9ImZw-$0g8%1W1uO*KC*VTh zeFpY|_bE6R{P&i&O??jT4X$3Z{|h(`9~10}EIH1@F_$x#yhk z&bi?QEb5+L#uClcOY47@0CC}xk5 zc-%E4a7zS-h1lr>xCw9ukcI{4KSSY!5WOVoJwV4a3Stx#>amF)P=>L|z{M7{6d^K@1RCI_8Jcz2<2>6X2nP;=SY zn$f8Po2HiQgyQxI3Od#Ve7}`^LP0JAyylqUO{EA}Xg_4x-w=3NL~Bn+8^2txQ}Bzc z0jyieuK?Lbkv5Nre(;JzT`CH?Wq$~utL#v_cL!kDbu83gN=F(m76Ms+%5J2}WTzsV zuNB&_>z{Z|H0?WgPi67!RHrez;)@>`xcXo=qq>wxi+e8%DRd!a8o6ix(k**Gh>%o6#Qhw(GejNw|&D;AL{#pil2Ec3c zGMNCF0r1HDtBg3&rfo&py|{5h3#@Bps6X){HC_;4lp^Dz$&cwsvkS0f)x{FWggod9 zHL&%z86I<=LsoJtAbkYF6xp4MHVv+bQasTnimf1?atn|GUSZwIH(J>>UeS-B5r-IPN>T# zmwi--?y8Z?&Ed>k_GX#sB#V0GrPE@kTeO@DsQO&V)CcShlEKrO!d4+(Ur@Q^n8ph$ z(#o=IY}9F}b2v`%5MSZ#YrovqCH_RWkLMy$8f;*S2WM zT#@kkK>+6*)7VigJyw%@sZ(~7aGmAbqF~aA8XGGEPL2@r>YCbOHTrQygFv2%MMfVz zWw&Yq0qbe3?+p TO|NVS00000NkvXXu0mjfhY}6P literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/sex.png b/CatApp_android_frontEnd/app/src/main/res/drawable/sex.png new file mode 100644 index 0000000000000000000000000000000000000000..acb8197caace6c0653da7f1ea3a90af3eac20179 GIT binary patch literal 1509 zcmVfmCLe z(i0-0qM`_b%)nljrlo%r6}^jyGTlsPz7uDdk=b>2=bPQ_z|699f9H39-}%lx_uNaU zV|{&n2eq`c{8JvPb9$jrIERQ%12CJ2rmN~l05+=X=b23A&DPe|Kk9K(J%IOq zv#PFR=H_}>8;_!BIT0-daNscbFIBbEIrrRfoOQ)TQFLt_$D7;R+rO4CNa| zQI3c@%Hs=}`N>+?F%jpzU!3=J_kM+{-lM8FI_F+&NL+V!_uM#+E%cu<^9|L`xm+&Y)YSA3fb_U= z%264A#1wlMRIMui!^ ztE=naR4Qc!`E_Q#Dv>zv{Q^~e3c$FsLu@$@;6Y|yX213I^&P%<@7|vP{LajWjzpaI z{!~@{48Wu5bo#zRp2&(SnmOmaw;U)%NL61TqMKB8D-j(I;E?L%7m;rO9MkAZ zt*VcA19%vKm80pE`e#LaKXD>*BY+pm&S9}w+?YzG-T|<#SS)s?QYkB#R?AlJ+O;d3 zIC0|3s(J|#nNRP|ojbR8c6RPa8buMYe7l*5&JDxxLlLpLz|3=o5+?vUnEC0huC9wK z;>jvl_=*bplWeJ5ZoQd@iPES zU=mx`-`{_EE|=R=3oIhm?MwkMV4+p8b?aOdMVAuM+xBz-j!L3vFouX`gkiX)@_SED z&r!u<@l60H6VduG3@@t1TT`5f%p;;}RCNXsoujJhk%+4JsOqoIxv5bUS;t}z`%ro8 zYi2%fDDGN0SJ{qAK18%bRma=@JQ{%j{snMAmEgOab2itIHb9(+{05*>uN;7v0n95e z^-*doxo-!sK91w3v)OE^Sx6+#d%s#$ZwK%rfGe5VRvbjc3goHvh!T#kV&=ONVo{2m z_x?IneF?xX%xs0WWchr4N)QAMogapc1kr{t3}+`6m&@fQHZ?U_lq@kXWajs(#GM}m z!M^{Kk`9BjE$|Bf+n9MlJwD3k^A!QFG4s{c4kBW&U}Zg$5sd%H%tzMqqbQ1&*wR+j zUgw;hn)aE9R65mqJdKRc&tx*2YPIEqNk~K<2e4RG7dz+HR0F*CR^vWsWac{9znOV* zQa%&+Dgf)F<}f_Ei%dr6_B3Wx#lM)Vxi{to;Y&QE=QZ9?!v8wvDb)(L? znh_EaJMJazL~72hs%xBci<1f~y;l1Y5i7vg0jOEQySuyXD#7a0NNoo*TWi#imBd-M zKty)WVIAmDt$T;6<{DxzgM%PAyREIw4nhstJ|QCV0DybVTUD=d&eLQ`5K(IxWbO0&aU5^ky?ghTNs}f`i{p4^9LFbA zUBV1Cr`;^A48zdQyCb&!USU3;pOs3bysFL`hINmswy3JzubmPE!6}A~<9I88t=VjL zOlo7z{IX_X{P^+L6Vd7Rv4{mh@Pn$_&E&`Fbo$+;OP5+J^}pJGUSnJtr>m4M00000 LNkvXXu0mjfbOPYO literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/shoppingcart.png b/CatApp_android_frontEnd/app/src/main/res/drawable/shoppingcart.png new file mode 100644 index 0000000000000000000000000000000000000000..76c06deb2ed9ec72af4b344e566c37590fb35144 GIT binary patch literal 1155 zcmV-}1bq96P)B7k%u8NqAP+9@^5%T!{O)<@ z-nsV?`|#pEWX1vXUcI&TOsC4_$5Q0{is#M4_nUhK5GPIx+5sES%&t2Su7aAU_+EXm zF@r}RUx?#8Db3BAzHs5rR5m+GV@9FqevqRSCS2gO)m=-a(qBnI^y_!qiI}aFCk6AN zfU}K4@l?Ogld|u+dZa6rR@pQP1wSc>e*JcZ&QvOM07B5dYGtaPwbeRML#gEIT>S>z z4g0Rp=}Pc7fx}w_YXYhQtO}@7sEVi(s!F_0vSxr<6h#XjP+PIKhRMmLor3oS?SdHL zSxI>Uc^Q)vkf)Rfkpqywr44t1vaJCERYBJY)Laux%?;98yI@Gy|8d3lf7{Gg&(MuR zair%AmCJ_)tj$G(sSz(SIVDK4T zK=(Yl4#P{AMzUep8l)k|MVx``8)0$c^z94XF@~*HuG=fqdj;*b0CB4!lg(aU9vk~} zD}5rFc1{V!hIX)Fp}6JSP6T=yIWh71o@P33S@fz)B-6bHk876*bS5aD7QOMf zP^1<^zxdRimdCz?j+^0Lb%~TmufgNm?F9N7r9)w{l#Lrat}ZroCJ3&8I0jxd6Rzc|&Y?_tBVdPelf7XciF z8lH?XXu^ZLlSXQKkTH-86Z*!*6xiO}940UzsRpvKOFRQ~$1>ms$bZ^Cspw+g zCl@D9S3Z5jzzmU)C-O*FgRX;NRHLZD*O;;2Z?E zSJ=2_Q_qEdX(kSMCJ3GZajrvK2T=+A;uEnZVq27*oxNAGKmX5(QHpl5@RAUx@+uv0J3KGYbW z_&zo?&YvI3+%a?ofcyS2w87CP$NXLg;C70jdA-Aa+0}Enw0t*CoN)b(Z=hG_&Mq4S zFN=74P2)bir(A!#b6!{fE*V2ZKeV8eF^wo#b;YAat|*XdXg35yP(6Hf5D`-4m$WO|zn{0H;p V6inAsQ~Ce^002ovPDHLkV1ht8FP8uS literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/shuiguo.png b/CatApp_android_frontEnd/app/src/main/res/drawable/shuiguo.png new file mode 100644 index 0000000000000000000000000000000000000000..d3161376511a914f0d6cd13ef5cd06cedd9d6a5a GIT binary patch literal 1212 zcmV;t1Vj6YP)1mm|F*YD-Knjz|=Cblp%;ExUVEkByCYZ3qY{ezYNalsv5-xOJfFEc~ zOuSH&!7hx{T|lCkIW9K08JGjzN}&}d0rj*~luQ^KFzClQk10@6DQ!>Np^M?%o%25b z|MPqQ?|X9IL%7Q?y36^n3K;JS{XY_Htu}IHljT2|jH;%s)y9d+CQDMh%N2`WE#OdP zlVx)(4dT_P0&J-^cI|7jJRWbeSo9GAKeH4c6dm%bvR>>b;)VkSoddBnid7R9u-Q^v zOGNMc&6)Y4$=F#OYqMB%VFArOCEo$qxd;gSZYtR{~y0w`0^tVxByM+r#P zk^CezHvAC|i0xShua`IaYP9*%x2h8incji}6Bhy=KsUO!3b#U^Vq97%!)aHQpY#(LNlAuVd?c`mEXy}9+rRLDd8*Vd zW${pUf->VhqA*YG_h`68Bd(P ze%X^aArFrw=TmZOF^_?f2%umo2od&+2FFRYfL{T4&Q~mghs%UNv4Py#k@jR<;{rdW z-R?ZA3eZ;+un(toP=2Yu90gQQk%uCyMDTS1;*+ZQPM#t4? zC#E{VaK=2Kf6(iq9M&k4T1A|MPM*a0nkgz8oQxJI=qnSi!Ak4zNP;T~xe6F>x~mDs ao8aFMAE`Ktk!Mu^0000 + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/sure_apssword.png b/CatApp_android_frontEnd/app/src/main/res/drawable/sure_apssword.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7cee9bcb90d569021e5cb4e81dc999fffed57a GIT binary patch literal 799 zcmV+)1K|9LP)50008!Nkl%cOxuv3|CMvP= zfe#48!Uq-x3?jY))`CKsh;a9gY`6;{X74$BlSn|fJ!fXV^Pkz7IfNDT(F$Tg-7q53 zNJLEl_NeMUB6DtP4g&ZUX2`3#h824Gj%l`F#FI7N|@x#bR-%<2Yjg z)&sbqs$-7hy!AY9G7Q6}N~N-ki1q_G3!tp3=X~EEu?4b*>F@7fm&@h80r(D}i<$4H z1rd=G0ImX9OGM3{=e@Q8vW5|naRANCyxPWbyhlWS0+^nenb}Y%6v`$$E0`b%ibUiC zILgcqO-_?_5jg_j0e~T9?lIX}!HCFLBKqKY-a(VY`RidAK2gv`U*tT161wy5e$0B4x_ z_M%{tlQFXqyvE<9Hp&_U{D(=Cctt29B60IOrK&psv;laQHF@XkpS35VcdB}and7GV z$G2e4#2^5kFCw_fv~?k%G?;q;c2|3lb;UIiR4a1avnH7N`2788Fw+2@GV@7OfUN5x zG78`TGq16Qv8oHPvmgkLRaKnuegD1*uGSBcri>L#;y3}YDQwFEQ!Ew_Igaxv0Z4*W zDwV^%y}gg?DHU}qv(O1e#Hi@9C{rqxHkHfe&j2nk^K}t958zrZm)o4r=fC__W#V8W zG7O-jS`g#HHp0xQgL*aLXGe;K8gJd#l$<;Wf({}YR@F|M;d@!GDS;Un7-(}{cRY%s z_P)M8W6St=V5+$@&dlwmg178BV*@aEPd(QZckCR1i_AQcHDHbLGj6_D;@2iKw_5e4 zBq;&>0+4wKuL0izU{zYOr_R8GgM-_nD9RI2<5DT3s#C7(mU?=6-dhh>OBFn;ALHvF dtHZ_Y{|zt=$ul4FLf!xX002ovPDHLkV1iDBa5w+} literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/sure_pssword.png b/CatApp_android_frontEnd/app/src/main/res/drawable/sure_pssword.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7cee9bcb90d569021e5cb4e81dc999fffed57a GIT binary patch literal 799 zcmV+)1K|9LP)50008!Nkl%cOxuv3|CMvP= zfe#48!Uq-x3?jY))`CKsh;a9gY`6;{X74$BlSn|fJ!fXV^Pkz7IfNDT(F$Tg-7q53 zNJLEl_NeMUB6DtP4g&ZUX2`3#h824Gj%l`F#FI7N|@x#bR-%<2Yjg z)&sbqs$-7hy!AY9G7Q6}N~N-ki1q_G3!tp3=X~EEu?4b*>F@7fm&@h80r(D}i<$4H z1rd=G0ImX9OGM3{=e@Q8vW5|naRANCyxPWbyhlWS0+^nenb}Y%6v`$$E0`b%ibUiC zILgcqO-_?_5jg_j0e~T9?lIX}!HCFLBKqKY-a(VY`RidAK2gv`U*tT161wy5e$0B4x_ z_M%{tlQFXqyvE<9Hp&_U{D(=Cctt29B60IOrK&psv;laQHF@XkpS35VcdB}and7GV z$G2e4#2^5kFCw_fv~?k%G?;q;c2|3lb;UIiR4a1avnH7N`2788Fw+2@GV@7OfUN5x zG78`TGq16Qv8oHPvmgkLRaKnuegD1*uGSBcri>L#;y3}YDQwFEQ!Ew_Igaxv0Z4*W zDwV^%y}gg?DHU}qv(O1e#Hi@9C{rqxHkHfe&j2nk^K}t958zrZm)o4r=fC__W#V8W zG7O-jS`g#HHp0xQgL*aLXGe;K8gJd#l$<;Wf({}YR@F|M;d@!GDS;Un7-(}{cRY%s z_P)M8W6St=V5+$@&dlwmg178BV*@aEPd(QZckCR1i_AQcHDHbLGj6_D;@2iKw_5e4 zBq;&>0+4wKuL0izU{zYOr_R8GgM-_nD9RI2<5DT3s#C7(mU?=6-dhh>OBFn;ALHvF dtHZ_Y{|zt=$ul4FLf!xX002ovPDHLkV1iDBa5w+} literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/tab_menu_text.xml b/CatApp_android_frontEnd/app/src/main/res/drawable/tab_menu_text.xml new file mode 100644 index 0000000..fb06945 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/drawable/tab_menu_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/time.png b/CatApp_android_frontEnd/app/src/main/res/drawable/time.png new file mode 100644 index 0000000000000000000000000000000000000000..8a672eb7cb0fb490e90d02ce04eacf9f70725337 GIT binary patch literal 2219 zcmV;c2vqlpP)h8GxT}mqj3+1yMxA3pAdHM>r}Gt7sV$O+3=XE5@kJq-r##>KNsRXd-c{o1F8Ed46;=qjGYaPXf{I96gO(8i{uY=@KwmFQu!%)sM<3yLE$(y&~N5wW%yZZG}5+ z`q}78NtiNN6g1_aNx)>i%yQOm){Y8(KZ=*NTK2?@rTf%HE+L0q-$aYLhaB(qo{gRm z)R>HPR)&cC&Kx)eRL;pwLZZG9E#w8~(A$%3z^5 z1yl!<^)e6W?UoKO84YN(UQMbNUpzx@`dj>TDUT_M8a6Jk0q++;6G+d53})a zMT#(|fJxahN+USs30&5$&Gbu{f={cqHtHpp^^_c4$HmMH#*eJylOBg)^Uw41rL#Qq@C13s4-pw| zByHm|FqXjMEg)TNw0&j*=C)XKxIM;*)eeBO{Nl>H^geDWO+BExjgrWJtCOhxMB3=# zL18|nCqCx(rK@;>O6UM7>?J{(^YaaV75qcNF@LU_fmu9CCkyMQE>u8h3i9S== zDYyG8eMPA%u#`AOFKZ>}thL)|?{Qk`!S>Wj@CpJ$iDQ3xj|ELIsH>^E9c%||D+S*> zF#aU`WddkSkoY5PPPAl@>NMgO4rbJvGd4a)xA-H6t3HleHAK`4EP%;+Sq`+eC#cvm zfYb#p4q@I2a6JTe0WE+Bz)}-@`Uqlk;7BCA{w-{r00ylMVDR%g=Iyt8)72fj)ds>E z@F$?FJ)mLVL{g>|g5jK5bh!)EY2idaC=7&8Zo;8Z=%HF?LCz3R+h}At{H+c6)xgSa zkR1*?huZ)~PcaeyVGceWZ5OVjNMYf!22|Zf+5>w3l1<#h6k_^c08^2X*N(!G zLGU0P0$V~xgXNfq5Z4;~fa7;yPav$>Vip!phMo;Ys!rotAtd~v6Ek-dT8FintgQi? z+%*?(=)>mK{h@Y0WQ9OkOZd$>sPKWb$?&Q-Yy#d-gYSpHfq_pl^Hoa z+|iiJtcwP1ADgn7AH1N&%M{!+vG{{ivPFE)a6VqTRq2f;MH)>Xy~hgn=p4x04-Vt(|7DlT1PK%1!a+GG`z4f zLhQ3vcG&VKXUjh!SZMF@(e=~BSF9j0zNcAa%!j(;;58Jy22gOLoHth-rAiyjz=@0L z96Q}3C@Uq0?5Q#bz}07Eh*3u-lJ52qjxFiNk@N)1aKY81yp>WxMU9T3Q|9A8!e#kf z0z1o|Q$Tev`J9}LM4fhQK0UPu=~FnLR=*m=+aKi7K6(ayUR+3>blf&ICwYwIUm?)AL#a#9FNYyo&ri(uSAM>o6>iEaLy**Wl?TuVr!Fd3eW0GtY z8q%#VG~L;GltFtZie8RVFEBBG9qtP)`hrW+#7<0Py1T{tzhuyvlet+^7XSg?I{c|6 tKx!z}X?fsRN$KJk;kX-hmohu~{{Y=33sy2ehD!hd002ovPDHLkV1g6pIpzQW literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/user.png b/CatApp_android_frontEnd/app/src/main/res/drawable/user.png new file mode 100644 index 0000000000000000000000000000000000000000..47d83629275e35c23b93983c4a11e55c3abc515d GIT binary patch literal 2173 zcmV-@2!i*CP)% z4UAk>75>ibx~8dMqM)KiKoQfT!2p3mMIlO5sHor%LX4ue#2RDQ?mc&RG3nIUuJ_#8 zU4H@wK`l{)fS?70K>TSHwG}X0l`4_?6C)PT7`3~)%)Ddn`eyR>?QG}WH`CoFy~!k# znRCu}zWaaAIfNsu(GkWMi$-{CZ0x+gzP^(Hyqt(mQq_RHPgVC3(Y~pvsU6j7^*@Jt z01g@9$;rv%>h<~>0OzXe#Q>gNfXr>G`n`dHf$f8XgO3-Gj~3}U;Xrg|X67m)S_|NX z(H{L@;V-Is{lLJ$b-gCuQ^L-<^+a@a0it^WBmhq7&>?~N7HjRbB|C1OTF(fJ$d>?o zpp9ey0I)+8=So=SGNVYt|7W`f7iFzb(7|y!X!oP*c_SX6>r# zsI_*i8`5177LoS@_)5;H&DPp#H%>KmopV(p+LW_(B{Od;Yriz%TCH|^k|Yo1Ms|%c z=G$eRX{YDCzerW@&iNgzoi$e5ahl0*Qo0HjPB*kd~+FFMRi2vJpi%< zOLcPel%ANFSXQss{|w+c!C4}@&lvNjqK%E^;)eWhge=+mXF*c(Kd+%pd^%*HhjhRghV7Ia& zvIW3sI;EdB#tg*Rj3z81e+BUT6y$zpeq#(^x3b>*8&tLVRNT+ZFNm>OhVUZ*Rs;}L z-EXap0*rC4ovd^2ZX&uU{ckTbuZ*!-hVTObRyRS2=%vP(-^YM zh=jLyc!SS2RXy8U8y*#fTQuQdSwzAmK3wLT?X}GO!@{T~1V!Xr06)m6{)U-n_mY@a zmT-tS-<1KnotfVe0~{+WBHsYedIJ;DurbEP+9^difOzlkRMod+0HZJRMV%E929PE9 z;MCOAIn`>lUercYt~6m0$&WHBmC6}ILqiY8I&m=h1wu*hHpbjq2B$RPbS=*b^Mv0T zjmC*1BO`w(<4j&>Y;5d=zP`Tvk@rPrzN)PKt_Y{3Lm=<;oC94&7E` zk_~!Y6HcAeyc0xpm#T)*m=kgAkbA3wR#XoTzH*#O?zrc=Jj%$IcPtRnySjBq;AAuBMv5HJz_8^9h_4WERF zR;ubLnX6(u)lW0?ND(qcWO_YMt5x-aQ0f3+w(KF@F!zPBhfwm+Xf$>X z4-W^j^IDo@Uu~@ox2>*PSA=V|+VQIT`R4QuS^K`ezAZyTLm}?fb<0!}G!tq!)$8@a z(b3T-%Nj3D*n7V=96N1*!+Z6XFfGf5Z@u?nx4ukOF9Q%#r`a|YvL4pj8_ST6ChVMB zQK?iusj5XD3n5Ydn5sTjsZ<`VR4RKnZru22*3obzB}uX(Ns^O^=w$%Hr(@!qh;B`i zq-w1V- z_4{A5&Rs!7Asy1n@)aO+Fp=G1kFeH;Saf)Y zPXHLqDyZtc)6>&ys?};JlIhqA6ZYP3Q`Pt7EVjKfJLfJYqPGGF^;ySs^kS~SQvkx# zbGx%@^=onRf zZqOs5zp3g|s`@w){kqX;JW}MPl~(nI99OFm(S$K(V<&$)5*CpU1DI1MRjE`i9U2-6 zcjqN*wOZ|xBuQ@1Ik29YzfgLFH*MN<^z!A)Ly)W$J0hY%W6WokjA;hgd%r%h?xig7qcgE=r%>3DZvhAw|IkX6_bnCSfSaqy+|JBz>omflMmdz@ zhy3f#Ue!J?RwtyDw+s5;@$s-&jxH9?5l8rcSA1-0(oqx=00000NkvXXu0mjfzj!Im literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/user_account.png b/CatApp_android_frontEnd/app/src/main/res/drawable/user_account.png new file mode 100644 index 0000000000000000000000000000000000000000..e70142aef6c941e1cbd7a0b73cb636eaf598b665 GIT binary patch literal 1045 zcmV+w1nT>VP)OlMrbW68Wlw)p@P9uOm}uS&CZe8X7b$KnZ#V?)7*3azkAO; z=gb*lK4XVn$r9a+avLI*xuvSZ2;Xx_j&i^l4k{;s3}d6UNVpAnWYS*brwQ;a(=?8t z*>)1;C;fE&!LeiqA}zoW%3F{O%H~!KVEMP)jIuGaaSB__=Pzd~5n9 z9Oq}?B$ly0-`f0OGt~*&1gyg{2Id9zj7_@+_zI*8E7Ck$V=mZC-UV_RWG`0a%cC?A}e@b&U>13?=of|LZkvKvT9!{)n8S!`+BN3PUXI7p95Kr z=mz3OzyC+VvzV%4V`z30iSo|_-Fa;E0VI43SUNkB{ax)@H0ia3-C9c>NH?MfD2be< zT~aeP(WVhHsnw|L0Cn%Umu#e&E}0Pv!NHzoi`|C93ka1cV+el&BW|k)RG?HL?g<$t z#2dtoc0ca~FO9ALuD}WRfNUxt+D~ZwQ97=4>wxbF4mR!6fZHT=q1k>2pJIuQGtN4Y zI?x8-4=m$GUn;q%3@}Xlcc3a?Coz??_G7>&z!@xKji0JNxFyw%Y9p`(%lNdYpw~7D zuMsz1DrQ?89J8-S7zXLVifs2gMQ+|}6or+x(y zbe8ok3~Z)j;8^qOt-YRF*-659cY)wstNTj6T3ht=?r)D?(c#tke764q8UA!G0uacS P00000NkvXXu0mjfj0o`N literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/user_general.png b/CatApp_android_frontEnd/app/src/main/res/drawable/user_general.png new file mode 100644 index 0000000000000000000000000000000000000000..cf579477be3e1bb299522bba2a8bfc27fb1ef0c9 GIT binary patch literal 402 zcmV;D0d4+?P)T1>Z)AKXD*b39g)*r53M?X&D;=MB3EsVC^;DHkhleEIoF{rjJ9gvJ|eFHGDkbT=DYXe}B7u`Tgk=p*RM~zy9<_jG39KWU}j~=@bPuF_w{| whG4Zwj-kZp8MT<0P@;;O(V(VEFcM=30DI2tA7r+V#{d8T07*qoM6N<$f)V+|y8r+H literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/user_icon.png b/CatApp_android_frontEnd/app/src/main/res/drawable/user_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d5309b1e40b0dd814a99e7e4f33fdd00098705a2 GIT binary patch literal 5995 zcmai2Wmgmou->JXhNY#uTWJKB?gphBNoiSn>5_OQU7Dp^x=R|7lEwuI0RbtAWr^$k z1NVNInJ>?oGx?l3lc1-gN`y~~4*&p&)YX&>{#oe%3NFq+E#)9S4**b$sw+W^pjIcA zAis=}>!<0Zzr^gYzd8rZ(+WwjA~I5=Mi_Qs3FEq^0(>u6`O}=aX-#|UAN^0If}6Nx_K;|_Q{N|ZCz_4jd0HDmfqZkx z4&eLqxB;R@IveU`SW?nH#5BL~oWkhUid%IKh{{+@Q zkIWvyid0tt)-tizGGP@n0q$}X4sG}uq*)k9=UEPj?S5Wh81hO7f65~8GRP2O&c|&u zXW1ea7Pl~RBp7P2xqU{O0$8(**AWD_hRTR7T>x|v8AyQtr8T;c&VGBN+Z$z$Ft-t2 zL*EtmHpo9=1wn^iS4B4{JhAZV8z0IW8*^9I4s3ELFBaO}>!-yv2d?@r&UjHu+w#%0 zF-v==<~M@NaBP4;09-)Qlz^c<3EMeLuo2sS3I5T)5r+%HxooP5WjXi+mfLc^kn7b*bQqrdSpY_<*mxfq&_44}&u>7l`;zy1jY_y7 z;E~PGx`Z^bgC1+rNd@rT9q5u+t&D$0KSD~R4b00z<&F26K>)S`v})rfBTTS4*yG4% zd%yceb|at&ab>6fRP}bDaeF-M0c|=Ug&RLI6fHm{#%aJYhLP8DpbU88FpZ6FQ#>9Q zx%bp8Pr?p_9*u_`-!})nz!YMU{^_AQu`3D79ubU)eu%>=T&!Wr+7Ji6h_s9`d3cZO z$$(N8O3{Hb5Rhj}Du|B(+_C;7DXQ*_*diEMx~I__UU!m@ms2Ff*sG8Kngz!LRZ+sC6dj|}34lh&>_l7W_)%%7k&{0H(uFRWaFM{Qs^Qzt@2;zPt3?)dqipMj=j+KeLH24!_x8WOx0lwQ0GD!^ zUN2C^4|p7+Ei^OSE#d|^((v4cuk-4r;ceJCGQ@u9@ir}j>MYmdCaUjuS1yCf1VR98 zQuctgd5En!EZt6?t6^3i)w{m(MZf!i%mAE!3tJ)iulVIUu=ZxZzAU8={^*tDO~0Zs zceTy|8u{BGSC5p&(_Nh`bf<#_vd7*DOC3$@QA@by_5NKdxl540MGP+H;Bhk9CXJJ> z1M(=kNo^7+V$QEVsOBvd9vxIf+)vzuqV)a!;z^SZh8^uL+2sZ(m|s`QK}3w6unbFE zVLhRL0Z6&`FnA{nfMWiPi5dn$12-^)ZN-w2CpYrHU)YK-Vc6E(Q9M5PzZ`XC5)CF6 z*;a{)C-IsuvF2%6d>N!2&i+B=9IV6@PdgwaI6#p>e2p2?_9yJjJ5E_1UT?O~tv&|_ z7lyuJ_{gV4`nsaST;hfDM7TpT@#-Nu{B0wc zIX*Et_xxq)r5mCBKO*Nx45AV1#anlQG7^{>oNSfBNtpy3j002DGZ+h@I*05nVm|38 z+9CmR-E=TJ39}OqNn&HxFs7u`I}WU$C={mW-k|S0QEN;J6a>s{<4#$!Z7tj%lj{}_ z`j^TM0H-crmI0jKl`yz2U!VLV`)R;%^CBmnJYI)}KNe#cDCuo0T>8<%?qIiPAH4N* zmEH4DN+PWw9UIS{W<{E?H_|+TCCRY$zyES$7NkrigC0B&uz*pD>%{?He0qs)_H&4s zOiG%ZCJmuD6Y9tn$G|0g4&s3+`wH0SlTgJqo3XF4p)283zt|4XJ{u%xTiW=<4e1z6rOxTP?SPIU29h{?tTq3z!F58f^p#kO}F_N@SdB$;v3 zNz*%~%xsk~p!$R~Sw9x)Butbye93jI_UFM@3+>YvwA+W+@NH0QT1Ms_M(@QAaY&#X z!c?jXFm1Lu4G%C}-46(l@_dvez;&0i+wPS3Moad;YobjWy*fik`%Sf2&^&)fX}j8kJ!|udHbZw!GVBlT7XONY=J4w3T(W;B;-8^V4X;dlh2c*> zs6sq{1}D%QF;YafrnAmX$dhUr63-lUvj}NLl`u2RPr6rPfL<}oQoC;csU&Q@GhQrW z%#?~N;?|1m5oSn?eBu03@#^93DtfJ7==|g;1p%qZb)T_I>jCP~{JREa3Arr4 zbG;5_F7V!VO{B+rpouHk**VxfC2#tf@$Lgozwc92&w&=A>EnD7T1D|>OxKJoCPb(< zVutC6)-!2BZ|M+7aTAu1UA2mQGaEdgqYf`x1ss|iVIb949M$^A|iBPH_R9J#C4!=8B<2+(A1?Gn(id#8k zRvFVg9ZGL-KR=BhYfWbZ&sE9Xiz1@~e(gKSGq2jWUsioLaBU8jW&h3ET%GM-ki3l) zigG``asS0r0`%#SJ+!*^o`>s6Yp>S@D&ZCR@#`A(C%B5Y59C`I;+TM-y8V0POo;g=K*s) zS6TU%g;k3B1uar}Fs>lFq)6I!trYH0KuM^h;CKLScGal9n01;_YW___ZGwHRiX12L zW<8>1C3;3M-6D>7YuzLEP9xvoo9lt|tdYxBp1}*}{uK&rDAeZk7=^1BR5V?no@V5I zicmIM+Y`z78-%Rwn%ww;D{ZIDO_BanWjK}8!7ArA5dYi0#DktHQ9tGkF{3wm>Nl5a z_n}prG@Fwugqq~7Awr{Y2|{VyOAMdX>7Q|nJ(5$wMGI+-Ft z&)Z-Pv%v zgG5UjefaVV3W8AjRc}W(|B?A}G`X8L@Mgi~b5m}r8@?1p9j`S zY5A{D=fPp`rvD>)WMpK{^#xgn`<;=%40zpIK>L2wCNlRtW)Xz@SBDB=g5P$Xc6_`c zt&TB29Bhj#LDD+vW?__dH)a80s)2E6eF{dyFR{meUB<&@a7@i;*-?SB*w~5-{qo-x zV_%V51^*5om>4w5m0n|gJu1uzegxw<)?xerDYTqBR^qg?!crDTMsmI2EuCAvC zlEr^fR^u;CIG4)<%okVt5X?6G*#WFLWlyrui`S6MIHt-+vMnA(XwF_u=CcJJPx=Pe zH@E)Y__6GivCuuzryU8f#joO2DzZxn3nIF^dd7X30yn5D|1erX;PYozwM!-Bk)^O? zng!lA=66sVATu8d7DVf8oP<7zf@ z2mDp3d_cbn`-|Iy6bm0TdTe-G%qU0CxZ2NrmV?A{;ibGvRtX&YBs>1@*OIPQok<0K zew_A%Gwh7BgdD-|T581s23kSonNcO0uSmIv2FXNq-XH`BJS?@!CTG35Y4W}%p@&Bl zf)?-7L;O9~OV}ZWC7J;8*>XMO@w)N;D@&^vL8k$?_xvZc(_B8uPE^$M_p;=3Q{uUs zL(^hPSRLa2BL<@(6dLXcd0$?tE7{7#!8eTb`$xF@_vFS?@9`VNf*j2iV)eC>1kC(C zDVUPKSFFIrIw52H@orB&MklvR0bZ#i=eBba#V@y*qkBcZ>|9;W(=AnU!_*7vMVb8EqslYCMzM__aQ4dM7@mUDn_; zP-Vp2;Tf%jbo2;C+TmfS+r|%?g<=BPrm)zXJ#E>=&RM%I70Y=uSSWDzF+QP?onYA2r%eM-dzb+aF^xT_faW48y8ECubItO-_rF z$hFjVS+UW6j=gKfkkBqB`fE-cK*tcR@~3|&Xu=5xNBqYnpx<})=H}+-B^q6RP(LSH zX1QNdy6O1SK^ z`HOzAk5_@|g0G?|?JKLGE!A4hnoilHUnSDwR0KOUGY{>ztL}{@Cx9j0#d~1`gfZ*e z$dD3irEfn)zGtoF(|wH9ig6I#J>91CRLHXJdTBw0_3K7c0;rX4T#f6LRoXV9qj9Ot$sCrPLM~1P`&M82oWHj|1p8?rp=46Uw$?F! z|4cm7+B0Ts=~wzDZ-sKn?>?8Fl>NngT*)iAv+P`C4YzDoq5A48SO_r{yD*#co-ipQgtX6UMkLy2ip9*7|kvzy{QBp!adkWovG#f0c z4mE-`L1~K`{`)kzk9X@@WtmcET}{udKIKlQ)VgcoaHdHxM6Xi zpuh|bzI?*-c@{mud=TkM#OEM_;91KpcNxU5$+3m^o!D1C1ljJYx)m+r-Psc;Ymj*8 zM6@vt4oA$D(T6IS+3$btH1SL#jGRL@bBE|_($i*>NMqkp42dgT3g!qwDwM;8E5yZ5uLZT5yAlXX8Xj%?Br)%$B z4;C#isOrRAt$JMzq>(54d3*%du+44{`^D@t#3ZQ#WK7r ztt0m+=0=D(JkcjzkKQO|A@hIe?+CKBeygN$-ySU9`o-$n$(Ht;zZZ{H&o`zvNTrXtKT#wUjF_wT%p!tVynB5^dFuZ{3GINbS&AlNy6lXm9DH`B z_+{|IVZE%kVKegWz+^5-r37fWd=kH}kK3vf&b0q3CH~H@pmnU|IOVpyCm$JKOlEiD zjdJk4kb0k3Ka-EF?QF@deR0Ooe+iwxaUwrSRtH5i@!s~@D0ABQnz`%-V9+2nqQfMr z%a!mhAwH0|wcNk48QuVC%-xUBxYM?qodC{noly#Os#cZYNm+g(={OmRJDRtO*RU7Q z$>lVMeQ|TD8|OJZy>?V*k%xL&)(}_60REZNNJ6pIrWhmKd8j#3(V4e!bT5y@1~VWi z+=u>0f%xjBG!kD2^U^t{2Ygz*uy}N)L-s&i<#ZK*ilJ_V7$&$ZXW2X2z6~)(7W{UI z#5-^6g4dgt!+ExP0OUKeqDo>UHWV@o_H6;2ZASiIrsN`^SLjjSVIn0bf$B zG@zmayjX|WuilW9t9>5H^s}4T+5pg%mcHu4n3fg(sgFO=TUSaLrO79(!)EhJ{TYVF z)bPA&{`<*Hjbl&BXyZPO$h%*f*qNuve+%Nhs?(EB&{@Hc6|h6PIItu+8M_4n z=!Ow)Ay|73YSHV=xb1VH;Ml@QF|+9E@3@9;q~!)|MrDv3vt;2+93RN5|FjZWtFV*} zc$z3gElhY_UBx>`TsEaLn$V%)zsjWjnL@vziI?GEArlbRthIxoy)c*m039?l9;W0Kpz$cS&M zjl_UpJ&>Au=4Ip$Kz9d@g@x=5?t9GRZCWqy^9{ED59kehVuG<&of9#*ul{?Y1Jspu KlRg~8&& zy#Dr z?Y$gwW~*0rn$>a;)D-xdiK?J(IRxs!t%03*S_codHj9CGH%fPomTO+V=CGQehU2zG zH3tCK3)@r#y!QF&3*b4%A)-=v_@u%j;JknJV>6~i9EezQF{T(eUcuC2hQRN;8_ux{ z))u~F=GrE;Gp`QLr!=m9AAoE%gS8u_#Ih{$C^2&}IuW%pR?v9x*p>{lwv>yqwu$}B zlj2BeRKE6i#XAqnzZS2pJ7oz{A}le-IwHaIYVdHK?09PP@?ac-I=L`J3Zzb?M@GuG za>_INGiqutPG+?_&{q3UF9o$kH!U4%G))>~)zoN$?yQ)|a*5g|ZM;4B06Z9@ z#9Lx9l|mwAW(a9gl6vcd)`zlfk!=(K(ZoWOR=m+R(!I>?oX-rqOBb@cu&LSy-M86% z^Zm{_-*?U#!d3dwRdVq^{I9Ki)=T}k$!j?pC|MaO_+~%+IS|neP{glPx9O*BM!hUp z)2&Jp+{%CpK-td7G&b8ae4`8|zkd#(A=t8+8mqrrY7k4pZX>jZh~An@#60y*Xym$8 zY^`)2Cqx0h7ll|O0~agg>?LPVad0nr)weU@8DUMg?tIbrd-9~615j_KfTek;~#%DZEUUfsNM4B1?7Qn3$%U;tL8NM4NO#q$b zRqL~YJ*L&b;P(Nv81B5*c#UsDly9S^>K~GmJ=Pn#Sz-E`!Dmf({(9~hXn~++5O!0Y z`fgV66TQ}*l5qmyTq3@&XVzZ{qSpW%Ca?O)g61-}hmf&- zFX%aXYRj7$_pzrp`XIA?BnHS<2lw=a%h^UBfQrP+Tcdv*ci9(0WiqVzuPNd|<@(YI zv7)?yZM+&D>t7|Uhvy-}C?IO6u4*h9=L0?+1mFBV*7RTtglL{SqnO)?=$<$_%1rGf zcrO_17tg?D&m7tlo-8HsR%g3`&>KJ9DzFIWj)83u^cldvFE~Jw@i;I_3TpJ4ys_Hu z=@l}!xSZLpV4{*n>&K!y?2CoPGI{|l&j2(6JNG;1q~flV<$&x1V*!2{#^eGxw!HiW zKqWDl_8IQnUFqtS>HkzXY`Ziz<0N=tP5HOWcx*fUP52vN*)opH>QmzFwM?)Vp_fY@<002ovPDHLkV1ns25UT(H literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/xigua.png b/CatApp_android_frontEnd/app/src/main/res/drawable/xigua.png new file mode 100644 index 0000000000000000000000000000000000000000..20275c155e9937cc895a59708e3e81e05806f53f GIT binary patch literal 2622 zcmV-E3c>Y>P)`{g$N<{E(8@xNWvo_1d`2WH@nGh?&EaMT{dhsB%2Mv={Wo| zJ3IHB|Mi{!{QrN>A^3_A`HJAcMIirgk-Qj@ixIg%D=@8FtG2e*;PrabjYea-s;cSC zXP)OhvMhU2Q&T-VcI;3t5RUV&T280)>j2pAdH^*5^$;FD&OrUlX-y$Esv-p-3|KvY ztpIjOlC*0&K}{(lf*_P>n)V$+$hQeklTv04A9a)ltl5_h3KKck)o9y&YQI$t^cwT2 zhJHfGCQ9ihNs`*m7gRz(Dl01&sjB)UfEz7#_2W59y;@GmVC__#=xnfkaH zgpijNMR{cZ{{8(^(ZysY4MY%x+bE^4S<;oJMb~>$Qs;z;Sq5uaD^13t8v}l2foUAYy2J%=3H)=kj!)&Ibt>-}&begBw&Yi94fW56VbTEXF+eA^^G+8j?0?`wjlclUmU+|Jze~N=Hc~)O~=Z+4)6%HB>{(0+&nQX*}Hdd%VfZe3&iPkzGuk` zmQ}3kT@bB^IdZCp(;cxUQ9UPObB3*W@0rNtWNWaP$GXCJSj3o)Sb3(qeRI|hf48Ye zlBBvR0}%w_c5w8;s?}Y|h9qsyWE4#|j~w8>Xm~DH1tm|4qWE?^{pXBGd3pI?vx6YBIl06vgd{0{Mk0U0!9V>G@i0 ze_)lVsPL?DR-KrGvBdaTuVG2d7J>0a9E|2=^NZ%II;dz65gsPYQY;99 zek2k_aYwYSv0JOE?9U`SR7VTF238tb)nRn%G^bY?rkqup=pMlwVbzOuch&$S#QFp4 zEes4J#>05ociT}Op)=bk+9B5UGwhmPqS-={Pt%8KkJ$v^a{$=@jD(Pz;saS)dIUK` z`8kyXdg!B%5}!AZHO>q(2P4Fc$MUfSDVTS*+cVy9q5I%ax(rZTt*X{; zdzlcjgAkHT2yrzwHtvtz1!E(!q;#_}Q?9PMqjy#;Gc(S*doUOl8?Q&OIo1pO0it*F z*t1u(UY6YK40f)5!ua;Rne|EFgymgP6kkXUJeacR2G8Xc$ZMVg+FKY-rCuk7xI-z|Ob4 zdyY34>m^BgATAJg)*?o2UDfKYIlP(9h$JuT87$#VCv4FAO<2A<2@g~^053cTZ2PCK zck56HU8*_;NQ&gXq&3!+%|His+ zsGoaE6vcPr0$~hJr*o@);ZRy}ox6sW$d*?AtenpX?m#-Oes~DqD}4rq2aUk**;O8p zhQlWbr-_|(&eGmt89q(JvY4arfJU)37{qN!`g)Df2JZkiq$Y>I*Q~_{$?s!#?{;i^ z$m-)cz9RN`KkhNUtgNh>sQ zK@+aNPr;81-+^O`2>fI0yFt66qJVY8D4Oh;F0!%?tyRf*w`V>6wcdItG=PmRm+RGp zfaqJKrt}>GTwD6x-aeZ{9=T-sJRClK&4KEl2H-5Y9Jl5@4%6y2K>yhnonwlM!-_I$ zJ56>>cQh>x>MO6{<%74NslMZo^tNS&#bUXvzP^4SVIWLE5QMiu=r;^l0_(vLL z=k8?qPnxmhP6f+m-iykC3h?V68nMBu6r<=0HrX*IM<4kuL~A3q^*o0UAF?)u{M=te zQ4A+z48?s#iSP@8u#Qr?E`33;q2!j{kw-b#A9FBoX$bRcfZOw)L4I%!uy##C>Cvlc z$mC*9(NAqehp7W^blrz9wwnLb@^53BBuVAtDV{VCrl6vtqC(TOUvox!Np{I#XMU}B zf%lj>zxjPTDt;J%qX>AgvH^zHW8nU<5$Ntt2$0U~aDe`N4djJ$@xVV~*Q1fSI{a3m1T&Ux;JJw_}%Y z6WTrXIPf>~e~;`m76Z6vqDVx1Ixis6z>15DZ5E5=E&x9;+o)yUQrTR%VmQxg%s{qv zA?ET$$l~%~GiAbJ$v|+(4ZrM0kJf=B%4g^qY{j75hxVODspTVMDCFZ*O6kvBF4uwh z;XKcXjAy{+ci$1N_w-@I zkhhb!X)*>0Auo!e_|{|qOnXGmWwgA!{2D??H6dgpfUg1RbUyMki gD|VszzcLZ|AJ$4oZ#*XX?*IS*07*qoM6N<$g1MXr>Hq)$ literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/xiguap.png b/CatApp_android_frontEnd/app/src/main/res/drawable/xiguap.png new file mode 100644 index 0000000000000000000000000000000000000000..b76071235dd6bcb1131c7053f0d198ec2b696ef6 GIT binary patch literal 6605 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 LNkvXXu0mjfi^13> literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/xmw.png b/CatApp_android_frontEnd/app/src/main/res/drawable/xmw.png new file mode 100644 index 0000000000000000000000000000000000000000..f322496004b4d1ff84466bc5a741952d595bf8e2 GIT binary patch literal 2278 zcmVPx-ph-kQRA@u(m8VIJWuRN9)|w!{do}ekXS@FFqOYSb zdvp_n#%#BN{B6Peskw#K{-fTuM&4rq{Kq>y*cq8Trn_Le1%xC?XM(^zAJ4b?Eb?_G z0=M79FnddkakW_v7ulL3PMp-98J@U?j&u2nJKF|MwPq)^;Jbk zNH0cgS|L2#Y>@r13Nt4;f3j`wxub@FF&GGs$D7>P*m!;MEKl*eCEm@|XbMtP{S*pm zJ!WpY25U<*RK1qMiesjpLOHl^43E$6DvZHENRmtjFf%7*D?zZ>fLhinHnma)rtwoU zpX1p10t8NVMcn0I;NsA?_Dpg{|33r>MNuSc)jWqn z@)`kuzX5^(LW4Z8`A`;kBW&`bPF)$@6&Qn5ge1vyV`C$)?Bp;LnA-rX-hi|mP)l3I z)~HtEb@@Z2-+h4t@p)M2>jE=V6U1D62ydSKxrnHgd7XvnG6+Rc^J$tsvo^>}9Q2_# z2kgOsS^`Kbw8qpRD1%H~gQdGNQ74k){Jv=jJ9GyRimEYvf^+DO1Lwj!1Jh*?k|cjL zGi7n_ByC~Cd=S9u1xU((M!D8_=teaJFY=K2b0xm~mXA5!&e*cl1H46N(BF!!_VILl zH+c8ypE?TDB@l|DmeVvH9lZR#hWWF-dTBsZB0yH9GY&~z1*F0%tlsk@o>vHwwAUZ% zMjCTBr**pdy97d#B%f_=I`sD05KGOJGG^Kf zLJ!>r&&@VJ>g4579jQvEK}eEZ3*gY!HNFkA{U-F%G`Ug;$Y1H@Un+bFNnIs^Bk$s2 zu>kSA--nB1Km0Q}AIC4`!TYZcDG|q#XX$0EE9ViCB#Sr}X8mp@Y_irYx5j3ASEDI7 z!HWmTe_W%1nZz56h)*YKUWG(v;bu-5rjB>|Vprt(?fSrUsv;CcZKi2DeAk8<5o$UKafru>&os_^evR+4FZU3ORzhJk1T#Aj)r-`!_7`3aVhI5 zK0p31c#gC!I2wC-guy^ak~9HOJ)kc~d^L9c;I2Y6>DN^jpsYfm*(66eTjS&|-)7T? z68JckRsf%|j%i;Vx!~WH&kj|DqNoU(rb8mP&6ACzhM5}*L?Nw%sQMWW#OEXZZW;D( z7>^0mTg~P-?7M~A{Bq2gIBd_wTTg5OjLgl=rCR#e8-yguJ^*TL2UwP;MXz;e58~Pn zcafV{tPvwe4TaC7u{u@iUlyUJ_BG~h&4BX|OPmdVlYD_thNU~wAy=r?VyWU6nOr?0 zH#fIc?0SQ6x!l79L3|SRk4187q=Q*oQ8g+X5V$cKg{9(FA};p5aQeV95T=$|Rh2Rk zgs+}xKJl4P{dMz4WAQY%X4!iMRamt<0~Y2il|-gubqa(e$w2@r?Cts%e|PL-XI-fc z*?Al{`88PRWsS-1y}>p!!pRH)uIALk%e^1=?p)QTIs+oAufvQ@=@>Gw7gD~S*-G}@ zwL(Okyr+5ADG)A~dx9W{WijDF%2BREn1R#&3dwis zurI_H6UTA2>Z=qDV5V4X8gnduqB(r6U(ouF!fQnmL=r{EL72-n08gCk`xho1S?Qvy z8gYqfIGFGNiD6C{WZjy#pj3v{hfA?OU?c+PPjAx<)AUU9Pg#2f1FXz(F>)qMO^h}2 zN!N=I9-D*V4p!eKB;T0bZnHCYQ#4K2^ZEP|E|;4?5JW(HiO*;Wn(_ z^Qco-oPKNIf12IH!^2XgQq=>vPY^^PP1E@EKx+#;F0IqJUod5OVDOg-r`rW#1W1yk84xGC-t1=;BA57x59qgS`w+}SW-#KIO;WYj1F>%h@dILhS9E~*K z_s(GM7l%{%+OnVvL@igUjrXqeY;Q(2zrTC`87^d1;ovHJtvc(Y$}nfbKzNKEs<+LT zwG!-)&(p{&l}b)tUS5M(?MraiSBhZD>nR?@yGD zIQ~6kdq94Vtn2dGQ<0vEbW;X;rdBs4w$o<+17*r*U}?#xj{pDw07*qoM6N<$f;uEL A!vFvP literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/youzi.png b/CatApp_android_frontEnd/app/src/main/res/drawable/youzi.png new file mode 100644 index 0000000000000000000000000000000000000000..53df9597b63d8e0f6e14d1d9703a308cb209f24e GIT binary patch literal 1798 zcmV+h2l@DkP)Gjf5y&T~1*QQ~>1Y!!DV2ofRA`i0Sc>boluI!!(qd*hxs*08leSpd zl%?W6W+iToj;Z64OA3f7B&jSuk&wp|-fh179-1t^d*8w|jpr|T-}%ltzkAMizVCil z;(sF2|Ad2^Af9A0W@C)WnsH@PWo~)2DK=hbKUO2Z{ZzbC}&|h|U|ZXM2-)%MrQ4 zad&V+SW{h40On4iO3c+I_HBjpaziVQU5b-T`t@>U^=6;|SgjVyuON{tdYFwmdAT*? z%oEn-XK0yzCqZ4CH5l9F0~e3kvdVtExVqqWU?yoG&P@o!y- z!DNbRD(P=A1RGiy9kvtY<@WsY>MMB_m#VCGvs@+50DkhMy!@IG;2|IZm;?j>Q-I$9 z@xDQ;{FOYbXk@U0)&12turKGT10&x%Y;I|#SC_Ql!v9KQjws;eG z?YaH{dD>uL?y@B~o=kqKjbwO;vXV5Kn4PZIZeU}|5LyGnw5$Pl(7py47aYu(l04c= zx){Ce$VF#(3dfbTATCD1bd!Z7;9hqDsvY+w$Skv&=SmBd`UlAZ@&zPa6i986 z^!FfFZANw+QHC9m6lft87^F7X8|nE9WT7E|LFI*nXb5VD(LzsP8StEjdG)IL0%Sfg z!F~ZGDFRs*``ERND1ZL@ch{JNSTqG0hGwJ#zqmS?$2{JG%mO9~2qivU3}Ri>=_pc! zv(&`;aFte#jwCU~(2T!;0j_T55sWt=Vo!Lt2Errn*Cy>TS~%@ZiFpdrPn?6C5N1~< zj?^uoI;pWBNtSxEcJL6n_a!3EFJYcM6i+~+TZD6P_f~=ksZi-(=wH*7bRDmj z+mKPLShflsAddH%L^DWiH2dbyrgJZG@bFs9AeogmEyQNyY>O!JZ8k*4&uTHR38Yg8 z(vtf&nKC(D4wdxXkgNAz|8%eZRyzc)a=PwXb>qyS*-f9U8 z4|BDte|c)CV`&OTir`q5wdmgaFIPJp%ArzqR#a!iVqx0op`=ZHho+i>(-&k~?-{^pMU_>rl*|+tR}|b9ODmu=a7c|gRUoY+ST}YQ z$*;bo#-wj_T1Js;y~tePV>K34fryjE(LJD)RXw7dr9`>7+Nc`G?sSr#=IG|_56eRATgn#94|VhysG+6T*v%|3@%zs{>u}UR{}LLx>rhwXLyx^FSm)#-iWek3-opF z@6Ca_{k~Q#ZfOUmure@^{-20yZA4kI8d66p4n;xNJyL50N$JP_E^)-AjcY^-;Ipq_ z{Hu!3?!X>*-rZ)T-xHh~mP*^ld%H8`+wl+Q!rN07n^C|ich=p31ocWFdteF?L!NhM z%D3aGBdN+*LxC*QR*mKQK-vRifWaeD3CcQQs_fCNGI)mS!-5*O?sXz!u@x07cfYDG zCu)O;KJos{DddbEGb}M6aAcFQO;)&>z*oZE8t zv8ZMA?=L#IjiujA;=|b=b3$BnHj>O)fbG2*9JJYpSL?FA(t52`OS+uS9zUQ$p2m^G znevyd0|8q!-Q!+ zOHzNxJ;{pG`O2+|YH6rzP3oP9dF`47Z`tKkmM(deO__UH`K@ZZ9x1*t8Gg(p|9CcS zv>Ip#L>!^#SC$SBy6pHU$-qK-Cce$mFCh93tuEB*kD371i=12k1GlQ1alO`!_K}(G zqLB{n?$uAy_YTfE{$^?KR#1Mv;k2O@Uv<5?7%gP5MNih16cbO&;s?J6tD4w;FI7IXic`H*|qGuP8* z!TCapyLBd`?=!sKsuks)S-Lh$6G+Xp$_q?9caFhpH*ojr_2{#5U{DGS8UP)|SM&Nr zR)Wn(;*dk;>%iv9w?dzZM<6xcWf_Cr%AJnthOasGGNm><`5}>%_$=yr40#3O&%m_W oz6qlBiTPXqW=8z|gtglL2kTlMQDP6NJ^%m!07*qoM6N<$g5iyKc>n+a literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/youzip.png b/CatApp_android_frontEnd/app/src/main/res/drawable/youzip.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7d9663eccb9588d9a2c22e15fa7cbe9d46698e GIT binary patch literal 9547 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

0IMX11QJG3X_Xb}+xn=(RwmuK*1BVMW5o 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 literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/activity_main.xml b/CatApp_android_frontEnd/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..d79345c --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/cart_have_product.xml b/CatApp_android_frontEnd/app/src/main/res/layout/cart_have_product.xml new file mode 100644 index 0000000..b7362e4 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/layout/cart_have_product.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/cart_no_product.xml b/CatApp_android_frontEnd/app/src/main/res/layout/cart_no_product.xml new file mode 100644 index 0000000..42fc0e1 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/layout/cart_no_product.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + +