Commit 7442dafe by dingkai

Merge branch 'master' into feature/mall-20191211-dingkai

# Conflicts:
#	shopping-cart-application-service/pom.xml
parents ef5b42b4 03f142e0
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<webroots />
<sourceRoots>
<root url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/java" />
<root url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/target/classes" />
<output-test url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/target/test-classes" />
<content url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk">
<sourceFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.8.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.16.16" level="project" />
<orderEntry type="library" name="Maven: cn.freemud.commons:commons-redis:1.5.1-release" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.32" level="project" />
<orderEntry type="library" name="Maven: cn.freemud.commons:commons-base:1.5.1-release" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.14" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.8" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:1.5.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.10" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.freemud.application.service.sdk:productcenter-sdk:2.4.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpcore:4.4.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.3.5.Final" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.cloud:spring-cloud-commons:1.3.1.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.security:spring-security-crypto:4.2.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.11" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: ch.qos.logback:logback-access:1.1.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.freemud.application.service.sdk:couponcenter-sdk:1.1.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.cloud:spring-cloud-netflix-core:1.3.1.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.freemud.application.service.sdk:sdk-common-base:1.4.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.amqp:spring-amqp:1.7.2.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.amqp:spring-rabbit:1.7.2.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-messaging:4.3.8.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.rabbitmq:http-client:1.1.1.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.rabbitmq:amqp-client:4.0.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.8.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.retry:spring-retry:1.2.0.RELEASE" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: cn.freemud.commons:commons-amqp:2.1.0-release" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-amqp:1.5.3.RELEASE" level="project" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>order-group</artifactId>
<groupId>cn.freemud</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!--<dependency>-->
<!--<groupId>com.alibaba</groupId>-->
<!--<artifactId>fastjson</artifactId>-->
<!--<version>1.2.32</version>-->
<!--</dependency>-->
<dependency>
<groupId>cn.freemud.commons</groupId>
<artifactId>commons-redis</artifactId>
<version>1.5.1-release</version>
</dependency>
<dependency>
<groupId>cn.freemud.commons</groupId>
<artifactId>commons-base</artifactId>
<version>1.5.1-release</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId>
<version>2.4.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>1.1.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId>
<version>1.4.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum ActivityChannelEnum {
// pickup-到店取餐 deliver-外卖
pickup("pickup", "到店取餐"),
delivery("delivery", "外卖");
private String code;
private String desc;
ActivityChannelEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CartResponseConstant
* @Package com.freemud.sdk.api.assortment.shoppingcart.constant
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/11 11:07
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public enum CartResponseConstant {
/**
* 通用状态码
*/
SUCCESS("100", "ok"),
FAIL("101","fail"),
/**
* 购物车状态码
*/
SHOPPING_CART_ATTRIBUTE_NOT_EXISTS("44009", "商品属性不存在");
private String code;
private String message;
CartResponseConstant(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CommonsConstant
* @Package com.freemud.sdk.api.assortment.shoppingcart.constant
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/15 15:17
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public class CommonsConstant {
public final static String COUPON_PREFIX = "spq";
public final static Integer WEIGHT_PRODUCT = 1;
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.com
*
* @version V1.0
* @Title:
* @Package: com.freemud.card.sdk.comm
* @Descripttion:
* @author: genyou.cui
* @date: 2018/12/17 14:06
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
public interface CouponConstant {
/**
* 是否可用
*/
Integer CAN_USE = 0;//可用
Integer CAN_NOT_USE = 1;//不可用
Integer LIMIT_USE = 2;//商品限制可用
String PRODUCT_WHITE = "0";
String PRODUCT_BLACK = "1";
String VIRTUAL_PRODUCT = "1234567";
String COUPON_PARTNER_APP_KEY = "kgd:coupon:appKey:partner:";
BigDecimal HUNDRED = new BigDecimal(100);
enum FmStatusCode {
COUPON_NORMAL(10, "该券正常"),
COUPON_EXISTORNOTSTART(11, "优惠券不存在或者活动未开始"),
COUPON_EXPIRED(12, "优惠券已过期"),
STATUS_RECOVERY(14, "优惠券已经核销或者不存在"),
STATUS_CODE_15(15, "优惠券未激活"),
STATUS_CODE_16(16, "该优惠券不能和其它优惠券混合使用"),
STATUS_CODE_21(21, "参数错误"),
STATUS_CODE_31(31, "商品不匹配或核销数量超出可用数量"),
STATUS_CODE_32(32, "优惠券必须一次性核销"),
TRANS_NOT_EXIST(41, "交易不存在"),
STATUS_CODE_51(51, "该门店不适用此券"),
STATUS_CODE_52(52, "商品类别不能使用优惠券"),
SUCCESS(100, "成功"),
STATUS_CODE_101(101, "部分凭证码核销失败"),
STATUS_CODE_102(102, "多次请求,幂等返回第一次响应数据"),
STATUS_CODE_201(201, "支付账号不存在"),
STATUS_CODE_202(202, "账户异常"),
STATUS_CODE_203(203, "账号余额不足"),
STATUS_CODE_204(204, "交易超时或者支付平台异常"),
STATUS_CODE_205(205, "条码无效"),
STATUS_CODE_206(206, "退款金额高于支付金额"),
STATUS_CODE_207(207, "操作不支持"),
STATUS_CODE_500(500, "系统错误"),
STATUS_CODE_505(505, "未知返回码"),
STATUS_CODE_506(506, "验证失败");
FmStatusCode(int statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
private int statusCode;
private String message;
public int getStatusCode() {
return statusCode;
}
public String getMessage() {
return message;
}
public static FmStatusCode getInfoByCode(int code) {
for (FmStatusCode fmStatusCode : values()) {
if (code == fmStatusCode.getStatusCode()) {
return fmStatusCode;
}
}
return null;
}
}
enum MemberCode {
SUCCESS("100", "成功"),
ERROR("101", "获取失败"),
;
private String code;
private String msg;
MemberCode(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
enum SourceFlag {
wechat("60"),
xinmeida("61"),
tmall("62"),
isaas("63"),
;
private String code;
SourceFlag(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CreateOrderType
* @Package cn.freemud.enums
* @Description:
* @author: liming.guo
* @date: 2018/7/3 13:35
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum CreateOrderType {
COLLECT_GOODS(1, "到店自取"),
TAKE_OUT(2, "外卖");
private Integer code;
private String desc;
public static CreateOrderType getByCode(Integer code) {
if (code == null) {
return null;
}
for (CreateOrderType createOrderType : values()) {
if (createOrderType.getCode().equals(code)) {
return createOrderType;
}
}
return null;
}
CreateOrderType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GoodsTypeEnum
* @Package cn.freemud.enums
* @Description:
* @author: song.cai
* @date: 2019/1/10 17:45
* @version V1.0
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum GoodsTypeEnum {
COMMON_GOODS(1, "正常商品"),
COUPON_GOODS(2, "商品券"),
SET_MEAL_GOODS(3,"套餐商品"),
SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品");
private Integer goodsType;
private String desc;
GoodsTypeEnum(Integer goodsType, String desc) {
this.goodsType = goodsType;
this.desc = desc;
}
public Integer getGoodsType() {
return goodsType;
}
public String getDesc() {
return desc;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
/**
* All rights Reserved, Designed By www.freemud.com
*
* @version V1.0
* @Title:
* @Package: com.freemud.sdk.api.assortment.shoppingcart.constant
* @Descripttion:
* @author: cuigenyou
* @date: 2019/9/4 17:49
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
public enum MealClearOperationEnum {
CLEAR_LOCK(1,"clearLock"),
RECOVER(2,"recoverLock"),
CLEAR_ALL(3,"clearAll"),
;
private Integer operationType;
private String method;
MealClearOperationEnum(Integer operationType, String method) {
this.operationType = operationType;
this.method = method;
}
public Integer getOperationType() {
return operationType;
}
public String getMethod() {
return method;
}
public static MealClearOperationEnum getByCode(Integer operationType) {
for (MealClearOperationEnum type : values()) {
if (type.getOperationType().equals(operationType)) {
return type;
}
}
return null;
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderChannelType
* @Package cn.freemud.enums
* @Description:
* @author: liming.guo
* @date: 2018/7/3 15:06
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum OrderChannelType {
SAAS("saas", "saas小程序"),
IMG("img", "爱马哥小程序");
private String code;
private String desc;
OrderChannelType(String code, String desc) {
this.code = code;
this.desc = desc;
}
public static OrderChannelType getByCode(String code) {
for (OrderChannelType type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
return null;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum ProductStatus {
// 1下架/2上架/3售罄/4删除/5上架不可售(上架状态但是不在可售时间范围)
SALEON(2, "上架");
private Integer code;
private String desc;
ProductStatus(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum ProductType {
NormalProduct(1, "到店取餐"),
SetMeal(6, "套餐"),
IncreasedPackage(7, "加价套餐"),
MultiSpecificationProduct(10, "多规格商品");
private Integer code;
private String desc;
private ProductType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return this.code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return this.desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
\ No newline at end of file
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: RedisKeyConstant
* @Package cn.freemud.constant
* @Description: redisKey相关的常量
* @author: song.cai
* @date: 2018/12/17 12:48
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public class RedisKeyConstant {
/**
* 用户购物车在redis的key前缀
*/
public final static String SAAS_SHOPPINGCART_KEY_PREFIX = "saas:user:info:cart:goods:";
/**
* 用户购物车在redis的key前缀
*/
public final static String SAAS_USER_INFO_CART_CARTADDPRODUCT = "saas:user:info:cart:cartAddProduct:goods:";
/**
* 用户购物车总价在redis的key前缀
*/
public final static String SAAS_SHOPPINGCART_AMOUNT_PREFIX = "saas:user:info:cart:amount:goods:";
/**
* 商品的信息前缀
*/
public final static String SAAS_GOODS_KEY_PREFIX = "saas:goods:goods:";
/**
* 商品的缓存时间
*/
public final static long GOODS_CACHE_SECONDS = 10;
/**
* kgd:meal:member:{partnerId}:{storeId}:{tableNum}
* 围餐人员hashKey
*/
public static final String MEAL_MEMBER_HASH_KEY = "kgd:meal:member:{0}:{1}:{2}";
/**
* kgd:meal:cart:ver:{partnerId}:{storeId}:{tableNum}
* 围餐购物车版本号缓存
*/
public static final String MEAL_CART_VER_KEY = "kgd:meal:cart:ver:{0}:{1}:{2}";
/**
* kgd:meal:cart:{partnerId}:{storeId}:{tableNum}
* 购物车hashKey
*/
public final static String MEAL_CART_BASE_HASH_KEY = "kgd:meal:cart:{0}:{1}:{2}";
/**
* kgd:meal:lock:{partnerId}:{storeId}:{tableNum}
* 下单锁定购物车key
*/
public final static String MEAL_CART_LOCK_KEY = "kgd:meal:lock:{0}:{1}:{2}";
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ShoppingCartConstant
* @Package cn.freemud.constant
* @Description:
* @author: song.cai
* @date: 2019/1/12 1:39
* @version V1.0
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public class ShoppingCartConstant {
public final static String SHOPPING_CART_INVALID_GOODS_EXIST = "有商品不在售卖状态,请重新提交结算";
public final static String SHOPPING_CART_ACTIVITY_CHANGE = "商品价格有变动,将按照最新价格计算哦";
public final static String HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON = "该商品券与其他活动不同享,购物车中已优惠的商品将恢复原价";
public final static String HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS = "已选商品券,与其他优惠商品不同享,商品将恢复原价";
public final static String ONE_TRADE_CAN_ONLY_USE_ONE_GOODS_COUPON = "一笔交易仅允许同时使用一张商品券";
public final static String ORDER_WAY_CHANGE = "切换点餐方式,商品库存和价格等可能会发生变化。";
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: StoreItemStatus
* @Package cn.freemud.enums
* @Description:
* @author: liming.guo
* @date: 2018/6/14 10:45
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum StoreItemStatus {
PULL_OFF(1, "下架"),
PUT_ON_SALE(2, "上架"),
SELL_OUT(3, "售罄");
private Integer code;
private String desc;
StoreItemStatus(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static StoreItemStatus getByCode(Integer code) {
if (code == null) {
return null;
}
for (StoreItemStatus storeItemStatus : values()) {
if (storeItemStatus.getCode().equals(code)) {
return storeItemStatus;
}
}
return null;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.constant;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: VersionUtils
* @Package com.freemud.sdk.api.assortment.shoppingcart.constant
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/15 14:27
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public class VersionUtils {
public static final String VER_1 = "1";
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityClassifyCouponBean {
/**
* 优惠券总数量
*/
private Integer couponNum;
/**
* 可用优惠券信息
*/
private Integer usableCouponNum;
private List<ActivityCouponBean> usableCoupons;
/**
* 不可用优惠券信息
*/
private Integer disableCouponNum;
private List<ActivityCouponBean> disableCoupons;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class ActivityCouponBean {
/**
* 券是否选中 0-否 1-是
*/
private Integer selected;
/**
* 券码
*/
private String couponCode;
/**
* 优惠券名称
*/
private String couponName;
/**
* 到期日期
*/
private String endTime;
/**
* 优惠金额
*/
private String discountAmount;
/**
* 满减描述
*/
private String thresholdDesc;
/**
* 活动描述
*/
private String activityDesc;
/**
* 不可用原因
*/
private String unusedReason;
/**
* 活动code
*/
private String activityCode;
/**
* 0-商品券 1-代金券 3-折扣券
*/
private Integer couponType;
/**
* 日期描述
*/
private String dateDescribe;
/**
* 优惠券明细
*/
private GetMemberCouponListResponseVo.MemberCouponDetail detail;
}
\ No newline at end of file
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ActivityTip
* @Package cn.freemud.entities.vo
* @Description: 购物车活动Tip
* @author: song.cai
* @date: 2018/12/28 19:15
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
@Data
public class ActivityTip {
/**
* 活动号
*/
private String activityCode;
/**
* 活动名称
*/
private String activityName;
/**
* 活动类型:
* 1-整单满减
* 11-每满减
* 12-阶梯满减
* 13-新用户立减
* 2-单品特价
* 21-单品折扣
* 3-优惠券
* 5-整单满金额折
* 51-每满金额折
* 52-阶梯满金额折
* 53-第M件/杯N折
* 6-买M赠N
* 7-满额赠券
* 8-满N件换购
* 81-满额换购
* 82-阶梯满数量打折
* 100-阶梯满数量打折
* 101-整单满数量打折
* 102-阶梯单品满N件打折
* 103-阶梯单品满M件减N元
* 200-X元Y件
*/
private Integer activityType;
/**
*
*/
private Integer maxNum;
private Integer minNum;
/**
* 1.5.5版本添加
* 每单可以参与买一赠一商品总数
*/
private Integer activityQty;
/**
* 1.5.5版本添加
* 购物车中参与买一赠一商品个数
*/
private Integer activityCartQty;
/**
* 1.5.5版本添加
* 购物车中属于买一赠一商品的数据
*/
private List<String> activitySpuIds;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CartAddItem
* @Package com.freemud.product.dto
* @Description:
* @author: ypf
* @date: 2018/5/2 14:15
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class CartAddItem {
/**
* 购物车item id
*/
private String cartItemId;
/**
* id spuId
*/
private String id;
/**
* 数量
*/
private Integer qty;
/**
* 数量
*/
private Integer isMaster;
/**
* 规格编号 skuId
*/
private String specId;
/**
* 附加商品集
*/
private List<CartExtra> addExtra;
/**
* 商品折扣信息
*/
private DiscountMessage discountMessage;
@Data
public static class DiscountMessage {
private String spuId;
private String skuId;
private String productName;
/**
* 活动id
*/
private Long activityId;
/**
* 每单限购数量
*/
private int limtBuyCountEachOrder;
/**
* 活动商品总库存
*/
private long inventoryNumber;
/**
* 活动商品剩余库存
*/
private Integer remainStock;
/**
* 折扣后的价格
*/
private long discountPrice;
/**
* 原价
*/
private long originPrice;
/**
* 享受折扣数量
*/
private int discountQty;
}
}
\ No newline at end of file
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CartExtra
* @Package com.freemud.product.dto
* @Description:
* @author: ypf
* @date: 2018/5/2 14:15
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class CartExtra {
/**
* id
*/
private String id;
/**
* 数量
*/
private Integer qty;
/**
* 套餐id
*/
private String groupId;
private String name;
}
\ No newline at end of file
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CartGoods
* @Package cn.freemud.entities.vo
* @Description:
* @author: song.cai
* @date: 2018/12/28 16:45
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
@Data
public class CartGoods {
/**
* 购物车一行的Id(后台生成)
*/
private String cartGoodsUid = UUID.randomUUID().toString();
/**
* 单规格spuId,多规格skuId
*/
private String goodsId;
/**
* 1.正常商品,2.商品券,3.套餐商品
*/
private Integer goodsType;
/**
* 1:称重菜
*/
private boolean weightType;
/**
* 单位
*/
private String unit;
private String spuId;
private String skuId;
/**
* 所有属性attributeId的拼接
*/
private String specProductId;
/**
* 购物车一行商品的原单价
*/
private Long originalPrice;
/**
* 购物车一行商品的现单价
*/
private Long finalPrice;
/**
* 购物车一行商品的包装费
*/
private Long packPrice;
/**
* 购物车一行商品的原总价
*/
private Long originalAmount;
/**
* 购物车一行商品的现总价
*/
private Long amount;
/**
* 购物车一行商品的数量
*/
private Integer qty;
/**
* 购物车一行商品的名称
*/
private String name;
/**
* 商品的spuName
*/
private String spuName;
/**
* 商品的skuName
*/
private String skuName;
/**
* 购物车一行商品的副名称
*/
private String subName;
/**
* 商品图片URL
*/
private String pic;
/**
* 配料或属性
*/
private List<CartGoodsExtra> extra;
/**
* 创建时间(mili)
*/
private long createTimeMili = System.currentTimeMillis();
/**
* 1.5.5版本添加
* 商品参与活动类型(61:买一赠一)
*/
private Integer activityType;
/**
* 1.6.0 版本增加 节点ID
*/
private String nodeId;
/**
* 1.6.0 版本增加 分类名
*/
private String categoryName;
/**
* 是否限制库存
* 用于创建订单时,是否扣减库存
*/
private boolean isStockLimit;
/**
* 第三方商品编码
*/
private String customerCode;
/**
* 套餐固定商品
*/
private List<ComboxGoods> productComboList;
/**
* 套餐可选商品
*/
private List<ComboxGoods> productGroupList;
@Data
public final static class CartGoodsExtra {
/**
* 属性Id
*/
private String attributeId;
/**
* 属性名
*/
private String attributeName;
}
@Data
public final static class ComboxGoods{
/**
* 单规格spuId,多规格skuId
*/
private String goodsId;
private String skuId;
private String skuName;
/**
* 所有属性attributeId的拼接
*/
private String specProductId;
/**
* 购物车一行商品的原单机
*/
private Long originalPrice;
/**
* 购物车一行商品的现单价
*/
private Long finalPrice;
/**
* 购物车一行商品的包装费
*/
private Long packPrice;
/**
* 购物车一行商品的原价
*/
private Long originalAmount;
/**
* 购物车一行商品的现价
*/
private Long amount;
/**
* 购物车一行商品的数量
*/
private Integer qty;
/**
* 购物车一行商品的名称
*/
private String name;
/**
* 商品的spuName
*/
private String spuName;
/**
* 购物车一行商品的副名称
*/
private String subName;
/**
* 商品图片URL
*/
private String pic;
/**
* 第三方商品编码
*/
private String customerCode;
/**
* 1:称重菜
*/
private boolean weightType;
/**
* 单位
*/
private String unit;
/**
* 配料或属性
*/
private List<CartGoodsExtra> extra;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
CartGoods cartGoods = (CartGoods) o;
return Objects.equals(goodsId, cartGoods.goodsId) &&
Objects.equals(goodsType, cartGoods.goodsType) &&
Objects.equals(spuId, cartGoods.spuId) &&
Objects.equals(skuId, cartGoods.skuId) &&
Objects.equals(specProductId, cartGoods.specProductId) &&
Objects.equals(originalPrice, cartGoods.originalPrice) &&
Objects.equals(packPrice, cartGoods.packPrice) &&
Objects.equals(name, cartGoods.name) &&
Objects.equals(subName, cartGoods.subName) &&
Objects.equals(pic, cartGoods.pic) &&
Objects.equals(extra, cartGoods.extra);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), goodsId, goodsType, spuId, skuId, specProductId, originalPrice, packPrice, name, subName, pic, extra);
}
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CartGoodsStates
* @Package com.freemud.sdk.api.assortment.shoppingcart.domain
* @Description:
* @author: yuhao.chi
* @date: 2019/4/15 16:05
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class CartGoodsStates {
/**
* 价格变化
*/
boolean priceChanged;
/**
* 非法商品
*/
boolean hasInvalidGoods;
/**
* 点餐方式
*/
boolean orderWayFlag;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import com.freemud.sdk.api.assortment.shoppingcart.constant.MealClearOperationEnum;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CartParamDto
* @Package com.freemud.sdk.api.assortment.shoppingcart.domain
* @Description:
* @author: yuhao.chi
* @date: 2019/4/10 15:06
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class CartParamDto {
private String partnerId;
private String sessionId;
private String userId;
private String storeId;
private String tableNumber;
List<CartGoods> cartGoodsList;
private String cartGoodsUid;
private Integer qty;
private MealClearOperationEnum operationType;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title:
* @Package: com.freemud.card.sdk.vo.coupon
* @Description:
* @author: genyou.cui
* @date: 2018/12/24 15:34
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class CouponAvailableReqVo {
private String partnerId;
private String merchantId;
/**
* 门店所属城市
*/
private String city;
/**
* 当前门店id
*/
private String storeId;
/**
* 券号集
*/
private List<String> couponCodes;
/**
* 购物车总金额
*/
private Integer totalAmount;
private List<Product> productList;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CouponAvailableRespVo
* @Package com.freemud.sdk.api.assortment.shoppingcart.domain
* @Description:
* @author: yuhao.chi
* @date: 2019/4/17 10:42
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class CouponAvailableRespVo {
private Integer result;
private String msg;
private List<CouponStateVo> couponStateList;
public CouponAvailableRespVo() {
}
public CouponAvailableRespVo(Integer result, String msg) {
this.result = result;
this.msg = msg;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title:
* @Package: com.freemud.card.sdk.vo.coupon
* @Description:
* @author: genyou.cui
* @date: 2018/12/24 15:52
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class CouponStateVo {
/**
* 券号
*/
private String couponCode;
private Integer type;
/**
* 状态
* 0 可用 1 不可用 2 限制可用
*/
private Integer state;
/**
* 不可用原因
*/
private String message;
/**
* 最小金额 分
*/
private Integer minAmount;
/**
* 数量
*/
private Integer amount;
/**
* 活动折扣价格 分
*/
private Integer priceDiscount;
/**
* 原价 分
*/
private Integer originalPrice;
/**
* 折扣百分比
*/
private Integer discount;
/**
* 限制类型
* 0 白名单 1 黑名单
*/
private String limitType;
/**
* 可用商品
*/
private List<Product> productList;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GetMemberCouponListRequestDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: song.cai
* @date: 2018/12/24 16:49
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@NoArgsConstructor
public class GetMemberCouponListResponseVo {
/**
* 总页数
*/
private Integer pageCount;
/**
* 总数
*/
private Integer totalRecord;
/**
* 优惠券列表
*/
private List<MemberCoupon> coupons;
@Data
public final static class MemberCoupon {
/**
* 优惠券ID
*/
private String couponId;
/**
* 优惠券号
*/
private String couponCode;
/**
* 活动号
*/
private String activityCode;
/**
* 是否展示加入卡包按钮(0:不展示,1:添加到卡包,2:已添加)
*/
private String addCardFlag;
/**
* 优惠券名称
*/
private String activityName;
/**
* 生效开始时间(yyyy-MM-dd)
*/
private String startTime;
/**
* 生效结束时间(yyyy-MM-dd)
*/
private String endTime;
/**
* 日期描述
*/
private String dateDescribe;
/**
* 折扣百分比(折扣券时有)
*/
private BigDecimal percentDiscount;
/**
* 优惠券金额(代金券)
*/
private Long priceOriginal;
/**
* 最低金额(满多少可用)
*/
private Long minAmount;
/**
* 优惠券使用说明
*/
private String remark;
/**
* 满多少可用描述
*/
private String thresholdDesc;
/**
* 券类型:
* 0:商品券;1:代金券;2:折扣券
*/
private Integer type;
/**
* 发码时间
*/
private String createTime;
/**
* 核销时间
*/
private String redeemTime;
/**
* 状态
*/
private Integer status;
/**
* 券详情
*/
private MemberCouponDetail detail;
}
@Data
public final static class MemberCouponDetail{
/**
* 生效开始时间(yyyy-MM-dd)
*/
private String startTime;
/**
* 生效结束时间(yyyy-MM-dd)
*/
private String endTime;
/**
* 优惠券名称
*/
private String activityName;
/**
* 优惠券使用说明
*/
private String remark;
/**
* 金额描述
*/
private String amountDesc;
/**
* 券条形码
*/
private String couponBarCode;
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GetMenuResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/7/10 16:23
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class GetMenuByIdsResponseDto {
private DataBean data;
private Integer errcode;
private String errmsg;
@NoArgsConstructor
@Data
public static class DataBean {
/**
* 渠道 beiguo saas
*/
private String channel;
private String dateStatus;
private String endTime;
private String menuCode;
private String menuId;
private String name;
private String partnerId;
private String startTime;
private String storeId;
private String type;
private List<MenuDetailDto> menuDetailDtos;
@Data
public static class MenuDetailDto {
private String childrenNum;
private Integer hasChild;
private String icon;
private String level;
private String menuId;
private String name;
private String nid;
private String options;
private String productId;
private String remark;
private String sequence;
private String type;
}
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GetMemuCategoryInfoDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/16 9:45
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GetMenuCategoryByIdsDto {
/**
* 当前时间 比如2019-04-25 22:00:00"
*/
private String businessDate;
/**
* 菜单渠道
*/
private String channelType;
/**
* 商户ID
*/
private String partnerId;
/**
* 门店ID
*/
private String shopId;
private List<String> productIds;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GetProductInfoDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/16 19:52
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
@Data
public class GetProductInfoDto {
/**
* 商户ID
*/
private String partnerId;
/**
* 门店ID
*/
private String shopId;
/**
* 商品ID
*/
private List<String> productIds;
/**
* 商品信息类型 1 为基础信息 2 为详细信息
*/
private Integer productInfoType;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title:
* @Package: com.freemud.card.sdk.vo
* @Description:
* @author: genyou.cui
* @date: 2018/12/24 15:43
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class Product extends ProductBaseVo {
/**
* 品牌code
*/
private String brandCode;
/**
* 类目
*/
private String categoryCode;
}
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title:
* @Package: com.freemud.card.sdk.vo
* @Description:
* @author: genyou.cui
* @date: 2018/12/24 15:43
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class ProductBaseVo {
private String productId;
private Integer amount;
private Integer quantity;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ProductInfosDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/28 21:11
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class ProductInfosDto {
private DataBean data;
private Integer errcode;
private Integer code;
private String errmsg;
@NoArgsConstructor
@Data
public static class DataBean {
private Integer count;
private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean> products;
}
}
\ No newline at end of file
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ShoppingCartUpdateRequestVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: ping.wu
* @date: 2018/5/22 10:42
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.Data;
import java.util.List;
@Data
public class ShoppingCartGoodsResponseVo {
/**
* 商品额外的属性
*/
List<CartGoods> products;
/**
* 商品总数
*/
private Integer productsCount;
/**
* 活动信息
*/
private ActivityTip activityTip;
/**
* 原总价
*/
private Long originalTotalAmount;
/**
* 现总价
*/
private Long totalAmount;
/**
* 总折扣价
*/
private Long totalDiscountAmount;
/**
* 包装费
*/
private Long packAmount;
/**
* 优惠券折扣
*/
private Long couponDiscount;
/**
* 满减折扣
*/
private Long fullDiscount;
/**
* 前端用来提示的信息
*/
private String toastMsg;
/**
* 购物车中商品价格或有效性是否发生变化
*/
private Boolean changed;
/**
* 可用优惠券列表
*/
private ActivityClassifyCouponBean availableCoupon;
private ActivityTip buyOneGetActivity;
/**
* 购物车是否有非法商品或价格变动
*/
private CartGoodsStates cartGoodsStates;
}
package com.freemud.sdk.api.assortment.shoppingcart.exception;
import com.freemud.application.sdk.api.exception.IgnoreErrorAnnotation;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant;
import lombok.Data;
/**
* 自定义服务异常抛出
* message 错误信息
*/
@Data
@SuppressWarnings("serial")
@IgnoreErrorAnnotation
public class ServiceException extends RuntimeException {
private CartResponseConstant constant;
private String message;
public ServiceException(CartResponseConstant constant) {
this.constant = constant;
this.message = constant.getMessage();
}
public ServiceException(CartResponseConstant constant, String message) {
this.constant = constant;
this.message = message;
}
}
package com.freemud.sdk.api.assortment.shoppingcart.request;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods;
import com.freemud.sdk.api.assortment.shoppingcart.domain.ShoppingCartGoodsResponseVo;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CheckCartRequest
* @Package com.freemud.sdk.api.assortment.shoppingcart.request
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/15 14:18
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class CheckCartRequest {
private List<CartGoods> cartGoodsList;
private String partnerId;
private String storeId;
private ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo;
private Integer orderWay;
private String trackingNo;
private String tableNumber;
}
package com.freemud.sdk.api.assortment.shoppingcart.request;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved; Designed By www.freemud.cn
*
* @version V1.0
* @Title: GetProductInfoRequest
* @Package com.freemud.sdk.api.assortment.shoppingcart.request
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/15 9:45
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class GetProductInfoRequest {
String partnerId;
String storeId;
List<String> goodsIds;
String trackingNo;
}
package com.freemud.sdk.api.assortment.shoppingcart.util;
import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CartResponseUtil
* @Package com.freemud.sdk.api.assortment.shoppingcart.util
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/11 11:02
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public class CartResponseUtil {
public static <T> BaseResponse<T> success() {
return new BaseResponse<>(Version.VERSION_1, CartResponseConstant.SUCCESS.getCode(), "success");
}
public static <T> BaseResponse<T> success(T t) {
return new BaseResponse<>(CartResponseConstant.SUCCESS.getCode(), "success", Version.VERSION_1, t);
}
public static <T> BaseResponse<T> error(String message) {
return new BaseResponse<>(Version.VERSION_1, CartResponseConstant.FAIL.getCode(), message);
}
}
package com.freemud.sdk.api.assortment.shoppingcart.util;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* @author sunjiajie
*/
public class DateTimeUtils {
public static final String FORMAT_YYYY_MM_DD_HHMMSS = "yyyy-MM-dd HH:mm:ss";
public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
/**
* 返回当前的日期
*
* @return
*/
public static LocalDate getCurrentLocalDate() {
return LocalDate.now();
}
/**
* 返回当前日期时间
*
* @return
*/
public static LocalDateTime getCurrentLocalDateTime() {
return LocalDateTime.now();
}
/**
* 返回当前日期字符串 yyyyMMdd
*
* @return
*/
public static String getCurrentDateStr() {
return LocalDate.now().format(DATE_FORMATTER);
}
/**
* 返回当前时间字符串 HHmmss
*
* @return
*/
public static String getCurrentTimeStr() {
return LocalDateTime.now().format(TIME_FORMATTER);
}
/**
* 返回当前日期时间字符串 yyyyMMddHHmmss
*
* @return
*/
public static String getCurrentDateTimeStr() {
return LocalDateTime.now().format(DATETIME_FORMATTER);
}
/**
* 将date转为string类型
* @param date
* @param pattern
* @return
*/
public static String getDateStr(Date date, String pattern) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(pattern);
return localDateTime.format(timeFormatter);
}
/**
* 返回当前日期
* @param dateStr
* @param pattern
* @return
*/
public static Date parseDate(String dateStr, String pattern) {
ZoneId zoneId = ZoneId.systemDefault();
try {
// 默认先尝试解析成带时间的date
return parseDateTime(dateStr, pattern);
} catch (DateTimeParseException e) {
LocalDate localDate = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
ZonedDateTime zdt = localDate.atStartOfDay(zoneId);
return Date.from(zdt.toInstant());
}
}
public static void main(String[] args) {
Date date = parseDate("2019-01-01 11", "yyyy-MM-dd HH");
System.out.println(date);
}
/**
* 返回当前日期(包含时间)
* @param dateTimeStr
* @param pattern
* @return
*/
private static Date parseDateTime(String dateTimeStr, String pattern) {
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern(pattern));
ZonedDateTime zdt = localDateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
}
public static LocalDate parseLocalDate(String dateStr, String pattern) {
return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
}
public static LocalDateTime parseLocalDateTime(String dateTimeStr, String pattern) {
return LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern(pattern));
}
/**
* 日期相隔天数
*
* @param startDateInclusive
* @param endDateExclusive
* @return
*/
public static int periodDays(LocalDate startDateInclusive, LocalDate endDateExclusive) {
return Period.between(startDateInclusive, endDateExclusive).getDays();
}
/**
* 日期相隔小时
*
* @param startInclusive
* @param endExclusive
* @return
*/
public static long durationHours(Temporal startInclusive, Temporal endExclusive) {
return Duration.between(startInclusive, endExclusive).toHours();
}
/**
* 日期相隔分钟
*
* @param startInclusive
* @param endExclusive
* @return
*/
public static long durationMinutes(Temporal startInclusive, Temporal endExclusive) {
return Duration.between(startInclusive, endExclusive).toMinutes();
}
/**
* 日期相隔毫秒数
*
* @param startInclusive
* @param endExclusive
* @return
*/
public static long durationMillis(Temporal startInclusive, Temporal endExclusive) {
return Duration.between(startInclusive, endExclusive).toMillis();
}
/**
* 是否当天
*
* @param date
* @return
*/
public static boolean isToday(LocalDate date) {
return getCurrentLocalDate().equals(date);
}
/**
* 获取本月的第一天
*
* @return
*/
public static String getFirstDayOfThisMonth() {
return getCurrentLocalDate().with(TemporalAdjusters.firstDayOfMonth()).format(DATE_FORMATTER);
}
/**
* 获取本月的最后一天
*
* @return
*/
public static String getLastDayOfThisMonth() {
return getCurrentLocalDate().with(TemporalAdjusters.lastDayOfMonth()).format(DATE_FORMATTER);
}
/**
* 获取2017-01的第一个周一
*
* @return
*/
public static String getFirstMonday() {
return LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY))
.format(DATE_FORMATTER);
}
/**
* 获取当前日期的后两周
*
* @return
*/
public static String getCurDateAfterTwoWeek() {
return getCurrentLocalDate().plus(2, ChronoUnit.WEEKS).format(DATE_FORMATTER);
}
/**
* 获取当前日期的6个月后的日期
*
* @return
*/
public static String getCurDateAfterSixMonth() {
return getCurrentLocalDate().plus(6, ChronoUnit.MONTHS).format(DATE_FORMATTER);
}
/**
* 获取当前日期的5年后的日期
*
* @return
*/
public static String getCurDateAfterFiveYear() {
return getCurrentLocalDate().plus(5, ChronoUnit.YEARS).format(DATE_FORMATTER);
}
/**
* 获取当前日期的20年后的日期
*
* @return
*/
public static String getCurDateAfterTwentyYear() {
return getCurrentLocalDate().plus(2, ChronoUnit.DECADES).format(DATE_FORMATTER);
}
}
package com.freemud.sdk.api.assortment.shoppingcart.util;
import ch.qos.logback.classic.Level;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ${FILE_NAME}
* @Package com.freemud.base.log
* @Description: 异常日志打印
* @author: aiqi.gong
* @date: 2017/6/21 10:43
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public class ErrorLog {
private static Logger logger = LoggerFactory.getLogger(com.freemud.application.sdk.api.log.ErrorLog.class);
public static void infoConvertJson(String appName, String trackingNo, Class logClass, String message, Exception ex) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ex.printStackTrace(new PrintStream(baos));
String exception = baos.toString();
printLog(appName, trackingNo, logClass, message, exception, Level.INFO);
}
public static void errorConvertJson(String appName, String trackingNo, Class logClass, String message, Exception ex) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ex.printStackTrace(new PrintStream(baos));
String exception = baos.toString();
printLog(appName, trackingNo, logClass, message, exception, Level.ERROR);
}
public static void printLog(String appName, String trackingNo, Class logClass, String message, Exception ex, Level level) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ex.printStackTrace(new PrintStream(baos));
String exception = baos.toString();
printLog(appName, trackingNo, logClass, message, exception, level);
}
public static void printLog(String appName, String trackingNo, Class logClass, String message, Object object, Level level) {
logger.info("appName:{} trackingNo:{} className{} level:{} messasge:{} stackTrack:{}", appName, trackingNo, logClass, level.levelStr, message, JSONObject.toJSONString(object));
}
public static void printErrorLog(String appName, String trackingNo, String message, String url, Object request, Exception ex, Level level) {
logger.info("appName:{} trackingNo:{} level:{} messasge:{} url:{} requestBody:{} stackTrack:{}", appName, trackingNo, level.levelStr, message, url, JSONObject.toJSONString(request), JSONObject.toJSONString(ex));
}
}
package com.freemud.sdk.api.assortment.shoppingcart.util;
import com.freemud.sdk.api.assortment.shoppingcart.constant.ActivityChannelEnum;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CreateOrderType;
import java.util.Objects;
public class PropertyConvertUtil {
public static ActivityChannelEnum orderTypeConvert2ActivityChannel(Integer orderType) {
if (Objects.equals(CreateOrderType.TAKE_OUT.getCode(), orderType)) {
return ActivityChannelEnum.delivery;
} else if (Objects.equals(CreateOrderType.COLLECT_GOODS.getCode(), orderType)) {
return ActivityChannelEnum.pickup;
} else {
return null;
}
}
}
......@@ -28,6 +28,7 @@
<module>call-back-service</module>
<module>push-order-service</module>
<module>platform-sdk</module>
<module>assortment-shoppingcart-sdk</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
......
......@@ -43,9 +43,9 @@
<version>1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>2.4.9-SNAPSHOT</version>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -52,7 +52,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList = new ArrayList<>();
sendActivities.forEach(sendActivity -> sendGoodsList.addAll(sendActivity.getSendGoods()));
List<ProductBeanDTO> productBeanDTOS = buildActivityProduct(shoppingCartInfoRequestVo, sendGoodsList);
List<ProductBeanDTO> productBeanDTOS = buildActivityProduct(activityQueryDto, sendGoodsList);
if (CollectionUtils.isEmpty(productBeanDTOS)) {
return;
}
......@@ -141,14 +141,14 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
}
/**
* @param shoppingCartInfoRequestVo
* @param activityQueryDto
* @param sendGoodsList
* @return
*/
private List<ProductBeanDTO> buildActivityProduct(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList) {
private List<ProductBeanDTO> buildActivityProduct(ActivityQueryDto activityQueryDto, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList) {
//获取
List<String> goodsIds = sendGoodsList.stream().map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods::getGoodsId).collect(Collectors.toList());
List<ProductBeanDTO> productBeanList = assortmentSdkService.getProductsInfoSdk(shoppingCartInfoRequestVo.getPartnerId(), shoppingCartInfoRequestVo.getShopId(), goodsIds, shoppingCartBaseService);
List<ProductBeanDTO> productBeanList = assortmentSdkService.getProductsInfoSdk(activityQueryDto.getPartnerId(), activityQueryDto.getStoreId(), goodsIds, shoppingCartBaseService);
if (CollectionUtils.isEmpty(productBeanList)) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GIFTS_PRODUCT_NOT_EXIST);
}
......
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