Commit cb26e70d by hanghang.wang

解决订单列表状态英文冲突

parent 46e78ba8
...@@ -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>
......
...@@ -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
* *
......
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);
}
}
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;
}
}
...@@ -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;
}
} }
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();
}
}
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);
}
}
...@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment