有数据
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index fe41dd4..26c35db 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -5,8 +5,8 @@
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
# Postgresql settings
spring.datasource.platform=postgresql
-spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/watermanager
-spring.datasource.username=watermanager
+spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/door
+spring.datasource.username=payapi
spring.datasource.password=123456
database.dbtype=postgresql
# Redis settings
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt b/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt
deleted file mode 100644
index 3b5bd5e..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt
+++ /dev/null
@@ -1,245 +0,0 @@
-package com.supwisdom.dlpay.api
-
-import com.google.gson.Gson
-import com.sun.jersey.api.client.Client
-import com.sun.jersey.api.client.ClientResponse
-import com.supwisdom.dlpay.api.bean.BaseResp
-import com.supwisdom.dlpay.api.bean.SupStatusRevResp
-import com.supwisdom.dlpay.api.bean.SupYktResp
-import com.supwisdom.dlpay.api.bean.WechatReqResp
-import com.supwisdom.dlpay.api.domain.TPersondtl
-import com.supwisdom.dlpay.api.domain.TShopdtl
-import com.supwisdom.dlpay.framework.util.*
-import com.supwisdom.dlpay.util.Code
-
-class CallBackResp {
- var retcode: String = "99"
- var retmsg: String? = null
- val data = mutableMapOf<String, String>()
- fun add(key: String, value: String) {
- this.data.plus(mapOf(key to value))
- }
-}
-
-class CallService {
-
- companion object {
- fun callYktPay(config: Map<String, String?>, paydtl: TPersondtl, time: String, stuempno: String, yktshopid: String, devphyid: String?): CallBackResp {
- val code = CallBackResp()
- val appid = config["appid"]
- if (appid.isNullOrEmpty()) {
- code.retcode = "1"
- code.retmsg = "一卡通支付方式未启用或未配置"
- return code
- }
-
- val appkey = config["appkey"]
- val orderurl = config["orderurl"]
-
- val params = hashMapOf<String, String?>()
- params.put("partner_id", appid)
- params.put("stuempno", stuempno)
- params.put("tradeno", paydtl.refno)
- params.put("tradename", paydtl.payinfo)
- params.put("amount", MoneyUtil.YuanToFen(paydtl.amount).toString())
- params.put("shopid", yktshopid)
- params.put("devphyid", devphyid)
- params.put("calcmanagefee", "T") //是否计算费率
- params.put("timestamp", time)
- params.put("sign_method", "HMAC");
- params.put("limitflag", "off") //是否判断消费限额,on-判断;off-不判断。默认on(判断限额)。为空或不为off都是on;
- var signstr = StringUtil.createLinkString(HmacUtil.paraFilter(params))
- val sign = HmacUtil.HMACSHA1(signstr, appkey)
- signstr = "$signstr&sign=$sign&sourcetype=food"
- val c = Client.create()
- c.setConnectTimeout(20000)
- val r = c.resource(orderurl)
- val respClient = r.post(ClientResponse::class.java, signstr)
- if (200 == respClient.status) {
- val ret = respClient.getEntity(String::class.java)
- if (ret != null) {
- try {
- val gson = Gson()
- val result = gson.fromJson(ret, SupYktResp::class.java)
- if (result == null) {
- code.retcode = "1"
- code.retmsg = "返回内容为空"
- return code
- }
- if ("0" != result.retcode) {
- if ("30" == result.retcode) {
- if (result.other != null) {
- try {
- val supStatusRevResp = gson.fromJson(result.other,
- SupStatusRevResp::class.java)
- if (supStatusRevResp != null) {
- //同流水号,同一笔已经支付完成的,不重复支付。
- if (3 == supStatusRevResp.status
- && supStatusRevResp.revflag != null
- && !supStatusRevResp.revflag) {
- code.retcode = "0"
- code.retmsg = "成功"
- return code
- }
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- }
- code.retcode = "1"
- code.retmsg = "交易失败:" + result.retmsg
- return code
- }
- code.retcode = "0"
- code.retmsg = "成功"
- return code
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- }
- code.retcode = "1"
- code.retmsg = "请求失败"
- return code
- }
-
- fun callWechatPay(config: Map<String, String>, paydtl: TPersondtl, time: String, wechattype: String,
- realip: String?, qrcode: String?, openid: String?): BaseResp {
- val code = BaseResp()
- val appid = config["appid"]
- if (appid.isNullOrEmpty()) {
- code.retcode = "1"
- code.retmsg = "微信支付方式未启用或未配置"
- return code
- }
- val appkey = config["appkey"]
- val orderurl = config["orderurl"]
- val mchid = config["mchid"]
- val wechatReqResp = WechatReqResp()
- wechatReqResp.openid = openid
- wechatReqResp.appid = appid
- wechatReqResp.total_fee = MoneyUtil.YuanToFen(paydtl.amount)
- wechatReqResp.body = paydtl.payinfo
- wechatReqResp.key = appkey
- wechatReqResp.mch_id = mchid
- wechatReqResp.notify_url = config["notifyurl"] + "/notify/wechat"
- wechatReqResp.out_trade_no = paydtl.refno
- wechatReqResp.spbill_create_ip = realip
- val c = Client.create()
- c.setConnectTimeout(20000)
- return when (wechattype) {
- "qrcode" -> {
- code
- }
- "app" -> {
- wechatReqResp.trade_type = "APP"
- code
- }
- "mp" -> {
- wechatReqResp.trade_type = "JSAPI"
- wechatReqResp.generaSign()
- val xml = wechatReqResp.generaXML()
- val r = c.resource(orderurl)
- val respClient = r.post(ClientResponse::class.java, xml)
- if (200 == respClient.status) {
- try {
- val ret = respClient.getEntity(String::class.java)
- if (ret != null) {
- val eleMap = XmlUtils.parseXml(ret)
- val retcode = eleMap["return_code"]
- val result_code = eleMap["result_code"]
- val prepay_id = eleMap["prepay_id"]
- if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
- && !result_code.isNullOrEmpty() && "SUCCESS" == result_code
- && !prepay_id.isNullOrEmpty()) {
- wechatReqResp.retcode = 0
- wechatReqResp.retmsg = "初始化成功"
- wechatReqResp.prepay_id = prepay_id
- //TODO prepay_id 是否保存
- wechatReqResp.timestamp = DateUtil.getNowSecond().toString()
- wechatReqResp.nonce_str = RandomUtils.getRandomString(30)
- wechatReqResp.generaJSAPISign()
- val params = wechatReqResp.generaJSAPIParamters()
- code.setCode(Code.SUCCESS)
- code.data = params
- } else {
- code.retcode = "1"
- code.retmsg = eleMap["return_msg"]
- }
- } else {
- code.retcode = "1"
- code.retmsg = "微信支付请求失败"
- }
- } catch (e: Exception) {
- e.printStackTrace()
- code.retcode = "1"
- code.retmsg = "微信支付请求异常"
- }
-
- } else {
- code.retcode = "1"
- code.retmsg = "微信支付请求返回失败"
- }
- code
- }
- "h5" -> {
- wechatReqResp.trade_type = "MWEB"
- wechatReqResp.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \"" + config["notifyurl"] + "\",\"wap_name\": \"${paydtl.payinfo}\"}}"
- val xml = wechatReqResp.generaXML()
- val r = c.resource(orderurl)
- val respClient = r.post(ClientResponse::class.java, xml)
- if (200 == respClient.status) {
- try {
- val ret = respClient.getEntity(String::class.java)
- if (ret != null) {
- val eleMap = XmlUtils.parseXml(ret)
- val retcode = eleMap["return_code"]
- val result_code = eleMap["result_code"]
- val prepay_id = eleMap["prepay_id"]
- val mweb_url = eleMap["mweb_url"]
- if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
- && !result_code.isNullOrEmpty() && "SUCCESS" == result_code
- && !prepay_id.isNullOrEmpty()) {
- wechatReqResp.retcode = 0
- wechatReqResp.retmsg = "初始化成功"
- wechatReqResp.prepay_id = prepay_id
- wechatReqResp.mweb_url = mweb_url
- code.setCode(Code.SUCCESS)
- code.data = mweb_url
- } else {
- code.retcode = "1"
- code.retmsg = eleMap["return_msg"]
- }
- } else {
- code.retcode = "1"
- code.retmsg = "微信支付请求失败"
- }
- } catch (e: Exception) {
- e.printStackTrace()
- code.retcode = "1"
- code.retmsg = "微信支付请求异常"
- }
-
- } else {
- code.retcode = "1"
- code.retmsg = "微信支付请求返回失败"
- }
- code
- }
- else -> {
- code.retcode = "1"
- code.retmsg = "未标识的类型:wechattype=$wechattype"
- code
- }
- }
- }
-
- fun CallCitizenCardPay(config: Map<String, String?>, paydtl: TShopdtl): CallBackResp {
- val resp = CallBackResp()
- resp.retcode = "0"
- // TODO: 代扣逻辑
- return resp
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
deleted file mode 100644
index 4a8241d..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ /dev/null
@@ -1,516 +0,0 @@
-package com.supwisdom.dlpay.api.controller
-
-import com.supwisdom.dlpay.api.AccountProxy
-import com.supwisdom.dlpay.api.CallService
-import com.supwisdom.dlpay.api.TransactionBuilder
-import com.supwisdom.dlpay.api.bean.*
-import com.supwisdom.dlpay.api.dao.TransactionMainDao
-import com.supwisdom.dlpay.api.domain.TAccount
-import com.supwisdom.dlpay.api.service.AccountUtilServcie
-import com.supwisdom.dlpay.api.service.ConsumePayService
-import com.supwisdom.dlpay.api.service.TransactionService
-import com.supwisdom.dlpay.api.service.UserService
-import com.supwisdom.dlpay.exception.RequestParamCheckException
-import com.supwisdom.dlpay.exception.TransactionCheckException
-import com.supwisdom.dlpay.exception.TransactionException
-import com.supwisdom.dlpay.framework.ResponseBodyBuilder
-import com.supwisdom.dlpay.framework.domain.TShopacc
-import com.supwisdom.dlpay.framework.service.CommonService
-import com.supwisdom.dlpay.framework.service.SystemUtilService
-import com.supwisdom.dlpay.framework.util.*
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.http.ResponseEntity
-import org.springframework.security.core.Authentication
-import org.springframework.web.bind.annotation.PostMapping
-import org.springframework.web.bind.annotation.RequestBody
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RestController
-import javax.servlet.http.HttpServletRequest
-import javax.servlet.http.HttpServletResponse
-
-@RestController
-@RequestMapping("/api/consume")
-class ConsumeController {
- @Autowired
- lateinit var accountUtilServcie: AccountUtilServcie
- @Autowired
- lateinit var userService: UserService
- @Autowired
- lateinit var systemUtilService: SystemUtilService
- @Autowired
- lateinit var consumePayService: ConsumePayService
- @Autowired
- lateinit var commonService: CommonService
-
- @Autowired
- lateinit var transactionMainDao: TransactionMainDao
-
- @Autowired
- lateinit var transactionService: TransactionService
-
- /**
- * 流水结果查询统一接口
- * */
- fun queryDtlResult(@RequestBody param: QueryDtlResultParam,
- request: HttpServletRequest, response: HttpServletResponse): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getAppidSecretByRequest(request))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-
- val dtl = transactionMainDao.findByRefnoForUpdate(param.refno)
- ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "交易参考号错误<${param.refno}>"))
-
- val person = if (dtl.person) {
- userService.findPersonByUserid(dtl.personDtl.userid)
- } else {
- null
- }
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("refno", dtl.refno)
- .data("amount", dtl.personDtl.amount)
- .data("paytype", dtl.personDtl.sourceType)
- .data("payinfo", dtl.personDtl.payinfo)
- .also {
- if (null != person) {
- it.data("name", person.name)
- }
- }
- .success("查询成功"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "查询错误"))
- }
- }
-
- private fun consumeMealer(@Suppress("UNUSED_PARAMETER") param: CitizenCardPayinitParam,
- builder: TransactionBuilder,
- feetype: ConsumeFeetype, person: TAccount, shop: TShopacc) {
- val feetypeConfig = accountUtilServcie.readFeetype(TradeDict.FEETYPE_CONSUME_MEALER,
- TradeDict.PAYTYPE_BALANCE)
- val amount = feetype.amount / 100.0
- when (feetypeConfig.crsubjno) {
- shop.subjno -> {
- builder.addDebitCreditRecord(AccountProxy(person), AccountProxy(shop),
- amount, feetypeConfig.summary)
- .shop().also {
- it.addAmount(amount)
- }
- }
- else -> {
- val subject = accountUtilServcie.readSubject(feetypeConfig.crsubjno)
- builder.addDebitCreditRecord(AccountProxy(person), AccountProxy(subject),
- amount, feetypeConfig.summary)
- }
- }
-
- }
-
- private fun consumeDiscount(@Suppress("UNUSED_PARAMETER") param: CitizenCardPayinitParam,
- builder: TransactionBuilder,
- feetype: ConsumeFeetype, person: TAccount, shop: TShopacc) {
- val feetypeConfig = accountUtilServcie.readFeetype(TradeDict.FEETYPE_CONSUME_MEALER,
- TradeDict.PAYTYPE_BALANCE)
- val amount = feetype.amount / 100.0
- when (feetypeConfig.drsubjno) {
- shop.subjno -> {
- builder.addDebitCreditRecord(AccountProxy(shop), AccountProxy(person),
- amount, feetypeConfig.summary)
- }
- else -> {
- val subject = accountUtilServcie.readSubject(feetypeConfig.drsubjno)
- builder.addDebitCreditRecord(AccountProxy(subject), AccountProxy(shop),
- amount, feetypeConfig.summary)
- }
- }
- }
-
- /**
- * ============================================================================
- * 账户【余额支付】
- * ============================================================================
- * */
- @PostMapping("/balance/pay")
- fun balancePay(@RequestBody param: CitizenCardPayinitParam, authentication: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-
- val person = userService.findPersonByIdentityCheckStatus(param.cardNo)
- if (consumePayService.checkShopPaytype(param.shopaccno, TradeDict.PAYTYPE_BALANCE)) {
- val account = accountUtilServcie.readAccount(person.userid)
- val shopacc = accountUtilServcie.readShopbyShopaccno(param.shopaccno)
-
- val builder = TransactionBuilder().apply {
- setTransInfo(param.transdate, param.transtime,
- TradeCode.TRANSCODE_BALANCE_PAY,
- TradeDict.PAYTYPE_BALANCE)
- setOutTransInfo(shopacc.shopaccno, param.billno)
- operator(param.shopaccno, TradeDict.OPERTYPE_SHOP)
- payinfo = "账户余额消费"
- description = "账户余额消费"
- }.person(account).apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT)
- opposite = AccountProxy(shopacc)
- }.and().shop(shopacc).apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
- opposite = AccountProxy(account)
- }.and()
-
- param.feelist?.forEach {
- when (it.feetype) {
- TradeDict.FEETYPE_CONSUME_MEALER -> {
- consumeMealer(param, builder, it, account, shopacc)
- }
- TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
- consumeDiscount(param, builder, it, account, shopacc)
- }
- else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
- "支付费率清单不支持feetype<${it.feetype}>")
- }
- }
-
- val dtl = builder.init(transactionService)
- transactionService.success(dtl.refno)
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("refno", dtl.refno)
- .data("amount", dtl.personDtl.amount)
- .success("交易成功"))
- }
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<账户余额>"))
-
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
-
- /**
- * ============================================================================
- * 市民卡【交易初始化】
- * ============================================================================
- * */
- @PostMapping("/citizencard/payinit")
- fun citizencardPayinit(@RequestBody param: CitizenCardPayinitParam, authenticateAction: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authenticateAction.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-
- val person = userService.findPersonByIdentityCheckStatus(param.cardNo)
- if (consumePayService.checkShopPaytype(param.shopaccno, TradeDict.PAYTYPE_CITIZEN_CARD)) {
-
- val account = accountUtilServcie.readAccount(person.userid)
- val shopacc = accountUtilServcie.readShopbyShopaccno(param.shopaccno)
- val subject = accountUtilServcie.readSubject(Subject.SUBJNO_PAY_CITIZEN_CARD)
- val transaction = TransactionBuilder().apply {
- setTransInfo(param.transdate, param.transtime,
- TradeCode.TRANSCODE_CITIZENCARD_PAY,
- TradeDict.PAYTYPE_CITIZEN_CARD)
- setOutTransInfo(shopacc.shopaccno, param.billno)
- operator(param.shopaccno, TradeDict.OPERTYPE_SHOP)
- payinfo = "市民卡代扣消费"
- description = "市民卡代扣消费"
- }.person(account).apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT)
- opposite = AccountProxy(shopacc)
- }.and().shop(shopacc).apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
- opposite = AccountProxy(account)
- }.and().addDebitCreditRecord(AccountProxy(subject), AccountProxy(account),
- param.amount / 100.0, "市民卡代扣消费")
- .addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc),
- param.amount / 100.0, "市民卡代扣消费")
- .also { builder ->
- param.feelist?.forEach {
- //fixme: 科目 -> 商户 与个人无关
- val feeconfig = accountUtilServcie.readFeetype(it.feetype,
- TradeDict.PAYTYPE_CITIZEN_CARD)
- val subj = accountUtilServcie.readSubject(feeconfig.drsubjno)
- builder.addDebitCreditRecord(AccountProxy(subj), AccountProxy(shopacc),
- it.amount / 100.0, feeconfig.summary)
-
- }
- }.init(transactionService)
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("refno", transaction.refno)
- .data("amount", transaction.shopDtl.amount)
- .success("交易初始化成功"))
- }
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<市民卡代扣>"))
-
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
- /**
- * ============================================================================
- * 市民卡【交易确认】
- * ============================================================================
- * */
- @PostMapping("/citizencard/payfinish")
- fun citizencardPayinit(@RequestBody param: CitizenCardPayfinishParam, authentication: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-
- val code = transactionService.wip(param.refno).let {
- CallService.CallCitizenCardPay(
- consumePayService.getPaytypeConfig(TradeDict.PAYTYPE_CITIZEN_CARD, it.shopDtl.shopaccno),
- it.shopDtl)
- }
- if (code.retcode == "0") {
- transactionService.success(param.refno).let {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("refno", it.refno)
- .data("billno", it.outTradeNo)
- .success("交易确认成功"))
- }
- } else {
- transactionService.fail(param.refno).let {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败-${code.retmsg}"))
- }
- }
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
-
- /**
- * ============================================================================
- * 一卡通支付【交易初始化】
- * ============================================================================
- * */
- @PostMapping("/ykt/payinit")
- fun yktPayInit(@RequestBody param: YktCardPayinitParam, authentication: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-//
-// val person = param.uid?.let { userService.findByThirdUniqueIdenty(it) } //没注册,可能匿名?
-// if (consumePayService.checkShopPaytype(param.shopaccno, TradeDict.PAYTYPE_YKT_CARD, person == null)) {
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .chooseTradetype(Tradetype.CONSUME) //消费
-// .also {
-// if (null != person) it.setOwner(person)
-// }
-// .setTransinfo(TradeCode.TRANSCODE_YKTCARD_PAY, "一卡通支付")
-// .setTransDatetime(param.transdate, param.transtime) //交易时间
-// .selectPaytype(TradeDict.PAYTYPE_YKT_CARD, param.stuempno)
-// .addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_YKT),
-// AccountHolder.shop(param.shopaccno),
-// param.amount / 100.0, "一卡通支付")
-// .also { builder ->
-// param.feelist?.forEach {
-// //fixme: 科目 -> 商户 与个人无关
-// builder.addDetail(AccountHolder.feetype(it.feetype, TradeDict.PAYTYPE_YKT_CARD)
-// .with(AccountHolder.shop(param.shopaccno))
-// .with(AccountHolder.subject(Subject.SUBJNO_PAY_YKT))
-// , it.amount / 100.0)
-// }
-// }
-// .addExtendParam("stuempno", param.stuempno)
-// .addExtendParam("yktshopid", param.yktshopid ?: "")
-// .addExtendParam("devphyid", param.devphyid ?: "")
-// //.addExtendParam(param.extendmap) //fixme: 保存调一卡通附加参数 (是否直接传附加参数map)
-// .init(personBalancePayService)
-//
-// return ResponseEntity.ok(ResponseBodyBuilder.create()
-// .data("refno", dtl.refno)
-// .data("amount", dtl.amount)
-// .success("交易初始化成功"))
-//
-// }
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<一卡通支付>"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
-
- /**
- * ============================================================================
- * 一卡通支付【交易确认】
- * ============================================================================
- * */
- @PostMapping("/ykt/payfinish")
- fun yktPayFinish(@RequestBody param: CitizenCardPayfinishParam, authentication: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-//
-// var dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setRefno(param.refno)
-// .wip(personBalancePayService)
-// val extendMap = consumePayService.getUserdtlExtendParamMap(dtl.refno)
-// val code = CallService.callYktPay(consumePayService.getPaytypeConfig(TradeDict.PAYTYPE_YKT_CARD, dtl.shopaccno, dtl.userid == null),
-// dtl, DateUtil.getNow(), extendMap["stuempno"]!!, extendMap["yktshopid"]!!, extendMap["devphyid"])
-// if (code.retcode == "0") {
-// dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setRefno(param.refno)
-// .addResult(code.data)
-// .success(personBalancePayService) //流水置成功
-//
-// return ResponseEntity.ok(ResponseBodyBuilder.create()
-// .data("refno", dtl.refno)
-// .data("billno", dtl.outtradeno)
-// .success())
-// } else {
-// PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setRefno(param.refno)
-// .addResult("errmsg", code.retmsg!!)
-// .finish(personBalancePayService, TradeDict.DTL_STATUS_FAIL) //流水置成功
-//
-// return ResponseEntity.ok(ResponseBodyBuilder.create()
-// .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败-${code.retmsg}"))
-// }
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
-// ============================================== //
-//
-// @GetMapping("/account/payinit")
-// fun accountPayInit(userid: String, amount: Int, manageFee: Int): ResponseEntity<Any> {
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setTransDatetime("20190411", "112311")
-// .enableOverdraft(false)
-// .addDetail(AccountHolder.person(userid),
-// AccountHolder.shop("12323"),
-// amount / 100.0, "")
-// .addDetail(AccountHolder.person(userid), AccountHolder.transType(301),
-// manageFee / 100.0, "")
-// .done(personBalancePayService, false)
-//
-// return ResponseEntity.ok(dtl)
-// }
-//
-// @GetMapping("/account/payfinish")
-// fun accountPayFinish(refno: String): ResponseEntity<Any> {
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .done(refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)
-// return ResponseEntity.ok(dtl)
-// }
-
-
-//
-// /**
-// * 微信支付
-// * wechattype
-// * qrcode-扫微信二维码支付
-// * app-原生app微信支付
-// * mp-微信公众号支付
-// * h5-微信h5支付
-// *
-// * */
-// @PostMapping("/wechat/payinit")
-// fun wechatPayInit(userid: String, amount: Int, manageFee: Int,
-// stuempno: String, shopid: String, transdate: String, transtime: String,
-// outtradeno: String, payinfo: String, feetype: String,
-// wechattype: String, realip: String?, qrcode: String?, openid: String?): ResponseEntity<Any> {
-// return try {
-// val paytype = paytypeService.getBySourceType(PaytypeUtil.WECHAT)
-// if (paytype == null || ConstantUtil.ENABLE_YES != paytype.enable) {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .fail(1, "支付方式未开启"))
-// }
-// val person = userService.findByThirdUniqueIdenty(stuempno)
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setTransDatetime(transdate, transtime)
-// .selectPaytype(PaytypeUtil.WECHAT, payinfo)
-// .setOuttradeno(outtradeno)
-// .also {
-// if (null != person) it.setOwner(person)
-// }
-// .tryLock(true)
-// .setTransinfo(TradeCode.TRANSCODE_WECHAT, "微信支付")
-// .chooseTradetype(Tradetype.CONSUME)
-// .also {
-// when (feetype) {
-// TradeDict.FEETYPE_CONSUME_MEALER -> {
-// it.addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_WECHAT),
-// AccountHolder.shop(shopid),
-// amount / 100.0, "微信支付")
-// .addDetail(AccountHolder.transType(TranstypeCode.TT_CONSUUME_MANAGE_FEE)
-// .with(AccountHolder.shop(shopid)),
-// manageFee / 100.0)
-// }
-// TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
-// it.addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_WECHAT),
-// AccountHolder.shop(shopid),
-// (amount - manageFee) / 100.0, "微信支付")
-// .addDetail(AccountHolder.subject(Subject.SUBJNO_CONSUME_DISCOUNT),
-// AccountHolder.shop(shopid),
-// manageFee / 100.0, "优惠折扣")
-// }
-// else -> {
-// it.addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_WECHAT),
-// AccountHolder.shop(shopid),
-// amount / 100.0, "微信支付")
-// }
-// }
-// }.done(personBalancePayService, false)
-// val code = CallService.callWechatPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.WECHAT),
-// dtl, DateUtil.getNow(), wechattype, realip, qrcode, openid)
-// if (code.retcode == "0") {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .data("refno", dtl.refno)
-// .success())
-// } else {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "交易请求失败-${code.retcode}"))
-// }
-// } catch (e: TransactionException) {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .transException(e, "交易初始化异常"))
-// }
-// }
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt
deleted file mode 100644
index d57c96d..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.supwisdom.dlpay.api.controller
-
-import com.supwisdom.dlpay.api.service.AccountUtilServcie
-import com.supwisdom.dlpay.api.service.SourceTypeService
-import com.supwisdom.dlpay.api.service.TransactionService
-import com.supwisdom.dlpay.framework.util.MD5
-import com.supwisdom.dlpay.framework.util.StringUtil
-import com.supwisdom.dlpay.util.PaytypeUtil
-import org.dom4j.io.SAXReader
-import org.slf4j.LoggerFactory
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.util.StringUtils
-import org.springframework.web.bind.annotation.PathVariable
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.ResponseBody
-import org.springframework.web.bind.annotation.RestController
-import java.util.*
-import javax.servlet.http.HttpServletRequest
-import javax.servlet.http.HttpServletResponse
-
-/**
- * Created by shuwei on 2019/4/22.
- */
-@RestController
-@RequestMapping("/api/notify")
-class NotifyController {
- private val logger = LoggerFactory.getLogger(NotifyController::class.java)
- @Autowired
- lateinit var paytypeService: SourceTypeService
- @Autowired
- lateinit var accountUtilServcie: AccountUtilServcie
-
- @Autowired
- lateinit var transactionService: TransactionService
-
- @RequestMapping(value = ["/wechat"])
- @ResponseBody
- fun index(@PathVariable schema: String, request: HttpServletRequest,
- response: HttpServletResponse): String {
- try {
- // 解析结果存储在HashMap
- var map: MutableMap<String, String> = HashMap()
- val inputStream = request.inputStream
- // 读取输入流
- val reader = SAXReader()
- val document = reader.read(inputStream)
- // 得到xml根元素
- val root = document.rootElement
- // 得到根元素的所有子节点
- val elementList = root.elements()
- // 遍历所有子节点
- for (e in elementList) {
- map[e.name] = e.text
- logger.error("*************" + e.name + "=" + e.text + "************************")
- }
- // 释放资源
- inputStream.close()
-
- val sign = map["sign"]
- if (StringUtils.isEmpty(sign)) {
- logger.error("签名错误")
- return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名错误]]></return_msg></xml>"
- }
- map = StringUtil.paraFilter(map)
- //TODO 校验签名
- var signStr = StringUtil.createLinkString(map)
- val config = paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.WECHAT)
- if (config["appkey"].isNullOrEmpty()) {
- logger.error("签名错误")
- return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名错误]]></return_msg></xml>"
- }
- val key = config["appkey"]
- signStr += "&key=$key"
- val signRet = MD5.encodeByMD5(signStr)
- logger.error("*******signStr=$signStr")
- if (!signRet.equals(sign, ignoreCase = true)) {
- return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>"
- }
- logger.error("*******signRet=$signRet,sign=$sign*****************")
- val return_code = map["return_code"]
- val result_code = map["result_code"]
- val out_trade_no = map["out_trade_no"]
- if (out_trade_no == null || StringUtils.isEmpty(out_trade_no)) {
- return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[订单信息错误]]></return_msg></xml>"
- }
- if (!StringUtils.isEmpty(return_code) && "SUCCESS" == return_code
- && !StringUtils.isEmpty(result_code) && "SUCCESS" == result_code) {
- //map.get("transaction_id") 第三方流水号
- transactionService.success(out_trade_no)
- }
- return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"
- } catch (e: Exception) {
- e.printStackTrace()
- logger.error("------------step7----------------" + e.message)
- return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[解析失败]]></return_msg></xml>"
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
deleted file mode 100644
index 71aab56..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ /dev/null
@@ -1,142 +0,0 @@
-package com.supwisdom.dlpay.api.controller
-
-import com.supwisdom.dlpay.api.bean.ModifyUserParam
-import com.supwisdom.dlpay.api.bean.OpenUserParam
-import com.supwisdom.dlpay.api.bean.QueryUserParam
-import com.supwisdom.dlpay.api.service.UserService
-import com.supwisdom.dlpay.exception.RequestParamCheckException
-import com.supwisdom.dlpay.exception.TransactionException
-import com.supwisdom.dlpay.framework.ResponseBodyBuilder
-import com.supwisdom.dlpay.framework.service.CommonService
-import com.supwisdom.dlpay.framework.util.TradeErrorCode
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.http.ResponseEntity
-import org.springframework.web.bind.annotation.PostMapping
-import org.springframework.web.bind.annotation.RequestBody
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RestController
-import java.net.URLDecoder
-import javax.servlet.http.HttpServletRequest
-import javax.servlet.http.HttpServletResponse
-
-@RestController
-@RequestMapping("/api/user")
-class UserAPIController {
- @Autowired
- private lateinit var useService: UserService
- @Autowired
- private lateinit var commonService: CommonService
-
- @PostMapping("/open")
- fun openAccount(@RequestBody param: OpenUserParam, request: HttpServletRequest, response: HttpServletResponse): ResponseEntity<Any> {
- try {
-
- if (!param.checkParam() || !param.checkSign(commonService.getAppidSecretByRequest(request))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
- useService.findByThirdUniqueIdenty(param.uid).let {
- if (null != it) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REGISTER_USER_EXIST, "该用户唯一号已经注册"))
- }
-
- param.name = URLDecoder.decode(param.name, Charsets.UTF_8.toString()) //解码
- param.address = param.address?.let { URLDecoder.decode(param.address, Charsets.UTF_8.toString()) } //解码
- useService.registerUser(param).let {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("userid", it.userid)
- .data("uid", param.uid)
- .success())
- }
- }
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
- @PostMapping("/query")
- fun queryAccount(@RequestBody param: QueryUserParam, request: HttpServletRequest, response: HttpServletResponse): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getAppidSecretByRequest(request))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-
- useService.findByUseridOrThirdUniqueIdenty(param.userid, param.uid).let {
- if (null != it) {
- val account = useService.findAccountByUserid(it.userid, null)
- val pointacc = useService.findPointsAccountByUserid(it.userid)
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("userid", it.userid)
- .data("name", it.name)
- .data("idtype", it.idtype)
- .data("idno", it.idno)
- .data("mobile", it.mobile)
- .data("email", it.email)
- .data("status", it.status)
- .data("balance", account.let {
- if (null == it) {
- 0.0
- } else {
- it.availbal
- }
- }) //账户余额
- .data("points", pointacc.let {
- if (null == it) {
- 0
- } else {
- it.points
- }
- }) //积分
- .success())
- }
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.ACCOUNT_NOT_EXISTS, "账户不存在"))
- }
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
- @PostMapping("/modify")
- fun modifyAccount(@RequestBody param: ModifyUserParam, request: HttpServletRequest, response: HttpServletResponse): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getAppidSecretByRequest(request))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
- useService.findByUseridOrThirdUniqueIdenty(param.userid, param.uid)?.let {
- param.name = param.name?.let { URLDecoder.decode(param.name, Charsets.UTF_8.toString()) } //解码
- param.address = param.address?.let { URLDecoder.decode(param.address, Charsets.UTF_8.toString()) } //解码
- if (useService.modifyUserInfo(it, param)) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .success("修改成功"))
- } else {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "账户信息修改失败"))
- }
- }
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.ACCOUNT_NOT_EXISTS, "账户不存在"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
- }
-
-
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/repositories/repository_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/repositories/repository_impl.kt
deleted file mode 100644
index e14f947..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/repositories/repository_impl.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.supwisdom.dlpay.api.repositories
-
-import com.supwisdom.dlpay.api.domain.TAccount
-import com.supwisdom.dlpay.api.domain.TPersondtl
-import com.supwisdom.dlpay.api.domain.TShopdtl
-import com.supwisdom.dlpay.exception.TransactionProcessException
-import com.supwisdom.dlpay.framework.domain.TShopacc
-import com.supwisdom.dlpay.framework.util.TradeErrorCode
-import org.springframework.stereotype.Repository
-import org.springframework.transaction.annotation.Transactional
-import javax.persistence.EntityManager
-import javax.persistence.PersistenceContext
-
-@Repository
-@Transactional
-class TAccountRepositoryImpl : TAccountRepository {
-
- @PersistenceContext
- private lateinit var entityManager: EntityManager
-
- override fun recalcAccountBalance(accno: String, avaibal: Double, amount: Double, overdraft: Boolean): Int {
- val account = entityManager.find(TAccount::class.java, accno) ?: return 0
- if (avaibal.compareTo(account.availbal!!) != 0) {
- throw TransactionProcessException(TradeErrorCode.ACCOUNT_TRADE_BUSY,
- "账户余额已被更新")
- }
-
- return entityManager.createQuery("update TAccount a set a.availbal=a.availbal+?1, a.balance=a.balance+?1 " +
- "where a.accno=?2 and a.availbal=?3")?.run {
- setParameter(1, amount)
- setParameter(2, accno)
- setParameter(3, avaibal)
- executeUpdate()
- } ?: throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR, "更新个人账户余额错误")
- }
-
- override fun recalcAccountBalance(account: TAccount, amount: Double, overdraft: Boolean): Int {
- return recalcAccountBalance(account.accno, account.availbal, amount, overdraft)
- }
-
- override fun recalcAccountBalance(dtl: TPersondtl, amount: Double, overdraft: Boolean): Int {
- return entityManager.find(TAccount::class.java, dtl.accountNo)?.let {
- recalcAccountBalance(it, amount, overdraft).also { count ->
- if (count == 1) {
- dtl.befbal = it.availbal
- }
- }
- } ?: throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR,
- "交易流水<${dtl.refno}>未找到指定个人账户")
- }
-}
-
-@Repository
-@Transactional
-class ShopaccRepositoryImpl : TShopaccRepository {
-
- @PersistenceContext
- private lateinit var entityManager: EntityManager
-
- override fun recalcShopBalance(dtl: TShopdtl, amount: Double, overdraft: Boolean): Int {
- val shopacc = entityManager.find(TShopacc::class.java, dtl.shopaccno)
- ?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS,
- "交易流水<${dtl.refno}>商户账户不存在")
-
- return entityManager.createQuery("update TShopacc c set c.balance=c.balance+?1" +
- " where c.shopaccno=?2 and c.balance=?3")?.run {
- setParameter(1, amount)
- setParameter(2, dtl.shopaccno)
- setParameter(3, shopacc.balance)
- executeUpdate()
- } ?: throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR,
- "交易流水<${dtl.refno}>未找到指定商户账户")
- }
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
deleted file mode 100644
index fa30ada..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
+++ /dev/null
@@ -1,170 +0,0 @@
-package com.supwisdom.dlpay.api.service.impl
-
-import com.supwisdom.dlpay.api.bean.ModifyUserParam
-import com.supwisdom.dlpay.api.bean.OpenUserParam
-import com.supwisdom.dlpay.api.dao.AccountDao
-import com.supwisdom.dlpay.api.dao.PersonDao
-import com.supwisdom.dlpay.api.dao.PersonIdentityDao
-import com.supwisdom.dlpay.api.dao.PointsAccountDao
-import com.supwisdom.dlpay.api.domain.TAccount
-import com.supwisdom.dlpay.api.domain.TPerson
-import com.supwisdom.dlpay.api.domain.TPersonIdentity
-import com.supwisdom.dlpay.api.domain.TPointsAccount
-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.util.*
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.stereotype.Service
-
-/**
- * Created by shuwei on 2019/4/15.
- */
-@Service
-class UserServiceImpl : UserService {
- @Autowired
- private lateinit var personDao: PersonDao
- @Autowired
- private lateinit var accountDao: AccountDao
- @Autowired
- private lateinit var personIdentityDao: PersonIdentityDao
- @Autowired
- private lateinit var pointsAccountDao: PointsAccountDao
- @Autowired
- private lateinit var systemUtilService: SystemUtilService
-
- override fun registerUser(param: OpenUserParam): TPerson {
- var person = personDao.findByIdentity(param.idtype, param.idno)
- if (null != person && param.name != person.name)
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "证件指定用户与请求的用户名不匹配")
-
- val systemdatetime = systemUtilService.sysdatetime
- if (null == person) {
- person = personDao.save(TPerson().apply {
- name = param.name
- sex = param.sex
- status = TradeDict.STATUS_NORMAL
- idtype = param.idtype
- idno = param.idno
- email = param.email
- tel = param.tel
- mobile = param.mobile
- addr = param.address
- zipcode = param.zipcode
- lastsaved = systemdatetime.hostdatetime
- })
- }
-
- if (accountDao.findByUseridAndSubjno(person.userid, Subject.SUBJNO_PERSONAL_DEPOSIT) == null) {
- //开户
- TAccount().apply {
- accname = person.name
- subjno = Subject.SUBJNO_PERSONAL_DEPOSIT
- userid = person.userid
- status = person.status
- balance = 0.0
- availbal = 0.0
- frozebal = 0.0
- lowfreeFlag = false
- lowfreeLimit = lowfreeLimit
- daylimit = daylimit
- maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.SYSPARAID_NO1, SysparaUtil.SYSPARA_NO1_DEFAULT)
- lasttransdate = systemdatetime.hostdate
- lastdayTransamt = 0.0
- lastdayDpsamt = 0.0
- opendate = systemdatetime.hostdate
- tac = this.generateTac()
- accountDao.save(this)
- }
- }
- personIdentityDao.save(TPersonIdentity().apply {
- thirdUid = param.uid
- this.person = person
- status = person.status
- lossflag = 0
- lockflag = 0
- createtime = systemdatetime.hostdatetime
- }) //保存绑定关系
-
- return person
- }
-
- override fun findByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson? {
- return personIdentityDao.getByThirdUid(thirdUniqueIdenty)?.let { it.person }
- }
-
- override fun findByUseridOrThirdUniqueIdenty(userid: String?, thirdUniqueIdenty: String?): TPerson? {
- return if (!StringUtil.isEmpty(userid)) {
- personDao.findByUserid(userid)
- } else {
- personIdentityDao.getByThirdUid(thirdUniqueIdenty)?.let { it.person }
- }
- }
-
- override fun modifyUserInfo(person: TPerson, param: ModifyUserParam): Boolean {
- if (!StringUtil.isEmpty(param.name) && param.name != person.name) {
- person.name = param.name
- accountDao.findByUseridAndSubjno(person.userid, Subject.SUBJNO_PERSONAL_DEPOSIT)?.let {
- it.accname = param.name
- accountDao.save(it)
- }
- }
- if (!StringUtil.isEmpty(param.sex)) person.sex = param.sex
- if (!StringUtil.isEmpty(param.idno)) {
- person.idtype = param.idtype
- person.idno = param.idno
- }
- if (!StringUtil.isEmpty(param.mobile)) person.mobile = param.mobile
- if (!StringUtil.isEmpty(param.tel)) person.tel = param.tel
- if (!StringUtil.isEmpty(param.email)) person.email = param.email
- if (!StringUtil.isEmpty(param.address)) person.addr = param.address
- if (!StringUtil.isEmpty(param.zipcode)) person.zipcode = param.zipcode
- personDao.save(person)
- return true
- }
-
- override fun findPersonByUserid(userid: String): TPerson? {
- return personDao.findByUserid(userid)
- }
-
- override fun findAccountByUserid(userid: String, subjno: String?): TAccount? {
- return if (!StringUtil.isEmpty(subjno)) {
- accountDao.findByUseridAndSubjno(userid, subjno)
- } else {
- accountDao.findByUseridAndSubjno(userid, Subject.SUBJNO_PERSONAL_DEPOSIT)
- }
- }
-
- override fun findPointsAccountByUserid(userid: String): TPointsAccount? {
- return pointsAccountDao.findByUserid(userid)
- }
-
- override fun findPersonIdentity(thirdUniqueIdenty: String): TPersonIdentity? {
- return personIdentityDao.getByThirdUid(thirdUniqueIdenty)
- }
-
- override fun findPersonByIdentityCheckStatus(thirdUniqueIdenty: String): TPerson {
- personIdentityDao.getByThirdUid(thirdUniqueIdenty).let {
- if (null != it) {
- if (TradeDict.STATUS_NORMAL != it.status) {
- throw TransactionProcessException(TradeErrorCode.PERSON_STATUS_ERROR, "账户状态异常")
- }
- if (1 == it.lossflag) {
- throw TransactionProcessException(TradeErrorCode.ACCOUNT_IS_LOSS, "账户已挂失")
- }
- if (1 == it.lockflag) {
- throw TransactionProcessException(TradeErrorCode.ACCOUNT_IS_LOCKED, "账户已冻结")
- }
-
- if (null != it.person) {
- return it.person
- } else {
- throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS, "账户不存在")
- }
- }
-
- throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS, "账户不存在")
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
deleted file mode 100644
index c4d9b20..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.supwisdom.dlpay.api.service
-
-import com.supwisdom.dlpay.api.bean.ModifyUserParam
-import com.supwisdom.dlpay.api.bean.OpenUserParam
-import com.supwisdom.dlpay.api.domain.TAccount
-import com.supwisdom.dlpay.api.domain.TPerson
-import com.supwisdom.dlpay.api.domain.TPersonIdentity
-import com.supwisdom.dlpay.api.domain.TPointsAccount
-import org.springframework.transaction.annotation.Propagation
-import org.springframework.transaction.annotation.Transactional
-
-/**
- * Created by shuwei on 2019/4/15.
- */
-interface UserService {
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class))
- fun registerUser(param: OpenUserParam): TPerson
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson?
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findByUseridOrThirdUniqueIdenty(userid: String?, thirdUniqueIdenty: String?): TPerson?
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun modifyUserInfo(person:TPerson,param: ModifyUserParam):Boolean
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findPersonByUserid(userid: String): TPerson?
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findAccountByUserid(userid: String, subjno:String?): TAccount?
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findPointsAccountByUserid(userid: String): TPointsAccount?
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findPersonIdentity(thirdUniqueIdenty: String):TPersonIdentity?
-
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun findPersonByIdentityCheckStatus(thirdUniqueIdenty: String): TPerson
-
-}
\ No newline at end of file