init
diff --git a/app/build.gradle b/app/build.gradle
index 63e7988..cded1af 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -68,6 +68,8 @@
compile 'org.jetbrains.kotlin:kotlin-reflect:1.3.41'
compile 'org.springframework.android:spring-android-core:1.0.1.RELEASE'
compile 'org.apache.httpcomponents:httpcore:4.4.10'
-// compile files('libs/apache-httpcomponents-httpcore.jar')
+ compile("com.beust:klaxon:0.30") {
+ exclude group: 'org.jetbrains'
+ }
compile files('libs/zxinglibsl.jar')
}
diff --git a/app/libs/apache-httpcomponents-httpcore.jar b/app/libs/apache-httpcomponents-httpcore.jar
deleted file mode 100644
index a357c07..0000000
--- a/app/libs/apache-httpcomponents-httpcore.jar
+++ /dev/null
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2b2b54c..301359f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -100,7 +100,7 @@
android:label="@string/title_activity_consume"
android:launchMode="singleTask"/>
<activity
- android:name=".activities.upgrade.UpgradeAcvitity"
+ android:name=".activities.upgrade.UpgradeActivity"
android:label="@string/title_activity_consume"
android:launchMode="singleTask"/>
<activity
diff --git a/app/src/main/java/com/supwisdom/activities/CrashHandler.kt b/app/src/main/java/com/supwisdom/activities/CrashHandler.kt
index c400b57..784aeab 100644
--- a/app/src/main/java/com/supwisdom/activities/CrashHandler.kt
+++ b/app/src/main/java/com/supwisdom/activities/CrashHandler.kt
@@ -4,15 +4,11 @@
import android.content.pm.PackageManager
import android.os.Build
import android.os.Looper
-import com.supwisdom.dcpos.utils.CommonUtil
-import com.supwisdom.dcpos.view.ToastUtil
-import com.supwisdom.utils.AppExitUtil
-import com.supwisdom.utils.DateUtil
-import com.supwisdom.utils.FileUtil
-import com.supwisdom.utils.ThreadPool
+import com.supwisdom.utils.*
+import com.supwisdom.view.ToastUtil
import java.io.PrintWriter
import java.io.StringWriter
-import java.util.HashMap
+import java.util.*
/**
** create by zzq on 2019/7/23
diff --git a/app/src/main/java/com/supwisdom/activities/checkMngpwd/CheckMngpwdActivity.kt b/app/src/main/java/com/supwisdom/activities/checkMngpwd/CheckMngpwdActivity.kt
new file mode 100644
index 0000000..007c9cd
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/checkMngpwd/CheckMngpwdActivity.kt
@@ -0,0 +1,138 @@
+package com.supwisdom.activities.checkMngpwd
+
+import android.content.Intent
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import android.widget.TextView
+import com.supwisdom.R
+import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.manage.ManageActivity
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.CommonUtil
+import java.util.*
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class CheckMngpwdActivity : BaseActivity() {
+ private var tmpPwd: String = ""
+ private lateinit var vTitle: TextView
+ private var password: String = ""
+ private var mode: String? = null
+ private var keyActive = true
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_check_mngpwd)
+ initView()
+ }
+
+ private fun initView() {
+ vTitle = findViewById<TextView>(R.id.title)
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (!keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+
+ val keyCode = event.keyCode
+ when (keyCode) {
+ KeyEvent.KEYCODE_0,
+ KeyEvent.KEYCODE_1,
+ KeyEvent.KEYCODE_2,
+ KeyEvent.KEYCODE_3,
+ KeyEvent.KEYCODE_4,
+ KeyEvent.KEYCODE_5,
+ KeyEvent.KEYCODE_6,
+ KeyEvent.KEYCODE_7,
+ KeyEvent.KEYCODE_8,
+ KeyEvent.KEYCODE_9 -> {
+ tmpPwd += keyCode - KeyEvent.KEYCODE_0
+ if (tmpPwd.length >= 6) {
+ if (checkMngPwd(tmpPwd)) {
+ jumpActivity(ManageActivity::class.java)
+ } else {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("维护密码:", "密码错误"))
+ }
+ tmpPwd = ""
+ } else {
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("维护密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ }
+ KeyEvent.KEYCODE_DEL -> {
+ //cancel
+ val len = tmpPwd.length
+ when {
+ len == 1 -> {
+ tmpPwd = ""
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("维护密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ len > 1 -> {
+ tmpPwd = tmpPwd.substring(0, len - 1)
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("维护密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ else -> finish()
+ }
+ }
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ keyActive = true
+ password = this.intent.getStringExtra("password")
+ mode = this.intent.getStringExtra("mode")
+ refresh()
+ }
+
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ this.intent.putExtra("password", intent.getStringExtra("password"))
+ this.intent.putExtra("mode", intent.getStringExtra("mode"))
+ }
+
+ private fun refresh() {
+ tmpPwd = ""
+ vTitle.text = "维护密码验证"
+ AuxScreenController.getInstance().refreshTitle("维护密码验证")
+ AuxScreenController.getInstance().refreshBottom("取消键返回上页")
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("维护密码:", " "))
+ }
+
+ private fun checkMngPwd(inputPwd: String): Boolean {
+ return inputPwd == password
+ }
+
+ private var counter: ContinuePressTimer? = null
+
+ private fun resetCounter(timems: Long) {
+ counter?.cancel()
+ if (counter == null) {
+ counter = ContinuePressTimer(timems, 100)
+ }
+ keyActive = false
+ counter!!.start()
+ }
+
+ private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+ CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ keyActive = true
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
new file mode 100644
index 0000000..2ad9a6f
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
@@ -0,0 +1,237 @@
+package com.supwisdom.activities.consumeMode
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import android.widget.TextView
+import com.supwisdom.R
+import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.menu.MenuActivity
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.CommonUtil
+import com.supwisdom.utils.DateUtil
+import com.supwisdom.utils.PublicDef
+import java.util.*
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class ConsumeModeActivity : BaseActivity() {
+ private lateinit var vPayamt: TextView
+ private val pos = SPApplication.getInstance().getPos()
+ private var keyActive = true
+ private var shoppwdPass = false
+ private var tmpPwd = ""
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_consume_mode)
+ initView()
+ }
+
+ private fun initView() {
+ vPayamt = findViewById<TextView>(R.id.tv_consume_mode_payamt)
+ }
+
+ private fun checkShopPwd(keyCode: Int) {
+ when (keyCode) {
+ KeyEvent.KEYCODE_0,
+ KeyEvent.KEYCODE_1,
+ KeyEvent.KEYCODE_2,
+ KeyEvent.KEYCODE_3,
+ KeyEvent.KEYCODE_4,
+ KeyEvent.KEYCODE_5,
+ KeyEvent.KEYCODE_6,
+ KeyEvent.KEYCODE_7,
+ KeyEvent.KEYCODE_8,
+ KeyEvent.KEYCODE_9 -> {
+ tmpPwd += keyCode - KeyEvent.KEYCODE_0
+ if (tmpPwd.length >= 6) {
+ if (checkShoPwdValid(tmpPwd)) {
+ shoppwdPass = true
+ refreshToSetAmount()
+ } else {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请输入商户密码:", "密码错误"))
+ }
+ tmpPwd = ""
+ } else {
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("请输入商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ }
+ KeyEvent.KEYCODE_DEL -> {
+ //cancel
+ val len = tmpPwd.length
+ when {
+ len == 1 -> {
+ tmpPwd = ""
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("请输入商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ len > 1 -> {
+ tmpPwd = tmpPwd.substring(0, len - 1)
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("请输入商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ else -> finish()
+ }
+ }
+ }
+ }
+
+ private fun checkShoPwdValid(inputPwd: String): Boolean {
+ return inputPwd == pos.getConfigPara()!!.shopPwd
+ }
+
+ private fun setFixAmount(keyCode: Int) {
+ when (keyCode) {
+ KeyEvent.KEYCODE_0,
+ KeyEvent.KEYCODE_1,
+ KeyEvent.KEYCODE_2,
+ KeyEvent.KEYCODE_3,
+ KeyEvent.KEYCODE_4,
+ KeyEvent.KEYCODE_5,
+ KeyEvent.KEYCODE_6,
+ KeyEvent.KEYCODE_7,
+ KeyEvent.KEYCODE_8,
+ KeyEvent.KEYCODE_9 -> addValueToEdit(keyCode - KeyEvent.KEYCODE_0)
+ KeyEvent.KEYCODE_DEL ->
+ //cancel
+ delValueToEdit()
+ KeyEvent.KEYCODE_POUND, KeyEvent.KEYCODE_PERIOD -> {
+ val str = vPayamt.text.toString()
+ if (str.length < 8 && str.indexOf('.') < 0) {
+ vPayamt.text = "$str."
+ screenShowAmt()
+ }
+ }
+ KeyEvent.KEYCODE_ENTER -> {
+ pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, getFixAmount())
+ jumpActivity(MenuActivity::class.java)
+ }
+ }
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (!keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+ if (shoppwdPass) {
+ setFixAmount(event.keyCode)
+ } else {
+ checkShopPwd(event.keyCode)
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ shoppwdPass = false
+ keyActive = true
+ refreshToCheckPasswd()
+ }
+
+ private fun refreshToCheckPasswd() {
+ AuxScreenController.getInstance().refreshTitle("消费模式设置")
+ AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请输入商户密码:", " "))
+ }
+
+ private fun refreshToSetAmount() {
+ val record = pos.getControlPara(PublicDef.CONTROL_FIXAMT)
+ if (record != null && PublicDef.CONTROL_NO_FIXPAY_FLAG != record.paraval) {
+ vPayamt.text = String.format("%.02f", Integer.parseInt(record.paraval) / 100.0f)
+ } else {
+ vPayamt.text = PublicDef.CONTROL_NO_FIXPAY_FLAG
+ }
+ screenShowAmt()
+ }
+
+ private fun getFixAmount(): String {
+ try {
+ return Integer.toString(CommonUtil.YuanToFen(java.lang.Double.parseDouble(vPayamt.text.toString())))
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+
+ return PublicDef.CONTROL_NO_FIXPAY_FLAG
+ }
+
+ private fun addValueToEdit(value: Int) {
+ var str = vPayamt.text.toString()
+ if ("0" == str || PublicDef.CONTROL_NO_FIXPAY_FLAG == str) {
+ str = ""
+ }
+ //如果已经有小数点,则小数点后面不能超过两位
+ if (str.indexOf(".") > 0) {
+ if (str.length - str.indexOf(".") <= 2) {
+ vPayamt.text = "$str$value"
+ } else {
+ vPayamt.text = value.toString()
+ }
+ } else {
+ //限制消费金额<1000
+ if (str.length < 3) {
+ vPayamt.text = "$str$value"
+ }
+ }
+ screenShowAmt()
+ }
+
+ private fun delValueToEdit() {
+ val str = vPayamt.text.toString()
+ if (PublicDef.CONTROL_NO_FIXPAY_FLAG != str) {
+ if (str.length <= 1) {
+ vPayamt.text = PublicDef.CONTROL_NO_FIXPAY_FLAG
+ } else {
+ vPayamt.text = str.substring(0, str.length - 1)
+ }
+ }
+ screenShowAmt()
+ }
+
+ private fun screenShowAmt() {
+ AuxScreenController.getInstance().refreshContent(
+ Arrays.asList<String>(
+ PublicDef.CONTROL_NO_FIXPAY_FLAG + "-普通消费",
+ "值-定额消费(元)",
+ String.format("金额:%s", vPayamt.text.toString())
+ )
+ )
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
+
+ private var counter: ContinuePressTimer? = null
+
+ private fun resetCounter(timems: Long) {
+ counter?.cancel()
+ if (counter == null) {
+ counter = ContinuePressTimer(timems, 100)
+ }
+ keyActive = false
+ counter!!.start()
+ }
+
+ private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+ CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ keyActive = true
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/control/ControlActivity.kt b/app/src/main/java/com/supwisdom/activities/control/ControlActivity.kt
index e8dacdb..0ab3436 100644
--- a/app/src/main/java/com/supwisdom/activities/control/ControlActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/control/ControlActivity.kt
@@ -59,7 +59,7 @@
} else {
"0"
}
- if (!saveControlPara(PublicDef.CONTROL_OFFLINE_DAY_DISABLE, flag)) {
+ if (!pos.replaceControlPara(PublicDef.CONTROL_OFFLINE_DAY_DISABLE, flag)) {
showSWToastInfo("脱机天数判断保存失败", PublicDef.TOAST_SHOW_CRY)
return@setOnClickListener
}
@@ -69,7 +69,7 @@
} else {
"0"
}
- if (!saveControlPara(PublicDef.CONTROL_DEBUG_ENABLE, flag)) {
+ if (!pos.replaceControlPara(PublicDef.CONTROL_DEBUG_ENABLE, flag)) {
showSWToastInfo("日志调试保存失败", PublicDef.TOAST_SHOW_CRY)
return@setOnClickListener
}
@@ -115,11 +115,4 @@
AuxScreenController.getInstance().refreshBottom("确定键返回上页")
AuxScreenController.getInstance().refreshContent(listOf<String>("请到大屏进行配置"))
}
-
- private fun saveControlPara(paraname: String, paraval: String): Boolean {
- val record = ControlParaRecord()
- record.paraname = paraname
- record.paraval = paraval
- return pos.replaceControlPara(record)
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt b/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
index 7f19261..86dee25 100644
--- a/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
@@ -69,10 +69,5 @@
iInitView.jumpToNextActivity()
}
- fun saveControlPara(name: String, value: String): Boolean {
- val record = pos.getControlPara(name) ?: ControlParaRecord()
- record.paraname = name
- record.paraval = value
- return pos.replaceControlPara(record)
- }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/init/mode/NsdClientApi.kt b/app/src/main/java/com/supwisdom/activities/init/mode/NsdClientApi.kt
index 79d8813..5b1785c 100644
--- a/app/src/main/java/com/supwisdom/activities/init/mode/NsdClientApi.kt
+++ b/app/src/main/java/com/supwisdom/activities/init/mode/NsdClientApi.kt
@@ -6,9 +6,9 @@
import com.supwisdom.activities.init.bean.EcardConfigParamRetBean
import com.supwisdom.activities.init.bean.NsdServerConfigRetBean
import com.supwisdom.okhttp.NetworkHandler
-import com.supwisdom.utilities.CommonUtil
-import com.supwisdom.utilities.GsonUtil
-import com.supwisdom.utilities.PublicDef
+import com.supwisdom.utils.CommonUtil
+import com.supwisdom.utils.GsonUtil
+import com.supwisdom.utils.PublicDef
import org.apache.http.HttpStatus
/**
@@ -21,13 +21,12 @@
fun getEcardConfigParam(configName: String): EcardConfigParamBean {
val resp = NetworkHandler.getInstance().get("$url/ns/$configName", null)
- ?: return EcardConfigParamBean(PublicDef.ERROR, "请求超时")
+ ?: return EcardConfigParamBean(PublicDef.ERROR, "请求超时")
if (resp.retcode != HttpStatus.SC_OK) {
return EcardConfigParamBean(resp.retcode, "错误码=${resp.retcode},${resp.retmsg}")
}
try {
- val retBean = GsonUtil.GsonToBean(resp.retjson, EcardConfigParamRetBean::class.java)
- ?: return EcardConfigParamBean(PublicDef.ERROR, "解析为空")
+ val retBean = GsonUtil.GsonToBean(resp.retjson!!, EcardConfigParamRetBean::class.java)
val ret = EcardConfigParamBean(PublicDef.SUCCESS, "获取成功")
ret.systime = retBean.system
retBean.url!!.split("&", " ").forEach {
@@ -68,7 +67,7 @@
fun getNsdServerConfigList(): NsdServerConfigRetBean {
val resp = NetworkHandler.getInstance().get("$url/list", null)
- ?: return NsdServerConfigRetBean(PublicDef.ERROR, "请求超时")
+ ?: return NsdServerConfigRetBean(PublicDef.ERROR, "请求超时")
if (resp.retcode != HttpStatus.SC_OK) {
return NsdServerConfigRetBean(resp.retcode, "错误码=${resp.retcode},${resp.retmsg}")
}
diff --git a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
index d72769f..2ee27f4 100644
--- a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
@@ -5,13 +5,11 @@
import android.os.Message
import com.supwisdom.activities.SPApplication
import com.supwisdom.activities.YktSession
-import com.supwisdom.entity.ControlParaRecord
import com.supwisdom.service.AuthEpay
import com.supwisdom.service.EpayApiImpl
import com.supwisdom.utils.CommonUtil
import com.supwisdom.utils.PublicDef
import com.supwisdom.utils.ThreadPool
-import java.lang.Exception
/**
** create by zzq on 2019/7/24
@@ -72,8 +70,8 @@
// 保存流水号
if (!hasInit) {
- saveControlPara(PublicDef.CONTROL_TRANSDTLONL_SEQNO, bean.onlineseqno.toString())
- saveControlPara(PublicDef.CONTROL_TRANSDTLOFF_SEQNO, bean.offlineseqno.toString())
+ pos.replaceControlPara(PublicDef.CONTROL_TRANSDTLONL_SEQNO, bean.onlineseqno.toString())
+ pos.replaceControlPara(PublicDef.CONTROL_TRANSDTLOFF_SEQNO, bean.offlineseqno.toString())
}
SPApplication.getInstance().setEpayLinking(true)
@@ -109,23 +107,12 @@
cfgRecord = pos.getConfigPara()
cfgRecord!!.initOK = true
pos.replaceConfigPara(cfgRecord!!)
-
- val ctlRecord = pos.getControlPara(PublicDef.CONTROL_HAS_REGISTER) ?: ControlParaRecord()
- ctlRecord.paraname = PublicDef.CONTROL_HAS_REGISTER
- ctlRecord.paraval = "1"
- pos.replaceControlPara(ctlRecord)
+ pos.replaceControlPara(PublicDef.CONTROL_HAS_REGISTER, "1")
sendMessage(LOAD_SUCCESS, "加载成功")
})
}
- private fun saveControlPara(paraname: String, paraval: String): Boolean {
- val para = ControlParaRecord()
- para.paraname = paraname
- para.paraval = paraval
- return pos.replaceControlPara(para)
- }
-
private fun createHandler() {
handler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(msg: Message) {
diff --git a/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt b/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt
index 1fca144..f5749c1 100644
--- a/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt
@@ -8,7 +8,11 @@
import com.supwisdom.activities.SPApplication
import com.supwisdom.activities.communicate.CommunicateActivity
import com.supwisdom.activities.control.ControlActivity
+import com.supwisdom.activities.menu.MenuActivity
+import com.supwisdom.activities.upgrade.UpgradeActivity
import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.AppExitUtil
+import com.supwisdom.utils.CommonUtil
import com.supwisdom.utils.DateUtil
import java.util.*
@@ -64,48 +68,50 @@
KeyEvent.KEYCODE_3 -> {
//查询流水
flag = true
- AuxScreenController.Companion.getInstance().refreshContent(Arrays.asList<T>("流水查询:", "暂不支持"))
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("流水查询:", "暂不支持"))
}
KeyEvent.KEYCODE_4 -> {
flag = true
isRunning = true
- AuxScreenController.Companion.getInstance().refreshContent(Arrays.asList<T>("正在导出流水", "请稍等..."))
- presenter!!.doOutTransdtl()
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("正在导出流水", "请稍等..."))
+ presenter!!.outTransdtl()
}
- KeyEvent.KEYCODE_5 -> jumpActivity(UpgradeActivity::class.java!!)
+ KeyEvent.KEYCODE_5 -> jumpActivity(UpgradeActivity::class.java)
KeyEvent.KEYCODE_6 -> {
- CommonUtil.sendBroadcast(applicationContext, false)
- AuxScreenController.Companion.getInstance().refreshContent(Arrays.asList<T>("应用程序已退出", "请到大屏操作"))
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("应用程序已退出", "请到大屏操作"))
AppExitUtil.exit()
}
KeyEvent.KEYCODE_7 -> {
- CommonUtil.sendBroadcast(applicationContext, false)
- AuxScreenController.Companion.getInstance().refreshContent(Arrays.asList<T>("应用程序已退出", "请到大屏操作"))
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("应用程序已退出", "请到大屏操作"))
CommonUtil.startNetSetting(this)
}
KeyEvent.KEYCODE_8 -> {
flag = true
isRunning = true
- AuxScreenController.Companion.getInstance().refreshContent(Arrays.asList<T>("正在清空黑名单", "请稍等..."))
- presenter!!.doClearBlacklist()
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("正在清空白名单", "请稍等..."))
+ presenter!!.clearAndUpdateWhitelist()
}
KeyEvent.KEYCODE_9 -> jumpActivity(ControlActivity::class.java)
KeyEvent.KEYCODE_DEL ->
//cancel
- jumpActivity(MenuActivity::class.java!!)
+ jumpActivity(MenuActivity::class.java)
}
}
return super.dispatchKeyEvent(event)
}
override fun showOperHint(hint: String, result: String) {
- AuxScreenController.getInstance().refreshContent(Arrays.asList<T>(hint, result))
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(hint, result))
}
override fun showOperResult(hint: String, result: String) {
flag = true
isRunning = false
- AuxScreenController.getInstance().refreshContent(Arrays.asList<T>(hint, result))
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(hint, result))
}
override fun onResume() {
@@ -136,24 +142,16 @@
private fun showShopPassword() {
AuxScreenController.getInstance()
- .refreshContent(Arrays.asList("商户密码:", pos!!.getConfigPara().getShopPwd()))
- }
-
- private fun showClearBlacklist() {
- presenter!!.doClearBlacklist()
- }
-
- private fun showReloadTransdtl() {
- presenter!!.doReloadTransdtl()
+ .refreshContent(Arrays.asList<String>("商户密码:", pos.getConfigPara()!!.shopPwd))
}
private var counter: ContinuePressTimer? = null
private fun resetCounter(timems: Long) {
+ counter?.cancel()
if (counter == null) {
counter = ContinuePressTimer(timems, 100)
}
- counter!!.cancel()
keyActive = false
counter!!.start()
}
diff --git a/app/src/main/java/com/supwisdom/activities/menu/IMenuView.kt b/app/src/main/java/com/supwisdom/activities/menu/IMenuView.kt
index eefb65f..ff202b4 100644
--- a/app/src/main/java/com/supwisdom/activities/menu/IMenuView.kt
+++ b/app/src/main/java/com/supwisdom/activities/menu/IMenuView.kt
@@ -1,10 +1,14 @@
package com.supwisdom.activities.menu
+import android.app.Activity
+
/**
** create by zzq on 2019/7/25
** @desc
**/
interface IMenuView {
+ fun getActivity(): Activity
+
fun showOperHint(title: String, result: String)
fun showOperResult(title: String, result: String)
diff --git a/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt b/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt
index 2dd7b47..e12a6eb 100644
--- a/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt
@@ -1,10 +1,174 @@
package com.supwisdom.activities.menu
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import android.view.View
+import android.widget.TextView
+import com.supwisdom.R
import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.checkMngpwd.CheckMngpwdActivity
+import com.supwisdom.activities.consume.ConsumeActivity
+import com.supwisdom.activities.consumeMode.ConsumeModeActivity
+import com.supwisdom.activities.passwd.PasswdActivity
+import com.supwisdom.activities.revenue.RevenueActivity
+import com.supwisdom.activities.syspara.SysparaActivity
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.DateUtil
+import com.supwisdom.utils.PublicDef
+import java.util.*
/**
** create by zzq on 2019/7/25
** @desc
**/
-class MenuActivity : BaseActivity() {
+class MenuActivity : BaseActivity(), IMenuView {
+ private lateinit var presenter: MenuPresenter
+ private val pos = SPApplication.getInstance().getPos()
+ private var isRunning: Boolean = false
+ private var flag: Boolean = false
+ private lateinit var vReverse: TextView
+ private var keyActive = true
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_menu)
+ initView()
+ initData()
+ }
+
+ private fun initData() {
+ presenter = MenuPresenter(this)
+ }
+
+ private fun initView() {
+ vReverse = this.findViewById<View>(R.id.tv_reverse) as TextView
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (isRunning || !keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+
+ val keyCode = event.keyCode
+ if (flag) {
+ return if (KeyEvent.KEYCODE_DEL == keyCode) {
+ refresh()
+ true
+ } else {
+ false
+ }
+ }
+ when (keyCode) {
+ KeyEvent.KEYCODE_1 -> jumpActivity(RevenueActivity::class.java)
+ KeyEvent.KEYCODE_2 -> {
+ isRunning = true
+ presenter.doUploadTransdtl()
+ }
+ KeyEvent.KEYCODE_3 -> {
+ isRunning = true
+ presenter.linkCheck()
+ }
+ KeyEvent.KEYCODE_4 -> {
+ isRunning = true
+ presenter.manualAuth()
+ }
+ KeyEvent.KEYCODE_5 -> jumpActivity(SysparaActivity::class.java)
+ KeyEvent.KEYCODE_6 -> {
+ val intent = Intent()
+ intent.putExtra("password", pos.getSysPara()!!.mngPasswd)
+ intent.setClass(this, CheckMngpwdActivity::class.java)
+ startActivity(intent)
+ }
+ KeyEvent.KEYCODE_7 -> jumpActivity(PasswdActivity::class.java)
+ KeyEvent.KEYCODE_8 ->
+ //设置消费方式
+ jumpActivity(ConsumeModeActivity::class.java)
+ KeyEvent.KEYCODE_9 -> if (isSupportReverse()) {
+ presenter.doReverse()
+ }
+ KeyEvent.KEYCODE_DEL ->
+ //cancel
+ jumpActivity(ConsumeActivity::class.java)
+ KeyEvent.KEYCODE_ENTER -> jumpActivity(ConsumeActivity::class.java)
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ keyActive = true
+ refresh()
+ }
+
+ override fun showOperHint(title: String, result: String) {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(title, result))
+ }
+
+ override fun showOperResult(title: String, result: String) {
+ flag = true
+ isRunning = false
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(title, result))
+ }
+
+ override fun getActivity(): Activity {
+ return this
+ }
+
+ private fun refresh() {
+ isRunning = false
+ flag = false
+ val secList = ArrayList<String>()
+ secList.add(getString(R.string.consume_menu_revenue))
+ secList.add(getString(R.string.consume_menu_transdtl_upload))
+ secList.add(getString(R.string.consume_menu_link_check))
+ secList.add(getString(R.string.consume_menu_auth))
+ secList.add(getString(R.string.consume_menu_syspara_query))
+ secList.add(getString(R.string.consume_menu_manage))
+ secList.add(getString(R.string.consume_menu_shop_password_set))
+ secList.add(getString(R.string.consume_menu_consume_mode))
+ if (isSupportReverse()) {
+ vReverse!!.visibility = View.VISIBLE
+ secList.add(getString(R.string.consume_menu_reverse))
+ } else {
+ vReverse!!.visibility = View.GONE
+ }
+ AuxScreenController.getInstance().refreshTitle("设备管理界面")
+ AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+ AuxScreenController.getInstance().refreshContent(secList)
+ }
+
+ private fun isSupportReverse(): Boolean {
+ val sysRecord = SPApplication.getInstance().getPos().getSysPara()
+ return sysRecord != null && sysRecord.returnFlag and 0x1 == 1
+ }
+
+ private var counter: ContinuePressTimer? = null
+
+ private fun resetCounter(timems: Long) {
+ counter?.cancel()
+ if (counter == null) {
+ counter = ContinuePressTimer(timems, 100)
+ }
+ keyActive = false
+ counter!!.start()
+ }
+
+ private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+ CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ keyActive = true
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt b/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
index 119018b..bf3ae4d 100644
--- a/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
@@ -3,11 +3,15 @@
import android.content.Intent
import android.os.AsyncTask
import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.consume.ConsumeActivity
import com.supwisdom.bean.AuthRetBean
import com.supwisdom.bean.BaseResp
+import com.supwisdom.entity.PayStatus
+import com.supwisdom.entity.ReversalFlag
+import com.supwisdom.exception.HeartBeatError
+import com.supwisdom.exception.TransdtlUploadError
import com.supwisdom.service.AuthEpay
import com.supwisdom.service.EpayApiImpl
-import com.supwisdom.utils.CommonUtil
import com.supwisdom.utils.DateUtil
import com.supwisdom.utils.PublicDef
@@ -56,8 +60,12 @@
private inner class AsyncLink : AsyncTask<Void, Void, BaseResp>() {
override fun doInBackground(vararg voids: Void): BaseResp {
-// EpayApiImpl().linkCheck()
- return BaseResp(PublicDef.ERROR, "暂未实现")
+ return try {
+ EpayApiImpl().linkCheck()
+ BaseResp(PublicDef.SUCCESS, "连接成功")
+ } catch (ex: HeartBeatError) {
+ BaseResp(PublicDef.ERROR, ex.message)
+ }
}
override fun onPostExecute(baseResp: BaseResp) {
@@ -67,58 +75,33 @@
}
fun doReverse() {
- val record = pos.getTransdtlUnionAll(DateUtil.getNowDateNoFormat(), 0)
- if (record == null) {
+ val list = pos.getTransdtlUnion(DateUtil.getNowDateNoFormat(), 0, 0, 1)
+ if (list.isEmpty()) {
iMenuView.showOperResult("冲正失败", "未找到消费记录")
return
}
- if (PublicDef.CONSUME_TYPE_BAR.equals(record!!.getConsumetype())) {
- iMenuView.showOperResult("冲正失败", "正扫不能冲正")
- } else if (PublicDef.CONSUME_TYPE_SCAN.equals(record!!.getConsumetype()) ||
- PublicDef.CONSUME_TYPE_OFFBAR.equals(record!!.getConsumetype()) ||
- PublicDef.CONSUME_TYPE_VIRTUAL.equals(record!!.getConsumetype())
+ val record = list[0]
+ if (record.reversalflag == ReversalFlag.AUTO ||
+ record.reversalflag == ReversalFlag.MANUAL
) {
- if (record!!.getFlag() and 0x80 == PublicDef.TRANSFLAG_REVERSE_CONSUME) {
- iMenuView.showOperResult("冲正失败", "已冲正")
- return
- }
- if (record!!.getFlag() and PublicDef.TRANSFLAG_UNWRITE_CARD !== PublicDef.TRANSFLAG_WRITE_CARD_SUCCESS) {
- iMenuView.showOperResult("冲正失败", "消费失败不能冲正")
- return
- }
- val t1 = DateUtil.dateFormatConvertToLong(record!!.getTransdate() + record!!.getTranstime())
- val t2 = System.currentTimeMillis()
- if (t2 - t1 > PublicDef.REVERSE_MS_GAP) {
- iMenuView.showOperResult("冲正失败", "消费已过期")
- return
- }
- val intent = Intent()
- intent.putExtra("datetime", CommonUtil.getSystemMills())
- intent.putExtra("amount", record!!.getPayamt() + "")
- intent.putExtra("consumeType", PublicDef.CONSUME_TYPE_REVERSE)
- intent.putExtra("transdtlType", record!!.getConsumetype())
- intent.setClass(context, CheckShoppwdActivity::class.java!!)
- context.startActivity(intent)
- } else if (PublicDef.CONSUME_TYPE_CRD.equals(record!!.getConsumetype()) || PublicDef.CONSUME_TYPE_ONL.equals(
- record!!.getConsumetype()
- )
- ) {
- val intent = Intent()
- intent.putExtra("datetime", CommonUtil.getSystemMills())
- intent.putExtra("amount", record!!.getPayamt() + "")
- intent.putExtra("consumeType", PublicDef.CONSUME_TYPE_REVERSE)
-
- if (pos.getConfigPara().getMode() === PublicDef.TERMINAL_THIRD_PAY_MODE) {
- intent.setClass(context, ThirdPayActivity::class.java!!)
- } else if (pos.getConfigPara().getMode() === PublicDef.TERMINAL_THIRD_LOGIN_MODE) {
- intent.setClass(context, ThirdLoginActivity::class.java!!)
- } else {
- intent.setClass(context, PayActivity::class.java!!)
- }
- context.startActivity(intent)
- } else {
- iMenuView.showOperResult("冲正失败", "不支持类型:" + record!!.getConsumetype())
+ iMenuView.showOperResult("冲正失败", "已冲正")
+ return
}
+ if (record.status != PayStatus.SUC) {
+ iMenuView.showOperResult("冲正失败", "消费失败不能冲正")
+ return
+ }
+ val t1 = DateUtil.dateFormatConvertToLong(record.transdate + record.transtime)
+ val t2 = System.currentTimeMillis()
+ if (t2 - t1 > PublicDef.REVERSE_MS_GAP) {
+ iMenuView.showOperResult("冲正失败", "消费已过期")
+ return
+ }
+ val intent = Intent()
+ intent.putExtra("amount", record.payamt.toString())
+ intent.putExtra("payway", record.payway)
+ intent.setClass(iMenuView.getActivity(), ConsumeActivity::class.java)
+ iMenuView.getActivity().startActivity(intent)
}
fun doUploadTransdtl() {
@@ -126,99 +109,27 @@
UploadTransdtl().execute()
}
- private inner class UploadTransdtl : AsyncTask<Int, Int, BaseResp>() {
- protected override fun doInBackground(vararg params: Int): BaseResp {
- val apiInterface = SPApplication.getInstance().getAPIMode()
+ private inner class UploadTransdtl : AsyncTask<Void, Void, BaseResp>() {
+ override fun doInBackground(vararg voids: Void): BaseResp {
+ val apiInterface = EpayApiImpl()
var num = 0
- val onlList = pos.getTransdtlReverse(null)
- if (onlList != null) {
- num += onlList!!.size
- for (i in onlList!!.indices) {
- val record = onlList!!.get(i)
- val resp = apiInterface.uploadTransdtl(record)
- if (resp == null) {
- return BaseResp(PublicDef.ERROR, "通讯超时")
- } else if (resp!!.retcode != PublicDef.SUCCESS) {
- return BaseResp(PublicDef.ERROR, resp!!.retmsg)
- }
- record.setUpflag(1)
- if (!pos.updateTransdtlReverse(record)) {
- return BaseResp(PublicDef.ERROR, "保存流水失败")
- }
+ try {
+ pos.getTransdtlOfflineUnconfirm().forEach {
+ apiInterface.uploadTransdtl(it)
+ it.upflag = 1
+ pos.updateTransdtlOffline(it)
+ num += 1
}
- }
-
- val crdList = pos.getTransdtlCreditUnconfirm()
- if (crdList != null) {
- num += crdList!!.size
- for (i in crdList!!.indices) {
- val record = crdList!!.get(i)
- val resp = apiInterface.uploadTransdtl(record, false)
- if (resp == null) {
- return BaseResp(PublicDef.ERROR, "通讯超时")
- } else if (resp!!.retcode != PublicDef.SUCCESS) {
- return BaseResp(PublicDef.ERROR, resp!!.retmsg)
- }
- record.setUpflag(1)
- if (!pos.updateTransdtlCredit(record)) {
- return BaseResp(PublicDef.ERROR, "保存流水失败")
- }
+ pos.getTransdtlOnlineUnconfirm().forEach {
+ apiInterface.uploadTransdtl(it)
+ it.upflag = 1
+ pos.updateTransdtlOnline(it)
+ num += 1
}
+ return BaseResp(PublicDef.SUCCESS, "上传共" + num + "条")
+ } catch (ex: TransdtlUploadError) {
+ return BaseResp(PublicDef.ERROR, ex.message)
}
-
- val barcodeList = pos.getTransdtlBarcodeUnconfirm()
- if (barcodeList != null) {
- num += barcodeList!!.size
- for (i in barcodeList!!.indices) {
- val record = barcodeList!!.get(i)
- val resp = apiInterface.uploadTransdtl(record)
- if (resp == null) {
- return BaseResp(PublicDef.ERROR, "通讯超时")
- } else if (resp!!.retcode != PublicDef.SUCCESS) {
- return BaseResp(PublicDef.ERROR, resp!!.retmsg)
- }
- record.setUpflag(1)
- if (!pos.updateTransdtlBarcode(record)) {
- return BaseResp(PublicDef.ERROR, "保存流水失败")
- }
- }
- }
-
- val bm1List = pos.getTransdtlBM1Unconfirm()
- if (bm1List != null) {
- num += bm1List!!.size
- for (i in bm1List!!.indices) {
- val record = bm1List!!.get(i)
- val resp = apiInterface.uploadTransdtl(record)
- if (resp == null) {
- return BaseResp(PublicDef.ERROR, "通讯超时")
- } else if (resp!!.retcode != PublicDef.SUCCESS) {
- return BaseResp(PublicDef.ERROR, resp!!.retmsg)
- }
- record.setUpflag(1)
- if (!pos.updateTransdtlBM1(record)) {
- return BaseResp(PublicDef.ERROR, "保存流水失败")
- }
- }
- }
- val gateList = pos.getTransdtlGateUnconfirm()
- if (gateList != null) {
- num += gateList!!.size
- for (i in gateList!!.indices) {
- val record = gateList!!.get(i)
- val resp = apiInterface.uploadTransdtl(record)
- if (resp == null) {
- return BaseResp(PublicDef.ERROR, "通讯超时")
- } else if (resp!!.retcode != PublicDef.SUCCESS) {
- return BaseResp(PublicDef.ERROR, resp!!.retmsg)
- }
- record.setUpflag(1)
- if (!pos.updateTransdtlGate(record)) {
- return BaseResp(PublicDef.ERROR, "保存流水失败")
- }
- }
- }
- return BaseResp(PublicDef.SUCCESS, "上传共" + num + "条")
}
override fun onPostExecute(resp: BaseResp) {
diff --git a/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt b/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt
new file mode 100644
index 0000000..adff026
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt
@@ -0,0 +1,185 @@
+package com.supwisdom.activities.passwd
+
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import com.supwisdom.R
+import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.CommonUtil
+import com.supwisdom.utils.DateUtil
+import java.util.*
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc 商户密码修改
+ **/
+class PasswdActivity : BaseActivity() {
+ private lateinit var oldPwd: String
+ private lateinit var newPwd: String
+ private lateinit var newPwd1: String
+ private lateinit var tmpPwd: String
+ private lateinit var passwdHint: String
+ private val pos = SPApplication.getInstance().getPos()
+ private var step = 0
+ private var keyActive = true
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_password)
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (!keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+
+ if (step == 3) {
+ refresh()
+ }
+ val keyCode = event.keyCode
+ when (keyCode) {
+ KeyEvent.KEYCODE_0,
+ KeyEvent.KEYCODE_1,
+ KeyEvent.KEYCODE_2,
+ KeyEvent.KEYCODE_3,
+ KeyEvent.KEYCODE_4,
+ KeyEvent.KEYCODE_5,
+ KeyEvent.KEYCODE_6,
+ KeyEvent.KEYCODE_7,
+ KeyEvent.KEYCODE_8,
+ KeyEvent.KEYCODE_9 -> {
+ if (step == 4) {
+ step = 0
+ passwdHint = "输入原密码:"
+ }
+ tmpPwd += keyCode - KeyEvent.KEYCODE_0
+ if (tmpPwd.length == 6) {
+ if (step == 0) {
+ oldPwd = tmpPwd
+ tmpPwd = ""
+ if (checkOldPasswd()) {
+ step = 1
+ passwdHint = "输入新密码:"
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(passwdHint, " "))
+ return true
+ } else {
+ step = 4
+ }
+ return true
+ } else if (step == 1) {
+ newPwd = tmpPwd
+ tmpPwd = ""
+ step = 2
+ passwdHint = "确认新密码:"
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(passwdHint, " "))
+ return true
+ } else if (step == 2) {
+ newPwd1 = tmpPwd
+ step = 3
+ tmpPwd = ""
+ if (checkAndUpdate()) {
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("密码修改成功", " "))
+ step = 3
+ return true
+ }
+ step = 4
+ return true
+ }
+ tmpPwd = ""
+ }
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList(passwdHint, CommonUtil.getPasswordStar(tmpPwd.length)))
+ return true
+ }
+ KeyEvent.KEYCODE_ENTER -> {
+ }
+ KeyEvent.KEYCODE_DEL -> {
+ val len = tmpPwd.length
+ when {
+ len == 1 -> {
+ tmpPwd = ""
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList(passwdHint, CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ len > 1 -> {
+ tmpPwd = tmpPwd.substring(0, len - 1)
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList(passwdHint, CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ else -> finish()
+ }
+ return true
+ }
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ keyActive = true
+ refresh()
+ }
+
+ private fun refresh() {
+ step = 0
+ oldPwd = ""
+ newPwd = ""
+ newPwd1 = ""
+ tmpPwd = ""
+ passwdHint = "输入原密码"
+ AuxScreenController.getInstance().refreshTitle("商户密码修改")
+ AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(passwdHint, " "))
+ }
+
+ private fun checkOldPasswd(): Boolean {
+ if (oldPwd != pos.getConfigPara()!!.shopPwd) {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("修改密码错误", "原密码错误"))
+ return false
+ }
+ return true
+ }
+
+ private fun checkAndUpdate(): Boolean {
+ if (newPwd != newPwd1) {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("修改密码错误", "新密码不一致"))
+ return false
+ }
+ val record = pos.getConfigPara()
+ record!!.shopPwd = newPwd
+ if (!pos.replaceConfigPara(record)) {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("修改密码错误", "密码保存失败"))
+ return false
+ }
+ return true
+ }
+
+ private var counter: ContinuePressTimer? = null
+
+ private fun resetCounter(timems: Long) {
+ if (counter == null) {
+ counter = ContinuePressTimer(timems, 100)
+ }
+ counter!!.cancel()
+ keyActive = false
+ counter!!.start()
+ }
+
+ private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+ CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ keyActive = true
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt b/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt
new file mode 100644
index 0000000..96e7754
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt
@@ -0,0 +1,10 @@
+package com.supwisdom.activities.revenue
+
+import com.supwisdom.activities.BaseActivity
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class RevenueActivity : BaseActivity() {
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
new file mode 100644
index 0000000..890ad73
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
@@ -0,0 +1,177 @@
+package com.supwisdom.activities.syspara
+
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import android.widget.ListView
+import com.supwisdom.R
+import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.menu.MenuActivity
+import com.supwisdom.activities.syspara.adapter.SysparaAdapter
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.entity.ControlParaRecord
+import com.supwisdom.utils.CommonUtil
+import java.util.*
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class SysparaActivity : BaseActivity() {
+ private var pageno: Int = 0
+ private val PAGENUM = 3
+ private val kvMap = hashMapOf<Int, ControlParaRecord>()
+ private var index: Int = 0
+ private val pos = SPApplication.getInstance().getPos()
+ private var keyActive = true
+ private var adapter: SysparaAdapter? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_syspara)
+ initView()
+ initData()
+ }
+
+ private fun initData() {
+ index = 0
+ kvMap[index++] = ControlParaRecord("软件版本>>", CommonUtil.getVersionName(applicationContext))
+ val cfgRecord = pos.getConfigPara()
+ val sysRecord = pos.getSysPara()
+ val dyRecord = pos.getDynamicPara()
+ kvMap[index++] = ControlParaRecord("物理编号>>", cfgRecord!!.devphyid!!)
+ kvMap[index++] = ControlParaRecord("服务器地址>>", cfgRecord.epayIP!!)
+ kvMap[index++] = ControlParaRecord("服务器标识>>", cfgRecord.epayUri!!)
+ kvMap[index++] = ControlParaRecord("服务器端口>>", "" + cfgRecord.epayPort)
+ kvMap[index++] =
+ ControlParaRecord("参数版本号>>", "no:" + dyRecord!!.paraverno + ",id:" + dyRecord.paragroupid)
+ kvMap[index++] = ControlParaRecord("白名单版本>>", dyRecord.cardverno!!)
+ kvMap[index++] = ControlParaRecord("通讯超时>>", String.format("%ds", CommonUtil.getCommunicateTime()))
+ if (sysRecord!!.returnFlag and 0x1 == 1) {
+ kvMap[index++] = ControlParaRecord("冲正使能>>", "启用")
+ } else {
+ kvMap[index++] = ControlParaRecord("冲正使能>>", "禁止")
+ }
+// if (sysRecord.getSocketSwitch() === 0) {
+// kvMap[index++] = ControlParaRecord("长连接使能>>", "禁止")
+// } else {
+// kvMap[index++] = ControlParaRecord("长连接使能>>", "启用")
+// }
+ if (SPApplication.getInstance().isOnline()) {
+ kvMap[index++] = ControlParaRecord("网络状态>>", "联机")
+ } else {
+ kvMap[index++] = ControlParaRecord("网络状态>>", "脱机")
+ }
+ kvMap[index++] = ControlParaRecord("成功显时间>>", String.format("%ds", sysRecord!!.consumeShowtime))
+ kvMap[index++] = ControlParaRecord("失败显时间>>", String.format("%ds", sysRecord.consumeFailShowtime))
+ kvMap[index++] = ControlParaRecord("联机流水号>>", String.format("%d", pos.getTransdtlOnlineMaxSeqno()))
+ kvMap[index++] = ControlParaRecord("离线流水号>>", String.format("%d", pos.getTransdtlOfflineMaxSeqno()))
+ kvMap[index++] = ControlParaRecord(
+ "未上传流水>>", String.format(
+ "%d", pos.getTransdtlOnlineUnconfirm()
+ + pos.getTransdtlOfflineUnconfirm()
+ )
+ )
+ kvMap[index++] = ControlParaRecord("定额间隔时间(s)>>", "" + sysRecord.fixpayGap)
+ kvMap[index++] = ControlParaRecord("心跳间隔>>", "${sysRecord.heatBeat}s")
+ }
+
+ private fun initView() {
+ val vParamList = this.findViewById<ListView>(R.id.lv_param) as ListView
+ adapter = SysparaAdapter(this)
+ vParamList.adapter = adapter
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (!keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+
+ when (event.keyCode) {
+ KeyEvent.KEYCODE_DPAD_DOWN -> {
+ //F3
+ pageno++
+ if (kvMap.size <= pageno * PAGENUM) {
+ pageno--
+ } else {
+ showPara()
+ }
+ return true
+ }
+ KeyEvent.KEYCODE_DPAD_RIGHT -> {
+ //F4
+ if (pageno > 0) {
+ pageno--
+ showPara()
+ }
+ return true
+ }
+ //case KeyEvent.KEYCODE_DPAD_UP:
+ //F2
+ KeyEvent.KEYCODE_DEL -> {
+ //cancel
+ jumpActivity(MenuActivity::class.java)
+ return true
+ }
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ keyActive = true
+ pageno = 0
+ showPara()
+ }
+
+ private fun showPara() {
+ val paraList = ArrayList<ControlParaRecord>()
+ val auxList = ArrayList<String>()
+ for (i in 0 until PAGENUM) {
+ val index = pageno * PAGENUM + i
+ if (index < kvMap.size) {
+ auxList.add(kvMap[index]!!.paraname!!)
+ auxList.add(kvMap[index]!!.paraval!!)
+ } else {
+ auxList.add(" ")
+ auxList.add(" ")
+ }
+ }
+ for (i in 0 until kvMap.size) {
+ paraList.add(kvMap[i]!!)
+ }
+ adapter!!.setList(paraList)
+ adapter!!.notifyDataSetChanged()
+
+ AuxScreenController.getInstance().refreshTitle("设备参数查询")
+ AuxScreenController.getInstance().refreshBottom("F3/F4 切换翻页")
+ AuxScreenController.getInstance().refreshContent(auxList)
+ }
+
+ private var counter: ContinuePressTimer? = null
+
+ private fun resetCounter(timems: Long) {
+ counter?.cancel()
+ if (counter == null) {
+ counter = ContinuePressTimer(timems, 100)
+ }
+ keyActive = false
+ counter!!.start()
+ }
+
+ private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+ CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ keyActive = true
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/syspara/adapter/SysparaAdapter.kt b/app/src/main/java/com/supwisdom/activities/syspara/adapter/SysparaAdapter.kt
new file mode 100644
index 0000000..53d7b5d
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/syspara/adapter/SysparaAdapter.kt
@@ -0,0 +1,60 @@
+package com.supwisdom.activities.syspara.adapter
+
+import android.content.Context
+import android.view.View
+import android.view.ViewGroup
+import android.widget.BaseAdapter
+import android.widget.TextView
+import com.supwisdom.R
+import com.supwisdom.entity.ControlParaRecord
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class SysparaAdapter constructor(context: Context) : BaseAdapter() {
+ private val context = context
+ private val list = ArrayList<ControlParaRecord>()
+
+ fun setList(data: List<ControlParaRecord>?) {
+ list.clear()
+ if (data != null && data.isNotEmpty()) {
+ list.addAll(data)
+ }
+ }
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val holder: Holder
+ var view = convertView
+ if (view == null) {
+ holder = Holder()
+ view = View.inflate(context, R.layout.item_syspara, null)
+ holder.paraname = view.findViewById(R.id.tv_name) as TextView
+ holder.paraval = view.findViewById(R.id.tv_value) as TextView
+
+ view.tag = holder
+ } else {
+ holder = view.tag as Holder
+ }
+ holder.paraname.text = list[position].paraname
+ holder.paraval.text = list[position].paraval
+ return view!!
+ }
+
+ override fun getItem(position: Int): ControlParaRecord {
+ return list[position]
+ }
+
+ override fun getItemId(position: Int): Long {
+ return position.toLong()
+ }
+
+ override fun getCount(): Int {
+ return list.size
+ }
+
+ private inner class Holder {
+ lateinit var paraname: TextView
+ lateinit var paraval: TextView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeAcvitity.kt b/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
similarity index 98%
rename from app/src/main/java/com/supwisdom/activities/upgrade/UpgradeAcvitity.kt
rename to app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
index 0e57a3b..5e7b4c8 100644
--- a/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeAcvitity.kt
+++ b/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
@@ -24,7 +24,7 @@
** @desc
**/
@Suppress("DEPRECATION")
-class UpgradeAcvitity : BaseActivity() {
+class UpgradeActivity : BaseActivity() {
private lateinit var vResult: TextView
private lateinit var vUpgradeMsg: TextView
private lateinit var vServerUrl: TextView
diff --git a/app/src/main/java/com/supwisdom/db/ControlParaDao.kt b/app/src/main/java/com/supwisdom/db/ControlParaDao.kt
index 8998aa8..d683d9c 100644
--- a/app/src/main/java/com/supwisdom/db/ControlParaDao.kt
+++ b/app/src/main/java/com/supwisdom/db/ControlParaDao.kt
@@ -24,13 +24,30 @@
try {
db.beginTransaction()
if (db.replace(TABLE, null, values) > 0) {
- db.setTransactionSuccessful()
- return true
+ return false
}
+ db.setTransactionSuccessful()
+ return true
} finally {
db.endTransaction()
}
- return false
+ }
+
+ fun replace(paraname: String, paraval: String): Boolean {
+ val db = dbHelper.readableDatabase
+ val values = ContentValues()
+ values.put(BeanPropEnum.ControlPara.paraname.toString(), paraname)
+ values.put(BeanPropEnum.ControlPara.paraval.toString(), paraval)
+ try {
+ db.beginTransaction()
+ if (db.replace(TABLE, null, values) < 0) {
+ return false
+ }
+ db.setTransactionSuccessful()
+ return true
+ } finally {
+ db.endTransaction()
+ }
}
fun update(record: ControlParaRecord): Boolean {
diff --git a/app/src/main/java/com/supwisdom/db/Pos.kt b/app/src/main/java/com/supwisdom/db/Pos.kt
index 205e656..5a3e1f2 100644
--- a/app/src/main/java/com/supwisdom/db/Pos.kt
+++ b/app/src/main/java/com/supwisdom/db/Pos.kt
@@ -20,6 +20,7 @@
private val whiteListDao = WhiteListDao(context)
private val transdtlOnlineDao = TransdtlOnlineDao(sdContext)
private val transdtlOfflineDao = TransdtlOfflineDao(sdContext)
+ private val transdtlUnionDao = TransdtlUnionDao(sdContext)
private var onlMaxSeqno = 0
private var offMaxSeqno = 0
@@ -63,6 +64,15 @@
}
}
+ fun replaceControlPara(paraname: String, paraval: String): Boolean {
+ try {
+ controlParaDao.getLock().lock()
+ return controlParaDao.replace(paraname, paraval)
+ } finally {
+ controlParaDao.getLock().unlock()
+ }
+ }
+
fun getControlPara(paraname: String): ControlParaRecord? {
try {
controlParaDao.getLock().lock()
@@ -235,4 +245,19 @@
transdtlOfflineDao.getLock().unlock()
}
}
+
+ /**
+ * @param date yyyyMMdd
+ * @param offset 流水偏移量
+ * @param flag 0--全部流水 1--成功流水 2--失败流水
+ * @param num 查询数量
+ */
+ fun getTransdtlUnion(date: String, offset: Int, flag: Int, num: Int): List<TransdtlUnionRecord> {
+ try {
+ transdtlUnionDao.getLock().lock()
+ return transdtlUnionDao.get(date, offset, flag, num)
+ } finally {
+ transdtlUnionDao.getLock().unlock()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
index 99b2107..1071836 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
@@ -46,7 +46,7 @@
return dbHelper.getLock()
}
- fun get(date: String, offset: Int, flag: Int): List<TransdtlUnionRecord> {
+ fun get(date: String, offset: Int, flag: Int, num: Int): List<TransdtlUnionRecord> {
val db = dbHelper.readableDatabase
var cursor: Cursor? = null
var sql = when (flag) {
@@ -77,9 +77,9 @@
}
}
sql += if (offset > 0) {
- " limit 1 offset $offset"
+ " limit $num offset $offset"
} else {
- " limit 1"
+ " limit $num"
}
try {
cursor = db.rawQuery(sql, null)
diff --git a/app/src/main/java/com/supwisdom/entity/ControlParaRecord.kt b/app/src/main/java/com/supwisdom/entity/ControlParaRecord.kt
index 441d056..7e1ff12 100644
--- a/app/src/main/java/com/supwisdom/entity/ControlParaRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/ControlParaRecord.kt
@@ -5,6 +5,15 @@
** @desc 本地控制参数
**/
class ControlParaRecord {
+ constructor() {
+
+ }
+
+ constructor(paraname: String, paraval: String) {
+ this.paraname = paraname
+ this.paraval = paraval
+ }
+
var paraname: String? = null
var paraval: String? = null
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
index 8a163cb..f55b2bb 100644
--- a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
@@ -106,7 +106,7 @@
}
- fun get(url: String, params: WebParams): TransResp? {
+ fun get(url: String, params: WebParams?): TransResp? {
val request = Request.Builder()
.url(geturl(url, params))
.addHeader("Accept", "application/json; q=0.5")
diff --git a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
index 66e1930..b1362e9 100644
--- a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
+++ b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
@@ -2,10 +2,11 @@
import com.supwisdom.activities.SPApplication
import com.supwisdom.entity.SysParaRecord
+import com.supwisdom.exception.HeartBeatError
+import com.supwisdom.exception.TransdtlUploadError
import com.supwisdom.utils.CommonUtil
import com.supwisdom.utils.DateUtil
import com.supwisdom.utils.FileUtil
-import com.supwisdom.utils.PublicDef
/**
** create by zzq on 2019/7/23
@@ -53,24 +54,33 @@
private fun doYktHeartAndTransdtl() {
//做一卡通的心跳以及流水上传
-// val resp = apiInterface!!.heartBeat()
-// if (resp.getRetcode() != PublicDef.SUCCESS) {
-// SPApplication.getInstance().setEpayLinking(false)
-// return
-// }
-// SPApplication.getInstance().setEpayLinking(true)
-//
+ try {
+ apiInterface!!.heartBeat()
+ SPApplication.getInstance().setEpayLinking(true)
// /*自动签到*/
// if (SPApplication.getInstance().getAuthStatus() > 2 && SPApplication.getInstance().getAuthStatus() < 5) {
// autoAuth()
// }
- pos.getTransdtlOnlineUnconfirm().forEach {
- apiInterface!!.uploadTransdtl(it)
- it.upflag = 1
+ uploadTransdtl()
+ } catch (ex: HeartBeatError) {
+ SPApplication.getInstance().setEpayLinking(false)
}
- pos.getTransdtlOfflineUnconfirm().forEach {
- apiInterface!!.uploadTransdtl(it)
- it.upflag = 1
+ }
+
+ private fun uploadTransdtl() {
+ try {
+ pos.getTransdtlOfflineUnconfirm().forEach {
+ apiInterface!!.uploadTransdtl(it)
+ it.upflag = 1
+ pos.updateTransdtlOffline(it)
+ }
+ pos.getTransdtlOnlineUnconfirm().forEach {
+ apiInterface!!.uploadTransdtl(it)
+ it.upflag = 1
+ pos.updateTransdtlOnline(it)
+ }
+ } catch (ex: TransdtlUploadError) {
+ ex.printStackTrace()
}
}
@@ -96,7 +106,7 @@
/*删除15天前的日志*/
FileUtil.removeLogFile(15)
- FileUtil.removeCrashFile(30)
- FileUtil.removeDtlFile(3)
+ FileUtil.removeCrashFile(15)
+ FileUtil.removeDtlFile(15)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index 89d6623..8bdea54 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -2,6 +2,10 @@
import com.supwisdom.activities.SPApplication
import com.supwisdom.activities.YktSession
+import com.supwisdom.bean.HeartBeatRetBean
+import com.supwisdom.bean.SystemParaRetBean
+import com.supwisdom.bean.TransdtlRetBean
+import com.supwisdom.bean.WhiteListRetBean
import com.supwisdom.entity.ReversalFlag
import com.supwisdom.entity.TransdtlOfflineRecord
import com.supwisdom.entity.TransdtlOnlineRecord
@@ -11,6 +15,8 @@
import com.supwisdom.exception.WhiteListError
import com.supwisdom.okhttp.WebParams
import com.supwisdom.utils.DateUtil
+import com.supwisdom.utils.GsonUtil
+import com.supwisdom.utils.PublicDef
/**
** create by zzq on 2019/7/23
@@ -30,10 +36,16 @@
.setParameter("cardverno", dyRecord?.cardverno)
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/heartbeat", "", params)
+ ?: throw HeartBeatError("请求超时")
+ val retBean = GsonUtil.GsonToBean(resp.retjson!!, HeartBeatRetBean::class.java)
+ if (retBean.retcode != PublicDef.SUCCESS) {
+ throw HeartBeatError(retBean.retmsg!!)
+ }
}
+ @Throws(HeartBeatError::class)
override fun linkCheck() {
-
+ heartBeat()
}
@Throws(SysParaError::class)
@@ -46,6 +58,11 @@
.setParameter("paragroupid", dyRecord?.paragroupid)
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/systempara", "", params)
+ ?: throw SysParaError("请求超时")
+ val retBean = GsonUtil.GsonToBean(resp.retjson!!, SystemParaRetBean::class.java)
+ if (retBean.retcode != PublicDef.SUCCESS) {
+ throw SysParaError(retBean.retmsg!!)
+ }
}
@Throws(WhiteListError::class)
@@ -56,6 +73,11 @@
.setParameter("maxcount", 20)
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/whitelist", "", params)
+ ?: throw WhiteListError("请求超时")
+ val retBean = GsonUtil.GsonToBean(resp.retjson!!, WhiteListRetBean::class.java)
+ if (retBean.retcode != PublicDef.SUCCESS) {
+ throw WhiteListError(retBean.retmsg!!)
+ }
}
@Throws(TransdtlUploadError::class)
@@ -66,6 +88,14 @@
.setParameter("maxcount", 20)
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/paycancel", "", params)
+ ?: throw TransdtlUploadError("请求超时")
+ val retBean = GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
+ if (retBean.retcode != PublicDef.SUCCESS) {
+ throw TransdtlUploadError(retBean.retmsg!!)
+ }
+ if (retBean.termseqno != record.devseqno) {
+ throw TransdtlUploadError("返回流水号不一致")
+ }
}
@Throws(TransdtlUploadError::class)
@@ -93,5 +123,13 @@
.setParameter("status", record.status.toString())
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/offlinetransdtl", "", params)
+ ?: throw TransdtlUploadError("请求超时")
+ val retBean = GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
+ if (retBean.retcode != PublicDef.SUCCESS) {
+ throw TransdtlUploadError(retBean.retmsg!!)
+ }
+ if (retBean.termseqno != record.devseqno) {
+ throw TransdtlUploadError("返回流水号不一致")
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
index ccd03aa..917f39c 100644
--- a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
@@ -18,6 +18,7 @@
import java.io.FileOutputStream
import java.io.PrintWriter
import java.io.StringWriter
+import java.util.regex.Pattern
/**
* @author zzq
@@ -73,6 +74,12 @@
(context as Activity).startActivityForResult(intent, 0)
}
+ fun isNumeric(str: String): Boolean {
+ val pattern = Pattern.compile("[0-9]*")
+ val isNum = pattern.matcher(str)
+ return isNum.matches()
+ }
+
fun showFormatAmount(preHint: String, amount: Int): String {
return String.format("%s: %.02f元", preHint, amount / 100.0f)
}
diff --git a/app/src/main/res/drawable-mdpi/all_back_focus.png b/app/src/main/res/drawable-mdpi/all_back_focus.png
new file mode 100644
index 0000000..8f98e97
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/all_back_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/all_back_normal.png b/app/src/main/res/drawable-mdpi/all_back_normal.png
new file mode 100644
index 0000000..cb831ce
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/all_back_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/all_home_focus.png b/app/src/main/res/drawable-mdpi/all_home_focus.png
new file mode 100644
index 0000000..23050ea
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/all_home_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/all_home_normal.png b/app/src/main/res/drawable-mdpi/all_home_normal.png
new file mode 100644
index 0000000..db94187
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/all_home_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/arrow.png b/app/src/main/res/drawable-mdpi/arrow.png
new file mode 100644
index 0000000..24bf7da
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/arrow.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/background.jpg b/app/src/main/res/drawable-mdpi/background.jpg
new file mode 100644
index 0000000..dfeb4af
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/background.jpg
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/bak_minus_focus.png b/app/src/main/res/drawable-mdpi/bak_minus_focus.png
new file mode 100644
index 0000000..230fe76
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/bak_minus_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/bak_minus_normal.png b/app/src/main/res/drawable-mdpi/bak_minus_normal.png
new file mode 100644
index 0000000..c6c9d67
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/bak_minus_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/big_picture_count_bak.png b/app/src/main/res/drawable-mdpi/big_picture_count_bak.png
new file mode 100644
index 0000000..4b3aa81
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/big_picture_count_bak.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/btn_red_click.png b/app/src/main/res/drawable-mdpi/btn_red_click.png
new file mode 100644
index 0000000..580c410
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/btn_red_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/btn_red_normal.png b/app/src/main/res/drawable-mdpi/btn_red_normal.png
new file mode 100644
index 0000000..f447037
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/btn_red_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/btn_rf_cancel_focus.png b/app/src/main/res/drawable-mdpi/btn_rf_cancel_focus.png
new file mode 100644
index 0000000..622b075
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/btn_rf_cancel_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/btn_rf_cancel_normal.png b/app/src/main/res/drawable-mdpi/btn_rf_cancel_normal.png
new file mode 100644
index 0000000..c6dda8e
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/btn_rf_cancel_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/btn_rf_start_focus.png b/app/src/main/res/drawable-mdpi/btn_rf_start_focus.png
new file mode 100644
index 0000000..93ac164
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/btn_rf_start_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/btn_rf_start_normal.png b/app/src/main/res/drawable-mdpi/btn_rf_start_normal.png
new file mode 100644
index 0000000..2565a57
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/btn_rf_start_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/consume_cancel_focus.png b/app/src/main/res/drawable-mdpi/consume_cancel_focus.png
new file mode 100644
index 0000000..b5a7293
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/consume_cancel_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/consume_cancel_normal.png b/app/src/main/res/drawable-mdpi/consume_cancel_normal.png
new file mode 100644
index 0000000..0ce3a04
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/consume_cancel_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/consume_middle_background.png b/app/src/main/res/drawable-mdpi/consume_middle_background.png
new file mode 100644
index 0000000..4aabc91
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/consume_middle_background.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/consume_pay_focus.png b/app/src/main/res/drawable-mdpi/consume_pay_focus.png
new file mode 100644
index 0000000..f39b8b0
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/consume_pay_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/consume_pay_normal.png b/app/src/main/res/drawable-mdpi/consume_pay_normal.png
new file mode 100644
index 0000000..3488719
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/consume_pay_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/enable_btn_cancel_focus.png b/app/src/main/res/drawable-mdpi/enable_btn_cancel_focus.png
new file mode 100644
index 0000000..80a9edb
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/enable_btn_cancel_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/enable_btn_cancel_normal.png b/app/src/main/res/drawable-mdpi/enable_btn_cancel_normal.png
new file mode 100644
index 0000000..75c0087
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/enable_btn_cancel_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/enable_btn_next_focus.png b/app/src/main/res/drawable-mdpi/enable_btn_next_focus.png
new file mode 100644
index 0000000..1d0c2f4
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/enable_btn_next_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/enable_btn_next_normal.png b/app/src/main/res/drawable-mdpi/enable_btn_next_normal.png
new file mode 100644
index 0000000..4db2d60
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/enable_btn_next_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/enable_btn_next_unable.png b/app/src/main/res/drawable-mdpi/enable_btn_next_unable.png
new file mode 100644
index 0000000..0247799
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/enable_btn_next_unable.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/enable_middle_bak.png b/app/src/main/res/drawable-mdpi/enable_middle_bak.png
new file mode 100644
index 0000000..5ea5683
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/enable_middle_bak.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_offline.png b/app/src/main/res/drawable-mdpi/main_offline.png
new file mode 100644
index 0000000..a35326c
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_offline.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_online.png b/app/src/main/res/drawable-mdpi/main_online.png
new file mode 100644
index 0000000..06aed69
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_online.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_cancel_consume.png b/app/src/main/res/drawable-mdpi/main_src_cancel_consume.png
new file mode 100644
index 0000000..77d3e8e
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_cancel_consume.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_consume.png b/app/src/main/res/drawable-mdpi/main_src_consume.png
new file mode 100644
index 0000000..9d94ebf
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_consume.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_device_manage.png b/app/src/main/res/drawable-mdpi/main_src_device_manage.png
new file mode 100644
index 0000000..b0d32f1
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_device_manage.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_do_transdtl.png b/app/src/main/res/drawable-mdpi/main_src_do_transdtl.png
new file mode 100644
index 0000000..4524728
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_do_transdtl.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_hotel_consume.png b/app/src/main/res/drawable-mdpi/main_src_hotel_consume.png
new file mode 100644
index 0000000..cf50434
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_hotel_consume.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_manual_auth.png b/app/src/main/res/drawable-mdpi/main_src_manual_auth.png
new file mode 100644
index 0000000..6e69685
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_manual_auth.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_net_test.png b/app/src/main/res/drawable-mdpi/main_src_net_test.png
new file mode 100644
index 0000000..7993cae
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_net_test.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_online_order.png b/app/src/main/res/drawable-mdpi/main_src_online_order.png
new file mode 100644
index 0000000..7e0e456
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_online_order.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_query_para.png b/app/src/main/res/drawable-mdpi/main_src_query_para.png
new file mode 100644
index 0000000..b992a8d
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_query_para.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_query_revenue.png b/app/src/main/res/drawable-mdpi/main_src_query_revenue.png
new file mode 100644
index 0000000..30bb3f2
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_query_revenue.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_update_blacklist.png b/app/src/main/res/drawable-mdpi/main_src_update_blacklist.png
new file mode 100644
index 0000000..686a5a6
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_update_blacklist.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/main_src_upload_transdtl.png b/app/src/main/res/drawable-mdpi/main_src_upload_transdtl.png
new file mode 100644
index 0000000..6dc721a
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/main_src_upload_transdtl.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_big_picture_close_btn.png b/app/src/main/res/drawable-mdpi/order_big_picture_close_btn.png
new file mode 100644
index 0000000..4a21eef
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_big_picture_close_btn.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_big_picture_out_bak.png b/app/src/main/res/drawable-mdpi/order_big_picture_out_bak.png
new file mode 100644
index 0000000..6231b4b
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_big_picture_out_bak.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_btn_purchase.png b/app/src/main/res/drawable-mdpi/order_btn_purchase.png
new file mode 100644
index 0000000..416af7b
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_btn_purchase.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_clear_focus.png b/app/src/main/res/drawable-mdpi/order_clear_focus.png
new file mode 100644
index 0000000..20699ee
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_clear_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_clear_normal.png b/app/src/main/res/drawable-mdpi/order_clear_normal.png
new file mode 100644
index 0000000..4a335ec
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_clear_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_food_self_add_focus.png b/app/src/main/res/drawable-mdpi/order_food_self_add_focus.png
new file mode 100644
index 0000000..c86b446
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_food_self_add_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_food_self_add_normal.png b/app/src/main/res/drawable-mdpi/order_food_self_add_normal.png
new file mode 100644
index 0000000..75788fc
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_food_self_add_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_good_add_focus.png b/app/src/main/res/drawable-mdpi/order_good_add_focus.png
new file mode 100644
index 0000000..2d6d7f5
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_good_add_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_good_add_normal.png b/app/src/main/res/drawable-mdpi/order_good_add_normal.png
new file mode 100644
index 0000000..cf026ba
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_good_add_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_good_minus_focus.png b/app/src/main/res/drawable-mdpi/order_good_minus_focus.png
new file mode 100644
index 0000000..43a225c
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_good_minus_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_good_minus_normal.png b/app/src/main/res/drawable-mdpi/order_good_minus_normal.png
new file mode 100644
index 0000000..ac58ec1
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_good_minus_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_picture_out_bak.png b/app/src/main/res/drawable-mdpi/order_picture_out_bak.png
new file mode 100644
index 0000000..cd2a360
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_picture_out_bak.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_picture_zoom.png b/app/src/main/res/drawable-mdpi/order_picture_zoom.png
new file mode 100644
index 0000000..07558da
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_picture_zoom.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_purchase_focus.png b/app/src/main/res/drawable-mdpi/order_purchase_focus.png
new file mode 100644
index 0000000..cbf4d7f
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_purchase_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/order_purchase_normal.png b/app/src/main/res/drawable-mdpi/order_purchase_normal.png
new file mode 100644
index 0000000..6907626
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/order_purchase_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_delete_click.png b/app/src/main/res/drawable-mdpi/pass_delete_click.png
new file mode 100644
index 0000000..d05207d
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_delete_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_delete_normal.png b/app/src/main/res/drawable-mdpi/pass_delete_normal.png
new file mode 100644
index 0000000..b77fc91
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_delete_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_eight_click.png b/app/src/main/res/drawable-mdpi/pass_eight_click.png
new file mode 100644
index 0000000..c26ffd8
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_eight_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_eight_normal.png b/app/src/main/res/drawable-mdpi/pass_eight_normal.png
new file mode 100644
index 0000000..9b2ece0
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_eight_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_five_click.png b/app/src/main/res/drawable-mdpi/pass_five_click.png
new file mode 100644
index 0000000..c555169
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_five_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_five_normal.png b/app/src/main/res/drawable-mdpi/pass_five_normal.png
new file mode 100644
index 0000000..3a6460b
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_five_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_four_click.png b/app/src/main/res/drawable-mdpi/pass_four_click.png
new file mode 100644
index 0000000..8b2325f
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_four_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_four_normal.png b/app/src/main/res/drawable-mdpi/pass_four_normal.png
new file mode 100644
index 0000000..97bd59f
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_four_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_nine_click.png b/app/src/main/res/drawable-mdpi/pass_nine_click.png
new file mode 100644
index 0000000..0aec332
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_nine_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_nine_normal.png b/app/src/main/res/drawable-mdpi/pass_nine_normal.png
new file mode 100644
index 0000000..76f2f37
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_nine_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_one_click.png b/app/src/main/res/drawable-mdpi/pass_one_click.png
new file mode 100644
index 0000000..6dd704f
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_one_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_one_normal.png b/app/src/main/res/drawable-mdpi/pass_one_normal.png
new file mode 100644
index 0000000..ac0beaa
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_one_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_seven_click.png b/app/src/main/res/drawable-mdpi/pass_seven_click.png
new file mode 100644
index 0000000..b685327
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_seven_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_seven_normal.png b/app/src/main/res/drawable-mdpi/pass_seven_normal.png
new file mode 100644
index 0000000..a1431b1
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_seven_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_six_click.png b/app/src/main/res/drawable-mdpi/pass_six_click.png
new file mode 100644
index 0000000..c8501e2
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_six_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_six_normal.png b/app/src/main/res/drawable-mdpi/pass_six_normal.png
new file mode 100644
index 0000000..f4df1ff
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_six_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_three_click.png b/app/src/main/res/drawable-mdpi/pass_three_click.png
new file mode 100644
index 0000000..55959a7
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_three_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_three_normal.png b/app/src/main/res/drawable-mdpi/pass_three_normal.png
new file mode 100644
index 0000000..5a76454
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_three_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_two_click.png b/app/src/main/res/drawable-mdpi/pass_two_click.png
new file mode 100644
index 0000000..ba99d1d
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_two_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_two_normal.png b/app/src/main/res/drawable-mdpi/pass_two_normal.png
new file mode 100644
index 0000000..1a1e6e3
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_two_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_zero_click.png b/app/src/main/res/drawable-mdpi/pass_zero_click.png
new file mode 100644
index 0000000..2e72719
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_zero_click.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/pass_zero_normal.png b/app/src/main/res/drawable-mdpi/pass_zero_normal.png
new file mode 100644
index 0000000..7463c4a
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/pass_zero_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/password_pwd_frame.png b/app/src/main/res/drawable-mdpi/password_pwd_frame.png
new file mode 100644
index 0000000..52bfc7b
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/password_pwd_frame.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/qrcode_scan_line.png b/app/src/main/res/drawable-mdpi/qrcode_scan_line.png
new file mode 100644
index 0000000..ead6117
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/qrcode_scan_line.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/query_next_focus.png b/app/src/main/res/drawable-mdpi/query_next_focus.png
new file mode 100644
index 0000000..34c49d8
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/query_next_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/query_next_normal.png b/app/src/main/res/drawable-mdpi/query_next_normal.png
new file mode 100644
index 0000000..a026ed4
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/query_next_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/query_prev_focus.png b/app/src/main/res/drawable-mdpi/query_prev_focus.png
new file mode 100644
index 0000000..e4681d0
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/query_prev_focus.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/query_prev_normal.png b/app/src/main/res/drawable-mdpi/query_prev_normal.png
new file mode 100644
index 0000000..d8415b1
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/query_prev_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/star_full.png b/app/src/main/res/drawable-mdpi/star_full.png
new file mode 100644
index 0000000..e1ee5d3
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/star_full.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/star_normal.png b/app/src/main/res/drawable-mdpi/star_normal.png
new file mode 100644
index 0000000..119768c
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/star_normal.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/test_food.png b/app/src/main/res/drawable-mdpi/test_food.png
new file mode 100644
index 0000000..dedd453
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/test_food.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/test_food2.png b/app/src/main/res/drawable-mdpi/test_food2.png
new file mode 100644
index 0000000..4b14037
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/test_food2.png
Binary files differ
diff --git a/app/src/main/res/drawable/order_clear_selector.xml b/app/src/main/res/drawable/order_clear_selector.xml
deleted file mode 100644
index f10f556..0000000
--- a/app/src/main/res/drawable/order_clear_selector.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/order_clear_normal" />
- <item android:state_selected="true" android:drawable="@drawable/order_clear_focus" />
- <item android:state_pressed="true" android:drawable="@drawable/order_clear_focus" />
- <item android:state_pressed="false" android:drawable="@drawable/order_clear_normal" />
-</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/order_pay_selector.xml b/app/src/main/res/drawable/order_pay_selector.xml
deleted file mode 100644
index 4c123ac..0000000
--- a/app/src/main/res/drawable/order_pay_selector.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_selected="true" android:drawable="@drawable/order_purchase_focus" />
- <item android:state_pressed="true" android:drawable="@drawable/order_purchase_focus" />
- <item android:drawable="@drawable/order_purchase_normal" />
-</selector>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_check_mngpwd.xml b/app/src/main/res/layout/activity_check_mngpwd.xml
new file mode 100644
index 0000000..1394d96
--- /dev/null
+++ b/app/src/main/res/layout/activity_check_mngpwd.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/head_title_out_style">
+
+ <LinearLayout style="@style/head_title_inner_style">
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/head_title_text_style"
+ android:text="密码界面" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="20dp"
+ android:layout_marginTop="10dp"
+ android:text="等待密码校验"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+
+ <TextView
+ android:id="@+id/content"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="20dp"
+ android:layout_marginTop="10dp"
+ android:text=""
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_consume_mode.xml b/app/src/main/res/layout/activity_consume_mode.xml
new file mode 100644
index 0000000..99e494f
--- /dev/null
+++ b/app/src/main/res/layout/activity_consume_mode.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/head_title_out_style">
+
+ <LinearLayout style="@style/head_title_inner_style">
+
+ <TextView
+ style="@style/head_title_text_style"
+ android:text="消费模式" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="10dp"
+ android:text="0-普通消费\n非0定额消费\n单位(分)"
+ android:textColor="@color/light_blue2"
+ android:textSize="20sp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="10dp"
+ android:text="金额: "
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+
+ <TextView
+ android:id="@+id/tv_consume_mode_payamt"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:maxLength="6"
+ android:padding="10dp"
+ android:text="0"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+ </LinearLayout>
+
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_menu.xml b/app/src/main/res/layout/activity_menu.xml
new file mode 100644
index 0000000..e938845
--- /dev/null
+++ b/app/src/main/res/layout/activity_menu.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/light_blue2"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="20dp"
+ android:background="@drawable/corner_bg_white"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:gravity="center"
+ android:text="管理界面"
+ android:textColor="@color/light_blue2"
+ android:textSize="45sp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginLeft="10dp"
+ android:orientation="vertical"
+ android:padding="10dp">
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_revenue" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_transdtl_upload" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_link_check" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_auth" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_syspara_query" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_manage" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_shop_password_set" />
+
+ <TextView
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_consume_mode" />
+
+ <TextView
+ android:id="@+id/tv_reverse"
+ style="@style/menu_item_text_style"
+ android:text="@string/consume_menu_reverse" />
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_password.xml b/app/src/main/res/layout/activity_password.xml
new file mode 100644
index 0000000..f1943ea
--- /dev/null
+++ b/app/src/main/res/layout/activity_password.xml
@@ -0,0 +1,26 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/light_blue2"
+ android:orientation="vertical">
+ <!--上半部分-->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="20dp"
+ android:background="@drawable/corner_bg_white"
+ android:orientation="vertical">
+ <!--提示文字-->
+ <TextView
+ android:id="@+id/passwd_title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:gravity="center"
+ android:text="商户密码修改"
+ android:textColor="@color/light_blue2"
+ android:textSize="@dimen/password_hint_size" />
+
+ </LinearLayout>
+</LinearLayout>
+
diff --git a/app/src/main/res/layout/activity_syspara.xml b/app/src/main/res/layout/activity_syspara.xml
new file mode 100644
index 0000000..c2f781a
--- /dev/null
+++ b/app/src/main/res/layout/activity_syspara.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/light_blue2"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="10dp"
+ android:background="@drawable/corner_bg_white"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:gravity="center"
+ android:text="参数查询"
+ android:textColor="@color/light_blue2"
+ android:textSize="50sp" />
+
+ <ListView
+ android:id="@+id/lv_param"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:divider="@null"
+ android:dividerHeight="2dp" />
+ </LinearLayout>
+</LinearLayout>
diff --git a/app/src/main/res/layout/item_syspara.xml b/app/src/main/res/layout/item_syspara.xml
new file mode 100644
index 0000000..cdaccac
--- /dev/null
+++ b/app/src/main/res/layout/item_syspara.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:weightSum="2">
+
+ <TextView
+ android:id="@+id/tv_name"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp"/>
+
+ <TextView
+ android:id="@+id/tv_value"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp"/>
+</LinearLayout>
\ No newline at end of file