From c29c10c1931364fcce705871f795b05fef1786ed Mon Sep 17 00:00:00 2001 From: hankaikai <3233542360@qq.com> Date: Thu, 1 Jun 2023 17:14:02 +0800 Subject: [PATCH] =?UTF-8?q?"=E6=8B=89=E5=8D=A1=E6=8B=89=E8=BF=9B=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BB=A3=E7=A0=81"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/AuditCallbackController.java | 7 +- .../cn/pluss/platform/util/DateUtils.java | 5 + .../resources/config/application-common.yml | 12 + .../main/resources/config/application-lkl.yml | 11 - .../mapper/MerchantBackLklMapper.java | 9 + .../src/main/resources/application-dev.yml | 18 +- .../WEB-INF/jsp/promoter/userAppList.jsp | 14 +- .../platform/entity/MerchantBackLkl.java | 44 ++ .../cn/pluss/platform/klk/LaKaLaUtility.java | 8 +- .../cn/pluss/platform/klk/LakalaConfig.java | 29 +- .../klk/controller/LaKaLaController.java | 4 - .../platform/klk/service/LklPayService.java | 49 ++ .../klk/service/MerchantBackLklService.java | 7 + .../klk/service/impl/LaKalaInterfaceImpl.java | 425 +++++++++++------- .../impl/MerchantBackLklServiceImpl.java | 11 + .../merchant/impl/MerchantServiceImpl.java | 16 +- .../sxf/audit/LklMerAuditServiceImpl.java | 57 +++ .../platform/task/LklMerAuditHandler.java | 217 +++++++++ .../userApp/impl/UserAppServiceImpl.java | 1 + 19 files changed, 741 insertions(+), 203 deletions(-) delete mode 100644 pluss-common-bundle/src/main/resources/config/application-lkl.yml create mode 100644 pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantBackLklMapper.java create mode 100644 pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantBackLkl.java create mode 100644 pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/MerchantBackLklService.java create mode 100644 pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/MerchantBackLklServiceImpl.java create mode 100644 pluss-service-bundle/src/main/java/cn/pluss/platform/sxf/audit/LklMerAuditServiceImpl.java create mode 100644 pluss-service-bundle/src/main/java/cn/pluss/platform/task/LklMerAuditHandler.java diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/merchant/callback/AuditCallbackController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/merchant/callback/AuditCallbackController.java index 9d0dbb5..b464059 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/merchant/callback/AuditCallbackController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/merchant/callback/AuditCallbackController.java @@ -6,6 +6,7 @@ import cn.pluss.platform.channel.ys.YSAuditServiceV3; import cn.pluss.platform.entity.RyxAccessModel; import cn.pluss.platform.klk.service.impl.LaKalaInterfaceImpl; import cn.pluss.platform.ryx.RyxService; +import cn.pluss.platform.sxf.audit.LklMerAuditServiceImpl; import cn.pluss.platform.ys.impl.v20210929.YsConfigV2; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -44,6 +45,9 @@ public class AuditCallbackController { @Setter(onMethod_ = {@Autowired}) private MerchantAuditService ysAuditServiceExtensionV2; + @Setter(onMethod_ = {@Autowired}) + private LklMerAuditServiceImpl lklMerAuditService; + @Autowired private RyxService ryxService; @@ -145,7 +149,6 @@ public class AuditCallbackController { LaKalaInterfaceImpl laKalaInterface; @PostMapping("lklCallBack") public String lklCallBack(@RequestBody Map map) throws Exception { - String str ="data -> hplFXwPU1gbHYwraQM/fKEcoIkBfHD07VSH99OnKTZk9HJRFAvZyOm9nsdeSi8t/UdGPn+LXldrjZ7wiY+F5MzGlIdEma7agKZyHJ+UO6CrDJfYFMwlPUOgO+Pq5ljg6QOdZBxBLEHkRMkQnC/CTv9vQnPDqeCv4MvAbHJspADGRRPvmjxtzf0J4OQgP3hj9+ZqH+btsuX+W+YZRXRMYL+uOQkSJhMUv31hc9MAC/1Sp0C9cBcHKxr+idS+0CCjvD8WzLbXv2QuOSQccIKQw+Je8RMeuKs8f64MibCkf+RkilTCVCEd5apL1MkhYJZoUVzqPXmDBLjaJgr987X1wBAzQMS8+F34Vl/BonKPuJ4RRwdE/M3WJ+ZfM2WiLawpU7ZqUQdVY2bwJO801TcmFCswLoz2qxHHsBsjXtQPqMOj3pw3Kvz3WH3oWmcFRZjHKIbDSy9Jh2STEFRbvVWarjksBVjXkcbletDtOtY0T8XCdiiNoQNlVNj5kH5QkAWmt"; - return laKalaInterface.tuoKeCallBack(map); + return lklMerAuditService.merchantAuditCallback(map); } } diff --git a/pluss-common-bundle/src/main/java/cn/pluss/platform/util/DateUtils.java b/pluss-common-bundle/src/main/java/cn/pluss/platform/util/DateUtils.java index 5425fe2..2cf3ed8 100644 --- a/pluss-common-bundle/src/main/java/cn/pluss/platform/util/DateUtils.java +++ b/pluss-common-bundle/src/main/java/cn/pluss/platform/util/DateUtils.java @@ -610,6 +610,11 @@ public class DateUtils { int hours = (int) ((date2.getTime() - date1.getTime()) / (1000*3600)); return Math.abs(hours); } + private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss"); + + public static String getSdfTimes() { + return sdfTimes.format(new Date()); + } public static void main(String[] args) throws ParseException { //List last6Months = getLast6Months(); diff --git a/pluss-common-bundle/src/main/resources/config/application-common.yml b/pluss-common-bundle/src/main/resources/config/application-common.yml index ae47450..4da69fb 100644 --- a/pluss-common-bundle/src/main/resources/config/application-common.yml +++ b/pluss-common-bundle/src/main/resources/config/application-common.yml @@ -161,6 +161,18 @@ getui: express: USERID: 1778214 APIKEY: 63e75d64-e8fd-4dcc-93fa-17dc710cdf04 +lkl: + privateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAK870Q31bo4bvLvZVRZmKWLibwOUP5Myh+AiX3o49f19EFLshyDegirGZTbTEVuKzAnZwJTojWBsTsYMzXgKKEtB3brFblP/xOYcJpUUXLVv0BYc0ruxbdo13YorU8jeHiBLfw0PyOq92v/xhlII0XYo6g57cXXsWpV5wF2r7VVlAgMBAAECgYAFDkSWUq30DgB7KlE7pQqYTpslrx8fHUFGqgc3ggbgNOhbKXWD8ReFVMBdKBLN9tUIiw6fh+QdqOekQYCjcCZAarcZ5c3VyKqmM6NJe4KZ7jQxtIhwa2UDYPW7yRyqu8CqktNDTCd2R/RBVcwd4wvhjO9ZJZF8s3qbuncicUzjgQJBANT8TCGQLU3UOlfLhI5epnuspSCh9JgO3TR3xtYg1Km29PJ8Wy6ZtCznf+odr/RM3MKFEd84/Mz/wIic44bo50ECQQDSn69ej8smC8/azzaBVSrZCyaxY/vyQJ+5sXsCo94aFU3w5SnHW4Rb8Ok+EVOlCHqCxbwElpPvLof8PI8vGqklAkAdtqEMYafgXsZQ70Sr9Ap34Isc9VtBR3mW00r7HpNspeigV7cE1k6roRRYXhHpHDwEKzpmEPY7x0ZeCL05Wg7BAkBoFSVSc3iOapPiqzdiHjY4X3xVePVON4U2/G+vVE8zUIfdnUFSFPWJgbmhRGqzSUdRTGmnUsn0DmiAy2RugJxJAkBGCmZzkXmCA844EjwdDllJFY0hhjNguqUJXnm90v245Fyx86ox0rFOMS0WoZY7/8r/AQx2VUsrAKDyxajtUbR2 + appid: OP00000462 #接入方唯一编号 + mchSerialNo: 00dfba8194c41b84cf #证书序列号 + merchantNo: 8221210594300JY #商户号 + vposId: 491612871013605376 #vpos_id + termNo: A0073841 #终端号 + apiUrl: https://test.wsmsd.cn/ + privateKeyPath: "classpath:lakalaConf/OP00000003_private_key.pem" + certificatePath: "classpath:lakalaConf/OP00000003_cert" + pubKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvO9EN9W6OG7y72VUWZili4m8DlD+TMofgIl96OPX9fRBS7Icg3oIqxmU20xFbiswJ2cCU6I1gbE7GDM14CihLQd26xW5T/8TmHCaVFFy1b9AWHNK7sW3aNd2KK1PI3h4gS38ND8jqvdr/8YZSCNF2KOoOe3F17FqVecBdq+1VZQIDAQAB + diff --git a/pluss-common-bundle/src/main/resources/config/application-lkl.yml b/pluss-common-bundle/src/main/resources/config/application-lkl.yml deleted file mode 100644 index b09d8f4..0000000 --- a/pluss-common-bundle/src/main/resources/config/application-lkl.yml +++ /dev/null @@ -1,11 +0,0 @@ -lkl: - private_key: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGxrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhDZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbWdhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCNrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK15quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4mE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7qCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZKNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAKTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gHSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0Zr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLvAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeIRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlkeMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw48zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBPscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDibEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCnLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEzNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3jAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilqCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6QsFLQgFyXgvDnzr/o+hQJelW - appid: OP00000462 #接入方唯一编号 - mchSerialNo: 00dfba8194c41b84cf #证书序列号 - merchantNo: 8221210594300JY #商户号 - vposId: 491612871013605376 #vpos_id - termNo: A0073841 #终端号 - apiUrl: https://test.wsmsd.cn/ - privateKeyPath: "classpath:lakalaConf/OP00000003_private_key.pem" - certificatePath: "classpath:lakalaConf/OP00000003_cert" - diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantBackLklMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantBackLklMapper.java new file mode 100644 index 0000000..d3f53be --- /dev/null +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantBackLklMapper.java @@ -0,0 +1,9 @@ +package cn.pluss.platform.mapper; + +import cn.pluss.platform.entity.MerchantBackLkl; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MerchantBackLklMapper extends BaseMapper { +} diff --git a/pluss-manage-page/src/main/resources/application-dev.yml b/pluss-manage-page/src/main/resources/application-dev.yml index 190fdc5..3c676b4 100644 --- a/pluss-manage-page/src/main/resources/application-dev.yml +++ b/pluss-manage-page/src/main/resources/application-dev.yml @@ -1,16 +1,16 @@ spring: -# datasource: -# druid: -# url: jdbc:mysql://60.205.224.68:3306/chaozhanggui?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&noAccessToProcedureBodies=true&allowMultiQueries=true -# username: root -# password: CZGmysqlroot@123 -# driver-class-name: com.mysql.jdbc.Driver datasource: druid: - url: jdbc:mysql://rm-bp19ib8x213kh9t450o.rwlb.rds.aliyuncs.com:3306/chaozhanggui?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 - username: root - password: prodCZGmysqlroot@123 + url: jdbc:mysql://127.0.0.1:3306/chaozhanggui?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&noAccessToProcedureBodies=true&allowMultiQueries=true + username: chaozhanggui + password: CZGmysqlroot@123 driver-class-name: com.mysql.jdbc.Driver +# datasource: +# druid: +# url: jdbc:mysql://rm-bp19ib8x213kh9t450o.rwlb.rds.aliyuncs.com:3306/chaozhanggui?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 +# username: root +# password: prodCZGmysqlroot@123 +# driver-class-name: com.mysql.jdbc.Driver logging: config: classpath:log4j2-dev.xml diff --git a/pluss-manage-page/src/main/webapp/WEB-INF/jsp/promoter/userAppList.jsp b/pluss-manage-page/src/main/webapp/WEB-INF/jsp/promoter/userAppList.jsp index e049bab..8c8a320 100644 --- a/pluss-manage-page/src/main/webapp/WEB-INF/jsp/promoter/userAppList.jsp +++ b/pluss-manage-page/src/main/webapp/WEB-INF/jsp/promoter/userAppList.jsp @@ -571,7 +571,7 @@ minWidth: 160, templet: '#extensionThirdStatus', rowspan: 1, - colspan: 3 + colspan: 4 } , { title: 'D1微信子商户号
支付宝子商户号', @@ -671,7 +671,17 @@ templet: function (r) { return thirdStatus(r.channelStatusList, r.ppStatus, r.ppThirdStatus, 4); } - } + }, + { + field: 'mcs4Status', + title: '拉卡拉', + align: "left", + width: 190, + rowspan: 1, + templet: function (r) { + return thirdStatus(r.channelStatusList, r.ppStatus, r.ppThirdStatus, 5); + } + } ] ], done: function (index, layero) { diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantBackLkl.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantBackLkl.java new file mode 100644 index 0000000..82c219f --- /dev/null +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantBackLkl.java @@ -0,0 +1,44 @@ +package cn.pluss.platform.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("tb_pluss_merchant_back_lkl") +public class MerchantBackLkl { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + @TableField("merchant_code") + private String merchantCode; + @TableField("merchant_id") + private String merchantId; + @TableField("channel") + private String channel; + @TableField("user_no") + private String userNo; + @TableField("customer_no") + private String customerNo; + @TableField("external_customer_no") + private String externalCustomerNo; + @TableField("term_nos") + private String termNos; + @TableField("agency_no") + private String agencyNo; + @TableField("active_no") + private String activeNo; + @TableField("contract_id") + private String contractId; + @TableField("core_term_ids") + private String coreTermIds; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; + +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LaKaLaUtility.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LaKaLaUtility.java index 7cd31bc..4c4e0d9 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LaKaLaUtility.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LaKaLaUtility.java @@ -13,12 +13,6 @@ public class LaKaLaUtility { //测试公钥 private static String pubKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvO9EN9W6OG7y72VUWZili4m8DlD+TMofgIl96OPX9fRBS7Icg3oIqxmU20xFbiswJ2cCU6I1gbE7GDM14CihLQd26xW5T/8TmHCaVFFy1b9AWHNK7sW3aNd2KK1PI3h4gS38ND8jqvdr/8YZSCNF2KOoOe3F17FqVecBdq+1VZQIDAQAB"; - public static void main(String[] args) throws Exception { - String data="TOykml1JtGtrNL8rS+Aj/FOaq87eERTCUt9uZJk/ObFvuX5TRstQSl9fP3J2UTjSPO0b/p3Sh8Sxi1w9a6YuDQL9rrZ9orpWpEU+vg8H99fVZnvFjozB4HJf7NE5S9z7Mah93zW7TY1TFS55pIDv4go/fOtGTUcReUY0uFpZQote41m9KHvcjv5HiyCKaT/4cOoSMzHrsRiThwsU+rCDTzI4C32obwrXDOiaMd45wU4GL9/YMfHSpPOqgcsRZIWSBi2Pgt4nJX/s4uxVLzzKG00A8Jxa+yo0JZEgWRuHkOgcrV2Mxg8WmnXug8KeZBSeqYyvPXG9hy32q2phEwd1c6AYEOAKRu3QVhXEyDWjXkn86nvPimn8aohxYaAjky4E66LTnNIPNKOkwC5KVG27H9Fv27ZgqpDzRpYvaRExBT3RjJxXssLBRQ/eejOf7uuq0RgDUqFfwqOICqIUb8qbos6qu+QIsY2tvkbsMB1ZmD3s1SviHmvxWisD0VE/ZTDVQwDLUiORTwaMExirkc0s5bcB51FHHs2TFDa1raa/kSQwL/ADS0yAWNctiQGQtymErEmiD9iFdGXMvgjbqJ7KsDTAotKuYh9VzIA/RuAy+lpajvCIG6NOy428VHHin+RcXe/Ztx1UUHVk3xrHWNYG2aI4yyTLcz0EbG7rcOgWFwI="; -// String data ="hplFXwPU1gbHYwraQM/fKEcoIkBfHD07VSH99OnKTZk9HJRFAvZyOm9nsdeSi8t/UdGPn+LXldrjZ7wiY+F5MzGlIdEma7agKZyHJ+UO6CrDJfYFMwlPUOgO+Pq5ljg6QOdZBxBLEHkRMkQnC/CTv9vQnPDqeCv4MvAbHJspADGRRPvmjxtzf0J4OQgP3hj9+ZqH+btsuX+W+YZRXRMYL+uOQkSJhMUv31hc9MAC/1Sp0C9cBcHKxr+idS+0CCjvD8WzLbXv2QuOSQccIKQw+Je8RMeuKs8f64MibCkf+RkilTCVCEd5apL1MkhYJZoUVzqPXmDBLjaJgr987X1wBAzQMS8+F34Vl/BonKPuJ4RRwdE/M3WJ+ZfM2WiLawpU7ZqUQdVY2bwJO801TcmFCswLoz2qxHHsBsjXtQPqMOj3pw3Kvz3WH3oWmcFRZjHKIbDSy9Jh2STEFRbvVWarjksBVjXkcbletDtOtY0T8XCdiiNoQNlVNj5kH5QkAWmt"; - String decrypt = LaKaLaUtility.decrypt(data); - System.out.println("解密结果:" + decrypt); - } /** * 公钥解密 * @param pubKey Base64 公钥 @@ -26,7 +20,7 @@ public class LaKaLaUtility { * @return 解密字符串 * @throws Exception 解密异常 */ - public static String decrypt(String data){ + public static String decrypt(String pubKey,String data){ try { Base64.Decoder decoder = Base64.getDecoder(); byte[] keyBytes = decoder.decode(pubKey.getBytes()); diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LakalaConfig.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LakalaConfig.java index 6c1383c..cb86eff 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LakalaConfig.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/LakalaConfig.java @@ -1,14 +1,33 @@ package cn.pluss.platform.klk; import lombok.Data; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "lkl") @Data -@Component -@ConfigurationProperties(prefix = "lkl1") public class LakalaConfig { - @Value("private_key") private String privateKey; + private String appid; + private String mchSerialNo; + private String merchantNo; + private String vposId; + private String termNo; + private String apiUrl; + private String privateKeyPath; + private String certificatePath; + private String pubKey; + + + + + @Bean + public void init(){ + System.out.println("qqqqqqq"); + } + + } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java index 22496ef..09b7e56 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java @@ -31,15 +31,11 @@ public class LaKaLaController { } @PostMapping("/jjkls") public void jjkls(){ - laKalaInterface.ff(); - } @PostMapping("/tuoke") public void jjklss(){ - laKalaInterface.createTuoKeInfo("244"); - } @PostMapping("/callBackToke") diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LklPayService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LklPayService.java index f0d2257..a7eead5 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LklPayService.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LklPayService.java @@ -1,6 +1,12 @@ package cn.pluss.platform.klk.service; +import cn.pluss.platform.entity.MerchantBaseInfo; +import cn.pluss.platform.entity.MerchantChannelStatus; +import cn.pluss.platform.entity.MerchantOrder; +import cn.pluss.platform.klk.LakalaConfig; +import cn.pluss.platform.util.DateUtils; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import org.apache.commons.io.IOUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; @@ -14,6 +20,7 @@ import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.net.ssl.SSLContext; @@ -63,12 +70,54 @@ public class LklPayService { String apiPath = "/api/v2/saas/query/wx_openid_query"; // private String apiUrl="https://s2.lakala.com"; + + + @Autowired + LakalaConfig lakalaConfig; @Test public void test1() { LaKaLaVO laVO = new LaKaLaVO(); createOrder(laVO, "127.0.0.1"); } + + public JSONObject tradePay(MerchantOrder order, MerchantChannelStatus channel, MerchantBaseInfo merchant){ + + String req_time= DateUtils.getSdfTimes(); + + + String body="{\n" + + " \"req_time\": \""+req_time+"\",\n" + + " \"version\": \"3.0\",\n" + + " \"req_data\": {\n" + + " \"merchant_no\": \"822290070111135\",\n" + + " \"term_no\": \"29034705\",\n" + + " \"out_trade_no\": \"FD660E1FAA3A4470933CDEDAE1EC1D8E\",\n" + + " \"auth_code\": \"135178236713755038\",\n" + + " \"total_amount\": \"123\",\n" + + " \"location_info\": {\n" + + " \"request_ip\": \"10.176.1.192\",\n" + + " \"location\": \"+37.123456789,-121.123456789\"\n" + + " }\n" + + " }\n" + + "}"; + return new JSONObject(); + + } + + + + + + + + + + + + + + public String createOrder(LaKaLaVO laVO, String ip) { //public String createOrder(String body,String apiPath,String ip) { // String apiPath = "/api/v2/mms/openApi/addMer"; diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/MerchantBackLklService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/MerchantBackLklService.java new file mode 100644 index 0000000..dff5bc4 --- /dev/null +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/MerchantBackLklService.java @@ -0,0 +1,7 @@ +package cn.pluss.platform.klk.service; + +import cn.pluss.platform.entity.MerchantBackLkl; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface MerchantBackLklService extends IService { +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java index c979b0b..46968a6 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java @@ -1,7 +1,9 @@ package cn.pluss.platform.klk.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.pluss.platform.BankCardService; import cn.pluss.platform.IdCardService; +import cn.pluss.platform.MerchantAuditRecordService; import cn.pluss.platform.channel.ys.impl.YSAuditServiceV3; import cn.pluss.platform.dto.AccountDTO; import cn.pluss.platform.entity.*; @@ -10,11 +12,13 @@ import cn.pluss.platform.klk.LaKaLaUtility; import cn.pluss.platform.klk.service.*; import cn.pluss.platform.klk.vo.*; +import cn.pluss.platform.mapper.MerchantChannelStatusMapper; import cn.pluss.platform.mcc.MccReflectService; import cn.pluss.platform.merchant.AccountService; import cn.pluss.platform.merchant.MerchantBaseInfoService; import cn.pluss.platform.merchantChannelStatus.MerchantChannelStatusService; import cn.pluss.platform.userApp.UserAppService; +import cn.pluss.platform.util.StringUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -28,6 +32,8 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; @@ -63,6 +69,13 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { @Resource AccountService accountService; + + @Autowired + protected MerchantAuditRecordService merchAuditRecService; + + @Resource + private MerchantChannelStatusMapper merchantChannelStatusMapper; + @Lazy @Resource private MerchantChannelStatusService mcsService; @@ -75,50 +88,52 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { MccReflectService service; @Resource PlussMerchantLklService merchantLklService; -// private static final String client_id = "chaozhanggui"; -// private static final String client_secret = "Y54Gqy6aLpxld3dp"; -// private static final String grant_type = "client_credentials"; -// private static final String userNo = "22241007"; -// /** -// * 商户进件 -// */ -// private static final String tuoKeMerchat = "https://htkactvi.lakala.com/registration/merchant"; -// /** -// * 获取地区信息 -// */ -// private static final String organparentCode = "https://htkactvi.lakala.com/registration/organization/"; -// /** -// * 获取银行地区信息 -// */ -// private static final String organizationBank = "https://htkactvi.lakala.com/registration/organization/bank/"; -// /** -// * 文件上传 -// */ -// private static final String fileUpload = "https://htkactvi.lakala.com/registration/file/upload"; -// private static final String tuoKeToken = "https://tkapi.lakala.com/auth/oauth/token"; - - /************************************************测试信息***************************************************/ - private static final String client_id = "testsit"; - private static final String client_secret = "EguwEckByf2I6u6z"; + private static final String client_id = "chaozhanggui"; + private static final String client_secret = "Y54Gqy6aLpxld3dp"; private static final String grant_type = "client_credentials"; - private static final String userNo = "20000101"; + private static final String userNo = "22241007"; /** * 商户进件 */ - private static final String tuoKeMerchat = "https://test.wsmsd.cn/sit/htkregistration/merchant"; + private static final String tuoKeMerchat = "https://htkactvi.lakala.com/registration/merchant"; /** * 获取地区信息 */ - private static final String organparentCode = "https://test.wsmsd.cn/sit/htkregistration/organization/"; + private static final String organparentCode = "https://htkactvi.lakala.com/registration/organization/"; /** * 获取银行地区信息 */ - private static final String organizationBank = "https://test.wsmsd.cn/sit/htkregistration/organization/bank/"; + private static final String organizationBank = "https://htkactvi.lakala.com/registration/organization/bank/"; /** * 文件上传 */ - private static final String fileUpload = "https://test.wsmsd.cn/sit//htkregistration/file/upload"; - private static final String tuoKeToken = "https://test.wsmsd.cn/sit/htkauth/oauth/token"; + private static final String fileUpload = "https://htkactvi.lakala.com/registration/file/upload"; + private static final String tuoKeToken = "https://tkapi.lakala.com/auth/oauth/token"; + + /************************************************测试信息***************************************************/ +// private static final String client_id = "testsit"; +// private static final String client_secret = "EguwEckByf2I6u6z"; +// private static final String grant_type = "client_credentials"; +// private static final String userNo = "20000101"; +// /** +// * 商户进件 +// */ +// private static final String tuoKeMerchat = "https://test.wsmsd.cn/sit/htkregistration/merchant"; +// /** +// * 获取地区信息 +// */ +// private static final String organparentCode = "https://test.wsmsd.cn/sit/htkregistration/organization/"; +// /** +// * 获取银行地区信息 +// */ +// private static final String organizationBank = "https://test.wsmsd.cn/sit/htkregistration/organization/bank/"; +// /** +// * 文件上传 +// */ +// private static final String fileUpload = "https://test.wsmsd.cn/sit//htkregistration/file/upload"; +// +// +// private static final String tuoKeToken = "https://test.wsmsd.cn/sit/htkauth/oauth/token"; @@ -170,147 +185,229 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { /** * 拉卡拉拓客进件 * */ - public TuoKeVo createTuoKeInfo(String userId) { + public void createTuoKeInfo(String userId) { + + + + +// UserApp userapp=userAppService.getById(userId); +// MsgException.checkNull(userapp,"商户基础信息不完整"); +// +// MsgException.checkBlank(userapp.getEmail(),"商户邮箱不允许为空"); + + + MerchantBaseInfo merchantBaseInfo = mbiService.getMerchantBaseInfoByUserId(userId); - TuoKeVo tuoKeVo = new TuoKeVo(); - tuoKeVo.setBusiCode(""); //业务类型 - tuoKeVo.setEmail("chaozhanggui2023@163.com"); - tuoKeVo.setMerchantCode(merchantBaseInfo.getMerchantCode()); - tuoKeVo.setMerRegName(merchantBaseInfo.getMerchantName());//商户注册名称 - if (merchantBaseInfo.getMerchantType().equals("1") || merchantBaseInfo.getMerchantType().equals("2")) { //商户类型/营业执照类型 可选值:1:小微2:个体3:企业 - tuoKeVo.setMerType("TP_PERSONAL");//商户注册类型 TP_MERCHANT:企业 TP_PERSONAL:⼩微个⼈ - } else { - tuoKeVo.setMerType("TP_MERCHANT");//商户注册类型 + + + + + + IdCard idCard = idCardService.getCertIdCard(userId); //获取法人身份证信息 + MsgException.checkNull(idCard,"商户基本信息不完整"); + + MerchantChannelStatus mcs = mcsService.getByMerchantCodeNoChannel(merchantBaseInfo.getMerchantCode()); + String status=mcs.getStatus(); + String thirdStatus=mcs.getThirdStatus(); + MsgException.checkNull(mcs,"商户未提交审核"); + if (status.equals(MerchantChannelStatus.AUDIT_STATUS_EXAMINING) && !thirdStatus.equals(MerchantChannelStatus.AUDIT_THIRD_STATUS_WAITING)) { + MsgException.throwException("进件审核中,请等待审核结果"); } - tuoKeVo.setMerName(merchantBaseInfo.getMerchantName()); //商户名称(经营名称 - tuoKeVo.setMerAddr(merchantBaseInfo.getAddress()); //市区后的详细地址 - List proOrganCode = getOrganCode("1"); - System.out.println("proOrganCode :" + proOrganCode); - String cityCode = null; - for (OrganVo organVo : proOrganCode) { //省code - if (organVo.getName().equals(merchantBaseInfo.getProvince())) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("name", merchantBaseInfo.getProvince()).last("limit 1"); - TbPlussRegionLklEntity one = tbPlussRegionLklService.getOne(wrapper); - tuoKeVo.setProvinceCode(one.getCode()); - cityCode = one.getCode(); - break; - } - } - List cityOrganCode = getOrganCode(cityCode); //市code - for (OrganVo organVo : cityOrganCode) { - if (organVo.getName().equals(merchantBaseInfo.getCity())) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("name", merchantBaseInfo.getCity()).last("limit 1"); - TbPlussRegionLklEntity one = tbPlussRegionLklService.getOne(wrapper); - tuoKeVo.setCityCode(one.getCode()); - cityCode = one.getCode(); - break; - } + if (MerchantChannelStatus.isAudited(mcs)) { + MsgException.throwException("商户已进件成功,请勿重复进件"); } - List countyOrganCode = getOrganCode(cityCode); //区code - for (OrganVo organVo : countyOrganCode) { - if (organVo.getName().equals(merchantBaseInfo.getDistrict())) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("name", merchantBaseInfo.getDistrict()).last("limit 1"); - TbPlussRegionLklEntity one = tbPlussRegionLklService.getOne(wrapper); - tuoKeVo.setCountyCode(one.getCode()); - cityCode = one.getCode(); - break; - } - } - if (!merchantBaseInfo.getMerchantType().equals("1")) {// 非小微商户类型 - tuoKeVo.setLicenseName(merchantBaseInfo.getBussAuthName()); //营业执照名称 - tuoKeVo.setLicenseNo(merchantBaseInfo.getBussAuthNum());//营业执照号码 ⼩微商户可不传, 其他必传 - tuoKeVo.setLicenseDtStart(merchantBaseInfo.getBussAuthStartTime());//营业执照开始时间⼩微商户可不传, 其他必传,格式yyyy-MM-dd - tuoKeVo.setLicenseDtEnd(merchantBaseInfo.getBussAuthEndTime());//⼩微商户可不传, 其他必传,格式yyyy-MM-dd - } - tuoKeVo.setLatitude("");//经度 进件所在地址经度 - tuoKeVo.setLongtude("");//纬度 进件所在地址纬度 - tuoKeVo.setSource("APP"); //进件来源 APP: app H5: h5 - tuoKeVo.setBusinessContent(merchantBaseInfo.getMccName()); //商户经营内容 - IdCard one = idCardService.getLegalIdCard(userId); //获取法人身份证信息 - tuoKeVo.setLarName(one.getCertName()); - tuoKeVo.setLarIdType("01"); - tuoKeVo.setLarIdCard(one.getCertNo()); - tuoKeVo.setLarIdCardStart(birthdayDate(one.getCertStartTime())); - tuoKeVo.setLarIdCardEnd(birthdayDate(one.getCertEndTime())); - tuoKeVo.setContactMobile(merchantBaseInfo.getContactMobile()); - tuoKeVo.setContactName(merchantBaseInfo.getContactName()); + + JSONObject object1 = new JSONObject(); + JSONObject object2 = new JSONObject(); + object1.put("userNo", userNo); //合作机构信息 由拓客SAAS提供 + object1.put("email", "chaozhanggui2023@163.com"); //商户邮箱 + object1.put("busiCode", "PAPER_CODE");//业务类型 BPOS:传统POS, ZPOS:电签,ZPOS4G:4G电签,SUPER_POS:智能pos,B_WIZARD:蓝精灵,PAPER_CODE:码牌,WECHAT_PAY:专业化扫码,KLYX:云音箱,QRCODE:收款王,MONEY_BOX:收钱宝盒根据业务开放取值 + object1.put("merRegName", merchantBaseInfo.getMerchantName()); //商户注册名称 不能少于七个中文 + object1.put("merType", (merchantBaseInfo.getMerchantType().equals(1)||merchantBaseInfo.getMerchantType().equals("2"))?"TP_PERSONAL":"TP_MERCHANT"); //商户注册类型 TP_MERCHANT:企业 TP_PERSONAL:⼩微个⼈ + object1.put("merName", merchantBaseInfo.getMerchantName()); //商户名称(经营名称) 不能少于七个中文 + object1.put("merAddr", merchantBaseInfo.getAddress()); //去掉省,市区后的详细地址 + object1.put("provinceCode", tbPlussRegionLklService.getOne(new QueryWrapper().likeRight("name",merchantBaseInfo.getProvince()).last("limit 1")).getCode()); //省代码 通过【地区信息→获取地区查询】接口获取 对应 code字段 + object1.put("cityCode", tbPlussRegionLklService.getOne(new QueryWrapper().likeRight("name",merchantBaseInfo.getCity()).last("limit 1")).getCode()); // 市代码 通过【地区信息→获取地区查询】接口获取 对应 code字段 + object1.put("countyCode", tbPlussRegionLklService.getOne(new QueryWrapper().likeRight("name",merchantBaseInfo.getDistrict()).last("limit 1")).getCode()); // 区县代码 通过【地区信息→获取地区查询】接口获取 对应 code字段 + if(!merchantBaseInfo.getMerchantType().equals("1")){ + object1.put("licenseName", merchantBaseInfo.getBussAuthName()); //营业执照名称 + object1.put("licenseNo", merchantBaseInfo.getBussAuthNum()); //营业执照号码 ⼩微商户可不传, 其他必传 + StringBuffer startSb=new StringBuffer(); + StringBuffer endSb=new StringBuffer(); + + if(merchantBaseInfo.getBussAuthStartTime().contains("年")){ + startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(0,4)); + startSb.append("-"); + startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(5,7)); + startSb.append("-"); + startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(8,10)); + } + + if(ObjectUtil.isEmpty(merchantBaseInfo.getBuslicType()) ||"长期".equals(merchantBaseInfo.getBuslicType())){ + endSb.append("2099-12-31"); + }else { + endSb.append(merchantBaseInfo.getBussAuthStartTime().substring(0,4)); + endSb.append("-"); + endSb.append(merchantBaseInfo.getBussAuthStartTime().substring(5,7)); + endSb.append("-"); + endSb.append(merchantBaseInfo.getBussAuthStartTime().substring(8,10)); + } + + + object1.put("licenseDtStart", startSb); //营业执照开始时间⼩微商户可不传, 其他必传,格式yyyy-MM-dd + object1.put("licenseDtEnd", endSb); //⼩微商户可不传, 其他必传,格式yyyy-MM-dd + + } + + object1.put("latitude", "108.94647"); //经度 进件所在地址经度error + object1.put("longtude", "34.34727"); //纬度 进件所在地址纬度 error + object1.put("source", "APP"); //进件来源 APP: app H5: h5 + object1.put("businessContent", merchantBaseInfo.getMccName()); //商户经营内容 + object1.put("larName", idCard.getCertName()); //法⼈姓名 + object1.put("larIdType", "01"); //法⼈证件类型 01 身份证 暂时只支持身份证 + object1.put("larIdCard", idCard.getCertNo()); //法⼈证件号码 + object1.put("larIdCardStart", birthdayDate(idCard.getCertStartTime())); //法⼈证件开始⽇期 格式yyyy-MM-dd + object1.put("larIdCardEnd", birthdayDate(idCard.getCertEndTime())); //法⼈证件过期时间 格式yyyy-MM-dd + + object1.put("contactMobile", merchantBaseInfo.getContactMobile()); //商户联系⼈⼿机号码 + object1.put("contactName", merchantBaseInfo.getContactName()); //商户联系⼈姓名 + + QueryWrapper accountQueryWrapper1 = new QueryWrapper<>(); accountQueryWrapper1.eq("userId", userId); accountQueryWrapper1.eq("channelType", "D1"); Account accountServiceOne1 = accountService.getOne(accountQueryWrapper1); + MsgException.checkNull(accountServiceOne1,"结算信息未提交"); + + QueryWrapper bankCardWrapper = new QueryWrapper<>(); bankCardWrapper.eq("id", accountServiceOne1.getBankCardId()); BankCard userBrakCard = bankCardService.getOne(bankCardWrapper); + + MsgException.checkNull(userBrakCard,"结算卡信息未提交"); + QueryWrapper lklEntityQueryWrapper = new QueryWrapper<>(); lklEntityQueryWrapper.eq("branch_bank_no", userBrakCard.getContactLine()); TbPlussBankBranchLklEntity lakalaBranchInfo = tbPlussBankBranchLklService.getOne(lklEntityQueryWrapper); - tuoKeVo.setOpenningBankCode(lakalaBranchInfo.getBranchBankNo()); - tuoKeVo.setOpenningBankName(lakalaBranchInfo.getBranchBankName()); - tuoKeVo.setClearingBankCode(lakalaBranchInfo.getClearNo()); + MsgException.checkNull(lakalaBranchInfo,"结算卡对应的分行支行信息不存在"); + + object1.put("openningBankCode", lakalaBranchInfo.getBranchBankNo()); //结算账户开户⾏号 通过【银行列表查询】接口获取 对应 branchBankNo字段 + object1.put("openningBankName", lakalaBranchInfo.getBranchBankName()); //结算账户开户⾏名称 通过【银行列表查询】接口获取 对应 branchBankName字段 + object1.put("clearingBankCode", lakalaBranchInfo.getClearNo()); //结算账户清算⾏号 通过【银行列表查询】接口获取 对应 clearNo字段 + + QueryWrapper regionLklEntityQueryWrapper = new QueryWrapper<>(); regionLklEntityQueryWrapper.eq("code", lakalaBranchInfo.getAreaCode()); TbPlussBankRegionLklEntity bankParentCode = regionLklService.getOne(regionLklEntityQueryWrapper); //市code 和 name + MsgException.checkNull(bankParentCode,"结算卡对应的省份信息不存在"); regionLklEntityQueryWrapper.clear(); regionLklEntityQueryWrapper.eq("code", bankParentCode.getParentCode()); TbPlussBankRegionLklEntity parentCode = regionLklService.getOne(regionLklEntityQueryWrapper); //省code 和 名称 - tuoKeVo.setSettleProvinceCode(parentCode.getCode()); - tuoKeVo.setSettleProvinceName(parentCode.getName()); - tuoKeVo.setSettleCityCode(bankParentCode.getCode()); - tuoKeVo.setSettleCityName(bankParentCode.getName()); - Account account = new Account().setUserId("userId").setChannelType("D1"); + MsgException.checkNull(bankParentCode,"结算卡对应的城市信息不存在"); + + object1.put("settleProvinceCode", parentCode.getCode()); //结算信息省份名称 通过【地区信息→获取银行地区查询】接口获取 对应 code字段 + object1.put("settleProvinceName", parentCode.getName()); //结算信息省份代码 通过【地区信息→获取银行地区查询】接口获取 对应 name字段 + object1.put("settleCityCode", bankParentCode.getCode()); //结算信息城市名称 通过【地区信息→获取银行地区查询】接口获取 对应 code字段 + object1.put("settleCityName", bankParentCode.getName()); //结算信息城市代码 通过【地区信息→获取银行地区查询】接口获取 对应 name字段 AccountDTO accountV4 = getAccountV4(userId, "D1"); //结算人 + MsgException.checkNull(accountV4,"结算信息不存在"); + + object1.put("accountNo", accountV4.getBankCard().getBankCardNo()); //结算人银行卡号 + object1.put("accountName", accountV4.getBankCard().getBranchName()); //结算人账户名称 + object1.put("accountType", accountV4.getBankCard().getAccountType().equals("01")?"58":"57"); //结算账户类型 57 对公 58 对私 +// object1.put("accountIdType",tuoKeVo.getUserNo()); //结算⼈证件类型 为空同法⼈ + object1.put("accountIdCard", accountV4.getIdcard().getCertNo()); //结算⼈证件号码 - /**获取结算人**/ + Set feesSet = new HashSet<>(); + FeesSetVo f = new FeesSetVo(); + f.setFeeCode("SCAN_PAY_SECOND"); + f.setFeeValue("0.038"); + feesSet.add(f); - BankCard bankCard = accountV4.getBankCard(); - tuoKeVo.setAccountNo(bankCard.getBankCardNo()); - tuoKeVo.setAccountName(bankCard.getBranchName()); - if (bankCard.getAccountType().equals("01")) { - tuoKeVo.setAccountType("58"); //结算账户类型 57 对公 58 对私 - } else { - tuoKeVo.setAccountType("57"); - } - IdCard idcard = accountV4.getIdcard(); - tuoKeVo.setAccountIdCard(idcard.getCertNo());//结算人证件号码 - tuoKeVo.setTermNum("1"); - tuoKeVo.setFeeCode("SCAN_PAY_SECOND"); //费率类型 参考 附录 费率类型表 - tuoKeVo.setFeeValue("0.038"); //费率值 百分比费率 - MerchantBaseInfo merchantBaseInfoByUserId = baseInfoService.getMerchantBaseInfoByUserId(userId); + object2.put("termNum", "1"); //终端数量 1-5 最⼤ 5个终端 + object2.put("fees", feesSet); //费率集合 QueryWrapper userAppQueryWrapper = new QueryWrapper(); - userAppQueryWrapper.eq("standard_mcc_code", merchantBaseInfoByUserId.getMcc()).eq("channel_id", "5").last("limit 1"); + userAppQueryWrapper.eq("standard_mcc_code", merchantBaseInfo.getMcc()).eq("channel_id", "5").last("limit 1"); MccReflect mccReflect = service.getOne(userAppQueryWrapper); - if (null != mccReflect) { - tuoKeVo.setMcc("11010"); //商户MCC编号 通过 【商户类别查询→查询小类】接口获取 对应 code字段 -// tuoKeVo.setMcc(mccReflect.getMccCode()); //商户MCC编号 通过 【商户类别查询→查询小类】接口获取 对应 code字段 - } else { - tuoKeVo.setMcc("18001"); - } + object2.put("mcc", ObjectUtils.isEmpty(mccReflect)?"18001":"11010"); //商户MCC编号 通过 【商户类别查询→查询小类】接口获取 对应 code字段 + object2.put("activityId","37"); //归属活动信息 由拓客SAAS分配 + object1.put("bizContent", object2); //业务扩展信息 参⻅ 业务扩展信息 - tuoKeVo.setActivityId("12"); //归属活动信息 由拓客SAAS分配 Set attchmentsVoSet = new HashSet<>(); AttchmentsVo frontLegalPerson = new AttchmentsVo(); //图片set - frontLegalPerson.setId(laKaLaFileUpload(idcard.getImgPositive()));//法人身份证图片地址 + frontLegalPerson.setId(laKaLaFileUpload(accountV4.getIdcard().getImgPositive()));//法人身份证图片地址 frontLegalPerson.setType("ID_CARD_FRONT");//身份证正⾯ AttchmentsVo reverseLegalPerson = new AttchmentsVo(); - reverseLegalPerson.setId(idcard.getImgNegative()); //法人身份证图片地址 + reverseLegalPerson.setId(accountV4.getIdcard().getImgNegative()); //法人身份证图片地址 reverseLegalPerson.setType("ID_CARD_BEHIND");//身份证反⾯ attchmentsVoSet.add(reverseLegalPerson); - tuoKeVo.setSet(attchmentsVoSet); - tuoKeVo.setSettleType("D1"); //结算类型 D0秒到 D1次日结算 - tuoKeAddMer(tuoKeVo); - return tuoKeVo; + + + object1.put("attchments", attchmentsVoSet); //附件信息集合 参⻅ 附件信息 + object1.put("settleType", "D1"); //结算类型 D0秒到 D1次日结算 + + System.out.println("请求报文: " + object1); + /**获取拓客accessToken**/ + Map map = getToken(); + String result=""; + try{ + result = cn.hutool.http.HttpRequest.post(tuoKeMerchat) + .header("Authorization", "bearer " + map.get("access_token")).header("content-type", "application/json") + .body(object1.toString()).execute().body(); + System.out.println("返回结果:"+result); + Map arry = (Map) JSONArray.parse(result); + if (String.valueOf(arry.get("status")).equals("WAIT_AUDI")){ + PlussMerchantLklEntity plussMerchantLklEntity =new PlussMerchantLklEntity(); + plussMerchantLklEntity.setMerchantId(merchantBaseInfo.getMerchantCode()); + plussMerchantLklEntity.setMerchantlkl(String.valueOf(arry.get("merchantNo"))); + plussMerchantLklEntity.setType("0"); + merchantLklService.save(plussMerchantLklEntity); + + + + mcs.setChannel(5); + mcs.setUpdateTime(new Date()); + mcs.setMerchantCode(merchantBaseInfo.getMerchantCode()); + mcs.setStatus("1"); + mcs.setThirdStatus(""); + mcs.setCallbackStatus("0"); + mcs.setRemark("拉卡拉审核中"); + mcs.setMerchantId(String.valueOf(arry.get("merchantNo"))); + + MerchantAuditRecord merchantAuditRecord = new MerchantAuditRecord(); + merchantAuditRecord.setStatus("1"); + merchantAuditRecord.setMerchantCode(merchantBaseInfo.getMerchantCode()); + merchantAuditRecord.setChannel(5); + merchantAuditRecord.setThirdStatus(""); + merchantAuditRecord.setMerchantId(String.valueOf(arry.get("merchantNo"))); + merchAuditRecService.save(merchantAuditRecord); + + if (StringUtil.isNotEmpty(mcs.getId())) { + merchantChannelStatusMapper.updateById(mcs); + } else { + // 保存进件信息 + merchantChannelStatusMapper.insert(mcs); + } + + System.out.println(">>>>>>>>>>>>>>>"); + + }else { + + } + }catch (Exception e){ + e.printStackTrace(); + Map arry = (Map) JSONArray.parse(result); + new MsgException(String.valueOf(arry.get("message"))); + } } /** @@ -418,24 +515,24 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { * 进件回调 * */ public String tuoKeCallBack(Map map){ - String data = LaKaLaUtility.decrypt(map.get("data").toString()); - Map arryMap = (Map) JSONArray.parse(data); - System.out.println(arryMap); - if (String.valueOf(arryMap.get("status")).equals("SUCCESS")){ - CallBackVo callBackVo =new CallBackVo(); - callBackVo.setStatus("00"); - callBackVo.setNote(String.valueOf(arryMap.get("remark"))); - callBackVo.setSysFlowId(String.valueOf(arryMap.get("customerNo"))); - callBackVo.setJsoon(data); - auditServiceV3.lklResultHandle(callBackVo); - } else if (String.valueOf(arryMap.get("status")).equals("FAILURE")) { - CallBackVo callBackVo =new CallBackVo(); - callBackVo.setStatus("90"); - callBackVo.setNote(String.valueOf(arryMap.get("remark"))); - callBackVo.setSysFlowId(String.valueOf(arryMap.get("customerNo"))); - callBackVo.setJsoon(data); - auditServiceV3.lklResultHandle(callBackVo); - } +// String data = LaKaLaUtility.decrypt(map.get("data").toString()); +// Map arryMap = (Map) JSONArray.parse(data); +// System.out.println(arryMap); +// if (String.valueOf(arryMap.get("status")).equals("SUCCESS")){ +// CallBackVo callBackVo =new CallBackVo(); +// callBackVo.setStatus("00"); +// callBackVo.setNote(String.valueOf(arryMap.get("remark"))); +// callBackVo.setSysFlowId(String.valueOf(arryMap.get("customerNo"))); +// callBackVo.setJsoon(data); +// auditServiceV3.lklResultHandle(callBackVo); +// } else if (String.valueOf(arryMap.get("status")).equals("FAILURE")) { +// CallBackVo callBackVo =new CallBackVo(); +// callBackVo.setStatus("90"); +// callBackVo.setNote(String.valueOf(arryMap.get("remark"))); +// callBackVo.setSysFlowId(String.valueOf(arryMap.get("customerNo"))); +// callBackVo.setJsoon(data); +// auditServiceV3.lklResultHandle(callBackVo); +// } return "200"; } @@ -496,19 +593,25 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { * 获取结算人信息 */ public AccountDTO getAccountV4(String userId, String type) { - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.set("token", "admin"); - headers.set("myLoginName", "admin"); - HttpEntity> formEntity = new HttpEntity>(headers); + UserApp userApp= userAppService.getById(userId); + if (type == null) { - ResponseEntity exchange = restTemplate.exchange("http://127.0.0.1:7004/api/account/v4?userId=" + userId + "&channelType=" + type, HttpMethod.GET, formEntity, String.class); - - JSONObject jsonArray = JSONArray.parseObject(exchange.getBody()); - - AccountDTO accountDTO = JSONArray.parseObject(jsonArray.get("data").toString(), AccountDTO.class); - System.out.println(accountDTO); + MerchantChannelStatus mcs = mcsService.getValidData(userApp.getMerchantCode()); + if (mcs == null || !Objects.equals(mcs.getChannel(), 4)) { + type=Account.CHANNEL_TYPE_D1; + } else { + type=Account.CHANNEL_TYPE_D0; + } + } + AccountDTO accountDTO = accountService.getRealAccount(userId); + if (accountDTO == null) { + accountDTO = new AccountDTO(); + } + if (accountDTO.getIdcard() == null && accountDTO.getBankCard() == null) { + accountDTO.setIdcard(new IdCard()); + accountDTO.setBankCard(new BankCard()); + } return accountDTO; } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/MerchantBackLklServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/MerchantBackLklServiceImpl.java new file mode 100644 index 0000000..9d7db54 --- /dev/null +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/MerchantBackLklServiceImpl.java @@ -0,0 +1,11 @@ +package cn.pluss.platform.klk.service.impl; + +import cn.pluss.platform.entity.MerchantBackLkl; +import cn.pluss.platform.klk.service.MerchantBackLklService; +import cn.pluss.platform.mapper.MerchantBackLklMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class MerchantBackLklServiceImpl extends ServiceImpl implements MerchantBackLklService { +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/MerchantServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/MerchantServiceImpl.java index 46fe18e..1b6b69a 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/MerchantServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/MerchantServiceImpl.java @@ -12,6 +12,7 @@ import cn.pluss.platform.exception.MsgException; import cn.pluss.platform.exception.PayRiskException; import cn.pluss.platform.fans.FansService; import cn.pluss.platform.ipLocation.IpLocationService; +import cn.pluss.platform.klk.service.LklPayService; import cn.pluss.platform.leshua.LeshuaSignature; import cn.pluss.platform.mapper.*; import cn.pluss.platform.memberOrder.MemberOrderService; @@ -143,6 +144,9 @@ public class MerchantServiceImpl implements MerchantService { @Setter(onMethod_ = {@Autowired, @Lazy}) private UserVoiceService userVoiceService; + @Setter(onMethod_ = {@Autowired, @Lazy}) + private LklPayService lklPayService; + @Override public String appRefundCallback(HttpServletRequest request) { @@ -419,7 +423,11 @@ public class MerchantServiceImpl implements MerchantService { result = ryxPayService.tradePay(order, channel,merchant); } else if (channel.getChannel() == 4) { result = ysPayOldService.tradePay(order, channel,merchant); - } else { + }else if(channel.getChannel()==5){ + //拉卡拉的主扫接口 + result=lklPayService.tradePay(order,channel,merchant); + } + else { MsgException.throwException("未知通道"); } if (ResultCode.SUCCESS.code() != result.getInteger("code")) { @@ -1394,7 +1402,11 @@ public class MerchantServiceImpl implements MerchantService { unionInfo = ryxPayService.getUnionInfo(userAuthCode,payMentApp,channel.getMerchantId()); }else if(channel.getChannel() == 4){ unionInfo = ysPayOldService.getUnionInfo(userAuthCode, payMentApp,null); - }else { + }else if(channel.getChannel()==5){ + //拉卡拉的被扫接口 + } + + else { view.addObject("error", "未知通道类型"); return view; } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/sxf/audit/LklMerAuditServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/sxf/audit/LklMerAuditServiceImpl.java new file mode 100644 index 0000000..08c0b7b --- /dev/null +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/sxf/audit/LklMerAuditServiceImpl.java @@ -0,0 +1,57 @@ +package cn.pluss.platform.sxf.audit; + +import cn.hutool.json.JSONUtil; +import cn.pluss.platform.klk.LaKaLaUtility; +import cn.pluss.platform.klk.LakalaConfig; +import cn.pluss.platform.task.LklMerAuditHandler; +import cn.pluss.platform.task.SxfMerAuditHandler; +import com.alibaba.fastjson.JSONArray; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Map; + +@Slf4j +@Service +public class LklMerAuditServiceImpl { + + + + @Lazy + @Autowired + private LklMerAuditHandler lklMerAuditHandler; + + @Lazy + @Autowired + private LakalaConfig lakalaConfig; + + + public String merchantAuditCallback(Map map){ + + + log.info("拉卡拉进件回调:{}", JSONUtil.toJsonStr(map)); + try { + String data = LaKaLaUtility.decrypt(lakalaConfig.getPubKey(),map.get("data").toString()); + Map arryMap = (Map) JSONArray.parse(data); + // 异步处理 + lklMerAuditHandler.auditHandler(arryMap); + return "{\n" + + "\t\"code\": \"SUCCESS\",\n" + + "\t\"msg\": \"成功\"\n" + + "}"; + } catch (Exception e) { + log.error("入驻回调异步任务启动失败!"); + e.printStackTrace(); + } + + return "{\n" + + "\t\"code\": \"FAIL\",\n" + + "\t\"msg\": \"失败\"\n" + + "}"; + } +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/task/LklMerAuditHandler.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/task/LklMerAuditHandler.java new file mode 100644 index 0000000..865ece9 --- /dev/null +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/task/LklMerAuditHandler.java @@ -0,0 +1,217 @@ +package cn.pluss.platform.task; + +import cn.hutool.core.util.ObjectUtil; +import cn.pluss.platform.MerchantAuditRecordService; +import cn.pluss.platform.entity.*; +import cn.pluss.platform.exception.MsgException; +import cn.pluss.platform.mapper.*; +import cn.pluss.platform.merchant.MerchantBaseInfoService; +import cn.pluss.platform.merchant.MerchantCashPlaceService; +import cn.pluss.platform.util.IpUtils; +import cn.pluss.platform.util.LogExceptionUtils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Date; +import java.util.Map; + +@Slf4j +@Component +@RequiredArgsConstructor +public class LklMerAuditHandler{ + + + @Setter(onMethod_ = {@Lazy, @Autowired}) + private MerchantChannelStatusMapper mcsMapper; + + @Setter(onMethod_ = {@Lazy, @Autowired}) + private MerchantBackLklMapper backLklMapper; + + + @Autowired + @Lazy + private LklMerAuditHandler self; + + + @Setter(onMethod_ = {@Lazy, @Autowired}) + private MerchantBaseInfoService merchantBaseInfoService; + + + + @Setter(onMethod_ = {@Autowired, @Lazy}) + private MerchantCashPlaceService cashPlaceService; + + + @Setter(onMethod_ = {@Autowired}) + private MerchantAuditRecordService merchantAuditRecordService; + + + + private final UserAppMapper userAppMapper; + private final UserInfoMapper userInfoMapper; + private final MerchantStoreMapper merchantStoreMapper; + private final MerchantImageMapper merchantImageMapper; + + private final RestTemplate restTemplate; + + + public void auditHandler(Map map) { + execute(map); + } + + + public void execute(Map map) { + + if(ObjectUtil.isEmpty(map)||!map.containsKey("status")){ + log.error("回调数据为空"); + return; + } + + if("SUCCESS".equals(map.get("status").toString())||"REVIEW_PASS".equals(map.get("status").toString())){ + + MerchantChannelStatus mcs = self.auditCallback(map); + + + try { + log.info("===================>进件回调,创建店铺开始,商户编号mno为:{}<=====================", map.get("customerNo").toString()); + self.createStore(mcs); + } catch (Exception e) { + e.printStackTrace(); + log.info("创建店铺信息异常,异常信息:{}", e.getMessage()); + } + + try { + MerchantBaseInfo merchantBaseInfo = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(mcs.getMerchantCode()); + if (StringUtils.isNotBlank(merchantBaseInfo.getUserId())) { + cashPlaceService.createDefaultCashPlace(Long.parseLong(merchantBaseInfo.getUserId())); + } + } catch (Exception e) { + LogExceptionUtils.printStack(log, e, "创建默认收银点失败,异常信息:{}"); + } + } + + } + + + + + + + @Transactional(rollbackFor = Exception.class) + public MerchantChannelStatus auditCallback(Map map) { + MerchantChannelStatus merchantChannelStatus = new MerchantChannelStatus() + .setChannel(5) + .setMerchantId(map.get("customerNo").toString()); + merchantChannelStatus = mcsMapper.selectOne(new QueryWrapper<>(merchantChannelStatus)); + + if(merchantChannelStatus.getStatus().equals("3")){ + log.error("此商户已经审核完成"); + return merchantChannelStatus; + } + + merchantChannelStatus.setApplicationId(map.get("contractId").toString()); + merchantChannelStatus.setStatus("3"); + merchantChannelStatus.setExtra(JSONObject.parseObject("{\n" + + "\t\"code\": \"SUCCESS\",\n" + + "\t\"msg\": \"成功\"\n" + + "}")); + merchantChannelStatus.setUpdateTime(new Date()); + + + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("merchant_code",merchantChannelStatus.getMerchantCode()); + queryWrapper.eq("merchant_id",map.get("customerNo").toString()); + queryWrapper.eq("channel","5"); + queryWrapper.eq("user_no",map.get("userNo").toString()); + + MerchantBackLkl merchantBackLkl= backLklMapper.selectOne(queryWrapper); + if(ObjectUtil.isEmpty(merchantBackLkl)){ + merchantBackLkl=new MerchantBackLkl(); + merchantBackLkl.setMerchantCode(merchantChannelStatus.getMerchantCode()); + merchantBackLkl.setMerchantId(map.get("customerNo").toString()); + merchantBackLkl.setChannel("5"); + merchantBackLkl.setUserNo(map.get("userNo").toString()); + merchantBackLkl.setCustomerNo(map.get("customerNo").toString()); + merchantBackLkl.setExternalCustomerNo(map.get("externalCustomerNo").toString()); + merchantBackLkl.setTermNos(map.get("termNos").toString()); + merchantBackLkl.setAgencyNo(map.get("agencyNo").toString()); + merchantBackLkl.setActiveNo(map.get("activeNo").toString()); + merchantBackLkl.setContractId(map.get("contractId").toString()); + merchantBackLkl.setCoreTermIds(map.get("coreTermIds").toString()); + merchantBackLkl.setCreateTime(new Date()); + backLklMapper.insert(merchantBackLkl); + } + MerchantAuditRecord lastRecord = merchantAuditRecordService.getLastRecord(merchantChannelStatus.getMerchantCode()); + if (lastRecord != null) { + lastRecord.setStatus(merchantChannelStatus.getStatus()); + lastRecord.setThirdStatus("1"); + lastRecord.setRemark("成功"); + merchantAuditRecordService.updateById(lastRecord); + mcsMapper.updateById(merchantChannelStatus); + } + + return merchantChannelStatus; + } + + + + + public void createStore(MerchantChannelStatus merchantChannelStatus) { +// if (!"4".equals(merchantChannelStatus.getStatus()) && !"3".equals(merchantChannelStatus.getStatus())) { +// return; +// } + UserApp userApp = userAppMapper.selectByMerchantCode(merchantChannelStatus.getMerchantCode()); + UserInfo userInfo = userInfoMapper.selectById(userApp.getUserId()); + log.info("==============>当前需要同步的用户进件数据为::{}<===================", JSONObject.toJSONString(merchantChannelStatus)); + if (userInfo != null) { + MerchantStore merchantStore = new MerchantStore().setMerchantCode(merchantChannelStatus.getMerchantCode()); + merchantStore = merchantStoreMapper.selectOne(new QueryWrapper<>(merchantStore)); + MerchantBaseInfo merchantBaseInfo = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(merchantChannelStatus.getMerchantCode()); + QueryWrapper queryWrapper = new QueryWrapper() + .eq("merchantCode", merchantChannelStatus.getMerchantCode()).eq("photoType", "06"); + MerchantImage merchantImage = merchantImageMapper.selectOne(queryWrapper); + //String baseUrl = "https://life.sxczgkj.cn/web/wmerchant.php?c=site&a=entry&ctrl=store&ac=oauth&op=add_merchan&do=web&m=we7_wmall&i=1"; + String baseUrl = "https://kysh.sxczgkj.cn/javaApi/java-api/add-store"; + StringBuilder sb = new StringBuilder(baseUrl); + sb.append("?title=").append(merchantBaseInfo.getAlias()); + sb.append("&password=").append(userInfo.getPassword().toLowerCase()); + sb.append("&mobile=").append(userInfo.getLoginName()); + sb.append("&syb_m_id=").append(merchantStore.getId()); + sb.append("&addressNo=").append(merchantBaseInfo.getAddressNo()); + String address = merchantBaseInfo.getProvince() + merchantBaseInfo.getCity() + merchantBaseInfo.getDistrict() + merchantBaseInfo.getAddress(); + String area = merchantBaseInfo.getProvince() +"-"+ merchantBaseInfo.getCity() +"-"+ merchantBaseInfo.getDistrict(); + try { + String decodeAddress = URLEncoder.encode(address, "UTF-8"); + sb.append("&address=").append(decodeAddress); + String decodeArea = URLEncoder.encode(area, "UTF-8"); + sb.append("&area=").append(decodeArea); + String logo = URLEncoder.encode(merchantImage.getPicUrl(), "GBK"); + sb.append("&logo=").append(logo); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + log.error("=============>请求生成店铺logo门头照转码异常,异常信息:{}<===============", e.getMessage()); + } + Map lnxMap = IpUtils.getLocationByAddress(address); + if (lnxMap != null) { + sb.append("&location_x=").append(lnxMap.get("x")); + sb.append("&location_y=").append(lnxMap.get("y")); + } + // 请求生成店铺j + String result = restTemplate.getForObject(sb.toString(), String.class); + log.info("=============>请求生成店铺URL:{},请求响应返回的参数为:{}<===============", sb.toString(), result); + } + } + + +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/userApp/impl/UserAppServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/userApp/impl/UserAppServiceImpl.java index bd32167..36e3dc0 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/userApp/impl/UserAppServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/userApp/impl/UserAppServiceImpl.java @@ -806,6 +806,7 @@ public class UserAppServiceImpl extends ServiceImpl impl break; case "5": laKalaInterface.createTuoKeInfo(userId); + break; default: MsgException.throwException("未知的进件通道"); }