fix: 重构优化代码
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
index 149c3ae..9f450a9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
@@ -72,4 +72,14 @@
 
   public AgentResponse() {
   }
+
+  public AgentResponse<T> copyFrom(AgentResponse<?> src) {
+    this.agentBody = src.agentBody;
+    this.agentCode = src.agentCode;
+    this.agentMsg = src.agentMsg;
+    this.agentRefno = src.agentRefno;
+    this.code = src.code;
+    this.dtlStatus = src.dtlStatus;
+    return this;
+  }
 }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
index d355f13..4b8b1c9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
@@ -361,97 +361,97 @@
 
     override fun dopayInit(transaction: TTransactionMain): AgentResponse<QrcodePayTrans> {
         val agentResponse = AgentResponse<QrcodePayTrans>()
-            //H5 支付
-         //   val trans = agentServiceProxy.qrcodePayTransFindByRefno(transaction.refno)
-           // agentResponse.payload = trans
-            val bean = WechatReqResp().apply {
-                this.appid = "wx03d12be843cdadd9"
-                this.mch_id = "1513444041"
-                this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
-                this.out_trade_no = transaction.refno
-                this.total_fee = 1
-                this.spbill_create_ip = "14.23.150.211"
-                this.body = "充值测试"
-                this.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010"
-                this.trade_type = "MWEB"
-                this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
-            }
-            bean.generaSign()
-            val xml = bean.generaXML()
-            restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
-            val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java)
-            val eleMap = XmlUtils.parseXml(res.body)
-            val retcode = eleMap["return_code"]
-            val resultCode = eleMap["result_code"]
+        //H5 支付
+        //   val trans = agentServiceProxy.qrcodePayTransFindByRefno(transaction.refno)
+        // agentResponse.payload = trans
+        val bean = WechatReqResp().apply {
+            this.appid = "wx03d12be843cdadd9"
+            this.mch_id = "1513444041"
+            this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+            this.out_trade_no = transaction.refno
+            this.total_fee = 1
+            this.spbill_create_ip = "14.23.150.211"
+            this.body = "充值测试"
+            this.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010"
+            this.trade_type = "MWEB"
+            this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
+        }
+        bean.generaSign()
+        val xml = bean.generaXML()
+        restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
+        val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java)
+        val eleMap = XmlUtils.parseXml(res.body)
+        val retcode = eleMap["return_code"]
+        val resultCode = eleMap["result_code"]
 
-            if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
-                    && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
-                agentResponse.code = AgentCode.REQUIRE_QUERY
-                agentResponse.agentCode = resultCode
-                agentResponse.agentMsg = eleMap["return_msg"]
-                when {
-                    transaction.transCode == TradeCode.TRANSCODE_H5PAY -> agentResponse.agentBody = eleMap["mweb_url"]
-                    transaction.transCode == TradeCode.TRANSCODE_APPPAY -> {
-                        bean.prepay_id = eleMap["prepay_id"]
-                        bean.timestamp = DateUtil.getNowSecond().toString()
-                        bean.nonce_str = getRandomString(30)
-                        bean.wpackage = "Sign=WXPay"
-                        bean.generaAPPSign()
-                        agentResponse.agentBody = bean.generaAPPParamters()
-                    }
-                    transaction.transCode == TradeCode.TRANSCODE_JSPAY || transaction.transCode == TradeCode.TRANSCODE_SMPAY -> {
-                        bean.prepay_id = eleMap["prepay_id"]
-                        bean.timestamp = DateUtil.getNowSecond().toString()
-                        bean.nonce_str = getRandomString(30)
-                        bean.generaJSAPISign()
-                        agentResponse.agentBody = bean.generaJSAPIParamters()
-                    }
+        if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
+                && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+            agentResponse.code = AgentCode.REQUIRE_QUERY
+            agentResponse.agentCode = resultCode
+            agentResponse.agentMsg = eleMap["return_msg"]
+            when {
+                transaction.transCode == TradeCode.TRANSCODE_H5PAY -> agentResponse.agentBody = eleMap["mweb_url"]
+                transaction.transCode == TradeCode.TRANSCODE_APPPAY -> {
+                    bean.prepay_id = eleMap["prepay_id"]
+                    bean.timestamp = DateUtil.getNowSecond().toString()
+                    bean.nonce_str = getRandomString(30)
+                    bean.wpackage = "Sign=WXPay"
+                    bean.generaAPPSign()
+                    agentResponse.agentBody = bean.generaAPPParamters()
                 }
-                agentResponse.agentRefno = eleMap["prepay_id"]
-            } else {
-                logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" }
-                agentResponse.code = AgentCode.FAIL
-                agentResponse.agentCode = eleMap["err_code"]
-                agentResponse.agentMsg = eleMap["err_code_des"]
+                transaction.transCode == TradeCode.TRANSCODE_JSPAY || transaction.transCode == TradeCode.TRANSCODE_SMPAY -> {
+                    bean.prepay_id = eleMap["prepay_id"]
+                    bean.timestamp = DateUtil.getNowSecond().toString()
+                    bean.nonce_str = getRandomString(30)
+                    bean.generaJSAPISign()
+                    agentResponse.agentBody = bean.generaJSAPIParamters()
+                }
             }
+            agentResponse.agentRefno = eleMap["prepay_id"]
+        } else {
+            logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" }
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = eleMap["err_code"]
+            agentResponse.agentMsg = eleMap["err_code_des"]
+        }
 
         return agentResponse
     }
 
     override fun doPayQuery(transaction: TTransactionMain): AgentResponse<QrcodePayTrans> {
         val agentResponse = AgentResponse<QrcodePayTrans>()
-            //H5 支付
-            val bean = WechatReqResp().apply {
-                this.appid = "wx03d12be843cdadd9"
-                this.mch_id = "1513444041"
-                this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
-                this.out_trade_no = transaction.refno
+        //H5 支付
+        val bean = WechatReqResp().apply {
+            this.appid = "wx03d12be843cdadd9"
+            this.mch_id = "1513444041"
+            this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+            this.out_trade_no = transaction.refno
+        }
+        bean.generalQuerySign()
+        val xml = bean.generalQueryXML()
+        restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
+        val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java)
+        val eleMap = XmlUtils.parseXml(res.body)
+        val retcode = eleMap["return_code"]
+        val resultCode = eleMap["result_code"]
+        val tradeState = eleMap["trade_state"]
+        if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
+                && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+            agentResponse.code = AgentCode.REQUIRE_QUERY
+            agentResponse.agentCode = resultCode
+            agentResponse.agentMsg = eleMap["return_msg"]
+            when (tradeState) {
+                "SUCCESS" -> agentResponse.dtlStatus = DtlStatus.SUCCESS
+                "REFUND" -> agentResponse.dtlStatus = DtlStatus.REFUND
+                "NOTPAY", "CLOSED", "REVOKED", "PAYERROR" -> agentResponse.dtlStatus = DtlStatus.FAIL
+                "USERPAYING" -> agentResponse.dtlStatus = DtlStatus.WAIT
             }
-            bean.generalQuerySign()
-            val xml = bean.generalQueryXML()
-            restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
-            val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java)
-            val eleMap = XmlUtils.parseXml(res.body)
-            val retcode = eleMap["return_code"]
-            val resultCode = eleMap["result_code"]
-            val tradeState = eleMap["trade_state"]
-            if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
-                    && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
-                agentResponse.code = AgentCode.REQUIRE_QUERY
-                agentResponse.agentCode = resultCode
-                agentResponse.agentMsg = eleMap["return_msg"]
-                when (tradeState) {
-                    "SUCCESS" -> agentResponse.dtlStatus = DtlStatus.SUCCESS
-                    "REFUND" -> agentResponse.dtlStatus = DtlStatus.REFUND
-                    "NOTPAY", "CLOSED", "REVOKED", "PAYERROR" -> agentResponse.dtlStatus = DtlStatus.FAIL
-                    "USERPAYING" -> agentResponse.dtlStatus = DtlStatus.WAIT
-                }
-            } else {
-                logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" }
-                agentResponse.code = AgentCode.FAIL
-                agentResponse.agentCode = eleMap["err_code"]
-                agentResponse.agentMsg = eleMap["err_code_des"]
-            }
+        } else {
+            logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" }
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = eleMap["err_code"]
+            agentResponse.agentMsg = eleMap["err_code_des"]
+        }
         return agentResponse
     }
 
@@ -478,8 +478,8 @@
         }
         val temp = StringUtil.paraFilter(param)
         var signStr = StringUtil.createLinkString(temp)
-   //     val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_WECHAT, transaction.shopDtl.shopaccno, false, false)
-        val key ="3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+        //     val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_WECHAT, transaction.shopDtl.shopaccno, false, false)
+        val key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
         signStr += "&key=$key"
         val signRet = MD5.encodeByMD5(signStr)
         logger.error("*******signStr=$signStr")
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
index 10579ca..841d411 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
@@ -6,6 +6,7 @@
 import com.supwisdom.dlpay.api.domain.TShopdtl
 import com.supwisdom.dlpay.api.domain.TTransactionMain
 import com.supwisdom.dlpay.api.service.SourceTypeService
+import mu.KotlinLogging
 import org.dom4j.Element
 import org.dom4j.io.SAXReader
 import org.springframework.stereotype.Component
@@ -17,22 +18,15 @@
 class WechatInAppService(private val sourceTypeService: SourceTypeService,
                          private val wechatService: WechatService)
     : InAppPayService<TTransactionMain> {
-    val APIUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"
+
+    private val logger = KotlinLogging.logger { }
 
     override fun init(transation: TTransactionMain): AgentResponse<TTransactionMain> {
         val wechatPayResponse = AgentResponse<TTransactionMain>();
-        System.err.println("#########");
-        val shopDtlTemp = TShopdtl();
-        transation.shopDtl = shopDtlTemp;               //transaction.shopDtl must not be null
         val agentResponse = wechatService.dopayInit(transation);
-        System.err.println(agentResponse);
-        wechatPayResponse.agentBody = agentResponse.agentBody;
-        wechatPayResponse.agentCode = agentResponse.agentCode;
-        wechatPayResponse.agentMsg = agentResponse.agentMsg;
-        wechatPayResponse.agentRefno = agentResponse.agentRefno;
-        wechatPayResponse.code = agentResponse.code;
-        wechatPayResponse.dtlStatus = agentResponse.dtlStatus;
-        wechatPayResponse.payload = transation
+        logger.debug { agentResponse }
+        wechatPayResponse.copyFrom(agentResponse)
+                .payload = transation
         return wechatPayResponse;
     }
 
@@ -40,38 +34,29 @@
         val wechatPayResponse = AgentResponse<TTransactionMain>();
         // 解析结果存储在HashMap
         val map = HashMap<String, String>()
-        val inputStream = request.inputStream
         // 读取输入流
         val reader = SAXReader()
-        val document = reader.read(inputStream)
-        // 得到xml根元素
-        val root = document.rootElement
-        // 得到根元素的所有子节点
-        val elementList = root.elements() as MutableList<Element>
+        val document = reader.read(request.inputStream)
         // 遍历所有子节点
-        for (e in elementList) {
+        for (e in document.rootElement.elements()) {
             map[e.name] = e.text
         }
         // 释放资源
-        inputStream.close()
+        request.inputStream.close()
         val resp = wechatService.doPayNotify(map)
         if (resp.code == AgentCode.SUCCESS) {
             wechatPayResponse.agentBody = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"
         } else {
             wechatPayResponse.agentBody = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[" + resp.agentMsg + "]]></return_msg></xml>"
         }
-        return wechatPayResponse;
+        return wechatPayResponse
     }
 
     override fun query(transation: TTransactionMain): AgentResponse<TTransactionMain> {
-        val wechatPayResponse = AgentResponse<TTransactionMain>();
-        val agentResponse = wechatService.doPayQuery(transation);
-        wechatPayResponse.agentMsg = agentResponse.agentMsg;
-        wechatPayResponse.agentCode = agentResponse.agentCode;
-        wechatPayResponse.agentBody = agentResponse.agentBody;
-        wechatPayResponse.agentRefno = agentResponse.agentRefno;
-        wechatPayResponse.code = agentResponse.code;
-        wechatPayResponse.dtlStatus = agentResponse.dtlStatus;
-        return wechatPayResponse;
+        val wechatPayResponse = AgentResponse<TTransactionMain>()
+        val agentResponse = wechatService.doPayQuery(transation)
+        wechatPayResponse.copyFrom(agentResponse)
+                .payload = transation
+        return wechatPayResponse
     }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index 93e305d..cfccf8d 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -30,6 +30,7 @@
 
 @RestController
 @RequestMapping("/api/consume")
+@Validated
 class ConsumeAPIController(private val qrCodeService: QRCodeService,
                            private val accountUtilServcie: AccountUtilServcie,
                            private val userService: UserService,
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
index 95e6e03..a87324f 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
@@ -232,7 +232,6 @@
         TenantContextHolder.getContext().tenant = tenantDetails.get()
         val agent = agentPayServiceContext.findInAppPayService<Any>(sourcetype)
                 ?: return ResponseBodyBuilder.badRequest("请求支付类型错误 <$sourcetype> 不存在")
-        TenantContextHolder.getContext().tenant = tenantDetails.get()
         val agentResponse = agent.notify(request)
 
         return ResponseBodyBuilder.ok(agentResponse.agentBody)