├── .gitignore
├── .idea
├── .gitignore
├── .name
├── compiler.xml
├── gradle.xml
├── jarRepositories.xml
├── misc.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── app
│ │ └── android
│ │ └── homestay
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── province.json
│ ├── java
│ │ └── com
│ │ │ └── app
│ │ │ └── android
│ │ │ └── homestay
│ │ │ ├── AdminMainActivity.java
│ │ │ ├── App.java
│ │ │ ├── Config.java
│ │ │ ├── GlideEngine.java
│ │ │ ├── UserMainActivity.java
│ │ │ ├── activity
│ │ │ ├── AdminAddHouseActivity.java
│ │ │ ├── AdminFeedBookActivity.java
│ │ │ ├── AdminHouseListActivity.java
│ │ │ ├── AdminLoginActivity.java
│ │ │ ├── AdminOrderListActivity.java
│ │ │ ├── AdminUpdateHouseActivity.java
│ │ │ ├── AdminUserListActivity.java
│ │ │ ├── PayDialogActivity.java
│ │ │ ├── RegisterActivity.java
│ │ │ ├── UserEditInfoActivity.java
│ │ │ ├── UserFeedBackActivity.java
│ │ │ ├── UserLoginActivity.java
│ │ │ ├── UserPayOrderActivity.java
│ │ │ └── UserUpdatePwdActivity.java
│ │ │ ├── adapter
│ │ │ ├── AdminFeedBackAdapter.java
│ │ │ ├── AdminHouseListAdapter.java
│ │ │ ├── AdminOrderListAdapter.java
│ │ │ ├── AdminUserListAdapter.java
│ │ │ ├── CollectionAdapter.java
│ │ │ ├── HomeAdapter.java
│ │ │ ├── PayListAdapter.java
│ │ │ └── UserOrderAdapter.java
│ │ │ ├── base
│ │ │ ├── BaseActivity.java
│ │ │ └── BaseFragment.java
│ │ │ ├── bean
│ │ │ ├── CollectionBean.java
│ │ │ ├── CollectionInfo.java
│ │ │ ├── FeedBackInfo.java
│ │ │ ├── FeedBackInfoBean.java
│ │ │ ├── HouseBean.java
│ │ │ ├── HouseInfo.java
│ │ │ ├── JsonBean.java
│ │ │ ├── OderInfoBean.java
│ │ │ ├── OrderInfo.java
│ │ │ ├── UserBean.java
│ │ │ └── UserInfo.java
│ │ │ ├── fragment
│ │ │ ├── CenterFragment.java
│ │ │ ├── HomeFragment.java
│ │ │ ├── LikeFragment.java
│ │ │ └── OrderFragment.java
│ │ │ ├── http
│ │ │ └── HttpStringCallback.java
│ │ │ ├── utils
│ │ │ ├── CodeUtils.java
│ │ │ ├── GetJsonDataUtil.java
│ │ │ ├── GsonUtils.java
│ │ │ └── Utils.java
│ │ │ └── view
│ │ │ ├── FloatingActionButtonMenu.java
│ │ │ └── ScrollAwareFABMenuBehavior.java
│ └── res
│ │ ├── anim
│ │ ├── hide_to_bottom.xml
│ │ └── show_from_bottom.xml
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ ├── btn_bg.xml
│ │ ├── btn_yuding.xml
│ │ ├── et_bg.xml
│ │ ├── ic_launcher_background.xml
│ │ └── label_bg.xml
│ │ ├── layout
│ │ ├── activity_admin_add_house.xml
│ │ ├── activity_admin_feed_book.xml
│ │ ├── activity_admin_house.xml
│ │ ├── activity_admin_house_list.xml
│ │ ├── activity_admin_main.xml
│ │ ├── activity_admin_update_house.xml
│ │ ├── activity_administrator_login.xml
│ │ ├── activity_house_list.xml
│ │ ├── activity_order_list.xml
│ │ ├── activity_pay_dialog.xml
│ │ ├── activity_register.xml
│ │ ├── activity_user_edit_info.xml
│ │ ├── activity_user_feed_back.xml
│ │ ├── activity_user_list.xml
│ │ ├── activity_user_login.xml
│ │ ├── activity_user_main.xml
│ │ ├── activity_user_order.xml
│ │ ├── activity_user_update_pwd.xml
│ │ ├── admin_feed_item.xml
│ │ ├── admin_house_item.xml
│ │ ├── admin_order_item.xml
│ │ ├── admin_user_list_item.xml
│ │ ├── collection_item.xml
│ │ ├── fragment_center.xml
│ │ ├── fragment_home.xml
│ │ ├── fragment_like.xml
│ │ ├── fragment_order.xml
│ │ ├── home_item.xml
│ │ ├── order_item.xml
│ │ └── pay_item.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── back.png
│ │ ├── ic_home.png
│ │ ├── ic_home_normal.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_like.png
│ │ ├── ic_like_normal.png
│ │ ├── ic_mine.png
│ │ ├── ic_mine_normal.png
│ │ ├── ic_order.png
│ │ ├── ic_order_normal.png
│ │ ├── img_1.png
│ │ ├── img_jiantou_1.png
│ │ ├── img_jiantou_2.png
│ │ ├── img_jiantou_3.png
│ │ ├── img_more.png
│ │ ├── img_push_normal.png
│ │ ├── img_pwd.png
│ │ ├── img_scan.png
│ │ ├── img_user.png
│ │ ├── like.png
│ │ ├── logo.png
│ │ └── u_like.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── values
│ │ ├── array.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── themes.xml
│ │ └── xml
│ │ └── network_security_config.xml
│ └── test
│ └── java
│ └── com
│ └── app
│ └── android
│ └── homestay
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 | local.properties
16 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | Android-SpringBoot-homestay
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 项目介绍和功能截图
2 |
3 | https://blog.csdn.net/jky_yihuangxing/article/details/121417409?spm=1001.2014.3001.5502
4 |
5 | #### 联系方式+V:android0514
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.application'
3 | }
4 |
5 | android {
6 | compileSdkVersion 30
7 | buildToolsVersion '30.0.3'
8 |
9 | defaultConfig {
10 | applicationId "com.app.android.homestay"
11 | minSdkVersion 21
12 | targetSdkVersion 31
13 | versionCode 1
14 | versionName "1.0"
15 |
16 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
17 | }
18 |
19 | buildTypes {
20 | release {
21 | minifyEnabled false
22 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | compileOptions {
26 | sourceCompatibility JavaVersion.VERSION_1_8
27 | targetCompatibility JavaVersion.VERSION_1_8
28 | }
29 | }
30 |
31 | dependencies {
32 |
33 | implementation 'androidx.appcompat:appcompat:1.2.0'
34 | implementation 'com.google.android.material:material:1.2.1'
35 | implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
36 | implementation 'androidx.legacy:legacy-support-v4:1.0.0'
37 | testImplementation 'junit:junit:4.+'
38 | androidTestImplementation 'androidx.test.ext:junit:1.1.2'
39 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
40 |
41 | implementation 'com.lzy.net:okgo:3.0.4'
42 | implementation 'io.github.lucksiege:pictureselector:v2.7.3-rc05'
43 | implementation 'com.github.bumptech.glide:glide:4.12.0'
44 | annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
45 | implementation 'com.google.code.gson:gson:2.8.7'
46 | implementation 'de.hdodenhof:circleimageview:3.1.0'
47 | implementation 'com.github.lygttpod:SuperTextView:2.4.6'
48 | implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'
49 |
50 | implementation 'de.hdodenhof:circleimageview:3.1.0'
51 | implementation 'com.ashokvarma.android:bottom-navigation-bar:2.2.0'
52 |
53 | implementation 'com.contrarywind:Android-PickerView:4.1.9'
54 |
55 | implementation 'com.github.Othershe:CornerLabelView:1.0.0'
56 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/app/android/homestay/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.app.android.homestay", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
20 |
23 |
24 |
27 |
28 |
29 |
30 |
33 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/AdminMainActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay;
2 |
3 | import android.content.Intent;
4 | import android.view.View;
5 |
6 | import com.app.android.homestay.activity.AdminHouseListActivity;
7 | import com.app.android.homestay.activity.AdminFeedBookActivity;
8 | import com.app.android.homestay.activity.AdminOrderListActivity;
9 | import com.app.android.homestay.activity.AdminUserListActivity;
10 | import com.app.android.homestay.base.BaseActivity;
11 |
12 | public class AdminMainActivity extends BaseActivity {
13 |
14 | @Override
15 | protected int getLayoutId() {
16 | return R.layout.activity_admin_main;
17 | }
18 |
19 | @Override
20 | protected void initView() {
21 |
22 |
23 | }
24 |
25 | @Override
26 | protected void setListener() {
27 | findViewById(R.id.float1).setOnClickListener(new View.OnClickListener() {
28 | @Override
29 | public void onClick(View v) {
30 | // startActivity(new Intent(mActivity, HouseListActivity.class));
31 | startActivity(new Intent(mActivity, AdminHouseListActivity.class));
32 | }
33 | });
34 |
35 | findViewById(R.id.float2).setOnClickListener(new View.OnClickListener() {
36 | @Override
37 | public void onClick(View v) {
38 | startActivity(new Intent(mActivity, AdminOrderListActivity.class));
39 | }
40 | });
41 |
42 | findViewById(R.id.float3).setOnClickListener(new View.OnClickListener() {
43 | @Override
44 | public void onClick(View v) {
45 | startActivity(new Intent(mActivity, AdminFeedBookActivity.class));
46 | }
47 | });
48 |
49 | findViewById(R.id.float4).setOnClickListener(new View.OnClickListener() {
50 | @Override
51 | public void onClick(View v) {
52 |
53 |
54 | startActivity(new Intent(mActivity, AdminUserListActivity.class));
55 | }
56 | });
57 |
58 | }
59 |
60 | @Override
61 | protected void initData() {
62 |
63 | }
64 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/App.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay;
2 |
3 | import android.app.Application;
4 |
5 | import com.lzy.okgo.OkGo;
6 | import com.lzy.okgo.cache.CacheEntity;
7 | import com.lzy.okgo.cache.CacheMode;
8 | import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
9 |
10 | import java.util.concurrent.TimeUnit;
11 | import java.util.logging.Level;
12 |
13 | import okhttp3.OkHttpClient;
14 |
15 |
16 |
17 | public class App extends Application {
18 | @Override
19 | public void onCreate() {
20 | super.onCreate();
21 | initHttp();
22 | }
23 |
24 | private void initHttp() {
25 | OkHttpClient.Builder builder = new OkHttpClient.Builder();
26 | HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("okgo");
27 | //log打印级别,决定了log显示的详细程度
28 | loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
29 | //log颜色级别,决定了log在控制台显示的颜色
30 | loggingInterceptor.setColorLevel(Level.INFO);
31 | builder.addInterceptor(loggingInterceptor);
32 |
33 | //全局的读取超时时间
34 | builder.readTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
35 | //全局的写入超时时间
36 | builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
37 | //全局的连接超时时间
38 | builder.connectTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
39 |
40 | OkGo.getInstance().init(this) //必须调用初始化
41 | .setOkHttpClient(builder.build()) //建议设置OkHttpClient,不设置将使用默认的
42 | .setCacheMode(CacheMode.NO_CACHE) //全局统一缓存模式,默认不使用缓存,可以不传
43 | .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) //全局统一缓存时间,默认永不过期,可以不传
44 | .setRetryCount(0); //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/Config.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay;
2 |
3 |
4 | import com.app.android.homestay.bean.UserInfo;
5 |
6 | public class Config {
7 |
8 | public final static String BASE_URL = "http://192.168.14.13:8080";
9 |
10 | public static UserInfo sUserInfo;
11 |
12 | public static UserInfo getUserInfo() {
13 | return sUserInfo;
14 | }
15 |
16 | public static void setUserInfo(UserInfo userInfo) {
17 | sUserInfo = userInfo;
18 | }
19 |
20 | //注册
21 | public final static String REGISTER_URL = BASE_URL + "/user/register";
22 |
23 | //登录
24 | public final static String LOGIN_URL = BASE_URL + "/user/login";
25 |
26 | //添加商品
27 | public final static String HOUSE_ADD_URL = BASE_URL + "/house/add";
28 |
29 | //查询房子列表
30 | public final static String HOUSE_LIST_URL = BASE_URL + "/house/houseAll";
31 |
32 | //删除房子信息
33 | public final static String DEL_HOUSE_URL = BASE_URL + "/house/del";
34 |
35 | //修改房子信息
36 | public final static String HOUSE_UPDATE_URL = BASE_URL + "/house/update";
37 |
38 | //添加到订单
39 | public final static String ADD_ORDER_URL = BASE_URL + "/order/add";
40 |
41 |
42 | //查询订单
43 | public final static String QUERY_ORDER_URL = BASE_URL + "/order/query";
44 |
45 |
46 | //查询注册用户
47 | public final static String REGISTER_USER_URL = BASE_URL + "/user/query";
48 |
49 |
50 | //修改密码
51 | public final static String UPDATE_PWD_URL = BASE_URL + "/user/pwd";
52 |
53 |
54 | //删除订单
55 | public final static String ORDER_DEL_URL = BASE_URL + "/order/del";
56 |
57 |
58 | //收藏
59 | public final static String COLLECTION_URL = BASE_URL + "/collection/add";
60 |
61 |
62 | //收藏列表
63 | public final static String COLLECTION_LIST_URL = BASE_URL + "/collection/query";
64 |
65 |
66 | //取消收藏
67 | public final static String CANCEL_COLLECTION_URL = BASE_URL + "/collection/del";
68 |
69 |
70 | //修改用户信息
71 | public final static String EDIT_USER_URL = BASE_URL + "/user/edit";
72 |
73 | //支付
74 | public final static String PAY_URL = BASE_URL + "/order/pay";
75 |
76 |
77 | //意见反馈
78 | public final static String FEED_ADD_URL = BASE_URL + "/feed/add";
79 |
80 |
81 | //查询意见反馈
82 | public final static String FEED_QUERY_URL = BASE_URL + "/feed/query";
83 |
84 |
85 | }
86 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/UserMainActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay;
2 |
3 | import androidx.core.content.ContextCompat;
4 | import androidx.fragment.app.FragmentTransaction;
5 |
6 | import com.app.android.homestay.base.BaseActivity;
7 | import com.app.android.homestay.fragment.CenterFragment;
8 | import com.app.android.homestay.fragment.HomeFragment;
9 | import com.app.android.homestay.fragment.LikeFragment;
10 | import com.app.android.homestay.fragment.OrderFragment;
11 | import com.ashokvarma.bottomnavigation.BottomNavigationBar;
12 | import com.ashokvarma.bottomnavigation.BottomNavigationItem;
13 |
14 | public class UserMainActivity extends BaseActivity implements BottomNavigationBar.OnTabSelectedListener {
15 |
16 | private HomeFragment mHomeFragment;
17 | private LikeFragment mLikeFragment;
18 | private OrderFragment mOrderFragment;
19 | private CenterFragment mCenterFragment;
20 |
21 | private BottomNavigationBar mBottomNavigationBar;
22 |
23 | @Override
24 | protected int getLayoutId() {
25 | return R.layout.activity_user_main;
26 | }
27 |
28 | @Override
29 | protected void initView() {
30 |
31 | mBottomNavigationBar = findViewById(R.id.bottom_navigation_bar);
32 | mBottomNavigationBar.setTabSelectedListener(this)
33 | .setMode(BottomNavigationBar.MODE_FIXED)
34 | .setActiveColor("#03A9F4") //选中颜色
35 | .setInActiveColor("#707070") //未选中颜色
36 | .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC)
37 | .setBarBackgroundColor("#ffffff");//导航栏背景色
38 |
39 |
40 | mBottomNavigationBar
41 | .addItem(new BottomNavigationItem(R.mipmap.ic_home, "民宿").setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.ic_home_normal)))
42 | .addItem(new BottomNavigationItem(R.mipmap.ic_like, "收藏").setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.ic_like_normal)))
43 | .addItem(new BottomNavigationItem(R.mipmap.ic_order, "订单").setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.ic_order_normal)))
44 | .addItem(new BottomNavigationItem(R.mipmap.ic_mine, "我的").setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.ic_mine_normal)))
45 | .setFirstSelectedPosition(0)
46 | .initialise();
47 | }
48 |
49 | @Override
50 | protected void setListener() {
51 |
52 | }
53 |
54 | @Override
55 | protected void initData() {
56 | selectedFragment(0);
57 |
58 | }
59 |
60 | private void selectedFragment(int position) {
61 | FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
62 | hideFragment(fragmentTransaction);
63 | if (position == 0) {
64 | if (mHomeFragment == null) {
65 | mHomeFragment = new HomeFragment();
66 | fragmentTransaction.add(R.id.content, mHomeFragment);
67 | } else {
68 | fragmentTransaction.show(mHomeFragment);
69 | }
70 | } else if (position == 1) {
71 | if (mLikeFragment == null) {
72 | mLikeFragment = new LikeFragment();
73 | fragmentTransaction.add(R.id.content, mLikeFragment);
74 | } else {
75 | fragmentTransaction.show(mLikeFragment);
76 | mLikeFragment.initData();
77 | }
78 | } else if (position == 2) {
79 | if (mOrderFragment == null) {
80 | mOrderFragment = new OrderFragment();
81 | fragmentTransaction.add(R.id.content, mOrderFragment);
82 | } else {
83 | fragmentTransaction.show(mOrderFragment);
84 | mOrderFragment.initData();
85 | }
86 | } else {
87 | if (mCenterFragment == null) {
88 | mCenterFragment = new CenterFragment();
89 | fragmentTransaction.add(R.id.content, mCenterFragment);
90 | } else {
91 | fragmentTransaction.show(mCenterFragment);
92 | }
93 | }
94 |
95 | fragmentTransaction.commit();
96 | }
97 |
98 | private void hideFragment(FragmentTransaction beginTransaction) {
99 | if (null != mHomeFragment) {
100 | beginTransaction.hide(mHomeFragment);
101 | }
102 |
103 | if (null != mCenterFragment) {
104 | beginTransaction.hide(mCenterFragment);
105 | }
106 | if (null != mLikeFragment) {
107 | beginTransaction.hide(mLikeFragment);
108 | }
109 | if (null != mOrderFragment) {
110 | beginTransaction.hide(mOrderFragment);
111 | }
112 | }
113 |
114 | @Override
115 | public void onTabSelected(int position) {
116 | selectedFragment(position);
117 | }
118 |
119 | @Override
120 | public void onTabUnselected(int position) {
121 |
122 | }
123 |
124 | @Override
125 | public void onTabReselected(int position) {
126 |
127 | }
128 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/AdminFeedBookActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import androidx.recyclerview.widget.RecyclerView;
4 |
5 | import com.app.android.homestay.Config;
6 | import com.app.android.homestay.R;
7 | import com.app.android.homestay.adapter.AdminFeedBackAdapter;
8 | import com.app.android.homestay.base.BaseActivity;
9 | import com.app.android.homestay.bean.FeedBackInfoBean;
10 | import com.app.android.homestay.http.HttpStringCallback;
11 | import com.app.android.homestay.utils.GsonUtils;
12 | import com.lzy.okgo.OkGo;
13 |
14 | /**
15 | * 用户反馈
16 | */
17 | public class AdminFeedBookActivity extends BaseActivity {
18 |
19 | private AdminFeedBackAdapter mAdminFeedBackAdapter;
20 |
21 | private RecyclerView recyclerview;
22 |
23 | private String username;
24 |
25 |
26 | @Override
27 | protected int getLayoutId() {
28 | return R.layout.activity_admin_feed_book;
29 | }
30 |
31 | @Override
32 | protected void initView() {
33 | recyclerview = findViewById(R.id.recyclerview);
34 |
35 |
36 | mAdminFeedBackAdapter = new AdminFeedBackAdapter();
37 | recyclerview.setAdapter(mAdminFeedBackAdapter);
38 |
39 | }
40 |
41 | @Override
42 | protected void setListener() {
43 |
44 | }
45 |
46 | @Override
47 | protected void initData() {
48 | username = getIntent().getStringExtra("username");
49 | queryAll(username);
50 | }
51 |
52 | private void queryAll(String username) {
53 | OkGo.post(Config.FEED_QUERY_URL)
54 | .params("username", username)
55 | .execute(new HttpStringCallback(this) {
56 | @Override
57 | protected void onSuccess(String msg, String response) {
58 | FeedBackInfoBean feedBackInfoBean = GsonUtils.parseJson(response, FeedBackInfoBean.class);
59 | mAdminFeedBackAdapter.setNewInstance(feedBackInfoBean.getList());
60 |
61 | }
62 |
63 | @Override
64 | protected void onError(String response) {
65 | BaseToast(response);
66 | }
67 | });
68 |
69 | }
70 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/AdminHouseListActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 |
4 | import android.app.AlertDialog;
5 | import android.content.DialogInterface;
6 | import android.content.Intent;
7 | import android.view.View;
8 | import android.widget.TextView;
9 |
10 | import androidx.annotation.NonNull;
11 | import androidx.annotation.Nullable;
12 | import androidx.recyclerview.widget.RecyclerView;
13 |
14 | import com.app.android.homestay.Config;
15 | import com.app.android.homestay.R;
16 | import com.app.android.homestay.adapter.AdminHouseListAdapter;
17 | import com.app.android.homestay.base.BaseActivity;
18 | import com.app.android.homestay.bean.HouseBean;
19 | import com.app.android.homestay.bean.HouseInfo;
20 | import com.app.android.homestay.http.HttpStringCallback;
21 | import com.app.android.homestay.utils.GsonUtils;
22 | import com.chad.library.adapter.base.BaseQuickAdapter;
23 | import com.chad.library.adapter.base.listener.OnItemClickListener;
24 | import com.chad.library.adapter.base.listener.OnItemLongClickListener;
25 | import com.lzy.okgo.OkGo;
26 |
27 | import org.jetbrains.annotations.NotNull;
28 |
29 | import java.util.ArrayList;
30 | import java.util.List;
31 |
32 | /**
33 | * 房间管理
34 | */
35 | public class AdminHouseListActivity extends BaseActivity {
36 | private AdminHouseListAdapter mAdminHouseListAdapter;
37 | private List mStringList = new ArrayList<>();
38 | private RecyclerView mRecyclerView;
39 | private TextView add;
40 |
41 | @Override
42 | protected int getLayoutId() {
43 | return R.layout.activity_admin_house_list;
44 | }
45 |
46 | @Override
47 | protected void initView() {
48 | mRecyclerView = findViewById(R.id.recyclerview);
49 | add = findViewById(R.id.add);
50 |
51 | }
52 |
53 | @Override
54 | protected void setListener() {
55 | add.setOnClickListener(new View.OnClickListener() {
56 | @Override
57 | public void onClick(View v) {
58 | startActivityForResult(new Intent(AdminHouseListActivity.this, AdminAddHouseActivity.class), 200);
59 | }
60 | });
61 |
62 |
63 | }
64 |
65 | @Override
66 | protected void initData() {
67 |
68 | mAdminHouseListAdapter = new AdminHouseListAdapter();
69 | mAdminHouseListAdapter.setOnItemClickListener(new OnItemClickListener() {
70 | @Override
71 | public void onItemClick(@NonNull @NotNull BaseQuickAdapter, ?> adapter, @NonNull @NotNull View view, int position) {
72 | HouseInfo info = mAdminHouseListAdapter.getData().get(position);
73 | Intent intent = new Intent(AdminHouseListActivity.this, AdminUpdateHouseActivity.class);
74 | intent.putExtra("info", info);
75 | startActivityForResult(intent, 200);
76 | }
77 | });
78 | mAdminHouseListAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {
79 | @Override
80 | public boolean onItemLongClick(@NonNull @NotNull BaseQuickAdapter adapter, @NonNull @NotNull View view, int position) {
81 | AlertDialog.Builder builder = new AlertDialog.Builder(AdminHouseListActivity.this);
82 | builder.setTitle("确定要删除吗?");
83 | builder.setMessage("删除之后需要重新上架,谨慎操作");
84 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
85 | @Override
86 | public void onClick(DialogInterface dialog, int which) {
87 | HouseInfo info = mAdminHouseListAdapter.getData().get(position);
88 | del(info.getUid(), position);
89 | }
90 | });
91 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
92 | @Override
93 | public void onClick(DialogInterface dialog, int which) {
94 | }
95 | });
96 | builder.show();
97 |
98 |
99 | return true;
100 | }
101 | });
102 |
103 | mAdminHouseListAdapter.setNewInstance(mStringList);
104 | mRecyclerView.setAdapter(mAdminHouseListAdapter);
105 |
106 |
107 | hostAll();
108 | }
109 |
110 | @Override
111 | protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
112 | super.onActivityResult(requestCode, resultCode, data);
113 | if (resultCode == 200) {
114 | hostAll();
115 | }
116 | }
117 |
118 |
119 | private void hostAll() {
120 | OkGo.get(Config.HOUSE_LIST_URL)
121 | .execute(new HttpStringCallback(this) {
122 | @Override
123 | protected void onSuccess(String msg, String response) {
124 |
125 | HouseBean houseBean = GsonUtils.parseJson(response, HouseBean.class);
126 | mAdminHouseListAdapter.setNewInstance(houseBean.getList());
127 |
128 | }
129 |
130 | @Override
131 | protected void onError(String response) {
132 |
133 | }
134 | });
135 |
136 |
137 | }
138 |
139 | private void del(int uid, int position) {
140 |
141 | OkGo.get(Config.DEL_HOUSE_URL)
142 | .params("uid", uid)
143 | .execute(new HttpStringCallback(null) {
144 | @Override
145 | protected void onSuccess(String msg, String response) {
146 |
147 | mAdminHouseListAdapter.removeAt(position);
148 | BaseToast(msg);
149 | }
150 |
151 | @Override
152 | protected void onError(String response) {
153 |
154 | }
155 | });
156 | }
157 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/AdminLoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import android.content.Intent;
4 | import android.text.TextUtils;
5 | import android.view.View;
6 | import android.widget.EditText;
7 |
8 | import com.app.android.homestay.AdminMainActivity;
9 | import com.app.android.homestay.Config;
10 | import com.app.android.homestay.R;
11 | import com.app.android.homestay.base.BaseActivity;
12 | import com.app.android.homestay.bean.UserInfo;
13 | import com.app.android.homestay.http.HttpStringCallback;
14 | import com.app.android.homestay.utils.GsonUtils;
15 | import com.lzy.okgo.OkGo;
16 |
17 | /**
18 | * 管理员登录页
19 | */
20 | public class AdminLoginActivity extends BaseActivity {
21 | private EditText username, password;
22 |
23 | @Override
24 | protected int getLayoutId() {
25 | return R.layout.activity_administrator_login;
26 | }
27 |
28 | @Override
29 | protected void initView() {
30 | username = findViewById(R.id.username);
31 | password = findViewById(R.id.password);
32 |
33 | }
34 |
35 | @Override
36 | protected void setListener() {
37 |
38 | findViewById(R.id.change).setOnClickListener(new View.OnClickListener() {
39 | @Override
40 | public void onClick(View v) {
41 | startActivity(new Intent(mActivity, UserLoginActivity.class));
42 | }
43 | });
44 |
45 |
46 | findViewById(R.id.register).setOnClickListener(new View.OnClickListener() {
47 | @Override
48 | public void onClick(View v) {
49 | Intent intent = new Intent(mActivity, RegisterActivity.class);
50 | intent.putExtra("title", "管理员注册");
51 | startActivity(intent);
52 | }
53 | });
54 |
55 |
56 | findViewById(R.id.login).setOnClickListener(new View.OnClickListener() {
57 | @Override
58 | public void onClick(View v) {
59 |
60 | String name = username.getText().toString().trim();
61 | String pwd = password.getText().toString().trim();
62 | if (TextUtils.isEmpty(name)) {
63 | BaseToast("请输入用户名");
64 | } else if (TextUtils.isEmpty(pwd)) {
65 | BaseToast("请输入密码");
66 | } else {
67 | login(name, pwd);
68 | }
69 |
70 | }
71 | });
72 | }
73 |
74 | @Override
75 | protected void initData() {
76 |
77 | }
78 |
79 | private void login(String username, String pwd) {
80 | OkGo.get(Config.LOGIN_URL)
81 | .params("username", username)
82 | .params("password", pwd)
83 | .params("identity", 1)
84 | .execute(new HttpStringCallback(mActivity) {
85 | @Override
86 | protected void onSuccess(String msg, String response) {
87 | UserInfo userInfo = GsonUtils.parseJson(response, UserInfo.class);
88 | Config.setUserInfo(userInfo);
89 | startActivity(new Intent(mActivity, AdminMainActivity.class));
90 | BaseToast(msg);
91 |
92 | }
93 |
94 | @Override
95 | protected void onError(String response) {
96 | BaseToast(response);
97 | }
98 | });
99 | }
100 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/AdminOrderListActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import androidx.recyclerview.widget.RecyclerView;
4 |
5 | import com.app.android.homestay.Config;
6 | import com.app.android.homestay.R;
7 | import com.app.android.homestay.adapter.AdminOrderListAdapter;
8 | import com.app.android.homestay.base.BaseActivity;
9 | import com.app.android.homestay.bean.OderInfoBean;
10 | import com.app.android.homestay.http.HttpStringCallback;
11 | import com.app.android.homestay.utils.GsonUtils;
12 | import com.lzy.okgo.OkGo;
13 |
14 | public class AdminOrderListActivity extends BaseActivity {
15 |
16 | private RecyclerView recyclerview;
17 | private AdminOrderListAdapter mListAdapter;
18 |
19 |
20 | @Override
21 | protected int getLayoutId() {
22 | return R.layout.activity_order_list;
23 | }
24 |
25 | @Override
26 | protected void initView() {
27 | recyclerview = findViewById(R.id.recyclerview);
28 |
29 | mListAdapter = new AdminOrderListAdapter();
30 |
31 | recyclerview.setAdapter(mListAdapter);
32 |
33 | }
34 |
35 | @Override
36 | protected void setListener() {
37 |
38 | }
39 |
40 | @Override
41 | protected void initData() {
42 | queryOrderAll();
43 | }
44 |
45 | private void queryOrderAll() {
46 | OkGo.post(Config.QUERY_ORDER_URL)
47 | .execute(new HttpStringCallback(this) {
48 | @Override
49 | protected void onSuccess(String msg, String response) {
50 |
51 | OderInfoBean infoBean = GsonUtils.parseJson(response, OderInfoBean.class);
52 | mListAdapter.setNewInstance(infoBean.getList());
53 |
54 | }
55 |
56 | @Override
57 | protected void onError(String response) {
58 | BaseToast(response);
59 |
60 | }
61 | });
62 |
63 | }
64 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/AdminUserListActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import androidx.recyclerview.widget.RecyclerView;
4 |
5 | import com.app.android.homestay.Config;
6 | import com.app.android.homestay.R;
7 | import com.app.android.homestay.adapter.AdminUserListAdapter;
8 | import com.app.android.homestay.base.BaseActivity;
9 | import com.app.android.homestay.bean.UserBean;
10 | import com.app.android.homestay.http.HttpStringCallback;
11 | import com.app.android.homestay.utils.GsonUtils;
12 | import com.lzy.okgo.OkGo;
13 |
14 | import java.util.ArrayList;
15 | import java.util.List;
16 |
17 | /**
18 | * 用户管理
19 | */
20 | public class AdminUserListActivity extends BaseActivity {
21 | private AdminUserListAdapter mListAdapter;
22 | private RecyclerView mRecyclerView;
23 |
24 | @Override
25 | protected int getLayoutId() {
26 | return R.layout.activity_user_list;
27 | }
28 |
29 | @Override
30 | protected void initView() {
31 | mRecyclerView = findViewById(R.id.recyclerview);
32 | mListAdapter = new AdminUserListAdapter();
33 |
34 | mRecyclerView.setAdapter(mListAdapter);
35 |
36 | }
37 |
38 | @Override
39 | protected void setListener() {
40 |
41 | }
42 |
43 | @Override
44 | protected void initData() {
45 | queryUserList();
46 |
47 | }
48 |
49 | private void queryUserList() {
50 |
51 | OkGo.get(Config.REGISTER_USER_URL)
52 | .execute(new HttpStringCallback(this) {
53 | @Override
54 | protected void onSuccess(String msg, String response) {
55 |
56 | UserBean userBean = GsonUtils.parseJson(response, UserBean.class);
57 | mListAdapter.setNewInstance(userBean.getList());
58 | }
59 |
60 | @Override
61 | protected void onError(String response) {
62 | BaseToast(response);
63 | }
64 | });
65 | }
66 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/PayDialogActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.os.Bundle;
6 | import android.view.View;
7 | import android.widget.TextView;
8 |
9 | import com.app.android.homestay.Config;
10 | import com.app.android.homestay.R;
11 | import com.app.android.homestay.base.BaseActivity;
12 | import com.app.android.homestay.http.HttpStringCallback;
13 | import com.lzy.okgo.OkGo;
14 |
15 | public class PayDialogActivity extends BaseActivity {
16 | private String discount_price;
17 | private TextView discountprice;
18 | private int uid;
19 |
20 | @Override
21 | protected int getLayoutId() {
22 | return R.layout.activity_pay_dialog;
23 | }
24 |
25 | @Override
26 | protected void initView() {
27 | findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
28 | @Override
29 | public void onClick(View v) {
30 | finish();
31 | }
32 | });
33 |
34 | findViewById(R.id.confirm_button).setOnClickListener(new View.OnClickListener() {
35 | @Override
36 | public void onClick(View v) {
37 | pay();
38 | }
39 | });
40 |
41 | discountprice = findViewById(R.id.discount_price);
42 |
43 | }
44 |
45 | @Override
46 | protected void setListener() {
47 |
48 | }
49 |
50 | @Override
51 | protected void initData() {
52 | discount_price = getIntent().getStringExtra("discount_price");
53 | uid = getIntent().getIntExtra("uid", 0);
54 | discountprice.setText("¥" + discount_price);
55 |
56 | }
57 |
58 |
59 | private void pay() {
60 | OkGo.get(Config.PAY_URL)
61 | .params("uid", uid)
62 | .params("pay_status", 1)
63 | .execute(new HttpStringCallback(null) {
64 | @Override
65 | protected void onSuccess(String msg, String response) {
66 | BaseToast(msg);
67 | setResult(2000);
68 | finish();
69 | }
70 |
71 | @Override
72 | protected void onError(String response) {
73 | BaseToast(response);
74 | }
75 | });
76 | }
77 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/RegisterActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import android.text.TextUtils;
4 | import android.view.View;
5 | import android.widget.EditText;
6 | import android.widget.ImageView;
7 |
8 | import com.app.android.homestay.Config;
9 | import com.app.android.homestay.R;
10 | import com.app.android.homestay.base.BaseActivity;
11 | import com.app.android.homestay.http.HttpStringCallback;
12 | import com.app.android.homestay.utils.CodeUtils;
13 | import com.lzy.okgo.OkGo;
14 |
15 | public class RegisterActivity extends BaseActivity {
16 | private String title;
17 | private ImageView ivcode;
18 | private EditText username, password, confirmpwd, mobile, email, et_code;
19 | private String codeStr;
20 |
21 | private int identity = 0; //0普通用户 1管理员
22 |
23 | @Override
24 | protected int getLayoutId() {
25 | return R.layout.activity_register;
26 | }
27 |
28 | @Override
29 | protected void initView() {
30 | ivcode = findViewById(R.id.iv_code);
31 | ivcode.setImageBitmap(CodeUtils.getInstance().createBitmap());
32 | codeStr = CodeUtils.getInstance().getCode();
33 |
34 | //
35 | username = findViewById(R.id.username);
36 | password = findViewById(R.id.password);
37 | confirmpwd = findViewById(R.id.confirmpwd);
38 | mobile = findViewById(R.id.mobile);
39 | email = findViewById(R.id.email);
40 | et_code = findViewById(R.id.et_code);
41 |
42 | }
43 |
44 | @Override
45 | protected void setListener() {
46 | findViewById(R.id.register).setOnClickListener(new View.OnClickListener() {
47 | @Override
48 | public void onClick(View v) {
49 |
50 | String name = username.getText().toString().trim();
51 | String pwd = password.getText().toString().trim();
52 | String newpwd = confirmpwd.getText().toString().trim();
53 | String phone = mobile.getText().toString().trim();
54 | String emailStr = email.getText().toString().trim();
55 | String code = et_code.getText().toString().trim();
56 |
57 | if (TextUtils.isEmpty(name)) {
58 | BaseToast("请输入用户名");
59 | } else if (TextUtils.isEmpty(pwd)) {
60 | BaseToast("请输入密码");
61 | } else if (TextUtils.isEmpty(newpwd)) {
62 | BaseToast("请输入确定密码");
63 | } else if (!pwd.equals(newpwd)) {
64 | BaseToast("两次密码不一致");
65 | } else if (TextUtils.isEmpty(phone)) {
66 | BaseToast("请输入手机号");
67 | } else if (TextUtils.isEmpty(emailStr)) {
68 | BaseToast("请输入邮箱地址");
69 | } else if (TextUtils.isEmpty(code)) {
70 | BaseToast("请输入验证码");
71 | } else if (!codeStr.equals(code)) {
72 | BaseToast("验证码输入错误");
73 | } else {
74 | register(name, pwd, phone, emailStr, identity, "这个家伙很懒,什么都没有留下~");
75 | }
76 | }
77 | });
78 |
79 | }
80 |
81 | @Override
82 | protected void initData() {
83 | title = getIntent().getStringExtra("title");
84 | mToolbar.setTitle(title);
85 |
86 | if (title.equals("管理员注册")) {
87 | identity = 1;
88 | } else {
89 | identity = 0;
90 | }
91 |
92 | }
93 |
94 |
95 | private void register(String username, String password, String mobile, String email, int identity, String nickname) {
96 | OkGo.get(Config.REGISTER_URL)
97 | .params("username", username)
98 | .params("password", password)
99 | .params("mobile", mobile)
100 | .params("email", email)
101 | .params("identity", identity)
102 | .params("nickname", nickname)
103 | .execute(new HttpStringCallback(mActivity) {
104 | @Override
105 | protected void onSuccess(String msg, String response) {
106 | BaseToast(msg);
107 | finish();
108 | }
109 |
110 | @Override
111 | protected void onError(String response) {
112 | BaseToast(response);
113 | }
114 | });
115 |
116 | }
117 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/UserFeedBackActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import android.text.TextUtils;
4 | import android.view.View;
5 | import android.widget.EditText;
6 | import android.widget.TextView;
7 |
8 | import com.app.android.homestay.Config;
9 | import com.app.android.homestay.R;
10 | import com.app.android.homestay.base.BaseActivity;
11 | import com.app.android.homestay.http.HttpStringCallback;
12 | import com.lzy.okgo.OkGo;
13 |
14 | import org.w3c.dom.Text;
15 |
16 | public class UserFeedBackActivity extends BaseActivity {
17 | private TextView order_num;
18 | private EditText content;
19 | private String orderNum;
20 | private String userName;
21 |
22 | @Override
23 | protected int getLayoutId() {
24 | return R.layout.activity_user_feed_back;
25 | }
26 |
27 | @Override
28 | protected void initView() {
29 | order_num = findViewById(R.id.order_num);
30 | content = findViewById(R.id.content);
31 | findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
32 | @Override
33 | public void onClick(View v) {
34 | finish();
35 | }
36 | });
37 |
38 | findViewById(R.id.confirm_button).setOnClickListener(new View.OnClickListener() {
39 | @Override
40 | public void onClick(View v) {
41 | String feedContent = content.getText().toString().trim();
42 | if (TextUtils.isEmpty(feedContent)) {
43 | BaseToast("请填写你的反馈意见");
44 | } else {
45 | addFeed(feedContent);
46 | }
47 | }
48 | });
49 |
50 | }
51 |
52 | @Override
53 | protected void setListener() {
54 |
55 | }
56 |
57 | @Override
58 | protected void initData() {
59 | orderNum = getIntent().getStringExtra("order_num");
60 | userName = getIntent().getStringExtra("username");
61 | //
62 | order_num.setText("订单号:" + orderNum);
63 |
64 | }
65 |
66 | private void addFeed(String content) {
67 | OkGo.post(Config.FEED_ADD_URL)
68 | .params("order_num", orderNum)
69 | .params("feed_content", content)
70 | .params("username", userName)
71 | .execute(new HttpStringCallback(this) {
72 | @Override
73 | protected void onSuccess(String msg, String response) {
74 | BaseToast(msg);
75 | finish();
76 | }
77 |
78 | @Override
79 | protected void onError(String response) {
80 | BaseToast(response);
81 | }
82 | });
83 | }
84 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/UserLoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import android.content.Intent;
4 | import android.text.TextUtils;
5 | import android.view.View;
6 | import android.widget.EditText;
7 |
8 | import com.app.android.homestay.Config;
9 | import com.app.android.homestay.R;
10 | import com.app.android.homestay.UserMainActivity;
11 | import com.app.android.homestay.base.BaseActivity;
12 | import com.app.android.homestay.bean.UserInfo;
13 | import com.app.android.homestay.http.HttpStringCallback;
14 | import com.app.android.homestay.utils.GsonUtils;
15 | import com.lzy.okgo.OkGo;
16 |
17 | /**
18 | * 用户登录
19 | */
20 | public class UserLoginActivity extends BaseActivity {
21 | private EditText username, password;
22 |
23 | @Override
24 | protected int getLayoutId() {
25 | return R.layout.activity_user_login;
26 | }
27 |
28 | @Override
29 | protected void initView() {
30 | username = findViewById(R.id.username);
31 | password = findViewById(R.id.password);
32 | }
33 |
34 | @Override
35 | protected void setListener() {
36 |
37 | findViewById(R.id.register).setOnClickListener(new View.OnClickListener() {
38 | @Override
39 | public void onClick(View v) {
40 | Intent intent = new Intent(mActivity, RegisterActivity.class);
41 | intent.putExtra("title", "用户注册");
42 | startActivity(intent);
43 | }
44 | });
45 |
46 | findViewById(R.id.login).setOnClickListener(new View.OnClickListener() {
47 | @Override
48 | public void onClick(View v) {
49 |
50 | String name = username.getText().toString().trim();
51 | String pwd = password.getText().toString().trim();
52 | if (TextUtils.isEmpty(name)) {
53 | BaseToast("请输入用户名");
54 | } else if (TextUtils.isEmpty(pwd)) {
55 | BaseToast("请输入密码");
56 | } else {
57 | login(name, pwd);
58 | }
59 |
60 | }
61 | });
62 |
63 | }
64 |
65 | @Override
66 | protected void initData() {
67 |
68 | }
69 |
70 | private void login(String username, String pwd) {
71 | OkGo.get(Config.LOGIN_URL)
72 | .params("username", username)
73 | .params("password", pwd)
74 | .params("identity", 0)
75 | .execute(new HttpStringCallback(mActivity) {
76 | @Override
77 | protected void onSuccess(String msg, String response) {
78 | UserInfo userInfo = GsonUtils.parseJson(response, UserInfo.class);
79 | Config.setUserInfo(userInfo);
80 | startActivity(new Intent(mActivity, UserMainActivity.class));
81 | BaseToast(msg);
82 | finish();
83 | }
84 |
85 | @Override
86 | protected void onError(String response) {
87 | BaseToast(response);
88 | }
89 | });
90 | }
91 |
92 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/UserPayOrderActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.view.View;
6 |
7 | import androidx.annotation.NonNull;
8 | import androidx.recyclerview.widget.RecyclerView;
9 |
10 | import com.app.android.homestay.Config;
11 | import com.app.android.homestay.R;
12 | import com.app.android.homestay.adapter.PayListAdapter;
13 | import com.app.android.homestay.base.BaseActivity;
14 | import com.app.android.homestay.bean.OderInfoBean;
15 | import com.app.android.homestay.bean.OrderInfo;
16 | import com.app.android.homestay.http.HttpStringCallback;
17 | import com.app.android.homestay.utils.GsonUtils;
18 | import com.chad.library.adapter.base.BaseQuickAdapter;
19 | import com.chad.library.adapter.base.listener.OnItemLongClickListener;
20 | import com.lzy.okgo.OkGo;
21 |
22 | import org.jetbrains.annotations.NotNull;
23 |
24 | public class UserPayOrderActivity extends BaseActivity {
25 | private RecyclerView recyclerview;
26 | private PayListAdapter mPayListAdapter;
27 |
28 | @Override
29 | protected int getLayoutId() {
30 | return R.layout.activity_user_order;
31 | }
32 |
33 | @Override
34 | protected void initView() {
35 | recyclerview = findViewById(R.id.recyclerview);
36 |
37 | mPayListAdapter = new PayListAdapter();
38 | mPayListAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {
39 | @Override
40 | public boolean onItemLongClick(@NonNull @NotNull BaseQuickAdapter adapter, @NonNull @NotNull View view, int position) {
41 | OrderInfo orderInfo = mPayListAdapter.getData().get(position);
42 | AlertDialog.Builder builder = new AlertDialog.Builder(UserPayOrderActivity.this);
43 | builder.setTitle("确定要删除订单吗?");
44 | builder.setMessage("删除的订单将无法恢复,请谨慎删除");
45 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
46 | @Override
47 | public void onClick(DialogInterface dialog, int which) {
48 | del(orderInfo.getUid(), position);
49 | }
50 | });
51 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
52 | @Override
53 | public void onClick(DialogInterface dialog, int which) {
54 |
55 | }
56 | });
57 |
58 | builder.show();
59 |
60 |
61 | return true;
62 | }
63 | });
64 | recyclerview.setAdapter(mPayListAdapter);
65 |
66 | }
67 |
68 | @Override
69 | protected void setListener() {
70 |
71 | }
72 |
73 | @Override
74 | protected void initData() {
75 |
76 | if (null != Config.getUserInfo().getUsername()) {
77 | queryAll(Config.getUserInfo().getUsername());
78 | }
79 | }
80 |
81 | public void queryAll(String username) {
82 | OkGo.post(Config.QUERY_ORDER_URL)
83 | .params("username", username)
84 | .params("pay_status", 1)
85 | .execute(new HttpStringCallback(this) {
86 | @Override
87 | protected void onSuccess(String msg, String response) {
88 |
89 | OderInfoBean infoBean = GsonUtils.parseJson(response, OderInfoBean.class);
90 | mPayListAdapter.setNewInstance(infoBean.getList());
91 |
92 | }
93 |
94 | @Override
95 | protected void onError(String response) {
96 | BaseToast(response);
97 |
98 | }
99 | });
100 |
101 | }
102 |
103 | public void del(int uid, int position) {
104 | OkGo.get(Config.ORDER_DEL_URL)
105 | .params("uid", uid)
106 | .execute(new HttpStringCallback(this) {
107 | @Override
108 | protected void onSuccess(String msg, String response) {
109 | BaseToast(msg);
110 | mPayListAdapter.removeAt(position);
111 |
112 | }
113 |
114 | @Override
115 | protected void onError(String response) {
116 | BaseToast(response);
117 |
118 | }
119 | });
120 |
121 | }
122 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/activity/UserUpdatePwdActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.activity;
2 |
3 | import android.text.TextUtils;
4 | import android.view.View;
5 | import android.widget.EditText;
6 |
7 | import com.app.android.homestay.Config;
8 | import com.app.android.homestay.R;
9 | import com.app.android.homestay.base.BaseActivity;
10 | import com.app.android.homestay.bean.UserInfo;
11 | import com.app.android.homestay.http.HttpStringCallback;
12 | import com.app.android.homestay.utils.Utils;
13 | import com.lzy.okgo.OkGo;
14 | import com.lzy.okgo.callback.StringCallback;
15 | import com.lzy.okgo.model.Response;
16 |
17 | public class UserUpdatePwdActivity extends BaseActivity {
18 | private EditText password;
19 | private EditText newpwd;
20 | private EditText newpwd1;
21 |
22 | @Override
23 | protected int getLayoutId() {
24 | return R.layout.activity_user_update_pwd;
25 | }
26 |
27 | @Override
28 | protected void initView() {
29 | password = findViewById(R.id.password);
30 | newpwd = findViewById(R.id.newpwd);
31 | newpwd1 = findViewById(R.id.newpwd1);
32 |
33 | }
34 |
35 | @Override
36 | protected void setListener() {
37 |
38 | findViewById(R.id.update).setOnClickListener(new View.OnClickListener() {
39 | @Override
40 | public void onClick(View v) {
41 | String pwd = password.getText().toString().trim();
42 | String newpwdstr = newpwd.getText().toString().trim();
43 | String newpwd1str = newpwd1.getText().toString().trim();
44 | if (TextUtils.isEmpty(pwd)) {
45 | BaseToast("请输入原始密码");
46 | } else if (TextUtils.isEmpty(newpwdstr)) {
47 | BaseToast("请输入新密码");
48 | } else if (!Utils.isPwd(newpwdstr)) {
49 | BaseToast("密码格式不合法");
50 | } else if (TextUtils.isEmpty(newpwd1str)) {
51 | BaseToast("请输入确定密码");
52 | } else if (!Utils.isPwd(newpwd1str)) {
53 | BaseToast("确定密码不合法");
54 | } else if (!newpwdstr.equals(newpwd1str)) {
55 | BaseToast("两次密码不一致");
56 | } else {
57 | UserInfo userInfo = Config.getUserInfo();
58 | if (null != userInfo) {
59 | updatePwd(userInfo.getUid(), userInfo.getUsername(), newpwdstr);
60 | }
61 |
62 | }
63 | }
64 | });
65 |
66 | }
67 |
68 | private void updatePwd(int uid, String username, String newpwdstr) {
69 | OkGo.post(Config.UPDATE_PWD_URL)
70 | .params("username", username)
71 | .params("password", newpwdstr)
72 | .params("uid", uid)
73 | .execute(new HttpStringCallback(this) {
74 |
75 | @Override
76 | protected void onSuccess(String msg, String response) {
77 | BaseToast(msg);
78 | setResult(300);
79 | finish();
80 | }
81 |
82 | @Override
83 | protected void onError(String response) {
84 | BaseToast(response);
85 |
86 | }
87 | });
88 | }
89 |
90 | @Override
91 | protected void initData() {
92 |
93 | }
94 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/AdminFeedBackAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import com.app.android.homestay.R;
4 | import com.app.android.homestay.bean.FeedBackInfo;
5 | import com.chad.library.adapter.base.BaseQuickAdapter;
6 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
7 |
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class AdminFeedBackAdapter extends BaseQuickAdapter {
11 | public AdminFeedBackAdapter() {
12 | super(R.layout.admin_feed_item);
13 | }
14 |
15 | @Override
16 | protected void convert(@NotNull BaseViewHolder holder, FeedBackInfo feedBackInfo) {
17 |
18 | holder.setText(R.id.order_num, "订单号:" + feedBackInfo.getOrder_num());
19 | holder.setText(R.id.username, "反馈用户:" + feedBackInfo.getUsername());
20 | holder.setText(R.id.content, feedBackInfo.getFeed_content());
21 | holder.setText(R.id.create_time, "反馈时间:" + feedBackInfo.getCreate_time());
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/AdminHouseListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import android.graphics.Paint;
4 | import android.widget.TextView;
5 |
6 | import androidx.annotation.NonNull;
7 |
8 | import com.app.android.homestay.GlideEngine;
9 | import com.app.android.homestay.R;
10 | import com.app.android.homestay.bean.HouseInfo;
11 | import com.chad.library.adapter.base.BaseQuickAdapter;
12 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
13 |
14 | public class AdminHouseListAdapter extends BaseQuickAdapter {
15 | public AdminHouseListAdapter() {
16 | super(R.layout.admin_house_item);
17 | }
18 |
19 | private TextView original_price;
20 |
21 | @Override
22 | protected void convert(@NonNull BaseViewHolder baseViewHolder, HouseInfo houseInfo) {
23 | baseViewHolder.setText(R.id.title, houseInfo.getIntroduce());
24 | baseViewHolder.setText(R.id.discount_price, "¥" + houseInfo.getDiscount_price());
25 | original_price = baseViewHolder.getView(R.id.original_price);
26 | original_price.setText("原价" + houseInfo.getOriginal_price());
27 | original_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
28 | original_price.getPaint().setAntiAlias(true);
29 | //
30 | baseViewHolder.setText(R.id.address, houseInfo.getAddress());
31 | baseViewHolder.setText(R.id.create_time, "发布时间:" + houseInfo.getCreate_time());
32 | GlideEngine.createGlideEngine().loadImage(getContext().getApplicationContext(), houseInfo.getHouse_img(), baseViewHolder.getView(R.id.house_img));
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/AdminOrderListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import android.graphics.Paint;
4 | import android.widget.TextView;
5 |
6 | import androidx.core.content.ContextCompat;
7 |
8 | import com.app.android.homestay.GlideEngine;
9 | import com.app.android.homestay.R;
10 | import com.app.android.homestay.bean.OrderInfo;
11 | import com.chad.library.adapter.base.BaseQuickAdapter;
12 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
13 |
14 | import org.jetbrains.annotations.NotNull;
15 | import org.w3c.dom.Text;
16 |
17 | public class AdminOrderListAdapter extends BaseQuickAdapter {
18 | private TextView original_price;
19 | private TextView order_status;
20 |
21 | public AdminOrderListAdapter() {
22 | super(R.layout.admin_order_item);
23 | }
24 |
25 | @Override
26 | protected void convert(@NotNull BaseViewHolder holder, OrderInfo orderInfo) {
27 | order_status = holder.getView(R.id.order_status);
28 | holder.setText(R.id.username, "用户:" + orderInfo.getUsername());
29 | GlideEngine.createGlideEngine().loadImage(getContext(), orderInfo.getHouse_img(), holder.getView(R.id.image));
30 | holder.setText(R.id.title, orderInfo.getIntroduce());
31 | holder.setText(R.id.discount_price, "¥" + orderInfo.getDiscount_price());
32 | original_price = holder.getView(R.id.original_price);
33 | original_price.setText("原价" + orderInfo.getOriginal_price());
34 | original_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
35 | original_price.getPaint().setAntiAlias(true);
36 | //
37 | holder.setText(R.id.address, orderInfo.getAddress());
38 | if (orderInfo.getPay_status() == 0) {
39 | order_status.setText("待付款");
40 | order_status.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
41 | holder.setText(R.id.create_time, "下单时间:" + orderInfo.getCreate_time());
42 | } else {
43 | order_status.setText("支付成功");
44 | order_status.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.teal_200));
45 | holder.setText(R.id.create_time, "订单号:" + orderInfo.getOrder_num());
46 | }
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/AdminUserListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import android.widget.TextView;
4 |
5 | import androidx.annotation.NonNull;
6 | import androidx.core.content.ContextCompat;
7 |
8 | import com.app.android.homestay.GlideEngine;
9 | import com.app.android.homestay.R;
10 | import com.app.android.homestay.bean.UserInfo;
11 | import com.chad.library.adapter.base.BaseQuickAdapter;
12 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
13 | import com.othershe.cornerlabelview.CornerLabelView;
14 |
15 | import de.hdodenhof.circleimageview.CircleImageView;
16 |
17 |
18 | public class AdminUserListAdapter extends BaseQuickAdapter {
19 | private CircleImageView profile_image;
20 | private TextView username;
21 | private CornerLabelView cornerLabelView;
22 |
23 | public AdminUserListAdapter() {
24 | super(R.layout.admin_user_list_item);
25 | }
26 |
27 |
28 | @Override
29 | protected void convert(@NonNull BaseViewHolder baseViewHolder, UserInfo userInfo) {
30 | profile_image = baseViewHolder.getView(R.id.profile_image);
31 | username = baseViewHolder.getView(R.id.username);
32 | cornerLabelView = baseViewHolder.getView(R.id.cornerLabelView);
33 | baseViewHolder.setText(R.id.email, "邮箱:" + userInfo.getEmail());
34 | baseViewHolder.setText(R.id.username, userInfo.getUsername());
35 | baseViewHolder.setText(R.id.mobile, "手机号:" + userInfo.getMobile());
36 |
37 | if (userInfo.getIdentity() == 1) {
38 | profile_image.setBorderColor(ContextCompat.getColor(getContext(), R.color.red));
39 | cornerLabelView.setBgColor(ContextCompat.getColor(getContext(), R.color.red));
40 | cornerLabelView.setText("管理员");
41 | } else {
42 | profile_image.setBorderColor(ContextCompat.getColor(getContext(), R.color.purple_500));
43 | cornerLabelView.setBgColor(ContextCompat.getColor(getContext(), R.color.purple_500));
44 | cornerLabelView.setText("注册用户");
45 | }
46 |
47 | if (userInfo.getAvatar() != null) {
48 | GlideEngine.createGlideEngine().loadImage(getContext(), userInfo.getAvatar(), profile_image);
49 | } else {
50 | profile_image.setImageResource(R.mipmap.logo);
51 | }
52 |
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/CollectionAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.graphics.Paint;
6 | import android.view.View;
7 | import android.widget.TextView;
8 | import android.widget.Toast;
9 |
10 | import com.app.android.homestay.Config;
11 | import com.app.android.homestay.GlideEngine;
12 | import com.app.android.homestay.R;
13 | import com.app.android.homestay.bean.CollectionInfo;
14 | import com.app.android.homestay.http.HttpStringCallback;
15 | import com.chad.library.adapter.base.BaseQuickAdapter;
16 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
17 | import com.lzy.okgo.OkGo;
18 |
19 | import org.jetbrains.annotations.NotNull;
20 |
21 | /**
22 | * author : yi...
23 | * date : 2021/11/17/0017 16:23
24 | * desc :
25 | */
26 | public class CollectionAdapter extends BaseQuickAdapter {
27 |
28 | private TextView original_price;
29 |
30 | public CollectionAdapter() {
31 | super(R.layout.collection_item);
32 | }
33 |
34 | @Override
35 | protected void convert(@NotNull BaseViewHolder baseViewHolder, CollectionInfo collectionInfo) {
36 | if (Config.getUserInfo()!=null){
37 | GlideEngine.createGlideEngine().loadImage(getContext().getApplicationContext(), Config.getUserInfo().getAvatar(), baseViewHolder.getView(R.id.profile_image));
38 | }
39 |
40 | GlideEngine.createGlideEngine().loadImage(getContext().getApplicationContext(), collectionInfo.getHouse_img(), baseViewHolder.getView(R.id.image));
41 |
42 | baseViewHolder.setText(R.id.title, collectionInfo.getIntroduce());
43 | baseViewHolder.setText(R.id.discount_price, "¥" + collectionInfo.getDiscount_price());
44 | original_price = baseViewHolder.getView(R.id.original_price);
45 | original_price.setText("原价" + collectionInfo.getOriginal_price());
46 | original_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
47 | original_price.getPaint().setAntiAlias(true);
48 |
49 | //
50 | baseViewHolder.setText(R.id.address, collectionInfo.getAddress());
51 |
52 | baseViewHolder.getView(R.id.like).setOnClickListener(new View.OnClickListener() {
53 | @Override
54 | public void onClick(View v) {
55 | AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
56 |
57 | builder.setTitle("确定取消收藏吗?");
58 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
59 | @Override
60 | public void onClick(DialogInterface dialog, int which) {
61 | del(collectionInfo.getUid(), baseViewHolder.getLayoutPosition());
62 | }
63 | });
64 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
65 | @Override
66 | public void onClick(DialogInterface dialog, int which) {
67 |
68 | }
69 | });
70 | builder.show();
71 | }
72 | });
73 | }
74 |
75 |
76 | private void del(int uid, int position) {
77 | OkGo.get(Config.CANCEL_COLLECTION_URL)
78 | .params("uid", uid)
79 | .execute(new HttpStringCallback(null) {
80 | @Override
81 | protected void onSuccess(String msg, String response) {
82 | removeAt(position);
83 | Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
84 | }
85 |
86 | @Override
87 | protected void onError(String response) {
88 | Toast.makeText(getContext(), response, Toast.LENGTH_SHORT).show();
89 | }
90 | });
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/HomeAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.graphics.Paint;
6 | import android.view.View;
7 | import android.widget.TextView;
8 | import android.widget.Toast;
9 |
10 | import com.app.android.homestay.Config;
11 | import com.app.android.homestay.GlideEngine;
12 | import com.app.android.homestay.R;
13 | import com.app.android.homestay.bean.HouseInfo;
14 | import com.app.android.homestay.bean.UserInfo;
15 | import com.app.android.homestay.http.HttpStringCallback;
16 | import com.chad.library.adapter.base.BaseQuickAdapter;
17 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
18 | import com.lzy.okgo.OkGo;
19 |
20 | import org.jetbrains.annotations.NotNull;
21 |
22 | public class HomeAdapter extends BaseQuickAdapter {
23 |
24 | private TextView original_price;
25 |
26 |
27 | public HomeAdapter() {
28 | super(R.layout.home_item);
29 | }
30 |
31 | @Override
32 | protected void convert(@NotNull BaseViewHolder baseViewHolder, HouseInfo houseInfo) {
33 | GlideEngine.createGlideEngine().loadImage(getContext().getApplicationContext(), houseInfo.getHouse_img(), baseViewHolder.getView(R.id.image));
34 |
35 | baseViewHolder.setText(R.id.title, houseInfo.getIntroduce());
36 | baseViewHolder.setText(R.id.discount_price, "¥" + houseInfo.getDiscount_price());
37 | original_price = baseViewHolder.getView(R.id.original_price);
38 | original_price.setText("原价" + houseInfo.getOriginal_price());
39 | original_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
40 | original_price.getPaint().setAntiAlias(true);
41 | //
42 | baseViewHolder.setText(R.id.address, houseInfo.getAddress());
43 |
44 | baseViewHolder.getView(R.id.like).setOnClickListener(new View.OnClickListener() {
45 | @Override
46 | public void onClick(View v) {
47 | AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
48 |
49 | builder.setTitle("是否添加收藏?");
50 | builder.setMessage("添加后可在收藏列表中查看");
51 | builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
52 | @Override
53 | public void onClick(DialogInterface dialog, int which) {
54 | UserInfo userInfo = Config.getUserInfo();
55 | if (userInfo != null) {
56 | collection(userInfo.getUsername(), houseInfo);
57 | }
58 |
59 | }
60 | });
61 | builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
62 | @Override
63 | public void onClick(DialogInterface dialog, int which) {
64 |
65 | }
66 | });
67 |
68 | builder.show();
69 | }
70 | });
71 | }
72 |
73 | private void collection(String username, HouseInfo houseInfo) {
74 |
75 | OkGo.post(Config.COLLECTION_URL)
76 | .params("collection_id", houseInfo.getUid())
77 | .params("introduce", houseInfo.getIntroduce())
78 | .params("original_price", houseInfo.getOriginal_price())
79 | .params("discount_price", houseInfo.getDiscount_price())
80 | .params("house_img", houseInfo.getHouse_img())
81 | .params("address", houseInfo.getAddress())
82 | .params("create_time", "")
83 | .params("username", username)
84 | .execute(new HttpStringCallback(null) {
85 | @Override
86 | protected void onSuccess(String msg, String response) {
87 | Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
88 | }
89 |
90 | @Override
91 | protected void onError(String response) {
92 | Toast.makeText(getContext(), response, Toast.LENGTH_SHORT).show();
93 | }
94 | });
95 |
96 |
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/PayListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 |
4 | import android.content.Intent;
5 | import android.graphics.Paint;
6 | import android.view.View;
7 | import android.widget.TextView;
8 |
9 | import com.app.android.homestay.Config;
10 | import com.app.android.homestay.GlideEngine;
11 | import com.app.android.homestay.R;
12 | import com.app.android.homestay.activity.UserFeedBackActivity;
13 | import com.app.android.homestay.bean.OrderInfo;
14 | import com.chad.library.adapter.base.BaseQuickAdapter;
15 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
16 |
17 | import org.jetbrains.annotations.NotNull;
18 |
19 | import de.hdodenhof.circleimageview.CircleImageView;
20 |
21 | public class PayListAdapter extends BaseQuickAdapter {
22 |
23 | private TextView original_price;
24 | private CircleImageView profile_image;
25 |
26 | public PayListAdapter() {
27 | super(R.layout.pay_item);
28 | }
29 |
30 | @Override
31 | protected void convert(@NotNull BaseViewHolder holder, OrderInfo orderInfo) {
32 | holder.setText(R.id.username, orderInfo.getUsername());
33 | holder.setText(R.id.order_num, "订单号:" + orderInfo.getOrder_num());
34 | GlideEngine.createGlideEngine().loadImage(getContext(), orderInfo.getHouse_img(), holder.getView(R.id.image));
35 |
36 | if (Config.getUserInfo() != null && Config.getUserInfo().getAvatar() != null) {
37 | GlideEngine.createGlideEngine().loadImage(getContext(), Config.getUserInfo().getAvatar(), holder.getView(R.id.profile_image));
38 | }
39 |
40 |
41 | holder.setText(R.id.title, orderInfo.getIntroduce());
42 | holder.setText(R.id.discount_price, "¥" + orderInfo.getDiscount_price());
43 | original_price = holder.getView(R.id.original_price);
44 | original_price.setText("原价" + orderInfo.getOriginal_price());
45 | original_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
46 | original_price.getPaint().setAntiAlias(true);
47 | //
48 | holder.setText(R.id.address, orderInfo.getAddress());
49 | holder.getView(R.id.more).setOnClickListener(new View.OnClickListener() {
50 | @Override
51 | public void onClick(View v) {
52 | Intent intent = new Intent(getContext(), UserFeedBackActivity.class);
53 | intent.putExtra("order_num", orderInfo.getOrder_num());
54 | intent.putExtra("username", orderInfo.getUsername());
55 | getContext().startActivity(intent);
56 | }
57 | });
58 |
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/adapter/UserOrderAdapter.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.adapter;
2 |
3 | import android.graphics.Paint;
4 | import android.widget.TextView;
5 |
6 | import com.app.android.homestay.Config;
7 | import com.app.android.homestay.GlideEngine;
8 | import com.app.android.homestay.R;
9 | import com.app.android.homestay.bean.OrderInfo;
10 | import com.chad.library.adapter.base.BaseQuickAdapter;
11 | import com.chad.library.adapter.base.viewholder.BaseViewHolder;
12 |
13 | import org.jetbrains.annotations.NotNull;
14 |
15 | import de.hdodenhof.circleimageview.CircleImageView;
16 |
17 | public class UserOrderAdapter extends BaseQuickAdapter {
18 |
19 |
20 | private TextView original_price;
21 | private CircleImageView profile_image;
22 |
23 | public UserOrderAdapter() {
24 | super(R.layout.order_item);
25 | }
26 |
27 | @Override
28 | protected void convert(@NotNull BaseViewHolder holder, OrderInfo orderInfo) {
29 | holder.setText(R.id.username, orderInfo.getUsername());
30 | holder.setText(R.id.create_time, "下单时间:" + orderInfo.getCreate_time());
31 | GlideEngine.createGlideEngine().loadImage(getContext(), orderInfo.getHouse_img(), holder.getView(R.id.image));
32 |
33 | if (Config.getUserInfo() != null && Config.getUserInfo().getAvatar() != null) {
34 | GlideEngine.createGlideEngine().loadImage(getContext(), Config.getUserInfo().getAvatar(), holder.getView(R.id.profile_image));
35 | }
36 |
37 |
38 | holder.setText(R.id.title, orderInfo.getIntroduce());
39 | holder.setText(R.id.discount_price, "¥" + orderInfo.getDiscount_price());
40 | original_price = holder.getView(R.id.original_price);
41 | original_price.setText("原价" + orderInfo.getOriginal_price());
42 | original_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
43 | original_price.getPaint().setAntiAlias(true);
44 | //
45 | holder.setText(R.id.address, orderInfo.getAddress());
46 |
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/base/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.base;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 | import android.view.View;
6 | import android.widget.Toast;
7 |
8 | import androidx.annotation.Nullable;
9 | import androidx.appcompat.app.AppCompatActivity;
10 | import androidx.appcompat.widget.Toolbar;
11 |
12 | import com.app.android.homestay.R;
13 |
14 | /**
15 | * author : yi...
16 | * date : 2021/11/10/0010 9:45
17 | * desc :
18 | */
19 | public abstract class BaseActivity extends AppCompatActivity {
20 | protected Activity mActivity;
21 | protected Toolbar mToolbar;
22 |
23 | @Override
24 | protected void onCreate(Bundle savedInstanceState) {
25 | super.onCreate(savedInstanceState);
26 | mActivity = this;
27 | setContentView(getLayoutId());
28 |
29 | mToolbar = findViewById(R.id.toolbar);
30 | if (null != mToolbar) {
31 | mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
32 | @Override
33 | public void onClick(View v) {
34 | finish();
35 | }
36 | });
37 | }
38 |
39 | initView();
40 |
41 | setListener();
42 |
43 | initData();
44 | }
45 |
46 |
47 | protected abstract int getLayoutId();
48 |
49 |
50 | protected abstract void initView();
51 |
52 |
53 | protected abstract void setListener();
54 |
55 |
56 | protected abstract void initData();
57 |
58 |
59 | protected void BaseToast(String msg) {
60 | Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/base/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.base;
2 |
3 | import android.os.Bundle;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.Toast;
8 |
9 | import androidx.annotation.Nullable;
10 | import androidx.fragment.app.Fragment;
11 |
12 | /**
13 | * author : yi...
14 | * date : 2021/11/10/0010 9:51
15 | * desc :
16 | */
17 | public abstract class BaseFragment extends Fragment {
18 | protected View mRootView;
19 |
20 | @Override
21 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
22 | mRootView = inflater.inflate(getLayoutId(), container, false);
23 | return mRootView;
24 | }
25 |
26 |
27 | @Override
28 | public void onActivityCreated(Bundle savedInstanceState) {
29 | super.onActivityCreated(savedInstanceState);
30 |
31 | initView();
32 |
33 | setListener();
34 |
35 | initData();
36 | }
37 |
38 |
39 | protected abstract int getLayoutId();
40 |
41 |
42 | protected abstract void initView();
43 |
44 |
45 | protected abstract void setListener();
46 |
47 |
48 | public abstract void initData();
49 |
50 |
51 | protected void BaseToast(String msg) {
52 | Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/CollectionBean.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.util.List;
4 |
5 | public class CollectionBean {
6 | private List list;
7 |
8 | public CollectionBean(List list) {
9 | this.list = list;
10 | }
11 |
12 | public List getList() {
13 | return list;
14 | }
15 |
16 | public void setList(List list) {
17 | this.list = list;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/CollectionInfo.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | public class CollectionInfo implements Serializable {
6 | private int uid;
7 | private int collection_id;
8 | private String introduce;
9 | private String original_price; //原件
10 | private String discount_price; //折扣价
11 | private String house_img;
12 | private String address;
13 | private String create_time;
14 | private String username;
15 |
16 | public int getUid() {
17 | return uid;
18 | }
19 |
20 | public void setUid(int uid) {
21 | this.uid = uid;
22 | }
23 |
24 | public int getCollection_id() {
25 | return collection_id;
26 | }
27 |
28 | public void setCollection_id(int collection_id) {
29 | this.collection_id = collection_id;
30 | }
31 |
32 | public String getIntroduce() {
33 | return introduce;
34 | }
35 |
36 | public void setIntroduce(String introduce) {
37 | this.introduce = introduce;
38 | }
39 |
40 | public String getOriginal_price() {
41 | return original_price;
42 | }
43 |
44 | public void setOriginal_price(String original_price) {
45 | this.original_price = original_price;
46 | }
47 |
48 | public String getDiscount_price() {
49 | return discount_price;
50 | }
51 |
52 | public void setDiscount_price(String discount_price) {
53 | this.discount_price = discount_price;
54 | }
55 |
56 | public String getHouse_img() {
57 | return house_img;
58 | }
59 |
60 | public void setHouse_img(String house_img) {
61 | this.house_img = house_img;
62 | }
63 |
64 | public String getAddress() {
65 | return address;
66 | }
67 |
68 | public void setAddress(String address) {
69 | this.address = address;
70 | }
71 |
72 | public String getCreate_time() {
73 | return create_time;
74 | }
75 |
76 | public void setCreate_time(String create_time) {
77 | this.create_time = create_time;
78 | }
79 |
80 | public String getUsername() {
81 | return username;
82 | }
83 |
84 | public void setUsername(String username) {
85 | this.username = username;
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/FeedBackInfo.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | public class FeedBackInfo {
4 | private int uid;
5 |
6 | private String order_num;
7 |
8 | private String feed_content;
9 |
10 | private String create_time;
11 |
12 | private String username;
13 |
14 | public int getUid() {
15 | return uid;
16 | }
17 |
18 | public void setUid(int uid) {
19 | this.uid = uid;
20 | }
21 |
22 | public String getOrder_num() {
23 | return order_num;
24 | }
25 |
26 | public void setOrder_num(String order_num) {
27 | this.order_num = order_num;
28 | }
29 |
30 | public String getFeed_content() {
31 | return feed_content;
32 | }
33 |
34 | public void setFeed_content(String feed_content) {
35 | this.feed_content = feed_content;
36 | }
37 |
38 | public String getCreate_time() {
39 | return create_time;
40 | }
41 |
42 | public void setCreate_time(String create_time) {
43 | this.create_time = create_time;
44 | }
45 |
46 | public String getUsername() {
47 | return username;
48 | }
49 |
50 | public void setUsername(String username) {
51 | this.username = username;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/FeedBackInfoBean.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.util.List;
4 |
5 | public class FeedBackInfoBean {
6 | private List list;
7 |
8 | public FeedBackInfoBean(List list) {
9 | this.list = list;
10 | }
11 |
12 | public List getList() {
13 | return list;
14 | }
15 |
16 | public void setList(List list) {
17 | this.list = list;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/HouseBean.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.util.List;
4 |
5 | public class HouseBean {
6 | private List list;
7 |
8 | public HouseBean(List list) {
9 | this.list = list;
10 | }
11 |
12 | public List getList() {
13 | return list;
14 | }
15 |
16 | public void setList(List list) {
17 | this.list = list;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/HouseInfo.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | public class HouseInfo implements Serializable {
6 | private int uid;
7 | private String introduce;
8 | private String original_price; //原件
9 | private String discount_price; //折扣价
10 | private String house_img;
11 | private String address;
12 | private String create_time;
13 |
14 | public String getCreate_time() {
15 | return create_time;
16 | }
17 |
18 | public void setCreate_time(String create_time) {
19 | this.create_time = create_time;
20 | }
21 |
22 | public int getUid() {
23 | return uid;
24 | }
25 |
26 | public void setUid(int uid) {
27 | this.uid = uid;
28 | }
29 |
30 | public String getIntroduce() {
31 | return introduce;
32 | }
33 |
34 | public void setIntroduce(String introduce) {
35 | this.introduce = introduce;
36 | }
37 |
38 | public String getOriginal_price() {
39 | return original_price;
40 | }
41 |
42 | public void setOriginal_price(String original_price) {
43 | this.original_price = original_price;
44 | }
45 |
46 | public String getDiscount_price() {
47 | return discount_price;
48 | }
49 |
50 | public void setDiscount_price(String discount_price) {
51 | this.discount_price = discount_price;
52 | }
53 |
54 | public String getHouse_img() {
55 | return house_img;
56 | }
57 |
58 | public void setHouse_img(String house_img) {
59 | this.house_img = house_img;
60 | }
61 |
62 | public String getAddress() {
63 | return address;
64 | }
65 |
66 | public void setAddress(String address) {
67 | this.address = address;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/JsonBean.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 |
4 | import com.contrarywind.interfaces.IPickerViewData;
5 |
6 | import java.util.List;
7 |
8 | public class JsonBean implements IPickerViewData {
9 |
10 | /**
11 | * name : 省份
12 | * city : [{"name":"北京市","area":["东城区","西城区","崇文区","宣武区","朝阳区"]}]
13 | */
14 |
15 | private String name;
16 | private List city;
17 |
18 | public String getName() {
19 | return name;
20 | }
21 |
22 | public void setName(String name) {
23 | this.name = name;
24 | }
25 |
26 | public List getCityList() {
27 | return city;
28 | }
29 |
30 | public void setCityList(List city) {
31 | this.city = city;
32 | }
33 |
34 | // 实现 IPickerViewData 接口,
35 | // 这个用来显示在PickerView上面的字符串,
36 | // PickerView会通过IPickerViewData获取getPickerViewText方法显示出来。
37 | @Override
38 | public String getPickerViewText() {
39 | return this.name;
40 | }
41 |
42 |
43 | public static class CityBean {
44 | /**
45 | * name : 城市
46 | * area : ["东城区","西城区","崇文区","昌平区"]
47 | */
48 |
49 | private String name;
50 | private List area;
51 |
52 | public String getName() {
53 | return name;
54 | }
55 |
56 | public void setName(String name) {
57 | this.name = name;
58 | }
59 |
60 | public List getArea() {
61 | return area;
62 | }
63 |
64 | public void setArea(List area) {
65 | this.area = area;
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/OderInfoBean.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.util.List;
4 |
5 | public class OderInfoBean {
6 | private List list;
7 |
8 | public OderInfoBean(List list) {
9 | this.list = list;
10 | }
11 |
12 | public List getList() {
13 | return list;
14 | }
15 |
16 | public void setList(List list) {
17 | this.list = list;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/OrderInfo.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | public class OrderInfo {
4 |
5 | private int uid;
6 | private String username;
7 | private String introduce;
8 | private String original_price; //原件
9 | private String discount_price; //折扣价
10 | private String address;
11 | private String house_img;
12 | private String create_time;
13 | private int pay_status; //0表示未支付 1表示支付成功
14 | private String order_num;
15 |
16 | public String getOrder_num() {
17 | return order_num;
18 | }
19 |
20 | public void setOrder_num(String order_num) {
21 | this.order_num = order_num;
22 | }
23 |
24 | public int getPay_status() {
25 | return pay_status;
26 | }
27 |
28 | public void setPay_status(int pay_status) {
29 | this.pay_status = pay_status;
30 | }
31 |
32 | public int getUid() {
33 | return uid;
34 | }
35 |
36 | public void setUid(int uid) {
37 | this.uid = uid;
38 | }
39 |
40 | public String getUsername() {
41 | return username;
42 | }
43 |
44 | public void setUsername(String username) {
45 | this.username = username;
46 | }
47 |
48 | public String getIntroduce() {
49 | return introduce;
50 | }
51 |
52 | public void setIntroduce(String introduce) {
53 | this.introduce = introduce;
54 | }
55 |
56 | public String getOriginal_price() {
57 | return original_price;
58 | }
59 |
60 | public void setOriginal_price(String original_price) {
61 | this.original_price = original_price;
62 | }
63 |
64 | public String getDiscount_price() {
65 | return discount_price;
66 | }
67 |
68 | public void setDiscount_price(String discount_price) {
69 | this.discount_price = discount_price;
70 | }
71 |
72 | public String getHouse_img() {
73 | return house_img;
74 | }
75 |
76 | public void setHouse_img(String house_img) {
77 | this.house_img = house_img;
78 | }
79 |
80 | public String getAddress() {
81 | return address;
82 | }
83 |
84 | public void setAddress(String address) {
85 | this.address = address;
86 | }
87 |
88 | public String getCreate_time() {
89 | return create_time;
90 | }
91 |
92 | public void setCreate_time(String create_time) {
93 | this.create_time = create_time;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/UserBean.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | import java.util.List;
4 |
5 | public class UserBean {
6 | private List list;
7 |
8 | public UserBean(List list) {
9 | this.list = list;
10 | }
11 |
12 | public List getList() {
13 | return list;
14 | }
15 |
16 | public void setList(List list) {
17 | this.list = list;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/bean/UserInfo.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.bean;
2 |
3 | public class UserInfo {
4 | private Integer uid;
5 | private String username;
6 | private String password;
7 | private String mobile;
8 | private String email;
9 | private String avatar;
10 | private int identity;
11 | private String nickname;
12 |
13 |
14 | public String getNickname() {
15 | return nickname;
16 | }
17 |
18 | public void setNickname(String nickname) {
19 | this.nickname = nickname;
20 | }
21 |
22 | public Integer getUid() {
23 | return uid;
24 | }
25 |
26 | public void setUid(Integer uid) {
27 | this.uid = uid;
28 | }
29 |
30 | public String getUsername() {
31 | return username;
32 | }
33 |
34 | public void setUsername(String username) {
35 | this.username = username;
36 | }
37 |
38 | public String getPassword() {
39 | return password;
40 | }
41 |
42 | public void setPassword(String password) {
43 | this.password = password;
44 | }
45 |
46 | public String getMobile() {
47 | return mobile;
48 | }
49 |
50 | public void setMobile(String mobile) {
51 | this.mobile = mobile;
52 | }
53 |
54 | public String getAvatar() {
55 | return avatar;
56 | }
57 |
58 | public void setAvatar(String avatar) {
59 | this.avatar = avatar;
60 | }
61 |
62 | public int getIdentity() {
63 | return identity;
64 | }
65 |
66 | public void setIdentity(int identity) {
67 | this.identity = identity;
68 | }
69 |
70 | public String getEmail() {
71 | return email;
72 | }
73 |
74 | public void setEmail(String email) {
75 | this.email = email;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/fragment/CenterFragment.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.fragment;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.content.Intent;
6 | import android.graphics.Bitmap;
7 | import android.text.TextUtils;
8 | import android.util.Log;
9 | import android.view.View;
10 | import android.widget.TextView;
11 |
12 | import androidx.annotation.Nullable;
13 |
14 | import com.allen.library.SuperTextView;
15 | import com.app.android.homestay.Config;
16 | import com.app.android.homestay.GlideEngine;
17 | import com.app.android.homestay.R;
18 | import com.app.android.homestay.activity.AdminFeedBookActivity;
19 | import com.app.android.homestay.activity.UserEditInfoActivity;
20 | import com.app.android.homestay.activity.UserPayOrderActivity;
21 | import com.app.android.homestay.activity.UserUpdatePwdActivity;
22 | import com.app.android.homestay.base.BaseFragment;
23 | import com.app.android.homestay.bean.UserInfo;
24 |
25 | import de.hdodenhof.circleimageview.CircleImageView;
26 |
27 | public class CenterFragment extends BaseFragment {
28 | private TextView username;
29 | private SuperTextView email;
30 | private SuperTextView mobile;
31 | private CircleImageView profile_image;
32 | private TextView nickname;
33 |
34 | @Override
35 | protected int getLayoutId() {
36 | return R.layout.fragment_center;
37 | }
38 |
39 | @Override
40 | protected void initView() {
41 | username = mRootView.findViewById(R.id.username);
42 | email = mRootView.findViewById(R.id.email);
43 | mobile = mRootView.findViewById(R.id.mobile);
44 | profile_image = mRootView.findViewById(R.id.profile_image);
45 | nickname = mRootView.findViewById(R.id.nickname);
46 |
47 | }
48 |
49 | @Override
50 | protected void setListener() {
51 |
52 | mRootView.findViewById(R.id.feedback).setOnClickListener(new View.OnClickListener() {
53 | @Override
54 | public void onClick(View v) {
55 | if (Config.getUserInfo() != null) {
56 | Intent intent = new Intent(getActivity(), AdminFeedBookActivity.class);
57 | intent.putExtra("username", Config.getUserInfo().getUsername());
58 | startActivity(intent);
59 | }
60 |
61 |
62 | }
63 | });
64 |
65 | mRootView.findViewById(R.id.paylist).setOnClickListener(new View.OnClickListener() {
66 | @Override
67 | public void onClick(View v) {
68 | startActivity(new Intent(getActivity(), UserPayOrderActivity.class));
69 | }
70 | });
71 |
72 | mRootView.findViewById(R.id.menu).setOnClickListener(new View.OnClickListener() {
73 | @Override
74 | public void onClick(View v) {
75 | startActivityForResult(new Intent(getActivity(), UserUpdatePwdActivity.class), 300);
76 | }
77 | });
78 |
79 | mRootView.findViewById(R.id.head).setOnClickListener(new View.OnClickListener() {
80 | @Override
81 | public void onClick(View v) {
82 | startActivityForResult(new Intent(getActivity(), UserEditInfoActivity.class), 400);
83 | }
84 | });
85 |
86 | mRootView.findViewById(R.id.exit).setOnClickListener(new View.OnClickListener() {
87 | @Override
88 | public void onClick(View v) {
89 | AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
90 | builder.setTitle("确定要退出登录吗?");
91 | builder.setMessage("退出登录将清空用户登录信息");
92 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
93 | @Override
94 | public void onClick(DialogInterface dialog, int which) {
95 |
96 | }
97 | });
98 |
99 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
100 | @Override
101 | public void onClick(DialogInterface dialog, int which) {
102 | getActivity().finish();
103 | }
104 | });
105 | builder.show();
106 | }
107 | });
108 | }
109 |
110 | @Override
111 | public void initData() {
112 |
113 | UserInfo userInfo = Config.getUserInfo();
114 | if (userInfo != null) {
115 | username.setText(userInfo.getUsername());
116 | email.setLeftString("邮箱:" + userInfo.getEmail());
117 | mobile.setLeftString("手机号:" + userInfo.getMobile());
118 | nickname.setText(userInfo.getNickname());
119 |
120 | if (TextUtils.isEmpty(userInfo.getAvatar())) {
121 | profile_image.setImageResource(R.mipmap.logo);
122 | } else {
123 | GlideEngine.createGlideEngine().loadImage(getActivity(), userInfo.getAvatar(), profile_image);
124 | }
125 | }
126 |
127 | }
128 |
129 | @Override
130 | public void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
131 | super.onActivityResult(requestCode, resultCode, data);
132 | if (resultCode == 300) {
133 | getActivity().finish();
134 | } else if (requestCode == 400) {
135 | initData();
136 | }
137 | }
138 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/fragment/HomeFragment.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.fragment;
2 |
3 |
4 | import android.app.AlertDialog;
5 | import android.content.DialogInterface;
6 | import android.view.View;
7 |
8 | import androidx.annotation.NonNull;
9 | import androidx.recyclerview.widget.RecyclerView;
10 |
11 | import com.app.android.homestay.Config;
12 | import com.app.android.homestay.R;
13 | import com.app.android.homestay.adapter.HomeAdapter;
14 | import com.app.android.homestay.base.BaseFragment;
15 | import com.app.android.homestay.bean.HouseBean;
16 | import com.app.android.homestay.bean.HouseInfo;
17 | import com.app.android.homestay.http.HttpStringCallback;
18 | import com.app.android.homestay.utils.GsonUtils;
19 | import com.chad.library.adapter.base.BaseQuickAdapter;
20 | import com.chad.library.adapter.base.listener.OnItemClickListener;
21 | import com.lzy.okgo.OkGo;
22 |
23 | import org.jetbrains.annotations.NotNull;
24 |
25 | public class HomeFragment extends BaseFragment {
26 |
27 | private RecyclerView recyclerview;
28 | private HomeAdapter mHomeAdapter;
29 |
30 | @Override
31 | protected int getLayoutId() {
32 | return R.layout.fragment_home;
33 | }
34 |
35 | @Override
36 | protected void initView() {
37 | recyclerview = mRootView.findViewById(R.id.recyclerview);
38 |
39 | mHomeAdapter = new HomeAdapter();
40 |
41 | mHomeAdapter.setOnItemClickListener(new OnItemClickListener() {
42 | @Override
43 | public void onItemClick(@NonNull @NotNull BaseQuickAdapter, ?> adapter, @NonNull @NotNull View view, int position) {
44 |
45 | AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
46 | builder.setTitle("确定要添加到订单吗?");
47 | builder.setMessage("该订单可在订单列表中随时可删除");
48 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
49 | @Override
50 | public void onClick(DialogInterface dialog, int which) {
51 |
52 | HouseInfo houseInfo = mHomeAdapter.getData().get(position);
53 | addOrder(Config.getUserInfo().getUsername(), houseInfo);
54 |
55 | }
56 | });
57 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
58 | @Override
59 | public void onClick(DialogInterface dialog, int which) {
60 |
61 | }
62 | });
63 | builder.show();
64 | }
65 | });
66 |
67 | }
68 |
69 | @Override
70 | protected void setListener() {
71 |
72 | }
73 |
74 | @Override
75 | public void initData() {
76 |
77 | recyclerview.setAdapter(mHomeAdapter);
78 |
79 | hostAll();
80 |
81 | }
82 |
83 | private void hostAll() {
84 | OkGo.get(Config.HOUSE_LIST_URL)
85 | .execute(new HttpStringCallback(getActivity()) {
86 | @Override
87 | protected void onSuccess(String msg, String response) {
88 |
89 | HouseBean houseBean = GsonUtils.parseJson(response, HouseBean.class);
90 | mHomeAdapter.setNewInstance(houseBean.getList());
91 |
92 | }
93 |
94 | @Override
95 | protected void onError(String response) {
96 |
97 | }
98 | });
99 | }
100 |
101 | private void addOrder(String username, HouseInfo houseInfo) {
102 |
103 | OkGo.post(Config.ADD_ORDER_URL)
104 | .params("username", username)
105 | .params("introduce", houseInfo.getIntroduce())
106 | .params("original_price", houseInfo.getOriginal_price())
107 | .params("discount_price", houseInfo.getDiscount_price())
108 | .params("address", houseInfo.getAddress())
109 | .params("house_img", houseInfo.getHouse_img())
110 | .execute(new HttpStringCallback(getActivity()) {
111 | @Override
112 | protected void onSuccess(String msg, String response) {
113 | BaseToast(msg);
114 | }
115 |
116 | @Override
117 | protected void onError(String response) {
118 | BaseToast(response);
119 | }
120 | });
121 |
122 | }
123 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/fragment/LikeFragment.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.fragment;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.view.View;
6 |
7 | import androidx.annotation.NonNull;
8 | import androidx.recyclerview.widget.RecyclerView;
9 |
10 | import com.app.android.homestay.Config;
11 | import com.app.android.homestay.R;
12 | import com.app.android.homestay.adapter.CollectionAdapter;
13 | import com.app.android.homestay.base.BaseFragment;
14 | import com.app.android.homestay.bean.CollectionBean;
15 | import com.app.android.homestay.bean.CollectionInfo;
16 | import com.app.android.homestay.bean.HouseInfo;
17 | import com.app.android.homestay.bean.UserInfo;
18 | import com.app.android.homestay.http.HttpStringCallback;
19 | import com.app.android.homestay.utils.GsonUtils;
20 | import com.chad.library.adapter.base.BaseQuickAdapter;
21 | import com.chad.library.adapter.base.listener.OnItemClickListener;
22 | import com.lzy.okgo.OkGo;
23 |
24 | import org.jetbrains.annotations.NotNull;
25 |
26 | public class LikeFragment extends BaseFragment {
27 |
28 | private CollectionAdapter mCollectionAdapter;
29 | private RecyclerView mRecyclerView;
30 |
31 |
32 | @Override
33 | protected int getLayoutId() {
34 | return R.layout.fragment_like;
35 | }
36 |
37 | @Override
38 | protected void initView() {
39 | mRecyclerView = mRootView.findViewById(R.id.recyclerview);
40 | mCollectionAdapter = new CollectionAdapter();
41 |
42 | mCollectionAdapter.setOnItemClickListener(new OnItemClickListener() {
43 | @Override
44 | public void onItemClick(@NonNull @NotNull BaseQuickAdapter, ?> adapter, @NonNull @NotNull View view, int position) {
45 |
46 | AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
47 | builder.setTitle("确定要添加到订单吗?");
48 | builder.setMessage("添加后的订单可在订单列表中随时删除");
49 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
50 | @Override
51 | public void onClick(DialogInterface dialog, int which) {
52 |
53 | CollectionInfo collectionInfo = mCollectionAdapter.getData().get(position);
54 | addOrder(Config.getUserInfo().getUsername(), collectionInfo);
55 |
56 | }
57 | });
58 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
59 | @Override
60 | public void onClick(DialogInterface dialog, int which) {
61 |
62 | }
63 | });
64 | builder.show();
65 | }
66 | });
67 |
68 |
69 | mRecyclerView.setAdapter(mCollectionAdapter);
70 | }
71 |
72 |
73 | private void addOrder(String username, CollectionInfo collectionInfo) {
74 |
75 | OkGo.post(Config.ADD_ORDER_URL)
76 | .params("username", username)
77 | .params("introduce", collectionInfo.getIntroduce())
78 | .params("original_price", collectionInfo.getOriginal_price())
79 | .params("discount_price", collectionInfo.getDiscount_price())
80 | .params("address", collectionInfo.getAddress())
81 | .params("house_img", collectionInfo.getHouse_img())
82 | .execute(new HttpStringCallback(getActivity()) {
83 | @Override
84 | protected void onSuccess(String msg, String response) {
85 | BaseToast(msg);
86 | }
87 |
88 | @Override
89 | protected void onError(String response) {
90 | BaseToast(response);
91 | }
92 | });
93 |
94 | }
95 |
96 | @Override
97 | protected void setListener() {
98 |
99 | }
100 |
101 | @Override
102 | public void initData() {
103 |
104 | UserInfo userInfo = Config.getUserInfo();
105 | if (null != userInfo) {
106 | queryCollection(userInfo.getUsername());
107 | }
108 | }
109 |
110 | private void queryCollection(String username) {
111 | OkGo.get(Config.COLLECTION_LIST_URL)
112 | .params("username", username)
113 | .execute(new HttpStringCallback(getActivity()) {
114 | @Override
115 | protected void onSuccess(String msg, String response) {
116 | CollectionBean bean = GsonUtils.parseJson(response, CollectionBean.class);
117 | mCollectionAdapter.setNewInstance(bean.getList());
118 | }
119 |
120 | @Override
121 | protected void onError(String response) {
122 |
123 | }
124 | });
125 |
126 | }
127 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/fragment/OrderFragment.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.fragment;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.DialogInterface;
5 | import android.content.Intent;
6 | import android.view.View;
7 |
8 | import androidx.annotation.NonNull;
9 | import androidx.annotation.Nullable;
10 | import androidx.recyclerview.widget.RecyclerView;
11 |
12 | import com.app.android.homestay.Config;
13 | import com.app.android.homestay.R;
14 | import com.app.android.homestay.activity.PayDialogActivity;
15 | import com.app.android.homestay.adapter.UserOrderAdapter;
16 | import com.app.android.homestay.base.BaseFragment;
17 | import com.app.android.homestay.bean.OderInfoBean;
18 | import com.app.android.homestay.bean.OrderInfo;
19 | import com.app.android.homestay.http.HttpStringCallback;
20 | import com.app.android.homestay.utils.GsonUtils;
21 | import com.chad.library.adapter.base.BaseQuickAdapter;
22 | import com.chad.library.adapter.base.listener.OnItemClickListener;
23 | import com.chad.library.adapter.base.listener.OnItemLongClickListener;
24 | import com.lzy.okgo.OkGo;
25 |
26 | import org.jetbrains.annotations.NotNull;
27 |
28 | public class OrderFragment extends BaseFragment {
29 | private UserOrderAdapter mOrderAdapter;
30 | private RecyclerView recyclerview;
31 |
32 | @Override
33 | protected int getLayoutId() {
34 | return R.layout.fragment_order;
35 | }
36 |
37 | @Override
38 | protected void initView() {
39 | recyclerview = mRootView.findViewById(R.id.recyclerview);
40 |
41 | }
42 |
43 | @Override
44 | protected void setListener() {
45 |
46 | mOrderAdapter = new UserOrderAdapter();
47 | mOrderAdapter.setOnItemClickListener(new OnItemClickListener() {
48 | @Override
49 | public void onItemClick(@NonNull @NotNull BaseQuickAdapter, ?> adapter, @NonNull @NotNull View view, int position) {
50 | OrderInfo orderInfo = mOrderAdapter.getData().get(position);
51 | Intent intent = new Intent(getActivity(), PayDialogActivity.class);
52 | intent.putExtra("discount_price", orderInfo.getDiscount_price());
53 | intent.putExtra("uid", orderInfo.getUid());
54 | startActivityForResult(intent, 2000);
55 | }
56 | });
57 | mOrderAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {
58 | @Override
59 | public boolean onItemLongClick(@NonNull @NotNull BaseQuickAdapter adapter, @NonNull @NotNull View view, int position) {
60 | OrderInfo orderInfo = mOrderAdapter.getData().get(position);
61 | AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
62 | builder.setTitle("确定要删除该订单吗?");
63 | builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
64 | @Override
65 | public void onClick(DialogInterface dialog, int which) {
66 |
67 | del(orderInfo.getUid(), position);
68 |
69 |
70 | }
71 | });
72 | builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
73 | @Override
74 | public void onClick(DialogInterface dialog, int which) {
75 |
76 | }
77 | });
78 | builder.show();
79 |
80 |
81 | return true;
82 | }
83 | });
84 | recyclerview.setAdapter(mOrderAdapter);
85 |
86 | }
87 |
88 | @Override
89 | public void initData() {
90 | if (null != Config.getUserInfo().getUsername()) {
91 | queryAll(Config.getUserInfo().getUsername());
92 | }
93 |
94 | }
95 |
96 |
97 | public void del(int uid, int position) {
98 | OkGo.get(Config.ORDER_DEL_URL)
99 | .params("uid", uid)
100 | .execute(new HttpStringCallback(getActivity()) {
101 | @Override
102 | protected void onSuccess(String msg, String response) {
103 | BaseToast(msg);
104 | mOrderAdapter.removeAt(position);
105 |
106 | }
107 |
108 | @Override
109 | protected void onError(String response) {
110 | BaseToast(response);
111 |
112 | }
113 | });
114 |
115 | }
116 |
117 |
118 | public void queryAll(String username) {
119 | OkGo.post(Config.QUERY_ORDER_URL)
120 | .params("username", username)
121 | .params("pay_status", 0)
122 | .execute(new HttpStringCallback(getActivity()) {
123 | @Override
124 | protected void onSuccess(String msg, String response) {
125 |
126 | OderInfoBean infoBean = GsonUtils.parseJson(response, OderInfoBean.class);
127 | mOrderAdapter.setNewInstance(infoBean.getList());
128 |
129 | }
130 |
131 | @Override
132 | protected void onError(String response) {
133 | BaseToast(response);
134 |
135 | }
136 | });
137 |
138 | }
139 |
140 | @Override
141 | public void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
142 | super.onActivityResult(requestCode, resultCode, data);
143 | if (resultCode == 2000) {
144 | initData();
145 | }
146 | }
147 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/http/HttpStringCallback.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.http;
2 |
3 | import android.app.Activity;
4 | import android.app.ProgressDialog;
5 | import android.text.TextUtils;
6 | import android.view.Window;
7 |
8 | import com.lzy.okgo.callback.StringCallback;
9 | import com.lzy.okgo.model.Response;
10 | import com.lzy.okgo.request.base.Request;
11 |
12 | import org.json.JSONException;
13 | import org.json.JSONObject;
14 |
15 | public abstract class HttpStringCallback extends StringCallback {
16 |
17 | private ProgressDialog dialog;
18 | private Activity mActivity;
19 |
20 | protected HttpStringCallback(Activity activity) {
21 | if (null != activity) {
22 | this.mActivity = activity;
23 | dialog = new ProgressDialog(activity);
24 | dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
25 | dialog.setCanceledOnTouchOutside(false);
26 | dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
27 | dialog.setMessage("请求网络中...");
28 | dialog.show();
29 | }
30 | }
31 |
32 | @Override
33 | public void onSuccess(Response response) {
34 | if (!TextUtils.isEmpty(response.body())) {
35 | try {
36 | JSONObject jsonObject = new JSONObject(response.body());
37 | if (jsonObject.optInt("code") == 200) {
38 | if (jsonObject.optJSONObject("data") == null) {
39 | onError("接口返回数据错误");
40 | } else {
41 | onSuccess(jsonObject.optString("msg"), jsonObject.optJSONObject("data").toString());
42 | }
43 |
44 | } else {
45 | onError(jsonObject.optString("msg"));
46 | }
47 |
48 | } catch (JSONException e) {
49 | e.printStackTrace();
50 | }
51 | }
52 |
53 | }
54 |
55 | @Override
56 | public void onError(Response response) {
57 | super.onError(response);
58 |
59 | onError(response.getException().toString());
60 | }
61 |
62 | @Override
63 | public void onFinish() {
64 | if (mActivity != null) {
65 | if (dialog != null && dialog.isShowing()) {
66 | dialog.dismiss();
67 | }
68 | }
69 | }
70 |
71 | protected abstract void onSuccess(String msg, String response);
72 |
73 | protected abstract void onError(String response);
74 | }
75 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/utils/CodeUtils.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.utils;
2 |
3 | import android.graphics.Bitmap;
4 | import android.graphics.Canvas;
5 | import android.graphics.Color;
6 | import android.graphics.Paint;
7 |
8 | import java.util.Random;
9 |
10 | public class CodeUtils {
11 | // private static final char[] CHARS = {
12 | // '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
13 | // 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
14 | // 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
15 | // 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
16 | // 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
17 | // };
18 |
19 | private static final char[] CHARS = {
20 |
21 | 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
22 | 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
23 |
24 | };
25 |
26 | private static CodeUtils mCodeUtils;
27 | private int mPaddingLeft, mPaddingTop;
28 | private StringBuilder mBuilder = new StringBuilder();
29 | private Random mRandom = new Random();
30 |
31 | //Default Settings
32 | // private static final int DEFAULT_CODE_LENGTH = 6;//验证码的长度 这里是6位
33 | private static final int DEFAULT_CODE_LENGTH = 4;//验证码的长度 这里是4位
34 | private static final int DEFAULT_FONT_SIZE = 60;//字体大小
35 | private static final int DEFAULT_LINE_NUMBER = 3;//多少条干扰线
36 | private static final int BASE_PADDING_LEFT = 40; //左边距
37 | private static final int RANGE_PADDING_LEFT = 30;//左边距范围值
38 | private static final int BASE_PADDING_TOP = 70;//上边距
39 | private static final int RANGE_PADDING_TOP = 15;//上边距范围值
40 | private static final int DEFAULT_WIDTH = 300;//默认宽度.图片的总宽
41 | private static final int DEFAULT_HEIGHT = 120;//默认高度.图片的总高
42 | private static final int DEFAULT_COLOR = 0xDF;//默认背景颜色值
43 |
44 | private String code;
45 |
46 | public static CodeUtils getInstance() {
47 | if (mCodeUtils == null) {
48 | mCodeUtils = new CodeUtils();
49 | }
50 | return mCodeUtils;
51 | }
52 |
53 | //生成验证码图片 返回类型为bitmap 直接用imageview.setbitmap()即可
54 | public Bitmap createBitmap() {
55 | mPaddingLeft = 0; //每次生成验证码图片时初始化
56 | mPaddingTop = 0;
57 |
58 | Bitmap bitmap = Bitmap.createBitmap(DEFAULT_WIDTH, DEFAULT_HEIGHT, Bitmap.Config.ARGB_8888);
59 | Canvas canvas = new Canvas(bitmap);
60 |
61 | code = createCode();
62 |
63 | canvas.drawColor(Color.rgb(DEFAULT_COLOR, DEFAULT_COLOR, DEFAULT_COLOR));
64 | Paint paint = new Paint();
65 | paint.setTextSize(DEFAULT_FONT_SIZE);
66 |
67 | for (int i = 0; i < code.length(); i++) {
68 | randomTextStyle(paint);
69 | randomPadding();
70 | canvas.drawText(code.charAt(i) + "", mPaddingLeft, mPaddingTop, paint);
71 | }
72 |
73 | //干扰线
74 | for (int i = 0; i < DEFAULT_LINE_NUMBER; i++) {
75 | drawLine(canvas, paint);
76 | }
77 |
78 | // canvas.save(Canvas.ALL_SAVE_FLAG);//保存
79 | canvas.save();
80 | canvas.restore();
81 | return bitmap;
82 | }
83 |
84 | /**
85 | * 得到图片中的验证码字符串
86 | *
87 | * @return
88 | */
89 | public String getCode() {
90 | return code;
91 | }
92 |
93 | //生成验证码
94 | public String createCode() {
95 | mBuilder.delete(0, mBuilder.length()); //使用之前首先清空内容
96 |
97 | for (int i = 0; i < DEFAULT_CODE_LENGTH; i++) {
98 | mBuilder.append(CHARS[mRandom.nextInt(CHARS.length)]);
99 | }
100 |
101 | return mBuilder.toString();
102 | }
103 |
104 | //生成干扰线
105 | private void drawLine(Canvas canvas, Paint paint) {
106 | int color = randomColor();
107 | int startX = mRandom.nextInt(DEFAULT_WIDTH);
108 | int startY = mRandom.nextInt(DEFAULT_HEIGHT);
109 | int stopX = mRandom.nextInt(DEFAULT_WIDTH);
110 | int stopY = mRandom.nextInt(DEFAULT_HEIGHT);
111 | paint.setStrokeWidth(1);
112 | paint.setColor(color);
113 | canvas.drawLine(startX, startY, stopX, stopY, paint);
114 | }
115 |
116 | //随机颜色
117 | private int randomColor() {
118 | mBuilder.delete(0, mBuilder.length()); //使用之前首先清空内容
119 |
120 | String haxString;
121 | for (int i = 0; i < 3; i++) {
122 | haxString = Integer.toHexString(mRandom.nextInt(0xFF));
123 | if (haxString.length() == 1) {
124 | haxString = "0" + haxString;
125 | }
126 |
127 | mBuilder.append(haxString);
128 | }
129 |
130 | return Color.parseColor("#" + mBuilder.toString());
131 | }
132 |
133 | //随机文本样式
134 | private void randomTextStyle(Paint paint) {
135 | int color = randomColor();
136 | paint.setColor(color);
137 | paint.setFakeBoldText(mRandom.nextBoolean()); //true为粗体,false为非粗体
138 | float skewX = mRandom.nextInt(11) / 10;
139 | skewX = mRandom.nextBoolean() ? skewX : -skewX;
140 | paint.setTextSkewX(skewX); //float类型参数,负数表示右斜,整数左斜
141 | // paint.setUnderlineText(true); //true为下划线,false为非下划线
142 | // paint.setStrikeThruText(true); //true为删除线,false为非删除线
143 | }
144 |
145 | //随机间距
146 | private void randomPadding() {
147 | mPaddingLeft += BASE_PADDING_LEFT + mRandom.nextInt(RANGE_PADDING_LEFT);
148 | mPaddingTop = BASE_PADDING_TOP + mRandom.nextInt(RANGE_PADDING_TOP);
149 | }
150 | }
151 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/utils/GetJsonDataUtil.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.utils;
2 |
3 |
4 | import android.content.Context;
5 | import android.content.res.AssetManager;
6 |
7 | import java.io.BufferedReader;
8 | import java.io.IOException;
9 | import java.io.InputStreamReader;
10 |
11 | public class GetJsonDataUtil {
12 | public String getJson(Context context, String fileName) {
13 |
14 | StringBuilder stringBuilder = new StringBuilder();
15 | try {
16 | AssetManager assetManager = context.getAssets();
17 | BufferedReader bf = new BufferedReader(new InputStreamReader(
18 | assetManager.open(fileName)));
19 | String line;
20 | while ((line = bf.readLine()) != null) {
21 | stringBuilder.append(line);
22 | }
23 | } catch (IOException e) {
24 | e.printStackTrace();
25 | }
26 | return stringBuilder.toString();
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/utils/GsonUtils.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.utils;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.google.gson.Gson;
6 | import com.google.gson.GsonBuilder;
7 |
8 | public class GsonUtils {
9 | public static T parseJson(String json, Class type){
10 | T result = null;
11 | if (!TextUtils.isEmpty(json)) {
12 | Gson gson = new GsonBuilder().create();
13 | try {
14 | result = gson.fromJson(json, type);
15 | } catch (Exception e) {
16 | e.printStackTrace();
17 | } finally {
18 | gson = null;
19 | }
20 | }
21 | return result;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/utils/Utils.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.utils;
2 |
3 | import java.util.regex.Pattern;
4 |
5 | public class Utils {
6 |
7 | public static boolean isMobile(String mobile) {
8 | String reg = "^1\\d{10}$";
9 | boolean matches = Pattern.matches(reg, mobile);
10 | return matches;
11 | }
12 |
13 | /**
14 | * ^ 匹配一行的开头位置
15 | * (?![0-9]+$) 预测该位置后面不全是数字
16 | * (?![a-zA-Z]+$) 预测该位置后面不全是字母
17 | * [0-9A-Za-z] {8,16} 由6-16位数字或这字母组成
18 | * $ 匹配行结尾位置
19 | */
20 | public static boolean isPwd(String pwd) {
21 | String reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";
22 | boolean matches = pwd.matches(reg);
23 | return matches;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/app/android/homestay/view/ScrollAwareFABMenuBehavior.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay.view;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.View;
6 | import android.view.animation.Animation;
7 | import android.view.animation.AnimationUtils;
8 |
9 | import androidx.coordinatorlayout.widget.CoordinatorLayout;
10 | import androidx.core.view.ViewCompat;
11 | import androidx.interpolator.view.animation.FastOutSlowInInterpolator;
12 |
13 | import com.app.android.homestay.R;
14 |
15 | /**
16 | * author : yi...
17 | * date : 2021/11/10/0010 13:08
18 | * desc :
19 | */
20 | public class ScrollAwareFABMenuBehavior extends CoordinatorLayout.Behavior {
21 |
22 | private static final android.view.animation.Interpolator INTERPOLATOR =
23 | new FastOutSlowInInterpolator();
24 | private boolean mIsAnimatingOut = false;
25 |
26 | public ScrollAwareFABMenuBehavior(Context context, AttributeSet attrs) {
27 | super();
28 | }
29 |
30 | @Override
31 | public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
32 | FloatingActionButtonMenu child, View directTargetChild, View target, int nestedScrollAxes) {
33 | return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL ||
34 | super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target,
35 | nestedScrollAxes);
36 | }
37 |
38 | @Override
39 | public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButtonMenu child,
40 | View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
41 | super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed,
42 | dyUnconsumed);
43 | if (dyConsumed > 5 && !this.mIsAnimatingOut && child.getVisibility() == View.VISIBLE) {
44 | if (child.isExpanded()) {
45 | child.collapse();
46 | }
47 | animateOut(child);
48 | } else if (dyConsumed < -5 && child.getVisibility() != View.VISIBLE) {
49 | animateIn(child);
50 | }
51 | }
52 |
53 | // Same animation that FloatingActionButton.Behavior uses to
54 | // hide the FAB when the AppBarLayout exits
55 | private void animateOut(final FloatingActionButtonMenu menu) {
56 | Animation anim = AnimationUtils.loadAnimation(menu.getContext(), R.anim.hide_to_bottom);
57 | anim.setInterpolator(INTERPOLATOR);
58 | anim.setAnimationListener(new Animation.AnimationListener() {
59 | public void onAnimationStart(Animation animation) {
60 | ScrollAwareFABMenuBehavior.this.mIsAnimatingOut = true;
61 | }
62 |
63 | public void onAnimationEnd(Animation animation) {
64 | ScrollAwareFABMenuBehavior.this.mIsAnimatingOut = false;
65 | menu.setVisibility(View.GONE);
66 | }
67 |
68 | @Override
69 | public void onAnimationRepeat(final Animation animation) {
70 | }
71 | });
72 | menu.startAnimation(anim);
73 | }
74 |
75 | // Same animation that FloatingActionButton.Behavior
76 | // uses to show the FAB when the AppBarLayout enters
77 | private void animateIn(FloatingActionButtonMenu menu) {
78 | menu.setVisibility(View.VISIBLE);
79 | Animation anim = AnimationUtils.loadAnimation(menu.getContext(), R.anim.show_from_bottom);
80 | anim.setInterpolator(INTERPOLATOR);
81 | menu.startAnimation(anim);
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/hide_to_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/show_from_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_yuding.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/et_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | -
8 |
9 |
10 |
11 |
12 |
13 | -
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/label_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_admin_feed_book.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
17 |
18 |
25 |
26 |
27 |
28 |
29 |
30 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_admin_house.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
30 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_admin_house_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
19 |
26 |
27 |
37 |
38 |
39 |
40 |
41 |
47 |
48 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_admin_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
30 |
37 |
38 |
39 |
43 |
44 |
45 |
49 |
50 |
56 |
57 |
62 |
63 |
64 |
65 |
70 |
71 |
77 |
78 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
95 |
96 |
97 |
101 |
102 |
108 |
109 |
115 |
116 |
117 |
118 |
123 |
124 |
130 |
131 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_administrator_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
15 |
16 |
22 |
23 |
32 |
33 |
34 |
35 |
42 |
43 |
44 |
52 |
53 |
54 |
62 |
63 |
64 |
74 |
75 |
76 |
77 |
78 |
86 |
87 |
88 |
96 |
97 |
98 |
109 |
110 |
111 |
112 |
113 |
119 |
120 |
129 |
130 |
131 |
141 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_house_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
16 |
17 |
18 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_order_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
30 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_pay_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
16 |
17 |
21 |
22 |
31 |
32 |
33 |
39 |
40 |
41 |
46 |
47 |
48 |
57 |
58 |
59 |
64 |
65 |
74 |
75 |
76 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_feed_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
16 |
17 |
21 |
22 |
31 |
32 |
33 |
41 |
42 |
43 |
52 |
53 |
64 |
65 |
66 |
67 |
72 |
73 |
82 |
83 |
84 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
30 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
30 |
31 |
38 |
39 |
40 |
48 |
49 |
50 |
58 |
59 |
60 |
70 |
71 |
72 |
73 |
74 |
82 |
83 |
84 |
92 |
93 |
94 |
105 |
106 |
107 |
108 |
109 |
115 |
116 |
125 |
126 |
127 |
137 |
138 |
139 |
140 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
14 |
15 |
16 |
21 |
22 |
23 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_order.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_update_pwd.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
17 |
18 |
25 |
26 |
27 |
28 |
29 |
30 |
38 |
39 |
46 |
47 |
59 |
60 |
61 |
62 |
69 |
70 |
77 |
78 |
90 |
91 |
92 |
93 |
100 |
101 |
108 |
109 |
121 |
122 |
123 |
124 |
136 |
137 |
138 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_feed_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
15 |
16 |
21 |
22 |
23 |
30 |
31 |
32 |
39 |
40 |
41 |
51 |
52 |
53 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_user_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
14 |
15 |
16 |
19 |
20 |
24 |
25 |
26 |
30 |
31 |
32 |
42 |
43 |
44 |
51 |
52 |
53 |
61 |
62 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
90 |
91 |
92 |
93 |
103 |
104 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
24 |
25 |
26 |
27 |
28 |
34 |
35 |
36 |
40 |
41 |
48 |
49 |
56 |
57 |
65 |
66 |
67 |
68 |
69 |
75 |
76 |
77 |
86 |
87 |
88 |
89 |
90 |
94 |
95 |
96 |
101 |
102 |
103 |
108 |
109 |
110 |
114 |
115 |
121 |
122 |
123 |
129 |
130 |
136 |
137 |
138 |
150 |
151 |
152 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
16 |
17 |
25 |
26 |
27 |
28 |
29 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_like.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
16 |
17 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_order.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
16 |
17 |
25 |
26 |
27 |
28 |
29 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/back.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_home.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_home_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_home_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_like.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_like_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_like_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_mine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_mine.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_mine_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_mine_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_order.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_order.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_order_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/ic_order_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_1.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_jiantou_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_jiantou_1.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_jiantou_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_jiantou_2.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_jiantou_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_jiantou_3.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_more.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_push_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_push_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_pwd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_pwd.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_scan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_scan.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/img_user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/img_user.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/like.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/logo.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/u_like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxhdpi/u_like.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values/array.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - 1楼-11号
5 | - 2楼-12号
6 | - 3楼-13号
7 | - 4楼-14号
8 | - 5楼-15号
9 | - 6楼-16号
10 | - 7楼-17号
11 | - 8楼-18号
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #03A9F4
4 | #FF03A9F4
5 | #FF03A9F4
6 | #FF03A9F4
7 | #FF03A9F4
8 | #FF000000
9 | #FFFFFFFF
10 | #222222
11 | #FF5722
12 | #F3B4A1
13 | #f5f5f5
14 | #f6f6f6
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 16dp
6 |
7 | 90dp
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 民宿系统
3 |
4 | Hello blank fragment
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/test/java/com/app/android/homestay/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.app.android.homestay;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | repositories {
4 | google()
5 | mavenCentral()
6 | maven { url "https://jitpack.io" }
7 | }
8 | dependencies {
9 | classpath "com.android.tools.build:gradle:4.2.1"
10 |
11 | // NOTE: Do not place your application dependencies here; they belong
12 | // in the individual module build.gradle files
13 | }
14 | }
15 |
16 | allprojects {
17 | repositories {
18 | google()
19 | mavenCentral()
20 | jcenter() // Warning: this repository is going to shut down soon
21 | maven { url "https://jitpack.io" }
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yihuangxing/Android-SpringBoot-Homestay/6b1f1e5cedab08b0a9cbd98c2596e862723df6e8/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Nov 10 09:40:55 CST 2021
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = "Android-SpringBoot-homestay"
2 | include ':app'
3 |
--------------------------------------------------------------------------------