Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
cb26e70d
Commit
cb26e70d
authored
May 31, 2021
by
hanghang.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解决订单列表状态英文冲突
parent
46e78ba8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
306 additions
and
8 deletions
+306
-8
order-application-service/pom.xml
+1
-1
order-application-service/src/main/java/cn/freemud/constant/RedisKeyConstant.java
+9
-0
order-application-service/src/main/java/cn/freemud/enums/OrderTackCodeFactory.java
+23
-0
order-application-service/src/main/java/cn/freemud/enums/OrderTackCodeRuleEnum.java
+38
-0
order-application-service/src/main/java/cn/freemud/enums/OrderType.java
+16
-6
order-application-service/src/main/java/cn/freemud/manager/OrderTackCodeManager.java
+174
-0
order-application-service/src/test/java/cn.freemud/manager/TackCodeManagerTest.java
+44
-0
shopping-cart-application-service/pom.xml
+1
-1
No files found.
order-application-service/pom.xml
View file @
cb26e70d
...
@@ -133,7 +133,7 @@
...
@@ -133,7 +133,7 @@
<dependency>
<dependency>
<artifactId>
assortment-data-manager
</artifactId>
<artifactId>
assortment-data-manager
</artifactId>
<groupId>
com.freemud.sdk.api.assortment
</groupId>
<groupId>
com.freemud.sdk.api.assortment
</groupId>
<version>
5.
4.4
-SNAPSHOT
</version>
<version>
5.
5.10
-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
cn.freemud.commons
</groupId>
<groupId>
cn.freemud.commons
</groupId>
...
...
order-application-service/src/main/java/cn/freemud/constant/RedisKeyConstant.java
View file @
cb26e70d
...
@@ -88,6 +88,15 @@ public class RedisKeyConstant {
...
@@ -88,6 +88,15 @@ public class RedisKeyConstant {
*/
*/
public
final
static
String
KGD_NO_ORDER_STORE_DATE
=
"obs:no:order:store:date:"
;
public
final
static
String
KGD_NO_ORDER_STORE_DATE
=
"obs:no:order:store:date:"
;
/**
* 支付成功,取餐码key
*/
public
final
static
String
PAY_SUCCESS_TACK_CODE_KEY
=
"pay_success_tack_code_key:"
;
public
final
static
String
TAKECODEKEY
=
"takecode:"
;
/**
/**
* cocoNotMadeGoods:商户号:门店号:yyyy-MM-dd
* cocoNotMadeGoods:商户号:门店号:yyyy-MM-dd
*
*
...
...
order-application-service/src/main/java/cn/freemud/enums/OrderTackCodeFactory.java
0 → 100644
View file @
cb26e70d
package
cn
.
freemud
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.function.Function
;
@Getter
@AllArgsConstructor
public
enum
OrderTackCodeFactory
{
DEFAULT
((
byte
)
99
,((
Integer
code
)
->
new
Integer
(
code
).
toString
()));
private
byte
orderClient
;
private
Function
<
Integer
,
String
>
generateTackCodeFunc
;
public
static
OrderTackCodeFactory
getByOrderClient
(
byte
orderClient
){
return
Arrays
.
stream
(
OrderTackCodeFactory
.
values
())
.
filter
(
e
->
e
.
orderClient
==
orderClient
).
findFirst
()
.
orElseGet
(()
->
OrderTackCodeFactory
.
DEFAULT
);
}
}
order-application-service/src/main/java/cn/freemud/enums/OrderTackCodeRuleEnum.java
0 → 100644
View file @
cb26e70d
package
cn
.
freemud
.
enums
;
/**
* @author freemud
* @title: TackCodeRuleEnum
* @projectName micro_openplatform_service
* @description: TODO
* @date 2021/5/26下午9:11
*/
public
enum
OrderTackCodeRuleEnum
{
RANDOM_NUMBER_ONE
((
byte
)
1
,
"每天第一个随机数,递增1"
),
RANDOM_NUMBER
((
byte
)
2
,
"随机数"
),
THE_CUSTOM
((
byte
)
3
,
"自定义"
);
private
byte
code
;
private
String
message
;
OrderTackCodeRuleEnum
(
byte
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
byte
getCode
()
{
return
code
;
}
public
void
setCode
(
byte
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
}
order-application-service/src/main/java/cn/freemud/enums/OrderType.java
View file @
cb26e70d
...
@@ -20,19 +20,21 @@ import java.util.List;
...
@@ -20,19 +20,21 @@ import java.util.List;
public
enum
OrderType
{
public
enum
OrderType
{
TAKE_OUT
(
1
,
"外卖"
),
TAKE_OUT
(
1
,
"外卖"
,
"takeOut"
),
PRE_ORDER
(
2
,
"预订单"
),
PRE_ORDER
(
2
,
"预订单"
,
"preOrder"
),
MALL
(
3
,
"商城"
),
MALL
(
3
,
"商城"
,
"mall"
),
COLLECT_GOODS
(
4
,
"打包带走"
),
COLLECT_GOODS
(
4
,
"打包带走"
,
"collectGoods"
),
EAT_IN
(
5
,
"店内就餐"
)
EAT_IN
(
5
,
"店内就餐"
,
"eatIn"
)
;
;
private
Integer
code
;
private
Integer
code
;
private
String
desc
;
private
String
desc
;
private
String
tackDesc
;
OrderType
(
Integer
code
,
String
desc
)
{
OrderType
(
Integer
code
,
String
desc
,
String
tackDesc
)
{
this
.
code
=
code
;
this
.
code
=
code
;
this
.
desc
=
desc
;
this
.
desc
=
desc
;
this
.
tackDesc
=
tackDesc
;
}
}
public
static
List
<
Integer
>
getAllCodes
()
{
public
static
List
<
Integer
>
getAllCodes
()
{
...
@@ -86,4 +88,12 @@ public enum OrderType {
...
@@ -86,4 +88,12 @@ public enum OrderType {
public
void
setDesc
(
String
desc
)
{
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
this
.
desc
=
desc
;
}
}
public
String
getTackDesc
()
{
return
tackDesc
;
}
public
void
setTackDesc
(
String
tackDesc
)
{
this
.
tackDesc
=
tackDesc
;
}
}
}
order-application-service/src/main/java/cn/freemud/manager/OrderTackCodeManager.java
0 → 100644
View file @
cb26e70d
package
cn
.
freemud
.
manager
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.enums.OrderType
;
import
cn.freemud.enums.OrderTackCodeRuleEnum
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentTackCodeRule
;
import
com.freemud.api.assortment.datamanager.manager.AssortmentTackCodeRuleManager
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
/**
* @author freemud
* @title: OrderTackCodeManager
* @projectName order-group
* @description: TODO
* @date 2021/5/31上午9:36
*/
@Component
public
class
OrderTackCodeManager
{
@Autowired
private
AssortmentTackCodeRuleManager
assortmentTackCodeRuleManager
;
@Autowired
protected
RedisTemplate
redisTemplate
;
public
final
static
String
numberChar
=
"0123456789"
;
public
final
static
String
numberCharWithoutZero
=
"12345"
;
/**
* 生成取餐码
*
* @param partnerId 商户ID
* @param storeId 门店ID
* @return
*/
public
String
generateTackCode
(
Integer
orderType
,
String
partnerId
,
String
storeId
,
Function
<
Integer
,
String
>
fun
)
{
String
key
=
this
.
getOrderTackCodeKey
(
partnerId
);
String
randomKey
=
getRandomOrderTackCodeKey
(
partnerId
,
storeId
);
// redisTemplate.delete(key);
// redisTemplate.delete(randomKey);
String
rule
=
(
String
)
redisTemplate
.
opsForHash
().
entries
(
key
).
get
(
"rule"
);
AssortmentTackCodeRule
assortmentTackCodeRule
=
new
AssortmentTackCodeRule
();
if
(
Objects
.
isNull
(
rule
)
||
rule
.
isEmpty
())
{
assortmentTackCodeRule
=
assortmentTackCodeRuleManager
.
queryTackCodeRule
(
partnerId
);
if
(
Objects
.
isNull
(
assortmentTackCodeRule
))
{
rule
=
String
.
valueOf
(
OrderTackCodeRuleEnum
.
RANDOM_NUMBER_ONE
.
getCode
());
}
else
{
rule
=
assortmentTackCodeRule
.
getRule
().
toString
();
}
redisTemplate
.
opsForHash
().
put
(
key
,
"rule"
,
rule
);
redisTemplate
.
expire
(
key
,
24
,
TimeUnit
.
HOURS
);
}
if
(
StringUtils
.
isNotEmpty
(
rule
)
&&
rule
.
equals
(
OrderTackCodeRuleEnum
.
RANDOM_NUMBER
.
getCode
()))
{
//6位码
String
number
=
generateNumber
(
6
);
if
(!
redisTemplate
.
opsForHash
().
hasKey
(
randomKey
,
storeId
+
number
))
{
redisTemplate
.
opsForHash
().
put
(
randomKey
,
storeId
+
number
,
number
);
redisTemplate
.
expire
(
randomKey
,
getSecondsNextEarlyMorning
(),
TimeUnit
.
SECONDS
);
return
number
;
}
}
else
if
(
StringUtils
.
isNotEmpty
(
rule
)
&&
rule
.
equals
(
OrderTackCodeRuleEnum
.
THE_CUSTOM
.
getCode
()))
{
//规则自定义
Map
<
Object
,
Object
>
tackCodeSettingMap
=
redisTemplate
.
opsForHash
().
entries
(
randomKey
);
if
(
tackCodeSettingMap
.
isEmpty
())
{
if
(
Objects
.
isNull
(
assortmentTackCodeRule
))
{
assortmentTackCodeRule
=
assortmentTackCodeRuleManager
.
queryTackCodeRule
(
partnerId
);
}
tackCodeSettingMap
.
put
(
"eatInHead"
,
assortmentTackCodeRule
.
getEatInHead
());
tackCodeSettingMap
.
put
(
"eatInCode"
,
assortmentTackCodeRule
.
getEatInCode
());
tackCodeSettingMap
.
put
(
"eatInLength"
,
assortmentTackCodeRule
.
getEatInCode
().
length
());
tackCodeSettingMap
.
put
(
"collectGoodsHead"
,
assortmentTackCodeRule
.
getCollectGoodsHead
());
tackCodeSettingMap
.
put
(
"collectGoodsCode"
,
assortmentTackCodeRule
.
getCollectGoodsCode
());
tackCodeSettingMap
.
put
(
"collectGoodsLength"
,
assortmentTackCodeRule
.
getCollectGoodsCode
().
length
());
tackCodeSettingMap
.
put
(
"takeOutHead"
,
assortmentTackCodeRule
.
getTakeOutHead
());
tackCodeSettingMap
.
put
(
"takeOutCode"
,
assortmentTackCodeRule
.
getTakeOutCode
());
tackCodeSettingMap
.
put
(
"takeOutLength"
,
assortmentTackCodeRule
.
getTakeOutCode
().
length
());
redisTemplate
.
opsForHash
().
putAll
(
randomKey
,
tackCodeSettingMap
);
redisTemplate
.
expire
(
randomKey
,
24
,
TimeUnit
.
HOURS
);
}
//判断订单类型 取头号
String
head
=
""
;
String
code
=
""
;
OrderType
orderTypeEnum
=
OrderType
.
getByCode
(
orderType
);
if
(!
Objects
.
isNull
(
orderTypeEnum
)){
String
tackDesc
=
orderTypeEnum
.
getTackDesc
();
head
=
(
String
)
tackCodeSettingMap
.
get
(
tackDesc
+
"Head"
);
code
=
redisTemplate
.
opsForHash
().
increment
(
key
,
tackDesc
+
"Code"
,
1
).
toString
();
Integer
length
=
(
Integer
)
tackCodeSettingMap
.
get
(
tackDesc
+
"Length"
);
if
(
code
.
length
()
>
length
)
{
redisTemplate
.
opsForHash
().
put
(
key
,
tackDesc
+
"Code"
,
1
);
code
=
String
.
format
(
"%0"
+
length
+
"d"
,
1
);
}
else
{
code
=
String
.
format
(
"%0"
+
length
+
"d"
,
Integer
.
parseInt
(
code
));
}
}
return
head
+
code
;
}
else
{
if
(!
redisTemplate
.
opsForHash
().
hasKey
(
key
,
storeId
))
{
redisTemplate
.
opsForHash
().
put
(
key
,
storeId
,
Integer
.
parseInt
(
generateNumber
(
4
)));
redisTemplate
.
expire
(
key
,
24
,
TimeUnit
.
HOURS
);
}
}
return
fun
.
apply
(
redisTemplate
.
opsForHash
().
increment
(
key
,
storeId
,
1
).
intValue
());
}
public
String
getOrderTackCodeKey
(
String
partnerId
)
{
Date
currentDay
=
new
Date
();
String
todayStr
=
formatDate
(
currentDay
);
StringBuilder
key
=
new
StringBuilder
(
RedisKeyConstant
.
TAKECODEKEY
)
.
append
(
partnerId
)
.
append
(
":"
)
.
append
(
todayStr
);
return
key
.
toString
();
}
/**
* 获取取餐码key
*
* @param partnerId
* @param storeId
* @return
*/
public
String
getRandomOrderTackCodeKey
(
String
partnerId
,
String
storeId
)
{
Date
currentDay
=
new
Date
();
String
todayStr
=
formatDate
(
currentDay
);
StringBuilder
key
=
new
StringBuilder
(
RedisKeyConstant
.
TAKECODEKEY
)
.
append
(
partnerId
)
.
append
(
":"
)
.
append
(
storeId
)
.
append
(
":"
)
.
append
(
todayStr
);
return
key
.
toString
();
}
public
static
Long
getSecondsNextEarlyMorning
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DAY_OF_YEAR
,
1
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
(
cal
.
getTimeInMillis
()
-
System
.
currentTimeMillis
())
/
1000
;
}
public
static
SimpleDateFormat
defaultDateFormater
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
private
String
formatDate
(
Date
date
)
{
return
defaultDateFormater
.
format
(
date
);
}
public
String
generateNumber
(
int
length
)
{
StringBuffer
sb
=
new
StringBuffer
();
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
numberCharWithoutZero
.
charAt
(
random
.
nextInt
(
numberCharWithoutZero
.
length
())));
}
else
{
sb
.
append
(
numberChar
.
charAt
(
random
.
nextInt
(
numberChar
.
length
())));
}
}
return
sb
.
toString
();
}
}
order-application-service/src/test/java/cn.freemud/manager/TackCodeManagerTest.java
0 → 100644
View file @
cb26e70d
package
cn
.
freemud
.
manager
;
import
cn.freemud.adapter.OrderAdapter
;
import
cn.freemud.entities.db.Partner
;
import
cn.freemud.enums.OrderTackCodeFactory
;
import
cn.freemud.service.impl.StoreServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.function.Function
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: PartnerManagerTest
* @Package cn.freemud.manager
* @Description: 简单描述下这个类是做什么用的
* @author: zhenghuan.yang
* @date: 2018/6/22 16:32
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Slf4j
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
TackCodeManagerTest
{
@Autowired
private
OrderTackCodeManager
orderTackCodeManager
;
Function
<
Integer
,
String
>
function
;
@Test
public
void
selectTackCode
(){
String
code
=
orderTackCodeManager
.
generateTackCode
(
1
,
"1864"
,
"1000221"
,
OrderTackCodeFactory
.
getByOrderClient
((
byte
)
2
).
getGenerateTackCodeFunc
());
log
.
debug
(
"code=="
+
code
);
}
}
shopping-cart-application-service/pom.xml
View file @
cb26e70d
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
<dependency>
<dependency>
<artifactId>
assortment-data-manager
</artifactId>
<artifactId>
assortment-data-manager
</artifactId>
<groupId>
com.freemud.sdk.api.assortment
</groupId>
<groupId>
com.freemud.sdk.api.assortment
</groupId>
<version>
5.
4.4
-SNAPSHOT
</version>
<version>
5.
5.10
-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<groupId>
com.freemud.application.service.sdk
</groupId>
...
...
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