Merge branch 'hotfix/1.0.6'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed48cb0..bf5d0b9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,10 +33,6 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
- <!--写时钟权限-->
- <uses-permission
- android:name="android.permission.WRITE_SETTINGS"
- serviceandroid:ignore="ProtectedPermissions"/>
<uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS"
serviceandroid:ignore="ProtectedPermissions"/>
diff --git a/app/src/main/java/com/newcapec/jni/Icc.java b/app/src/main/java/com/newcapec/jni/Icc.java
index 3a4f197..0a3cb03 100644
--- a/app/src/main/java/com/newcapec/jni/Icc.java
+++ b/app/src/main/java/com/newcapec/jni/Icc.java
@@ -13,12 +13,12 @@
/**
* @param version
*/
- public Icc(int version) {
- if (version < 110) {
+ public Icc(String version) {
+ if (version.compareTo("110") < 0) {
System.loadLibrary("iccV108");
- } else if (version < 115) {
+ } else if (version.compareTo("115") < 0) {
System.loadLibrary("iccV110");
- } else if (version < 116) {
+ } else if (version.compareTo("116") < 0) {
System.loadLibrary("iccV115");
} else {
System.loadLibrary("iccV116");
diff --git a/app/src/main/java/com/newcapec/jni/Picc.java b/app/src/main/java/com/newcapec/jni/Picc.java
index fadb179..18ecad4 100644
--- a/app/src/main/java/com/newcapec/jni/Picc.java
+++ b/app/src/main/java/com/newcapec/jni/Picc.java
@@ -105,10 +105,10 @@
/**
* @param version
*/
- public Picc(int version) {
- if (version < 110) {
+ public Picc(String version) {
+ if (version.compareTo("110") < 0) {
System.loadLibrary("piccV108");
- } else if (version < 116) {
+ } else if (version.compareTo("116") < 0) {
System.loadLibrary("piccV115");
} else {
System.loadLibrary("piccV116");
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
index 7febabd..363ff7f 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -20,6 +20,7 @@
import com.supwisdom.activities.transdtl.TransdtlActivity
import com.supwisdom.auxscreen.AuxScreenController
import com.supwisdom.entity.PayStatus
+import com.supwisdom.entity.PeriodFixPayRecord
import com.supwisdom.entity.ReversalFlag
import com.supwisdom.entity.TransdtlUnionRecord
import com.supwisdom.utils.CommonUtil
@@ -55,14 +56,15 @@
private lateinit var vLastPayFailreason: TextView
private lateinit var vLastPayFailll: LinearLayout
private lateinit var vLastPayamtll: LinearLayout
+ private val pos = SPApplication.getInstance().getPos()
private var beepManager: BeepManager? = null
private val scanLock = ReentrantLock()
@Volatile
- private var codeSwitchEnable = false
+ private var cardPaying = false
@Volatile
private var payStatusEnable = false
@Volatile
- private var isBackRuning = false
+ private var isBackRunning = false
private var addAmount: Int = 0
@Volatile
private var amount: Int = 0
@@ -73,6 +75,8 @@
private var counter: LastPayShowTimer? = null
private var lastPayInfo: CardUserInfoBean? = null
private var dialogPurchase: DialogPurchase? = null
+ private var periodFixPayList: List<PeriodFixPayRecord>? = null
+ private var periodFixPayEnable = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -106,16 +110,12 @@
}
override fun callback(code: String) {
- //扫码和寻卡消费互斥
- if (!codeSwitchEnable) {
- return
- }
if (!scanLock.tryLock()) {
return
}
try {
//正在扣款
- if (dialogPurchase!!.codePaying) {
+ if (someWayPaying()) {
return
}
//已扣款
@@ -136,6 +136,13 @@
presenter.loadLastTransdtl()
}
+ private fun someWayPaying(): Boolean {
+ if (cardPaying || dialogPurchase!!.codePaying || isBackRunning) {
+ return true
+ }
+ return false
+ }
+
private fun initView() {
vShopname = this.findViewById<TextView>(R.id.tv_shopname)
vLinkLogo = this.findViewById<ImageView>(R.id.tv_linklogo)
@@ -157,7 +164,7 @@
override fun onStop() {
super.onStop()
- isBackRuning = true
+ isBackRunning = true
}
override fun onDestroy() {
@@ -170,6 +177,7 @@
@SuppressLint("SetTextI18n")
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
+ presenter.resetOperationTime()
when (payMode) {
PayMode.FIXPAY -> fixInputPay(event.keyCode)
PayMode.HOTKEY -> hotkeyInputPay(event.keyCode)
@@ -183,7 +191,7 @@
when (keyCode) {
KeyEvent.KEYCODE_DPAD_LEFT -> {
//'F1'
- isBackRuning = true
+ isBackRunning = true
jumpActivity(MenuActivity::class.java)
}
KeyEvent.KEYCODE_DPAD_RIGHT -> {
@@ -218,7 +226,7 @@
}
KeyEvent.KEYCODE_DPAD_LEFT -> {
//'F1'
- isBackRuning = true
+ isBackRunning = true
jumpActivity(MenuActivity::class.java)
}
KeyEvent.KEYCODE_DPAD_RIGHT -> {
@@ -263,7 +271,7 @@
}
KeyEvent.KEYCODE_DPAD_LEFT -> {
//'F1'
- isBackRuning = true
+ isBackRunning = true
jumpActivity(MenuActivity::class.java)
}
// KeyEvent.KEYCODE_DPAD_UP ->
@@ -302,30 +310,39 @@
}
}
+ override fun screenSaver(flag: Boolean) {
+ if (flag) {
+ CommonUtil.setAppBrightness(this, PublicDef.SCREEN_SAVER_BRIGHTNESS)
+ } else {
+ CommonUtil.setAppBrightness(this, PublicDef.SCREEN_NORMAL_BRIGHTNESS)
+ }
+ }
+
private var lastshowtime: String? = null
override fun clearUserInfo(datetime: String) {
- if (!isBackRuning) {
- vCitizenName.text = null
- vCitizenCardno.text = null
- vCardstatus.text = null
- val tmptime = datetime.substring(0, 16)
- if (lastshowtime != tmptime) {
- lastshowtime = tmptime
- vTime.text = tmptime
- AuxScreenController.getInstance().refreshBottom(tmptime)
+ vCitizenName.text = null
+ vCitizenCardno.text = null
+ vCardstatus.text = null
+ val tmptime = datetime.substring(0, 16)
+ if (lastshowtime != tmptime) {
+ lastshowtime = tmptime
+ vTime.text = tmptime
+ AuxScreenController.getInstance().refreshBottom(tmptime)
+ if (periodFixPayEnable) {
+ parsePeriodFixPay()
}
- if (dialogPurchase!!.isShowing &&
- !dialogPurchase!!.isFixPay &&
- payStatusEnable
- ) {
- beepManager!!.playBeepSoundAndVibrate()
- }
+ }
+ if (dialogPurchase!!.isShowing &&
+ !dialogPurchase!!.isFixPay &&
+ payStatusEnable
+ ) {
+ beepManager!!.playBeepSoundAndVibrate()
}
}
override fun onResume() {
super.onResume()
- isBackRuning = false
+ isBackRunning = false
beepManager!!.updatePrefs()
dealIntent()
refresh()
@@ -354,7 +371,7 @@
private fun refresh() {
addAmount = 0
amountTxt.text = "0"
- var shopname = SPApplication.getInstance().getPos().getDynamicPara()!!.shopname
+ var shopname = pos.getDynamicPara()!!.shopname
if (shopname == null || shopname.length < 9) {
vShopname.textSize = resources.getDimension(R.dimen.consume_shopname_text_size_normal)
} else {
@@ -370,28 +387,31 @@
AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime().substring(0, 16))
AuxScreenController.getInstance().refreshContent(Arrays.asList(" 欢迎光临!", " 请刷卡..."))
- SPApplication.getInstance().getPos().getControlPara(PublicDef.CONTROL_FIXAMT)?.also { mode ->
+ periodFixPayEnable = false
+ pos.getControlPara(PublicDef.CONTROL_FIXAMT)?.also { mode ->
when {
mode.paraval == PayMode.HOTKEY.desc -> {
presenter.setFixMode(false)
payMode = PayMode.HOTKEY
hotkeyPayMap.clear()
hotkeyPayList.clear()
- SPApplication.getInstance().getPos().getHotkeyPay()?.forEach {
+ pos.getHotkeyPay()?.forEach {
hotkeyPayMap[it.key] = it.amount
hotkeyPayList.add(String.format("按键%d - %.02f元", it.key, it.amount / 100.0f))
}
AuxScreenController.getInstance().refreshContent(hotkeyPayList)
}
+ mode.paraval == PayMode.PERIODFIX.desc -> {
+ periodFixPayEnable = true
+ periodFixPayList = pos.getPeriodFixPay()
+ parsePeriodFixPay()
+ }
mode.paraval == PayMode.NORMAL.desc -> {
- presenter.setFixMode(false)
- payMode = PayMode.NORMAL
+ doNormalPay()
}
else -> {
- presenter.setFixMode(true)
- payMode = PayMode.FIXPAY
try {
- checkAmtToPay(Integer.parseInt(mode.paraval))
+ doFixPay(Integer.parseInt(mode.paraval))
} catch (ex: Exception) {
ex.printStackTrace()
}
@@ -400,6 +420,33 @@
}
}
+ private fun parsePeriodFixPay() {
+ val nowtime = DateUtil.getNowTimeNoFormat().substring(0, 4)
+ periodFixPayList?.forEach {
+ if (it.beginTime!! <= nowtime && nowtime < it.endTime!!) {
+ if (payMode != PayMode.FIXPAY || amount != it.amount) {
+ doFixPay(it.amount)
+ }
+ return
+ }
+ }
+ if (payMode != PayMode.NORMAL) {
+ doNormalPay()
+ }
+ }
+
+ private fun doFixPay(fixamt: Int) {
+ presenter.setFixMode(true)
+ payMode = PayMode.FIXPAY
+ checkAmtToPay(fixamt)
+ }
+
+ private fun doNormalPay() {
+ amount = 0
+ presenter.setFixMode(false)
+ payMode = PayMode.NORMAL
+ }
+
override fun refreshLinkStatus(isOnline: Boolean) {
if (isOnline) {
vLinkLogo.setImageDrawable(getDrawable(R.drawable.wireless_on))
@@ -643,8 +690,8 @@
return this
}
- override fun isBackRuning(): Boolean {
- return isBackRuning
+ override fun isBackRunning(): Boolean {
+ return isBackRunning
}
override fun showRecentDtl(record: TransdtlUnionRecord?) {
@@ -662,8 +709,8 @@
}
}
- override fun codeScannerEnable(enable: Boolean) {
- codeSwitchEnable = enable
+ override fun cardPayingStatus(isPaying: Boolean) {
+ cardPaying = isPaying
}
private fun resetPayShowCounter(timems: Long) {
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
index 43b5ed2..4be4346 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
@@ -16,10 +16,9 @@
** create by zzq on 2019/7/25
** @desc
**/
-class ConsumePresenter constructor(iConsumeView: IConsumeView) {
+class ConsumePresenter constructor(private val iConsumeView: IConsumeView) {
private val TAG = "ConsumePresenter"
private val pos = SPApplication.getInstance().getPos()
- private val iConsumeView = iConsumeView
private val codePayRunnable = CodePayRunnable()
private lateinit var handler: Handler
private var cardPayService: CardPayService
@@ -45,23 +44,24 @@
PublicDef.MSG_CARD_PAY_QUERY -> iConsumeView.showConsumeQuery(msg.obj as String)
PublicDef.MSG_CARD_PAY_FAIL -> {
val ret = msg.obj as CardUserInfoBean
- LogUtil.d(TAG, "pay fail,reason=${ret.retmsg}")
+ LogUtil.d(TAG, "pay fail,reason=$ret")
iConsumeView.showConsumeFail(ret)
}
PublicDef.MSG_PAYING_INTERRUPT -> {
val ret = msg.obj as CardUserInfoBean
- LogUtil.d(TAG, "pay interrupt,reason=${ret.retmsg}")
+ LogUtil.d(TAG, "pay interrupt,reason=$ret")
iConsumeView.showConsumeInterrupt(ret)
}
PublicDef.MSG_CARD_REVERSE_FAIL -> {
val ret = msg.obj as CardUserInfoBean
- LogUtil.d(TAG, "reverse fail,reason=${ret.retmsg}")
+ LogUtil.d(TAG, "reverse fail,reason=$ret")
iConsumeView.showReverseFail(msg.obj as CardUserInfoBean)
}
PublicDef.MSG_CARD_REVERSE_SUC -> iConsumeView.showReverseSuc(msg.obj as CardUserInfoBean)
PublicDef.MSG_USER_INFO_SHOW -> iConsumeView.showUserInfo(msg.obj as CardUserInfoBean)
PublicDef.MSG_USER_INFO_CLEAR -> iConsumeView.clearUserInfo(msg.obj as String)
PublicDef.MSG_LINK_STATUS -> iConsumeView.refreshLinkStatus(msg.obj as Boolean)
+ PublicDef.MSG_SCREEN_SAVER -> iConsumeView.screenSaver((msg.obj as String) == "on")
}
}
}
@@ -91,6 +91,10 @@
cardPayService.clickToInterrupt()
}
+ fun resetOperationTime() {
+ cardPayService.resetOperationTime()
+ }
+
fun setFixMode(isFixMode: Boolean) {
cardPayService.isFixMode = isFixMode
codePayService.isFixMode = isFixMode
@@ -133,5 +137,6 @@
enum class PayMode(val desc: String) {
NORMAL("none"),
FIXPAY("fixpay"),
- HOTKEY("hotkey")
+ HOTKEY("hotkey"),
+ PERIODFIX("periodfix")
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
index 608ff3f..3561af7 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
@@ -11,7 +11,7 @@
interface IConsumeView {
fun getActivity(): Activity
- fun isBackRuning(): Boolean
+ fun isBackRunning(): Boolean
fun showConsumeSuc(info: CardUserInfoBean)
@@ -34,6 +34,10 @@
fun refreshLinkStatus(isOnline: Boolean)
fun showRecentDtl(record: TransdtlUnionRecord?)
+ /**
+ * 是否正在刷卡支付
+ */
+ fun cardPayingStatus(isPaying: Boolean)
- fun codeScannerEnable(enable: Boolean)
+ fun screenSaver(flag: Boolean)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
index 047d57b..286b664 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
@@ -21,6 +21,10 @@
var transdate: String? = null
var transtime: String? = null
var payway: String? = null //card,code
+
+ override fun toString(): String {
+ return "name=$username,cardno=$cardno,amount=$amount,payway=$payway,retcode=$retcode,retmsg=$retmsg"
+ }
}
enum class CardStatus(val desc: String) {
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt
new file mode 100644
index 0000000..bcbf64e
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/ScreenSaverBean.kt
@@ -0,0 +1,11 @@
+package com.supwisdom.activities.consume.bean
+
+/**
+ ** create by zzq on 2019/11/5
+ ** @desc 屏保参数
+ **/
+class ScreenSaverBean {
+ var operationTime = 0L //ms
+ var operationFlag = false //是否操作
+ var flag = false //是否屏保
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
index 4b39eea..11f8580 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
@@ -39,7 +39,14 @@
/**
* 防止定额连续消费
*/
- private var lastPayBean = LastPayBean()
+ private val lastPayBean = LastPayBean()
+ @Volatile
+ private var operation = false
+ private val screenSaverBean = ScreenSaverBean()
+
+ init {
+ screenSaverBean.operationTime = System.currentTimeMillis()
+ }
fun start() {
isExist = false
@@ -75,6 +82,10 @@
payQueryConfirm = false
}
+ fun resetOperationTime() {
+ operation = true
+ }
+
private inner class CardPayRunnable : Runnable {
private lateinit var onlRecord: TransdtlOnlineRecord
private lateinit var onlRvsRecord: TransdtlOnlineRecord
@@ -88,20 +99,21 @@
private var curLinkRefreshTime: Long = 0
override fun run() {
while (!isExist) {
- if (iConsumeView.isBackRuning()) {
+ iConsumeView.cardPayingStatus(false)
+ checkShowScreen()
+ if (iConsumeView.isBackRunning()) {
CommonUtil.doSleep(1000)
- doClear()
continue
}
- iConsumeView.codeScannerEnable(true)
CommonUtil.doSleep(100)
try {
val cardphyid = Cardlib.instance.requestCard()
- iConsumeView.codeScannerEnable(false)
+ iConsumeView.cardPayingStatus(true)
if (oldcardphyid != cardphyid) {
readCard()
cardBean!!.cardphyid = cardphyid
oldcardphyid = cardphyid
+ operation = true
}
when (clickStat) {
ClickStat.PAY -> {
@@ -188,6 +200,31 @@
}
}
+ private fun checkShowScreen() {
+ val tt = System.currentTimeMillis()
+ if (operation) {
+ operation = false
+ screenSaverBean.operationTime = tt
+ screenSaverBean.operationFlag = true
+ }
+ if (tt > screenSaverBean.operationTime &&
+ tt - screenSaverBean.operationTime > PublicDef.SCREEN_SAVER_GAP
+ ) {
+ /**
+ * 连续半小时无操作屏保
+ */
+ screenSaverBean.operationTime = tt
+ screenSaverBean.flag = true
+ screenSaverBean.operationFlag = false
+ sendMsg(PublicDef.MSG_SCREEN_SAVER, "on")
+ } else {
+ if (screenSaverBean.operationFlag && screenSaverBean.flag) {
+ screenSaverBean.flag = false
+ sendMsg(PublicDef.MSG_SCREEN_SAVER, "off")
+ }
+ }
+ }
+
private fun showCardUserInfo() {
val info = CardUserInfoBean(PublicDef.SUCCESS, "账户信息")
if (cardBean!!.username != cardBean!!.cardNo) {
@@ -215,8 +252,9 @@
private fun doConsume() {
if (isFixMode) {
if (lastPayBean.cardphyid == cardBean!!.cardphyid) {
- if (System.currentTimeMillis() - lastPayBean.suctime < 15000) {
- throw CardPayFailError("15s内不能连续消费")
+ val gap = (pos.getSysPara()?.fixpayGap ?: 10).toLong()
+ if (System.currentTimeMillis() - lastPayBean.suctime < gap * 1000) {
+ throw CardPayFailError("${gap}s内不能连续消费")
}
}
}
@@ -362,6 +400,10 @@
private fun doOnlineConsumeQuery(): Boolean {
var queryCnt = 1
+ LogUtil.e(
+ TAG,
+ "pay timeout and query result,cardphyid=[${onlRecord.cardphyid}],billno=[${onlRecord.billno}]"
+ )
sleepWithCancel(1000)
while (payQueryConfirm) {
sendMsg(PublicDef.MSG_CARD_PAY_QUERY, "消费确认中[$queryCnt]")
@@ -411,7 +453,6 @@
private fun parseConfirmResult(resp: TransResp?): Boolean {
if (resp == null || resp.retcode != HttpStatus.SC_OK) {
- SPApplication.getInstance().setEpayLinking(false)
return false
}
val retBean = try {
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
index 2b76df8..989ef92 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
@@ -45,8 +45,9 @@
try {
if (isFixMode) {
if (lastPayBean.code == code) {
- if (System.currentTimeMillis() - lastPayBean.suctime < 15000) {
- throw CardPayFailError("15s内不能连续消费")
+ val gap = (pos.getSysPara()?.fixpayGap ?: 10).toLong()
+ if (System.currentTimeMillis() - lastPayBean.suctime < gap * 1000) {
+ throw CardPayFailError("${gap}s内不能连续消费")
}
}
}
diff --git a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
index 3daaf82..eaf5482 100644
--- a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
@@ -3,12 +3,10 @@
import android.annotation.SuppressLint
import android.os.Bundle
import android.os.CountDownTimer
+import android.text.TextUtils
import android.view.KeyEvent
import android.view.View
-import android.widget.EditText
-import android.widget.LinearLayout
-import android.widget.RadioButton
-import android.widget.TextView
+import android.widget.*
import com.supwisdom.R
import com.supwisdom.activities.BaseActivity
import com.supwisdom.activities.SPApplication
@@ -16,6 +14,7 @@
import com.supwisdom.activities.menu.MenuActivity
import com.supwisdom.auxscreen.AuxScreenController
import com.supwisdom.entity.HotKeyPayRecord
+import com.supwisdom.entity.PeriodFixPayRecord
import com.supwisdom.utils.CommonUtil
import com.supwisdom.utils.DateUtil
import com.supwisdom.utils.PublicDef
@@ -29,17 +28,20 @@
**/
class ConsumeModeActivity : BaseActivity() {
private lateinit var vPayamt: TextView
- private lateinit var vNormalMode: TextView
- private lateinit var vFixMode: TextView
- private lateinit var vHotkeyMode: TextView
- private lateinit var llHotList: LinearLayout
+ private lateinit var vSpecialDesc: TextView
+ private lateinit var rbHotkeyMode: RadioButton
+ private lateinit var rbPeriodMode: RadioButton
+ private lateinit var rgSpecialMode: RadioGroup
+ private lateinit var llSpecialList: LinearLayout
private lateinit var llFixMode: LinearLayout
- private lateinit var llHotMode: LinearLayout
+ private lateinit var llSpecialMode: LinearLayout
private val pos = SPApplication.getInstance().getPos()
private var keyActive = true
private var shoppwdPass = false
- private var hotkey = false
+ private var specialMode = false
private var tmpPwd = ""
+ private var configMode = ConfigMode.NORMAL_FIX
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -49,83 +51,183 @@
}
private fun initData() {
- pos.getHotkeyPay()?.forEach {
- val item = View.inflate(this, R.layout.item_hotkey_pay, null)
- item.findViewById<TextView>(R.id.tv_hot_del).setOnClickListener {
- llHotList.removeView(item)
- for (loop in 0 until llHotList.childCount) {
- val item = llHotList.getChildAt(loop)
- val key = item.findViewById<TextView>(R.id.tv_hot_key)
- key.text = "${(loop + 1)}"
- }
- }
- val key = item.findViewById<TextView>(R.id.tv_hot_key)
- key.text = "${llHotList.childCount + 1}"
- val amt = item.findViewById<TextView>(R.id.tv_hot_amount)
- amt.text = String.format("%.02f", it.amount / 100.0f)
- llHotList.addView(item)
- }
+
}
private fun initView() {
vPayamt = findViewById<TextView>(R.id.tv_consume_mode_payamt)
- llHotList = findViewById<LinearLayout>(R.id.ll_hot_list)
+ llSpecialList = findViewById<LinearLayout>(R.id.ll_special_list)
this.findViewById<TextView>(R.id.tv_hot_add).setOnClickListener {
- if (llHotList.childCount >= 9) {
+ if (llSpecialList.childCount >= 9) {
return@setOnClickListener
}
+ if (configMode == ConfigMode.PERIOD_FIX) {
+ addPeriodFixRule()
+ } else {
+ addHotkeyRule()
+ }
+ }
+ this.findViewById<TextView>(R.id.tv_hot_save).setOnClickListener {
+ if (llSpecialList.childCount == 0) {
+ SWToast.show(applicationContext, "请先添加规则", PublicDef.TOAST_SHOW_DOUBT)
+ return@setOnClickListener
+ }
+ if (configMode == ConfigMode.PERIOD_FIX) {
+ if (!savePeriodFixRule()) {
+ return@setOnClickListener
+ }
+ } else {
+ if (!saveHotkeyRule()) {
+ return@setOnClickListener
+ }
+ }
+ finish()
+ }
+ this.findViewById<TextView>(R.id.tv_return).setOnClickListener {
+ showCurrentMode(ConfigMode.NORMAL_FIX)
+ refreshToSetAmount()
+ }
+ rgSpecialMode = this.findViewById<RadioGroup>(R.id.rg_special_mode)
+ rgSpecialMode.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.rb_hot_mode -> showCurrentMode(ConfigMode.HOT_KEY)
+ R.id.rb_period_fix_mode -> showCurrentMode(ConfigMode.PERIOD_FIX)
+ }
+ }
+ rbPeriodMode = this.findViewById<RadioButton>(R.id.rb_period_fix_mode)
+ rbHotkeyMode = this.findViewById<RadioButton>(R.id.rb_hot_mode)
+
+ llFixMode = this.findViewById<LinearLayout>(R.id.ll_fix_mode)
+ llSpecialMode = this.findViewById<LinearLayout>(R.id.ll_hot_mode)
+
+ vSpecialDesc = this.findViewById<TextView>(R.id.tv_special_desc)
+ }
+
+ private fun addHotkeyRule() {
+ val item = View.inflate(this, R.layout.item_hotkey_pay, null)
+ item.findViewById<TextView>(R.id.tv_hot_del).setOnClickListener {
+ llSpecialList.removeView(item)
+ for (loop in 0 until llSpecialList.childCount) {
+ val item = llSpecialList.getChildAt(loop)
+ val key = item.findViewById<TextView>(R.id.tv_hot_key)
+ key.text = "${(loop + 1)}"
+ }
+ }
+ val key = item.findViewById<TextView>(R.id.tv_hot_key)
+ key.text = "${llSpecialList.childCount + 1}"
+ llSpecialList.addView(item)
+ }
+
+ private fun addPeriodFixRule() {
+ val item = View.inflate(this, R.layout.item_period_fix_pay, null)
+ item.findViewById<TextView>(R.id.tv_del).setOnClickListener {
+ llSpecialList.removeView(item)
+ for (loop in 0 until llSpecialList.childCount) {
+ val item = llSpecialList.getChildAt(loop)
+ val key = item.findViewById<TextView>(R.id.tv_config)
+ key.text = "规则${(loop + 1)}:"
+ }
+ }
+ val key = item.findViewById<TextView>(R.id.tv_config)
+ key.text = "规则${llSpecialList.childCount + 1}:"
+ llSpecialList.addView(item)
+ }
+
+ private fun saveHotkeyRule(): Boolean {
+ val list = ArrayList<HotKeyPayRecord>()
+ for (loop in 0 until llSpecialList.childCount) {
+ val record = HotKeyPayRecord()
+ val item = llSpecialList.getChildAt(loop)
+ var temp = item.findViewById<TextView>(R.id.tv_hot_key)
+ record.key = Integer.parseInt(temp.text.toString())
+ temp = item.findViewById<EditText>(R.id.tv_hot_amount)
+ record.amount = CommonUtil.YuanToFen(java.lang.Double.parseDouble(CommonUtil.getEditView(temp)))
+ list.add(record)
+ }
+ pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, PayMode.HOTKEY.desc)
+ if (!pos.saveHotkeyPay(list)) {
+ SWToast.show(applicationContext, "保持配置失败", PublicDef.TOAST_SHOW_CRY)
+ return false
+ }
+ return true
+ }
+
+ private fun savePeriodFixRule(): Boolean {
+ val list = ArrayList<PeriodFixPayRecord>()
+ for (loop in 0 until llSpecialList.childCount) {
+ val record = PeriodFixPayRecord()
+ val item = llSpecialList.getChildAt(loop)
+ record.beginTime = CommonUtil.getEditView(item.findViewById<EditText>(R.id.tv_period_start))
+ record.endTime = CommonUtil.getEditView(item.findViewById<EditText>(R.id.tv_period_end))
+ val temp = item.findViewById<EditText>(R.id.tv_amount)
+ record.amount = CommonUtil.YuanToFen(java.lang.Double.parseDouble(CommonUtil.getEditView(temp)))
+ if (TextUtils.isEmpty(record.beginTime) || TextUtils.isEmpty(record.endTime)) {
+ SWToast.show(applicationContext, "时间段不为空", PublicDef.TOAST_SHOW_CRY)
+ return false
+ }
+ if (record.beginTime!!.length != 4 || record.endTime!!.length != 4) {
+ SWToast.show(applicationContext, "时间段长度不对", PublicDef.TOAST_SHOW_CRY)
+ return false
+ }
+ if (!("0000" <= record.beginTime!! && record.beginTime!! < record.endTime!! && record.endTime!! <= "2400")) {
+ SWToast.show(applicationContext, "时间段不合法", PublicDef.TOAST_SHOW_CRY)
+ return false
+ }
+ list.add(record)
+ }
+ pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, PayMode.PERIODFIX.desc)
+ if (!pos.savePeriodFixPay(list)) {
+ SWToast.show(applicationContext, "保持配置失败", PublicDef.TOAST_SHOW_CRY)
+ return false
+ }
+ return true
+ }
+
+ private fun loadHotkeyRule() {
+ llSpecialList.removeAllViews()
+ pos.getHotkeyPay()?.forEach {
val item = View.inflate(this, R.layout.item_hotkey_pay, null)
item.findViewById<TextView>(R.id.tv_hot_del).setOnClickListener {
- llHotList.removeView(item)
- for (loop in 0 until llHotList.childCount) {
- val item = llHotList.getChildAt(loop)
+ llSpecialList.removeView(item)
+ for (loop in 0 until llSpecialList.childCount) {
+ val item = llSpecialList.getChildAt(loop)
val key = item.findViewById<TextView>(R.id.tv_hot_key)
key.text = "${(loop + 1)}"
}
}
val key = item.findViewById<TextView>(R.id.tv_hot_key)
- key.text = "${llHotList.childCount + 1}"
- llHotList.addView(item)
+ key.text = "${llSpecialList.childCount + 1}"
+ val amt = item.findViewById<TextView>(R.id.tv_hot_amount)
+ amt.text = String.format("%.02f", it.amount / 100.0f)
+ llSpecialList.addView(item)
}
- this.findViewById<TextView>(R.id.tv_hot_save).setOnClickListener {
- if (llHotList.childCount == 0) {
- SWToast.show(applicationContext, "请先添加热键", PublicDef.TOAST_SHOW_DOUBT)
- return@setOnClickListener
- }
- val list = ArrayList<HotKeyPayRecord>()
- for (loop in 0 until llHotList.childCount) {
- val item = llHotList.getChildAt(loop)
- val key = item.findViewById<TextView>(R.id.tv_hot_key)
- val keyboard = key.text.toString()
- val amt = item.findViewById<EditText>(R.id.tv_hot_amount)
- val hotamt = CommonUtil.getEditView(amt)
-
- val record = HotKeyPayRecord()
- record.key = Integer.parseInt(keyboard)
- record.amount = CommonUtil.YuanToFen(java.lang.Double.parseDouble(hotamt))
- list.add(record)
- }
- pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, PayMode.HOTKEY.desc)
- if (!pos.saveHotkeyPay(list)) {
- SWToast.show(applicationContext, "保持热键失败", PublicDef.TOAST_SHOW_CRY)
- return@setOnClickListener
- }
- finish()
- }
- this.findViewById<TextView>(R.id.tv_return).setOnClickListener {
- hotkey = false
- llHotMode.visibility = View.GONE
- llFixMode.visibility = View.VISIBLE
- refreshToSetAmount()
- }
- vNormalMode = this.findViewById<RadioButton>(R.id.rb_normal_mode)
- vFixMode = this.findViewById<RadioButton>(R.id.rb_fix_mode)
- vHotkeyMode = this.findViewById<RadioButton>(R.id.rb_hot_mode)
-
- llFixMode = this.findViewById<LinearLayout>(R.id.ll_fix_mode)
- llHotMode = this.findViewById<LinearLayout>(R.id.ll_hot_mode)
}
+ private fun loadPeriodFixRule() {
+ llSpecialList.removeAllViews()
+ pos.getPeriodFixPay()?.forEach {
+ val item = View.inflate(this, R.layout.item_period_fix_pay, null)
+ item.findViewById<TextView>(R.id.tv_del).setOnClickListener {
+ llSpecialList.removeView(item)
+ for (loop in 0 until llSpecialList.childCount) {
+ val item = llSpecialList.getChildAt(loop)
+ val key = item.findViewById<TextView>(R.id.tv_config)
+ key.text = "规则${(loop + 1)}:"
+ }
+ }
+ val beginTime = item.findViewById<EditText>(R.id.tv_period_start)
+ beginTime.setText(it.beginTime)
+ val endTime = item.findViewById<EditText>(R.id.tv_period_end)
+ endTime.setText(it.endTime)
+ val amt = item.findViewById<EditText>(R.id.tv_amount)
+ amt.setText(String.format("%.02f", it.amount / 100.0f))
+ val key = item.findViewById<TextView>(R.id.tv_config)
+ key.text = "规则${llSpecialList.childCount + 1}:"
+ llSpecialList.addView(item)
+ }
+ }
+
+
@SuppressLint("SetTextI18n")
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
@@ -145,13 +247,41 @@
override fun onResume() {
super.onResume()
shoppwdPass = false
- hotkey = false
keyActive = true
- llFixMode.visibility = View.VISIBLE
- llHotMode.visibility = View.GONE
+ showCurrentMode(ConfigMode.NORMAL_FIX)
refreshToCheckPasswd()
}
+ private fun showCurrentMode(mode: ConfigMode) {
+ configMode = mode
+ when (mode) {
+ ConfigMode.HOT_KEY -> {
+ specialMode = true
+ rgSpecialMode.visibility = View.VISIBLE
+ rbHotkeyMode.isChecked = true
+ llFixMode.visibility = View.GONE
+ llSpecialMode.visibility = View.VISIBLE
+ vSpecialDesc.text = "设置快捷按键(单位:元)"
+ loadHotkeyRule()
+ }
+ ConfigMode.PERIOD_FIX -> {
+ specialMode = true
+ rbPeriodMode.isChecked = true
+ rgSpecialMode.visibility = View.VISIBLE
+ llFixMode.visibility = View.GONE
+ llSpecialMode.visibility = View.VISIBLE
+ vSpecialDesc.text = "设置波段定额(单位:元)"
+ loadPeriodFixRule()
+ }
+ else -> {
+ rgSpecialMode.visibility = View.GONE
+ llSpecialMode.visibility = View.GONE
+ llFixMode.visibility = View.VISIBLE
+ specialMode = false
+ }
+ }
+ }
+
private fun checkShopPwd(keyCode: Int) {
when (keyCode) {
KeyEvent.KEYCODE_0,
@@ -203,7 +333,7 @@
}
private fun setFixAmount(keyCode: Int) {
- if (hotkey) {
+ if (specialMode) {
AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请到大屏设置"))
return
}
@@ -227,9 +357,7 @@
}
KeyEvent.KEYCODE_DPAD_LEFT -> {
//F1
- hotkey = true
- llHotMode.visibility = View.VISIBLE
- llFixMode.visibility = View.GONE
+ showCurrentMode(ConfigMode.HOT_KEY)
AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请到大屏设置"))
}
}
@@ -244,11 +372,23 @@
private fun refreshToSetAmount() {
vPayamt.text = PayMode.NORMAL.desc
pos.getControlPara(PublicDef.CONTROL_FIXAMT)?.also {
- if (PayMode.FIXPAY.desc == it.paraval) {
- vPayamt.text = String.format("%.02f", Integer.parseInt(it.paraval) / 100.0f)
+ when {
+ PayMode.FIXPAY.desc == it.paraval -> {
+ vPayamt.text = String.format("%.02f", Integer.parseInt(it.paraval) / 100.0f)
+ screenShowAmt()
+ }
+ PayMode.HOTKEY.desc == it.paraval -> {
+ showCurrentMode(ConfigMode.HOT_KEY)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请到大屏设置"))
+ return
+ }
+ PayMode.PERIODFIX.desc == it.paraval -> {
+ showCurrentMode(ConfigMode.PERIOD_FIX)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请到大屏设置"))
+ return
+ }
}
- }
- screenShowAmt()
+ } ?: screenShowAmt()
}
private fun getFixAmount(): String {
@@ -306,7 +446,7 @@
}
private fun screenShowAmt() {
- AuxScreenController.getInstance().refreshTitle("消费模式设置 F1-热键模式")
+ AuxScreenController.getInstance().refreshTitle("消费模式设置 F1-特殊模式")
AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
AuxScreenController.getInstance().refreshContent(
Arrays.asList<String>(
@@ -317,10 +457,6 @@
)
}
- override fun onDestroy() {
- super.onDestroy()
- }
-
private var counter: ContinuePressTimer? = null
private fun resetCounter(timems: Long) {
@@ -343,4 +479,10 @@
keyActive = true
}
}
+}
+
+enum class ConfigMode {
+ NORMAL_FIX,
+ HOT_KEY,
+ PERIOD_FIX,
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt b/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt
index 304a6a7..110f204 100644
--- a/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt
+++ b/app/src/main/java/com/supwisdom/activities/upgrade/mode/EpayUpgradeApi.kt
@@ -18,9 +18,8 @@
* @date 2019/4/9
* @desc 在线升级
*/
-class EpayUpgradeApi constructor(callbackInterface: CallbackInterface) {
+class EpayUpgradeApi constructor(private val callback: CallbackInterface) {
private val TIMEOUT = 5 * 1000// 超时
- private val callback = callbackInterface
private val POSID = "posa711dali"
fun upgrade(devphyid: String, version: String) {
diff --git a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
index 1c90e59..0112dfc 100644
--- a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
+++ b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
@@ -114,4 +114,10 @@
key,
amount
}
+ enum class PeriodFixPay{
+ id,
+ begintime,
+ endtime,
+ amount
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
index 4862731..8a0f51d 100644
--- a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
+++ b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
@@ -13,13 +13,14 @@
class DBParaHelper private constructor(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, VERSION) {
companion object {
private val DB_NAME = "db_para"
- private val VERSION = 1
+ private val VERSION = 2
val TABLE_NAME_SYSPARA = "tb_syspara"
val TABLE_NAME_DYNAMICPARA = "tb_dynamicpara"
val TABLE_NAME_CONTROLPARA = "tb_controlpara"
val TABLE_NAME_WHITELIST = "tb_whitelist"
val TABLE_NAME_HOTKEY = "tb_hotkey"
+ val TABLE_NAME_PERIOD_FIX = "tb_period_fix"
private var instance: DBParaHelper? = null
fun getInstance(context: Context): DBParaHelper {
@@ -38,9 +39,15 @@
/**
* SQL for create table
*/
+ private val CREATE_TABLE_NAME_PERIOD_FIX = ("create table IF NOT EXISTS "
+ + TABLE_NAME_PERIOD_FIX + " ( "
+ + BeanPropEnum.PeriodFixPay.id + " integer primary key autoincrement,"
+ + BeanPropEnum.PeriodFixPay.begintime + " varchar(4),"
+ + BeanPropEnum.PeriodFixPay.endtime + " varchar(4),"
+ + BeanPropEnum.PeriodFixPay.amount + " integer )")
private val CREATE_TABLE_NAME_HOTKEY = ("create table IF NOT EXISTS "
+ TABLE_NAME_HOTKEY + " ( "
- + BeanPropEnum.HotkeyPay.key + " integer primary key,"
+ + BeanPropEnum.HotkeyPay.key + " long primary key,"
+ BeanPropEnum.HotkeyPay.amount + " integer)")
private val CREATE_TABLE_NAME_WHITELIST = ("create table IF NOT EXISTS "
+ TABLE_NAME_WHITELIST + " ( "
@@ -99,12 +106,13 @@
db.execSQL(CREATE_TABLE_NAME_CONTROLPARA)
db.execSQL(CREATE_TABLE_NAME_WHITELIST)
db.execSQL(CREATE_TABLE_NAME_HOTKEY)
+ db.execSQL(CREATE_TABLE_NAME_PERIOD_FIX)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
if (oldVersion < newVersion) {
if (oldVersion < 2 && newVersion >= 2) {
-// db.execSQL("alter table $TABLE_NAME_SYSPARA add column ${BeanPropEnum.Syspara.maxDayOfflineAmt} integer")
+ db.execSQL(CREATE_TABLE_NAME_PERIOD_FIX)
}
}
}
diff --git a/app/src/main/java/com/supwisdom/db/PeriodFixPayDao.kt b/app/src/main/java/com/supwisdom/db/PeriodFixPayDao.kt
new file mode 100644
index 0000000..dce63c0
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/db/PeriodFixPayDao.kt
@@ -0,0 +1,100 @@
+package com.supwisdom.db
+
+import android.content.ContentValues
+import android.content.Context
+import android.database.Cursor
+import com.supwisdom.entity.PeriodFixPayRecord
+import java.util.concurrent.locks.Lock
+
+/**
+ ** create by zzq on 2019/11/20
+ ** @desc
+ **/
+class PeriodFixPayDao constructor(context: Context) {
+ private val dbHelper = DBParaHelper.getInstance(context)
+ private val TABLE = DBParaHelper.TABLE_NAME_PERIOD_FIX
+
+ fun getLock(): Lock {
+ return dbHelper.getLock()
+ }
+
+ fun replace(record: PeriodFixPayRecord): Boolean {
+ val db = dbHelper.readableDatabase
+ val values = getContentValues(record)
+ try {
+ db.beginTransaction()
+ if (db.replace(TABLE, null, values) > 0) {
+ db.setTransactionSuccessful()
+ return true
+ }
+ } finally {
+ db.endTransaction()
+ }
+ return false
+ }
+
+ fun save(list: List<PeriodFixPayRecord>): Boolean {
+ val db = dbHelper.writableDatabase
+ try {
+ db.beginTransaction()
+ if (db.delete(TABLE, null, null) < 0) {
+ return false
+ }
+ list.forEach {
+ val values = getContentValues(it)
+ if (db.insert(TABLE, null, values) <= 0) {
+ return false
+ }
+ }
+ db.setTransactionSuccessful()
+ return true
+ } finally {
+ db.endTransaction()
+ }
+ }
+
+ fun get(): List<PeriodFixPayRecord>? {
+ val db = dbHelper.readableDatabase
+ var cursor: Cursor? = null
+ try {
+ cursor = db.query(TABLE, null, null, null, null, null, null)
+ val list = ArrayList<PeriodFixPayRecord>()
+ while (cursor != null && cursor.moveToNext()) {
+ list.add(getRecord(cursor))
+ }
+ return list
+ } finally {
+ cursor?.close()
+ }
+ }
+
+ fun clear(): Boolean {
+ val db = dbHelper.writableDatabase
+ try {
+ db.beginTransaction()
+ if (db.delete(TABLE, null, null) < 0) {
+ return false
+ }
+ db.setTransactionSuccessful()
+ return true
+ } finally {
+ db.endTransaction()
+ }
+ }
+
+ private fun getRecord(cursor: Cursor): PeriodFixPayRecord {
+ val record = PeriodFixPayRecord()
+ record.beginTime = cursor.getString(cursor.getColumnIndex(BeanPropEnum.PeriodFixPay.begintime.toString()))
+ record.endTime = cursor.getString(cursor.getColumnIndex(BeanPropEnum.PeriodFixPay.endtime.toString()))
+ record.amount = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.PeriodFixPay.amount.toString()))
+ return record
+ }
+
+ private fun getContentValues(record: PeriodFixPayRecord): ContentValues {
+ val values = ContentValues()
+ values.put(BeanPropEnum.PeriodFixPay.begintime.toString(), record.beginTime)
+ values.put(BeanPropEnum.PeriodFixPay.endtime.toString(), record.endTime)
+ values.put(BeanPropEnum.PeriodFixPay.amount.toString(), record.amount)
+ return values
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/Pos.kt b/app/src/main/java/com/supwisdom/db/Pos.kt
index 00ae522..9972af0 100644
--- a/app/src/main/java/com/supwisdom/db/Pos.kt
+++ b/app/src/main/java/com/supwisdom/db/Pos.kt
@@ -18,6 +18,7 @@
private val controlParaDao = ControlParaDao(context)
private val whiteListDao = WhiteListDao(context)
private val hotkeyPayDao = HotkeyPayDao(context)
+ private val periodFixPayDao = PeriodFixPayDao(context)
private val transdtlOnlineDao = TransdtlOnlineDao(sdContext)
private val transdtlOfflineDao = TransdtlOfflineDao(sdContext)
private val transdtlUnionDao = TransdtlUnionDao(sdContext)
@@ -73,6 +74,24 @@
}
}
+ fun savePeriodFixPay(list: List<PeriodFixPayRecord>): Boolean {
+ try {
+ periodFixPayDao.getLock().lock()
+ return periodFixPayDao.save(list)
+ } finally {
+ periodFixPayDao.getLock().unlock()
+ }
+ }
+
+ fun getPeriodFixPay(): List<PeriodFixPayRecord>? {
+ try {
+ periodFixPayDao.getLock().lock()
+ return periodFixPayDao.get()
+ } finally {
+ periodFixPayDao.getLock().unlock()
+ }
+ }
+
fun replaceControlPara(record: ControlParaRecord): Boolean {
try {
controlParaDao.getLock().lock()
diff --git a/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt b/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt
index 4d8bb24..e3ae7aa 100644
--- a/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/HotKeyPayRecord.kt
@@ -7,5 +7,4 @@
class HotKeyPayRecord {
var key: Int = 0
var amount: Int = 0
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/entity/PeriodFixPayRecord.kt b/app/src/main/java/com/supwisdom/entity/PeriodFixPayRecord.kt
new file mode 100644
index 0000000..abb736f
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/entity/PeriodFixPayRecord.kt
@@ -0,0 +1,11 @@
+package com.supwisdom.entity
+
+/**
+ ** create by zzq on 2019/11/19
+ ** @desc
+ **/
+class PeriodFixPayRecord {
+ var beginTime: String? = null //hhmm
+ var endTime: String? = null //hhmm
+ var amount: Int = 0
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/epaycard/DaliReader.kt b/app/src/main/java/com/supwisdom/epaycard/DaliReader.kt
index 4992921..f146948 100644
--- a/app/src/main/java/com/supwisdom/epaycard/DaliReader.kt
+++ b/app/src/main/java/com/supwisdom/epaycard/DaliReader.kt
@@ -37,9 +37,9 @@
val temp = Build.DISPLAY
val version = if (temp.contains("CAP08S-V1")) {
when {
- temp < "CAP08S-V1.0.9" -> 108
- temp < "CAP08S-V1.1.1" -> 110
- else -> 115
+ temp < "CAP08S-V1.0.9" -> "108"
+ temp < "CAP08S-V1.1.1" -> "110"
+ else -> "115"
}
} else {
/**
@@ -48,7 +48,8 @@
CommonUtil.getSerialNumber()?.replace("v", "")
?.replace("V", "")
?.replace(".", "")
- ?.toInt() ?: 116
+ ?.replace(" ", "")
+ ?: "116"
}
picc = Picc(version)
val ret = picc!!.open()
diff --git a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
index 5e3f70c..8765a41 100644
--- a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
@@ -35,7 +35,7 @@
private var clientLong: OkHttpClient
private val JSON = MediaType.parse("application/json; charset=utf-8")
private val FORM_ENCODE = MediaType.parse("application/x-www-form-urlencoded;charset=utf-8")
- private var commTime = 2
+ private var commTime = 5
private var clientId: String? = null
private var jwt: String? = null
diff --git a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
index 917f39c..253a752 100644
--- a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
@@ -5,6 +5,7 @@
import android.annotation.SuppressLint
import android.app.Activity
import android.app.ActivityManager
+import android.content.ContentResolver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
@@ -12,6 +13,7 @@
import android.os.Build
import android.os.PowerManager
import android.provider.Settings
+import android.view.WindowManager
import android.widget.EditText
import com.supwisdom.activities.SPApplication
import java.io.File
@@ -191,4 +193,95 @@
else -> " "
}
}
+
+ /**
+ * @param activity
+ * @param brightness [1-255]
+ * @desc 根据亮度值修改当前window亮度
+ */
+ fun setAppBrightness(activity: Activity, brightness: Int) {
+ val window = activity.window
+ val lp = window.attributes
+ if (brightness == -1) {
+ if (lp.screenBrightness < 0) {
+ /**
+ * 已经是正常亮度
+ */
+ return
+ }
+ lp.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
+ } else {
+ if (lp.screenBrightness > 0) {
+ /**
+ * 已经屏保亮度
+ */
+ return
+ }
+// stopAutoBrightness(activity)
+ lp.screenBrightness = (if (brightness <= 0) 1 else brightness) / 255f
+ }
+ window.attributes = lp
+ /**
+ * 生效?
+ */
+// getActivityBrightness(activity)
+ }
+
+ /**
+ * 获取当前activity的屏幕亮度
+ *
+ * @param activity 当前的activity对象
+ * @return 亮度值范围为0-0.1f,如果为-1.0,则亮度与全局同步。
+ */
+ private fun getActivityBrightness(activity: Activity): Float {
+ val localWindow = activity.window
+ val params = localWindow.attributes
+ return params.screenBrightness
+ }
+
+ /**
+ * 判断是否开启了自动亮度调节
+ * *
+ * * @param aContext
+ * * @return
+ *
+ */
+ private fun isAutoBrightness(aContentResolver: ContentResolver): Boolean {
+ try {
+ return Settings.System.getInt(
+ aContentResolver,
+ Settings.System.SCREEN_BRIGHTNESS_MODE
+ ) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
+ } catch (e: Settings.SettingNotFoundException) {
+ e.printStackTrace()
+ }
+
+ return false
+ }
+
+ /**
+ * 停止自动亮度调节
+ *
+ * @param activity
+ */
+ private fun stopAutoBrightness(activity: Activity) {
+ Settings.System.putInt(
+ activity.contentResolver,
+ Settings.System.SCREEN_BRIGHTNESS_MODE,
+ Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
+ )
+ }
+
+ /**
+ * 开启亮度自动调节
+ *
+ * @param activity
+ */
+ private fun startAutoBrightness(activity: Activity) {
+ Settings.System.putInt(
+ activity.contentResolver,
+ Settings.System.SCREEN_BRIGHTNESS_MODE,
+ Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
+ )
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/utils/PublicDef.kt b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
index 140f9a8..18c7074 100644
--- a/app/src/main/java/com/supwisdom/utils/PublicDef.kt
+++ b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
@@ -33,8 +33,15 @@
const val MSG_LINK_STATUS = 19
const val MSG_PAYING_QUERY = 20
const val MSG_PAYING_INTERRUPT = 21
+ const val MSG_SCREEN_SAVER = 22
/*************************不能重复*****************************/
/**
+ * 屏保亮度
+ */
+ const val SCREEN_SAVER_BRIGHTNESS = 1
+ const val SCREEN_NORMAL_BRIGHTNESS = -1
+ const val SCREEN_SAVER_GAP: Long = 30 * 60 * 1000
+ /**
* 卡消费标志(1 byte)
*/
/*high 4 bit*/
diff --git a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
index fa71710..44d3c74 100644
--- a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
+++ b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
@@ -115,6 +115,7 @@
}
fun showPaySuccess(info: CardUserInfoBean) {
+ payQueryConfirm = false
vPayhint.text = info.retmsg
vPayhint.setTextColor(Color.GREEN)
vPayamt.text = CommonUtil.showFormatAmount("金额", info.payamt)
@@ -126,6 +127,7 @@
}
fun showPayInterrupt() {
+ payQueryConfirm = false
vPayhint.text = "交易取消"
vPayhint.setTextColor(Color.RED)
vPayamt.text = "以银行交易为准"
@@ -136,6 +138,7 @@
}
fun showPayFail(info: CardUserInfoBean) {
+ payQueryConfirm = false
vPayhint.text = "消费失败"
vPayhint.setTextColor(Color.RED)
vPayamt.text = info.retmsg
@@ -146,6 +149,7 @@
}
fun showReverseSuccess(info: CardUserInfoBean) {
+ payQueryConfirm = false
vPayhint.text = info.retmsg
vPayhint.setTextColor(Color.GREEN)
vPayamt.text = CommonUtil.showFormatAmount("金额", info.amount)
@@ -156,6 +160,7 @@
}
fun showReverseFail(info: CardUserInfoBean) {
+ payQueryConfirm = false
vPayhint.text = "冲正失败"
vPayhint.setTextColor(Color.RED)
vPayamt.text = info.retmsg
diff --git a/app/src/main/res/layout/activity_consume_mode.xml b/app/src/main/res/layout/activity_consume_mode.xml
index 653add6..befd0cf 100644
--- a/app/src/main/res/layout/activity_consume_mode.xml
+++ b/app/src/main/res/layout/activity_consume_mode.xml
@@ -8,22 +8,19 @@
style="@style/head_title_text_style"
android:text="消费模式"/>
<RadioGroup
+ android:id="@+id/rg_special_mode"
android:visibility="gone"
android:layout_height="wrap_content"
+ android:weightSum="2"
android:layout_width="match_parent"
- android:orientation="vertical">
- <RadioButton
- android:id="@+id/rb_normal_mode"
- android:text="普通消费"
- style="@style/consume_mode_rb_style"
- android:checked="true"/>
- <RadioButton
- android:id="@+id/rb_fix_mode"
- android:text="定额消费"
- style="@style/consume_mode_rb_style"/>
+ android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_hot_mode"
- android:text="快捷消费"
+ android:text="按键便捷消费"
+ style="@style/consume_mode_rb_style"/>
+ <RadioButton
+ android:id="@+id/rb_period_fix_mode"
+ android:text="波段定额消费"
style="@style/consume_mode_rb_style"/>
</RadioGroup>
<LinearLayout
@@ -91,7 +88,7 @@
<TextView
android:id="@+id/tv_hot_save"
android:textSize="25sp"
- android:layout_marginLeft="50dp"
+ android:layout_marginStart="50dp"
android:text="保存"
android:background="@drawable/corner_bg_blue"
android:padding="10dp"
@@ -102,7 +99,7 @@
android:id="@+id/tv_hot_add"
android:textSize="25sp"
android:text="添加"
- android:layout_marginLeft="50dp"
+ android:layout_marginStart="50dp"
android:background="@drawable/corner_bg_blue"
android:padding="10dp"
android:textColor="@color/white"
@@ -110,6 +107,7 @@
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView
+ android:id="@+id/tv_special_desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="快捷消费(单位:元)"
@@ -117,11 +115,10 @@
android:textColor="@color/light_blue2"
android:textSize="20sp"/>
<LinearLayout
- android:id="@+id/ll_hot_list"
+ android:id="@+id/ll_special_list"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"/>
-
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_period_fix_pay.xml b/app/src/main/res/layout/item_period_fix_pay.xml
new file mode 100644
index 0000000..b1e7226
--- /dev/null
+++ b/app/src/main/res/layout/item_period_fix_pay.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:background="@color/white"
+ android:layout_width="match_parent"
+ android:weightSum="7"
+ android:padding="5dp"
+ android:layout_marginTop="10dp"
+ android:layout_height="match_parent">
+ <TextView
+ android:id="@+id/tv_config"
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:text="规则 1:"
+ android:visibility="gone"
+ android:textColor="@color/light_blue2"
+ android:textSize="25sp"/>
+ <EditText
+ android:id="@+id/tv_period_start"
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:inputType="numberDecimal"
+ android:layout_weight="2"
+ android:maxLines="1"
+ android:text="0000"
+ android:textColor="@color/light_blue2"
+ android:textSize="25sp"/>
+ <EditText
+ android:id="@+id/tv_period_end"
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:inputType="numberDecimal"
+ android:layout_weight="2"
+ android:maxLines="1"
+ android:text="2400"
+ android:textColor="@color/light_blue2"
+ android:textSize="25sp"/>
+ <EditText
+ android:id="@+id/tv_amount"
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:inputType="numberDecimal"
+ android:layout_weight="2"
+ android:maxLines="1"
+ android:text="0"
+ android:textColor="@color/light_blue2"
+ android:textSize="25sp"/>
+ <TextView
+ android:id="@+id/tv_del"
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:text="删除"
+ android:layout_marginStart="10dp"
+ android:gravity="center"
+ android:padding="10dp"
+ android:background="@drawable/corner_bg_blue"
+ android:textColor="@color/white"
+ android:textSize="25sp"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index d85e0af..a1088c5 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -428,7 +428,8 @@
</style>
<style name="consume_mode_rb_style">
<item name="android:layout_height">wrap_content</item>
- <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_width">0dp</item>
+ <item name="android:layout_weight">1</item>
<item name="android:textSize">25sp</item>
<item name="android:textColor">@color/light_blue2</item>
</style>