Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
lanbaoming
jiedao-api-boot-master
Commits
aa45a105
Commit
aa45a105
authored
Dec 09, 2024
by
Smile
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员模块-积分规则-订单V值新增客户方和不区分是否首单规则
parent
c0e65d3b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
93 additions
and
19 deletions
+93
-19
20241206lh.sql
sql/v2.3/20241206lh.sql
+5
-1
CustomerSideEnum.java
...n/iocoder/yudao/module/member/enums/CustomerSideEnum.java
+30
-0
ErrorCodeConstants.java
...iocoder/yudao/module/member/enums/ErrorCodeConstants.java
+1
-0
YesOrNoOrAllTypeEnum.java
...coder/yudao/module/member/enums/YesOrNoOrAllTypeEnum.java
+7
-0
OrderVStrategy.java
.../module/member/mq/consumer/score/core/OrderVStrategy.java
+24
-8
ScoreRuleServiceImpl.java
...module/member/service/scoreRule/ScoreRuleServiceImpl.java
+5
-5
ScoreRuleBaseVO.java
...der/yudao/module/member/vo/scoreRule/ScoreRuleBaseVO.java
+11
-0
ScoreRuleOrderVExtraVO.java
...ule/member/vo/scoreRule/extra/ScoreRuleOrderVExtraVO.java
+3
-1
messages_en.properties
yudao-server/src/main/resources/i18n/messages_en.properties
+2
-1
messages_fr.properties
yudao-server/src/main/resources/i18n/messages_fr.properties
+2
-1
messages_zh.properties
yudao-server/src/main/resources/i18n/messages_zh.properties
+3
-2
No files found.
sql/v2.3/20241206lh.sql
View file @
aa45a105
...
...
@@ -2,4 +2,8 @@
INSERT
INTO
jiedao
.
system_dict_type
(
name
,
`type`
,
status
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
)
VALUES
(
'是否选择'
,
'yes_or_no_or_all'
,
0
,
NULL
,
'1'
,
'2024-12-06 10:39:28'
,
'1'
,
'2024-12-06 10:39:28'
,
0
);
INSERT
INTO
jiedao
.
system_dict_data
(
sort
,
label
,
value
,
dict_type
,
status
,
color_type
,
css_class
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
,
label_en
,
label_fr
)
VALUES
(
0
,
'是'
,
'0'
,
'yes_or_no_or_all'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
'2024-12-06 10:51:10'
,
'1'
,
'2024-12-06 10:51:10'
,
0
,
'YES'
,
'YES'
);
INSERT
INTO
jiedao
.
system_dict_data
(
sort
,
label
,
value
,
dict_type
,
status
,
color_type
,
css_class
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
,
label_en
,
label_fr
)
VALUES
(
1
,
'否'
,
'1'
,
'yes_or_no_or_all'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
'2024-12-06 10:51:42'
,
'1'
,
'2024-12-06 10:51:42'
,
0
,
'NO'
,
'NO'
);
INSERT
INTO
jiedao
.
system_dict_data
(
sort
,
label
,
value
,
dict_type
,
status
,
color_type
,
css_class
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
,
label_en
,
label_fr
)
VALUES
(
2
,
'全选'
,
'2'
,
'yes_or_no_or_all'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
'2024-12-06 10:53:29'
,
'1'
,
'2024-12-06 10:53:29'
,
0
,
'ALL'
,
'ALL'
);
\ No newline at end of file
INSERT
INTO
jiedao
.
system_dict_data
(
sort
,
label
,
value
,
dict_type
,
status
,
color_type
,
css_class
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
,
label_en
,
label_fr
)
VALUES
(
2
,
'不限'
,
'2'
,
'yes_or_no_or_all'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
'2024-12-06 10:53:29'
,
'1'
,
'2024-12-06 10:53:29'
,
0
,
'ALL'
,
'ALL'
);
--订单V值获取积分,客户方字典添加
INSERT
INTO
jiedao
.
system_dict_type
(
name
,
`type`
,
status
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
)
VALUES
(
'客户方'
,
'customer_side'
,
0
,
'客户方:1.发货人 2.收货人'
,
'1'
,
'2024-12-07 13:50:41'
,
'1'
,
'2024-12-07 13:50:41'
,
0
);
INSERT
INTO
jiedao
.
system_dict_data
(
sort
,
label
,
value
,
dict_type
,
status
,
color_type
,
css_class
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
,
label_en
,
label_fr
)
VALUES
(
0
,
'发货人'
,
'1'
,
'customer_side'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
'2024-12-09 15:53:27'
,
'1'
,
'2024-12-09 15:53:27'
,
0
,
'shipper'
,
'shipper'
);
INSERT
INTO
jiedao
.
system_dict_data
(
sort
,
label
,
value
,
dict_type
,
status
,
color_type
,
css_class
,
remark
,
creator
,
create_time
,
updater
,
update_time
,
deleted
,
label_en
,
label_fr
)
VALUES
(
0
,
'收货人'
,
'2'
,
'customer_side'
,
0
,
'default'
,
''
,
NULL
,
'1'
,
'2024-12-09 15:53:48'
,
'1'
,
'2024-12-09 15:53:48'
,
0
,
'consignee'
,
'consignee'
);
\ No newline at end of file
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/CustomerSideEnum.java
0 → 100644
View file @
aa45a105
package
cn
.
iocoder
.
yudao
.
module
.
member
.
enums
;
import
cn.hutool.core.util.ArrayUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author Smile
*/
@AllArgsConstructor
@Getter
public
enum
CustomerSideEnum
{
CONSIGNOR
(
1
,
"发货人"
,
"shipper"
),
CONSIGNEE
(
2
,
"收货人"
,
"consignee"
),
;
private
final
Integer
value
;
private
final
String
name
;
private
final
String
nameEn
;
public
static
CustomerSideEnum
valueOf
(
Integer
value
)
{
return
ArrayUtil
.
firstMatch
(
customerSide
->
customerSide
.
getValue
().
equals
(
value
)
,
CustomerSideEnum
.
values
());
}
}
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java
View file @
aa45a105
...
...
@@ -70,4 +70,5 @@ public interface ErrorCodeConstants {
ErrorCode
USER_ADDRESS_NOT_EXISTS
=
new
ErrorCode
(
1004008026
,
"user.address.not.exists"
);
ErrorCode
USER_ADDRESS_FIELD_ERROR
=
new
ErrorCode
(
1004008027
,
"user.address.field.error"
);
ErrorCode
SCORE_RULE_CUSTOMERSIDE_ERROR
=
new
ErrorCode
(
1004008028
,
"score.rule.customer.side.error"
);
}
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/YesOrNoOrAllTypeEnum.java
0 → 100644
View file @
aa45a105
package
cn
.
iocoder
.
yudao
.
module
.
member
.
enums
;
public
enum
YesOrNoOrAllTypeEnum
{
YES
,
NO
,
ALL
;
}
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/mq/consumer/score/core/OrderVStrategy.java
View file @
aa45a105
...
...
@@ -13,10 +13,7 @@ import cn.iocoder.yudao.module.customer.service.customerContacts.CustomerContact
import
cn.iocoder.yudao.module.member.api.score.MemberUserScoreApi
;
import
cn.iocoder.yudao.module.member.api.score.dto.MemberUserScoreOperateReqDTO
;
import
cn.iocoder.yudao.module.member.dal.dataobject.scoreRule.ScoreRuleDO
;
import
cn.iocoder.yudao.module.member.enums.PlatformTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.ScoreRuleTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.ScoreSourceTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.TransportTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.*
;
import
cn.iocoder.yudao.module.member.mq.message.ScoreMessage
;
import
cn.iocoder.yudao.module.member.service.scoreLog.MemberUserScoreLogService
;
import
cn.iocoder.yudao.module.member.service.scoreRule.ScoreRuleService
;
...
...
@@ -207,6 +204,13 @@ public class OrderVStrategy extends AbstractScoreRuleStrategy {
*/
private
List
<
Long
>
getAddScoreUser
(
Long
userId
,
Long
consignorId
,
Long
consigneeId
,
ScoreRuleDO
scoreRuleDO
,
StringBuilder
logNote
)
{
ArrayList
<
Long
>
users
=
new
ArrayList
<>();
ScoreRuleOrderVExtraVO
extraInfo
=
JSONUtil
.
toBean
(
scoreRuleDO
.
getExtra
(),
ScoreRuleOrderVExtraVO
.
class
);
String
customerSide
=
extraInfo
.
getCustomerSide
();
String
[]
customerSideArray
=
customerSide
.
split
(
","
);
//校验客户方是否存在且是否有收货人
boolean
hasConsignee
=
ArrayUtil
.
contains
(
customerSideArray
,
String
.
valueOf
(
CustomerSideEnum
.
CONSIGNEE
.
getValue
()));
//校验客户方是否存在且是否有发货人
boolean
hasConsignor
=
ArrayUtil
.
contains
(
customerSideArray
,
String
.
valueOf
(
CustomerSideEnum
.
CONSIGNOR
.
getValue
()));
// 发货人和收货人都要判断给分
boolean
isBackendOrder
=
userId
<=
0
;
logNote
.
append
(
"此订单为"
).
append
(
isBackendOrder
?
"后台"
:
"客户端"
).
append
(
"下单;"
);
...
...
@@ -217,8 +221,15 @@ public class OrderVStrategy extends AbstractScoreRuleStrategy {
userId
=
0L
;
logNote
.
append
(
"发货人未绑定会员;"
);
}
else
{
userId
=
contactsDO
.
getUserid
();
logNote
.
append
(
"发货人绑定会员:"
).
append
(
contactsDO
.
getUsername
()).
append
(
",会员ID:"
).
append
(
userId
).
append
(
";"
);
if
(!
hasConsignor
&&
customerSideArray
.
length
!=
0
){
logNote
.
append
(
"发货人绑定会员:"
).
append
(
contactsDO
.
getUsername
()).
append
(
",会员ID:"
).
append
(
userId
).
append
(
";"
);
userId
=
0L
;
logNote
.
append
(
"积分规则客户方不包含发货人"
);
}
if
(
hasConsignor
||
customerSideArray
.
length
==
0
){
userId
=
contactsDO
.
getUserid
();
logNote
.
append
(
"发货人绑定会员:"
).
append
(
contactsDO
.
getUsername
()).
append
(
",会员ID:"
).
append
(
userId
).
append
(
";"
);
}
}
}
// 校验积分上限,添加加分用户列表
...
...
@@ -247,7 +258,12 @@ public class OrderVStrategy extends AbstractScoreRuleStrategy {
logNote
.
append
(
"收货人"
).
append
(
scoreRuleDO
.
getCode
()).
append
(
"规则积分已到上限;"
);
log
.
info
(
"Order in shipping listener: The consignee has reached the maximum score, userId:{}, scoreRuleId:{}"
,
consigneeMemberId
,
scoreRuleDO
.
getId
());
}
else
{
users
.
add
(
consigneeMemberId
);
if
(!
hasConsignee
&&
customerSideArray
.
length
!=
0
){
logNote
.
append
(
"积分规则客户方不包含收货人"
);
}
if
(
hasConsignee
||
customerSideArray
.
length
==
0
){
users
.
add
(
consigneeMemberId
);
}
}
}
return
users
;
...
...
@@ -301,7 +317,7 @@ public class OrderVStrategy extends AbstractScoreRuleStrategy {
if
(!
transportId
.
equals
(
extraInfo
.
getTransportType
()))
{
return
false
;
}
if
(!
isFirstOrder
.
equals
(
extraInfo
.
getFirstOrder
()))
{
if
(
extraInfo
.
getFirstOrder
()!=
2
&&
!
isFirstOrder
.
equals
(
extraInfo
.
getFirstOrder
()))
{
return
false
;
}
String
[]
warehouseIds
=
extraInfo
.
getReceiveAddr
().
split
(
","
);
...
...
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/scoreRule/ScoreRuleServiceImpl.java
View file @
aa45a105
...
...
@@ -19,10 +19,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.scoreRule.ScoreRuleDO;
import
cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO
;
import
cn.iocoder.yudao.module.member.dal.mysql.scoreRule.ScoreRuleMapper
;
import
cn.iocoder.yudao.module.member.dal.redis.scoreRule.ScoreRuleRedisDao
;
import
cn.iocoder.yudao.module.member.enums.ScoreRuleStatusEnum
;
import
cn.iocoder.yudao.module.member.enums.ScoreRuleTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.TransportTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.YesOrNoTypeEnum
;
import
cn.iocoder.yudao.module.member.enums.*
;
import
cn.iocoder.yudao.module.member.service.user.MemberUserService
;
import
cn.iocoder.yudao.module.member.util.ScoreRuleGenCodeUtils
;
import
cn.iocoder.yudao.module.member.vo.scoreRule.*
;
...
...
@@ -301,7 +298,7 @@ public class ScoreRuleServiceImpl extends AbstractService<ScoreRuleMapper, Score
if
(
extraOrderV
==
null
)
{
throw
exception
(
SCORE_RULE_EXTRA_ERROR
);
}
if
(
extraOrderV
.
getFirstOrder
()
!=
YesOrNo
TypeEnum
.
YES
.
ordinal
()
&&
extraOrderV
.
getFirstOrder
()
!=
YesOrNoTypeEnum
.
NO
.
ordinal
())
{
if
(
extraOrderV
.
getFirstOrder
()
!=
YesOrNo
OrAllTypeEnum
.
YES
.
ordinal
()
&&
extraOrderV
.
getFirstOrder
()
!=
YesOrNoOrAllTypeEnum
.
NO
.
ordinal
()
&&
extraOrderV
.
getFirstOrder
()
!=
YesOrNoOrAllTypeEnum
.
ALL
.
ordinal
())
{
throw
exception
(
SCORE_RULE_FIRST_ORDER_ERROR
);
}
if
(
extraOrderV
.
getTransportType
()
!=
OCEAN_LCL
.
getValue
()
&&
extraOrderV
.
getTransportType
()
!=
SPECIAL_LINE_AIR_FREIGHT
.
getValue
())
{
...
...
@@ -331,6 +328,9 @@ public class ScoreRuleServiceImpl extends AbstractService<ScoreRuleMapper, Score
if
(
StringUtils
.
isBlank
(
extraOrderV
.
getOrderEntry
()))
{
throw
exception
(
SCORE_RULE_ORDERENTRY_ERROR
);
}
if
(
StringUtils
.
isBlank
(
extraOrderV
.
getCustomerSide
()))
{
throw
exception
(
SCORE_RULE_CUSTOMERSIDE_ERROR
);
}
verifyOrderVRule
(
extraOrderV
.
getOrderVRule
());
scoreRule
.
setExtra
(
JSONUtil
.
toJsonStr
(
extraOrderV
));
}
else
if
(
scoreRuleType
==
ScoreRuleTypeEnum
.
REGISTER
.
getValue
())
{
...
...
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/vo/scoreRule/ScoreRuleBaseVO.java
View file @
aa45a105
...
...
@@ -31,6 +31,10 @@ public class ScoreRuleBaseVO {
@NotNull
(
message
=
"规则标题英文不能为空"
)
private
String
titleEn
;
@ApiModelProperty
(
value
=
"规则标题法文"
,
required
=
true
)
@NotNull
(
message
=
"规则标题法文不能为空"
)
private
String
titleFr
;
@ApiModelProperty
(
value
=
"规则说明中文"
,
required
=
true
)
@NotNull
(
message
=
"规则说明中文不能为空"
)
private
String
descZh
;
...
...
@@ -39,12 +43,19 @@ public class ScoreRuleBaseVO {
@NotNull
(
message
=
"规则说明英文不能为空"
)
private
String
descEn
;
@ApiModelProperty
(
value
=
"规则说明法文"
,
required
=
true
)
@NotNull
(
message
=
"规则说明法文不能为空"
)
private
String
descFr
;
@ApiModelProperty
(
value
=
"封面图中文"
)
private
String
coverImageZh
;
@ApiModelProperty
(
value
=
"封面图英文"
)
private
String
coverImageEn
;
@ApiModelProperty
(
value
=
"封面图法文"
)
private
String
coverImageFr
;
@ApiModelProperty
(
value
=
"单次获取积分数(订单V值不传)"
,
required
=
true
)
@Min
(
value
=
0
,
message
=
"单次获取积分数不能小于0"
)
private
Integer
getScoreOnce
=
0
;
...
...
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/vo/scoreRule/extra/ScoreRuleOrderVExtraVO.java
View file @
aa45a105
...
...
@@ -9,7 +9,7 @@ import java.util.List;
@Data
@ApiModel
(
"管理后台 - 订单V值额外字段 VO"
)
public
class
ScoreRuleOrderVExtraVO
{
@ApiModelProperty
(
value
=
"是否首单(0是,1否)默认否"
,
required
=
true
)
@ApiModelProperty
(
value
=
"是否首单(0是,1否
,2不限
)默认否"
,
required
=
true
)
private
Integer
firstOrder
=
1
;
@ApiModelProperty
(
value
=
"运输方式(1海运拼柜,3专线空运)字典有"
,
required
=
true
)
private
Integer
transportType
;
...
...
@@ -27,6 +27,8 @@ public class ScoreRuleOrderVExtraVO {
private
List
<
OrderVRule
>
orderVRule
;
@ApiModelProperty
(
value
=
"订单入口(1后台,2APP,3WEB)可多选,逗号拼"
,
required
=
true
)
private
String
orderEntry
;
@ApiModelProperty
(
value
=
"客户方(1发货人,2收货人)可多选,逗号拼"
,
required
=
true
)
private
String
customerSide
;
@Data
public
static
class
OrderVRule
{
...
...
yudao-server/src/main/resources/i18n/messages_en.properties
View file @
aa45a105
...
...
@@ -1075,7 +1075,8 @@ score.rule.share.status.error = score rule share status error
score.rule.extra.error
=
score rule extra error
score.rule.receive.address.error
=
score rule receive address error
score.rule.orderentry.error
=
order entry must not null
score.rule.first.order.error
=
firstOrder must 0 or 1
score.rule.customer.side.error
=
\u
5BA2
\u6237\u
65B9
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
score.rule.first.order.error
=
firstOrder must 0 or 1 or 2
user.address.not.exists
=
user address not exists
user.address.field.error
=
user address field error:{}
...
...
yudao-server/src/main/resources/i18n/messages_fr.properties
View file @
aa45a105
...
...
@@ -1073,7 +1073,8 @@ score.rule.share.status.error=Erreur dans l'\u00E9tat du partage
score.rule.extra.error
=
Erreur dans les champs suppl
\u
00E9mentaires des r
\u
00E8gles de points
score.rule.receive.address.error
=
Erreur dans la liste des points de collecte pour la r
\u
00E8gle V de la commande
score.rule.orderentry.error
=
L'entr
\u
00E9e de la commande ne peut
\u
00EAtre vide
score.rule.first.order.error
=
Le champ "Premi
\u
00E8re commande" doit
\u
00EAtre "Oui (0)" ou "Non (1)"
score.rule.customer.side.error
=
\u
5BA2
\u6237\u
65B9
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
score.rule.first.order.error
=
Le champ "Premi
\u
00E8re commande" doit
\u
00EAtre "Oui (0)", "Non (1)" ou "Tout s
\u
00E9lectionner (2)".
user.address.not.exists
=
L'adresse utilisateur n'existe pas
user.address.field.error
=
Erreur dans le champ d'adresse utilisateur : {}
...
...
yudao-server/src/main/resources/i18n/messages_zh.properties
View file @
aa45a105
...
...
@@ -672,7 +672,7 @@ already.picked.up=\u8BE5\u8BA2\u5355\u5DF2\u63D0\u8D27
lading.not.make
=
\u
63D0
\u5355\u
672A
\u5236\u
4F5C
modify.approval.not.add.prod
=
\u
4FEE
\u6539\u
5BA1
\u6279\u
4E0D
\u
80FD
\u
6DFB
\u
52A0
\u
65B0
\u7684\u5546\u
54C1
modify.approval.not.update.warehouse.in
=
\u5165\u
4ED3
\u
4FEE
\u6539\u
5BA1
\u6279\u
4E2D
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6216\u5220\u9664\u5165\u
4ED3
\u
7EAA
\u
5F55
consignee.phone.is.external
=
\u6536\u
8
d27
\u
4eba
\u
624b
\u
673a
\u
53f7
\u7801\u
5fc5
\u
987b
\u
662f
\u
56fd
\u5916\u7684
consignee.phone.is.external
=
\u6536\u
8
D27
\u
4EBA
\u
624B
\u
673A
\u
53F7
\u7801\u
5FC5
\u
987B
\u
662F
\u
56FD
\u5916\u7684
file.not.upload
=
\u
8BE5
\u6587\u
4EF6
\u
672A
\u
4E0A
\u
4F20
your.customer.information.is.incomplete
=
\u
60A8
\u7684\u
5BA2
\u6237\u
4FE1
\u
606F
\u
672A
\u
5B8C
\u5584\u
FF01
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458\u
FF01
open.sea.customer.cannot.set.air
=
\u
5BA2
\u6237\u3010
{}
\u3011\u5728\u
516C
\u
6D77
\u
4E2D
\u
4E0D
\u
53EF
\u
8BBE
\u
7F6E
\u
662F
\u5426\u
7A7A
\u
8FD0
\u
5BA2
\u6237
...
...
@@ -1076,7 +1076,8 @@ score.rule.share.status.error = \u5206\u4EAB\u72B6\u6001\u9519\u8BEF
score.rule.extra.error
=
\u
79EF
\u5206\u
89C4
\u5219\u
989D
\u5916\u
5B57
\u
6BB5
\u9519\u
8BEF
score.rule.receive.address.error
=
\u
8BA2
\u5355
V
\u
503C
\u
89C4
\u5219\u
63D0
\u
8D27
\u
70B9
\u5217\u8868\u9519\u
8BEF
score.rule.orderentry.error
=
\u
8BA2
\u5355\u5165\u
53E3
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
score.rule.first.order.error
=
\u
662F
\u5426\u9996\u5355\u
5FC5
\u
987B
\u
4E3A
\u
662F
\u
FF080
\u
FF09
\u6216\u5426\u
FF081
\u
FF09
score.rule.customer.side.error
=
\u
5BA2
\u6237\u
65B9
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
score.rule.first.order.error
=
\u
662F
\u5426\u9996\u5355\u
5FC5
\u
987B
\u
4E3A
\u
662F
\u
FF080
\u
FF09,
\u5426\u
FF081
\u
FF09
\u6216\u5168\u9009\u
FF082
\u
FF09
user.address.not.exists
=
\u7528\u6237\u5730\u5740\u
4E0D
\u
5B58
\u5728
user.address.field.error
=
\u7528\u6237\u5730\u5740\u
5B57
\u
6BB5
\u9519\u
8BEF
\u
FF1A{}
...
...
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