记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
4329239a
Commit
4329239a
authored
Jan 15, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
设置支付商品名称
parent
026bd85f
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
164 additions
and
18 deletions
+164
-18
GoblinOrderServiceImpl.java
...et/service/order/service/impl/GoblinOrderServiceImpl.java
+22
-10
KylinOrderTicketsServiceImpl.java
...vice/order/service/impl/KylinOrderTicketsServiceImpl.java
+10
-4
PaySubjectUtils.java
...va/com/liquidnet/service/order/utils/PaySubjectUtils.java
+128
-0
application-dev.yml
...net-support-config/src/main/resources/application-dev.yml
+2
-2
application-dev.yml
...net-support-eureka/src/main/resources/application-dev.yml
+1
-1
bootstrap.yml
...liquidnet-support-eureka/src/main/resources/bootstrap.yml
+1
-1
No files found.
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinOrderServiceImpl.java
View file @
4329239a
...
...
@@ -7,14 +7,12 @@ import com.liquidnet.common.exception.LiquidnetServiceException;
import
com.liquidnet.commons.lang.constant.LnsRegex
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.adam.dto.vo.AdamUserInfoVo
;
import
com.liquidnet.service.adam.dto.vo.AdamUserMemberVo
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.UserPathDto
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.candy.constant.CandyRedisConst
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseReqDto
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseRespDto
;
import
com.liquidnet.service.dragon.dto.DragonPayOrderQueryRespDto
;
...
...
@@ -39,8 +37,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
javax.servlet.http.HttpServletRequest
;
import
java.math.BigDecimal
;
...
...
@@ -585,9 +581,13 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
if
(
preParam
.
getDeviceFrom
().
equals
(
"micropay"
))
{
dragonPayBaseReqDto
.
setAuthCode
(
preParam
.
getAuthCode
());
}
String
name
=
preParam
.
getStoreName
();
if
(
StringUtil
.
isNotNull
(
preParam
.
getStoreName
())
&&
preParam
.
getStoreName
().
length
()
>=
32
)
{
name
=
name
.
substring
(
0
,
32
);
// String name = preParam.getStoreName();
// if (StringUtil.isNotNull(preParam.getStoreName()) && preParam.getStoreName().length() >= 32) {
// name = name.substring(0, 32);
// }
String
name
=
PaySubjectUtils
.
cleanSubject
(
PaySubjectUtils
.
formatSpuNameNumByGoblinOrderSqlParamList
(
sqlParams
));
if
(
name
.
isEmpty
())
{
name
=
preParam
.
getStoreName
();
}
dragonPayBaseReqDto
.
setName
(
name
);
dragonPayBaseReqDto
.
setDetail
(
"正在现场"
);
...
...
@@ -851,9 +851,11 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
}
BigDecimal
price
=
BigDecimal
.
ZERO
;
String
[]
orderIds
=
redisUtils
.
getMasterCode
(
storeOrderVo
.
getMasterOrderCode
());
List
<
String
>
orderSkuIdList
=
new
ArrayList
<>();
for
(
String
orderId
:
orderIds
)
{
GoblinStoreOrderVo
orderVo
=
redisUtils
.
getGoblinOrder
(
orderId
);
price
=
price
.
add
(
orderVo
.
getPriceActual
());
orderSkuIdList
.
addAll
(
orderVo
.
getOrderSkuVoIds
());
}
GoblinPayInnerResultVo
payInnerResultVo
=
GoblinPayInnerResultVo
.
getNew
();
// if (!storeOrderVo.getPayType().equals("FREE") && storeOrderVo.getPayType().equals(param.getPayType()) && storeOrderVo.getDeviceFrom().equals(param.getDeviceFrom())) {
...
...
@@ -885,10 +887,20 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
}
dragonPayBaseReqDto
.
setType
(
"PRODUCT"
);
dragonPayBaseReqDto
.
setPrice
(
price
);
String
name
=
storeOrderVo
.
getStoreName
();
if
(
StringUtil
.
isNotNull
(
storeOrderVo
.
getStoreName
())
&&
storeOrderVo
.
getStoreName
().
length
()
>=
32
)
{
name
=
name
.
substring
(
0
,
32
);
// String name = storeOrderVo.getStoreName();
// if (StringUtil.isNotNull(storeOrderVo.getStoreName()) && storeOrderVo.getStoreName().length() >= 32) {
// name = name.substring(0, 32);
// }
List
<
GoblinOrderSkuVo
>
goblinOrderSkuVos
=
new
ArrayList
<>();
for
(
String
orderSkuId
:
orderSkuIdList
)
{
GoblinOrderSkuVo
goblinOrderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
orderSkuId
);
goblinOrderSkuVos
.
add
(
goblinOrderSkuVo
);
}
String
name
=
PaySubjectUtils
.
cleanSubject
(
PaySubjectUtils
.
formatSpuNameNumSummaryFromSkuVos
(
goblinOrderSkuVos
));
if
(
name
.
isEmpty
())
{
name
=
storeOrderVo
.
getStoreName
();
}
dragonPayBaseReqDto
.
setName
(
name
);
dragonPayBaseReqDto
.
setDetail
(
"正在现场"
);
dragonPayBaseReqDto
.
setOrderCode
(
storeOrderVo
.
getMasterOrderCode
());
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/KylinOrderTicketsServiceImpl.java
View file @
4329239a
...
...
@@ -735,8 +735,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if
(
orderTickets
.
getPriceActual
().
compareTo
(
BigDecimal
.
valueOf
(
0
))
>
0
)
{
String
name
=
dataUtils
.
getTicketPayTxt
(
ticketData
.
getTicketsId
());
if
(
name
.
equals
(
""
))
{
name
=
"正在现场"
;
if
(
name
.
isEmpty
())
{
name
=
PaySubjectUtils
.
cleanSubject
(
performanceData
.
getTitle
());
if
(
name
.
isEmpty
())
{
name
=
"正在现场"
;
}
}
// // 调用支付
// if (payOrderParam.getPayType().equalsIgnoreCase(DragonConstant.PayChannelEnum.WEPAY.getCode())) {
...
...
@@ -865,8 +868,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20004"
));
}
String
name
=
dataUtils
.
getTicketPayTxt
(
orderTicketData
.
getTicketId
());
if
(
name
.
equals
(
""
))
{
name
=
"正在现场"
;
if
(
name
.
isEmpty
())
{
name
=
PaySubjectUtils
.
cleanSubject
(
orderTicketData
.
getPerformanceTitle
());
if
(
name
.
isEmpty
())
{
name
=
"正在现场"
;
}
}
// if (payAgainParam.getPayType().equalsIgnoreCase(DragonConstant.PayChannelEnum.WEPAY.getCode())) {
// if (payAgainParam.getDeviceFrom().equalsIgnoreCase(DragonConstant.DeviceFromEnum.JS.getCode()) || payAgainParam.getDeviceFrom().equalsIgnoreCase(DragonConstant.DeviceFromEnum.APPLET.getCode())) {
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/PaySubjectUtils.java
0 → 100644
View file @
4329239a
package
com
.
liquidnet
.
service
.
order
.
utils
;
import
com.liquidnet.service.goblin.dto.vo.GoblinOrderSkuVo
;
import
com.liquidnet.service.goblin.entity.GoblinOrderSku
;
import
com.liquidnet.service.goblin.param.GoblinOrderSqlParam
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
@Slf4j
public
class
PaySubjectUtils
{
/**
* 清理 subject,只保留中文、英文、数字和空格,其他字符替换为 -
* @param subject 原始商品名称
* @return 清理后的 subject
*/
public
static
String
cleanSubject
(
String
subject
)
{
if
(
subject
==
null
||
subject
.
trim
().
isEmpty
())
{
return
""
;
}
try
{
subject
=
subject
.
trim
();
// 长度限制(支付宝限制256字符)
if
(
subject
.
length
()
>
100
)
{
subject
=
subject
.
substring
(
0
,
100
);
}
// 正则表达式:匹配非中文、非英文、非数字、非空格的字符
// 中文范围:\u4e00-\u9fa5
// 英文范围:a-zA-Z
// 数字范围:0-9
// 空格:保留
Pattern
pattern
=
Pattern
.
compile
(
"[^\\u4e00-\\u9fa5a-zA-Z0-9]"
);
// 替换所有不符合的字符为 -
String
cleaned
=
pattern
.
matcher
(
subject
).
replaceAll
(
"-"
);
// 处理多个连续的 - 替换为单个 -
cleaned
=
cleaned
.
replaceAll
(
"-+"
,
"-"
);
// 去除首尾的 -(保留空格)
cleaned
=
cleaned
.
replaceAll
(
"^-|-$"
,
""
);
return
"正在现场-"
+
cleaned
;
}
catch
(
Exception
e
){
log
.
error
(
"error"
,
e
);
}
return
""
;
}
/**
* 将订单 SKU 列表汇总并格式化为 "正在现场-spuName-num,spuName-num..." 的字符串。
* 相同 spuName 的数量会自动累加。
*
* @param sqlParams 订单参数列表,可能为 null 或包含 null 元素
* @return 格式化后的字符串,若无有效 SKU 则返回 "正在现场-"
*/
public
static
String
formatSpuNameNumByGoblinOrderSqlParamList
(
List
<
GoblinOrderSqlParam
>
sqlParams
)
{
if
(
sqlParams
==
null
||
sqlParams
.
isEmpty
())
{
return
""
;
}
try
{
// 聚合 spuName -> totalNum(安全处理 null)
Map
<
String
,
Integer
>
aggregated
=
sqlParams
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
map
(
GoblinOrderSqlParam:
:
getOrderSkuList
)
.
filter
(
Objects:
:
nonNull
)
.
flatMap
(
List:
:
stream
)
.
filter
(
Objects:
:
nonNull
)
.
filter
(
sku
->
sku
.
getSpuName
()
!=
null
&&
!
sku
.
getSpuName
().
trim
().
isEmpty
())
.
collect
(
Collectors
.
groupingBy
(
GoblinOrderSku:
:
getSpuName
,
Collectors
.
summingInt
(
sku
->
sku
.
getNum
()
==
null
?
0
:
sku
.
getNum
())
));
// 按 spuName 排序(可选,使输出更稳定)
return
aggregated
.
entrySet
().
stream
()
.
sorted
(
Map
.
Entry
.
comparingByKey
())
// 可选:按商品名排序
.
map
(
entry
->
entry
.
getKey
()
+
"-"
+
entry
.
getValue
())
.
collect
(
Collectors
.
joining
(
","
));
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
}
return
""
;
}
public
static
String
formatSpuNameNumSummaryFromSkuVos
(
List
<
GoblinOrderSkuVo
>
skuVos
)
{
if
(
skuVos
==
null
||
skuVos
.
isEmpty
())
{
return
""
;
}
Map
<
String
,
Integer
>
aggregated
=
skuVos
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
filter
(
vo
->
vo
.
getSpuName
()
!=
null
&&
!
vo
.
getSpuName
().
trim
().
isEmpty
())
.
collect
(
Collectors
.
groupingBy
(
GoblinOrderSkuVo:
:
getSpuName
,
Collectors
.
summingInt
(
vo
->
vo
.
getNum
()
==
null
?
0
:
vo
.
getNum
())
));
String
detailPart
=
aggregated
.
entrySet
().
stream
()
.
sorted
(
Map
.
Entry
.
comparingByKey
())
.
map
(
e
->
e
.
getKey
()
+
"-"
+
e
.
getValue
())
.
collect
(
Collectors
.
joining
(
","
));
return
detailPart
;
}
public
static
void
main
(
String
[]
args
)
{
String
text
=
"「发呆的下午」| 北京的第一次“发呆冲击” 鸟撞x虎啸春x大叫控"
;
String
text2
=
"大波浪乐队 2021全新专辑《新逻辑 不止一面》全国巡演郑州"
;
String
text3
=
"Matt吕彦良2025-Fresh-ME-新鲜之旅巡演-Refresh-with-Matt-Lv-长沙站Matt吕彦良2025-Fresh-ME-新鲜之旅巡演-Refr鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅鲜之旅"
;
System
.
out
.
println
(
cleanSubject
(
text
));
System
.
out
.
println
(
cleanSubject
(
text2
));
System
.
out
.
println
(
cleanSubject
(
text3
));
}
}
liquidnet-bus-support/liquidnet-support-config/src/main/resources/application-dev.yml
View file @
4329239a
...
...
@@ -20,8 +20,8 @@ liquidnet:
# username: admin
# password: admin
config
:
# location:
/Users/jiangxiulong/IdeaProjects/liquidnet-bus-v1/liquidnet-bus-config/liquidnet-config
location
:
/app/support-config
# location:
'D:/Work/ModernSky/projects/zhengzai/config/liquidnet-config'
location
:
'
D:/Work/ModernSky/projects/zhengzai/liquidnet-bus-v1/liquidnet-bus-config/liquidnet-config'
# end-dev-这里是配置信息基本值
spring
:
...
...
liquidnet-bus-support/liquidnet-support-eureka/src/main/resources/application-dev.yml
View file @
4329239a
...
...
@@ -13,7 +13,7 @@ spring:
eureka
:
instance
:
hostname
:
172.17.192.42
hostname
:
localhost
preferIpAddress
:
true
health-check-url
:
http://localhost:${server.port}${server.servlet.context-path}/actuator/health
status-page-url
:
http://localhost:${server.port}${server.servlet.context-path}/actuator/info
...
...
liquidnet-bus-support/liquidnet-support-eureka/src/main/resources/bootstrap.yml
View file @
4329239a
...
...
@@ -2,4 +2,4 @@ spring:
application
:
name
:
liquidnet-support-eureka
profiles
:
active
:
test
\ No newline at end of file
active
:
dev
\ No newline at end of file
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