5 Commits

20 changed files with 365 additions and 8 deletions
Unified View
  1. +9
    -0
      .gitignore
  2. +25
    -0
      apiclient_cert.pem
  3. +28
    -0
      apiclient_key.pem
  4. +1
    -1
      han-hai-module-pay/pom.xml
  5. +1
    -0
      han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java
  6. +1
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  7. +2
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java
  8. +2
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelorder/entity/HotelOrder.java
  9. +11
    -0
      jeecg-boot-module-system/pom.xml
  10. +6
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/controller/OrderController.java
  11. +13
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/req/QueryLogisticsReq.java
  12. +7
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/service/IOrderService.java
  13. +113
    -4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/service/impl/OrderServiceImpl.java
  14. +55
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/user/service/impl/LoginServiceImpl.java
  15. +25
    -0
      jeecg-boot-module-system/src/main/resources/apiclient_cert.pem
  16. +28
    -0
      jeecg-boot-module-system/src/main/resources/apiclient_key.pem
  17. BIN
      jeecg-boot-module-system/src/main/resources/appkey-251828_EXTERNAL_18806.jar
  18. +13
    -1
      jeecg-boot-module-system/src/main/resources/application-dev.yml
  19. +7
    -1
      jeecg-boot-module-system/src/main/resources/application-prod.yml
  20. +18
    -1
      pom.xml

+ 9
- 0
.gitignore View File

@ -6,3 +6,12 @@
/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/target /jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/target
/jeecg-boot-base/jeecg-boot-base-tools/target /jeecg-boot-base/jeecg-boot-base-tools/target
/jeecg-boot-base/jeecg-boot-base-core/target /jeecg-boot-base/jeecg-boot-base-core/target
/jeecg-boot-base/jeecg-boot-base-core/jeecg-boot-base-core.iml
/jeecg-boot-base/jeecg-boot-base.iml
/jeecg-boot-base/jeecg-boot-base-api/jeecg-boot-base-api.iml
/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/jeecg-system-local-api.iml
/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/jeecg-system-cloud-api.iml
/han-hai-module-pay/han-hai-module-pay.iml
/jeecg-boot-module-system/jeecg-boot-module-system.iml
/han-hai-parent.iml
/jeecg-boot-base/jeecg-boot-base-tools/jeecg-boot-base-tools.iml

+ 25
- 0
apiclient_cert.pem View File

@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKDCCAxCgAwIBAgIUYXdntfZ5Cqhe7e0o+CWZqvSDD7kwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjQwOTEzMDY1MDQ4WhcNMjkwOTEyMDY1MDQ4WjCBgTETMBEGA1UEAwwK
MTY4NDQyNDUxMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL
DCToi4/lt57opb/lupzmtbfloILmlofljJbmnInpmZDlhazlj7gxCzAJBgNVBAYT
AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALW3RohSRxiR9k55zUofNsC7fRBeZXlum+B74FbpX1Rn72RAPj412/Rw
rop9ia3G4YHYYiyZAQTtB3+tM8xFN3qBZaAPOa9oyQBATsebNaUec7JBXp7GGeKB
wHA4oqtAkHfEcmFWVQJ8OK7z3ucU7Q6wYrQeyCurCBHCij/8GyQx0mgUCMBIY1Ug
Lg3AymsJf2oedb3E/ra23JMJUdVRH+QnJMjmR1TmFQDWOsAqV/0uAcZdH4k01Oom
rpzl0Dyfloj4OouYGBUZZ7XjtSU51R5QFMJ6xq5RtspGZrc6Ahw656pGu1yiYcb4
g4jCSB6WPNbGb9b81KQsLMPvp/hiybECAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG
A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu
aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC
MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB
OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQBGZ5Lt
rBS/huNKgH+bhjRd/aKc6h0SWGN8Jq7rcb6aMeddAELnbxhoqGTnJVEBf4jrK//Z
kz/Ij1pkdqTl8+OpMpsUk8Tm4/tDaa/vPPEYKsizr3jbOwVeEkBXwngZMylojg/7
FXeCG1sXB/uiSbPuja6EY3ZXf89NamYNxUB11NmNuSLfoSd9wHvLR76plbKVjP0T
3ZzWFRvBpcmcpoeYpE6MPmkmDV/7W1VZWVmvcEf2q07XsQcnW8DynKCOWehtOsxt
+S8jCQO63a19CjcpLZg2FXqt5AfRrDjsm5dbtOnzLSX6sO0NbHTYN4mq+S+zW1nU
51HRrqd1EVmm0x0t
-----END CERTIFICATE-----

+ 28
- 0
apiclient_key.pem View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1t0aIUkcYkfZO
ec1KHzbAu30QXmV5bpvge+BW6V9UZ+9kQD4+Ndv0cK6KfYmtxuGB2GIsmQEE7Qd/
rTPMRTd6gWWgDzmvaMkAQE7HmzWlHnOyQV6exhnigcBwOKKrQJB3xHJhVlUCfDiu
897nFO0OsGK0HsgrqwgRwoo//BskMdJoFAjASGNVIC4NwMprCX9qHnW9xP62ttyT
CVHVUR/kJyTI5kdU5hUA1jrAKlf9LgHGXR+JNNTqJq6c5dA8n5aI+DqLmBgVGWe1
47UlOdUeUBTCesauUbbKRma3OgIcOueqRrtcomHG+IOIwkgeljzWxm/W/NSkLCzD
76f4YsmxAgMBAAECggEAYx8/TTs8Zu2v4qzUS7ttHYLoPJaRWcT5KGHKRP52Ls+n
KRNWII82lUcmHotOH8nd1vtWyicIBEzbi0zKdYHIOn39FmtXtxQ8mHN7xawnfhN3
XuQDni5HjmPiuhRav3mvlHVHQ0tZgcqLDPwgOgMTMLEMll44KIHaG/33deGqWHod
drhJMr6Or6cLKKj2vIofyMho4aimYg9nQK+lcG2m/VAbqV4+UpaWrNchCePXll6Y
wjsxgySy1xqgdf58lKRna5auOhXoZzQzJC7ryYv8t+gvkOvgmOXyFT1c6GIjLB4y
4nvx9NArVD6QznNZJGXKsX7Zdm4xxSpKVT9yK/95MQKBgQDeZd4Ikhn/9kxuvfPF
OXlf/Q9NhPWjD/WtCEUzVv9U5kfI6sg3G57jTdz8WJ3FLVgUpaaGBQ/O+oslrvox
zq8oOMmdPYuvifa+6gOCclvBqPAZv1gw41U2rbq2hcILbAJzq1NrxV4MQnfpxSYt
JldZcZnMTC9my2LMRwXsjEl51QKBgQDRK95V+gHzackUJpLpq41iijmICT/t45iq
k0KCtFlQ8kOFP3VHpsG3twOKzjQWmE7A6rDUZ/qO72sDyXFC3+hAp4vJv3p2f+Nj
nGBLgE4Udjh6Ed6NMbF3mlVSEgKEwvVTVFqtZvjTuIVZGYxeSQl3XJlFqLHxjqe1
lCb0vG1CbQKBgQCZ2msCDuDBvIgfzHUJqbsX9p9Rh3vPNMlGzQPignrdJvneOt4L
kaYXpdQNFtj+gWH/1qEe8f1/uL/ub+BR+KQf9Tk0+FDcPVtfs9B9u9NSZCbGCSNf
nsVisEkM3/ffovcHQizRz5ZCcPE33dWNQosHK5m0Rbg9KtLMcw3cGSjziQKBgQCM
IFdSQaoM51FNrom9ALA202K3P3sUYuRjYUOtTCSJlcKmAV0QIyajbHdzBbDfcilQ
E+liYkX4e2u1nb3Cjz2IErYS8bOYrxQmJxxbeBjWnFw5ar8s152MAlgmIuqNBg5T
RK96ewE21OaASh0/DK7Kx73mbJzItkij3Bw81/5aAQKBgEXIWU8JXsVb/naJlDKG
Mdd1UEap/j+bOJfQZ0utRNuc6miLAXLKAPL+4JtuMCpPnO4bVp2QxHyRNMI50Cim
FtjlSNSCUd3WZTIYcETrOgTvmvZeE17X82OgIZO9lbqfyfbFFmkyUjaSVv62D2RQ
W/oRI9HmkJJQ/7oXFRex8Dfi
-----END PRIVATE KEY-----

+ 1
- 1
han-hai-module-pay/pom.xml View File

@ -11,7 +11,7 @@
<artifactId>han-hai-module-pay</artifactId> <artifactId>han-hai-module-pay</artifactId>
<properties> <properties>
<weixin.version>3.5.0</weixin.version>
<weixin.version>3.7.3.B</weixin.version>
</properties> </properties>
<dependencies> <dependencies>


+ 1
- 0
han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java View File

@ -101,6 +101,7 @@ public class MpWxPayService {
request.setNotifyUrl(notifyUrl);//设置回调路径 request.setNotifyUrl(notifyUrl);//设置回调路径
// request.setNotifyUrl("http://dev.java996.icu/hotel/order/notify");//设置回调路径 // request.setNotifyUrl("http://dev.java996.icu/hotel/order/notify");//设置回调路径
request.setProductId(productId); //商品id request.setProductId(productId); //商品id
request.setProfitSharing("Y");
request.setOpenid(openId); //JSAPI OPENID request.setOpenid(openId); //JSAPI OPENID
if (dev){ if (dev){
request.setTotalFee(price); request.setTotalFee(price);


+ 1
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java View File

@ -72,6 +72,7 @@ public class ShiroConfig {
} }
} }
filterChainDefinitionMap.put("/order/query/logistics", "anon");//分类接口
filterChainDefinitionMap.put("/conf/one", "anon");//分类接口 filterChainDefinitionMap.put("/conf/one", "anon");//分类接口
filterChainDefinitionMap.put("/category/list", "anon");//分类接口 filterChainDefinitionMap.put("/category/list", "anon");//分类接口
filterChainDefinitionMap.put("/goods/page", "anon");//商品分页接口 filterChainDefinitionMap.put("/goods/page", "anon");//商品分页接口


+ 2
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java View File

@ -207,5 +207,7 @@ public class HanHaiMember implements Serializable {
private HotelMemberAccount wallet; private HotelMemberAccount wallet;
@TableField(exist = false) @TableField(exist = false)
private HotelShop shop; private HotelShop shop;
/**分账接收方 0否 1是*/
private Integer receiverFlag;
} }

+ 2
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelorder/entity/HotelOrder.java View File

@ -205,5 +205,7 @@ public class HotelOrder implements Serializable {
private String logisticsNameTwo; private String logisticsNameTwo;
/**物流单号*/ /**物流单号*/
private String logisticsCodeTwo; private String logisticsCodeTwo;
/**微信订单号*/
private String transactionId;
} }

+ 11
- 0
jeecg-boot-module-system/pom.xml View File

@ -74,6 +74,17 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
<version>${wechatpay-java.version}</version>
</dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-apache-httpclient</artifactId>
<version>${wechatpay-apache-httpclientd.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>


+ 6
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/controller/OrderController.java View File

@ -160,4 +160,10 @@ public class OrderController {
} }
@ApiOperation(value = "查询物流")
@PostMapping("/query/logistics")
public Result<?> queryLogistics(QueryLogisticsReq queryLogisticsReq){
return orderService.queryLogistics(queryLogisticsReq);
}
} }

+ 13
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/req/QueryLogisticsReq.java View File

@ -0,0 +1,13 @@
package org.jeecg.modules.xcx.order.req;
import lombok.Data;
@Data
public class QueryLogisticsReq {
private String token;
private String id;
}

+ 7
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/service/IOrderService.java View File

@ -204,4 +204,11 @@ public interface IOrderService {
* @return * @return
*/ */
Result<?> editLeaseNum(EditLeaseNumReq editLeaseNumReq); Result<?> editLeaseNum(EditLeaseNumReq editLeaseNumReq);
/**
* 查询物流
* @param queryLogisticsReq
* @return
*/
Result<?> queryLogistics(QueryLogisticsReq queryLogisticsReq);
} }

+ 113
- 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/service/impl/OrderServiceImpl.java View File

@ -8,7 +8,31 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cainiao.link.consumer.LinkClient;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.constant.WxPayErrorCode;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_LOGISTICS_DETAIL.GuoguoQueryLogisticsDetailRequest;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_LOGISTICS_DETAIL.LogisticsDetailOption;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_LOGISTICS_DETAIL.LogisticsDetailRequest;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.AccessOption;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.GuoguoCancelSendOrderRequest;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.QueryOrderConditionDTO;
import com.taobao.pac.sdk.cp.dataobject.response.GUOGUO_QUERY_LOGISTICS_DETAIL.GuoguoQueryLogisticsDetailResponse;
import com.taobao.pac.sdk.cp.dataobject.response.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.GuoguoCreateSendOrderResponse;
import com.taobao.pac.sdk.cp.dataobject.response.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.LogisticsDetailDTO;
import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiService;
import com.wechat.pay.java.service.payments.nativepay.NativePayService;
import com.wechat.pay.java.service.payments.nativepay.model.Amount;
import com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest;
import com.wechat.pay.java.service.profitsharing.ProfitsharingService;
import com.wechat.pay.java.service.profitsharing.model.CreateOrderReceiver;
import com.wechat.pay.java.service.profitsharing.model.CreateOrderRequest;
import io.swagger.models.auth.In; import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -65,7 +89,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.security.PrivateKey;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
@ -100,6 +126,26 @@ public class OrderServiceImpl implements IOrderService {
private String orderNotifyUrl; private String orderNotifyUrl;
@Value("${weixin.replaceOrderNotifyUrl}") @Value("${weixin.replaceOrderNotifyUrl}")
private String replaceOrderNotifyUrl; private String replaceOrderNotifyUrl;
@Value("${weixin.mchId}")
private String mchId;
@Value("${weixin.mpAppId}")
private String mpAppId;
@Value("${weixin.mchKey}")
private String mchKey;
@Value("${weixin.keyPemPath}")
private String keyPemPath;
@Value("${weixin.serialNo}")
private String serialNo;
@Value("${weixin.apiV3Key}")
private String apiV3Key;
@Value("${cainiao.appKey}")
private String appKey;
@Value("${cainiao.appSecret}")
private String appSecret;
@Value("${cainiao.accountId}")
private String accountId;
@Value("${cainiao.accessCode}")
private String accessCode;
@Resource @Resource
private IHotelOrderLogService hotelOrderLogService; private IHotelOrderLogService hotelOrderLogService;
@Resource @Resource
@ -122,6 +168,9 @@ public class OrderServiceImpl implements IOrderService {
private ISysUserRoleService sysUserRoleService; private ISysUserRoleService sysUserRoleService;
@Resource @Resource
private ISysUserService sysUserService; private ISysUserService sysUserService;
private ProfitsharingService profitsharingService;
private JsapiService jsapiService;
@ -1599,6 +1648,7 @@ public class OrderServiceImpl implements IOrderService {
BigDecimal multiply = hotelOrderLog.getOrderPay(); BigDecimal multiply = hotelOrderLog.getOrderPay();
multiply = multiply.multiply(new BigDecimal(100)); multiply = multiply.multiply(new BigDecimal(100));
Object order = mpWxPayService.createOrder("酒店桌布", oConvertUtils.getIpAddrByRequest(req), hotelOrderLog.getId(), multiply.intValue(), orderNo, hanHaiMember.getAppletOpenid(),orderNotifyUrl,"{}"); Object order = mpWxPayService.createOrder("酒店桌布", oConvertUtils.getIpAddrByRequest(req), hotelOrderLog.getId(), multiply.intValue(), orderNo, hanHaiMember.getAppletOpenid(),orderNotifyUrl,"{}");
HotelOrderLog hotelOrderLog1 = new HotelOrderLog(); HotelOrderLog hotelOrderLog1 = new HotelOrderLog();
@ -2636,6 +2686,7 @@ public class OrderServiceImpl implements IOrderService {
//修改订单状态 //修改订单状态
HotelOrder hotelOrder1 = new HotelOrder(); HotelOrder hotelOrder1 = new HotelOrder();
hotelOrder1.setId(hotelOrder.getId()); hotelOrder1.setId(hotelOrder.getId());
hotelOrder1.setTransactionId(notify.getTransactionId());
if(hotelOrder.getType() == 0){ if(hotelOrder.getType() == 0){
hotelOrder1.setStatus(1); hotelOrder1.setStatus(1);
}else if(hotelOrder.getType() == 1){ }else if(hotelOrder.getType() == 1){
@ -3122,6 +3173,10 @@ public class OrderServiceImpl implements IOrderService {
.eq(HotelMemberAccount::getUserId, hotelShop.getUserId()) .eq(HotelMemberAccount::getUserId, hotelShop.getUserId())
.one(); .one();
HanHaiMember hanHaiMember1 = hanHaiMemberService.lambdaQuery()
.eq(HanHaiMember::getId, hotelShop.getUserId())
.one();
BigDecimal platformServiceRate = new BigDecimal(hotelConfService.getConf("platformServiceRate")); BigDecimal platformServiceRate = new BigDecimal(hotelConfService.getConf("platformServiceRate"));
BigDecimal platformServicePrice = hotelOrder.getOrderPay().multiply(platformServiceRate); BigDecimal platformServicePrice = hotelOrder.getOrderPay().multiply(platformServiceRate);
@ -3129,10 +3184,11 @@ public class OrderServiceImpl implements IOrderService {
BigDecimal price = hotelMemberAccount.getShopBalance().add(shopPrice); BigDecimal price = hotelMemberAccount.getShopBalance().add(shopPrice);
HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount();
hotelMemberAccount1.setId(hotelMemberAccount.getId());
hotelMemberAccount1.setShopBalance(price);
hotelMemberAccountService.updateById(hotelMemberAccount1);
// HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount();
// hotelMemberAccount1.setId(hotelMemberAccount.getId());
// hotelMemberAccount1.setShopBalance(price);
// hotelMemberAccountService.updateById(hotelMemberAccount1);
HotelBalanceLog hotelBalanceLog = new HotelBalanceLog(); HotelBalanceLog hotelBalanceLog = new HotelBalanceLog();
@ -3151,6 +3207,37 @@ public class OrderServiceImpl implements IOrderService {
hotelOrder1.setStatus(15); hotelOrder1.setStatus(15);
hotelOrderService.updateById(hotelOrder1); hotelOrderService.updateById(hotelOrder1);
//微信分账代码
// 初始化商户配置
Config config =
new RSAAutoCertificateConfig.Builder()
.merchantId(mchId)
// 使用 com.wechat.pay.java.core.util 中的函数从本地文件中加载商户私钥商户私钥会用来生成请求的签名
.privateKeyFromPath(keyPemPath)
.merchantSerialNumber(serialNo)
.apiV3Key(apiV3Key)
.build();
profitsharingService = new ProfitsharingService.Builder().config(config).build();
CreateOrderRequest createOrderRequest = new CreateOrderRequest();
// createOrderRequest.setSubMchid(mchId);
createOrderRequest.setAppid(mpAppId);
createOrderRequest.setTransactionId(hotelOrder.getTransactionId());
createOrderRequest.setOutOrderNo(hotelBalanceLog.getId());
createOrderRequest.setUnfreezeUnsplit(true);
List<CreateOrderReceiver> createOrderReceivers = new ArrayList<>();
CreateOrderReceiver createOrderReceiver = new CreateOrderReceiver();
createOrderReceiver.setType("PERSONAL_OPENID");
createOrderReceiver.setAccount(hanHaiMember1.getAppletOpenid());
createOrderReceiver.setAmount(shopPrice.longValue()*100);
createOrderReceiver.setDescription("分佣");
createOrderReceivers.add(createOrderReceiver);
createOrderRequest.setReceivers(createOrderReceivers);
profitsharingService.createOrder(createOrderRequest);
for (HotelOrderDetail hotelOrderDetail:hotelOrderDetails){ for (HotelOrderDetail hotelOrderDetail:hotelOrderDetails){
// //
HotelLeaseLog hotelLeaseLog = hotelLeaseLogService.lambdaQuery() HotelLeaseLog hotelLeaseLog = hotelLeaseLogService.lambdaQuery()
@ -3604,6 +3691,7 @@ public class OrderServiceImpl implements IOrderService {
HotelOrder hotelOrder2 = new HotelOrder(); HotelOrder hotelOrder2 = new HotelOrder();
hotelOrder2.setId(hotelOrder.getId()); hotelOrder2.setId(hotelOrder.getId());
hotelOrder2.setTransactionId(notify.getTransactionId());
hotelOrder2.setStatus(15); hotelOrder2.setStatus(15);
hotelOrderService.updateById(hotelOrder2); hotelOrderService.updateById(hotelOrder2);
@ -3701,6 +3789,27 @@ public class OrderServiceImpl implements IOrderService {
return Result.OK(); return Result.OK();
} }
@Override
public Result<?> queryLogistics(QueryLogisticsReq queryLogisticsReq) {
//通过 LinkClient Builder 构造一个 LinkClient
com.cainiao.link.consumer.LinkClient linkClient = LinkClient.builder(appKey, appSecret).build();
GuoguoQueryLogisticsDetailRequest request = new GuoguoQueryLogisticsDetailRequest();
LogisticsDetailRequest logisticsDetailRequest = new LogisticsDetailRequest();
logisticsDetailRequest.setTdOrderId(15592780860652417L);
LogisticsDetailOption logisticsDetailOption = new LogisticsDetailOption();
logisticsDetailOption.setAccessCode(accessCode);
logisticsDetailOption.setAccessMethod("LINK");
request.setRequest(logisticsDetailRequest);
request.setOption(logisticsDetailOption);
GuoguoQueryLogisticsDetailResponse response = linkClient.execute(request, accountId, accessCode);
log.info("包裹返回信息:"+response.toString());
return null;
}
public Object testPay(String id){ public Object testPay(String id){
HotelOrder hotelOrder = hotelOrderService.lambdaQuery() HotelOrder hotelOrder = hotelOrderService.lambdaQuery()
.eq(HotelOrder::getDelFlag, 0) .eq(HotelOrder::getDelFlag, 0)


+ 55
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/user/service/impl/LoginServiceImpl.java View File

@ -1,6 +1,13 @@
package org.jeecg.modules.xcx.user.service.impl; package org.jeecg.modules.xcx.user.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.service.profitsharing.ProfitsharingService;
import com.wechat.pay.java.service.profitsharing.model.AddReceiverRequest;
import com.wechat.pay.java.service.profitsharing.model.AddReceiverResponse;
import com.wechat.pay.java.service.profitsharing.model.ReceiverRelationType;
import com.wechat.pay.java.service.profitsharing.model.ReceiverType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
@ -56,12 +63,23 @@ public class LoginServiceImpl implements ILoginService {
*/ */
@Value("${weixin.mpAppSecret}") @Value("${weixin.mpAppSecret}")
private String mpAppSecret; private String mpAppSecret;
@Value("${weixin.mchId}")
private String mchId;
@Value("${weixin.mchKey}")
private String mchKey;
@Value("${weixin.keyPemPath}")
private String keyPemPath;
@Value("${weixin.serialNo}")
private String serialNo;
@Value("${weixin.apiV3Key}")
private String apiV3Key;
@Resource @Resource
private IHanHaiMemberService memberService; private IHanHaiMemberService memberService;
@Resource @Resource
private IHotelMemberAccountService hotelMemberAccountService; private IHotelMemberAccountService hotelMemberAccountService;
@Resource @Resource
private IHotelShopService hotelShopService; private IHotelShopService hotelShopService;
private ProfitsharingService profitsharingService;
/** /**
@ -105,6 +123,10 @@ public class LoginServiceImpl implements ILoginService {
member.setNickName(loginReq.getNickName()); member.setNickName(loginReq.getNickName());
member.setHeadImage(loginReq.getHeadimgurl()); member.setHeadImage(loginReq.getHeadimgurl());
member.setShopId(hotelShop.getId()); member.setShopId(hotelShop.getId());
Integer integer = this.addReceivers(wxOpenid);
member.setReceiverFlag(integer);
// 生成token返回给小程序端 // 生成token返回给小程序端
String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid); String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid);
memberService.save(member); memberService.save(member);
@ -124,6 +146,13 @@ public class LoginServiceImpl implements ILoginService {
// member.setHeadImage(loginReq.getHeadimgurl()); // member.setHeadImage(loginReq.getHeadimgurl());
// member.setSessionKey(sessionKey); // member.setSessionKey(sessionKey);
// memberService.saveOrUpdate(member); // memberService.saveOrUpdate(member);
if(member.getReceiverFlag() == 0){
HanHaiMember hanHaiMember = new HanHaiMember();
hanHaiMember.setId(member.getId());
Integer integer = this.addReceivers(wxOpenid);
hanHaiMember.setReceiverFlag(integer);
hanHaiMemberService.updateById(hanHaiMember);
}
// 生成token返回给小程序端 // 生成token返回给小程序端
String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid); String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid);
redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
@ -185,4 +214,30 @@ public class LoginServiceImpl implements ILoginService {
return result; return result;
} }
public Integer addReceivers(String openid){
// 初始化商户配置
Config config =
new RSAAutoCertificateConfig.Builder()
.merchantId(mchId)
// 使用 com.wechat.pay.java.core.util 中的函数从本地文件中加载商户私钥商户私钥会用来生成请求的签名
.privateKeyFromPath(keyPemPath)
.merchantSerialNumber(serialNo)
.apiV3Key(apiV3Key)
.build();
profitsharingService = new ProfitsharingService.Builder().config(config).build();
AddReceiverRequest addReceiverRequest = new AddReceiverRequest();
addReceiverRequest.setAppid(mpAppId);
addReceiverRequest.setType(ReceiverType.PERSONAL_OPENID);
addReceiverRequest.setAccount(openid);
addReceiverRequest.setRelationType(ReceiverRelationType.USER);
AddReceiverResponse addReceiverResponse = profitsharingService.addReceiver(addReceiverRequest);
if(addReceiverResponse!=null){
return 1;
}
return 0;
}
} }

+ 25
- 0
jeecg-boot-module-system/src/main/resources/apiclient_cert.pem View File

@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKDCCAxCgAwIBAgIUYXdntfZ5Cqhe7e0o+CWZqvSDD7kwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjQwOTEzMDY1MDQ4WhcNMjkwOTEyMDY1MDQ4WjCBgTETMBEGA1UEAwwK
MTY4NDQyNDUxMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL
DCToi4/lt57opb/lupzmtbfloILmlofljJbmnInpmZDlhazlj7gxCzAJBgNVBAYT
AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALW3RohSRxiR9k55zUofNsC7fRBeZXlum+B74FbpX1Rn72RAPj412/Rw
rop9ia3G4YHYYiyZAQTtB3+tM8xFN3qBZaAPOa9oyQBATsebNaUec7JBXp7GGeKB
wHA4oqtAkHfEcmFWVQJ8OK7z3ucU7Q6wYrQeyCurCBHCij/8GyQx0mgUCMBIY1Ug
Lg3AymsJf2oedb3E/ra23JMJUdVRH+QnJMjmR1TmFQDWOsAqV/0uAcZdH4k01Oom
rpzl0Dyfloj4OouYGBUZZ7XjtSU51R5QFMJ6xq5RtspGZrc6Ahw656pGu1yiYcb4
g4jCSB6WPNbGb9b81KQsLMPvp/hiybECAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG
A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu
aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC
MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB
OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQBGZ5Lt
rBS/huNKgH+bhjRd/aKc6h0SWGN8Jq7rcb6aMeddAELnbxhoqGTnJVEBf4jrK//Z
kz/Ij1pkdqTl8+OpMpsUk8Tm4/tDaa/vPPEYKsizr3jbOwVeEkBXwngZMylojg/7
FXeCG1sXB/uiSbPuja6EY3ZXf89NamYNxUB11NmNuSLfoSd9wHvLR76plbKVjP0T
3ZzWFRvBpcmcpoeYpE6MPmkmDV/7W1VZWVmvcEf2q07XsQcnW8DynKCOWehtOsxt
+S8jCQO63a19CjcpLZg2FXqt5AfRrDjsm5dbtOnzLSX6sO0NbHTYN4mq+S+zW1nU
51HRrqd1EVmm0x0t
-----END CERTIFICATE-----

+ 28
- 0
jeecg-boot-module-system/src/main/resources/apiclient_key.pem View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1t0aIUkcYkfZO
ec1KHzbAu30QXmV5bpvge+BW6V9UZ+9kQD4+Ndv0cK6KfYmtxuGB2GIsmQEE7Qd/
rTPMRTd6gWWgDzmvaMkAQE7HmzWlHnOyQV6exhnigcBwOKKrQJB3xHJhVlUCfDiu
897nFO0OsGK0HsgrqwgRwoo//BskMdJoFAjASGNVIC4NwMprCX9qHnW9xP62ttyT
CVHVUR/kJyTI5kdU5hUA1jrAKlf9LgHGXR+JNNTqJq6c5dA8n5aI+DqLmBgVGWe1
47UlOdUeUBTCesauUbbKRma3OgIcOueqRrtcomHG+IOIwkgeljzWxm/W/NSkLCzD
76f4YsmxAgMBAAECggEAYx8/TTs8Zu2v4qzUS7ttHYLoPJaRWcT5KGHKRP52Ls+n
KRNWII82lUcmHotOH8nd1vtWyicIBEzbi0zKdYHIOn39FmtXtxQ8mHN7xawnfhN3
XuQDni5HjmPiuhRav3mvlHVHQ0tZgcqLDPwgOgMTMLEMll44KIHaG/33deGqWHod
drhJMr6Or6cLKKj2vIofyMho4aimYg9nQK+lcG2m/VAbqV4+UpaWrNchCePXll6Y
wjsxgySy1xqgdf58lKRna5auOhXoZzQzJC7ryYv8t+gvkOvgmOXyFT1c6GIjLB4y
4nvx9NArVD6QznNZJGXKsX7Zdm4xxSpKVT9yK/95MQKBgQDeZd4Ikhn/9kxuvfPF
OXlf/Q9NhPWjD/WtCEUzVv9U5kfI6sg3G57jTdz8WJ3FLVgUpaaGBQ/O+oslrvox
zq8oOMmdPYuvifa+6gOCclvBqPAZv1gw41U2rbq2hcILbAJzq1NrxV4MQnfpxSYt
JldZcZnMTC9my2LMRwXsjEl51QKBgQDRK95V+gHzackUJpLpq41iijmICT/t45iq
k0KCtFlQ8kOFP3VHpsG3twOKzjQWmE7A6rDUZ/qO72sDyXFC3+hAp4vJv3p2f+Nj
nGBLgE4Udjh6Ed6NMbF3mlVSEgKEwvVTVFqtZvjTuIVZGYxeSQl3XJlFqLHxjqe1
lCb0vG1CbQKBgQCZ2msCDuDBvIgfzHUJqbsX9p9Rh3vPNMlGzQPignrdJvneOt4L
kaYXpdQNFtj+gWH/1qEe8f1/uL/ub+BR+KQf9Tk0+FDcPVtfs9B9u9NSZCbGCSNf
nsVisEkM3/ffovcHQizRz5ZCcPE33dWNQosHK5m0Rbg9KtLMcw3cGSjziQKBgQCM
IFdSQaoM51FNrom9ALA202K3P3sUYuRjYUOtTCSJlcKmAV0QIyajbHdzBbDfcilQ
E+liYkX4e2u1nb3Cjz2IErYS8bOYrxQmJxxbeBjWnFw5ar8s152MAlgmIuqNBg5T
RK96ewE21OaASh0/DK7Kx73mbJzItkij3Bw81/5aAQKBgEXIWU8JXsVb/naJlDKG
Mdd1UEap/j+bOJfQZ0utRNuc6miLAXLKAPL+4JtuMCpPnO4bVp2QxHyRNMI50Cim
FtjlSNSCUd3WZTIYcETrOgTvmvZeE17X82OgIZO9lbqfyfbFFmkyUjaSVv62D2RQ
W/oRI9HmkJJQ/7oXFRex8Dfi
-----END PRIVATE KEY-----

BIN
jeecg-boot-module-system/src/main/resources/appkey-251828_EXTERNAL_18806.jar View File


+ 13
- 1
jeecg-boot-module-system/src/main/resources/application-dev.yml View File

@ -334,4 +334,16 @@ weixin:
mpAppId: wxad5b3d20a75974c0 mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1 mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
orderNotifyUrl: http://dev.java996.icu/hotel/order/notify orderNotifyUrl: http://dev.java996.icu/hotel/order/notify
replaceOrderNotifyUrl: http://dev.java996.icu/hotel/order/replace/notify
replaceOrderNotifyUrl: http://dev.java996.icu/hotel/order/replace/notify
mchId: 1684424511
mchKey: 0fdb77429ffdf206c151af76a663041c
serialNo: 617767B5F6790AA85EEDED28F82599AAF4830FB9
apiV3Key: 0fdb77429ffdf206c151af76a663041c
keyPemPath: apiclient_key.pem
cainiao:
appKey: 251828
appSecret: 62Fyi41Yx047wbg7M2sL0SltPM25fsq8
accountId: 2218798171581
accessCode: d53a04398f95bf6ed4984bc444caf696

+ 7
- 1
jeecg-boot-module-system/src/main/resources/application-prod.yml View File

@ -334,4 +334,10 @@ weixin:
mpAppId: wxad5b3d20a75974c0 mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1 mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
orderNotifyUrl: https://admin.buzhoudao.com/hotel/order/notify orderNotifyUrl: https://admin.buzhoudao.com/hotel/order/notify
replaceOrderNotifyUrl: https://admin.buzhoudao.com/hotel/order/replace/notify
replaceOrderNotifyUrl: https://admin.buzhoudao.com/hotel/order/replace/notify
cainiao:
appKey: 251828
appSecret: 62Fyi41Yx047wbg7M2sL0SltPM25fsq8
accountId: 2218798171581
accessCode:

+ 18
- 1
pom.xml View File

@ -59,6 +59,8 @@
<!-- Log4j2爆雷漏洞 --> <!-- Log4j2爆雷漏洞 -->
<log4j2.version>2.17.0</log4j2.version> <log4j2.version>2.17.0</log4j2.version>
<logback.version>1.2.9</logback.version> <logback.version>1.2.9</logback.version>
<wechatpay-java.version>0.2.15</wechatpay-java.version>
<wechatpay-apache-httpclientd.version>0.5.0</wechatpay-apache-httpclientd.version>
</properties> </properties>
<modules> <modules>
@ -322,10 +324,25 @@
</exclusion> </exclusion>
<exclusion> <exclusion>
<artifactId>commons-lang</artifactId> <artifactId>commons-lang</artifactId>
<groupId>commons-lang</groupId>
<groupId>commofwns-lang</groupId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
<version>${wechatpay-java.version}</version>
</dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-apache-httpclient</artifactId>
<version>${wechatpay-apache-httpclientd.version}</version>
</dependency>
<dependency>
<groupId>pac.sdk</groupId>
<artifactId>pac-sdk-cp</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>


Loading…
Cancel
Save