first
This commit is contained in:
28
.gitignore
vendored
Normal file
28
.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# ---> Kotlin
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
replay_pid*
|
||||||
|
|
||||||
|
# Kotlin Gradle plugin data, see https://kotlinlang.org/docs/whatsnew20.html#new-directory-for-kotlin-data-in-gradle-projects
|
||||||
|
.kotlin/
|
||||||
BIN
.gradle/8.13/checksums/checksums.lock
Normal file
BIN
.gradle/8.13/checksums/checksums.lock
Normal file
Binary file not shown.
BIN
.gradle/8.13/checksums/md5-checksums.bin
Normal file
BIN
.gradle/8.13/checksums/md5-checksums.bin
Normal file
Binary file not shown.
BIN
.gradle/8.13/checksums/sha1-checksums.bin
Normal file
BIN
.gradle/8.13/checksums/sha1-checksums.bin
Normal file
Binary file not shown.
BIN
.gradle/8.13/executionHistory/executionHistory.bin
Normal file
BIN
.gradle/8.13/executionHistory/executionHistory.bin
Normal file
Binary file not shown.
BIN
.gradle/8.13/executionHistory/executionHistory.lock
Normal file
BIN
.gradle/8.13/executionHistory/executionHistory.lock
Normal file
Binary file not shown.
BIN
.gradle/8.13/fileChanges/last-build.bin
Normal file
BIN
.gradle/8.13/fileChanges/last-build.bin
Normal file
Binary file not shown.
BIN
.gradle/8.13/fileHashes/fileHashes.bin
Normal file
BIN
.gradle/8.13/fileHashes/fileHashes.bin
Normal file
Binary file not shown.
BIN
.gradle/8.13/fileHashes/fileHashes.lock
Normal file
BIN
.gradle/8.13/fileHashes/fileHashes.lock
Normal file
Binary file not shown.
BIN
.gradle/8.13/fileHashes/resourceHashesCache.bin
Normal file
BIN
.gradle/8.13/fileHashes/resourceHashesCache.bin
Normal file
Binary file not shown.
0
.gradle/8.13/gc.properties
Normal file
0
.gradle/8.13/gc.properties
Normal file
BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock
Normal file
BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock
Normal file
Binary file not shown.
2
.gradle/buildOutputCleanup/cache.properties
Normal file
2
.gradle/buildOutputCleanup/cache.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#Thu Jul 30 09:08:42 CST 2026
|
||||||
|
gradle.version=8.13
|
||||||
BIN
.gradle/buildOutputCleanup/outputFiles.bin
Normal file
BIN
.gradle/buildOutputCleanup/outputFiles.bin
Normal file
Binary file not shown.
2
.gradle/config.properties
Normal file
2
.gradle/config.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#Thu Jul 30 09:08:52 CST 2026
|
||||||
|
java.home=D\:\\Program Files\\Android\\Android Studio\\jbr
|
||||||
BIN
.gradle/file-system.probe
Normal file
BIN
.gradle/file-system.probe
Normal file
Binary file not shown.
0
.gradle/vcs-1/gc.properties
Normal file
0
.gradle/vcs-1/gc.properties
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
1
.idea/.name
generated
Normal file
1
.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CkCollar_app
|
||||||
6
.idea/AndroidProjectSystem.xml
generated
Normal file
6
.idea/AndroidProjectSystem.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AndroidProjectSystem">
|
||||||
|
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
2229
.idea/caches/deviceStreaming.xml
generated
Normal file
2229
.idea/caches/deviceStreaming.xml
generated
Normal file
File diff suppressed because it is too large
Load Diff
6
.idea/compiler.xml
generated
Normal file
6
.idea/compiler.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<bytecodeTargetLevel target="21" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
11
.idea/deploymentTargetSelector.xml
generated
Normal file
11
.idea/deploymentTargetSelector.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetSelector">
|
||||||
|
<selectionStates>
|
||||||
|
<SelectionState runConfigName="app">
|
||||||
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
|
<DialogSelection />
|
||||||
|
</SelectionState>
|
||||||
|
</selectionStates>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
19
.idea/gradle.xml
generated
Normal file
19
.idea/gradle.xml
generated
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
|
<component name="GradleSettings">
|
||||||
|
<option name="linkedExternalProjectsSettings">
|
||||||
|
<GradleProjectSettings>
|
||||||
|
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/app" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</GradleProjectSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/markdown.xml
generated
Normal file
8
.idea/markdown.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MarkdownSettings">
|
||||||
|
<option name="previewPanelProviderInfo">
|
||||||
|
<ProviderInfo name="Compose (experimental)" className="com.intellij.markdown.compose.preview.ComposePanelProvider" />
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
10
.idea/migrations.xml
generated
Normal file
10
.idea/migrations.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectMigrations">
|
||||||
|
<option name="MigrateToGradleLocalJavaHome">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
4
.idea/misc.xml
generated
Normal file
4
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<project version="4">
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK" />
|
||||||
|
</project>
|
||||||
8
.idea/modules/app/CkCollar_app.app.main.iml
generated
Normal file
8
.idea/modules/app/CkCollar_app.app.main.iml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module version="4">
|
||||||
|
<component name="AdditionalModuleElements">
|
||||||
|
<content url="file://$MODULE_DIR$/../../../app/src/main" dumb="true">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/assets" type="java-resource" />
|
||||||
|
</content>
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
17
.idea/runConfigurations.xml
generated
Normal file
17
.idea/runConfigurations.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RunConfigurationProducerService">
|
||||||
|
<option name="ignoredProducers">
|
||||||
|
<set>
|
||||||
|
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
|
||||||
|
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
|
||||||
|
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"java.configuration.updateBuildConfiguration": "interactive"
|
||||||
|
}
|
||||||
BIN
android_123456.keystore
Normal file
BIN
android_123456.keystore
Normal file
Binary file not shown.
1
app/.gitignore
vendored
Normal file
1
app/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/build
|
||||||
159
app/build.gradle
Normal file
159
app/build.gradle
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.application)
|
||||||
|
alias(libs.plugins.kotlin.android)
|
||||||
|
id('kotlin-kapt')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
signingConfigs {
|
||||||
|
release {
|
||||||
|
storeFile file('../android_123456.keystore')
|
||||||
|
keyAlias 'tangtang_app'
|
||||||
|
keyPassword '123456'
|
||||||
|
storePassword '123456'
|
||||||
|
}
|
||||||
|
debug {
|
||||||
|
storeFile file('../android_123456.keystore')
|
||||||
|
keyAlias 'tangtang_app'
|
||||||
|
keyPassword '123456'
|
||||||
|
storePassword '123456'
|
||||||
|
}
|
||||||
|
config {
|
||||||
|
storeFile file('../android_123456.keystore')
|
||||||
|
keyAlias 'tangtang_app'
|
||||||
|
keyPassword '123456'
|
||||||
|
storePassword '123456'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
namespace 'com.ck.ckcollar.app'
|
||||||
|
compileSdk {
|
||||||
|
version = release(36)
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId "com.ck.ckcollar.app"
|
||||||
|
minSdk 24
|
||||||
|
targetSdk 36
|
||||||
|
versionCode 1
|
||||||
|
versionName "1.0.1"
|
||||||
|
|
||||||
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
minifyEnabled false
|
||||||
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_11
|
||||||
|
targetCompatibility JavaVersion.VERSION_11
|
||||||
|
|
||||||
|
}
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = '11'
|
||||||
|
}
|
||||||
|
buildFeatures {
|
||||||
|
viewBinding = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register('testClasses') {
|
||||||
|
dependsOn 'compileDebugUnitTestSources'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
implementation(name: 'library', ext: 'aar')
|
||||||
|
implementation(name: 'changeskin', ext: 'aar')
|
||||||
|
implementation(name: 'pickerview', ext: 'aar')
|
||||||
|
implementation(name: 'wheelview', ext: 'aar')
|
||||||
|
implementation(name: 'MNMLKitScanner', ext: 'aar')
|
||||||
|
implementation(name: 'Flowlayout', ext: 'aar')
|
||||||
|
implementation(name: 'photoview', ext: 'aar')
|
||||||
|
|
||||||
|
implementation libs.androidx.core.ktx
|
||||||
|
implementation libs.androidx.lifecycle.runtime.ktx
|
||||||
|
implementation libs.androidx.activity.compose
|
||||||
|
implementation platform(libs.androidx.compose.bom)
|
||||||
|
implementation libs.androidx.compose.ui
|
||||||
|
implementation libs.androidx.compose.ui.graphics
|
||||||
|
implementation libs.androidx.compose.ui.tooling.preview
|
||||||
|
implementation libs.androidx.compose.material3
|
||||||
|
implementation libs.material
|
||||||
|
implementation libs.appcompat
|
||||||
|
testImplementation libs.junit
|
||||||
|
androidTestImplementation libs.androidx.junit
|
||||||
|
androidTestImplementation libs.androidx.espresso.core
|
||||||
|
androidTestImplementation platform(libs.androidx.compose.bom)
|
||||||
|
androidTestImplementation libs.androidx.compose.ui.test.junit4
|
||||||
|
debugImplementation libs.androidx.compose.ui.tooling
|
||||||
|
debugImplementation libs.androidx.compose.ui.test.manifest
|
||||||
|
|
||||||
|
//可侧滑recyclerview
|
||||||
|
implementation 'com.yanzhenjie.recyclerview:x:1.3.2'
|
||||||
|
|
||||||
|
//glide
|
||||||
|
//implementation("com.github.bumptech.glide:glide:4.16.0")
|
||||||
|
implementation 'com.github.bumptech.glide:glide:5.0.5'
|
||||||
|
kapt 'com.github.bumptech.glide:compiler:5.0.5' // 对于Kotlin项目
|
||||||
|
|
||||||
|
|
||||||
|
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
|
||||||
|
implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
|
||||||
|
implementation 'com.squareup.okhttp3:okhttp-sse:4.12.0'
|
||||||
|
|
||||||
|
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||||
|
implementation("pub.devrel:easypermissions:3.0.0")
|
||||||
|
|
||||||
|
implementation 'com.readystatesoftware.systembartint:systembartint:1.0.3'
|
||||||
|
implementation("org.osmdroid:osmdroid-android:6.1.20")
|
||||||
|
|
||||||
|
api 'com.alipay.sdk:alipaysdk-android:+@aar'
|
||||||
|
// implementation 'com.alipay.sdk:zmcredit-face:3.8.2'
|
||||||
|
//
|
||||||
|
// implementation 'com.alipay.sdk:zmcert-sdk:3.8.0'
|
||||||
|
|
||||||
|
api 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0'
|
||||||
|
|
||||||
|
//二维码三方库
|
||||||
|
// implementation 'com.github.maning0303:MNMLKitScanner:V1.0.4'
|
||||||
|
implementation 'com.google.mlkit:barcode-scanning:17.0.2'
|
||||||
|
implementation "androidx.camera:camera-core:1.0.2"
|
||||||
|
implementation "androidx.camera:camera-camera2:1.0.2"
|
||||||
|
implementation "androidx.camera:camera-lifecycle:1.0.2"
|
||||||
|
implementation "androidx.camera:camera-view:1.0.0-alpha25"
|
||||||
|
|
||||||
|
|
||||||
|
implementation ("com.huawei.hms:scanplus:2.9.0.300")
|
||||||
|
|
||||||
|
//
|
||||||
|
implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
|
||||||
|
// kotlin扩展(可选)
|
||||||
|
implementation("com.geyifeng.immersionbar:immersionbar-ktx:3.2.2")
|
||||||
|
|
||||||
|
implementation 'io.github.youth5201314:banner:2.2.3'
|
||||||
|
|
||||||
|
implementation 'com.kyleduo.switchbutton:library:2.1.0'
|
||||||
|
implementation 'com.github.zcweng:switch-button:0.0.3@aar'
|
||||||
|
|
||||||
|
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
|
||||||
|
implementation 'com.scwang.smart:refresh-header-classics:2.0.1'
|
||||||
|
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
|
||||||
|
|
||||||
|
//图片
|
||||||
|
//支付宝
|
||||||
|
api 'com.alipay.sdk:alipaysdk-android:+@aar'
|
||||||
|
|
||||||
|
//websocket
|
||||||
|
implementation 'org.java-websocket:Java-WebSocket:1.5.2'
|
||||||
|
|
||||||
|
implementation 'com.umeng.umsdk:common:9.4.7'// 必选
|
||||||
|
implementation 'com.umeng.umsdk:asms:1.4.0'// 必选
|
||||||
|
implementation 'com.umeng.umsdk:apm:+'
|
||||||
|
|
||||||
|
implementation 'com.github.yyued:SVGAPlayer-Android:2.6.1'
|
||||||
|
|
||||||
|
}
|
||||||
BIN
app/libs/Flowlayout.aar
Normal file
BIN
app/libs/Flowlayout.aar
Normal file
Binary file not shown.
BIN
app/libs/MNMLKitScanner.aar
Normal file
BIN
app/libs/MNMLKitScanner.aar
Normal file
Binary file not shown.
BIN
app/libs/changeskin.aar
Normal file
BIN
app/libs/changeskin.aar
Normal file
Binary file not shown.
BIN
app/libs/library.aar
Normal file
BIN
app/libs/library.aar
Normal file
Binary file not shown.
BIN
app/libs/photoview.aar
Normal file
BIN
app/libs/photoview.aar
Normal file
Binary file not shown.
BIN
app/libs/pickerview.aar
Normal file
BIN
app/libs/pickerview.aar
Normal file
Binary file not shown.
BIN
app/libs/wheelview.aar
Normal file
BIN
app/libs/wheelview.aar
Normal file
Binary file not shown.
51
app/proguard-rules.pro
vendored
Normal file
51
app/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# You can control the set of applied configuration files using the
|
||||||
|
# proguardFiles setting in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Uncomment this to preserve the line number information for
|
||||||
|
# debugging stack traces.
|
||||||
|
#-keepattributes SourceFile,LineNumberTable
|
||||||
|
|
||||||
|
# If you keep the line number information, uncomment this to
|
||||||
|
# hide the original source file name.
|
||||||
|
#-renamesourcefileattribute SourceFile
|
||||||
|
|
||||||
|
-keep class com.tencent.mm.opensdk.** {
|
||||||
|
*;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keep class com.tencent.wxop.** {
|
||||||
|
*;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keep class com.tencent.mm.sdk.** {
|
||||||
|
*;
|
||||||
|
}
|
||||||
|
-keep class com.uc.** {*;}
|
||||||
|
|
||||||
|
-keep class com.efs.** {*;}
|
||||||
|
|
||||||
|
-keep class com.umeng.** {*;}
|
||||||
|
|
||||||
|
-keep class org.repackage.** {*;}
|
||||||
|
|
||||||
|
-keep class com.uyumao.** { *; }
|
||||||
|
|
||||||
|
-keepclassmembers class * {
|
||||||
|
public <init> (org.json.JSONObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers enum * {
|
||||||
|
public static **[] values();
|
||||||
|
public static ** valueOf(java.lang.String);
|
||||||
|
}
|
||||||
BIN
app/release/baselineProfiles/0/app-release.dm
Normal file
BIN
app/release/baselineProfiles/0/app-release.dm
Normal file
Binary file not shown.
BIN
app/release/baselineProfiles/1/app-release.dm
Normal file
BIN
app/release/baselineProfiles/1/app-release.dm
Normal file
Binary file not shown.
37
app/release/output-metadata.json
Normal file
37
app/release/output-metadata.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"artifactType": {
|
||||||
|
"type": "APK",
|
||||||
|
"kind": "Directory"
|
||||||
|
},
|
||||||
|
"applicationId": "com.ck.ckcollar.app",
|
||||||
|
"variantName": "release",
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"type": "SINGLE",
|
||||||
|
"filters": [],
|
||||||
|
"attributes": [],
|
||||||
|
"versionCode": 1,
|
||||||
|
"versionName": "1.0.1",
|
||||||
|
"outputFile": "app-release.apk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"elementType": "File",
|
||||||
|
"baselineProfiles": [
|
||||||
|
{
|
||||||
|
"minApi": 28,
|
||||||
|
"maxApi": 30,
|
||||||
|
"baselineProfiles": [
|
||||||
|
"baselineProfiles/1/app-release.dm"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"minApi": 31,
|
||||||
|
"maxApi": 2147483647,
|
||||||
|
"baselineProfiles": [
|
||||||
|
"baselineProfiles/0/app-release.dm"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"minSdkVersionForDexing": 24
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.ck.ckcollar.app
|
||||||
|
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
|
import org.junit.Assert.*
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instrumented test, which will execute on an Android device.
|
||||||
|
*
|
||||||
|
* See [testing documentation](http://d.android.com/tools/testing).
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class ExampleInstrumentedTest {
|
||||||
|
@Test
|
||||||
|
fun useAppContext() {
|
||||||
|
// Context of the app under test.
|
||||||
|
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
|
||||||
|
assertEquals("com.ck.ckcollar.app", appContext.packageName)
|
||||||
|
}
|
||||||
|
}
|
||||||
329
app/src/main/AndroidManifest.xml
Normal file
329
app/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,329 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:name=".CKApp"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:extractNativeLibs="true"
|
||||||
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
|
android:fullBackupContent="@xml/backup_rules"
|
||||||
|
android:icon="@mipmap/icon"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
|
android:requestLegacyExternalStorage="true"
|
||||||
|
android:roundIcon="@mipmap/icon"
|
||||||
|
android:supportsRtl="true"
|
||||||
|
android:theme="@style/Theme.CkCollar_app">
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.welcome.IndexActivity"
|
||||||
|
android:exported="true"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.welcome.WelcomeActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.welcome.PermisstionActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.login.LoginActivity"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.login.RegisterActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.login.BoundPhoneActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.login.RegisterSuccessActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.login.LostActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.login.AgreementActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.home.MainActivity"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MainTheme"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".wxapi.WXEntryActivity"
|
||||||
|
android:exported="true"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:taskAffinity="com.ck.ckcollar.app"
|
||||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.PetManagerActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.AddPetActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.EditPetActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.ViewPetFileActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.customer.CustomerActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.user.UserInfoActivity"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.message.MessageCenterActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.SettingActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.PasswordManagerActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.EditPsswordActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.FindPasswordActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.AddressActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.AddAddressActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.AccountCancellationActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.balance.BalanceActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.balance.RechargeActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.balance.WithDrawActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.balance.WithDrawSuccessActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.balance.OutRecordDetailsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.balance.IncomeRecordDetailsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.points.PointsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.member.MemberActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.member.OpenMemberActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.mine.ReturnDeviceActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.mine.FeedBackActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.shop.SearchActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"
|
||||||
|
android:windowSoftInputMode="stateAlwaysVisible"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.shop.ShopCarActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"
|
||||||
|
android:windowSoftInputMode="stateAlwaysVisible"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.shop.TypeActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"
|
||||||
|
android:windowSoftInputMode="stateAlwaysVisible"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.shop.ProductDetailsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.shop.OrderActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.shop.OrderSuccessActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.MyOrderActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.OrderDetailsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.AfterSalesActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.RefundActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.ModifyAddressActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.AfterSalesProgressActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.LogisticsInfoActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.note.NoteDetailsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.EditAddressActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.InputLogisticsNumActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.message.MessageDetailsActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.PayPasswordManagerActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.FindPayPasswordActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.EditPayPsswordActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.setting.PayPsswordActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.order.PayOrderActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.deposit.DepositActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.customer.PeopleCustomerActivity"
|
||||||
|
android:windowSoftInputMode="adjustResize"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.InputInviteCodeActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.BoundSuccessActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.deposit.StartDepositActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.ImageViewActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.customer.MineCustomerActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.customer.ShopCustomerActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.WifiListActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.DarkActionBar"></activity>
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.BlueToothActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.DarkActionBar"></activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".ui.act.petmanager.MapLocationActivity"
|
||||||
|
android:theme="@style/Theme.CkCollar_app.MapTheme"></activity>
|
||||||
|
|
||||||
|
|
||||||
|
<provider
|
||||||
|
android:name="androidx.core.content.FileProvider"
|
||||||
|
android:authorities="com.ck.ckcollar.app.fileprovider"
|
||||||
|
android:exported="false"
|
||||||
|
android:grantUriPermissions="true">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
|
android:resource="@xml/file_paths" />
|
||||||
|
</provider>
|
||||||
|
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<queries>
|
||||||
|
<package android:name="com.tencent.mm" />
|
||||||
|
</queries>
|
||||||
|
|
||||||
|
<queries>
|
||||||
|
<package android:name="com.eg.android.AlipayGphone" /> <!-- 支付宝 -->
|
||||||
|
<package android:name="hk.alipay.wallet" /> <!-- AlipayHK -->
|
||||||
|
</queries>
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||||
|
|
||||||
|
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />-->
|
||||||
|
|
||||||
|
<!-- <!– 声明应用需要使用蓝牙功能 –>-->
|
||||||
|
<!-- <uses-feature-->
|
||||||
|
<!-- android:name="android.hardware.bluetooth"-->
|
||||||
|
<!-- android:required="true" />-->
|
||||||
|
|
||||||
|
<!-- <!– 必要的蓝牙权限 –>-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />-->
|
||||||
|
|
||||||
|
<!-- <!– 从 Android 12 (API 31) 开始,需要新的蓝牙扫描/连接权限 –>-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 基础网络权限 -->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<!-- 摄像头权限 -->
|
||||||
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<!-- 声明需要使用摄像头功能 -->
|
||||||
|
<uses-feature android:name="android.hardware.camera" />
|
||||||
|
<uses-feature android:name="android.hardware.camera.autofocus" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||||
|
</manifest>
|
||||||
5354
app/src/main/assets/province.json
Normal file
5354
app/src/main/assets/province.json
Normal file
File diff suppressed because it is too large
Load Diff
66
app/src/main/java/com/ck/ckcollar/app/CKApp.kt
Normal file
66
app/src/main/java/com/ck/ckcollar/app/CKApp.kt
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
package com.ck.ckcollar.app
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import android.text.TextUtils
|
||||||
|
import com.bumptech.glide.Glide
|
||||||
|
import com.bumptech.glide.GlideBuilder
|
||||||
|
import com.bumptech.glide.load.DecodeFormat
|
||||||
|
import com.bumptech.glide.request.RequestOptions
|
||||||
|
import com.ck.ckcollar.app.exception.ExceptionHandler
|
||||||
|
import com.ck.ckcollar.app.model.UserInfoModel
|
||||||
|
import com.ck.ckcollar.app.utils.Const
|
||||||
|
import com.cyclone.shadowsocks.utils.PreferencesUtils
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.tt.kit.base.TTBaseActivity
|
||||||
|
import com.tt.kit.utils.TTLog
|
||||||
|
import com.umeng.analytics.MobclickAgent
|
||||||
|
import com.umeng.commonsdk.UMConfigure
|
||||||
|
import com.umeng.umcrash.customlog.UAPMCustomLog
|
||||||
|
|
||||||
|
|
||||||
|
class CKApp : Application() {
|
||||||
|
|
||||||
|
var activitys = mutableListOf<TTBaseActivity>()
|
||||||
|
lateinit var token : String
|
||||||
|
var wxJump = 0
|
||||||
|
var userInfo : UserInfoModel? = null
|
||||||
|
companion object {
|
||||||
|
lateinit var app: CKApp
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreate() {
|
||||||
|
super.onCreate()
|
||||||
|
app = this
|
||||||
|
|
||||||
|
token = PreferencesUtils.getString(this, Const.TOKEN,"").toString()
|
||||||
|
var userData = PreferencesUtils.getString(this, Const.USER_DATA,"").toString()
|
||||||
|
if (!TextUtils.isEmpty(userData)){
|
||||||
|
userInfo = Gson().fromJson<UserInfoModel>(userData, UserInfoModel::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
ExceptionHandler.instance.init(this)
|
||||||
|
|
||||||
|
val defaultOptions = RequestOptions()
|
||||||
|
.format(DecodeFormat.PREFER_RGB_565) // 设置图片格式为RGB_565以减少内存使用
|
||||||
|
.disallowHardwareConfig()
|
||||||
|
// 禁止硬件位图配置以避免潜在的颜色问题
|
||||||
|
// 可以添加更多配置...
|
||||||
|
|
||||||
|
|
||||||
|
Glide.init(this, GlideBuilder().setDefaultRequestOptions(defaultOptions))
|
||||||
|
//SkinManager.getInstance().init(this);
|
||||||
|
|
||||||
|
UMConfigure.setLogEnabled(true)
|
||||||
|
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);
|
||||||
|
|
||||||
|
UMConfigure.preInit(this, "6a618cf0e88ae439bf379f37", "UM");
|
||||||
|
|
||||||
|
|
||||||
|
UMConfigure.init(this, "6a618cf0e88ae439bf379f37", "UM", UMConfigure.DEVICE_TYPE_PHONE, "");
|
||||||
|
|
||||||
|
TTLog.isLogEable(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
182
app/src/main/java/com/ck/ckcollar/app/action/ActionCode.kt
Normal file
182
app/src/main/java/com/ck/ckcollar/app/action/ActionCode.kt
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
package com.ck.ckcollar.app.action
|
||||||
|
|
||||||
|
import com.tt.kit.utils.TTLog
|
||||||
|
|
||||||
|
object ActionCode {
|
||||||
|
//const val BASE_URL = "https://oval-discolor-onshore.ngrok-free.dev";
|
||||||
|
//const val BASE_URL = "https://ragged-parting-unrushed.ngrok-free.dev";
|
||||||
|
//const val BASE_URL = "https://ragged-parting-unrushed.ngrok-free.dev";
|
||||||
|
// const val BASE_URL = "https://ragged-parting-unrushed.ngrok-free.dev";
|
||||||
|
const val BASE_URL = "https://d.chongdunpet.com"
|
||||||
|
const val CUSTOMER_URL = "wss://d.chongdunpet.com/ws/chat?role=customer&token=";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fun getUrl(actionCode: String): String {
|
||||||
|
var url = ""
|
||||||
|
when (actionCode) {
|
||||||
|
"demo" -> url = "/sys/dept/list/enterprise"
|
||||||
|
|
||||||
|
"登录" -> url = "/app/login"
|
||||||
|
"微信登录" -> url = "/app/login/wx"
|
||||||
|
|
||||||
|
"宠物列表" -> url = "/app/pet/list"
|
||||||
|
|
||||||
|
"添加宠物" -> url = "/app/pet"
|
||||||
|
|
||||||
|
"上传照片" -> url = "/minio/upload"
|
||||||
|
|
||||||
|
"上传照片s" -> url = "/minio/uploads"
|
||||||
|
|
||||||
|
"宠物档案" -> url = "/app/pet"
|
||||||
|
|
||||||
|
"编辑宠物" -> url = "/app/pet"
|
||||||
|
|
||||||
|
"删除宠物" -> url = "/app/pet"
|
||||||
|
|
||||||
|
"首页" -> url = "/app/home/data"
|
||||||
|
|
||||||
|
"绑定设备" -> url = "/app/device/bind"
|
||||||
|
|
||||||
|
"切换设备" -> url = "/app/device/switchCurrentPet"
|
||||||
|
|
||||||
|
"解绑设备" -> url = "/app/device/unbind"
|
||||||
|
|
||||||
|
"设备信息" -> url = "/app/device/info"
|
||||||
|
|
||||||
|
"协议" -> url = "/app/setting/pageContent"
|
||||||
|
|
||||||
|
"用户注销检查" -> url = "/app/setting/accountDeleteCheck"
|
||||||
|
|
||||||
|
"用户注销" -> url = "/app/setting/deleteAccount"
|
||||||
|
|
||||||
|
"宠物知识列表" -> url = "/app/health/knowledge/list"
|
||||||
|
|
||||||
|
"宠物知识明细" -> url = "/app/health/knowledge"
|
||||||
|
|
||||||
|
"客服在线状态" -> url = "/app/health/consult/status"
|
||||||
|
|
||||||
|
"会话消息列表" -> url = "/app/health/consult/messages"
|
||||||
|
|
||||||
|
"发送会话消息" -> url = "/app/health/ai/chat"
|
||||||
|
"发送会话消息stream" -> url = "/app/health/ai/chat/stream"
|
||||||
|
|
||||||
|
"发送人工会话消息" -> url = "/app/health/consult/message"
|
||||||
|
|
||||||
|
|
||||||
|
"获取会话消息" -> url = "/app/health/consult/session"
|
||||||
|
|
||||||
|
"商品列表" -> url = "/commodityApp/list/list"
|
||||||
|
|
||||||
|
"商品明细" -> url = "/commodityApp/list"
|
||||||
|
|
||||||
|
"精选好物" -> url = "/commodityApp/list/recommended_slot"
|
||||||
|
"商品分类列表" -> url = "/colcategory/category/app/list"
|
||||||
|
|
||||||
|
"发送验证码" -> url = "/app/sms/send"
|
||||||
|
|
||||||
|
"验证码登录" -> url = "/app/login/sms"
|
||||||
|
|
||||||
|
"注册" -> url = "/app/register"
|
||||||
|
|
||||||
|
"找回密码" -> url = "/app/password/reset"
|
||||||
|
"添加购物车" -> url = "/app/cart/add"
|
||||||
|
"购物车列表" -> url = "/app/cart/list"
|
||||||
|
"购物车数量和合计" -> url = "/app/cart/cartInfo"
|
||||||
|
"购物车全部选中" -> url = "/app/cart/selectAll"
|
||||||
|
"购物车更新数量" -> url = "/app/cart/quantity"
|
||||||
|
"购物车更新选中" -> url = "/app/cart/selected"
|
||||||
|
"购物车删除商品" -> url = "/app/cart"
|
||||||
|
|
||||||
|
"个人资料" -> url = "/app/profile/detail"
|
||||||
|
|
||||||
|
"收货地址列表" -> url = "/user/address/list"
|
||||||
|
"新增收货地址" -> url = "/user/address/add"
|
||||||
|
"收货地址明细" -> url = "/user/address"
|
||||||
|
"编辑收货地址" -> url = "/user/address/edit"
|
||||||
|
"删除收货地址" -> url = "/user/address"
|
||||||
|
"设置默认地址" -> url = "/user/address/setDefault"
|
||||||
|
|
||||||
|
"地址标签列表" -> url = "/user/address/label/list"
|
||||||
|
"新增标签" -> url = "/user/address/label/add"
|
||||||
|
"删除标签" -> url = "/user/address/label"
|
||||||
|
"商品种类" -> url = "/colcategory/category/app/list"
|
||||||
|
|
||||||
|
"余额明细列表" -> url = "/app/balance/list"
|
||||||
|
"余额" -> url = "/app/balance/overview"
|
||||||
|
"余额明细" -> url = "/app/balance/detail"
|
||||||
|
|
||||||
|
"充值" -> url = "/app/balance/recharge"
|
||||||
|
"提现" -> url = "/app/balance/withdraw"
|
||||||
|
"修改登录密码" -> url = "/app/setting/loginPassword/change"
|
||||||
|
|
||||||
|
"积分总览" -> url = "/app/points/overview"
|
||||||
|
"积分明细" -> url = "/app/points/list"
|
||||||
|
|
||||||
|
|
||||||
|
"会员信息" -> url = "/app/member/info"
|
||||||
|
"会员套餐列表" -> url = "/app/member/packages"
|
||||||
|
"开通会员" -> url = "/app/member/pay"
|
||||||
|
|
||||||
|
"我的订单" -> url = "/orderApp/list/query"
|
||||||
|
"我的订单明细" -> url = "/orderApp/list/queryDetails"
|
||||||
|
"取消订单" -> url = "/orderApp/list/cancel"
|
||||||
|
"删除订单" -> url = "/orderApp/list/delete"
|
||||||
|
"确认收货" -> url = "/orderItemsApp/list/confirmReceive"
|
||||||
|
"修改收货地址" -> url = "/orderItemsApp/list/updateAddress"
|
||||||
|
"查看物流信息" -> url = "/orderItemsApp/list/logistics"
|
||||||
|
"查看物流信息" -> url = "/orderItemsApp/list/logistics"
|
||||||
|
|
||||||
|
"直接购买确认订单" -> url = "/orderApp/list/confirmDirect"
|
||||||
|
"购物车购买确认订单" -> url = "/orderApp/list/confirm"
|
||||||
|
"下单" -> url = "/app/order/createAndPay"
|
||||||
|
"申请售后" -> url = "/orderItemsApp/list/refund/apply"
|
||||||
|
"售后进度" -> url = "/orderItemsApp/list/refundApply"
|
||||||
|
"物流公司" -> url = "/orderItemsApp/list/enums"
|
||||||
|
"填写快递单号" -> url = "/orderItemsApp/list/refund/returnLogistics"
|
||||||
|
|
||||||
|
|
||||||
|
"AI拍照识别" -> url = "/app/home/ai/pet-recognition"
|
||||||
|
"消息通知列表" -> url = "/app/notice/list"
|
||||||
|
"读取消息" -> url = "/app/notice/markRead"
|
||||||
|
"读取全部消息" -> url = "/app/notice/markReadAll"
|
||||||
|
|
||||||
|
|
||||||
|
"意见反馈" -> url = "/app/feedback/submit"
|
||||||
|
"设备退回" -> url = "/app/return/submit"
|
||||||
|
|
||||||
|
"单条余额明细" -> url = "/app/balance/detail"
|
||||||
|
|
||||||
|
"修改支付密码" -> url = "/app/setting/payPassword/change"
|
||||||
|
"找回支付密码" -> url = "/app/setting/payPassword/reset"
|
||||||
|
"查询支付密码状态" -> url = "/app/setting/payPassword/status"
|
||||||
|
"订单支付" -> url = "/app/order/pay"
|
||||||
|
|
||||||
|
|
||||||
|
"修改个人信息" -> url = "/app/profile/update"
|
||||||
|
"修改绑定手机" -> url = "/app/profile/phone/update"
|
||||||
|
|
||||||
|
"押金信息" -> url = "/app/deposit/info"
|
||||||
|
"芝麻授权" -> url = "/app/deposit/free"
|
||||||
|
"退还押金" -> url = "/app/deposit/refund"
|
||||||
|
|
||||||
|
|
||||||
|
"获取我的联系客服会话" -> url = "/app/chat/consult/session"
|
||||||
|
"订单ID获取确认信息" -> url = "/orderApp/list/confirmByOrderId"
|
||||||
|
|
||||||
|
"微信绑定手机" -> url = "/app/wx/bindPhone"
|
||||||
|
"商城轮训图" -> url = "/app/home/bannerMallData"
|
||||||
|
|
||||||
|
"取消退款" -> url = "/orderItemsApp/list/refund/cancel"
|
||||||
|
|
||||||
|
"更新" -> url = "/app/update"
|
||||||
|
"未读消息数量" -> url = "/app/notice/unreadCount"
|
||||||
|
"绑定微信" -> url = "/app/profile/wx/bind"
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
TTLog.e(url)
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
}
|
||||||
37
app/src/main/java/com/ck/ckcollar/app/config/Config.kt
Normal file
37
app/src/main/java/com/ck/ckcollar/app/config/Config.kt
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
package com.ck.ckcollar.app.config
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
|
import org.osmdroid.tileprovider.tilesource.OnlineTileSourceBase
|
||||||
|
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
|
||||||
|
import org.osmdroid.tileprovider.tilesource.XYTileSource
|
||||||
|
import org.osmdroid.util.GeoPoint
|
||||||
|
import org.osmdroid.util.MapTileIndex
|
||||||
|
|
||||||
|
object Config : TileSourceFactory() {
|
||||||
|
|
||||||
|
const val MAP_KEY = "9ada0ca4ea55f17b72ff46c7a88d9225"
|
||||||
|
|
||||||
|
// 默认GeoPoint
|
||||||
|
val defaultGeoPoint = GeoPoint(39.909, 116.39742)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 天地图 有标注电子地图
|
||||||
|
*/
|
||||||
|
var TDTCIA_W: OnlineTileSourceBase = object : XYTileSource(
|
||||||
|
"Tian Di Tu CIA",
|
||||||
|
0, 20, 256, "",
|
||||||
|
arrayOf(
|
||||||
|
"http://t0.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t1.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t2.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t3.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t4.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t5.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t6.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY",
|
||||||
|
"http://t7.tianditu.com/DataServer?T=cia_w&tk=$MAP_KEY"
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
override fun getTileURLString(pMapTileIndex: Long) =
|
||||||
|
("$baseUrl&X=${MapTileIndex.getX(pMapTileIndex)}&Y=${MapTileIndex.getY(pMapTileIndex)}&L=${MapTileIndex.getZoom(pMapTileIndex)}")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,283 @@
|
|||||||
|
package com.ck.ckcollar.app.exception
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Environment
|
||||||
|
import android.os.Looper
|
||||||
|
import android.os.Process
|
||||||
|
import android.util.Log
|
||||||
|
import com.cyclone.shadowsocks.utils.PreferencesUtils
|
||||||
|
import com.tt.kit.utils.ToastHelper
|
||||||
|
import com.umeng.umcrash.UMCrash
|
||||||
|
import com.umeng.umcrash.customlog.UAPMCustomLog
|
||||||
|
import java.io.File
|
||||||
|
import java.io.FileOutputStream
|
||||||
|
import java.io.PrintWriter
|
||||||
|
import java.io.StringWriter
|
||||||
|
import java.net.UnknownHostException
|
||||||
|
import java.text.DateFormat
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.Date
|
||||||
|
import java.lang.Thread.UncaughtExceptionHandler
|
||||||
|
|
||||||
|
class ExceptionHandler : UncaughtExceptionHandler {
|
||||||
|
// 系统默认的UncaughtException处理类
|
||||||
|
private var mDefaultHandler: Thread.UncaughtExceptionHandler? = null
|
||||||
|
|
||||||
|
// 程序的Context对象
|
||||||
|
private var mContext: Context? = null
|
||||||
|
|
||||||
|
// 用来存储设备信息和异常信息
|
||||||
|
private val infos: MutableMap<String?, String?> = HashMap<String?, String?>()
|
||||||
|
|
||||||
|
// 用于格式化日期,作为日志文件名的一部分
|
||||||
|
private val formatter: DateFormat = SimpleDateFormat("yyyyMMdd_HHmmss")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
fun init(context: Context) {
|
||||||
|
mContext = context
|
||||||
|
// 获取系统默认的UncaughtException处理器
|
||||||
|
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler()
|
||||||
|
// 设置该CrashHandler为程序的默认处理器
|
||||||
|
Thread.setDefaultUncaughtExceptionHandler(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当UncaughtException发生时会转入该函数来处理
|
||||||
|
*/
|
||||||
|
override fun uncaughtException(thread: Thread?, ex: Throwable?) {
|
||||||
|
if (!handleException(ex) && mDefaultHandler != null) {
|
||||||
|
// 如果用户没有处理则让系统默认的异常处理器来处理
|
||||||
|
mDefaultHandler!!.uncaughtException(thread, ex)
|
||||||
|
}
|
||||||
|
val crashFileName = saveInfoToSD(ex)
|
||||||
|
// 3. 缓存崩溃日志文件
|
||||||
|
cacheCrashFile(crashFileName)
|
||||||
|
|
||||||
|
Process.killProcess(Process.myPid())
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缓存崩溃日志文件
|
||||||
|
*
|
||||||
|
* @param fileName
|
||||||
|
*/
|
||||||
|
private fun cacheCrashFile(fileName: String?) {
|
||||||
|
PreferencesUtils.putString(mContext!!, "CRASH_FILE_NAME", fileName!!)
|
||||||
|
}
|
||||||
|
|
||||||
|
val crashFile: File
|
||||||
|
/**
|
||||||
|
* 获取崩溃文件名称
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
get() {
|
||||||
|
val crashFileName: String =
|
||||||
|
PreferencesUtils
|
||||||
|
.getString(mContext!!, "CRASH_FILE_NAME", "")!!
|
||||||
|
return File(crashFileName)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存获取的 软件信息,设备信息和出错信息保存在SDcard中
|
||||||
|
*
|
||||||
|
* @param ex
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private fun saveInfoToSD(ex: Throwable?): String? {
|
||||||
|
var fileName: String? = null
|
||||||
|
val sb = StringBuffer()
|
||||||
|
|
||||||
|
for (entry in collectDeviceInfo(mContext!!).entries) {
|
||||||
|
val key = entry.key
|
||||||
|
val value = entry.value
|
||||||
|
sb.append(key).append(" = ").append(value).append("\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// sb.append(obtainExceptionInfo(ex));
|
||||||
|
sb.append("exception").append(" = ").append(getStackTraceString(ex))
|
||||||
|
|
||||||
|
UAPMCustomLog.e("chong_dun",sb.toString())
|
||||||
|
UMCrash.generateCustomLog(ex,"chongdunException");
|
||||||
|
if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
|
||||||
|
val dir = File(
|
||||||
|
mContext!!.getFilesDir().toString() + File.separator + "crash" + File.separator
|
||||||
|
)
|
||||||
|
// 先删除之前的异常信息
|
||||||
|
if (dir.exists()) {
|
||||||
|
deleteDir(dir)
|
||||||
|
}
|
||||||
|
// 再从新创建文件夹
|
||||||
|
if (!dir.exists()) {
|
||||||
|
dir.mkdir()
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
fileName =
|
||||||
|
dir.toString() + File.separator + SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(
|
||||||
|
Date()
|
||||||
|
) + ".txt"
|
||||||
|
val fos = FileOutputStream(fileName)
|
||||||
|
fos.write(sb.toString().toByteArray())
|
||||||
|
fos.flush()
|
||||||
|
fos.close()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fileName
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统未捕捉的错误信息
|
||||||
|
*
|
||||||
|
* @param throwable
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private fun obtainExceptionInfo(throwable: Throwable): String? {
|
||||||
|
val stringWriter = StringWriter()
|
||||||
|
val printWriter = PrintWriter(stringWriter)
|
||||||
|
throwable.printStackTrace(printWriter)
|
||||||
|
printWriter.close()
|
||||||
|
return stringWriter.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
|
||||||
|
*
|
||||||
|
* @param ex
|
||||||
|
*
|
||||||
|
* @return true:如果处理了该异常信息;否则返回false.
|
||||||
|
*/
|
||||||
|
private fun handleException(ex: Throwable?): Boolean {
|
||||||
|
if (ex == null) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 使用Toast来显示异常信息
|
||||||
|
object : Thread() {
|
||||||
|
override fun run() {
|
||||||
|
Looper.prepare()
|
||||||
|
//new TuiChuHttp(mContext).execute();
|
||||||
|
ToastHelper.show(mContext!!, "程序出现异常,自行重新启动")
|
||||||
|
// Toast.makeText(mContext, "程序出现异常,自行重新启动", Toast.LENGTH_SHORT).show();
|
||||||
|
Looper.loop()
|
||||||
|
}
|
||||||
|
}.start()
|
||||||
|
|
||||||
|
|
||||||
|
// 收集设备参数信息
|
||||||
|
// collectDeviceInfo(mContext);
|
||||||
|
|
||||||
|
// 保存日志文件
|
||||||
|
val str = saveCrashInfo2File(ex)
|
||||||
|
Log.e("错误日志:::", str)
|
||||||
|
// submitLog(str);
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收集设备参数信息
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
*/
|
||||||
|
fun collectDeviceInfo(ctx: Context): MutableMap<String?, String?> {
|
||||||
|
try {
|
||||||
|
val pm = ctx.getPackageManager()
|
||||||
|
val pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES)
|
||||||
|
if (pi != null) {
|
||||||
|
val versionName: String = (if (pi.versionName == null) "null" else pi.versionName)!!
|
||||||
|
infos.put("apkversion", versionName)
|
||||||
|
infos.put("devicename", Build.BRAND)
|
||||||
|
infos.put("devicetype", Build.MODEL)
|
||||||
|
infos.put("android", Build.VERSION.RELEASE)
|
||||||
|
infos.put("time", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date()))
|
||||||
|
}
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
Log.e(TAG, "an error occured when collect package info", e)
|
||||||
|
}
|
||||||
|
return infos
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存错误信息到文件中
|
||||||
|
*
|
||||||
|
* @param ex
|
||||||
|
*
|
||||||
|
* @return 返回文件名称, 便于将文件传送到服务器
|
||||||
|
*/
|
||||||
|
private fun saveCrashInfo2File(ex: Throwable?): String {
|
||||||
|
val sb = StringBuffer()
|
||||||
|
for (entry in infos.entries) {
|
||||||
|
val key = entry.key
|
||||||
|
val value = entry.value
|
||||||
|
sb.append("[" + key + ", " + value + "]\n")
|
||||||
|
}
|
||||||
|
sb.append("\n" + getStackTraceString(ex))
|
||||||
|
return sb.toString() //sb接到完成异常报告,可在此断点获取错误信息
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val TAG: String = ExceptionHandler::class.java.getCanonicalName()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取实例 ,单例模式
|
||||||
|
*/
|
||||||
|
// CrashHandler实例
|
||||||
|
val instance: ExceptionHandler = ExceptionHandler()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归删除目录下的所有文件及子目录下所有文件
|
||||||
|
*
|
||||||
|
* @param dir 将要删除的文件目录
|
||||||
|
*
|
||||||
|
* @return boolean Returns "true" if all deletions were successful. If a deletion fails, the
|
||||||
|
* method stops attempting to delete and returns "false".
|
||||||
|
*/
|
||||||
|
fun deleteDir(dir: File): Boolean {
|
||||||
|
if (dir.isDirectory()) {
|
||||||
|
val children = dir.list()
|
||||||
|
// 递归删除目录中的子目录下
|
||||||
|
for (i in children!!.indices) {
|
||||||
|
val success = deleteDir(File(dir, children[i]))
|
||||||
|
if (!success) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 目录此时为空,可以删除
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取捕捉到的异常的字符串
|
||||||
|
*/
|
||||||
|
fun getStackTraceString(tr: Throwable?): String? {
|
||||||
|
if (tr == null) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
var t: Throwable? = tr
|
||||||
|
while (t != null) {
|
||||||
|
if (t is UnknownHostException) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
t = t.cause
|
||||||
|
}
|
||||||
|
|
||||||
|
val sw = StringWriter()
|
||||||
|
val pw = PrintWriter(sw)
|
||||||
|
tr.printStackTrace(pw)
|
||||||
|
return sw.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ck.ckcollar.app.listenner
|
||||||
|
|
||||||
|
import com.ck.ckcollar.app.model.HealthNoteModel
|
||||||
|
|
||||||
|
interface OnItemClickListenner {
|
||||||
|
fun onClick(pos : Int,model : Any)
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ck.ckcollar.app.listenner
|
||||||
|
|
||||||
|
import com.ck.ckcollar.app.model.HealthNoteModel
|
||||||
|
|
||||||
|
interface OnItemLongClickListenner {
|
||||||
|
fun onClick(pos : Int,model : Any)
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ck.ckcollar.app.listenner
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义接口,用于给密码输入完成添加回掉事<E68E89>?
|
||||||
|
*/
|
||||||
|
interface OnPasswordInputFinish {
|
||||||
|
fun inputFinish();
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class AIMessageModel: CkBaseModel() {
|
||||||
|
var answer :String? = ""
|
||||||
|
var chatId :String? = ""
|
||||||
|
var conversationId :String? = ""
|
||||||
|
|
||||||
|
}
|
||||||
12
app/src/main/java/com/ck/ckcollar/app/model/AIPhotoModel.kt
Normal file
12
app/src/main/java/com/ck/ckcollar/app/model/AIPhotoModel.kt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class AIPhotoModel : CkBaseModel() {
|
||||||
|
var chatId: String? = "" // 聊天ID
|
||||||
|
var species: String? = "" // 物种
|
||||||
|
var variety: String? = "" // 品种
|
||||||
|
var rawAnswer: String? = "" // 原始回答
|
||||||
|
var conversationId: String? = "" // 会话ID
|
||||||
|
var imageUrl: String? = "" // 图片URL
|
||||||
|
var speciesCode: String? = "" // 物种编码
|
||||||
|
var confidence: String? = "" // 置信度
|
||||||
|
}
|
||||||
27
app/src/main/java/com/ck/ckcollar/app/model/AddressModel.kt
Normal file
27
app/src/main/java/com/ck/ckcollar/app/model/AddressModel.kt
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class AddressModel {
|
||||||
|
var addressTag: String? = "" // 地址标签
|
||||||
|
var areaName: String? = "" // 区名
|
||||||
|
var cityName: String? = "" // 城市名
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var customTag: String? = "" // 自定义标签标识
|
||||||
|
var detailAddress: String? = "" // 详细地址
|
||||||
|
var fullAddress: String? = "" // 完整地址
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var isDefault: String? = "" // 是否默认地址
|
||||||
|
var postalCode: String? = "" // 邮政编码
|
||||||
|
var provinceName: String? = "" // 省份名称
|
||||||
|
var receiverName: String? = "" // 收货人姓名
|
||||||
|
var receiverPhone: String? = "" // 收货人电话
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var userAddressLables: String? = "" // 用户地址标签
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
|
||||||
|
|
||||||
|
var colUserAddressLabel : TagModel? = null
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class AfterSalesPrograss {
|
||||||
|
var applyStatus: String? = "" // 申请状态 case "0": return "待审核case "1": return "审核通过 case "2": return "审核拒绝"
|
||||||
|
var applyTime: String? = "" // 申请时间
|
||||||
|
var areaName: String? = "" // 区名
|
||||||
|
var attachmentUrls: String? = "" // 附件URL
|
||||||
|
var auditResult: String? = "" // 审核结果
|
||||||
|
var auditTime: String? = "" // 审核时间
|
||||||
|
var cityName: String? = "" // 城市名
|
||||||
|
var colLogistics: String? = "" // 物流信息
|
||||||
|
var colOrderItems: String? = "" // 订单商品列表
|
||||||
|
var colOrderProgresses: List<OrderProgress>? = null // 订单进度列表
|
||||||
|
var commodityState: String? = "" // 商品状态
|
||||||
|
var confirmInfo: String? = "" // 确认信息
|
||||||
|
var confirmSign: String? = "" // 确认标识
|
||||||
|
var confirmTime: String? = "" // 确认时间
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var currentStage: Int = 0 // 当前阶段
|
||||||
|
var deliveryMethod: String? = "" // 配送方式
|
||||||
|
var detailAddress: String? = "" // 详细地址
|
||||||
|
var discountAmount: Double = 0.0 // 优惠金额
|
||||||
|
var exchangeItemId: String? = "" // 换货商品ID
|
||||||
|
var exchangeLogisticsNo: String? = "" // 换货物流单号
|
||||||
|
var exchangecolLogistics: String? = "" // 换货物流信息
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var logisticsCode: String? = "" // 物流编码
|
||||||
|
var logisticsNo: String? = "" // 物流单号
|
||||||
|
var orderId: Int = 0 // 订单ID
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var postalCode: String? = "" // 邮政编码
|
||||||
|
var provinceName: String? = "" // 省份名称
|
||||||
|
var quantity: Int = 0 // 数量
|
||||||
|
var receiverName: String? = "" // 收货人姓名
|
||||||
|
var receiverPhone: String? = "" // 收货人电话
|
||||||
|
var refundAmount: Double = 0.0 // 退款金额
|
||||||
|
var refundReason: String? = "" // 退款原因
|
||||||
|
var refundType: String? = "" // 退款类型
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var returnItemId: String? = "" // 退货商品ID
|
||||||
|
var returnLogisticsNo: String? = "" // 退货物流单号
|
||||||
|
var returncolLogistics: String? = "" // 退货物流信息
|
||||||
|
var shipmentSign: String? = "" // 发货标识
|
||||||
|
var shipmentTime: String? = "" // 发货时间
|
||||||
|
var subtotalAmount: Double = 0.0 // 小计金额
|
||||||
|
var supplementInfo: String? = "" // 补充信息
|
||||||
|
var unitPrice: Double = 0.0 // 单价
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
var userName: String? = "" // 用户姓名
|
||||||
|
var userPhone: String? = "" // 用户电话
|
||||||
|
|
||||||
|
class OrderProgress {
|
||||||
|
var completeTime: String? = "" // 完成时间
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var orderId: Int = 0 // 订单ID
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var stageName: String? = "" // 阶段名称
|
||||||
|
var stageNo: Int = 0 // 阶段编号
|
||||||
|
var stageType: String? = "" // 阶段类型
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class AgreementModel : CkBaseModel() {
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var pageMsg: String? = "" // 页面内容
|
||||||
|
var pageType: String? = "" // 页面类型
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class BalanceModle : CkBaseModel() {
|
||||||
|
|
||||||
|
var balance : Double = 0.0
|
||||||
|
var totalExpense : Double = 0.0
|
||||||
|
var totalRecharge : Double = 0.0
|
||||||
|
}
|
||||||
14
app/src/main/java/com/ck/ckcollar/app/model/BannarModel.kt
Normal file
14
app/src/main/java/com/ck/ckcollar/app/model/BannarModel.kt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class BannarModel : CkBaseModel(){
|
||||||
|
var bannerStatus: String? = ""
|
||||||
|
var bannerUrl: String? = ""
|
||||||
|
var createBy: String? = ""
|
||||||
|
var createTime: String? = ""
|
||||||
|
var id: Int = 0
|
||||||
|
var pageName: String? = ""
|
||||||
|
var remark: String? = ""
|
||||||
|
var sortOrder: Int = 0
|
||||||
|
var updateBy: String? = ""
|
||||||
|
var updateTime: String? = ""
|
||||||
|
}
|
||||||
15
app/src/main/java/com/ck/ckcollar/app/model/CancelModel.kt
Normal file
15
app/src/main/java/com/ck/ckcollar/app/model/CancelModel.kt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class CancelModel : CkBaseModel() {
|
||||||
|
var allPassed: Boolean = false // 是否全部通过
|
||||||
|
var conditions: List<Condition>? = null // 注销条件列表
|
||||||
|
var phoneNumber: String? = "" // 手机号
|
||||||
|
|
||||||
|
var assetsUncleared: Boolean = false //账户是否仍有未结清的余额或积分
|
||||||
|
}
|
||||||
|
|
||||||
|
class Condition {
|
||||||
|
var name: String? = "" // 条件名称
|
||||||
|
var passed: Boolean = false // 是否通过
|
||||||
|
var message: String? = "" // 提示消息
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName
|
||||||
|
import java.io.Serializable
|
||||||
|
open class CkBaseModel : Serializable {
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class CollarModel {
|
||||||
|
var name : String? = ""
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class CollarTypeModel : CkBaseModel(){
|
||||||
|
|
||||||
|
|
||||||
|
var total : Int = 0
|
||||||
|
var rows : List<TypeDataModel> = listOf()
|
||||||
|
class TypeDataModel : CkBaseModel(){
|
||||||
|
|
||||||
|
var createBy: String = ""
|
||||||
|
var createTime: String = ""
|
||||||
|
var updateBy: String = ""
|
||||||
|
var updateTime: String = ""
|
||||||
|
var remark: String = ""
|
||||||
|
var id: Long = 0
|
||||||
|
var customerId: Int = 0
|
||||||
|
var patName: String = ""
|
||||||
|
var patSpecies: String = ""
|
||||||
|
var patVariety: String = ""
|
||||||
|
var patAge: String = ""
|
||||||
|
var patHeight: String = ""
|
||||||
|
var patWeight: String = ""
|
||||||
|
var patBodytype: String = ""
|
||||||
|
var patColor: String = ""
|
||||||
|
var patProphylactic: String = ""
|
||||||
|
var patUser: String = ""
|
||||||
|
var collNum: String = ""
|
||||||
|
var patPhoto: String = ""
|
||||||
|
var tenantId: String = ""
|
||||||
|
var createDept: Int = 0
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ConfirmOrderModel {
|
||||||
|
var address: AddressModel? = null // 地址信息
|
||||||
|
var addressId: Int = 0 // 地址ID
|
||||||
|
var availablePoints: Double = 0.0 // 可用积分
|
||||||
|
var buyerNote: String? = "" // 买家备注
|
||||||
|
var discountAmount: Double = 0.0 // 优惠金额
|
||||||
|
var freightAmount: Double = 0.0 // 运费金额
|
||||||
|
var goodsTotalAmount: Double = 0.0 // 商品总金额
|
||||||
|
var items: List<OrderItem>? = null // 订单商品列表
|
||||||
|
var memberAmount: Double = 0.0 // 会员价金额
|
||||||
|
var memberDiscount: Double = 0.0 // 会员折扣金额
|
||||||
|
var orderId: Int = 0 // 订单ID
|
||||||
|
var orderSource: String? = "" // 订单来源
|
||||||
|
var payAmount: Double = 0.0 // 支付金额
|
||||||
|
var payAmounts: String? = "" // 支付金额列表
|
||||||
|
var payType: String? = "" // 支付方式
|
||||||
|
var payTypes: String? = "" // 支付方式列表
|
||||||
|
var pointsDeduction: Double = 0.0 // 积分抵扣金额
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
var isPoint : Int = 0 //积分是否足够(0足够1不足)
|
||||||
|
|
||||||
|
class OrderItem {
|
||||||
|
var cartId: Int = 0 // 购物车ID
|
||||||
|
var comCover: String? = "" // 商品封面图
|
||||||
|
var comId: Int = 0 // 商品ID
|
||||||
|
var comName: String? = "" // 商品名称
|
||||||
|
var comNum: Long = 0L // 商品编号
|
||||||
|
var comPrice: Double = 0.0 // 商品价格
|
||||||
|
var memPrice: Double = 0.0 // 会员价格
|
||||||
|
var memSubtotal: Double = 0.0 // 会员价小计金额
|
||||||
|
var quantity: Int = 0 // 数量
|
||||||
|
var specId: Int = 0 // 规格ID
|
||||||
|
var specName: String? = "" // 规格名称
|
||||||
|
var subtotal: Double = 0.0 // 小计金额
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddressModel {
|
||||||
|
var areaName: String? = "" // 区名
|
||||||
|
var cityName: String? = "" // 城市名
|
||||||
|
var detailAddress: String? = "" // 详细地址
|
||||||
|
var fullAddress: String? = "" // 完整地址
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var postalCode: String? = "" // 邮政编码
|
||||||
|
var provinceName: String? = "" // 省份名称
|
||||||
|
var receiverName: String? = "" // 收货人姓名
|
||||||
|
var receiverPhone: String? = "" // 收货人电话
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class CreateOrderModel : CkBaseModel() {
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
var orderId: Int = 0 // 订单ID
|
||||||
|
var addressId: Int = 0 // 地址ID
|
||||||
|
var orderSource: String? = "" // 订单来源
|
||||||
|
var address: OrderAddress? = null // 收货地址
|
||||||
|
var items: List<OrderItem>? = null // 订单商品列表
|
||||||
|
var goodsTotalAmount: Double = 0.0 // 商品总金额
|
||||||
|
var memberDiscount: Double = 0.0 // 会员折扣金额
|
||||||
|
var memberAmount: Double = 0.0 // 会员价金额
|
||||||
|
var freightAmount: Double = 0.0 // 运费金额
|
||||||
|
var discountAmount: Double = 0.0 // 优惠金额
|
||||||
|
var availablePoints: Double = 0.0 // 可用积分
|
||||||
|
var pointsDeduction: Double = 0.0 // 积分抵扣金额
|
||||||
|
var payAmount: Double = 0.0 // 实付金额
|
||||||
|
var payType: String? = "" // 支付方式
|
||||||
|
var buyerNote: String? = "" // 买家备注
|
||||||
|
|
||||||
|
class OrderAddress {
|
||||||
|
var id: Int = 0 // 地址ID
|
||||||
|
var receiverName: String? = "" // 收货人姓名
|
||||||
|
var receiverPhone: String? = "" // 收货人电话
|
||||||
|
var provinceName: String? = "" // 省份名称
|
||||||
|
var cityName: String? = "" // 城市名
|
||||||
|
var areaName: String? = "" // 区名
|
||||||
|
var detailAddress: String? = "" // 详细地址
|
||||||
|
var postalCode: String? = "" // 邮政编码
|
||||||
|
var fullAddress: String? = "" // 完整地址
|
||||||
|
}
|
||||||
|
|
||||||
|
class OrderItem {
|
||||||
|
var cartId: Int = 0 // 购物车ID
|
||||||
|
var comId: Int = 0 // 商品ID
|
||||||
|
var comNum: Long = 0L // 商品编号
|
||||||
|
var comName: String? = "" // 商品名称
|
||||||
|
var comCover: String? = "" // 商品封面图
|
||||||
|
var comPrice: Double = 0.0 // 商品价格
|
||||||
|
var memPrice: Double = 0.0 // 会员价格
|
||||||
|
var quantity: Int = 0 // 数量
|
||||||
|
var specName: String? = "" // 规格名称
|
||||||
|
var specId: Int = 0 // 规格ID
|
||||||
|
var subtotal: Double = 0.0 // 小计金额
|
||||||
|
var memSubtotal: Double = 0.0 // 会员价小计金额
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class CustomerMessageModel {
|
||||||
|
var total : Int = 0
|
||||||
|
var rows: List<MessageItemModel>? = null
|
||||||
|
|
||||||
|
class MessageItemModel {
|
||||||
|
var content: String? = "" // 消息内容
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var customerId: Int = 0 // 客户ID
|
||||||
|
var delFlag: String? = "" // 删除标记
|
||||||
|
var isRead: String? = "" // 是否已读
|
||||||
|
var msgId: Int = 0 // 消息ID
|
||||||
|
var readTime: String? = "" // 读取时间
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var senderAvatar: String? = "" // 发送者头像
|
||||||
|
var senderId: Int = 0 // 发送者ID
|
||||||
|
var senderName: String? = "" // 发送者名称
|
||||||
|
var senderType: String? = "" // 发送者类型
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
|
||||||
|
var url : String? = ""
|
||||||
|
|
||||||
|
var uuid : String? = ""
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class CustomerStatusModel : CkBaseModel(){
|
||||||
|
|
||||||
|
var tip : String? = null
|
||||||
|
var agentOnline : Boolean =false
|
||||||
|
|
||||||
|
var servicePhone :String? = ""
|
||||||
|
|
||||||
|
var serviceStartTime : String? = ""
|
||||||
|
var serviceEndTime : String? = ""
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class DepositModel : CkBaseModel(){
|
||||||
|
|
||||||
|
var depositType: String? = "" // 押金类型
|
||||||
|
var outOrderNo: String? = "" // 外部订单号
|
||||||
|
var orderStr: String? = "" // 订单字符串
|
||||||
|
var amount: Double = 0.0 // 金额
|
||||||
|
}
|
||||||
35
app/src/main/java/com/ck/ckcollar/app/model/ExpressModel.kt
Normal file
35
app/src/main/java/com/ck/ckcollar/app/model/ExpressModel.kt
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ExpressModel {
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var params: Map<String, Any?>? = null // 参数
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var orderId: Int = 0 // 订单ID
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var logisticsCode: String? = "" // 物流编码
|
||||||
|
var logisticsCompanyName: String? = "" // 物流公司名称
|
||||||
|
var logisticsNo: String? = "" // 物流单号
|
||||||
|
var logisticsStatus: String? = "" // 物流状态
|
||||||
|
var signTime: String? = "" // 签收时间
|
||||||
|
var deliveryMethod: String? = "" // 配送方式
|
||||||
|
var routeMapUrl: String? = "" // 路线地图URL
|
||||||
|
var logisticsPhone: String? = "" // 物流电话
|
||||||
|
var colLogisticsInfos: List<ColLogisticsInfo>? = null // 物流信息列表
|
||||||
|
|
||||||
|
class ColLogisticsInfo {
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var params: Map<String, Any?>? = null // 参数
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var logisticsId: Int = 0 // 物流ID
|
||||||
|
var logisticsTime: String? = "" // 物流时间
|
||||||
|
var logisticsDesc: String? = "" // 物流描述
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class HealthNoteModel : CkBaseModel(){
|
||||||
|
var total : Int = 0
|
||||||
|
var rows : List<NoteModel> = listOf()
|
||||||
|
class NoteModel : CkBaseModel(){
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var knowledgeMsg: String? = "" // 知识内容
|
||||||
|
var imageUrl: String? = "" // 图片
|
||||||
|
var pageName: String? = "" // 页面名称
|
||||||
|
var pageStatus: String? = "" // 页面状态
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var sortOrder: Int = 0 // 排序顺序
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
46
app/src/main/java/com/ck/ckcollar/app/model/HomeModel.kt
Normal file
46
app/src/main/java/com/ck/ckcollar/app/model/HomeModel.kt
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class HomeModel : CkBaseModel() {
|
||||||
|
|
||||||
|
var banners: List<BannarModel>? = listOf()
|
||||||
|
|
||||||
|
var equipment: EquipmentModel? = null
|
||||||
|
|
||||||
|
var lowBattery: Boolean? = false
|
||||||
|
|
||||||
|
class EquipmentModel : CkBaseModel() {
|
||||||
|
var collNum: String? = "" // 设备编号
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createDept: String? = "" // 创建部门
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var custName: String? = "" // 客户名称
|
||||||
|
var customerId: Int = 0 // 客户ID
|
||||||
|
var equStatus: String? = "" // 设备状态
|
||||||
|
var equUpdatetime: String? = "" // 设备更新时间
|
||||||
|
var firmVersion: String? = "" // 固件版本
|
||||||
|
var healthVitality: String? = "" // 健康活力值
|
||||||
|
var id: Int = 0 // 设备ID
|
||||||
|
var lastLocation: String? = "" // 最后位置
|
||||||
|
var latitude: Double = 0.0 // 纬度
|
||||||
|
var longitude: Double = 0.0 // 经度
|
||||||
|
var mileage: Double = 0.0 // 里程
|
||||||
|
var patId: Int = 0 // 宠物ID
|
||||||
|
var patName: String? = "" // 宠物名称
|
||||||
|
var powerLevel: String? = "" // 电量等级
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var steps: String? = "" // 步数
|
||||||
|
var tenantId: String? = "" // 租户ID
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
是否无法接收经纬度(即无法定位):设备当前拿不到有效GPS(如进入遮挡/地下/盲区),
|
||||||
|
|
||||||
|
或已离线/超时无法上报位置。前端可在该值为 true 时展示
|
||||||
|
|
||||||
|
“当前位置无法接收信号,最后一次定位是:xxx”
|
||||||
|
*/
|
||||||
|
var noSignal : Boolean = false //
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ImageModel {
|
||||||
|
|
||||||
|
var isAdd : Boolean = false
|
||||||
|
var path : String? = ""
|
||||||
|
var url : String? = ""
|
||||||
|
|
||||||
|
}
|
||||||
28
app/src/main/java/com/ck/ckcollar/app/model/JsonBean.kt
Normal file
28
app/src/main/java/com/ck/ckcollar/app/model/JsonBean.kt
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
import com.contrarywind.interfaces.IPickerViewData
|
||||||
|
|
||||||
|
class JsonBean : IPickerViewData {
|
||||||
|
/**
|
||||||
|
* name : 省份
|
||||||
|
* city : [{"name":"北京市","area":["东城区","西城区","崇文区","宣武区","朝阳区"]}]
|
||||||
|
*/
|
||||||
|
var name: String? = null
|
||||||
|
var city: MutableList<CityBean?>? = null
|
||||||
|
|
||||||
|
// 实现 IPickerViewData 接口,
|
||||||
|
// 这个用来显示在PickerView上面的字符串,
|
||||||
|
// PickerView会通过IPickerViewData获取getPickerViewText方法显示出来。
|
||||||
|
override fun getPickerViewText(): String? {
|
||||||
|
return this.name
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class CityBean {
|
||||||
|
/**
|
||||||
|
* name : 城市
|
||||||
|
* area : ["东城区","西城区","崇文区","昌平区"]
|
||||||
|
*/
|
||||||
|
var name: String? = null
|
||||||
|
var area: MutableList<String?>? = null
|
||||||
|
}
|
||||||
|
}
|
||||||
12
app/src/main/java/com/ck/ckcollar/app/model/LoginModel.kt
Normal file
12
app/src/main/java/com/ck/ckcollar/app/model/LoginModel.kt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class LoginModel{
|
||||||
|
|
||||||
|
var token : String ? = ""
|
||||||
|
|
||||||
|
var needBindPhone : Boolean = false
|
||||||
|
|
||||||
|
var wxAvatar : String? = ""
|
||||||
|
var wxNickname : String? = ""
|
||||||
|
var openid : String? = ""
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class LogisticsModel : CkBaseModel() {
|
||||||
|
var code : String? = ""
|
||||||
|
var name : String? = ""
|
||||||
|
}
|
||||||
36
app/src/main/java/com/ck/ckcollar/app/model/MemberModel.kt
Normal file
36
app/src/main/java/com/ck/ckcollar/app/model/MemberModel.kt
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class MemberModel {
|
||||||
|
var balance: Double = 0.0 // 余额
|
||||||
|
var deadlineTime: String? = "" // 截止时间
|
||||||
|
var isMember: Boolean = false // 是否会员
|
||||||
|
var points: Double = 0.0 // 积分
|
||||||
|
var registrationTime: String? = "" // 注册时间
|
||||||
|
var orderStr: String? = "" // 订单字符串
|
||||||
|
var amount: Double = 0.0 // 金额
|
||||||
|
var payType: String? = "" // 支付方式
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var order: MemberOrder? = null // 订单信息
|
||||||
|
|
||||||
|
class MemberOrder {
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var durationMonths: Int = 0 // 持续月份数
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var memberEndTime: String? = "" // 会员结束时间
|
||||||
|
var memberStartTime: String? = "" // 会员开始时间
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var orderStatus: Int = 0 // 订单状态
|
||||||
|
var packageId: Int = 0 // 套餐ID
|
||||||
|
var packageName: String? = "" // 套餐名称
|
||||||
|
var payAmount: Double = 0.0 // 支付金额
|
||||||
|
var payTime: String? = "" // 支付时间
|
||||||
|
var payType: String? = "" // 支付方式
|
||||||
|
var placeTime: String? = "" // 下单时间
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var transactionId: String? = "" // 交易ID
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class MemberPriceModel {
|
||||||
|
var actualPrice: Double = 0.0 // 实际价格
|
||||||
|
var durationMonths: Int = 0 // 持续月份数
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var memDesc: String? = "" // 会员描述
|
||||||
|
var packageName: String? = "" // 套餐名称
|
||||||
|
var price: Double = 0.0 // 价格
|
||||||
|
}
|
||||||
17
app/src/main/java/com/ck/ckcollar/app/model/MessageModel.kt
Normal file
17
app/src/main/java/com/ck/ckcollar/app/model/MessageModel.kt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class MessageModel : CkBaseModel() {
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
var noticeType: String? = "" // 通知类型
|
||||||
|
var noticeTitle: String? = "" // 通知标题
|
||||||
|
var noticeContent: String? = "" // 通知内容
|
||||||
|
var businessType: String? = "" // 业务类型
|
||||||
|
var businessId: String? = "" // 业务ID
|
||||||
|
var isRead: Int = 0 // 是否已读
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
}
|
||||||
155
app/src/main/java/com/ck/ckcollar/app/model/OrderModel.kt
Normal file
155
app/src/main/java/com/ck/ckcollar/app/model/OrderModel.kt
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
import com.ck.ckcollar.app.R
|
||||||
|
import com.ck.ckcollar.app.ui.act.order.AfterSalesActivity
|
||||||
|
import com.ck.ckcollar.app.ui.act.order.AfterSalesProgressActivity
|
||||||
|
import com.ck.ckcollar.app.ui.act.order.InputLogisticsNumActivity
|
||||||
|
import com.ck.ckcollar.app.ui.act.order.LogisticsInfoActivity
|
||||||
|
import com.ck.ckcollar.app.ui.act.setting.AddressActivity
|
||||||
|
import com.ck.ckcollar.app.ui.dialog.CKAlertDialog
|
||||||
|
import com.ck.ckcollar.app.utils.networkone.ICallback
|
||||||
|
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
|
||||||
|
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
|
||||||
|
import com.ck.ckcollar.app.utils.networkone.model.TTRequestParam
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.tt.kit.model.Data
|
||||||
|
import com.tt.kit.model.DataCollection
|
||||||
|
|
||||||
|
class OrderModel {
|
||||||
|
|
||||||
|
var total : Int = 0
|
||||||
|
var rows : List<Order>? = null
|
||||||
|
|
||||||
|
class Order{
|
||||||
|
var buyerNote: String? = "" // 买家备注
|
||||||
|
// var colLogistics: List<ColLogistics>? = null // 物流信息
|
||||||
|
var colOrderItems: List<OrderItem>? = null // 订单商品列表
|
||||||
|
// var colOrderProgressList: String? = "" // 订单进度列表
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var createTimeScope: String? = "" // 创建时间范围
|
||||||
|
var currentStage: Int = 0 // 当前阶段
|
||||||
|
var delFlag: String? = "" // 删除标记
|
||||||
|
var deliveryType: String? = "" // 配送类型
|
||||||
|
var discountAmount: Double = 0.0 // 优惠金额
|
||||||
|
var finishTime: String? = "" // 完成时间
|
||||||
|
var freightAmount: Double = 0.0 // 运费金额
|
||||||
|
var goodsTotalAmount: Double = 0.0 // 商品总金额
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var integral: Double = 0.0 // 积分
|
||||||
|
var lastLoginTime: String? = "" // 最后登录时间
|
||||||
|
var nickname: String? = "" // 昵称
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var orderSource: String? = "" // 订单来源
|
||||||
|
/**
|
||||||
|
* 0待付款 1待发货 2已发货 3已收货 4已完成 5已关闭 6已取消 7待审核 8已退款 9退款中 10拒绝退款
|
||||||
|
*/
|
||||||
|
var orderStatus: Int = 0 // 订单状态
|
||||||
|
var orderType: String? = "" // 订单类型
|
||||||
|
var packageId: String? = "" // 套餐ID
|
||||||
|
var payAmount: Double = 0.0 // 支付金额
|
||||||
|
var payTime: String? = "" // 支付时间
|
||||||
|
var payType: String? = "" // 支付方式
|
||||||
|
var placeTime: String? = "" // 下单时间
|
||||||
|
var placeTimeArr: String? = "" // 下单时间数组
|
||||||
|
var receiveTime: String? = "" // 收货时间
|
||||||
|
var receiverAddress: String? = "" // 收货地址
|
||||||
|
var receiverName: String? = "" // 收货人姓名
|
||||||
|
var receiverPhone: String? = "" // 收货人电话
|
||||||
|
var registerTime: String? = "" // 注册时间
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var shipTime: String? = "" // 发货时间
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var userAge: String? = "" // 用户年龄
|
||||||
|
var userGender: Int = 0 // 用户性别
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
var userName: String? = "" // 用户姓名
|
||||||
|
var userPhone: String? = "" // 用户电话
|
||||||
|
var shopName: String? = "" // 商店名称
|
||||||
|
|
||||||
|
|
||||||
|
var colRefundApply : RefundApply? = null //退货信息
|
||||||
|
|
||||||
|
var islogisticsNo :String? = null // 0未填写1已填写
|
||||||
|
}
|
||||||
|
class OrderItem {
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var deliveryStatus: String? = "" // 配送状态
|
||||||
|
var discountAmount: Double = 0.0 // 优惠金额
|
||||||
|
var goodsId: Int = 0 // 商品ID
|
||||||
|
var goodsImg: String? = "" // 商品图片
|
||||||
|
var goodsName: String? = "" // 商品名称
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var orderId: Int = 0 // 订单ID
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var quantity: Int = 0 // 数量
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var specId: Int = 0 // 规格ID
|
||||||
|
var specInfo: String? = "" // 规格信息
|
||||||
|
var subtotalAmount: Double = 0.0 // 小计金额
|
||||||
|
var unitPrice: Double = 0.0 // 单价
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物流信息表
|
||||||
|
*/
|
||||||
|
class ColLogistics {
|
||||||
|
/**
|
||||||
|
* 创建者
|
||||||
|
*/
|
||||||
|
var createBy: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
var createTime: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID
|
||||||
|
*/
|
||||||
|
private var id: Long = 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物流
|
||||||
|
*/
|
||||||
|
var logisticsCode: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单ID
|
||||||
|
*/
|
||||||
|
var orderId: Long = 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单号
|
||||||
|
*/
|
||||||
|
var orderNo: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
var remark: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新者
|
||||||
|
*/
|
||||||
|
var updateBy: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
var updateTime: String? = null
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class RefundApply{
|
||||||
|
var id: Int = 0
|
||||||
|
var applyStatus : String? = ""
|
||||||
|
var returnLogisticsNo : String? = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class PayOrderModel : CkBaseModel(){
|
||||||
|
var orderStr: String? = "" // 订单字符串
|
||||||
|
var amount: String? = "" // 金额
|
||||||
|
var orderNo: String? = "" // 订单编号
|
||||||
|
var info : String? = ""
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class PayPasswordStatus : CkBaseModel(){
|
||||||
|
|
||||||
|
var isSet : Boolean = false
|
||||||
|
var status : String? = ""
|
||||||
|
}
|
||||||
48
app/src/main/java/com/ck/ckcollar/app/model/PayResult.kt
Normal file
48
app/src/main/java/com/ck/ckcollar/app/model/PayResult.kt
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
import android.text.TextUtils
|
||||||
|
|
||||||
|
|
||||||
|
class PayResult(rawResult: Map<String?, String?>?) {
|
||||||
|
/**
|
||||||
|
* @return the resultStatus
|
||||||
|
*/
|
||||||
|
var resultStatus: String? = null
|
||||||
|
private set
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the result
|
||||||
|
*/
|
||||||
|
var result: String? = null
|
||||||
|
private set
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the memo
|
||||||
|
*/
|
||||||
|
var memo: String? = null
|
||||||
|
private set
|
||||||
|
|
||||||
|
init {
|
||||||
|
if (rawResult == null) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rawResult != null){
|
||||||
|
for (key in rawResult.keys) {
|
||||||
|
if (TextUtils.equals(key, "resultStatus")) {
|
||||||
|
resultStatus = rawResult.get(key)
|
||||||
|
} else if (TextUtils.equals(key, "result")) {
|
||||||
|
result = rawResult.get(key)
|
||||||
|
} else if (TextUtils.equals(key, "memo")) {
|
||||||
|
memo = rawResult.get(key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return ("resultStatus={" + resultStatus + "};memo={" + memo
|
||||||
|
+ "};result={" + result + "}")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class PeopleCustomerMessageModel {
|
||||||
|
var messages: List<CustomerMessageModel.MessageItemModel>? = null
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
14
app/src/main/java/com/ck/ckcollar/app/model/PointsModel.kt
Normal file
14
app/src/main/java/com/ck/ckcollar/app/model/PointsModel.kt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class PointsModel : CkBaseModel(){
|
||||||
|
|
||||||
|
var memberPoints: Double = 0.0
|
||||||
|
var totalGained: Double = 0.0
|
||||||
|
var totalUsed: Double = 0.0
|
||||||
|
|
||||||
|
class PointsRecordModel : CkBaseModel(){
|
||||||
|
var title:String? = ""
|
||||||
|
var amount:Double = 0.0
|
||||||
|
var createTime:String? = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ProductTypeModel : CkBaseModel() {
|
||||||
|
|
||||||
|
var comId: Int = 0 // 商品ID
|
||||||
|
var comPrice: Double = 0.0 // 商品价格
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var inventory: Int = 0 // 库存
|
||||||
|
var memPrice: Double = 0.0 // 会员价格
|
||||||
|
var profitRatio: Int = 0 // 利润比例
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var salesVolume: Int = 0 // 销量
|
||||||
|
var specifyName: String? = "" // 规格名称
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var weight: Double = 0.0 // 重量
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class RechargeModel {
|
||||||
|
var orderStr :String? = null
|
||||||
|
var amount : Double? = null
|
||||||
|
var RC1782974779440000002 : String? = null
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class RecordDetailsModel {
|
||||||
|
var actualAmount: Double = 0.0 // 实际金额
|
||||||
|
var amount: Double = 0.0 // 金额
|
||||||
|
var applyTime: String? = "" // 申请时间
|
||||||
|
var arriveTime: String? = "" // 到账时间
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var payMethod: String? = "" // 支付方式
|
||||||
|
var payeeAccount: String? = "" // 收款人账户
|
||||||
|
var processTime: String? = "" // 处理时间
|
||||||
|
var revenueType: String? = "" // 收支类型
|
||||||
|
var serialNo: String? = "" // 流水号
|
||||||
|
var serviceFee: Double = 0.0 // 服务费
|
||||||
|
var status: String? = "" // 状态
|
||||||
|
var title: String? = "" // 标题
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class RecordModel {
|
||||||
|
var amount: Double = 0.0 // 金额
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var title: String? = "" // 标题
|
||||||
|
var revenueType : String? = "" //0充值1提现2订单支付3退款
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ShopCarCoutTotalModel : CkBaseModel() {
|
||||||
|
|
||||||
|
var count : Int = 0
|
||||||
|
var totalMoney : Double? = 0.0
|
||||||
|
}
|
||||||
43
app/src/main/java/com/ck/ckcollar/app/model/ShopCarModel.kt
Normal file
43
app/src/main/java/com/ck/ckcollar/app/model/ShopCarModel.kt
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
import java.math.BigDecimal
|
||||||
|
|
||||||
|
class ShopCarModel {
|
||||||
|
|
||||||
|
var comCover: String? = "" // 商品封面图
|
||||||
|
var comId: Int = 0 // 商品ID
|
||||||
|
var comName: String? = "" // 商品名称
|
||||||
|
var comNum: Long = 0L // 商品编号
|
||||||
|
var comPrice: Double = 0.0 // 商品价格
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var memPrice: Double = 0.0 // 会员价格
|
||||||
|
var quantity: Int = 0 // 数量
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var selected: String? = "" // 是否选中
|
||||||
|
var specId: Int = 0 // 规格ID
|
||||||
|
var specName: String? = "" // 规格名称
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
|
||||||
|
fun toOrderItem(): CreateOrderModel.OrderItem {
|
||||||
|
var model = CreateOrderModel.OrderItem()
|
||||||
|
|
||||||
|
model.comId = id
|
||||||
|
model.comNum = comNum
|
||||||
|
model.comName = comName
|
||||||
|
model.comCover = comCover
|
||||||
|
model.comPrice = comPrice
|
||||||
|
model.memPrice = memPrice
|
||||||
|
model.quantity = quantity
|
||||||
|
|
||||||
|
var countDecial = BigDecimal(quantity)
|
||||||
|
|
||||||
|
model.subtotal = BigDecimal(model.comPrice).multiply(countDecial).toDouble()
|
||||||
|
model.memSubtotal = BigDecimal(model.memPrice).multiply(countDecial).toDouble()
|
||||||
|
|
||||||
|
return model
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ShopHotModel {
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ShopItemModel {
|
||||||
|
var id : Int? = -1
|
||||||
|
var imgUrl : String? = ""
|
||||||
|
var comType : String? = ""
|
||||||
|
var sort : Int? = 0
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class ShopProductModel : CkBaseModel() {
|
||||||
|
|
||||||
|
var total : Int = 0
|
||||||
|
var rows: List<ProductModel>? = listOf()
|
||||||
|
|
||||||
|
class ProductModel : CkBaseModel() {
|
||||||
|
var colCommodityListCbs: List<ProductTypeModel>? = null // 集合类型
|
||||||
|
var comCarousel: String? = "" // 轮播图
|
||||||
|
var comCover: String? = "" // 封面图
|
||||||
|
var comDetail: String? = "" // 商品详情
|
||||||
|
var comName: String? = "" // 商品名称
|
||||||
|
var comNum: Long = 0L // 商品编号
|
||||||
|
var comPrice: Double = 0.0 // 商品价格
|
||||||
|
var comStatus: String? = "" // 商品状态
|
||||||
|
var comType: String? = "" // 商品类型
|
||||||
|
var comTypeName: String? = "" // 商品类型名称
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var createTimeScope: String? = "" // 创建时间范围
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var inventory: Int = 0 // 库存
|
||||||
|
var memPrice: Double = 0.0 // 会员价格
|
||||||
|
var recomSlot: String? = "" // 推荐位
|
||||||
|
var releaseTime: String? = "" // 发布时间
|
||||||
|
var releaseTimeArr: List<String>? = null // 发布时间数组
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var salesVolume: Int = 0 // 销量
|
||||||
|
var serialNum: Int = 0 // 序列号
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
|
||||||
|
|
||||||
|
fun toOrderItem(): CreateOrderModel.OrderItem {
|
||||||
|
var model = CreateOrderModel.OrderItem()
|
||||||
|
|
||||||
|
model.comId = id
|
||||||
|
model.comNum = comNum
|
||||||
|
model.comName = comName
|
||||||
|
model.comCover = comCover
|
||||||
|
model.comPrice = comPrice
|
||||||
|
model.memPrice = memPrice
|
||||||
|
return model
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
18
app/src/main/java/com/ck/ckcollar/app/model/TagModel.kt
Normal file
18
app/src/main/java/com/ck/ckcollar/app/model/TagModel.kt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class TagModel {
|
||||||
|
var isAdd : Boolean? = false
|
||||||
|
var isMore : Boolean? = false
|
||||||
|
|
||||||
|
var addressKey: String? = "" // 地址键值
|
||||||
|
var addressLabel: String? = "" // 地址标签名称
|
||||||
|
var createBy: String? = "" // 创建人
|
||||||
|
var createTime: String? = "" // 创建时间
|
||||||
|
var id: Int = 0 // ID
|
||||||
|
var isDefault: String? = "" // 是否默认标签
|
||||||
|
var remark: String? = "" // 备注
|
||||||
|
var updateBy: String? = "" // 更新人
|
||||||
|
var updateTime: String? = "" // 更新时间
|
||||||
|
var userId: Int = 0 // 用户ID
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class UnReadModel : CkBaseModel(){
|
||||||
|
|
||||||
|
var unreadCount : Int = 0
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
11
app/src/main/java/com/ck/ckcollar/app/model/UpdateModel.kt
Normal file
11
app/src/main/java/com/ck/ckcollar/app/model/UpdateModel.kt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class UpdateModel : CkBaseModel(){
|
||||||
|
//{"androidVersion":1,"content":"","iosVersion":1,"isForce":false}
|
||||||
|
|
||||||
|
var androidVersion : Int = 0
|
||||||
|
var iosVersion : Int = 0
|
||||||
|
var isForce : Boolean = false
|
||||||
|
var content : String? = ""
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ck.ckcollar.app.model
|
||||||
|
|
||||||
|
class UploadModel: CkBaseModel() {
|
||||||
|
|
||||||
|
var urls : String = ""
|
||||||
|
var newFileNames : String = ""
|
||||||
|
var fileNames : String = ""
|
||||||
|
var originalFilenames : String = ""
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user