车载应用黑名单策略和接口定义
diff --git a/build.gradle b/build.gradle
index 761f8b5..4cbb0ed 100644
--- a/build.gradle
+++ b/build.gradle
@@ -56,7 +56,7 @@
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.10.1'
compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.10.1'
compile group: 'org.apache.poi', name: 'poi-scratchpad', version: '3.10.1'
- compile 'com.supwisdom:payapi-sdk:1.0.9-1-gb3cd8c8'
+ compile 'com.supwisdom:payapi-sdk:1.0.11'
compile group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.3.4.RELEASE'
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusApiResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusApiResp.java
new file mode 100644
index 0000000..4956990
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusApiResp.java
@@ -0,0 +1,27 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusApiResp {
+ private String retcode;
+ private String retmsg;
+
+ public String getRetcode() {
+ return retcode;
+ }
+
+ public void setRetcode(String retcode) {
+ this.retcode = retcode;
+ }
+
+ public String getRetmsg() {
+ return retmsg;
+ }
+
+ public void setRetmsg(String retmsg) {
+ this.retmsg = retmsg;
+ }
+
+ @Override
+ public String toString() {
+ return "retcode=[" + retcode + "],retmsg=[" + retmsg + "]";
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusBlacklistReq.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusBlacklistReq.java
new file mode 100644
index 0000000..0d0d544
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusBlacklistReq.java
@@ -0,0 +1,31 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusBlacklistReq extends BusDevBaseReq {
+ private String devphyid;
+ private String cardverno;
+ private Integer maxcount;
+
+ public String getDevphyid() {
+ return devphyid;
+ }
+
+ public void setDevphyid(String devphyid) {
+ this.devphyid = devphyid;
+ }
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+
+ public Integer getMaxcount() {
+ return maxcount;
+ }
+
+ public void setMaxcount(Integer maxcount) {
+ this.maxcount = maxcount;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusBlacklistResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusBlacklistResp.java
new file mode 100644
index 0000000..096bea2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusBlacklistResp.java
@@ -0,0 +1,33 @@
+package com.supwisdom.dlpay.bus.bean;
+
+import java.util.List;
+
+public class BusBlacklistResp extends BusApiResp {
+ private String cardverno;
+ private int count;
+ private List<BusCardverBean> blkdata;
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public List<BusCardverBean> getBlkdata() {
+ return blkdata;
+ }
+
+ public void setBlkdata(List<BusCardverBean> blkdata) {
+ this.blkdata = blkdata;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusCardverBean.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusCardverBean.java
new file mode 100644
index 0000000..4289bfa
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusCardverBean.java
@@ -0,0 +1,22 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusCardverBean {
+ private String cardno;
+ private String flag; // 1/0
+
+ public String getCardno() {
+ return cardno;
+ }
+
+ public void setCardno(String cardno) {
+ this.cardno = cardno;
+ }
+
+ public String getFlag() {
+ return flag;
+ }
+
+ public void setFlag(String flag) {
+ this.flag = flag;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevBaseReq.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevBaseReq.java
new file mode 100644
index 0000000..88cf2f7
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevBaseReq.java
@@ -0,0 +1,52 @@
+package com.supwisdom.dlpay.bus.bean;
+
+/**
+ * 参数需签名时备用
+ * */
+public class BusDevBaseReq {
+ private String app_id;
+ private String term_id;
+ private String timestamp;
+ private String sign_method;
+ private String sign;
+
+ public String getApp_id() {
+ return app_id;
+ }
+
+ public void setApp_id(String app_id) {
+ this.app_id = app_id;
+ }
+
+ public String getTerm_id() {
+ return term_id;
+ }
+
+ public void setTerm_id(String term_id) {
+ this.term_id = term_id;
+ }
+
+ public String getTimestamp() {
+ return timestamp;
+ }
+
+ public void setTimestamp(String timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ public String getSign_method() {
+ return sign_method;
+ }
+
+ public void setSign_method(String sign_method) {
+ this.sign_method = sign_method;
+ }
+
+ public String getSign() {
+ return sign;
+ }
+
+ public void setSign(String sign) {
+ this.sign = sign;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevLoginReq.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevLoginReq.java
new file mode 100644
index 0000000..7399af0
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevLoginReq.java
@@ -0,0 +1,49 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusDevLoginReq extends BusDevBaseReq {
+ private String devphyid;
+ private String termdate;
+ private String termtime;
+ private Integer paragroupid;
+ private String cardverno;
+
+ public String getDevphyid() {
+ return devphyid;
+ }
+
+ public void setDevphyid(String devphyid) {
+ this.devphyid = devphyid;
+ }
+
+ public String getTermdate() {
+ return termdate;
+ }
+
+ public void setTermdate(String termdate) {
+ this.termdate = termdate;
+ }
+
+ public String getTermtime() {
+ return termtime;
+ }
+
+ public void setTermtime(String termtime) {
+ this.termtime = termtime;
+ }
+
+ public Integer getParagroupid() {
+ return paragroupid;
+ }
+
+ public void setParagroupid(Integer paragroupid) {
+ this.paragroupid = paragroupid;
+ }
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevLoginResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevLoginResp.java
new file mode 100644
index 0000000..f6b1a61
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDevLoginResp.java
@@ -0,0 +1,58 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusDevLoginResp extends BusApiResp {
+ private Integer paragroupid;
+ private Integer paraverno;
+ private Integer termseqno;
+ private String cardverno;
+ private String systime;
+ private String shopname;
+
+ public Integer getParagroupid() {
+ return paragroupid;
+ }
+
+ public void setParagroupid(Integer paragroupid) {
+ this.paragroupid = paragroupid;
+ }
+
+ public Integer getParaverno() {
+ return paraverno;
+ }
+
+ public void setParaverno(Integer paraverno) {
+ this.paraverno = paraverno;
+ }
+
+ public Integer getTermseqno() {
+ return termseqno;
+ }
+
+ public void setTermseqno(Integer termseqno) {
+ this.termseqno = termseqno;
+ }
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+
+ public String getSystime() {
+ return systime;
+ }
+
+ public void setSystime(String systime) {
+ this.systime = systime;
+ }
+
+ public String getShopname() {
+ return shopname;
+ }
+
+ public void setShopname(String shopname) {
+ this.shopname = shopname;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusDtlUploadResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDtlUploadResp.java
new file mode 100644
index 0000000..1fdbb15
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusDtlUploadResp.java
@@ -0,0 +1,13 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusDtlUploadResp extends BusApiResp {
+ private Integer termseqno;
+
+ public Integer getTermseqno() {
+ return termseqno;
+ }
+
+ public void setTermseqno(Integer termseqno) {
+ this.termseqno = termseqno;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusHeartBeatReq.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusHeartBeatReq.java
new file mode 100644
index 0000000..7b50f05
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusHeartBeatReq.java
@@ -0,0 +1,22 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusHeartBeatReq extends BusDevBaseReq {
+ private String devphyid;
+ private String cardverno;
+
+ public String getDevphyid() {
+ return devphyid;
+ }
+
+ public void setDevphyid(String devphyid) {
+ this.devphyid = devphyid;
+ }
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusHeartBeatResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusHeartBeatResp.java
new file mode 100644
index 0000000..64a66ae
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusHeartBeatResp.java
@@ -0,0 +1,40 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusHeartBeatResp extends BusApiResp {
+ private Integer paragroupid;
+ private Integer paraverno;
+ private String cardverno;
+ private String systime;
+
+ public Integer getParagroupid() {
+ return paragroupid;
+ }
+
+ public void setParagroupid(Integer paragroupid) {
+ this.paragroupid = paragroupid;
+ }
+
+ public Integer getParaverno() {
+ return paraverno;
+ }
+
+ public void setParaverno(Integer paraverno) {
+ this.paraverno = paraverno;
+ }
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+
+ public String getSystime() {
+ return systime;
+ }
+
+ public void setSystime(String systime) {
+ this.systime = systime;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusSysparaReq.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusSysparaReq.java
new file mode 100644
index 0000000..718c1dd
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusSysparaReq.java
@@ -0,0 +1,40 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusSysparaReq extends BusDevBaseReq{
+ private String devphyid;
+ private String termdate;
+ private String termtime;
+ private Integer paragroupid;
+
+ public String getDevphyid() {
+ return devphyid;
+ }
+
+ public void setDevphyid(String devphyid) {
+ this.devphyid = devphyid;
+ }
+
+ public String getTermdate() {
+ return termdate;
+ }
+
+ public void setTermdate(String termdate) {
+ this.termdate = termdate;
+ }
+
+ public String getTermtime() {
+ return termtime;
+ }
+
+ public void setTermtime(String termtime) {
+ this.termtime = termtime;
+ }
+
+ public Integer getParagroupid() {
+ return paragroupid;
+ }
+
+ public void setParagroupid(Integer paragroupid) {
+ this.paragroupid = paragroupid;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusSysparaResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusSysparaResp.java
new file mode 100644
index 0000000..151de10
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusSysparaResp.java
@@ -0,0 +1,35 @@
+package com.supwisdom.dlpay.bus.bean;
+
+import com.supwisdom.dlpay.api.bean.DevparaBean;
+
+import java.util.ArrayList;
+
+public class BusSysparaResp extends BusApiResp {
+ private Integer paragroupid;
+ private Integer paraverno;
+ private ArrayList<DevparaBean> syspara;
+
+ public Integer getParagroupid() {
+ return paragroupid;
+ }
+
+ public void setParagroupid(Integer paragroupid) {
+ this.paragroupid = paragroupid;
+ }
+
+ public Integer getParaverno() {
+ return paraverno;
+ }
+
+ public void setParaverno(Integer paraverno) {
+ this.paraverno = paraverno;
+ }
+
+ public ArrayList<DevparaBean> getSyspara() {
+ return syspara;
+ }
+
+ public void setSyspara(ArrayList<DevparaBean> syspara) {
+ this.syspara = syspara;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusdtlUploadReq.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusdtlUploadReq.java
new file mode 100644
index 0000000..41b3ee3
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusdtlUploadReq.java
@@ -0,0 +1,94 @@
+package com.supwisdom.dlpay.bus.bean;
+
+public class BusdtlUploadReq extends BusDevBaseReq {
+ private String devphyid;
+ private Integer termseqno;
+ private String transdate;
+ private String transtime;
+ private Integer amount;
+ private String cardno;
+ private String cardphyid;
+ private Integer extraamt;
+ private String managefeetype;
+ private String status; //success/fail
+
+ public String getDevphyid() {
+ return devphyid;
+ }
+
+ public void setDevphyid(String devphyid) {
+ this.devphyid = devphyid;
+ }
+
+ public Integer getTermseqno() {
+ return termseqno;
+ }
+
+ public void setTermseqno(Integer termseqno) {
+ this.termseqno = termseqno;
+ }
+
+ public String getTransdate() {
+ return transdate;
+ }
+
+ public void setTransdate(String transdate) {
+ this.transdate = transdate;
+ }
+
+ public String getTranstime() {
+ return transtime;
+ }
+
+ public void setTranstime(String transtime) {
+ this.transtime = transtime;
+ }
+
+ public Integer getAmount() {
+ return amount;
+ }
+
+ public void setAmount(Integer amount) {
+ this.amount = amount;
+ }
+
+ public String getCardno() {
+ return cardno;
+ }
+
+ public void setCardno(String cardno) {
+ this.cardno = cardno;
+ }
+
+ public String getCardphyid() {
+ return cardphyid;
+ }
+
+ public void setCardphyid(String cardphyid) {
+ this.cardphyid = cardphyid;
+ }
+
+ public Integer getExtraamt() {
+ return extraamt;
+ }
+
+ public void setExtraamt(Integer extraamt) {
+ this.extraamt = extraamt;
+ }
+
+ public String getManagefeetype() {
+ return managefeetype;
+ }
+
+ public void setManagefeetype(String managefeetype) {
+ this.managefeetype = managefeetype;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java b/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java
new file mode 100644
index 0000000..f178ce2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java
@@ -0,0 +1,46 @@
+package com.supwisdom.dlpay.bus.controller;
+
+import com.supwisdom.dlpay.bus.bean.*;
+import com.supwisdom.dlpay.bus.service.BusConsumeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/bus")
+public class BusConsumeController {
+ @Autowired
+ private BusConsumeService busConsumeService;
+
+ @PostMapping("/login")
+ public BusDevLoginResp busLogin(@ModelAttribute BusDevLoginReq req) {
+ return new BusDevLoginResp();
+ }
+
+ @PostMapping("/heartbeat")
+ public BusHeartBeatResp heartBeat(@ModelAttribute BusHeartBeatReq req) {
+ return new BusHeartBeatResp();
+ }
+
+ @PostMapping("/updatesyspara")
+ public BusSysparaResp updateSyspara(@ModelAttribute BusSysparaReq req){
+ return new BusSysparaResp();
+ }
+
+ @PostMapping("/blacklistbitmap")
+ public String downloadBlacklistbitmap(){
+ return "";
+ }
+
+ @PostMapping("/downloadblacklist")
+ public BusBlacklistResp downloadBlacklist(@ModelAttribute BusBlacklistReq req){
+ return new BusBlacklistResp();
+ }
+
+ @PostMapping("/busdtlupload")
+ public BusDtlUploadResp uploadBusdtl(@ModelAttribute BusdtlUploadReq req){
+ return new BusDtlUploadResp();
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardDao.java b/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardDao.java
new file mode 100644
index 0000000..500d35b
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardDao.java
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.bus.dao;
+
+import com.supwisdom.dlpay.bus.domain.TCitizenCard;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CitizenCardDao extends JpaRepository<TCitizenCard, String> {
+ TCitizenCard findByCardno(String cardno);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java b/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java
new file mode 100644
index 0000000..bd65241
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java
@@ -0,0 +1,14 @@
+package com.supwisdom.dlpay.bus.dao;
+
+import com.supwisdom.dlpay.bus.domain.TCitizenCardver;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CitizenCardverDao extends JpaRepository<TCitizenCardver, String> {
+ @Modifying
+ @Query(value = "update tb_citizen_cardver set status='closed' where status='normal' and cardvertype=?1 and cardno=?2 and cardverno<?3 ", nativeQuery = true)
+ void doClosedHistoryRecords(String cardvertype, String cardno, String cardverno);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/domain/TCitizenCard.java b/src/main/java/com/supwisdom/dlpay/bus/domain/TCitizenCard.java
new file mode 100644
index 0000000..ede535e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/domain/TCitizenCard.java
@@ -0,0 +1,204 @@
+package com.supwisdom.dlpay.bus.domain;
+
+import com.supwisdom.dlpay.api.bean.CitizenCardInfo;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "TB_CITIZEN_CARD",
+ indexes = {@Index(name = "IDX_CITIZEN_CARD_BANKCARDNO", columnList = "BANKCARDNO")})
+public class TCitizenCard {
+ @Id
+ @Column(name = "CARDNO", nullable = false, length = 20)
+ private String cardno;
+
+ @Column(name = "CARDPHYID", length = 20)
+ private String cardphyid;
+
+ @Column(name = "EXPIREDATE", length = 20)
+ private String expiredate;
+
+ @Column(name = "STATUS", nullable = false, length = 20)
+ private String status;
+
+ @Column(name = "TRANS_STATUS", nullable = false, length = 20)
+ private String transStatus;
+
+ @Column(name = "PAYERID", length = 31)
+ private String payerid;
+
+ @Column(name = "USERNAME", length = 200)
+ private String username;
+
+ @Column(name = "SEX", length = 10)
+ private String sex;
+
+ @Column(name = "IDTYPE", length = 60)
+ private String idtype;
+
+ @Column(name = "IDNO", length = 30)
+ private String idno;
+
+ @Column(name = "PHONE", length = 30)
+ private String phone;
+
+ @Column(name = "BANKCARDNO", length = 32)
+ private String bankcardno;
+
+ @Column(name = "CARDVERNO", length = 32)
+ private String cardverno;
+
+ @Version
+ @Column(name = "LASTSAVED")
+ private Timestamp lastsaved;
+
+ public TCitizenCard() {
+ }
+
+ public TCitizenCard(String cardno, String cardphyid, String expiredate, String status, String transStatus, String payerid, String username, String sex, String idtype, String idno, String phone, String bankcardno, String cardverno, Timestamp lastsaved) {
+ this.cardno = cardno;
+ this.cardphyid = cardphyid;
+ this.expiredate = expiredate;
+ this.status = status;
+ this.transStatus = transStatus;
+ this.payerid = payerid;
+ this.username = username;
+ this.sex = sex;
+ this.idtype = idtype;
+ this.idno = idno;
+ this.phone = phone;
+ this.bankcardno = bankcardno;
+ this.cardverno = cardverno;
+ this.lastsaved = lastsaved;
+ }
+
+ public TCitizenCard(CitizenCardInfo cardInfo, String cardverno, Timestamp lastsaved) {
+ this.cardno = cardInfo.getCardno();
+ this.cardphyid = cardInfo.getCardphyid();
+ this.expiredate = cardInfo.getExpiredate();
+ this.status = cardInfo.getCardstatus();
+ this.transStatus = cardInfo.getTransstatus();
+ this.payerid = cardInfo.getUserid();
+ this.username = cardInfo.getUsername();
+ this.sex = cardInfo.getSex();
+ this.idtype = cardInfo.getIdtype();
+ this.idno = cardInfo.getIdno();
+ this.phone = cardInfo.getPhone();
+ this.bankcardno = cardInfo.getBankcardno();
+ this.cardverno = cardverno;
+ this.lastsaved = lastsaved;
+ }
+
+ public String getCardno() {
+ return cardno;
+ }
+
+ public void setCardno(String cardno) {
+ this.cardno = cardno;
+ }
+
+ public String getCardphyid() {
+ return cardphyid;
+ }
+
+ public void setCardphyid(String cardphyid) {
+ this.cardphyid = cardphyid;
+ }
+
+ public String getExpiredate() {
+ return expiredate;
+ }
+
+ public void setExpiredate(String expiredate) {
+ this.expiredate = expiredate;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getTransStatus() {
+ return transStatus;
+ }
+
+ public void setTransStatus(String transStatus) {
+ this.transStatus = transStatus;
+ }
+
+ public String getPayerid() {
+ return payerid;
+ }
+
+ public void setPayerid(String payerid) {
+ this.payerid = payerid;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+
+ public String getIdtype() {
+ return idtype;
+ }
+
+ public void setIdtype(String idtype) {
+ this.idtype = idtype;
+ }
+
+ public String getIdno() {
+ return idno;
+ }
+
+ public void setIdno(String idno) {
+ this.idno = idno;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getBankcardno() {
+ return bankcardno;
+ }
+
+ public void setBankcardno(String bankcardno) {
+ this.bankcardno = bankcardno;
+ }
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+
+ public Timestamp getLastsaved() {
+ return lastsaved;
+ }
+
+ public void setLastsaved(Timestamp lastsaved) {
+ this.lastsaved = lastsaved;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/domain/TCitizenCardver.java b/src/main/java/com/supwisdom/dlpay/bus/domain/TCitizenCardver.java
new file mode 100644
index 0000000..6358aa4
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/domain/TCitizenCardver.java
@@ -0,0 +1,108 @@
+package com.supwisdom.dlpay.bus.domain;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_CITIZEN_CARDVER",
+ indexes = {@Index(name = "idx_citizen_cardver_cardno", columnList = "cardno")})
+public class TCitizenCardver {
+ @Id
+ @Column(name = "CARDVERNO", nullable = false, length = 20)
+ private String cardverno;
+
+ @Column(name = "ACCDATE", length = 8)
+ private String accdate;
+
+ @Column(name = "CARDNO", nullable = false, length = 20)
+ private String cardno;
+
+ @Column(name = "CARDPHYID", length = 20)
+ private String cardphyid;
+
+ @Column(name = "PAYERID", length = 32)
+ private String payerid;
+
+ @Column(name = "CARDVERTYPE", length = 20)
+ private String cardvertype;
+
+ @Column(name = "ADDDELFLAG", nullable = false, length = 1)
+ private Integer adddelflag; //1-需要下发,0-不需要下发
+
+ @Column(name = "STATUS", nullable = false, length = 20)
+ private String status;
+
+ @Column(name = "LASTSAVED", length = 14)
+ private String lastsaved;
+
+ public String getCardverno() {
+ return cardverno;
+ }
+
+ public void setCardverno(String cardverno) {
+ this.cardverno = cardverno;
+ }
+
+ public String getAccdate() {
+ return accdate;
+ }
+
+ public void setAccdate(String accdate) {
+ this.accdate = accdate;
+ }
+
+ public String getCardno() {
+ return cardno;
+ }
+
+ public void setCardno(String cardno) {
+ this.cardno = cardno;
+ }
+
+ public String getCardphyid() {
+ return cardphyid;
+ }
+
+ public void setCardphyid(String cardphyid) {
+ this.cardphyid = cardphyid;
+ }
+
+ public String getPayerid() {
+ return payerid;
+ }
+
+ public void setPayerid(String payerid) {
+ this.payerid = payerid;
+ }
+
+ public String getCardvertype() {
+ return cardvertype;
+ }
+
+ public void setCardvertype(String cardvertype) {
+ this.cardvertype = cardvertype;
+ }
+
+ public Integer getAdddelflag() {
+ return adddelflag;
+ }
+
+ public void setAdddelflag(Integer adddelflag) {
+ this.adddelflag = adddelflag;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getLastsaved() {
+ return lastsaved;
+ }
+
+ public void setLastsaved(String lastsaved) {
+ this.lastsaved = lastsaved;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java b/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
new file mode 100644
index 0000000..289ba99
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
@@ -0,0 +1,4 @@
+package com.supwisdom.dlpay.bus.service;
+
+public interface BusConsumeService {
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/CitizenCardService.java b/src/main/java/com/supwisdom/dlpay/bus/service/CitizenCardService.java
new file mode 100644
index 0000000..af0063e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/CitizenCardService.java
@@ -0,0 +1,20 @@
+package com.supwisdom.dlpay.bus.service;
+
+import com.supwisdom.dlpay.api.bean.CitizenCardInfo;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface CitizenCardService {
+ @Transactional(rollbackFor = Exception.class)
+ String getPayapiCardSynctime();
+
+ @Transactional(rollbackFor = Exception.class, readOnly = true)
+ String getPayapiSignkey();
+
+ @Transactional(rollbackFor = Exception.class)
+ boolean doFirstSyncCard(List<CitizenCardInfo> cards)throws Exception;
+
+ @Transactional(rollbackFor = Exception.class)
+ void doSyncSingleCitizencard(CitizenCardInfo cardInfo) throws Exception;
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java b/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
new file mode 100644
index 0000000..a3541d2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
@@ -0,0 +1,9 @@
+package com.supwisdom.dlpay.bus.service.impl;
+
+import com.supwisdom.dlpay.bus.service.BusConsumeService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class BusConsumeServiceImpl implements BusConsumeService {
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java b/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java
new file mode 100644
index 0000000..dc8d0b8
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java
@@ -0,0 +1,288 @@
+package com.supwisdom.dlpay.bus.service.impl;
+
+import com.supwisdom.dlpay.api.bean.CitizenCardInfo;
+import com.supwisdom.dlpay.bus.dao.CitizenCardDao;
+import com.supwisdom.dlpay.bus.dao.CitizenCardverDao;
+import com.supwisdom.dlpay.bus.domain.TCitizenCard;
+import com.supwisdom.dlpay.bus.domain.TCitizenCardver;
+import com.supwisdom.dlpay.bus.service.CitizenCardService;
+import com.supwisdom.dlpay.bus.util.BusConstant;
+import com.supwisdom.dlpay.bus.util.BusException;
+import com.supwisdom.dlpay.framework.dao.SysparaDao;
+import com.supwisdom.dlpay.framework.data.SystemDateTime;
+import com.supwisdom.dlpay.framework.domain.TSyspara;
+import com.supwisdom.dlpay.framework.service.SystemUtilService;
+import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.framework.util.SysparaUtil;
+import org.apache.commons.lang.math.NumberUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class CitizenCardServiceImpl implements CitizenCardService {
+ @Autowired
+ private SysparaDao sysparaDao;
+ @Autowired
+ private SystemUtilService systemUtilService;
+ @Autowired
+ private CitizenCardDao citizenCardDao;
+ @Autowired
+ private CitizenCardverDao citizenCardverDao;
+
+ @Override
+ public String getPayapiCardSynctime() {
+ TSyspara syspara = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_CARDSYNCTIME);
+ if (null == syspara) {
+ syspara = new TSyspara();
+ syspara.setParaid(BusConstant.SYSPARAID_CARDSYNCTIME);
+ syspara.setParaval(BusConstant.PAYAPI_CARDSYNC_DEFAULTTIME);
+ syspara.setParaname("跟核心平台同步卡信息的最后时间");
+ syspara.setValueType(SysparaUtil.SYSPARA_VALUETYPE_STRING);
+ syspara.setEditflag(0);
+ syspara.setDisplayflag("y");
+ syspara.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+ sysparaDao.save(syspara);
+ }
+ return syspara.getParaval();
+ }
+
+ @Override
+ public String getPayapiSignkey() {
+ return BusConstant.PAYAPI_CONNECT_SIGNKEY;
+ }
+
+ private String createCardverno(String hostdate, int index) {
+ return String.format("%s%08d", hostdate.substring(2), index); //191225 00000001
+ }
+
+ @Override
+ public boolean doFirstSyncCard(List<CitizenCardInfo> cards) throws Exception {
+ TSyspara synctime = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_CARDSYNCTIME);
+ TSyspara maxcardver = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_MAXCARDVERNO);
+ TSyspara maxBlackCardver = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_MAXBLACKCARDVERNO);
+ if (null == maxcardver || null == maxBlackCardver) {
+ throw new BusException("卡版本号全局参数为空");
+ }
+ SystemDateTime dt = systemUtilService.getSysdatetime();
+ int count = 0;
+ String cardverno = BusConstant.CARDVERNO_DEFAULT;
+ String blackverno = BusConstant.CARDVERNO_DEFAULT;
+ String cardsynctime = BusConstant.PAYAPI_CARDSYNC_DEFAULTTIME;
+ List<TCitizenCard> citizenCards = new ArrayList<>(0);
+ List<TCitizenCardver> citizenCardvers = new ArrayList<>(0);
+ for (CitizenCardInfo bean : cards) {
+ cardsynctime = bean.getUpdtime(); //updtime 升序排最后一条
+ cardverno = createCardverno(dt.getHostdate(), ++count);
+
+ TCitizenCard card = new TCitizenCard(bean, cardverno, systemUtilService.getSysdatetime().getSysdate());
+ citizenCards.add(card);
+
+ TCitizenCardver cardver = new TCitizenCardver();
+ cardver.setCardverno(card.getCardverno());
+ cardver.setAccdate(dt.getHostdate());
+ cardver.setCardno(card.getCardno());
+ cardver.setCardphyid(card.getCardphyid());
+ cardver.setPayerid(card.getPayerid());
+ if (BusConstant.STATUS_CARDVER_CLOSED.equals(card.getStatus()) || BusConstant.STATUS_CARDVER_CLOSED.equals(card.getTransStatus())) {
+ //注销
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_CLOSED); //注销
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ blackverno = card.getCardverno();
+ } else if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getTransStatus())) {
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_REGISTER); //注册
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_NONE); //不下发黑名单
+ } else {
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_FREEZE); //卡状态异常
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ blackverno = card.getCardverno();
+ }
+ cardver.setStatus(BusConstant.STATUS_CARDVER_NORMAL);
+ cardver.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+ citizenCardvers.add(cardver);
+ }
+
+ citizenCardDao.saveAll(citizenCards); //批量插入
+ citizenCardverDao.saveAll(citizenCardvers); //批量插入
+
+ maxcardver.setParaval(cardverno);
+ sysparaDao.save(maxcardver); //当前系统版本号
+ maxBlackCardver.setParaval(blackverno);
+ sysparaDao.save(maxBlackCardver); //当前黑名单版本号
+ synctime.setParaval(cardsynctime);
+ sysparaDao.save(synctime); //当前同步时间
+ return true;
+ }
+
+ private String doSwithCardverno(String cardverno) throws Exception {
+ String hostdate = systemUtilService.getSysdatetime().getHostdate();
+ if (StringUtil.isEmpty(cardverno) || BusConstant.CARDVERNO_DEFAULT.equals(cardverno)) {
+ return createCardverno(hostdate, 1);
+ }
+
+ if (cardverno.trim().length() != BusConstant.CARDVERNO_LENGTH) {
+ throw new BusException("******************* 卡版本号[" + cardverno + "]非14位数!!!******************* ");
+ }
+ String verdate = "20" + cardverno.substring(0, 6);
+ if (!DateUtil.checkDatetimeValid(verdate, "yyyyMMdd")) {
+ throw new BusException("******************* 卡版本号[" + cardverno + "]非法,前六位非日期格式 ******************* ");
+ } else if (DateUtil.compareDatetime(verdate, hostdate, "yyyyMMdd") > 0) {
+ throw new BusException("******************* 卡版本号[" + cardverno + "]非法,前六位日期比当前日期大 ******************* ");
+ } else if (!NumberUtils.isDigits(cardverno.substring(6))) {
+ throw new BusException("******************* 卡版本号[" + cardverno + "]非法,后八位非数字!!! ******************* ");
+ }
+ if (hostdate.equals(verdate)) {
+ int suffix = Integer.valueOf(cardverno.substring(6));
+ return createCardverno(hostdate, suffix + 1);
+ } else {
+ return createCardverno(hostdate, 1); //跨天从1开始
+ }
+ }
+
+
+ @Override
+ public void doSyncSingleCitizencard(CitizenCardInfo cardInfo) throws Exception {
+ TSyspara synctime = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_CARDSYNCTIME); //非等待锁
+ TSyspara maxcardver = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_MAXCARDVERNO); //非等待锁
+ String cardverno = null;
+
+ SystemDateTime dt = systemUtilService.getSysdatetime();
+ TCitizenCard card = citizenCardDao.findByCardno(cardInfo.getCardno());
+ if (null != card) {
+ cardverno = doSwithCardverno(maxcardver.getParaval());
+ card = new TCitizenCard(cardInfo, cardverno, dt.getSysdate());
+ citizenCardDao.save(card);
+
+ TCitizenCardver cardver = new TCitizenCardver();
+ cardver.setCardverno(card.getCardverno());
+ cardver.setAccdate(dt.getHostdate());
+ cardver.setCardno(card.getCardno());
+ cardver.setCardphyid(card.getCardphyid());
+ cardver.setPayerid(card.getPayerid());
+ if (BusConstant.STATUS_CARDVER_CLOSED.equals(card.getStatus()) || BusConstant.STATUS_CARDVER_CLOSED.equals(card.getTransStatus())) {
+ //注销
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_CLOSED); //注销
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ } else if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getTransStatus())) {
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_REGISTER); //注册
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_NONE); //不下发黑名单
+ } else {
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_FREEZE); //卡状态异常
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ }
+ cardver.setStatus(BusConstant.STATUS_CARDVER_NORMAL);
+ cardver.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+ citizenCardverDao.save(cardver);
+ } else {
+ boolean updFlag = false;
+ if (null != cardInfo.getCardphyid() && !cardInfo.getCardphyid().equals(card.getCardphyid())) {
+ card.setCardphyid(cardInfo.getCardphyid());
+ updFlag = true;
+ }
+ if (null != cardInfo.getExpiredate() && !cardInfo.getExpiredate().equals(card.getExpiredate())) {
+ card.setExpiredate(cardInfo.getExpiredate());
+ updFlag = true;
+ }
+ if (null != cardInfo.getUserid() && !cardInfo.getUserid().equals(card.getPayerid())) {
+ card.setPayerid(cardInfo.getUserid());
+ updFlag = true;
+ }
+ if (null != cardInfo.getUsername() && !cardInfo.getUsername().equals(card.getUsername())) {
+ card.setUsername(cardInfo.getUsername());
+ updFlag = true;
+ }
+ if (null != cardInfo.getSex() && !cardInfo.getSex().equals(card.getSex())) {
+ card.setSex(cardInfo.getSex());
+ updFlag = true;
+ }
+ if (null != cardInfo.getIdtype() && !cardInfo.getIdtype().equals(card.getIdtype())) {
+ card.setIdtype(cardInfo.getIdtype());
+ updFlag = true;
+ }
+ if (null != cardInfo.getIdno() && !cardInfo.getIdno().equals(card.getIdno())) {
+ card.setIdno(cardInfo.getIdno());
+ updFlag = true;
+ }
+ if (null != cardInfo.getPhone() && !cardInfo.getPhone().equals(card.getPhone())) {
+ card.setPhone(cardInfo.getPhone());
+ updFlag = true;
+ }
+ if (null != card.getBankcardno() && !card.getBankcardno().equals(card.getBankcardno())) {
+ card.setBankcardno(cardInfo.getBankcardno());
+ updFlag = true;
+ }
+
+ if (!card.getStatus().equals(cardInfo.getCardstatus()) || !card.getTransStatus().equals(cardInfo.getTransstatus())) {
+ //卡状态有变化
+ updFlag = true;
+ card.setStatus(cardInfo.getCardstatus());
+ card.setTransStatus(cardInfo.getTransstatus());
+
+ TCitizenCardver cardver = null;
+ if (BusConstant.STATUS_CARDVER_CLOSED.equals(cardInfo.getCardstatus()) || BusConstant.STATUS_CARDVER_CLOSED.equals(cardInfo.getTransstatus())) {
+ if (!BusConstant.STATUS_CARDVER_CLOSED.equals(card.getStatus()) && !BusConstant.STATUS_CARDVER_CLOSED.equals(card.getTransStatus())) {
+ //卡状态改为注销
+ cardverno = doSwithCardverno(maxcardver.getParaval());
+ card.setCardverno(cardverno);
+ cardver = new TCitizenCardver();
+ cardver.setCardverno(cardverno);
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_CLOSED); //注销
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_REGISTER, card.getCardno(), cardverno); //注册记录置为无效
+ }
+ } else if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getTransStatus())) {
+ if (!BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) || !BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus())) {
+ //卡状态由异常变正常
+ cardverno = doSwithCardverno(maxcardver.getParaval());
+ card.setCardverno(cardverno);
+ cardver = new TCitizenCardver();
+ cardver.setCardverno(cardverno);
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_UNFREEZE); //变为正常
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_FREEZE, card.getCardno(), cardverno); //冻结记录置为无效
+ citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_CLOSED, card.getCardno(), cardverno); //注销记录置为无效
+ }
+ } else {
+ if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus())) {
+ //卡状态由正常变异常
+ cardverno = doSwithCardverno(maxcardver.getParaval());
+ card.setCardverno(cardverno);
+ cardver = new TCitizenCardver();
+ cardver.setCardverno(cardverno);
+ cardver.setCardvertype(BusConstant.CARDVERTYPE_FREEZE); //变为异常
+ cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+ citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_UNFREEZE, card.getCardno(), cardverno); //解冻记录置为无效
+ }
+ }
+
+ if (null != cardver) {
+ cardver.setAccdate(dt.getHostdate());
+ cardver.setCardno(card.getCardno());
+ cardver.setCardphyid(card.getCardphyid());
+ cardver.setPayerid(card.getPayerid());
+ cardver.setStatus(BusConstant.STATUS_CARDVER_NORMAL);
+ cardver.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+ citizenCardverDao.save(cardver);
+ sysparaDao.updateSysparaValue(cardver.getCardverno(), BusConstant.SYSPARAID_MAXBLACKCARDVERNO); //更新系统黑名单版本号
+ }
+ }
+
+ if (updFlag) {
+ citizenCardDao.save(card); //更新卡表
+ }
+ }
+
+ if (null != cardverno) {
+ maxcardver.setParaval(cardverno);
+ sysparaDao.save(maxcardver); //系统的卡版本号
+ }
+
+ synctime.setParaval(cardInfo.getUpdtime());
+ sysparaDao.save(synctime); //更新同步时间
+ }
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/task/CitizenCardSyncTask.java b/src/main/java/com/supwisdom/dlpay/bus/task/CitizenCardSyncTask.java
new file mode 100644
index 0000000..cb8030d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/task/CitizenCardSyncTask.java
@@ -0,0 +1,79 @@
+package com.supwisdom.dlpay.bus.task;
+
+import com.supwisdom.dlpay.api.bean.CardsResponse;
+import com.supwisdom.dlpay.api.bean.CitizenCardInfo;
+import com.supwisdom.dlpay.api.bean.QueryCardsParam;
+import com.supwisdom.dlpay.bus.service.CitizenCardService;
+import com.supwisdom.dlpay.bus.util.BusConstant;
+import com.supwisdom.dlpay.framework.service.SystemUtilService;
+import com.supwisdom.dlpay.paysdk.proxy.UserProxy;
+import net.javacrumbs.shedlock.core.SchedulerLock;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * 跟核心平台获取市民卡信息和实时生成黑名单
+ */
+@Component
+public class CitizenCardSyncTask {
+ private static final Logger logger = LoggerFactory.getLogger(CitizenCardSyncTask.class);
+
+ @Autowired
+ private CitizenCardService citizenCardService;
+ @Autowired
+ private SystemUtilService systemUtilService;
+ @Autowired
+ private UserProxy userProxy;
+
+
+ @Scheduled(cron = "${busapp.cardsync.cron}")
+ @SchedulerLock(name = "BusappCardSyncTask", lockAtMostForString = "PT10M")
+ public void doCitizenCardSyncTask() {
+ try {
+ long t1 = System.currentTimeMillis();
+ logger.info("跟核心平台同步市民卡信息任务开始");
+
+ String lastsynctime = citizenCardService.getPayapiCardSynctime(); //上次同步时间
+ String currenttime = systemUtilService.getSysdatetime().getHostdatetime();
+
+ doSyncCitizenCard(lastsynctime, currenttime);
+
+ long t2 = System.currentTimeMillis();
+ logger.info("跟核心平台同步市民卡信息任务结束,耗时 " + (t2 - t1) + " ms");
+ } catch (Exception ex) {
+ logger.error("跟核心平台同步市民卡信息任务报错!!!");
+ ex.printStackTrace();
+ }
+ }
+
+ private void doSyncCitizenCard(String begintime, String endtime) throws Exception {
+ QueryCardsParam param = new QueryCardsParam();
+ param.setStarttime(begintime);
+ param.setEndtime(endtime);
+ param.setVersion(BusConstant.PAYAPI_CONNECT_VERSION);
+ param.setTenantid(BusConstant.PAYAPI_CONNECT_TENANTID);
+ param.setSign_type(BusConstant.PAYAPI_CONNECT_SIGNTYPE);
+ param.generalSign(citizenCardService.getPayapiSignkey());
+ CardsResponse response = userProxy.querycards(param);
+ if (null == response || null == response.getCards() || response.getCards().size() <= 0) return;
+
+ if(BusConstant.PAYAPI_CARDSYNC_DEFAULTTIME.equals(begintime)) {
+ //第一次全量同步
+ boolean ret = citizenCardService.doFirstSyncCard(response.getCards());
+ if (ret) {
+ logger.info("初次同步数据成功,共插入" + response.getCards().size() + "条数据");
+ } else {
+ logger.error("初次同步数据失败!!!");
+ }
+ } else {
+ //增量同步
+ for (CitizenCardInfo cardInfo : response.getCards()) {
+ citizenCardService.doSyncSingleCitizencard(cardInfo);
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
new file mode 100644
index 0000000..8bd7bea
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
@@ -0,0 +1,33 @@
+package com.supwisdom.dlpay.bus.util;
+
+public class BusConstant {
+ public final static String PAYAPI_CONNECT_VERSION="1.0";
+ public final static String PAYAPI_CONNECT_SIGNTYPE="MD5";
+ public final static String PAYAPI_CONNECT_TENANTID="tenantid";
+ public final static String PAYAPI_CONNECT_SIGNKEY="c9ae5b4fe5014b5b9eb19e1a0797a3a3";
+
+ public final static String PAYAPI_CARDSYNC_DEFAULTTIME = "00000000000000"; //yyyyMMddhhmmss
+
+ public final static int CARDVERNO_LENGTH = 14;
+ public final static String CARDVERNO_DEFAULT = "00000000000000"; //yyMMdd+8位递增数
+
+
+ public final static String STATUS_CARDVER_NORMAL="normal";
+ public final static String STATUS_CARDVER_CLOSED="closed";
+
+ public final static String PAYAPI_CARDSYNC_ONCECOUNT="payapi.cardsync.oncecount";
+ public final static int PAYAPI_CARDSYNC_ONCECOUNT_DEFAULT = 20000;
+
+
+ public final static String CARDVERTYPE_REGISTER = "register"; //注册
+ public final static String CARDVERTYPE_CLOSED = "closed"; //注销
+ public final static String CARDVERTYPE_FREEZE = "frozen"; //状态挂失、冻结、未启用等都会冻结卡,下载黑名单
+ public final static String CARDVERTYPE_UNFREEZE = "unfrozen"; //卡状态正常时解冻
+
+ public final static int ADDDELFLAG_DOWNLOAD = 1; //需要下发
+ public final static int ADDDELFLAG_NONE = 0; //不需要下发
+
+ public final static int SYSPARAID_MAXCARDVERNO = 10; //全局参数,最大版本号
+ public final static int SYSPARAID_MAXBLACKCARDVERNO = 11; //全局参数,最大黑名单版本号
+ public final static int SYSPARAID_CARDSYNCTIME = 21; //全局参数,卡同步时间
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/util/BusException.java b/src/main/java/com/supwisdom/dlpay/bus/util/BusException.java
new file mode 100644
index 0000000..5ce5f5a
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/util/BusException.java
@@ -0,0 +1,7 @@
+package com.supwisdom.dlpay.bus.util;
+
+public class BusException extends Exception {
+ public BusException(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java
index b4f5da3..cd65fdf 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java
@@ -20,5 +20,9 @@
@Query(value = "from TSyspara where paraid=?1 ")
TSyspara findByParaidWithLockNowait(int paraid);
+ @Modifying
+ @Query(value = "update tb_syspara set paraval=?1 where paraid=?2 ", nativeQuery = true)
+ void updateSysparaValue(String value, int paraid);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/data/SystemDateTime.java b/src/main/java/com/supwisdom/dlpay/framework/data/SystemDateTime.java
index baaa274..49cb2a5 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/data/SystemDateTime.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/data/SystemDateTime.java
@@ -1,5 +1,6 @@
package com.supwisdom.dlpay.framework.data;
+import java.sql.Timestamp;
import java.util.Date;
public interface SystemDateTime {
@@ -9,5 +10,5 @@
String getHostdatetime();
- Date getSysdate();
+ Timestamp getSysdate();
}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
index 7a70969..386c5d1 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
@@ -35,35 +35,6 @@
private static final Logger logger = LoggerFactory.getLogger(SystemUtilServiceImpl.class);
- public static class SystemDateTimeImpl implements SystemDateTime {
- private Date now;
- private static final SimpleDateFormat sdft = new SimpleDateFormat("yyyyMMddHHmmss");
-
- public SystemDateTimeImpl(Date now) {
- this.now = now;
- }
-
- @Override
- public String getHostdate() {
- return sdft.format(this.now).substring(0, 8);
- }
-
- @Override
- public String getHosttime() {
- return sdft.format(this.now).substring(8, 14);
- }
-
- @Override
- public String getHostdatetime() {
- return sdft.format(this.now);
- }
-
- @Override
- public Date getSysdate() {
- return this.now;
- }
- }
-
/**
* 获取oracle数据库时间
*/