Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
f42c1fca
Commit
f42c1fca
authored
Jan 30, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
预支付接口
parent
d9b574a0
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
666 additions
and
55 deletions
+666
-55
ch-core/src/main/java/com/wwdz/ch/core/api/wxpay/WxPayAutoCertificateConfig.java
...om/wwdz/ch/core/api/wxpay/WxPayAutoCertificateConfig.java
+29
-1
ch-core/src/main/java/com/wwdz/ch/core/api/wxpay/WxPayServiceApi.java
...main/java/com/wwdz/ch/core/api/wxpay/WxPayServiceApi.java
+6
-3
ch-core/src/main/java/com/wwdz/ch/core/util/PriceUtil.java
ch-core/src/main/java/com/wwdz/ch/core/util/PriceUtil.java
+9
-2
ch-core/src/main/resources/apiclient_cert.p12
ch-core/src/main/resources/apiclient_cert.p12
+0
-0
ch-core/src/main/resources/apiclient_cert.pem
ch-core/src/main/resources/apiclient_cert.pem
+25
-0
ch-core/src/main/resources/apiclient_key.pem
ch-core/src/main/resources/apiclient_key.pem
+28
-0
ch-core/src/main/resources/application-dev.yml
ch-core/src/main/resources/application-dev.yml
+5
-5
ch-core/src/main/resources/application-prod.yml
ch-core/src/main/resources/application-prod.yml
+9
-0
ch-dao/src/main/java/com/wwdz/ch/db/domain/distribution/DistributionOrder.java
...com/wwdz/ch/db/domain/distribution/DistributionOrder.java
+29
-3
ch-dao/src/main/java/com/wwdz/ch/db/domain/distribution/DistributionOrderExample.java
...z/ch/db/domain/distribution/DistributionOrderExample.java
+426
-0
ch-dao/src/main/resources/com/wwdz/ch/db/mapper/distribution/DistributionOrderMapper.xml
...wdz/ch/db/mapper/distribution/DistributionOrderMapper.xml
+67
-16
ch-dao/src/main/resources/generatorConfig_new.xml
ch-dao/src/main/resources/generatorConfig_new.xml
+4
-4
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
...main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
+4
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
...ch/wx/impl/distribution/DistributionOrderServiceImpl.java
+24
-11
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/DistributionOrderService.java
.../ch/wx/service/distribution/DistributionOrderService.java
+0
-8
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/DistributionOrderController.java
...z/ch/wx/web/distribution/DistributionOrderController.java
+1
-2
No files found.
ch-core/src/main/java/com/wwdz/ch/core/api/wxpay/WxPayAutoCertificateConfig.java
View file @
f42c1fca
package
com.wwdz.ch.core.api.wxpay
;
import
com.wechat.pay.java.core.RSAAutoCertificateConfig
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.core.io.ClassPathResource
;
import
java.io.IOException
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
@Configuration
public
class
WxPayAutoCertificateConfig
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
WxPayAutoCertificateConfig
.
class
);
@Autowired
WxPayParamConfig
wxPayParamConfig
;
...
...
@@ -21,10 +31,28 @@ public class WxPayAutoCertificateConfig {
public
RSAAutoCertificateConfig
rsaAutoCertificateConfig
()
{
RSAAutoCertificateConfig
config
=
new
RSAAutoCertificateConfig
.
Builder
()
.
merchantId
(
wxPayParamConfig
.
getMerchantId
())
.
privateKey
(
wxPayParamConfig
.
getPrivateKey
())
.
privateKey
(
getPrivateKey
())
.
merchantSerialNumber
(
wxPayParamConfig
.
getMerchantSerialNumber
())
.
apiV3Key
(
wxPayParamConfig
.
getApiV3Key
())
.
build
();
return
config
;
}
public
String
getPrivateKey
()
{
try
{
String
path
=
this
.
getClass
().
getResource
(
"/apiclient_key.pem"
).
getPath
();
String
fileContent
=
new
String
(
Files
.
readAllBytes
(
Paths
.
get
(
path
)),
"utf-8"
);
String
privateKey
=
fileContent
.
replace
(
"-----BEGIN PRIVATE KEY-----"
,
""
)
.
replace
(
"-----END PRIVATE KEY-----"
,
""
)
.
replaceAll
(
"\\s+"
,
""
);
return
privateKey
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"加载私钥错误 error :{}"
,
e
);
}
return
null
;
}
public
static
void
main
(
String
[]
args
)
throws
IOException
{
new
WxPayAutoCertificateConfig
().
getPrivateKey
();
}
}
\ No newline at end of file
ch-core/src/main/java/com/wwdz/ch/core/api/wxpay/WxPayServiceApi.java
View file @
f42c1fca
...
...
@@ -47,7 +47,6 @@ public class WxPayServiceApi {
.
config
(
rsaAutoCertificateConfig
)
.
signType
(
"RSA"
)
// 不填默认为RSA
.
build
();
PrepayWithRequestPaymentResponse
response
=
new
PrepayWithRequestPaymentResponse
();
try
{
PrepayRequest
request
=
new
PrepayRequest
();
request
.
setAppid
(
wxPayParamConfig
.
getAppId
());
...
...
@@ -67,9 +66,13 @@ public class WxPayServiceApi {
request
.
setPayer
(
payer
);
logger
.
info
(
"请求预支付下单,请求参数:{}"
,
JsonUtils
.
from
(
request
));
// 调用预下单接口
response
=
service
.
prepayWithRequestPayment
(
request
);
PrepayWithRequestPaymentResponse
response
=
service
.
prepayWithRequestPayment
(
request
);
logger
.
info
(
"订单【{}】发起预支付成功,返回信息:{}"
,
dto
.
getDistributionOrderId
(),
response
);
return
Result
.
success
();
String
prepayStr
=
response
.
getPackageVal
();
if
(
StringUtils
.
hasLength
(
prepayStr
))
{
String
prepayId
=
prepayStr
.
split
(
"="
)[
1
];
return
Result
.
success
(
prepayId
);
}
}
catch
(
HttpException
e
)
{
// 发送HTTP请求失败
logger
.
error
(
"微信下单发送HTTP请求失败,错误信息:{}"
,
e
.
getHttpRequest
());
}
catch
(
ServiceException
e
)
{
// 服务返回状态小于200或大于等于300,例如500
...
...
ch-core/src/main/java/com/wwdz/ch/core/util/PriceUtil.java
View file @
f42c1fca
...
...
@@ -24,6 +24,12 @@ public class PriceUtil {
return
bigDecimal
.
longValue
();
}
public
static
String
convertDoubleToString
(
Double
price
){
BigDecimal
bigDecimal
=
new
BigDecimal
(
String
.
valueOf
(
price
/
100
));
DecimalFormat
df
=
new
DecimalFormat
(
"#0.00"
);
return
df
.
format
(
bigDecimal
);
}
public
static
Long
convertPriceUnit
(
Long
price
){
BigDecimal
bigDecimal
=
new
BigDecimal
(
price
);
...
...
@@ -33,5 +39,6 @@ public class PriceUtil {
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
convertPrice
(
3980L
));
System
.
out
.
println
(
UUID
.
fastUUID
().
toString
(
true
));
}
}
ch-core/src/main/resources/apiclient_cert.p12
0 → 100644
View file @
f42c1fca
File added
ch-core/src/main/resources/apiclient_cert.pem
0 → 100644
View file @
f42c1fca
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIUQRaLhu3MJgsR0rDd6GhN8Uj7FvIwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjQwMTMwMDYxMjQwWhcNMjkwMTI4MDYxMjQwWjB7MRMwEQYDVQQDDAox
NjU5NzAxOTU3MRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xJzAlBgNVBAsM
HuadreW3nuiXj+iChuaLjeWNluaciemZkOWFrOWPuDELMAkGA1UEBhMCQ04xETAP
BgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
uBKMPOC+Ljm4hH+s3T3SB4W30fJua4+xX2OvQPY8wRA1gA6iAnlSWzh1cUj6jxlK
8+oSAKWypj8OkNN31pi2w+1TIAYiUGpvtEwgQGnymEijbCVA1rnuB8iKMKlIECB7
Z9GT7JbHkSoDO2K2tIw6RIqs4/gT0ZqKMB57AirVNlPzsf+y19Mz5unrpGHE9bOa
Vw58K8g0eQ9/yf+To5ELhbv489CUb0ODonyoRhPBe62zQZwpVqsubE1vTLgsJXuS
XIsQDKt2JMj6hoVJAf5GF6G/+RVjgJHh2SKTiEeC6WM4n6Skl/bAnJBCVfjXogFJ
ZmjkzJa2bCL2g5E7raUMUwIDAQABo4G5MIG2MAkGA1UdEwQCMAAwCwYDVR0PBAQD
AgP4MIGbBgNVHR8EgZMwgZAwgY2ggYqggYeGgYRodHRwOi8vZXZjYS5pdHJ1cy5j
b20uY24vcHVibGljL2l0cnVzY3JsP0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3
NTQ5ODQ2QzAxQzNFOEVCRDImc2c9SEFDQzQ3MUI2NTQyMkUxMkIyN0E5RDMzQTg3
QUQxQ0RGNTkyNkUxNDAzNzEwDQYJKoZIhvcNAQELBQADggEBADGjHznO6I4X+dmI
K54jke/22oGcwExZBldONO9+RJZh4Yq6yFTI+MsdETAVudiSdo5OyUrgXKCH+0wb
4QGKY/R9slzdCfjHIbcF2AfjRr/qM3bMcFWWd73bektTbXq+SBAp7iwoaWOE4OUO
PEdTVocdfiaQSuY7iGXwKuJB3EepQEF0zCDx5wcVpmYzvqfKpBpPxI6fMtyNd9OM
1XUTB9daDzp7E5wz8RNNpNwxF5JW6svs0fuxZATSI0YqCEY0Gp12GaM6u8sYWA4h
YWqsAK001ILisGMi0GDGDkLcbE8ZC++wyMOuQDelrGFce9iAHojqdX2ciZy5gtev
FSe2n3o=
-----END CERTIFICATE-----
ch-core/src/main/resources/apiclient_key.pem
0 → 100644
View file @
f42c1fca
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4Eow84L4uObiE
f6zdPdIHhbfR8m5rj7FfY69A9jzBEDWADqICeVJbOHVxSPqPGUrz6hIApbKmPw6Q
03fWmLbD7VMgBiJQam+0TCBAafKYSKNsJUDWue4HyIowqUgQIHtn0ZPslseRKgM7
Yra0jDpEiqzj+BPRmoowHnsCKtU2U/Ox/7LX0zPm6eukYcT1s5pXDnwryDR5D3/J
/5OjkQuFu/jz0JRvQ4OifKhGE8F7rbNBnClWqy5sTW9MuCwle5JcixAMq3YkyPqG
hUkB/kYXob/5FWOAkeHZIpOIR4LpYzifpKSX9sCckEJV+NeiAUlmaOTMlrZsIvaD
kTutpQxTAgMBAAECggEBAIgnUAwHwSS4FUAMoHTVsXFW+20UAZEWLID+XzeR68Zy
kuAx8qwZyU0oKdatwIfwkXxx+vb3mXlW0xNVGCNnumiaNw5M+zy4PgAC/ygmNgdm
U1s/AwLRbLvdHjp4PJGRNTbJ0r0BmoRJqzJWBgbuYnsoiFHnweEcinKlWR91R1hy
5jfoKBGgFRveI8q87oWovKn70KUoQX+r++K+mCZXtCq+eTp28MzT18fauF4JrRxW
NDp7CpCUEk0+y5hxrbKXaNIQTyEvYK5yEaPHdzwxm8wTPs6crQRz2/8ox1j28Azf
Coirks3HZMy4paRyus+7zrBGokN+C7DGnqLFCYpMvkECgYEA7Voc1Oy092l5uHvL
GsynYcUb3Aa0kTIA8XVQ+qD0slP6PqLe50iS6T6G8F5qbZuppJCj17q9NQ+RsPXJ
a4zViAdTkhYnpjTgFHA8dMoZ6YP5FNWcqxIt2YTluyjhNQFLbvnPLEfy4/JaiQUF
OVfZl6erQfbuYU9RXpX1uP06shkCgYEAxojRUCWWkH/0u5Jfe4a8ZxzbDv9oenIO
pI9PCgn71gtnK4OTuKo0HfORVi6VpQsctLie5V9ag6yeNTqJEmhVHjPgmnN90whg
tnw47YwxYRahvuv7X5l1KV83zfMLFg5fx+rKyLlTt7f5l8lwrOpdnFie/jnuTIri
B+tkJKubt0sCgYBserAMvPbk0Uc5gxLL99dUfyMBh+sFJWZ69RSCyAeubWVFNWlN
KcVDZzmDKJPZ7rg1J4pKseWCF9CNoXhieGarmjWe4hNTCn2TucxX0HrRWGkCFbNa
GJ/t96iLxt5PPH0+hlwir+uaNQ0d7LZ7g+RGRPKn3nUK8paM9VruJoaqGQKBgDcx
2l9Z094gdL2hGAKTltVj5FLrFvTTuNZvMR4tYGJFkU07q1nvl8Wr7X/0O45C5Jwp
p6NFOzjYSLOrrmf7sY5QBeVqrlR5Q8n4Byujiibfz9/wY1ZUp4n0+uK66x4aqO4/
jFj5jRjKgQ1952FrVtMcoDc1i9aj1es1ugWn4Aa5AoGBALwKTuNr6/K9ExqpuN+o
xcNhC8LnXKBHQsRiaJ8ii0OLwa1M7itrF04iDNwiZEI/fXUWcTQUYhA2ogp2o0ZS
bQVSxQU2orOrRZ3TSY9FPwUo78YQkvBPHHxkh8HcLpu5xLDZvf8HaFfVjFcXUurU
GUtYgM4km/PmiGNEdsw+MIu9
-----END PRIVATE KEY-----
ch-core/src/main/resources/application-dev.yml
View file @
f42c1fca
...
...
@@ -33,12 +33,12 @@ dts:
#微信支付配置
wx-pay
:
appId
:
wx5b4409448bf2c72b
merchantId
:
1
23
merchantId
:
1
659701957
privatekey
:
123
merchantSerialNumber
:
123
apiV3Key
:
123123
payNotifyUrl
:
123
privateKeyPath
:
123
merchantSerialNumber
:
41168B86EDCC260B11D2B0DDE8684DF148FB16F2
apiV3Key
:
7e9504fd8a5c458ab7466b8aaae462a9
payNotifyUrl
:
https://cjxc-applet-dev.wanwudezhi.com/wxPayCallback/getPayNotify
privateKeyPath
:
apiclient_key.pem
#腾讯IM配置
...
...
ch-core/src/main/resources/application-prod.yml
View file @
f42c1fca
...
...
@@ -22,6 +22,15 @@ dts:
get-officialaccount-accesstoken-url
:
https://api.weixin.qq.com/cgi-bin/stable_token
officialaccount-templetId
:
WJkhzyY0_7AYqh19_ujK9yZhj4HohF8ETJvG5NYA9A8
#微信支付配置
wx-pay
:
appId
:
wx5b4409448bf2c72b
merchantId
:
1659701957
privatekey
:
123
merchantSerialNumber
:
41168B86EDCC260B11D2B0DDE8684DF148FB16F2
apiV3Key
:
7e9504fd8a5c458ab7466b8aaae462a9
payNotifyUrl
:
https://cjxc-applet.wanwudezhi.com/wxPayCallback/getPayNotify
privateKeyPath
:
apiclient_key.pem
#腾讯IM配置
im
:
...
...
ch-dao/src/main/java/com/wwdz/ch/db/domain/distribution/DistributionOrder.java
View file @
f42c1fca
package
com.wwdz.ch.db.domain.distribution
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
/**
* @author shiyu
* @date 2024/01/
26
* @date 2024/01/
30
*/
@Data
public
class
DistributionOrder
implements
Entity
{
private
Integer
id
;
/**
...
...
@@ -21,6 +20,16 @@ public class DistributionOrder implements Entity {
*/
private
String
distributionOrderId
;
/**
* 预支付id
*/
private
String
prepayId
;
/**
* 微信支付订单号
*/
private
String
transactionId
;
/**
* 商品id
*/
...
...
@@ -36,6 +45,11 @@ public class DistributionOrder implements Entity {
*/
private
Long
buyerId
;
/**
* 买方openid
*/
private
String
buyerOpenid
;
/**
* 店铺id
*/
...
...
@@ -116,9 +130,12 @@ public class DistributionOrder implements Entity {
sb
.
append
(
"Hash = "
).
append
(
hashCode
());
sb
.
append
(
", id="
).
append
(
id
);
sb
.
append
(
", distributionOrderId="
).
append
(
distributionOrderId
);
sb
.
append
(
", prepayId="
).
append
(
prepayId
);
sb
.
append
(
", transactionId="
).
append
(
transactionId
);
sb
.
append
(
", itemId="
).
append
(
itemId
);
sb
.
append
(
", itemNum="
).
append
(
itemNum
);
sb
.
append
(
", buyerId="
).
append
(
buyerId
);
sb
.
append
(
", buyerOpenid="
).
append
(
buyerOpenid
);
sb
.
append
(
", shopId="
).
append
(
shopId
);
sb
.
append
(
", sellerId="
).
append
(
sellerId
);
sb
.
append
(
", amount="
).
append
(
amount
);
...
...
@@ -152,9 +169,12 @@ public class DistributionOrder implements Entity {
DistributionOrder
other
=
(
DistributionOrder
)
that
;
return
(
this
.
getId
()
==
null
?
other
.
getId
()
==
null
:
this
.
getId
().
equals
(
other
.
getId
()))
&&
(
this
.
getDistributionOrderId
()
==
null
?
other
.
getDistributionOrderId
()
==
null
:
this
.
getDistributionOrderId
().
equals
(
other
.
getDistributionOrderId
()))
&&
(
this
.
getPrepayId
()
==
null
?
other
.
getPrepayId
()
==
null
:
this
.
getPrepayId
().
equals
(
other
.
getPrepayId
()))
&&
(
this
.
getTransactionId
()
==
null
?
other
.
getTransactionId
()
==
null
:
this
.
getTransactionId
().
equals
(
other
.
getTransactionId
()))
&&
(
this
.
getItemId
()
==
null
?
other
.
getItemId
()
==
null
:
this
.
getItemId
().
equals
(
other
.
getItemId
()))
&&
(
this
.
getItemNum
()
==
null
?
other
.
getItemNum
()
==
null
:
this
.
getItemNum
().
equals
(
other
.
getItemNum
()))
&&
(
this
.
getBuyerId
()
==
null
?
other
.
getBuyerId
()
==
null
:
this
.
getBuyerId
().
equals
(
other
.
getBuyerId
()))
&&
(
this
.
getBuyerOpenid
()
==
null
?
other
.
getBuyerOpenid
()
==
null
:
this
.
getBuyerOpenid
().
equals
(
other
.
getBuyerOpenid
()))
&&
(
this
.
getShopId
()
==
null
?
other
.
getShopId
()
==
null
:
this
.
getShopId
().
equals
(
other
.
getShopId
()))
&&
(
this
.
getSellerId
()
==
null
?
other
.
getSellerId
()
==
null
:
this
.
getSellerId
().
equals
(
other
.
getSellerId
()))
&&
(
this
.
getAmount
()
==
null
?
other
.
getAmount
()
==
null
:
this
.
getAmount
().
equals
(
other
.
getAmount
()))
...
...
@@ -177,9 +197,12 @@ public class DistributionOrder implements Entity {
int
result
=
1
;
result
=
prime
*
result
+
((
getId
()
==
null
)
?
0
:
getId
().
hashCode
());
result
=
prime
*
result
+
((
getDistributionOrderId
()
==
null
)
?
0
:
getDistributionOrderId
().
hashCode
());
result
=
prime
*
result
+
((
getPrepayId
()
==
null
)
?
0
:
getPrepayId
().
hashCode
());
result
=
prime
*
result
+
((
getTransactionId
()
==
null
)
?
0
:
getTransactionId
().
hashCode
());
result
=
prime
*
result
+
((
getItemId
()
==
null
)
?
0
:
getItemId
().
hashCode
());
result
=
prime
*
result
+
((
getItemNum
()
==
null
)
?
0
:
getItemNum
().
hashCode
());
result
=
prime
*
result
+
((
getBuyerId
()
==
null
)
?
0
:
getBuyerId
().
hashCode
());
result
=
prime
*
result
+
((
getBuyerOpenid
()
==
null
)
?
0
:
getBuyerOpenid
().
hashCode
());
result
=
prime
*
result
+
((
getShopId
()
==
null
)
?
0
:
getShopId
().
hashCode
());
result
=
prime
*
result
+
((
getSellerId
()
==
null
)
?
0
:
getSellerId
().
hashCode
());
result
=
prime
*
result
+
((
getAmount
()
==
null
)
?
0
:
getAmount
().
hashCode
());
...
...
@@ -207,9 +230,12 @@ public class DistributionOrder implements Entity {
public
enum
Column
{
id
(
"id"
,
"id"
,
"INTEGER"
,
false
),
distributionOrderId
(
"distribution_order_id"
,
"distributionOrderId"
,
"VARCHAR"
,
false
),
prepayId
(
"prepay_id"
,
"prepayId"
,
"VARCHAR"
,
false
),
transactionId
(
"transaction_id"
,
"transactionId"
,
"VARCHAR"
,
false
),
itemId
(
"item_id"
,
"itemId"
,
"BIGINT"
,
false
),
itemNum
(
"item_num"
,
"itemNum"
,
"INTEGER"
,
false
),
buyerId
(
"buyer_id"
,
"buyerId"
,
"BIGINT"
,
false
),
buyerOpenid
(
"buyer_openid"
,
"buyerOpenid"
,
"VARCHAR"
,
false
),
shopId
(
"shop_id"
,
"shopId"
,
"BIGINT"
,
false
),
sellerId
(
"seller_id"
,
"sellerId"
,
"BIGINT"
,
false
),
amount
(
"amount"
,
"amount"
,
"BIGINT"
,
false
),
...
...
ch-dao/src/main/java/com/wwdz/ch/db/domain/distribution/DistributionOrderExample.java
View file @
f42c1fca
This diff is collapsed.
Click to expand it.
ch-dao/src/main/resources/com/wwdz/ch/db/mapper/distribution/DistributionOrderMapper.xml
View file @
f42c1fca
...
...
@@ -4,9 +4,12 @@
<resultMap
id=
"BaseResultMap"
type=
"com.wwdz.ch.db.domain.distribution.DistributionOrder"
>
<id
column=
"id"
jdbcType=
"INTEGER"
property=
"id"
/>
<result
column=
"distribution_order_id"
jdbcType=
"VARCHAR"
property=
"distributionOrderId"
/>
<result
column=
"prepay_id"
jdbcType=
"VARCHAR"
property=
"prepayId"
/>
<result
column=
"transaction_id"
jdbcType=
"VARCHAR"
property=
"transactionId"
/>
<result
column=
"item_id"
jdbcType=
"BIGINT"
property=
"itemId"
/>
<result
column=
"item_num"
jdbcType=
"INTEGER"
property=
"itemNum"
/>
<result
column=
"buyer_id"
jdbcType=
"BIGINT"
property=
"buyerId"
/>
<result
column=
"buyer_openid"
jdbcType=
"VARCHAR"
property=
"buyerOpenid"
/>
<result
column=
"shop_id"
jdbcType=
"BIGINT"
property=
"shopId"
/>
<result
column=
"seller_id"
jdbcType=
"BIGINT"
property=
"sellerId"
/>
<result
column=
"amount"
jdbcType=
"BIGINT"
property=
"amount"
/>
...
...
@@ -81,9 +84,10 @@
</where>
</sql>
<sql
id=
"Base_Column_List"
>
id, distribution_order_id, item_id, item_num, buyer_id, shop_id, seller_id, amount,
address_id, address, logistics_code, waybill, create_time, pay_time, delivery_time,
finish_time, update_time, share_record_id, `state`
id, distribution_order_id, prepay_id, transaction_id, item_id, item_num, buyer_id,
buyer_openid, shop_id, seller_id, amount, address_id, address, logistics_code, waybill,
create_time, pay_time, delivery_time, finish_time, update_time, share_record_id,
`state`
</sql>
<select
id=
"selectByExample"
parameterType=
"com.wwdz.ch.db.domain.distribution.DistributionOrderExample"
resultMap=
"BaseResultMap"
>
select
...
...
@@ -118,9 +122,10 @@
</foreach>
</when>
<otherwise>
id, distribution_order_id, item_id, item_num, buyer_id, shop_id, seller_id, amount,
address_id, address, logistics_code, waybill, create_time, pay_time, delivery_time,
finish_time, update_time, share_record_id, `state`
id, distribution_order_id, prepay_id, transaction_id, item_id, item_num, buyer_id,
buyer_openid, shop_id, seller_id, amount, address_id, address, logistics_code,
waybill, create_time, pay_time, delivery_time, finish_time, update_time, share_record_id,
`state`
</otherwise>
</choose>
from distribution_order
...
...
@@ -151,9 +156,10 @@
</foreach>
</when>
<otherwise>
id, distribution_order_id, item_id, item_num, buyer_id, shop_id, seller_id, amount,
address_id, address, logistics_code, waybill, create_time, pay_time, delivery_time,
finish_time, update_time, share_record_id, `state`
id, distribution_order_id, prepay_id, transaction_id, item_id, item_num, buyer_id,
buyer_openid, shop_id, seller_id, amount, address_id, address, logistics_code,
waybill, create_time, pay_time, delivery_time, finish_time, update_time, share_record_id,
`state`
</otherwise>
</choose>
from distribution_order
...
...
@@ -173,15 +179,17 @@
<selectKey
keyProperty=
"id"
order=
"AFTER"
resultType=
"java.lang.Integer"
>
SELECT LAST_INSERT_ID()
</selectKey>
insert into distribution_order (distribution_order_id, item_id, item_num,
buyer_id, shop_id, seller_id,
insert into distribution_order (distribution_order_id, prepay_id, transaction_id,
item_id, item_num, buyer_id,
buyer_openid, shop_id, seller_id,
amount, address_id, address,
logistics_code, waybill, create_time,
pay_time, delivery_time, finish_time,
update_time, share_record_id, `state`
)
values (#{distributionOrderId,jdbcType=VARCHAR}, #{itemId,jdbcType=BIGINT}, #{itemNum,jdbcType=INTEGER},
#{buyerId,jdbcType=BIGINT}, #{shopId,jdbcType=BIGINT}, #{sellerId,jdbcType=BIGINT},
values (#{distributionOrderId,jdbcType=VARCHAR}, #{prepayId,jdbcType=VARCHAR}, #{transactionId,jdbcType=VARCHAR},
#{itemId,jdbcType=BIGINT}, #{itemNum,jdbcType=INTEGER}, #{buyerId,jdbcType=BIGINT},
#{buyerOpenid,jdbcType=VARCHAR}, #{shopId,jdbcType=BIGINT}, #{sellerId,jdbcType=BIGINT},
#{amount,jdbcType=BIGINT}, #{addressId,jdbcType=BIGINT}, #{address,jdbcType=VARCHAR},
#{logisticsCode,jdbcType=VARCHAR}, #{waybill,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{payTime,jdbcType=TIMESTAMP}, #{deliveryTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP},
...
...
@@ -197,6 +205,12 @@
<if
test=
"distributionOrderId != null"
>
distribution_order_id,
</if>
<if
test=
"prepayId != null"
>
prepay_id,
</if>
<if
test=
"transactionId != null"
>
transaction_id,
</if>
<if
test=
"itemId != null"
>
item_id,
</if>
...
...
@@ -206,6 +220,9 @@
<if
test=
"buyerId != null"
>
buyer_id,
</if>
<if
test=
"buyerOpenid != null"
>
buyer_openid,
</if>
<if
test=
"shopId != null"
>
shop_id,
</if>
...
...
@@ -253,6 +270,12 @@
<if
test=
"distributionOrderId != null"
>
#{distributionOrderId,jdbcType=VARCHAR},
</if>
<if
test=
"prepayId != null"
>
#{prepayId,jdbcType=VARCHAR},
</if>
<if
test=
"transactionId != null"
>
#{transactionId,jdbcType=VARCHAR},
</if>
<if
test=
"itemId != null"
>
#{itemId,jdbcType=BIGINT},
</if>
...
...
@@ -262,6 +285,9 @@
<if
test=
"buyerId != null"
>
#{buyerId,jdbcType=BIGINT},
</if>
<if
test=
"buyerOpenid != null"
>
#{buyerOpenid,jdbcType=VARCHAR},
</if>
<if
test=
"shopId != null"
>
#{shopId,jdbcType=BIGINT},
</if>
...
...
@@ -321,6 +347,12 @@
<if
test=
"record.distributionOrderId != null"
>
distribution_order_id = #{record.distributionOrderId,jdbcType=VARCHAR},
</if>
<if
test=
"record.prepayId != null"
>
prepay_id = #{record.prepayId,jdbcType=VARCHAR},
</if>
<if
test=
"record.transactionId != null"
>
transaction_id = #{record.transactionId,jdbcType=VARCHAR},
</if>
<if
test=
"record.itemId != null"
>
item_id = #{record.itemId,jdbcType=BIGINT},
</if>
...
...
@@ -330,6 +362,9 @@
<if
test=
"record.buyerId != null"
>
buyer_id = #{record.buyerId,jdbcType=BIGINT},
</if>
<if
test=
"record.buyerOpenid != null"
>
buyer_openid = #{record.buyerOpenid,jdbcType=VARCHAR},
</if>
<if
test=
"record.shopId != null"
>
shop_id = #{record.shopId,jdbcType=BIGINT},
</if>
...
...
@@ -381,9 +416,12 @@
update distribution_order
set id = #{record.id,jdbcType=INTEGER},
distribution_order_id = #{record.distributionOrderId,jdbcType=VARCHAR},
prepay_id = #{record.prepayId,jdbcType=VARCHAR},
transaction_id = #{record.transactionId,jdbcType=VARCHAR},
item_id = #{record.itemId,jdbcType=BIGINT},
item_num = #{record.itemNum,jdbcType=INTEGER},
buyer_id = #{record.buyerId,jdbcType=BIGINT},
buyer_openid = #{record.buyerOpenid,jdbcType=VARCHAR},
shop_id = #{record.shopId,jdbcType=BIGINT},
seller_id = #{record.sellerId,jdbcType=BIGINT},
amount = #{record.amount,jdbcType=BIGINT},
...
...
@@ -408,6 +446,12 @@
<if
test=
"distributionOrderId != null"
>
distribution_order_id = #{distributionOrderId,jdbcType=VARCHAR},
</if>
<if
test=
"prepayId != null"
>
prepay_id = #{prepayId,jdbcType=VARCHAR},
</if>
<if
test=
"transactionId != null"
>
transaction_id = #{transactionId,jdbcType=VARCHAR},
</if>
<if
test=
"itemId != null"
>
item_id = #{itemId,jdbcType=BIGINT},
</if>
...
...
@@ -417,6 +461,9 @@
<if
test=
"buyerId != null"
>
buyer_id = #{buyerId,jdbcType=BIGINT},
</if>
<if
test=
"buyerOpenid != null"
>
buyer_openid = #{buyerOpenid,jdbcType=VARCHAR},
</if>
<if
test=
"shopId != null"
>
shop_id = #{shopId,jdbcType=BIGINT},
</if>
...
...
@@ -465,9 +512,12 @@
<update
id=
"updateByPrimaryKey"
parameterType=
"com.wwdz.ch.db.domain.distribution.DistributionOrder"
>
update distribution_order
set distribution_order_id = #{distributionOrderId,jdbcType=VARCHAR},
prepay_id = #{prepayId,jdbcType=VARCHAR},
transaction_id = #{transactionId,jdbcType=VARCHAR},
item_id = #{itemId,jdbcType=BIGINT},
item_num = #{itemNum,jdbcType=INTEGER},
buyer_id = #{buyerId,jdbcType=BIGINT},
buyer_openid = #{buyerOpenid,jdbcType=VARCHAR},
shop_id = #{shopId,jdbcType=BIGINT},
seller_id = #{sellerId,jdbcType=BIGINT},
amount = #{amount,jdbcType=BIGINT},
...
...
@@ -517,9 +567,10 @@
</foreach>
</when>
<otherwise>
id, distribution_order_id, item_id, item_num, buyer_id, shop_id, seller_id, amount,
address_id, address, logistics_code, waybill, create_time, pay_time, delivery_time,
finish_time, update_time, share_record_id, `state`
id, distribution_order_id, prepay_id, transaction_id, item_id, item_num, buyer_id,
buyer_openid, shop_id, seller_id, amount, address_id, address, logistics_code,
waybill, create_time, pay_time, delivery_time, finish_time, update_time, share_record_id,
`state`
</otherwise>
</choose>
from distribution_order
...
...
ch-dao/src/main/resources/generatorConfig_new.xml
View file @
f42c1fca
...
...
@@ -63,16 +63,16 @@
<!--生成Model类存放位置-->
<javaModelGenerator
targetPackage=
"com.wwdz.ch.db.domain"
targetProject=
"ch-dao/src/main/java"
>
<javaModelGenerator
targetPackage=
"com.wwdz.ch.db.domain
.distribution
"
targetProject=
"ch-dao/src/main/java"
>
<property
name=
"enableSubPackages"
value=
"true"
/>
<property
name=
"trimStrings"
value=
"true"
/>
</javaModelGenerator>
<sqlMapGenerator
targetPackage=
"com.wwdz.ch.db.mapper"
targetProject=
"ch-dao/src/main/resources"
/>
<javaClientGenerator
type=
"XMLMAPPER"
targetPackage=
"com.wwdz.ch.db.mapper"
<sqlMapGenerator
targetPackage=
"com.wwdz.ch.db.mapper
.distribution
"
targetProject=
"ch-dao/src/main/resources"
/>
<javaClientGenerator
type=
"XMLMAPPER"
targetPackage=
"com.wwdz.ch.db.mapper
.distribution
"
targetProject=
"ch-dao/src/main/java"
/>
<table
tableName=
"
retur
n_order"
enableCountByExample=
"true"
enableUpdateByExample=
"true"
enableDeleteByExample=
"true"
enableSelectByExample=
"true"
selectByExampleQueryId=
"true"
>
<table
tableName=
"
distributio
n_order"
enableCountByExample=
"true"
enableUpdateByExample=
"true"
enableDeleteByExample=
"true"
enableSelectByExample=
"true"
selectByExampleQueryId=
"true"
>
<generatedKey
column=
"id"
sqlStatement=
"Mysql"
identity=
"true"
/>
</table>
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
View file @
f42c1fca
...
...
@@ -5,6 +5,7 @@ import com.wechat.pay.java.core.notification.NotificationParser;
import
com.wechat.pay.java.core.notification.RequestParam
;
import
com.wechat.pay.java.service.payments.model.Transaction
;
import
com.wwdz.ch.core.util.RedisUtils
;
import
com.wwdz.ch.db.dao.distribution.DistributionOrderDao
;
import
com.xxdxxs.utils.JsonUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -35,6 +36,9 @@ public class WxPayCallbackController {
@Autowired
RSAAutoCertificateConfig
rsaAutoCertificateConfig
;
@Autowired
DistributionOrderDao
distributionOrderDao
;
@RequestMapping
(
value
=
"/getPayNotify"
)
public
synchronized
String
payNotify
(
HttpServletRequest
request
)
throws
IOException
{
logger
.
info
(
"------------------ 收到微信支付回调通知 ------------------"
);
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
View file @
f42c1fca
...
...
@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.impl.distribution;
import
com.alibaba.dubbo.config.annotation.Reference
;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.core.api.wxpay.WxPayServiceApi
;
import
com.wwdz.ch.core.consts.ConsignSaleEnum
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.core.consts.LogisticsEnum
;
...
...
@@ -53,18 +54,35 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired
SupplierItemDao
supplierItemDao
;
@Autowired
WxPayServiceApi
wxPayServiceApi
;
@Override
public
Result
createDistributionOrder
(
DistributionOrderRequestDto
dto
)
{
try
{
//调用微信接口,预支付下单,获取预付单号
String
shareRecordId
=
dto
.
getShareRecordId
();
//查询分享记录详细信息
DistributorShareRecord
distributorShareRecord
=
distributorShareRecordDao
.
findById
(
shareRecordId
);
DistributionOrder
distributionOrder
=
new
DistributionOrder
();
String
distributionOrderId
=
IdUtils
.
getOrderNumber
(
DISTRIBUTION_ORDER_PREFIX
);
DistributionOrderRequestDto
prePayDto
=
new
DistributionOrderRequestDto
();
prePayDto
.
setDistributionOrderId
(
distributionOrderId
);
prePayDto
.
setAmount
(
String
.
valueOf
(
distributorShareRecord
.
getPrice
()
*
dto
.
getItemNum
()));
prePayDto
.
setBuyerOpenid
(
dto
.
getBuyerOpenid
());
//查询商品信息
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributorShareRecord
.
getItemId
());
prePayDto
.
setItemName
(
supplierItem
.
getName
());
Result
prePayResult
=
wxPayServiceApi
.
createPrepareOrder
(
prePayDto
);
if
(!
prePayResult
.
getSuccess
())
{
return
Result
.
failed
(
"预下单失败"
);
}
String
prepayId
=
(
String
)
prePayResult
.
getData
();
DistributionOrder
distributionOrder
=
new
DistributionOrder
();
distributionOrder
.
setItemId
(
distributorShareRecord
.
getItemId
());
distributionOrder
.
setItemNum
(
dto
.
getItemNum
());
distributionOrder
.
setShareRecordId
(
distributorShareRecord
.
getShareId
());
distributionOrder
.
setDistributionOrderId
(
distributionOrderId
);
distributionOrder
.
setPrepayId
(
prepayId
);
distributionOrder
.
setBuyerId
(
dto
.
getBuyerId
());
distributionOrder
.
setShopId
(
distributorShareRecord
.
getShopId
());
distributionOrder
.
setSellerId
(
distributorShareRecord
.
getDistributorId
());
...
...
@@ -79,7 +97,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
}
catch
(
Exception
e
)
{
logger
.
error
(
"创建分销订单失败 error : {}"
,
e
);
}
return
Result
.
failed
();
return
Result
.
failed
(
"分销订单下单失败"
);
}
@Override
...
...
@@ -88,11 +106,6 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
}
@Override
public
Result
getParamForPay
(
DistributionOrderRequestDto
dto
)
{
return
null
;
}
@Override
public
Result
cancel
(
DistributionOrderRequestDto
dto
)
{
try
{
...
...
@@ -161,16 +174,16 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
//供货价
Long
distributionTotalPrice
=
supplierItem
.
getDistributionPrice
()
*
distributionOrder
.
getItemNum
();
distributionOrderDetailVo
.
setDistributionPrice
(
PriceUtil
.
convertPrice
(
distributionTotalPrice
));
distributionOrderDetailVo
.
setChannelCost
(
"
千分之6
"
);
distributionOrderDetailVo
.
setChannelCost
(
"
6‰
"
);
//通道费
double
channelCost
=
distributionOrder
.
getAmount
().
doubleValue
()
*
0.006
;
if
(
channelCost
<
1
)
{
channelCost
=
0
;
}
distributionOrderDetailVo
.
setChannelCost
(
String
.
valueOf
(
channelCost
));
distributionOrderDetailVo
.
setChannelCost
(
PriceUtil
.
convertDoubleToString
(
channelCost
));
//利润
Double
profit
=
distributionOrder
.
getAmount
().
doubleValue
()
-
distributionTotalPrice
.
doubleValue
()
-
channelCost
;
distributionOrderDetailVo
.
setProfit
(
PriceUtil
.
convert
PriceFromStr
(
profit
.
toString
()).
toString
(
));
distributionOrderDetailVo
.
setProfit
(
PriceUtil
.
convert
DoubleToString
(
profit
));
return
Result
.
success
(
distributionOrderDetailVo
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"查询分销商订单详情失败 error : {}"
,
e
);
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/DistributionOrderService.java
View file @
f42c1fca
...
...
@@ -13,14 +13,6 @@ public interface DistributionOrderService {
Result
createDistributionOrder
(
DistributionOrderRequestDto
dto
);
/**
* 支付接口需要的参数:签名等
* @param dto
* @return
*/
Result
getParamForPay
(
DistributionOrderRequestDto
dto
);
/**
* 完成支付后修改订单状态
* @param dto
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/DistributionOrderController.java
View file @
f42c1fca
...
...
@@ -38,8 +38,7 @@ public class DistributionOrderController {
Validator
validator
=
new
Validator
(
FormHandler
.
ofEntity
(
dto
));
validator
.
set
(
"shareRecordId"
,
"分销分享记录id"
).
must
().
string
()
.
set
(
"buyerId"
,
"买方id"
).
must
().
number
()
.
set
(
"distributorId"
,
"分销商id"
).
must
().
number
()
.
set
(
"shopId"
,
"分销商店铺id"
).
must
().
number
()
.
set
(
"buyerOpenId"
,
"买方微信openid"
).
must
().
number
()
.
end
();
if
(!
validator
.
isValid
())
{
return
Result
.
failed
(
validator
.
getErrorInfo
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment