修改签约解约、二维码接口
diff --git a/backend/build.gradle b/backend/build.gradle
index 45c52ba..61a4f10 100644
--- a/backend/build.gradle
+++ b/backend/build.gradle
@@ -74,7 +74,7 @@
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.9.1'
compile group: 'log4j', name: 'log4j', version: '1.2.17'
- compile group: 'com.supwisdom', name: 'payapi-sdk', version: '1.0.25-4-g8c3fe54'
+ compile group: 'com.supwisdom', name: 'payapi-sdk', version: '1.0.26-1-g9a9f482'
implementation 'org.hamcrest:hamcrest:2.1'
}
diff --git a/backend/src/main/java/com/supwisdom/dlpay/portal/dao/impl/OutletsRepositoryImpl.java b/backend/src/main/java/com/supwisdom/dlpay/portal/dao/impl/OutletsRepositoryImpl.java
new file mode 100644
index 0000000..9349584
--- /dev/null
+++ b/backend/src/main/java/com/supwisdom/dlpay/portal/dao/impl/OutletsRepositoryImpl.java
@@ -0,0 +1,38 @@
+package com.supwisdom.dlpay.portal.dao.impl;
+
+import com.supwisdom.dlpay.framework.jpa.BaseRepository;
+import com.supwisdom.dlpay.framework.jpa.Finder;
+import com.supwisdom.dlpay.framework.jpa.page.Pagination;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.portal.bean.OutletsSearchBean;
+import com.supwisdom.dlpay.portal.dao.OutletsRepository;
+import com.supwisdom.dlpay.portal.domain.TBOutlets;
+import org.hibernate.transform.Transformers;
+import org.jetbrains.annotations.NotNull;
+
+public class OutletsRepositoryImpl extends BaseRepository implements OutletsRepository {
+ @NotNull
+ @Override
+ public Pagination getOutletsList(@NotNull OutletsSearchBean bean) {
+ String name = bean.getName();
+ String address = bean.getAddress();
+ int pageno = bean.getPageno();
+ int pagesize = bean.getPagesize();
+ StringBuilder sql = new StringBuilder("select * from tb_outlets where 1=1");
+ if (!StringUtil.isEmpty(name)) {
+ sql.append(" and name like :name");
+ }
+ if (!StringUtil.isEmpty(address)) {
+ sql.append(" and address like :address");
+ }
+ sql.append(" order by outletsno desc");
+ Finder f = Finder.create(sql.toString());
+ if (!StringUtil.isEmpty(name)) {
+ f.setParameter("name", "%" + name.trim() + "%");
+ }
+ if (!StringUtil.isEmpty(address)) {
+ f.setParameter("address", "%" + address.trim() + "%");
+ }
+ return findNative(f, Transformers.aliasToBean(TBOutlets.class), pageno, pagesize);
+ }
+}
diff --git a/backend/src/main/java/com/supwisdom/dlpay/portal/domain/TBOutlets.java b/backend/src/main/java/com/supwisdom/dlpay/portal/domain/TBOutlets.java
index a459cc8..0493441 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/portal/domain/TBOutlets.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/portal/domain/TBOutlets.java
@@ -6,7 +6,7 @@
@Entity
@Table(name = "tb_outlets",
- indexes = {@Index(name = "outlets_idx1", columnList = "outlesno"),
+ indexes = {@Index(name = "outlets_idx1", columnList = "outletsno"),
@Index(name = "outlets_idx2", columnList = "name"),
@Index(name = "outlets_idx3", columnList = "address")})
public class TBOutlets {
@@ -16,8 +16,8 @@
@Column(name = "id", nullable = false, length = 32)
private String id;
- @Column(name = "outlesno")
- private String outlesno;
+ @Column(name = "outletsno")
+ private String outletsno;
@Column(name = "name",length = 100)
private String name;
@@ -31,9 +31,11 @@
@Column(name = "endtime", length = 6)
private String endtime;
- @Column(name = "location",length = 20)
+ @Column(name = "location",length = 30)
private String location;
+ @Column(name = "createtime",length = 14)
+ private String createtime;
@Column(name = "businescope", length = 100)
private String businescope;
@@ -49,12 +51,12 @@
this.id = id;
}
- public String getOutlesno() {
- return outlesno;
+ public String getOutletsno() {
+ return outletsno;
}
- public void setOutlesno(String outlesno) {
- this.outlesno = outlesno;
+ public void setOutletsno(String outletsno) {
+ this.outletsno = outletsno;
}
public String getName() {
@@ -112,4 +114,12 @@
public void setTel(String tel) {
this.tel = tel;
}
+
+ public String getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(String createtime) {
+ this.createtime = createtime;
+ }
}
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index bef3e3c..45f42cd 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -517,69 +517,42 @@
})
if (cardResponse.retcode != 0) {
logger.error { "查询卡片[${cardno}]信息失败:${cardResponse.retmsg}" }
- return JsonResult.error("银行卡号有误")
+ return JsonResult.error("查询银行卡信息失败,请检查卡号是否正确")
}
val card = cardResponse.card
- if (card.userid.isNullOrEmpty() || card.status != TradeDict.STATUS_NORMAL) {
- return JsonResult.error("银行卡号信息有误")
- }
- val personResponse = userProxy.queryPerson(card.userid)
- if (personResponse.retcode != 0) {
- logger.error { "查询用户[${card.userid}]信息失败:${personResponse.retmsg}" }
- return JsonResult.error("查询用户信息失败,请稍后重试")
- }
- val person = personResponse.person
- if (person.name != name) {
- return JsonResult.error("绑定信息有误[姓名]")
- }
- if (person.idtype != idtype || person.idno != idno) {
- return JsonResult.error("绑定信息有误[证件类型/证件号]")
- }
val exsitUser = mobileApiService.findUserById(card.userid)
if (exsitUser != null) {
return JsonResult.error("该银行卡号已被绑定,若您本人绑定,请先解除绑定,若非本人,请联系客服")
}
- var signed = ""
- //call api
- var resp = citizencardPayService.bindCard(cardno, name, idtype, idno, phone)
- if (resp.code != "0000") {
- return JsonResult.error(resp.message)
+ val bindCardResult = userProxy.bindCard(BindCardParam().apply{
+ this.cardno = cardno
+ this.name = name
+ this.idtype = idtype
+ this.idno = idno
+ this.phone = user.phone
+ })
+ if (bindCardResult["retcode"] != 0) {
+ logger.error { "绑卡失败,${bindCardResult["retmsg"]}" }
+ return JsonResult.error("绑卡失败,${bindCardResult["retmsg"]}")
}
- var needupdate = false
- if (resp.sinstatus == YnrccUtil.TRANSTYPE_SIGNCARD) {
- signed = TradeDict.STATUS_YES
- if (!card.signed) {
- card.signed = true
- val response = userProxy.updateCardSign(card.cardno, true)
- if (response.retcode != 0) {
- logger.error { "更新卡片签约状态失败:${response.retmsg}" }
- return JsonResult.error("绑卡失败,请稍后重试")
- }
- }
- user.signedtime = DateUtil.getNow();
+ val signed = bindCardResult["signed"] as String
+ if (TradeDict.STATUS_YES == signed) {
+ user.signedtime = DateUtil.getNow()
mobileApiService.saveUser(user)
- needupdate = true;
-
}
if (user.userid.isNullOrEmpty()) {
- user.userid = person.userid
+ user.userid = card.userid
user.bindtime = DateUtil.getNow()
- needupdate = true
- }
- if (needupdate) {
mobileApiService.saveUser(user)
}
var payseted = false
if (!user.paypwd.isNullOrEmpty()) {
payseted = true
}
-
return JsonResult.ok("OK").put("personid", card.userid)
?.put("paypwdset", payseted)
?.put("phonex", StringUtil.phoneReplace(phone))
?.put("signed", signed)!!
-
-
}
/**
@@ -749,43 +722,19 @@
if (user.phone.isNullOrEmpty()) {
return JsonResult.error("用户不存在,请注册")
}
- var signed: String
if (!user.userid.isNullOrEmpty()) {
- val cardResponse = userProxy.queryCard(QueryCardParam().apply {
- this.userid = user.userid
- this.cardtype = ConstantUtil.CARDTYPE_BANKCARD
- })
- if (cardResponse.retcode != 0) {
- logger.error { "查询用户[${user.userid}]卡片信息失败:${cardResponse.retmsg}" }
- return JsonResult.error("卡片不存在,请重新绑定")
- }
- val card = cardResponse.card
- val personResponse = userProxy.queryPerson(card.userid)
- if (personResponse.retcode != 0) {
- logger.error { "查询用户[${card.userid}]信息失败:${personResponse.retmsg}" }
- return JsonResult.error("查询用户信息失败,请稍后重试")
- }
- val person = personResponse.person
- //call sign api
- val captcha = agree//此处为验证码,暂由此参数代替
- var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_SIGNCARD, captcha)
- if (resp.code != "0000") {
- return JsonResult.error(resp.message)
- }
- card.signed = true
- user.signedtime = DateUtil.getNow()
- val response = userProxy.updateCardSign(card.cardno, true)
+ val response = userProxy.signbxy(user.userid, agree, user.phone)
if (response.retcode != 0) {
- logger.error { "更新卡片签约状态失败:${response.retmsg}" }
- return JsonResult.error("签约银行协议失败,请稍后重试")
+ logger.error { "用户签约失败:${response.retmsg}" }
+ return JsonResult.error("签约失败,${response.retmsg}")
}
+ user.signedtime = DateUtil.getNow()
mobileApiService.saveUser(user)
- signed = TradeDict.STATUS_YES
+ return JsonResult.ok("ok")
+ .put("signed", TradeDict.STATUS_YES)!!
} else {
return JsonResult.error("请先绑定银行卡")
}
- return JsonResult.ok("ok")
- .put("signed", signed)!!
}
/**
@@ -1096,12 +1045,24 @@
val p = SecurityContextHolder.getContext().authentication
val user = mobileApiService.findUserById(p.name)
?: return JsonResult.error("用户不存在,请注册")
- val resp = qrcodeService.encodeCode(user.uid)
- return if (resp.retcode == 0) {
- JsonResult.ok("ok").put("qrcode", resp.retmsg)!!
- } else {
- JsonResult.error(resp.retmsg)
+ if(TradeDict.STATUS_NORMAL!=user.status){
+ return JsonResult.error("用户状态异常")
}
+ if(user.userid.isNullOrEmpty()){
+ return JsonResult.error("用户未绑定身份")
+ }
+ val qrcodeResult = userProxy.qrcode(QrcodeParam().apply {
+ this.uid = user.uid
+ this.userid = user.userid
+ this.rsapublic = user.rsapublic
+ this.secertkey = user.secertkey
+ })
+ if (qrcodeResult["retcode"] != 0) {
+ logger.error { "生成二维码失败,${qrcodeResult["retmsg"]}" }
+ return JsonResult.error("生成二维码失败,${qrcodeResult["retmsg"]}")
+ }
+ val qrcode = qrcodeResult["qrcode"] as String
+ return JsonResult.ok("ok").put("qrcode", qrcode)!!
}
/**
@@ -1109,45 +1070,43 @@
* 解除银行协议
* */
@RequestMapping("/unsignbxy")
- fun unSignbxy(): JsonResult {
+ fun unSignbxy(paypwd: String): JsonResult {
val p = SecurityContextHolder.getContext().authentication
val user = mobileApiService.findUserById(p.name)
?: return JsonResult.error("用户不存在,请注册")
- var signed: String
+ if (user.paypwd.isNullOrEmpty()) {
+ return JsonResult.error("支付密码未设置,请先设置")
+ }
+ val paypwdtimes = user.checkPaypwdtime()
+ if (paypwdtimes == -1) {
+ return JsonResult.error("支付密码错误次数过多,请30分钟后再试")
+ } else if (paypwdtimes == 1) {
+ mobileApiService.saveUser(user)
+ }
+ val encoder = BCryptPasswordEncoder()
+ if (!encoder.matches(paypwd, user.paypwd)) {
+ user.updatePaypwderror(false).also {
+ if (it) mobileApiService.saveUser(user)
+ }
+ return JsonResult.error("支付密码错误")
+ } else {
+ user.updatePaypwderror(true).also {
+ if (it) mobileApiService.saveUser(user)
+ }
+ }
if (!user.userid.isNullOrEmpty()) {
- val cardResponse = userProxy.queryCard(QueryCardParam().apply {
- this.userid = user.userid
- this.cardtype = ConstantUtil.CARDTYPE_BANKCARD
- })
- if (cardResponse.retcode != 0) {
- logger.error { "查询用户[${user.userid}]卡片信息失败:${cardResponse.retmsg}" }
- return JsonResult.error(-1, "银行卡不存在,不能解除代扣协议")
- }
- val card = cardResponse.card
- //call sign api
- val personResponse = userProxy.queryPerson(card.userid)
- if (personResponse.retcode != 0) {
- logger.error { "查询用户[${card.userid}]信息失败:${personResponse.retmsg}" }
- return JsonResult.error("查询用户信息失败,请稍后重试")
- }
- val person = personResponse.person
- val captcha = ""//此处为验证码,暂由此参数代替
- var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_UNSIGNCARD, captcha)
- if (resp.code != "0000") {
- return JsonResult.error(resp.message)
- }
- card.signed = false
- val response = userProxy.updateCardSign(card.cardno, false)
+ val response = userProxy.unsignbxy(user.userid, user.phone)
if (response.retcode != 0) {
- logger.error { "更新卡片签约状态失败:${response.retmsg}" }
- return JsonResult.error("解除银行协议失败,请稍后重试")
+ logger.error { "用户解约失败:${response.retmsg}" }
+ return JsonResult.error("解约失败,${response.retmsg}")
}
- signed = TradeDict.STATUS_NO
+ user.userid = null
+ mobileApiService.saveUser(user)
+ return JsonResult.ok("ok")
+ .put("signed", TradeDict.STATUS_NO)!!
} else {
return JsonResult.error("未绑定银行卡,不能解除代扣协议")
}
- return JsonResult.ok("ok")
- .put("signed", signed)!!
}
/**
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
index d5c5219..f4bd861 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
@@ -46,6 +46,8 @@
lateinit var uploadPicService: UploadPicService
@Autowired
lateinit var advisoryService: AdvisoryService
+ @Autowired
+ lateinit var outletsService: OutletsService
val logger = KotlinLogging.logger { }
@RequestMapping("/test")
@@ -392,4 +394,35 @@
JsonResult.error("删除问答异常")
}
}
+
+ /**
+ * 保存网点
+ */
+ @RequestMapping(value = ["/outlets/save"], method = [RequestMethod.POST])
+ fun saveOutlets(@RequestBody outlets: TBOutlets): JsonResult? {
+ return try {
+ outletsService.saveOutlets(outlets)
+ JsonResult.ok()
+ } catch (e: Exception) {
+ logger.error { e.message }
+ JsonResult.error("保存网点异常")
+ }
+ }
+
+ /**
+ * 查询网点
+ */
+ @RequestMapping(value = ["/outlets/list"], method = [RequestMethod.GET])
+ fun getAdvisoryList(bean: OutletsSearchBean): JsonResult? {
+ return try {
+ val page = outletsService.getOutletsList(bean)
+ if (page.list == null || page.list.size == 0) {
+ return JsonResult.ok().put("msg", "无数据")
+ }
+ return JsonResult.ok().put("page", page)
+ } catch (e: Exception) {
+ logger.error { e.message }
+ JsonResult.error("查询网点列表异常")
+ }
+ }
}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/OutletsSearchBean.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/OutletsSearchBean.kt
new file mode 100644
index 0000000..e8b05fc
--- /dev/null
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/OutletsSearchBean.kt
@@ -0,0 +1,8 @@
+package com.supwisdom.dlpay.portal.bean
+
+class OutletsSearchBean {
+ var name: String = ""
+ var address: String = ""
+ var pageno: Int = 1
+ var pagesize: Int = 10
+}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/OutletsDao.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/OutletsDao.kt
new file mode 100644
index 0000000..55c66cd
--- /dev/null
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/OutletsDao.kt
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.portal.dao
+
+import com.supwisdom.dlpay.portal.domain.TBOutlets
+import org.springframework.data.jpa.repository.JpaRepository
+import org.springframework.stereotype.Repository
+
+@Repository
+interface OutletsDao :JpaRepository<TBOutlets,String>,OutletsRepository{
+
+}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/OutletsRepository.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/OutletsRepository.kt
new file mode 100644
index 0000000..23ecaf5
--- /dev/null
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/OutletsRepository.kt
@@ -0,0 +1,8 @@
+package com.supwisdom.dlpay.portal.dao
+
+import com.supwisdom.dlpay.framework.jpa.page.Pagination
+import com.supwisdom.dlpay.portal.bean.OutletsSearchBean
+
+interface OutletsRepository {
+ fun getOutletsList(bean: OutletsSearchBean): Pagination
+}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/OutletsServiceImpl.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/OutletsServiceImpl.kt
new file mode 100644
index 0000000..84b47ae
--- /dev/null
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/OutletsServiceImpl.kt
@@ -0,0 +1,40 @@
+package com.supwisdom.dlpay.portal.service.Impl
+
+import com.supwisdom.dlpay.framework.dao.BusinessparaDao
+import com.supwisdom.dlpay.framework.jpa.page.Pagination
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.framework.util.StringUtil
+import com.supwisdom.dlpay.portal.bean.OutletsSearchBean
+import com.supwisdom.dlpay.portal.dao.OutletsDao
+import com.supwisdom.dlpay.portal.domain.TBOutlets
+import com.supwisdom.dlpay.portal.service.OutletsService
+import com.supwisdom.dlpay.portal.util.PortalConstant
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Service
+
+@Service
+class OutletsServiceImpl : OutletsService {
+ @Autowired
+ lateinit var outletsDao: OutletsDao
+ @Autowired
+ lateinit var businessparaDao: BusinessparaDao
+ @Autowired
+ lateinit var systemUtilService: SystemUtilService
+
+ override fun saveOutlets(outlets: TBOutlets) {
+ if (StringUtil.isEmpty(outlets.id)) {
+ val currentNoBusiness = businessparaDao.findByParakey(PortalConstant.SYSPARA_OUTLETS_CURRENTNO)
+ ?: throw RuntimeException("网点编号参数未配置")
+ val currentNo = currentNoBusiness.paraval.toInt()
+ currentNoBusiness.paraval = (currentNo + 1).toString()
+ businessparaDao.save(currentNoBusiness)
+ outlets.createtime = systemUtilService.sysdatetime.hostdatetime
+ outlets.outletsno = String.format("%06d", currentNo)
+ }
+ outletsDao.save(outlets)
+ }
+
+ override fun getOutletsList(bean: OutletsSearchBean): Pagination {
+ return outletsDao.getOutletsList(bean)
+ }
+}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/OutletsService.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/OutletsService.kt
new file mode 100644
index 0000000..927daf1
--- /dev/null
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/OutletsService.kt
@@ -0,0 +1,13 @@
+package com.supwisdom.dlpay.portal.service
+
+import com.supwisdom.dlpay.framework.jpa.page.Pagination
+import com.supwisdom.dlpay.portal.bean.OutletsSearchBean
+import com.supwisdom.dlpay.portal.domain.TBOutlets
+import org.springframework.transaction.annotation.Transactional
+
+interface OutletsService {
+ @Transactional
+ fun saveOutlets(outlets: TBOutlets)
+ @Transactional
+ fun getOutletsList(bean: OutletsSearchBean): Pagination
+}
\ No newline at end of file