diff --git a/others/others/个人自评报告.xlsx b/others/others/个人自评报告.xlsx
new file mode 100644
index 0000000..70f0626
Binary files /dev/null and b/others/others/个人自评报告.xlsx differ
diff --git a/others/others/后台管理系统演示.mp4 b/others/others/后台管理系统演示.mp4
new file mode 100644
index 0000000..5aa224c
Binary files /dev/null and b/others/others/后台管理系统演示.mp4 differ
diff --git a/others/others/团队自评报告.xlsx b/others/others/团队自评报告.xlsx
new file mode 100644
index 0000000..6464594
Binary files /dev/null and b/others/others/团队自评报告.xlsx differ
diff --git a/others/others/客户端演示.mp4 b/others/others/客户端演示.mp4
new file mode 100644
index 0000000..c1735f0
Binary files /dev/null and b/others/others/客户端演示.mp4 differ
diff --git a/others/others/宣传彩页.jpg b/others/others/宣传彩页.jpg
new file mode 100644
index 0000000..89057d2
Binary files /dev/null and b/others/others/宣传彩页.jpg differ
diff --git a/others/others/答辩.pptx b/others/others/答辩.pptx
new file mode 100644
index 0000000..b8b4bb3
Binary files /dev/null and b/others/others/答辩.pptx differ
diff --git a/src/weapon/app/src/androidTest/java/com/test/weapon/ExampleInstrumentedTest.java b/src/weapon/app/src/androidTest/java/com/test/weapon/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..8296ffe
--- /dev/null
+++ b/src/weapon/app/src/androidTest/java/com/test/weapon/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.test.weapon;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.test.weapon", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/src/weapon/app/src/main/java/com/test/.DS_Store b/src/weapon/app/src/main/java/com/test/.DS_Store
new file mode 100644
index 0000000..46ca0c2
Binary files /dev/null and b/src/weapon/app/src/main/java/com/test/.DS_Store differ
diff --git a/src/weapon/app/src/main/java/com/test/weapon/Adapter/ChooseProductAdapter.java b/src/weapon/app/src/main/java/com/test/weapon/Adapter/ChooseProductAdapter.java
new file mode 100644
index 0000000..8b899d0
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/Adapter/ChooseProductAdapter.java
@@ -0,0 +1,43 @@
+package com.test.weapon.Adapter;
+
+import android.graphics.Bitmap;
+import android.widget.CheckBox;
+
+import androidx.annotation.NonNull;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.test.weapon.R;
+import com.test.weapon.bean.GetWeaponList;
+import com.test.weapon.util.AppData;
+import com.test.weapon.util.SmartImageView;
+
+public class ChooseProductAdapter extends BaseQuickAdapter {
+
+
+ public ChooseProductAdapter(int layoutResId) {
+ super(layoutResId);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, GetWeaponList data) {
+ baseViewHolder.setText(R.id.tv_maybe_like_name,data.getName());
+ baseViewHolder.getView(R.id.choose_cb);
+ CheckBox checkBox = baseViewHolder.getView(R.id.choose_cb);
+ checkBox.setChecked(data.isChoose());
+ SmartImageView siv_maybe_like=baseViewHolder.getView(R.id.siv_maybe_like);
+
+ siv_maybe_like.setImageUrl(AppData.PicAddress+data.getImgPath(), new SmartImageView.onCompleteListener() {
+ @Override
+ public void onSuccess(Bitmap bitmap) {
+ System.out.println("----------------------success");
+ }
+
+ @Override
+ public void onFail() {
+ System.out.println("----------------------failed");
+
+ }
+ });
+ }
+}
diff --git a/src/weapon/app/src/main/java/com/test/weapon/Adapter/FixInAdvanceAdapter.java b/src/weapon/app/src/main/java/com/test/weapon/Adapter/FixInAdvanceAdapter.java
new file mode 100644
index 0000000..654c69b
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/Adapter/FixInAdvanceAdapter.java
@@ -0,0 +1,32 @@
+package com.test.weapon.Adapter;
+
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.test.weapon.util.AppData;
+import com.test.weapon.R;
+import com.test.weapon.bean.GetWeaponList;
+
+public class FixInAdvanceAdapter extends BaseQuickAdapter {
+
+ public FixInAdvanceAdapter(int layoutResId) {
+ super(layoutResId);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, GetWeaponList fixInAdvanceBean) {
+ Glide.with(getContext()).load(AppData.PicAddress+fixInAdvanceBean.getImgPath()).into((ImageView) baseViewHolder.getView(R.id.img_url));
+ baseViewHolder.setText(R.id.tv_name,fixInAdvanceBean.getName());
+ baseViewHolder.setText(R.id.tv_desc,"子弹口径:"+fixInAdvanceBean.getBulletCaliber()+"mm\n弹夹容量:"+fixInAdvanceBean.getCartridgeCapacity()+"\n有效射程:"+fixInAdvanceBean.getEffectiveRange());
+ if (fixInAdvanceBean.getIsLend()==1){
+ baseViewHolder.setText(R.id.tv_lend,"续借");
+ }else{
+ baseViewHolder.setText(R.id.tv_lend,"借出");
+ }
+
+ }
+}
diff --git a/src/weapon/app/src/main/java/com/test/weapon/Adapter/HistoryAdapter.java b/src/weapon/app/src/main/java/com/test/weapon/Adapter/HistoryAdapter.java
new file mode 100644
index 0000000..703a335
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/Adapter/HistoryAdapter.java
@@ -0,0 +1,38 @@
+package com.test.weapon.Adapter;
+
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.test.weapon.R;
+import com.test.weapon.api.ReturnWeaponListApi;
+import com.test.weapon.util.AppData;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class HistoryAdapter extends BaseQuickAdapter {
+
+ public HistoryAdapter(int layoutResId) {
+ super(layoutResId);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, ReturnWeaponListApi.Bean fixInAdvanceBean) {
+ Glide.with(getContext()).load(AppData.PicAddress+fixInAdvanceBean.getWeaponry().getImgPath()).into((ImageView) baseViewHolder.getView(R.id.img_url));
+ baseViewHolder.setText(R.id.tv_name,fixInAdvanceBean.getWeaponryName());
+ baseViewHolder.setText(R.id.tv_name,fixInAdvanceBean.getWeaponryName()+"\n子弹口径:"+fixInAdvanceBean.getWeaponry().getBulletCaliber()+"mm\n弹夹容量:"+fixInAdvanceBean.getWeaponry().getCartridgeCapacity()+"\n有效射程:"+fixInAdvanceBean.getWeaponry().getEffectiveRange());
+
+
+
+ }
+
+ public static String getDateToString(long milSecond) {
+ Date date = new Date(milSecond);
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ return format.format(date);
+ }
+}
diff --git a/src/weapon/app/src/main/java/com/test/weapon/Adapter/LocationAlarmAdapter.java b/src/weapon/app/src/main/java/com/test/weapon/Adapter/LocationAlarmAdapter.java
new file mode 100644
index 0000000..b300806
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/Adapter/LocationAlarmAdapter.java
@@ -0,0 +1,27 @@
+package com.test.weapon.Adapter;
+
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.test.weapon.util.AppData;
+import com.test.weapon.R;
+import com.test.weapon.bean.GetWeaponList;
+
+public class LocationAlarmAdapter extends BaseQuickAdapter {
+
+ public LocationAlarmAdapter(int layoutResId) {
+ super(layoutResId);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, GetWeaponList fixInAdvanceBean) {
+ Glide.with(getContext()).load(AppData.PicAddress+fixInAdvanceBean.getImgPath()).into((ImageView) baseViewHolder.getView(R.id.img_url));
+ baseViewHolder.setText(R.id.tv_name,fixInAdvanceBean.getName()+"已超出指定范围");
+ baseViewHolder.setText(R.id.tv_desc,"子弹口径:"+fixInAdvanceBean.getBulletCaliber()+"mm\n弹夹容量:"+fixInAdvanceBean.getCartridgeCapacity()+"\n有效射程:"+fixInAdvanceBean.getEffectiveRange());
+
+ }
+}
diff --git a/src/weapon/app/src/main/java/com/test/weapon/Adapter/RemindAdapter.java b/src/weapon/app/src/main/java/com/test/weapon/Adapter/RemindAdapter.java
new file mode 100644
index 0000000..c8d6e40
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/Adapter/RemindAdapter.java
@@ -0,0 +1,41 @@
+package com.test.weapon.Adapter;
+
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.test.weapon.api.ReturnWeaponListApi;
+import com.test.weapon.R;
+import com.test.weapon.util.AppData;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class RemindAdapter extends BaseQuickAdapter {
+
+ public RemindAdapter(int layoutResId) {
+ super(layoutResId);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, ReturnWeaponListApi.Bean fixInAdvanceBean) {
+ Glide.with(getContext()).load(AppData.PicAddress+fixInAdvanceBean.getWeaponry().getImgPath()).into((ImageView) baseViewHolder.getView(R.id.img_url));
+ baseViewHolder.setText(R.id.tv_name,fixInAdvanceBean.getWeaponryName());
+ baseViewHolder.setText(R.id.tv_name,fixInAdvanceBean.getWeaponryName()+"\n子弹口径:"+fixInAdvanceBean.getWeaponry().getBulletCaliber()+"mm\n弹夹容量:"+fixInAdvanceBean.getWeaponry().getCartridgeCapacity()+"\n有效射程:"+fixInAdvanceBean.getWeaponry().getEffectiveRange());
+
+ baseViewHolder.setText(R.id.tv_time,"归还时间:"+getDateToString(fixInAdvanceBean.getReturnTime()));
+ baseViewHolder.setVisible(R.id.tv_return,fixInAdvanceBean.getReturnStatus()==0);
+ baseViewHolder.setVisible(R.id.img_warring,fixInAdvanceBean.getReturnTime() {
+
+
+ public SearchProductAdapter(int layoutResId) {
+ super(layoutResId);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, GetWeaponList data) {
+ baseViewHolder.setText(R.id.tv_maybe_like_name,data.getName());
+
+ baseViewHolder.setText(R.id.tv_desc,"子弹口径:"+data.getBulletCaliber()+"mm\n弹夹容量:"+data.getCartridgeCapacity()+"\n有效射程:"+data.getEffectiveRange());
+
+ SmartImageView siv_maybe_like=baseViewHolder.getView(R.id.siv_maybe_like);
+
+ siv_maybe_like.setImageUrl(AppData.PicAddress+data.getImgPath(), new SmartImageView.onCompleteListener() {
+ @Override
+ public void onSuccess(Bitmap bitmap) {
+ System.out.println("----------------------success");
+ }
+
+ @Override
+ public void onFail() {
+ System.out.println("----------------------failed");
+
+ }
+ });
+ }
+}
diff --git a/src/weapon/app/src/main/java/com/test/weapon/AppApplication.java b/src/weapon/app/src/main/java/com/test/weapon/AppApplication.java
new file mode 100644
index 0000000..a393a82
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/AppApplication.java
@@ -0,0 +1,57 @@
+package com.test.weapon;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+
+import com.hjq.http.EasyConfig;
+import com.hjq.http.config.IRequestInterceptor;
+import com.hjq.http.config.IRequestServer;
+import com.hjq.http.model.HttpHeaders;
+import com.hjq.http.model.HttpParams;
+import com.hjq.http.request.HttpRequest;
+import com.hjq.toast.Toaster;
+import com.test.weapon.http.ReleaseServer;
+import com.test.weapon.http.RequestHandler;
+
+import okhttp3.OkHttpClient;
+
+
+public class AppApplication extends Application {
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ Toaster.init(this);
+
+
+ // 网络请求框架初始化
+ IRequestServer server;
+ server = new ReleaseServer();
+
+ OkHttpClient okHttpClient = new OkHttpClient.Builder()
+ .build();
+
+ EasyConfig.with(okHttpClient)
+ // 是否打印日志
+ .setLogEnabled(BuildConfig.DEBUG)
+ // 设置服务器配置(必须设置)
+ .setServer(server)
+ // 设置请求处理策略(必须设置)
+ .setHandler(new RequestHandler(this))
+ // 设置请求参数拦截器
+ .setInterceptor(new IRequestInterceptor() {
+ @Override
+ public void interceptArguments(@NonNull HttpRequest> httpRequest,
+ @NonNull HttpParams params,
+ @NonNull HttpHeaders headers) {
+ }
+ })
+
+ // 设置请求重试次数
+ .setRetryCount(1)
+ // 设置请求重试时间
+ .setRetryTime(2000)
+
+ .into();
+ }
+}
diff --git a/src/weapon/app/src/main/java/com/test/weapon/BaseFragment.java b/src/weapon/app/src/main/java/com/test/weapon/BaseFragment.java
new file mode 100644
index 0000000..bead9dd
--- /dev/null
+++ b/src/weapon/app/src/main/java/com/test/weapon/BaseFragment.java
@@ -0,0 +1,22 @@
+package com.test.weapon;
+
+import androidx.fragment.app.Fragment;
+
+import com.hjq.http.listener.OnHttpListener;
+import com.hjq.toast.Toaster;
+import com.test.weapon.http.HttpData;
+
+
+public class BaseFragment extends Fragment implements OnHttpListener