From 294fda9c8c066d138b9786420ea8754c683d0c0f Mon Sep 17 00:00:00 2001 From: Xia Kaixiang Date: Wed, 10 Jul 2019 10:25:22 +0800 Subject: [PATCH] =?utf8?q?TCard=E5=AE=9A=E4=B9=89=E5=92=8C=E5=90=8C?= =?utf8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../supwisdom/dlpay/api/dao/AccountDao.java | 9 +- .../com/supwisdom/dlpay/api/dao/CardDao.java | 16 ++ .../com/supwisdom/dlpay/api/domain/TCard.java | 151 ++++++++++++++++++ .../dlpay/framework/domain/TSyspara.java | 14 +- .../filter/XssHttpServletRequestWrapper.java | 1 + .../dlpay/framework/util/SysparaUtil.java | 31 ++-- .../service/impl/UserDataServiceImpl.java | 2 +- .../supwisdom/dlpay/util/ConstantUtil.java | 6 + .../dlpay/api/bean/api_request_param.kt | 12 ++ .../dali_datasync_api_controller.kt | 41 ++++- .../api/service/dali_datasync_service.kt | 12 ++ .../impl/dali_datasync_service_impl.kt | 134 ++++++++++++++++ .../api/service/impl/user_service_impl.kt | 3 +- .../dlpay/mobile/AuthLoginHandler.kt | 4 +- .../com/supwisdom/dlpay/mobile/MobileApi.kt | 2 +- 15 files changed, 398 insertions(+), 40 deletions(-) create mode 100644 payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java create mode 100644 payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCard.java create mode 100644 payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/dali_datasync_service.kt create mode 100644 payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/dali_datasync_service_impl.kt diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java index 91c7bacc..174a3a3e 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java @@ -3,10 +3,7 @@ package com.supwisdom.dlpay.api.dao; import com.supwisdom.dlpay.api.domain.TAccount; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Lock; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.jpa.repository.QueryHints; +import org.springframework.data.jpa.repository.*; import org.springframework.data.repository.query.Param; import javax.persistence.LockModeType; @@ -39,4 +36,8 @@ public interface AccountDao extends JpaRepository { @Query("select a from TAccount a where a.person.name like CONCAT('%',:accname,'%') ") Page findAllByAccnameContaining(@Param("accname") String accname, Pageable pageable); + + @Modifying + @Query("update TAccount set accname=?1 where userid=?2") + void updateAccnameByUserid(String accname, String userid); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java new file mode 100644 index 00000000..74473d8a --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java @@ -0,0 +1,16 @@ +package com.supwisdom.dlpay.api.dao; + +import com.supwisdom.dlpay.api.domain.TCard; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +public interface CardDao extends JpaRepository { + + @Query("from TCard t where t.cardno=?1 and t.cardtype=?2") + TCard findCardByCardnoAndCardtype(String cardno, String cardtype); + + @Modifying + @Query("update TCard set status='closed' where userid=?1 and cardtype='bankcard' ") + void closedBankcardStatusByUserid(String userid); +} 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 new file mode 100644 index 00000000..dcf8f49c --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TCard.java @@ -0,0 +1,151 @@ +package com.supwisdom.dlpay.api.domain; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; + +@Entity +@Table(name = "TB_CARD", + indexes = {@Index(name = "tb_card_uk", columnList = "cardno,cardtype", unique = true)}) +public class TCard { + @Id + @GenericGenerator(name = "idGenerator", strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + @Column(name = "ID", nullable = false, length = 32) + private String id; + + @Column(name = "CARDNO", nullable = false, length = 32) + private String cardno; + + @Column(name = "CARDTYPE", nullable = false, length = 20) + private String cardtype; + + @Column(name = "CARDPHYID", length = 20) + private String cardphyid; + + @Column(name = "STATUS", nullable = false, length = 20) + private String status; //normal/closed + + @Column(name = "TRANS_STATUS", nullable = false, length = 20) + private String transStatus; //normal/loss/frozen/locked + + @Column(name = "EXPIREDATE", length = 20) + private String expiredate; + + @Column(name = "SIGNED", nullable = false, length = 10) + private Boolean signed = false; //签约状态 + + @Column(name = "USERID", nullable = false, length = 20) + private String userid; + + @Column(name = "LASTSAVED", length = 20) + private String lastsaved; + + @Column(name = "tenantid", length = 20) + @NotNull + private String tenantid = ""; + + public TCard() { + } + + public TCard(String cardno, String cardtype, String cardphyid, String status, String transStatus, String expiredate, Boolean signed, String userid, String lastsaved) { + this.cardno = cardno; + this.cardtype = cardtype; + this.cardphyid = cardphyid; + this.status = status; + this.transStatus = transStatus; + this.expiredate = expiredate; + this.signed = signed; + this.userid = userid; + this.lastsaved = lastsaved; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCardno() { + return cardno; + } + + public void setCardno(String cardno) { + this.cardno = cardno; + } + + public String getCardtype() { + return cardtype; + } + + public void setCardtype(String cardtype) { + this.cardtype = cardtype; + } + + public String getCardphyid() { + return cardphyid; + } + + public void setCardphyid(String cardphyid) { + this.cardphyid = cardphyid; + } + + 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 getExpiredate() { + return expiredate; + } + + public void setExpiredate(String expiredate) { + this.expiredate = expiredate; + } + + public Boolean getSigned() { + return signed; + } + + public void setSigned(Boolean signed) { + this.signed = signed; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getLastsaved() { + return lastsaved; + } + + public void setLastsaved(String lastsaved) { + this.lastsaved = lastsaved; + } + + public String getTenantid() { + return tenantid; + } + + public void setTenantid(String tenantid) { + this.tenantid = tenantid; + } +} diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java index 3434b879..d6691460 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java @@ -28,7 +28,7 @@ public class TSyspara { private String paraunit; @Column(name = "VALUETYPE", length = 10) - private String valueType = SysparaUtil.SYSPARA_VALUETYPE_STRING; + private String valueType = SysparaUtil.VALUETYPE_STRING; @Column(name = "EDITFLAG", precision = 1) @NotNull @@ -156,17 +156,17 @@ public class TSyspara { */ public boolean checkValueInvalid() { if (!StringUtil.isEmpty(this.paraval)) { - if (SysparaUtil.SYSPARA_VALUETYPE_AMOUNT.equals(this.valueType) && !NumberUtil.isAmount(this.paraval)) { + if (SysparaUtil.VALUETYPE_AMOUNT.equals(this.valueType) && !NumberUtil.isAmount(this.paraval)) { return true; //参数值非金额类型 - } else if (SysparaUtil.SYSPARA_VALUETYPE_DECIMAL.equals(this.valueType) && !NumberUtil.isDecimal(this.paraval)) { + } else if (SysparaUtil.VALUETYPE_DECIMAL.equals(this.valueType) && !NumberUtil.isDecimal(this.paraval)) { return true; //参数值非数值类型 - } else if (SysparaUtil.SYSPARA_VALUETYPE_NUMBER.equals(this.valueType) && !NumberUtil.isNumber(this.paraval)) { + } else if (SysparaUtil.VALUETYPE_NUMBER.equals(this.valueType) && !NumberUtil.isNumber(this.paraval)) { return true; //参数值非整数 - } else if (SysparaUtil.SYSPARA_VALUETYPE_SWITCH.equals(this.valueType) && !"1".equals(this.paraval) && !"0".equals(this.paraval)) { + } else if (SysparaUtil.VALUETYPE_SWITCH.equals(this.valueType) && !"1".equals(this.paraval) && !"0".equals(this.paraval)) { return true; //参数值非开关量 0/1 - } else if (SysparaUtil.SYSPARA_VALUETYPE_DATE.equals(this.valueType) && !DateUtil.checkDatetimeValid(this.paraval, "yyyyMMdd")) { + } else if (SysparaUtil.VALUETYPE_DATE.equals(this.valueType) && !DateUtil.checkDatetimeValid(this.paraval, "yyyyMMdd")) { return true; //参数值非日期格式 - } else if (SysparaUtil.SYSPARA_VALUETYPE_DATETIME.equals(this.valueType) && !DateUtil.checkDatetimeValid(this.paraval, "yyyyMMddHHmmss")) { + } else if (SysparaUtil.VALUETYPE_DATETIME.equals(this.valueType) && !DateUtil.checkDatetimeValid(this.paraval, "yyyyMMddHHmmss")) { return true; //参数值非日期时间格式 } } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java index ddc4d15b..ba7ac786 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java @@ -110,6 +110,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { value = value.replaceAll("'", "& #39;"); value = value.replaceAll("eval\\((.*)\\)", ""); value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\""); +// value = value.replaceAll("'", "‘").replaceAll(";", ";").replaceAll("=", "").replaceAll("%", "").replaceAll("\\+", ""); value = value.replaceAll("script", ""); value = cleanSqlKeyWords(value); return value; diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/SysparaUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/SysparaUtil.java index 652a35ca..a67d6ff9 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/SysparaUtil.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/SysparaUtil.java @@ -1,23 +1,26 @@ package com.supwisdom.dlpay.framework.util; public class SysparaUtil { - public static final String SYSPARA_VALUETYPE_AMOUNT = "amount"; //金额类型 Double - public static final String SYSPARA_VALUETYPE_SWITCH = "switch"; //开关类型 Boolean 0/1 - public static final String SYSPARA_VALUETYPE_DATE = "date"; //日期类型 yyyyMMdd - public static final String SYSPARA_VALUETYPE_DATETIME = "datetime"; //日期+时间 yyyyMMddHHmmss - public static final String SYSPARA_VALUETYPE_DECIMAL = "decimal"; //数值 - public static final String SYSPARA_VALUETYPE_NUMBER = "number "; //整数,包含正负 - public static final String SYSPARA_VALUETYPE_STRING = "string"; //字符串 + public static final String VALUETYPE_AMOUNT = "amount"; //金额类型 Double + public static final String VALUETYPE_SWITCH = "switch"; //开关类型 Boolean 0/1 + public static final String VALUETYPE_DATE = "date"; //日期类型 yyyyMMdd + public static final String VALUETYPE_DATETIME = "datetime"; //日期+时间 yyyyMMddHHmmss + public static final String VALUETYPE_DECIMAL = "decimal"; //数值 + public static final String VALUETYPE_NUMBER = "number "; //整数,包含正负 + public static final String VALUETYPE_STRING = "string"; //字符串 - public static final int SYSPARAID_NO1 = 1; //系统默认最大余额限制的ID - public static final int SYSPARAID_NO2 = 2; //paraid=2 - public static final int SYSPARAID_NO3 = 3; //手机端用户过期时间(秒) + public static final int BALANCE_LIMIT = 1; //系统默认最大余额限制的ID + public static final int MOBILE_LOGIN_EXPIRE_IN_SECONDS = 4; //手机端用户过期时间(秒) + public static final int NOPASS_LIMIT = 2; //默认免密额度 + public static final int DAY_PAY_LIMIT = 3; //默认日累计额度 - public static final int SYSPARAID_NO2019 = 2019; //与卡管系统对接的应用ID - public static final int SYSPARAID_NO2020 = 2020; //与卡管系统对接的应用appkey - public static final int SYSPARAID_NO2021 = 2021; //与卡管系统对接的业务参数deskey + public static final int DLCARDMANAGER_APPID = 2019; //与卡管系统对接的应用ID + public static final int DLCARDMANAGER_SECRET = 2020; //与卡管系统对接的应用appkey + public static final int DLCARDMANAGER_DESKEY = 2021; //与卡管系统对接的业务参数deskey - public static final double SYSPARA_NO1_DEFAULT = 10000.0; // 系统默认最大余额限制 + public static final double DEFAULT_BALANCE_LIMIT = 10000.0; // 系统默认最大余额限制 + public static final double DEFAULT_NOPASS_LIMIT = 100.0; // 默认免密额度 + public static final double DEFAULT_DAY_PAY_LIMIT = 200.0; // 默认日累计额度 } 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 7fc2400a..0cc0b4d2 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 @@ -114,7 +114,7 @@ public class UserDataServiceImpl implements UserDataService { account.setAvailbal(0.0); account.setFrozebal(0.0); account.setLowfreeFlag(false); - account.setMaxbal(systemUtilService.getSysparaValueAsDouble(SysparaUtil.SYSPARAID_NO1, SysparaUtil.SYSPARA_NO1_DEFAULT)); + account.setMaxbal(systemUtilService.getSysparaValueAsDouble(SysparaUtil.BALANCE_LIMIT, SysparaUtil.DEFAULT_BALANCE_LIMIT)); account.setLastdayDpsamt(0.0); account.setLastdayTransamt(0.0); account.setOpendate(systemDateTime.getHostdate()); diff --git a/payapi/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java index 6f56ce7a..4bd34fe7 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java @@ -40,4 +40,10 @@ public class ConstantUtil { public static final String PAGE_USERXIEYI = "xieyi";//用户协议页面 public static final String PAGE_BANKXIEYI = "bankxieyi";//银行协议页面 + + /** + * 卡库同步的Cardtype + * */ + public static final String CARDTYPE_CITIZENCARD = "citizencard"; + public static final String CARDTYPE_BANKCARD = "bankcard"; } 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 564689ef..d3735256 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 @@ -66,6 +66,18 @@ class DaliDatasyncDetail { var idno: String = "" var mobile: String? = null var email: String? = null + + 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("卡片明细数据关键字段为空") + return true + } +} + +class DaliDatasyncErrorDetail{ + var cardno:String="" + var errcode:String="" + var errmsg:String="" } diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/dali_datasync_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/dali_datasync_api_controller.kt index dade3f20..5b5c19cb 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/dali_datasync_api_controller.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/dali_datasync_api_controller.kt @@ -1,7 +1,10 @@ package com.supwisdom.dlpay.api.controller +import com.google.gson.Gson +import com.supwisdom.dlpay.api.bean.DaliDatasyncErrorDetail import com.supwisdom.dlpay.api.bean.DaliDatasyncParam import com.supwisdom.dlpay.api.exception.RequestParamCheckException +import com.supwisdom.dlpay.api.service.DaliDatasyncService import com.supwisdom.dlpay.framework.ResponseBodyBuilder import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.util.StringUtil @@ -14,6 +17,8 @@ import org.springframework.web.bind.annotation.* class DaliDatasyncApiController { @Autowired lateinit var systemUtilService: SystemUtilService + @Autowired + lateinit var daliDatasyncService: DaliDatasyncService /** * ============================================================================ @@ -25,9 +30,9 @@ class DaliDatasyncApiController { fun daliDatasync(@RequestBody param: DaliDatasyncParam): ResponseEntity { try { param.checkParam() - val appid = systemUtilService.getSysparaValue(SysparaUtil.SYSPARAID_NO2019) - val appkey = systemUtilService.getSysparaValue(SysparaUtil.SYSPARAID_NO2020) - val deskey = systemUtilService.getSysparaValue(SysparaUtil.SYSPARAID_NO2021) + val appid = systemUtilService.getSysparaValue(SysparaUtil.DLCARDMANAGER_APPID) + val appkey = systemUtilService.getSysparaValue(SysparaUtil.DLCARDMANAGER_SECRET) + val deskey = systemUtilService.getSysparaValue(SysparaUtil.DLCARDMANAGER_DESKEY) if (StringUtil.isEmpty(appid) || StringUtil.isEmpty(appkey) || StringUtil.isEmpty(deskey)) { return ResponseEntity.ok(ResponseBodyBuilder.create() .fail(1000, "系统参数未配置")) @@ -45,14 +50,34 @@ class DaliDatasyncApiController { .fail(2002, "请求参数错误[数据条数不匹配]")) } - datalist.forEach { - TODO("更新数据逻辑") + var errlist = ArrayList(0) + + datalist.forEach {detail-> + try { + detail.checkParam() + daliDatasyncService.doUpdateUserInfos(detail) + } catch (e1: RequestParamCheckException) { + errlist.add(DaliDatasyncErrorDetail().apply { + cardno = detail.cardno + errcode = "2001" + errmsg = e1.message?:"明细数据关键字段为空" + }) + }catch (e2: Exception){ + errlist.add(DaliDatasyncErrorDetail().apply { + cardno = detail.cardno + errcode = "3000" + errmsg = e2.message?:"明细处理错误" + }) + } } - return ResponseEntity.ok(mapOf("retcode" to "0000", "retmsg" to "SUCCESS")) + return when(StringUtil.isEmpty(errlist)){ + true -> ResponseEntity.ok(mapOf("retcode" to "0000", "retmsg" to "SUCCESS", "resultcode" to "0000", "resultmsg" to "")) + false -> ResponseEntity.ok(mapOf("retcode" to "0000", "retmsg" to "请求成功接收", "resultcode" to "0000", "resultmsg" to "明细数据处理有错", "data" to Gson().toJson(errlist))) + } } catch (ex: RequestParamCheckException) { return ResponseEntity.ok(ResponseBodyBuilder.create() - .fail(ex.errCode, ex.message ?: "请求参数错误")) + .fail(2001, ex.message ?: "请求参数错误")) } catch (e: Exception) { e.printStackTrace() return ResponseEntity.ok(ResponseBodyBuilder.create() @@ -60,4 +85,4 @@ class DaliDatasyncApiController { } } -} \ No newline at end of file +} diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/dali_datasync_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/dali_datasync_service.kt new file mode 100644 index 00000000..b85342fa --- /dev/null +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/dali_datasync_service.kt @@ -0,0 +1,12 @@ +package com.supwisdom.dlpay.api.service + +import com.supwisdom.dlpay.api.bean.DaliDatasyncDetail +import org.springframework.transaction.annotation.Propagation +import org.springframework.transaction.annotation.Transactional + +interface DaliDatasyncService{ + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class)) + fun doUpdateUserInfos(bean: DaliDatasyncDetail): Boolean + +} \ No newline at end of file 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 new file mode 100644 index 00000000..be69c422 --- /dev/null +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/dali_datasync_service_impl.kt @@ -0,0 +1,134 @@ +package com.supwisdom.dlpay.api.service.impl + +import com.supwisdom.dlpay.api.bean.DaliDatasyncDetail +import com.supwisdom.dlpay.api.dao.AccountDao +import com.supwisdom.dlpay.api.dao.CardDao +import com.supwisdom.dlpay.api.dao.PersonDao +import com.supwisdom.dlpay.api.domain.TAccount +import com.supwisdom.dlpay.api.domain.TCard +import com.supwisdom.dlpay.api.domain.TPerson +import com.supwisdom.dlpay.api.service.DaliDatasyncService +import com.supwisdom.dlpay.exception.TransactionProcessException +import com.supwisdom.dlpay.framework.service.SystemUtilService +import com.supwisdom.dlpay.framework.tenant.TenantContext +import com.supwisdom.dlpay.framework.util.* +import com.supwisdom.dlpay.util.ConstantUtil +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service + +@Service +class DaliDatasyncServiceImpl : DaliDatasyncService { + @Autowired + lateinit var accountDao: AccountDao + @Autowired + lateinit var personDao: PersonDao + @Autowired + lateinit var cardDao: CardDao + @Autowired + lateinit var systemUtilService: SystemUtilService + + override fun doUpdateUserInfos(bean: DaliDatasyncDetail): Boolean { + val maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.BALANCE_LIMIT, SysparaUtil.DEFAULT_BALANCE_LIMIT) + val lowfreeLimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.NOPASS_LIMIT, SysparaUtil.DEFAULT_NOPASS_LIMIT) + val daylimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.DAY_PAY_LIMIT, SysparaUtil.DEFAULT_DAY_PAY_LIMIT) + + val systime = systemUtilService.sysdatetime + var person = personDao.findByIdentity(bean.idtype.trim(), bean.idno.trim()) + if (null != person) { + if (person.name != bean.username) { + person.name = bean.username + person.lastsaved = systime.hostdatetime + person = personDao.save(person) + accountDao.updateAccnameByUserid(person.name, person.userid) + } + } else { + person = TPerson().apply { + name = bean.username + status = TradeDict.STATUS_NORMAL + idtype = bean.idtype.trim() + idno = bean.idno.trim() + email = bean.email + mobile = bean.mobile + lastsaved = systime.hostdatetime + } + person.tenantid = TenantContext.getTenantSchema() + person = personDao.save(person) + + var account = TAccount().apply { + accname = person.name + subjno = Subject.SUBJNO_PERSONAL_DEPOSIT + userid = person.userid + transStatus = person.status + balance = 0.00 + availbal = 0.00 + frozebal = 0.00 + lowfreeFlag = false + this.lowfreeLimit = lowfreeLimit + this.daylimit = daylimit + this.maxbal = maxbal + lasttranstime = systime.sysdate + lastdayTransamt = 0.00 + lastdayDpsamt = 0.00 + opendate = systime.hostdate + } + account.generateTac() + account.tenantid = TenantContext.getTenantSchema() + accountDao.save(account) + } + + var cityCard = cardDao.findCardByCardnoAndCardtype(bean.cardno.trim(), ConstantUtil.CARDTYPE_CITIZENCARD) + if (null != cityCard) { + //仅修改有效期和状态 + if (cityCard.expiredate != bean.expiredate.trim()) { + cityCard.expiredate = bean.expiredate.trim() + } + //fixme: bean.cardstatus 判断修改状态 + + cardDao.save(cityCard) + } else { + cityCard = TCard().apply { + cardno = bean.cardno.trim() + cardtype = ConstantUtil.CARDTYPE_CITIZENCARD + cardphyid = bean.cardphyid.trim() + status = TradeDict.STATUS_NORMAL // fixme: bean.cardstatus 判断 + transStatus = TradeDict.STATUS_NORMAL + expiredate = bean.expiredate.trim() + signed = false + userid = person.userid + lastsaved = systime.hostdatetime + } + cityCard.tenantid = TenantContext.getTenantSchema() + cardDao.save(cityCard) + } + + if (!StringUtil.isEmpty(bean.bankcardno)) { + var bankCard = cardDao.findCardByCardnoAndCardtype(bean.bankcardno!!.trim(), ConstantUtil.CARDTYPE_BANKCARD) + if (null == bankCard) { + bankCard = TCard().apply { + cardno = bean.bankcardno!!.trim() + cardtype = ConstantUtil.CARDTYPE_BANKCARD + cardphyid = "" + status = TradeDict.STATUS_NORMAL // fixme: bean.cardstatus 判断 + transStatus = TradeDict.STATUS_NORMAL + expiredate = "21991231" + signed = false + userid = person.userid + lastsaved = systime.hostdatetime + } + cardDao.closedBankcardStatusByUserid(bankCard.userid) //注销其他银行卡 + bankCard.tenantid = TenantContext.getTenantSchema() + cardDao.save(bankCard) //绑定新的银行卡 + + } else { + if (bankCard.userid != person.userid) { + throw TransactionProcessException(3000, "银行卡已被人绑定") + } + } + } + + return true + } + + + +} \ No newline at end of file diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt index 6a175651..80ad2339 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt @@ -7,7 +7,6 @@ import com.supwisdom.dlpay.api.domain.* import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.api.service.UserService import com.supwisdom.dlpay.exception.TransactionProcessException -import com.supwisdom.dlpay.framework.domain.TOperator import com.supwisdom.dlpay.framework.util.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.domain.PageRequest @@ -68,7 +67,7 @@ class UserServiceImpl : UserService { lowfreeFlag = false lowfreeLimit = lowfreeLimit daylimit = daylimit - maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.SYSPARAID_NO1, SysparaUtil.SYSPARA_NO1_DEFAULT) + maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.BALANCE_LIMIT, SysparaUtil.DEFAULT_BALANCE_LIMIT) lasttranstime = systemdatetime.sysdate lastdayTransamt = 0.0 lastdayDpsamt = 0.0 diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt index 19d96eab..bd43e6f8 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt @@ -3,11 +3,9 @@ package com.supwisdom.dlpay.mobile import com.fasterxml.jackson.databind.ObjectMapper import com.supwisdom.dlpay.api.bean.JsonResult import com.supwisdom.dlpay.api.service.UserService -import com.supwisdom.dlpay.exception.ValidateCodeException import com.supwisdom.dlpay.framework.core.JwtConfig import com.supwisdom.dlpay.framework.core.JwtTokenUtil import com.supwisdom.dlpay.framework.domain.JwtRedis -import com.supwisdom.dlpay.framework.redisrepo.ApiClientRepository import com.supwisdom.dlpay.framework.redisrepo.ApiJwtRepository import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.util.* @@ -48,7 +46,7 @@ class AuthLoginSuccessHandler : SimpleUrlAuthenticationSuccessHandler() { logger.error(request.getParameter("platform")) val temp = authentication.principal as TBMobileUser val user = mobileUserDao.findByPhone(temp.phone) - val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.SYSPARAID_NO3,60*60*24*3) + val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.MOBILE_LOGIN_EXPIRE_IN_SECONDS,60*60*24*3) jwtConfig.expiration = exp.toLong() if (user != null) { //TODO 从数据取jwtConfig.expiration 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 cf9247ce..dc9457e5 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt @@ -154,7 +154,7 @@ class ApiInit { } val encoder = BCryptPasswordEncoder() user!!.loginpwd = encoder.encode(pwd) - val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.SYSPARAID_NO3, 60 * 60 * 24 * 3) + val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.MOBILE_LOGIN_EXPIRE_IN_SECONDS, 60 * 60 * 24 * 3) jwtConfig.expiration = exp.toLong() val authorities: Collection = AuthorityUtils.createAuthorityList("ROLE_USER") user.auths = authorities -- 2.17.1