市民卡信息新增公交卡类型
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCard.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCard.java
index 02e6bf9..d21ff59 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCard.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCard.java
@@ -30,6 +30,9 @@
@Column(name = "TRANS_STATUS", nullable = false, length = 20)
private String transStatus; //normal/loss/frozen/locked/abnormal/unuse
+ @Column(name = "BUS_CARD_TYPE", length = 20)
+ private String busCardType; //市民卡的公交卡类型
+
@Column(name = "EXPIREDATE", length = 20)
private String expiredate;
@@ -49,12 +52,13 @@
public TCard() {
}
- public TCard(String cardno, String cardtype, String cardphyid, String status, String transStatus, String expiredate, Boolean signed, String userid, String lastsaved) {
+ public TCard(String cardno, String cardtype, String cardphyid, String status, String transStatus, String busCardType, String expiredate, Boolean signed, String userid, String lastsaved) {
this.cardno = cardno;
this.cardtype = cardtype;
this.cardphyid = cardphyid;
this.status = status;
this.transStatus = transStatus;
+ this.busCardType = busCardType;
this.expiredate = expiredate;
this.signed = signed;
this.userid = userid;
@@ -109,6 +113,14 @@
this.transStatus = transStatus;
}
+ public String getBusCardType() {
+ return busCardType;
+ }
+
+ public void setBusCardType(String busCardType) {
+ this.busCardType = busCardType;
+ }
+
public String getExpiredate() {
return expiredate;
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCitycardTemp.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCitycardTemp.java
index 7d7f454..97a48d7 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCitycardTemp.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCitycardTemp.java
@@ -46,6 +46,9 @@
@Column(name = "EMAIL", length = 60)
private String email;
+ @Column(name = "BUS_CARD_TYPE", length = 20)
+ private String busCardType;
+
@Column(name = "STATUS", length = 20)
private String status;
@@ -185,4 +188,12 @@
public void setTenantid(String tenantid) {
this.tenantid = tenantid;
}
+
+ public String getBusCardType() {
+ return busCardType;
+ }
+
+ public void setBusCardType(String busCardType) {
+ this.busCardType = busCardType;
+ }
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Dictionary.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Dictionary.java
index 9eac02d..6798ebc 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Dictionary.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Dictionary.java
@@ -8,6 +8,7 @@
public static final String SEX = "sexList";
public static final String ACCOUNT_STATUS = "accountStatusList";
public static final String DTLTYPES = "dtltypeList";
+ public static final String BUSCARDTYPES = "busCardTypeList";
/////////////////////////////////////
public static final String SOURCE_TYPE = "sourcetypeList";
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
index ff4084c..180679b 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
@@ -272,5 +272,16 @@
// return bankCard.charAt(bankCard.length() - 1) == bit;
}
+ /**
+ * 根据卡号创建8位16进制卡物理ID
+ * */
+ public static String createCardphyid(int cardno) {
+ String hex = Integer.toHexString(cardno);
+ while (hex.length() < 8) {
+ hex = "0" + hex;
+ }
+ return hex.toUpperCase();
+ }
+
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java
index 5f4961b..17fd877 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java
@@ -18,6 +18,7 @@
private String mobile;
private String email;
private String sex;
+ private String buscardtype;
public String getCid() {
return cid;
@@ -154,4 +155,12 @@
public void setSex(String sex) {
this.sex = sex;
}
+
+ public String getBuscardtype() {
+ return buscardtype;
+ }
+
+ public void setBuscardtype(String buscardtype) {
+ this.buscardtype = buscardtype;
+ }
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java
index eb36de9..4c35709 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java
@@ -210,9 +210,10 @@
@RequestParam(value = "idtype", required = false) String idtype,
@RequestParam(value = "idno", required = false) String idno,
@RequestParam(value = "mobile", required = false) String mobile,
- @RequestParam(value = "email", required = false) String email) {
+ @RequestParam(value = "email", required = false) String email,
+ @RequestParam(value = "buscardtype", required = false) String buscardtype) {
try {
- if (userDataService.doSaveNewCitizenCard(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ if (userDataService.doSaveNewCitizenCard(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email, buscardtype)) {
return JsonResult.ok("新增成功!");
} else {
return JsonResult.error("新增失败!");
@@ -264,9 +265,10 @@
@RequestParam(value = "idtype", required = false) String idtype,
@RequestParam(value = "idno", required = false) String idno,
@RequestParam(value = "mobile", required = false) String mobile,
- @RequestParam(value = "email", required = false) String email) {
+ @RequestParam(value = "email", required = false) String email,
+ @RequestParam(value = "buscardtype", required = false) String buscardtype) {
try {
- if (userDataService.doUpdateCitizenCard(cid, bkid, cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ if (userDataService.doUpdateCitizenCard(cid, bkid, cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email, buscardtype)) {
return JsonResult.ok("修改成功!");
} else {
return JsonResult.error("修改失败!");
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
index 8cc7a5b..e463ae5 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
@@ -50,12 +50,12 @@
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
boolean doSaveNewCitizenCard(String cardno, String cardphyid, String expiredate, String cardstatus, String bankcardno,
String signstatus, String username, String sex, String idtype, String idno, String mobile,
- String email) throws Exception;
+ String email, String buscardtype) throws Exception;
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
boolean doUpdateCitizenCard(String cid, String bkid, String cardno, String cardphyid, String expiredate, String cardstatus,
String bankcardno, String signstatus, String username, String sex, String idtype, String idno,
- String mobile, String email) throws Exception;
+ String mobile, String email, String buscardtype) throws Exception;
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
index 01105f8..a7ed10e 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
@@ -196,7 +196,7 @@
@Override
public PageResult<CitizenCardShowBean> getUserCitizenCardPage(CitizenCardSearchBean param, int pageNo, int pageSize) {
- StringBuffer querySql = new StringBuffer("select t.id as cid,t.cardno,t.cardtype,t.cardphyid,case when t.status='closed' then 'closed' else t.trans_status end as status,t.expiredate,a.id as bkid,a.cardno as bankcardno,a.signed,t.lastsaved,t.userid,p.name as username,p.idtype,p.idno,p.mobile,p.email,p.sex \n" +
+ StringBuffer querySql = new StringBuffer("select t.id as cid,t.cardno,t.cardtype,t.cardphyid,case when t.status='closed' then 'closed' else t.trans_status end as status,t.expiredate,a.id as bkid,a.cardno as bankcardno,a.signed,t.lastsaved,t.userid,p.name as username,p.idtype,p.idno,p.mobile,p.email,p.sex,t.bus_card_type as buscardtype \n" +
"from tb_card t left join tb_card a on a.cardtype='bankcard' and a.cardphyid=t.cardphyid and a.userid=t.userid left join tb_person p on p.userid=t.userid \n" +
"where t.cardtype='citizencard' ");
StringBuffer countSql = new StringBuffer("select count(t.id) as cnt \n" +
@@ -255,7 +255,7 @@
private boolean checkCitizenCardData(String cardno, String cardphyid, String expiredate, String cardstatus, String bankcardno,
String signstatus, String username, String sex, String idtype, String idno, String mobile,
- String email) throws WebCheckException {
+ String email, String buscardtype) throws WebCheckException {
if (StringUtil.isEmpty(cardno)) throw new WebCheckException("市民卡号不能为空");
if (!StringUtil.isNumber(cardno.trim())) throw new WebCheckException("请正确填写市民卡号");
@@ -290,14 +290,15 @@
if (!StringUtil.isEmpty(mobile) && !StringUtil.isMobile(mobile.trim())) throw new WebCheckException("请正确填写手机号");
if (!StringUtil.isEmpty(email) && !StringUtil.isEmail(email.trim())) throw new WebCheckException("请正确填写电子邮箱");
+ if (StringUtil.isEmpty(buscardtype)) throw new WebCheckException("请选择公交卡类型");
return true;
}
@Override
public boolean doSaveNewCitizenCard(String cardno, String cardphyid, String expiredate, String cardstatus, String bankcardno,
String signstatus, String username, String sex, String idtype, String idno, String mobile,
- String email) throws Exception {
- if (checkCitizenCardData(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ String email, String buscardtype) throws Exception {
+ if (checkCitizenCardData(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email, buscardtype)) {
double maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.BALANCE_LIMIT, SysparaUtil.DEFAULT_BALANCE_LIMIT);
double lowfreeLimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.NOPASS_LIMIT, SysparaUtil.DEFAULT_NOPASS_LIMIT);
double daylimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.DAY_PAY_LIMIT, SysparaUtil.DEFAULT_DAY_PAY_LIMIT);
@@ -385,6 +386,7 @@
cityCard.setUserid(person.getUserid());
cityCard.setLastsaved(dt.getHostdatetime());
cityCard.setTenantid(person.getTenantid());
+ cityCard.setBusCardType(buscardtype.trim());
cardDao.save(cityCard);
bankCard = new TCard(); //新增银行卡
@@ -404,6 +406,7 @@
if (TradeDict.STATUS_NORMAL.equals(bankCard.getStatus())) {
cardDao.closedBankcardStatusByUserid(bankCard.getUserid()); //注销其他银行卡
}
+ bankCard.setBusCardType(buscardtype.trim());
cardDao.save(bankCard);
return true;
}
@@ -418,7 +421,7 @@
@Override
public boolean doUpdateCitizenCard(String cid, String bkid, String cardno, String cardphyid, String expiredate, String cardstatus,
String bankcardno, String signstatus, String username, String sex, String idtype, String idno,
- String mobile, String email) throws Exception {
+ String mobile, String email, String buscardtype) throws Exception {
TCard cityCard = findCardById(cid);
TCard bankCard = findCardById(bkid);
if (null == cityCard || null == bankCard ||
@@ -431,7 +434,7 @@
TPerson person = personDao.findByUserid(cityCard.getUserid());
if(null==person) throw new WebCheckException("请求参数错误,请重新查询!");
- if (checkCitizenCardData(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ if (checkCitizenCardData(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email, buscardtype)) {
TPerson owner = null; //市民卡拥有者
SystemDateTime dt = systemUtilService.getSysdatetime();
if(idtype.trim().equals(person.getIdtype()) && idno.trim().equals(person.getIdno())){
@@ -539,7 +542,10 @@
cityCard.setUserid(owner.getUserid());
cardUpdate = true;
}
-
+ if (!buscardtype.trim().equals(cityCard.getBusCardType())) {
+ cityCard.setBusCardType(buscardtype.trim());
+ cardUpdate = true;
+ }
if(cardUpdate){
cityCard.setLastsaved(dt.getHostdatetime());
cardDao.save(cityCard);
@@ -569,6 +575,10 @@
bankCard.setUserid(cityCard.getUserid());
bankcardUpdate = true;
}
+ if (!buscardtype.trim().equals(bankCard.getBusCardType())) {
+ bankCard.setBusCardType(buscardtype.trim());
+ bankcardUpdate = true;
+ }
if(bankcardUpdate){
bankCard.setLastsaved(dt.getHostdatetime());
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
index 1dbd5c7..0d97656 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
@@ -236,10 +236,7 @@
return if (200 == respClient.status) {
val jsonStr = respClient.getEntity(String::class.java)
logger.error("refno=[$refno], url=[$url], return=[$jsonStr]")
-// resp = Gson().fromJson(jsonStr, DlpayResp::class.java)
- resp = DlpayResp().apply {
- code="0000"
- }
+ resp = Gson().fromJson(jsonStr, DlpayResp::class.java)
resp
} else {
resp.code = "99"
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
index 5eef7e5..21edbe8 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
@@ -59,7 +59,7 @@
class DaliDatasyncDetail {
var cardno: String = ""
- var cardphyid: String = ""
+ var cardphyid: String? = null //fixme:物理卡号可能为空!
var expiredate: String = ""
var cardstatus: String = ""
var bankcardno: String? = null
@@ -69,10 +69,12 @@
var idno: String = ""
var mobile: String? = null
var email: String? = null
+ var cardType: String = ""
fun checkParam(): Boolean {
if (StringUtil.isEmpty(idtype) || StringUtil.isEmpty(idno) || StringUtil.isEmpty(username)) throw RequestParamCheckException("用户明细数据关键字段为空")
- if (StringUtil.isEmpty(cardno) || StringUtil.isEmpty(cardphyid) || StringUtil.isEmpty(expiredate) || StringUtil.isEmpty(cardstatus)) throw RequestParamCheckException("卡片明细数据关键字段为空")
+ if (StringUtil.isEmpty(cardno) || StringUtil.isEmpty(expiredate) || StringUtil.isEmpty(cardstatus)) throw RequestParamCheckException("卡片明细数据关键字段为空")
+ if (StringUtil.isEmpty(cardType)) throw RequestParamCheckException("卡片的公交卡类型字段值为空")
return true
}
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index 6779e80..657b64d 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -234,8 +234,6 @@
val dtl = transactionService.wip(param.refno)
val service = createAgentService<DtlStatus>(TradeDict.PAYTYPE_CITIZEN_CARD)
val resp = service.pay(dtl)
- resp.code = AgentCode.SUCCESS
- resp.agentRefno = systemUtilService.refno
when (resp.code) {
AgentCode.SUCCESS ->
transactionService.success(dtl.refno, resp.agentRefno, false).let {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
index 9a0c135..79dbbb9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
@@ -6,7 +6,11 @@
import com.supwisdom.dlpay.api.domain.TCard
import com.supwisdom.dlpay.api.domain.TPerson
import com.supwisdom.dlpay.api.service.CardService
+import com.supwisdom.dlpay.citizencard.dao.CitizencardLossApplyDao
+import com.supwisdom.dlpay.citizencard.domain.TCitizencardLossApply
import com.supwisdom.dlpay.exception.TransactionProcessException
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.framework.util.Constants
import com.supwisdom.dlpay.framework.util.StringUtil
import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.TradeErrorCode
@@ -24,6 +28,10 @@
lateinit var cardDao: CardDao
@Autowired
lateinit var personDao: PersonDao
+ @Autowired
+ lateinit var citizencardLossApplyDao:CitizencardLossApplyDao
+ @Autowired
+ lateinit var systemUtilService: SystemUtilService
@PersistenceContext
private lateinit var entityManager: EntityManager
@@ -163,9 +171,9 @@
override fun getCardByCardNoOrUserid(param: QueryCardParam): TCard? {
if (!StringUtil.isEmpty(param.cardno)) {
- return cardDao.findCardByCardnoAndCardtype(param.cardno,param.cardtype)
+ return cardDao.findCardByCardnoAndCardtype(param.cardno, param.cardtype)
}else if (!StringUtil.isEmpty(param.userid)) {
- return cardDao.findCardByUseridAndCardtype(param.userid,param.cardtype)
+ return cardDao.findCardByUseridAndCardtype(param.userid, param.cardtype)
}
return null
}
@@ -193,7 +201,23 @@
val card = cardDao.findCardByCardnoAndCardtype(cardno, ConstantUtil.CARDTYPE_BANKCARD)
?: return result
card.transStatus = status
+ card.lastsaved = systemUtilService.sysdatetime.hostdatetime
cardDao.save(card)
+ if (TradeDict.STATUS_LOST == status) {
+ //保存挂失申请,异步通知卡管系统
+ cardDao.findBankcardByCitizencard(card.userid, ConstantUtil.CARDTYPE_CITIZENCARD, card.cardphyid)?.let { cityCard ->
+ citizencardLossApplyDao.save(TCitizencardLossApply().apply {
+ this.refno = systemUtilService.refno
+ this.cardno = cityCard.cardno //银行卡对应的市民卡号
+ this.applytime = systemUtilService.sysdatetime.hostdatetime
+ this.termtype = "app"
+ this.status = ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_APPLY
+ this.sendcnt = 0
+ this.lastsaved = systemUtilService.sysdatetime.sysdate
+ this.tenantId = card.tenantid ?: Constants.DEFAULT_TENANTID
+ })
+ }
+ }
return result.apply {
this.retcode = 0
this.retmsg = "ok"
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/dali_datasync_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/dali_datasync_service_impl.kt
index 96b13f8..ff32235 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/dali_datasync_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/dali_datasync_service_impl.kt
@@ -146,7 +146,7 @@
cityCard.status = TradeDict.STATUS_CLOSED
}
} else {
- //卡片的其他状态,代表交易状态
+ //卡片的其他状态,代表交易状态。主状态改为正常,交易状态覆盖
if (TradeDict.STATUS_NORMAL != cityCard.transStatus) {
cardUpdateFlag = true
cityCard.status = TradeDict.STATUS_NORMAL
@@ -157,6 +157,12 @@
}
}
+ //fixme: 公交卡类型
+ if (bean.cardType.trim() != cityCard.busCardType) {
+ cardUpdateFlag = true
+ cityCard.busCardType = bean.cardType.trim()
+ }
+
if (cardUpdateFlag) {
cityCard.lastsaved = systime.hostdatetime
cardDao.save(cityCard) //更新
@@ -165,7 +171,10 @@
cityCard = TCard().apply {
cardno = bean.cardno.trim()
cardtype = ConstantUtil.CARDTYPE_CITIZENCARD
- cardphyid = bean.cardphyid.trim()
+ cardphyid = when (bean.cardphyid.isNullOrBlank()) {
+ true -> bean.cardno.trim()
+ false -> bean.cardphyid!!.trim()
+ }
status = when (TradeDict.STATUS_CLOSED == cardStatus) {
true -> TradeDict.STATUS_CLOSED
false -> TradeDict.STATUS_NORMAL
@@ -174,6 +183,7 @@
true -> TradeDict.STATUS_ABNORMAL
false -> cardStatus
}
+ busCardType = bean.cardType.trim()
expiredate = bean.expiredate.trim()
signed = false
userid = person.userid
@@ -189,12 +199,19 @@
bankCard = TCard().apply {
cardno = bean.bankcardno!!.trim()
cardtype = ConstantUtil.CARDTYPE_BANKCARD
- cardphyid = bean.cardphyid.trim()
+ cardphyid = when (bean.cardphyid.isNullOrBlank()) {
+ true -> bean.cardno.trim()
+ false -> bean.cardphyid!!.trim()
+ }
status = when (TradeDict.STATUS_CLOSED == cardStatus) {
true -> TradeDict.STATUS_CLOSED
false -> TradeDict.STATUS_NORMAL
}
- transStatus = TradeDict.STATUS_NORMAL
+ transStatus = when (TradeDict.STATUS_CLOSED == cardStatus) {
+ true -> TradeDict.STATUS_ABNORMAL
+ false -> cardStatus
+ }
+ busCardType = bean.cardType.trim()
expiredate = "21991231"
signed = false
userid = person.userid
@@ -209,6 +226,36 @@
if (bankCard.userid != person.userid) {
throw TransactionProcessException(3000, "银行卡已被人绑定")
}
+
+ var bankUpdate = false
+ if (TradeDict.STATUS_CLOSED == cardStatus) {
+ //注销卡片
+ if (bankCard.status != TradeDict.STATUS_CLOSED) {
+ bankUpdate = true
+ bankCard.status = TradeDict.STATUS_CLOSED
+ }
+ } else {
+ //卡片的其他状态,代表交易状态。主状态改为正常,交易状态覆盖
+ if (TradeDict.STATUS_NORMAL != bankCard.transStatus) {
+ bankUpdate = true
+ bankCard.status = TradeDict.STATUS_NORMAL
+ }
+ if (cardStatus != bankCard.transStatus) {
+ bankUpdate = true
+ bankCard.transStatus = cardStatus
+ }
+ }
+
+ //fixme: 公交卡类型
+ if (bean.cardType.trim() != bankCard.busCardType) {
+ bankUpdate = true
+ bankCard.busCardType = bean.cardType.trim()
+ }
+
+ if(bankUpdate){
+ bankCard.lastsaved = systime.hostdatetime
+ cardDao.save(bankCard) //更新
+ }
}
}
@@ -236,6 +283,7 @@
this.idno = bean.idno
this.mobile = bean.mobile
this.email = bean.email
+ this.busCardType = bean.cardType
this.status = TradeDict.DTL_STATUS_FAIL
this.remark = errmsg
this.lastsaved = systemUtilService.sysdatetime.hostdatetime
@@ -264,6 +312,7 @@
this.idno = temp.idno
this.mobile = temp.mobile
this.email = temp.email
+ this.cardType = temp.busCardType
}
bean.checkParam()
if (doUpdateUserInfos(bean)) {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
index b195422..38b6374 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
@@ -4,6 +4,7 @@
import com.supwisdom.dlpay.api.bean.ApiResponse
import com.supwisdom.dlpay.api.bean.DoorQrcodeResponse
import com.supwisdom.dlpay.api.bean.QrcodeParam
+import com.supwisdom.dlpay.api.service.CardService
import com.supwisdom.dlpay.api.service.QRCodeService
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.framework.service.SystemUtilService
@@ -27,6 +28,8 @@
@Autowired
lateinit var userService: UserService
@Autowired
+ lateinit var cardService: CardService
+ @Autowired
lateinit var redisTemplate: RedisTemplate<String, String>
val logger = KotlinLogging.logger { }
@@ -51,6 +54,17 @@
resp.retmsg = "用户未绑定身份"
return resp
}
+ val bankCard = cardService.getBankcardByUserid(muser.userid!!)
+ if (null == bankCard) {
+ resp.retcode = 1
+ resp.retmsg = "用户未绑定银行卡"
+ return resp
+ } else if (!bankCard.signed) {
+ resp.retcode = 1
+ resp.retmsg = "银行卡未签约"
+ return resp
+ }
+
val totp = QrCodeTotpUtil.generateTOTP(muser.secertkey)
val rowdata = QrcodeRawData()
rowdata.userid = muser.userid
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index 299fd7f..8de6f1e 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -6,6 +6,8 @@
import com.supwisdom.dlpay.api.service.QRCodeService
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.api.util.MobileNumberCheck
+import com.supwisdom.dlpay.citizencard.domain.TCitizencardLossApply
+import com.supwisdom.dlpay.citizencard.service.CitizencardManagerService
import com.supwisdom.dlpay.framework.core.JwtConfig
import com.supwisdom.dlpay.framework.core.JwtTokenUtil
import com.supwisdom.dlpay.framework.domain.JwtRedis
@@ -267,6 +269,10 @@
lateinit var jwtConfig: JwtConfig
@Autowired
lateinit var qrcodeService:QRCodeService
+ @Autowired
+ lateinit var citizencardManagerService: CitizencardManagerService
+ @Autowired
+ lateinit var systemUtilService: SystemUtilService
val logger = KotlinLogging.logger { }
@RequestMapping("/idtypes")
@@ -850,6 +856,19 @@
}
card.transStatus = TradeDict.STATUS_LOST
mobileApiService.saveCard(card)
+ mobileApiService.findCardByUseridAndCardphyid(card.userid, ConstantUtil.CARDTYPE_CITIZENCARD, card.cardphyid)?.let { cityCard ->
+ citizencardManagerService.saveOrUpdateCitizencardLossApply(TCitizencardLossApply().apply {
+ this.refno = systemUtilService.refno
+ this.cardno = cityCard.cardno //银行卡对应的市民卡号
+ this.applytime = systemUtilService.sysdatetime.hostdatetime
+ this.termtype = "app"
+ this.uid = user.uid
+ this.status = ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_APPLY
+ this.sendcnt = 0
+ this.lastsaved = systemUtilService.sysdatetime.sysdate
+ this.tenantId = card.tenantid ?: Constants.DEFAULT_TENANTID
+ })
+ }
return JsonResult.ok("ok")
}
diff --git a/payapi/src/main/resources/static/libs/custom.js b/payapi/src/main/resources/static/libs/custom.js
index 0307a2d..8c81562 100644
--- a/payapi/src/main/resources/static/libs/custom.js
+++ b/payapi/src/main/resources/static/libs/custom.js
@@ -67,6 +67,7 @@
.addNewDict("accountStatusList")
.addNewDict("allSubjectList")
.addNewDict("transcodeList")
+ .addNewDict("busCardTypeList")
},
getDict: function (dictType) {
var dict, that = this;
diff --git a/payapi/src/main/resources/templates/system/user/addcard.html b/payapi/src/main/resources/templates/system/user/addcard.html
index 0151106..1fb8fc1 100644
--- a/payapi/src/main/resources/templates/system/user/addcard.html
+++ b/payapi/src/main/resources/templates/system/user/addcard.html
@@ -120,6 +120,21 @@
</div>
</div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>公交卡类型</label>
+ <div class="layui-input-inline">
+ <select name="buscardtype" class="layui-input layui-select" lay-verify="required">
+ <option value="80" selected>80_普通卡</option>
+ <option value="81" selected>81_学生卡</option>
+ <option value="82" selected>82_老年卡</option>
+ <option value="83" selected>83_爱心卡</option>
+ <option value="84" selected>84_阳光卡</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
<div class="layui-form-item model-form-footer">
<button class="layui-btn" lay-filter="citizencard-add-form-submit" lay-submit id="citizencard-add-ok">保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
diff --git a/payapi/src/main/resources/templates/system/user/card.html b/payapi/src/main/resources/templates/system/user/card.html
index 251daa4..1759183 100644
--- a/payapi/src/main/resources/templates/system/user/card.html
+++ b/payapi/src/main/resources/templates/system/user/card.html
@@ -81,12 +81,18 @@
url: '[[@{/user/cardlist}]]',
page: true,
toolbar: '#citizencard-table-toolbar',
+ defaultToolbar: ['filter'],
cols: [
[
{type:'radio', align: 'center', width: 35, fixed: 'left'},
{field:'cardno',title:'市民卡号', align: 'center', width: 120, fixed: 'left', sort: true},
{field:'cardphyid',title:'物理卡号', align: 'center', width: 120, fixed: 'left'},
{
+ field: 'buscardtype', title: '公交卡类型', align: 'center', width: 100, templet: function (d) {
+ return getTempDictValue('busCardTypeList', d.buscardtype);
+ }
+ },
+ {
field: 'expiredate', title: '有效期', align: 'center', width: 120, templet: function (d) {
return dateFormat('' + d.expiredate);
}
diff --git a/payapi/src/main/resources/templates/system/user/updatecard.html b/payapi/src/main/resources/templates/system/user/updatecard.html
index 7e1cb74..49d0002 100644
--- a/payapi/src/main/resources/templates/system/user/updatecard.html
+++ b/payapi/src/main/resources/templates/system/user/updatecard.html
@@ -122,6 +122,21 @@
</div>
</div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>公交卡类型</label>
+ <div class="layui-input-inline">
+ <select name="buscardtype" class="layui-input layui-select" lay-verify="required">
+ <option value="80" selected>80_普通卡</option>
+ <option value="81" selected>81_学生卡</option>
+ <option value="82" selected>82_老年卡</option>
+ <option value="83" selected>83_爱心卡</option>
+ <option value="84" selected>84_阳光卡</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
<div class="layui-form-item model-form-footer">
<button class="layui-btn" lay-filter="citizencard-modify-form-submit" lay-submit id="citizencard-modify-ok">保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
@@ -159,7 +174,8 @@
idtype:cardBean.idtype,
idno:cardBean.idno,
mobile:cardBean.mobile,
- email:cardBean.email
+ email:cardBean.email,
+ buscardtype:cardBean.buscardtype
});
}