有数据
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