Commit 99758371 by shuhu.hou

Merge branch 'master' into feature/1.9.10-购物车接口修改渠道字段-海波

# Conflicts:
#	assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/request/CheckCartRequest.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AssortmentSdkService.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuyAndGiftsPromotionService.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 9092484d 9029c5e9
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.1.2.RELEASE</version> <version>1.1.5.RELEASE</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<version>1.1.1.RELEASE</version> <version>1.1.2.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -5,4 +5,7 @@ ...@@ -5,4 +5,7 @@
| 6.4.10.RELEASE| 骑手小费 | 张明警 | 2019-12-26 | | 6.4.10.RELEASE| 骑手小费 | 张明警 | 2019-12-26 |
| 1.1.0.RELEASE| 1.9.8需求打包release版本 | 侯书虎 | 2019-12-26 | | 1.1.0.RELEASE| 1.9.8需求打包release版本 | 侯书虎 | 2019-12-26 |
| 1.1.1.RELEASE| 1.9.9sessionKey | 胡超 | 20200108 | | 1.1.1.RELEASE| 1.9.9sessionKey | 胡超 | 20200108 |
| 1.1.2.RELEASE| 1.9.9需求打包release版本 | 丁凯 | 20200108 | | 1.1.2.RELEASE| 1.9.9需求打包release版本 | 丁凯 | 20200108 |
\ No newline at end of file | 1.1.3.RELEASE| 1.9.10需求打包release版本(thirdCateId) | 胡超 | 20200113 |
| 1.1.4.RELEASE| 农工商submit接口 | 侯书虎 | 2020-01-13 |
| 1.1.5.RELEASE| 农工商submit接口(del thirdCateId) | 胡超 | 2020-01-13 |
\ No newline at end of file
...@@ -30,7 +30,6 @@ import org.apache.commons.lang.time.DateFormatUtils; ...@@ -30,7 +30,6 @@ import org.apache.commons.lang.time.DateFormatUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -73,6 +72,7 @@ public class OrderSdkAdapter { ...@@ -73,6 +72,7 @@ public class OrderSdkAdapter {
request.setStoreName(requestVO.getShopName()); request.setStoreName(requestVO.getShopName());
request.setPayTime(requestVO.getPayTime()); request.setPayTime(requestVO.getPayTime());
request.setThirdStoreId(requestVO.getThirdShopId()); request.setThirdStoreId(requestVO.getThirdShopId());
request.setThirdOrderCode(requestVO.getThirdOrderCode());
if (requestVO.getOrderStatus() != null) { if (requestVO.getOrderStatus() != null) {
request.setOrderState(getNewOrderStatus(requestVO.getOrderStatus().getCode())); request.setOrderState(getNewOrderStatus(requestVO.getOrderStatus().getCode()));
} }
...@@ -93,8 +93,11 @@ public class OrderSdkAdapter { ...@@ -93,8 +93,11 @@ public class OrderSdkAdapter {
//用户在界面上看到的支付金额 //用户在界面上看到的支付金额
request.setSettlementAmount(requestVO.getAmount()); request.setSettlementAmount(requestVO.getAmount());
//实际支付现金金额,扣除支付自生优惠,单位分 //实际支付现金金额,扣除支付自生优惠,单位分
request.setActualPayAmount(requestVO.getAmount()); if(requestVO.getOrderClient() != null){
request.setOrderClient(OrderClientType.SAAS.getIndex()); request.setOrderClient(requestVO.getOrderClient().getIndex());
}else {
request.setOrderClient(StringUtils.isEmpty(requestVO.getSource())? OrderClientType.SAAS.getIndex():getNewOrderClient(requestVO.getSource()));
}
//订单业务类型 1:普通订单 2:虚拟订单 //订单业务类型 1:普通订单 2:虚拟订单
request.setBizType(1); request.setBizType(1);
request.setNote(requestVO.getRemark()); request.setNote(requestVO.getRemark());
...@@ -139,6 +142,11 @@ public class OrderSdkAdapter { ...@@ -139,6 +142,11 @@ public class OrderSdkAdapter {
request.setOrderTask(requestVO.getOrderTask()); request.setOrderTask(requestVO.getOrderTask());
request.setOperator(requestVO.getOperator()); request.setOperator(requestVO.getOperator());
// 扩展字段(第三方商品分类编号)
if (null != requestVO && null != requestVO.getOtherInfo()) {
request.setExtInfo(JSONObject.toJSONString(requestVO.getOtherInfo()));
}
return request; return request;
} }
...@@ -281,6 +289,7 @@ public class OrderSdkAdapter { ...@@ -281,6 +289,7 @@ public class OrderSdkAdapter {
orderSettlementCreateReq.setSettlementAmount(accountRequest.getPrice()); orderSettlementCreateReq.setSettlementAmount(accountRequest.getPrice());
//是否线上 false:不是 true:是 //是否线上 false:不是 true:是
orderSettlementCreateReq.setIsOnline(true); orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setExtInfo(accountRequest.getAddInfo());
orderSettlementCreateReqList.add(orderSettlementCreateReq); orderSettlementCreateReqList.add(orderSettlementCreateReq);
} }
...@@ -368,6 +377,7 @@ public class OrderSdkAdapter { ...@@ -368,6 +377,7 @@ public class OrderSdkAdapter {
orderClients.add(OrderClientType.WAI_MEAL.getIndex()); orderClients.add(OrderClientType.WAI_MEAL.getIndex());
} }
} }
orderClients.add(OrderClientType.ALIPAY.getIndex());
orderConditionsReq.setOrderClients(orderClients); orderConditionsReq.setOrderClients(orderClients);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try { try {
...@@ -1005,6 +1015,15 @@ public class OrderSdkAdapter { ...@@ -1005,6 +1015,15 @@ public class OrderSdkAdapter {
case "XY_DISCOUNT": case "XY_DISCOUNT":
type = 104; type = 104;
break; break;
case "TOTAL_DISCOUNT":
type=205;
break;
case "ONLINE_PAY":
type=218;
break;
case "OFFLINE_PAY":
type=219;
break;
default: default:
break; break;
} }
...@@ -1102,6 +1121,9 @@ public class OrderSdkAdapter { ...@@ -1102,6 +1121,9 @@ public class OrderSdkAdapter {
case "saas": case "saas":
orderClientType = 2; orderClientType = 2;
break; break;
case "alipay":
orderClientType=3;
break;
case "jdwm": case "jdwm":
orderClientType = 10; orderClientType = 10;
break; break;
...@@ -1142,6 +1164,9 @@ public class OrderSdkAdapter { ...@@ -1142,6 +1164,9 @@ public class OrderSdkAdapter {
case 2: case 2:
name = "saas"; name = "saas";
break; break;
case 3:
name="alipay";
break;
case 10: case 10:
name = "jdwm"; name = "jdwm";
break; break;
...@@ -1180,6 +1205,9 @@ public class OrderSdkAdapter { ...@@ -1180,6 +1205,9 @@ public class OrderSdkAdapter {
case 2: case 2:
name = "saas 点餐"; name = "saas 点餐";
break; break;
case 3:
name="支付宝";
break;
case 10: case 10:
name = "京东"; name = "京东";
break; break;
...@@ -1669,6 +1697,8 @@ public class OrderSdkAdapter { ...@@ -1669,6 +1697,8 @@ public class OrderSdkAdapter {
case 104: case 104:
newOrderAccountType = OldOrderAccountType.XY_DISCOUNT.getCode(); newOrderAccountType = OldOrderAccountType.XY_DISCOUNT.getCode();
break; break;
case 205:
newOrderAccountType=OldOrderAccountType.TOTAL_DISCOUNT.getCode();
default: default:
break; break;
} }
...@@ -2378,6 +2408,9 @@ public class OrderSdkAdapter { ...@@ -2378,6 +2408,9 @@ public class OrderSdkAdapter {
if (StringUtils.isNotBlank(product.getThirdProductPropertyId())) { if (StringUtils.isNotBlank(product.getThirdProductPropertyId())) {
extInfo.setThirdProductPropertyId(product.getThirdProductPropertyId()); extInfo.setThirdProductPropertyId(product.getThirdProductPropertyId());
} }
if (StringUtils.isNotBlank(product.getThirdCategoryId())){
extInfo.setThirdCategoryId(product.getThirdCategoryId());
}
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo)); orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
orderItemList.add(orderItemCreateReq); orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L) { if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L) {
......
...@@ -75,7 +75,7 @@ public class OrderExtInfoDTO { ...@@ -75,7 +75,7 @@ public class OrderExtInfoDTO {
private boolean paidMember; private boolean paidMember;
/** /**
* 异常补退使用 * 微信上报异常补推使用
*/ */
private String sessionKey; private String sessionKey;
} }
...@@ -33,7 +33,8 @@ public enum OldOrderAccountType { ...@@ -33,7 +33,8 @@ public enum OldOrderAccountType {
CARD_ORIGINAL_AMOUNT(25, "会员卡原价", "CARD_ORIGINAL_AMOUNT"), CARD_ORIGINAL_AMOUNT(25, "会员卡原价", "CARD_ORIGINAL_AMOUNT"),
SET_MEAL(211, "套餐商品优惠", "SET_MEAL"), SET_MEAL(211, "套餐商品优惠", "SET_MEAL"),
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额", "CARD_DISCOUNT_AMOUNT"), CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额", "CARD_DISCOUNT_AMOUNT"),
XY_DISCOUNT(104, "x件y折", "XY_DISCOUNT"); XY_DISCOUNT(104, "x件y折", "XY_DISCOUNT"),
TOTAL_DISCOUNT(205, "优惠总金额", "TOTAL_DISCOUNT");
private Integer code; private Integer code;
private String desc; private String desc;
......
...@@ -30,7 +30,7 @@ public enum OrderSourceType { ...@@ -30,7 +30,7 @@ public enum OrderSourceType {
SAAS("saas", "saas 点餐"), SAAS("saas", "saas 点餐"),
POS("pos_order", "线下 POS"), POS("pos", "线下 POS"),
MEAL("meal", "i围餐"); MEAL("meal", "i围餐");
......
...@@ -32,7 +32,10 @@ public enum QueryOrderAccountType { ...@@ -32,7 +32,10 @@ public enum QueryOrderAccountType {
CARD_ORIGINAL_AMOUNT("CARD_ORIGINAL_AMOUNT", "会员卡原价"), CARD_ORIGINAL_AMOUNT("CARD_ORIGINAL_AMOUNT", "会员卡原价"),
SET_MEAL("SET_MEAL", "套餐商品优惠"), SET_MEAL("SET_MEAL", "套餐商品优惠"),
CARD_DISCOUNT_AMOUNT("CARD_DISCOUNT_AMOUNT", "会员卡优惠金额"), CARD_DISCOUNT_AMOUNT("CARD_DISCOUNT_AMOUNT", "会员卡优惠金额"),
XY_DISCOUNT("XY_DISCOUNT", "x件y折"); XY_DISCOUNT("XY_DISCOUNT", "x件y折"),
TOTAL_DISCOUNT("TOTAL_DISCOUNT", "优惠总金额"),
ONLINE_PAY("ONLINE_PAY", "线上支付"),
OFFLINE_PAY("OFFLINE_PAY", "线下支付");
private String code; private String code;
private String desc; private String desc;
......
package com.freemud.sdk.api.assortment.order.request.order; package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
...@@ -38,6 +39,10 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -38,6 +39,10 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/ */
private String userName; private String userName;
/** /**
* 三方单号
*/
private String thirdOrderCode;
/**
* 用户电话 * 用户电话
*/ */
private String phone; private String phone;
...@@ -77,6 +82,8 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -77,6 +82,8 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 支付渠道名称 * 支付渠道名称
*/ */
private String payChannelName; private String payChannelName;
private OrderClientType orderClient;
/** /**
* 订单来源 * 订单来源
*/ */
......
...@@ -80,6 +80,10 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -80,6 +80,10 @@ public class CreateOrderProductRequest extends BaseConfig {
*/ */
private String extras; private String extras;
/** /**
* 第三方菜品分类Id
*/
private String thirdCategoryId;
/**
* 商品所属菜单分类id * 商品所属菜单分类id
*/ */
private String categoryId; private String categoryId;
......
...@@ -38,4 +38,9 @@ public class OrderProductAddInfoDto extends BaseConfig { ...@@ -38,4 +38,9 @@ public class OrderProductAddInfoDto extends BaseConfig {
*/ */
private String thirdProductPropertyId; private String thirdProductPropertyId;
/**
* 第三方品类id
*/
private String thirdCategoryId;
} }
...@@ -83,5 +83,7 @@ public class OrderPayResponse { ...@@ -83,5 +83,7 @@ public class OrderPayResponse {
private String timestamp; private String timestamp;
private String signType; private String signType;
private String aliPayOrder;
} }
} }
...@@ -264,7 +264,10 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -264,7 +264,10 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
} }
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<PaySuccessResp> response = orderSdkService.paySuccess(request, confirmOrderRequest.getTrackingNo()); com.freemud.application.sdk.api.ordercenter.response.BaseResponse<PaySuccessResp> response = orderSdkService.paySuccess(request, confirmOrderRequest.getTrackingNo());
//获取会员信息直接返回,非空判断
if(extendInfo.getData() == null){
return orderSdkAdapter.convent2PayAccessResponse(response);
}
CalculationDiscountRequest discountRequest=activitySdkAdapter.convert2CalculationDiscountRequestDto(orderByIdResponse.getData(),extendInfo.getData()); CalculationDiscountRequest discountRequest=activitySdkAdapter.convert2CalculationDiscountRequestDto(orderByIdResponse.getData(),extendInfo.getData());
BaseResponse<CalculationDiscountResponseDTO> baseResponse=promotionSdkService.calculationDiscount(discountRequest,confirmOrderRequest.getTrackingNo()); BaseResponse<CalculationDiscountResponseDTO> baseResponse=promotionSdkService.calculationDiscount(discountRequest,confirmOrderRequest.getTrackingNo());
List<Integer> activityTypes=baseResponse.getData().getDiscounts().stream().map(DiscountDTO::getType).collect(Collectors.toList()); List<Integer> activityTypes=baseResponse.getData().getDiscounts().stream().map(DiscountDTO::getType).collect(Collectors.toList());
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId> <artifactId>productcenter-sdk</artifactId>
<version>2.4.1-SNAPSHOT</version> <version>2.7.4.RELEASE</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -14,11 +14,17 @@ ...@@ -14,11 +14,17 @@
package com.freemud.sdk.api.assortment.shoppingcart.constant; package com.freemud.sdk.api.assortment.shoppingcart.constant;
public class ShoppingCartConstant { public class ShoppingCartConstant {
public final static String SHOPPING_CART_INVALIAD_GOODS="因商家变更了商品,导致选购失败,请刷新门店后重新尝试选购商品";
public final static String SHOPPING_CART_EMPTY_GOODS_LIST="因商品变更或其他原因,导致加购失效,无法结算,请重新尝试选购商品";
public final static String SHOPPING_CART_INVALID_GOODS_EXIST = "有商品不在售卖状态,请重新提交结算"; public final static String SHOPPING_CART_INVALID_GOODS_EXIST = "有商品不在售卖状态,请重新提交结算";
public final static String SHOPPING_CART_ACTIVITY_CHANGE = "商品价格有变动,将按照最新价格计算哦"; public final static String SHOPPING_CART_ACTIVITY_CHANGE = "商品价格有变动,将按照最新价格计算哦";
public final static String SHOPPING_CART_GOODS_CHANGE="因商家变更了商品,导致选购失效,请刷新门店后重新尝试选购商品";
public final static String SHOPPING_CART_GOODS_INVALID="因商品变更或其他原因,导致架构失效,无法结算,请重新尝试选购商品";
public final static String HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON = "该商品券与其他活动不同享,购物车中已优惠的商品将恢复原价"; 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 HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS = "已选商品券,与其他优惠商品不同享,商品将恢复原价";
......
...@@ -66,7 +66,7 @@ public class ShoppingCartGoodsResponseVo { ...@@ -66,7 +66,7 @@ public class ShoppingCartGoodsResponseVo {
/** /**
* 购物车中商品价格或有效性是否发生变化 * 购物车中商品价格或有效性是否发生变化
*/ */
private Boolean changed; private Boolean changed=false;
/** /**
* 可用优惠券列表 * 可用优惠券列表
......
...@@ -18,7 +18,13 @@ import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; ...@@ -18,7 +18,13 @@ import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.domain.ProductInfosDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductInfosDTO;
import com.freemud.application.sdk.api.productcenter.request.menu.GetMenuCategoryByIdsRequest; import com.freemud.application.sdk.api.productcenter.request.menu.GetMenuCategoryByIdsRequest;
import com.freemud.application.sdk.api.productcenter.request.product.GetProductRequest; import com.freemud.application.sdk.api.productcenter.request.product.GetProductRequest;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ProductAttributeValueType;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductType;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateSkuProductType;
import com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryByIdsResponse; import com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryByIdsResponse;
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResponse;
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResult;
import com.freemud.application.sdk.api.productcenter.service.MenuService; import com.freemud.application.sdk.api.productcenter.service.MenuService;
import com.freemud.application.sdk.api.productcenter.service.ProductService; import com.freemud.application.sdk.api.productcenter.service.ProductService;
import com.freemud.sdk.api.assortment.shoppingcart.adapter.ShoppingCartAdapter; import com.freemud.sdk.api.assortment.shoppingcart.adapter.ShoppingCartAdapter;
...@@ -167,6 +173,65 @@ public interface ShoppingCartBaseService { ...@@ -167,6 +173,65 @@ public interface ShoppingCartBaseService {
} }
} }
default BaseResponse<CheckCartRequest> checkAllCartGoodsNew(CheckCartRequest checkCartRequest) {
ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class);
ProductService productService = SDKCommonBaseContextWare.getBean(ProductService.class);
try {
ValidateShopProductRequest validateShopProductRequest = shoppingCartAdapter.getValidateShopProductRequest(checkCartRequest);
com.freemud.application.sdk.api.base.BaseResponse<ValiadShopProductResponse> valiadResponse = productService.validateShopProduct(validateShopProductRequest);
if (valiadResponse == null || !CartResponseConstant.SUCCESS.getCode().equals(valiadResponse.getCode()) || valiadResponse.getData()==null) {
checkCartRequest.getCartGoodsList().clear();
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
return CartResponseUtil.error(valiadResponse.getMessage(),checkCartRequest);
}
ValiadShopProductResponse valiadResult = valiadResponse.getData();
//非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示
if (CollectionUtils.isNotEmpty(valiadResult.getFailureList())){
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE);
for (CartGoods cartGoods :checkCartRequest.getCartGoodsList()) {
if (valiadResult.getFailureList().stream().anyMatch(f->cartGoods.getCartGoodsUid().equals(f.getUuid()))){
cartGoods.setCartGoodsUid(null);
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
}
}
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
}
List<ProductBeanDTO> productList = valiadResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
CartGoodsStates cartGoodsStates = new CartGoodsStates();
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())) {
continue;
}
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
}
//校验商品券是否有当前点餐方式
cartGoodsStates = updateSpqCartGoodsInfo(checkCartRequest.getCartGoodsList(), checkCartRequest.getOrderWay(), checkCartRequest.getPartnerId(), checkCartRequest.getTrackingNo(), cartGoodsStates);
// 点餐方式改变商品券发生变动
if (cartGoodsStates != null && cartGoodsStates.isOrderWayFlag()) {
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.ORDER_WAY_CHANGE);
}
//若商品详情赋值有异常,直接移除购物车
if (checkCartRequest.getCartGoodsList().stream().anyMatch(cart->StringUtils.isEmpty( cart.getCartGoodsUid()))){
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
}
return CartResponseUtil.success(checkCartRequest);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", checkCartRequest.getTrackingNo(), e.getMessage(), "checkAllCartGoods", checkCartRequest, e, Level.ERROR);
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
return CartResponseUtil.error(e.getMessage(),checkCartRequest);
}
}
/** /**
* 更新购物车详细信息 * 更新购物车详细信息
* 并check购物车中商品是否价格变更、是否非法(例如商品下架) * 并check购物车中商品是否价格变更、是否非法(例如商品下架)
...@@ -183,6 +248,7 @@ public interface ShoppingCartBaseService { ...@@ -183,6 +248,7 @@ public interface ShoppingCartBaseService {
// 包含:1、普通商品 2、套餐内的固定商品和可选商品 // 包含:1、普通商品 2、套餐内的固定商品和可选商品
ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class); ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class);
GetProductInfoRequest getSpuProductInfoRequest = shoppingCartAdapter.convertGetProductInfoRequest(checkCartRequest); GetProductInfoRequest getSpuProductInfoRequest = shoppingCartAdapter.convertGetProductInfoRequest(checkCartRequest);
getSpuProductInfoRequest.setBusinessType(checkCartRequest.getBusinessType());
BaseResponse<List<ProductBeanDTO>> productInfo = getProductsInfo(getSpuProductInfoRequest); BaseResponse<List<ProductBeanDTO>> productInfo = getProductsInfo(getSpuProductInfoRequest);
if ((productInfo == null) || (!CartResponseConstant.SUCCESS.getCode().equals(productInfo.getCode()))) { if ((productInfo == null) || (!CartResponseConstant.SUCCESS.getCode().equals(productInfo.getCode()))) {
return; return;
...@@ -211,7 +277,7 @@ public interface ShoppingCartBaseService { ...@@ -211,7 +277,7 @@ public interface ShoppingCartBaseService {
default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId, String trackingNo, CartGoodsStates goodsStates) { default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId, String trackingNo, CartGoodsStates goodsStates) {
//获取所有商品券cartGoodsUid=sqp+code //获取所有商品券cartGoodsUid=sqp+code
List<String> couponIds = cartGoodsList.parallelStream() List<String> couponIds = cartGoodsList.parallelStream()
.filter(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList()); .filter(k ->StringUtils.isNotEmpty(k.getCartGoodsUid())&& k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(couponIds)) { if (CollectionUtils.isEmpty(couponIds)) {
return goodsStates; return goodsStates;
...@@ -287,8 +353,7 @@ public interface ShoppingCartBaseService { ...@@ -287,8 +353,7 @@ public interface ShoppingCartBaseService {
} }
ProductBeanDTO productBean; ProductBeanDTO productBean;
// 判断商品是否合法(商品是否存在、商品是否处于上架状态) // 判断商品是否合法(商品是否存在、商品是否处于上架状态)
if (((productBean = productBeanMap.get(cartGoods.getGoodsId())) != null) && (productBean.isValid()) if (((productBean = productBeanMap.get(cartGoods.getGoodsId())) != null) && (StoreItemStatus.PUT_ON_SALE.getCode().equals(productBean.getStatus()))) {
&& (StoreItemStatus.PUT_ON_SALE.getCode().equals(productBean.getStatus()))) {
ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class); ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class);
shoppingCartAdapter.updateCartGoodsInfo(cartGoods, productBeans, cartGoodsStates, invalidGoodsIdList); shoppingCartAdapter.updateCartGoodsInfo(cartGoods, productBeans, cartGoodsStates, invalidGoodsIdList);
} else { } else {
......
...@@ -116,7 +116,7 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -116,7 +116,7 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
.filter(k -> StringUtils.isNotEmpty(k.getCartGoodsUid())) .filter(k -> StringUtils.isNotEmpty(k.getCartGoodsUid()))
.collect(Collectors.toMap(CartGoods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1)); .collect(Collectors.toMap(CartGoods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
operations.putAll(cartGoodsMap); operations.putAll(cartGoodsMap);
return this.getCartGoodsList(cartParamDto, trackingNo); return CartResponseUtil.success();
} catch (Exception e) { } catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "setCartGoodsList", cartParamDto, e, Level.ERROR); ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "setCartGoodsList", cartParamDto, e, Level.ERROR);
return null; return null;
......
...@@ -29,4 +29,7 @@ public class CartResponseUtil { ...@@ -29,4 +29,7 @@ public class CartResponseUtil {
public static <T> BaseResponse<T> error(String message) { public static <T> BaseResponse<T> error(String message) {
return new BaseResponse<>(Version.VERSION_1, CartResponseConstant.FAIL.getCode(), message); return new BaseResponse<>(Version.VERSION_1, CartResponseConstant.FAIL.getCode(), message);
} }
public static <T> BaseResponse<T> error(String message,T t) {
return new BaseResponse<>(CartResponseConstant.FAIL.getCode(), message, Version.VERSION_1, t);
}
} }
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.1.2.RELEASE</version> <version>1.1.5.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,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>3.9.7-SNAPSHOT</version> <version>4.1.3-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud.commons</groupId> <groupId>cn.freemud.commons</groupId>
...@@ -310,7 +310,7 @@ ...@@ -310,7 +310,7 @@
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-payment-sdk</artifactId> <artifactId>assortment-payment-sdk</artifactId>
<version>2.3.2-SNAPSHOT</version> <version>2.4.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>tk.mybatis</groupId> <groupId>tk.mybatis</groupId>
......
package cn.freemud.adapter; //package cn.freemud.adapter;
//
import cn.freemud.entities.dto.*; //import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.AddDeliveryAddressVo; //import cn.freemud.entities.vo.AddDeliveryAddressVo;
import cn.freemud.entities.vo.CreateOrderVo; //import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryReceiveAddressResponseVo; //import cn.freemud.entities.vo.QueryReceiveAddressResponseVo;
import cn.freemud.entities.vo.UserLoginVo; //import cn.freemud.entities.vo.UserLoginVo;
import cn.freemud.enums.ReceiveAddressLabelType; //import cn.freemud.enums.ReceiveAddressLabelType;
import cn.freemud.enums.SexType; //import cn.freemud.enums.SexType;
import cn.freemud.manager.OpenPlatformPartnerStoreDeliveryConfigManager; //import cn.freemud.manager.OpenPlatformPartnerStoreDeliveryConfigManager;
import cn.freemud.service.impl.StoreServiceImpl; //import cn.freemud.service.impl.StoreServiceImpl;
import cn.freemud.utils.UnicodeUtil; //import cn.freemud.utils.UnicodeUtil;
import com.alibaba.fastjson.JSONObject; //import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; //import com.google.common.collect.Lists;
import com.google.common.collect.Maps; //import com.google.common.collect.Maps;
import com.google.gson.Gson; //import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils; //import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; //import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
import java.util.*; //import java.util.*;
import java.util.stream.Collectors; //import java.util.stream.Collectors;
//
@Component //@Component
public class UserAdapter { //public class UserAdapter {
//
public UserLoginInfoDto getUserLoginInfoDto(Map<String, Object> map) { // public UserLoginInfoDto getUserLoginInfoDto(Map<String, Object> map) {
UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto(); // UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
userLoginInfoDto.setOpenId(String.valueOf(map.get("openid"))); // userLoginInfoDto.setOpenId(String.valueOf(map.get("openid")));
userLoginInfoDto.setWxAppid(String.valueOf(map.get("wxAppid"))); // userLoginInfoDto.setWxAppId(String.valueOf(map.get("wxAppId")));
userLoginInfoDto.setSessionKey(String.valueOf(map.get("session_key"))); // userLoginInfoDto.setSessionKey(String.valueOf(map.get("session_key")));
userLoginInfoDto.setMobile(String.valueOf(map.get("mobile"))); // userLoginInfoDto.setMobile(String.valueOf(map.get("mobile")));
userLoginInfoDto.setAppsecret(String.valueOf(map.get("appsecret"))); // userLoginInfoDto.setAppSecret(String.valueOf(map.get("appsecret")));
userLoginInfoDto.setMemberId(String.valueOf(map.get("memberId"))); // userLoginInfoDto.setMemberId(String.valueOf(map.get("memberId")));
userLoginInfoDto.setPartnerId(String.valueOf(map.get("partnerId"))); // userLoginInfoDto.setPartnerId(String.valueOf(map.get("partnerId")));
userLoginInfoDto.setUnionId(String.valueOf(map.get("unionId"))); // userLoginInfoDto.setUnionId(String.valueOf(map.get("unionId")));
userLoginInfoDto.setNewMemeber(Boolean.valueOf(map.get("newMember").toString())); // userLoginInfoDto.setNewMember(Boolean.valueOf(map.get("newMember").toString()));
userLoginInfoDto.setNickName(String.valueOf(map.get("nickName"))); // userLoginInfoDto.setNickName(String.valueOf(map.get("nickName")));
return userLoginInfoDto; // return userLoginInfoDto;
} // }
} //}
...@@ -102,4 +102,9 @@ public class OrderExtInfoDto { ...@@ -102,4 +102,9 @@ public class OrderExtInfoDto {
* 扫呗商户号 新支付服务做中转使用 * 扫呗商户号 新支付服务做中转使用
*/ */
private String terminalId; private String terminalId;
/**
* 微信上报使用的异常补退使用
*/
private String sessionKey;
} }
package cn.freemud.entities.dto; //package cn.freemud.entities.dto;
//
import lombok.Data; //import lombok.Data;
//
@Data //@Data
public class UserLoginInfoDto { //public class UserLoginInfoDto {
//
private String openId; //// private String openId;
////
private String wxAppid; //// private String wxAppid;
////
private String sessionKey; //// private String sessionKey;
////
private String mobile; //// private String mobile;
////
private String appsecret; //// private String appsecret;
////
private String memberId; //// private String memberId;
////
private String partnerId; //// private String partnerId;
////
private boolean newMemeber; //// private boolean newMemeber;
////
private String unionId; //// private String unionId;
////
private String nickName; //// private String nickName;
} //
//
// private String openId;
// private String unionId;
// private String wxAppId;
// private String sessionKey;
// private String mobile;
// private String appSecret;
// private String memberId;
// private String partnerId;
// private Boolean newMember;
// private String devBrand;
// private String devModel;
// private String channel;
// private String nickName;
// private String photoUrl;
// private String sessionId;
// private String tableNumber;
// private String iappId;
// private String storeId;
// private String userId;
// private String accessToken;
// private String alipayUserId;
// private String alipayAppId;
//}
package cn.freemud.entities.dto.user; //package cn.freemud.entities.dto.user;
//
import lombok.Builder; //import lombok.Builder;
import lombok.Data; //import lombok.Data;
//
@Data //@Data
@Builder //@Builder
public class UserInfoDto { //public class UserInfoDto {
//
private String openId; // private String openId;
//
private String unionId; // private String unionId;
//
private String wxAppid; // private String wxAppid;
//
private String sessionKey; // private String sessionKey;
//
private String mobile; // private String mobile;
//
private String appsecret; // private String appsecret;
//
private String memberId; // private String memberId;
//
private String partnerId; // private String partnerId;
//
private Boolean newMemeber; // private Boolean newMemeber;
//
private String devBrand; // private String devBrand;
//
private String devModel; // private String devModel;
//
private String channel; // private String channel;
//
//
} //}
...@@ -45,4 +45,14 @@ public class CreateOrderResponseVo { ...@@ -45,4 +45,14 @@ public class CreateOrderResponseVo {
*/ */
private Integer orderUpdateVer; private Integer orderUpdateVer;
/**
* 订单类型
*/
private Integer orderType;
/**
* 支付宝参数 唤起支付宝支付使用
*/
private String orderStr;
} }
...@@ -28,7 +28,9 @@ public enum OrderSourceType { ...@@ -28,7 +28,9 @@ public enum OrderSourceType {
MALL("mall", "非码Mall"), MALL("mall", "非码Mall"),
SAAS("saas", "saas 点餐"); SAAS("saas", "saas 点餐"),
ALIPAY("alipay", "支付宝小程序点餐");
private String code; private String code;
......
...@@ -2,6 +2,7 @@ package cn.freemud.service; ...@@ -2,6 +2,7 @@ package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.CouponCodeVerificationProductDto; import cn.freemud.entities.dto.CouponCodeVerificationProductDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.ActivityClassifyCouponBean; import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
...@@ -20,4 +21,10 @@ public interface CouponActivityService { ...@@ -20,4 +21,10 @@ public interface CouponActivityService {
*/ */
BaseResponse verificationCoupon(ActivityChannelEnum activityChannelEnum, String couponCode, String oid, String partnerId, BaseResponse verificationCoupon(ActivityChannelEnum activityChannelEnum, String couponCode, String oid, String partnerId,
String storeId, String userId, List<CouponCodeVerificationProductDto> products, Integer discountPrice); String storeId, String userId, List<CouponCodeVerificationProductDto> products, Integer discountPrice);
/**
* 核销优惠券
* @param orderBean
*/
BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean);
} }
package cn.freemud.service; //package cn.freemud.service;
//
import cn.freemud.entities.dto.UserLoginInfoDto; //import cn.freemud.entities.dto.UserLoginInfoDto;
//
import java.util.Map; //import java.util.Map;
//
/** ///**
* 用户服务 // * 用户服务
* // *
* @author liming.guo // * @author liming.guo
* @date 2018/05/08 // * @date 2018/05/08
*/ // */
public interface UserService { //public interface UserService {
//
Map<String, Object> getUserInfoMapBySessionId(String sessionId); // Map<String, Object> getUserInfoMapBySessionId(String sessionId);
//
/** // /**
* 获取缓存用户信息 // * 获取缓存用户信息
* // *
* @param sessionId // * @param sessionId
* @return // * @return
*/ // */
UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId); // UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId);
//
} //}
...@@ -5,20 +5,16 @@ import cn.freemud.base.util.DateUtil; ...@@ -5,20 +5,16 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.RedisKeyConstant; import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.db.OpenPlatformIappWxappConfig; import cn.freemud.entities.db.OpenPlatformIappWxappConfig;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.ShoppingCartSkuAddRequestVo;
import cn.freemud.enums.BuriedPointEnum;
import cn.freemud.enums.GuessLikeStatus; import cn.freemud.enums.GuessLikeStatus;
import cn.freemud.manager.OpenPlatformIappWxappConfigManager; import cn.freemud.manager.OpenPlatformIappWxappConfigManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.BuriedPointService; import cn.freemud.service.BuriedPointService;
import cn.freemud.service.UserService;
import cn.freemud.service.thirdparty.SyncTxProductClient; import cn.freemud.service.thirdparty.SyncTxProductClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -33,7 +29,6 @@ import java.util.ArrayList; ...@@ -33,7 +29,6 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
......
...@@ -19,12 +19,10 @@ import cn.freemud.entities.db.OpenPlatformIappWxappConfig; ...@@ -19,12 +19,10 @@ import cn.freemud.entities.db.OpenPlatformIappWxappConfig;
import cn.freemud.entities.db.OpenPlatformPartnerStoreDeliveryConfig; import cn.freemud.entities.db.OpenPlatformPartnerStoreDeliveryConfig;
import cn.freemud.entities.db.StoreTableNumber; import cn.freemud.entities.db.StoreTableNumber;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreateOrderDto;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo; import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.GetProductsVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.CouponFlag; import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.CreateOrderType; import cn.freemud.enums.CreateOrderType;
...@@ -38,6 +36,8 @@ import cn.freemud.service.thirdparty.ShoppingCartClient; ...@@ -38,6 +36,8 @@ import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient; import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
...@@ -73,8 +73,10 @@ public class CheckOrder { ...@@ -73,8 +73,10 @@ public class CheckOrder {
@Autowired @Autowired
private OpenPlatformPartnerStoreDeliveryConfigManager deliveryConfigManager; private OpenPlatformPartnerStoreDeliveryConfigManager deliveryConfigManager;
// 缓存取用户数据用 // 缓存取用户数据用
// @Autowired
// private UserServiceImpl userService;
@Autowired @Autowired
private UserServiceImpl userService; private AssortmentCustomerInfoManager customerInfoManager;
//门店SDK //门店SDK
@Autowired @Autowired
private StoreCenterService storeCenterService; private StoreCenterService storeCenterService;
...@@ -100,9 +102,13 @@ public class CheckOrder { ...@@ -100,9 +102,13 @@ public class CheckOrder {
/** /**
* 下单会员相关校验 * 下单会员相关校验
*/ */
public UserLoginInfoDto checkOrderByMember(CreateOrderVo createOrderVo, String trackingNo) { public AssortmentCustomerInfoVo checkOrderByMember(CreateOrderVo createOrderVo, String trackingNo) {
// 通过sessionId查询缓存中会员id // 通过sessionId查询缓存中会员id
UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(createOrderVo.getSessionId()); String sessionId = createOrderVo.getSessionId();
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
//校验会员svc卡信息 //校验会员svc卡信息
checkCardCode(createOrderVo.getPartnerId(),userLoginInfoDto.getMemberId(),createOrderVo.getCardCode(),trackingNo); checkCardCode(createOrderVo.getPartnerId(),userLoginInfoDto.getMemberId(),createOrderVo.getCardCode(),trackingNo);
...@@ -179,7 +185,7 @@ public class CheckOrder { ...@@ -179,7 +185,7 @@ public class CheckOrder {
/** /**
* 下单订单类型校验 * 下单订单类型校验
*/ */
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, UserLoginInfoDto userLoginInfoDto, public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) { StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) {
Integer pushOrderTime = 0; Integer pushOrderTime = 0;
//TODO 设置预约时间 //TODO 设置预约时间
...@@ -191,9 +197,9 @@ public class CheckOrder { ...@@ -191,9 +197,9 @@ public class CheckOrder {
.append(" ").append(createOrderVo.getTakeMealTime()).append(":00"); .append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss"); takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
} }
String wxAppId = userLoginInfoDto.getWxAppid(); String appId = userLoginInfoDto.getWxAppId();
// 校验小程序是否支持到店或者外卖 // 校验小程序是否支持到店或者外卖
OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(wxAppId); OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId);
// 自提校验 // 自提校验
if (CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType())) { if (CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType())) {
if (config == null || config.getTakeInside() == null || config.getTakeInside() != 1) { if (config == null || config.getTakeInside() == null || config.getTakeInside() != 1) {
...@@ -223,7 +229,7 @@ public class CheckOrder { ...@@ -223,7 +229,7 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY); throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
} }
//获取门店配送信息 //获取门店配送信息
StoreDeliveryInfoDto storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, userLoginInfoDto.getWxAppid()); StoreDeliveryInfoDto storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, appId);
//订单金额小于起送费提示 //订单金额小于起送费提示
if (storeDeliveryInfoDto.getDeliveryLimitAmount() > totalAmount) { if (storeDeliveryInfoDto.getDeliveryLimitAmount() > totalAmount) {
throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE); throw new ServiceException(ResponseResult.STORE_DISCONTENT_DELIVERY_FEE);
......
...@@ -2,6 +2,7 @@ package cn.freemud.service.impl; ...@@ -2,6 +2,7 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.CouponAdapter; import cn.freemud.adapter.CouponAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.ActivityClassifyCouponBean; import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.entities.vo.ActivityCouponBean; import cn.freemud.entities.vo.ActivityCouponBean;
...@@ -10,8 +11,17 @@ import cn.freemud.service.CouponActivityService; ...@@ -10,8 +11,17 @@ import cn.freemud.service.CouponActivityService;
import cn.freemud.service.thirdparty.CouponClient; import cn.freemud.service.thirdparty.CouponClient;
import cn.freemud.service.thirdparty.CouponOfflineClient; import cn.freemud.service.thirdparty.CouponOfflineClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.google.common.base.Throwables;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -30,12 +40,15 @@ public class CouponActivityServiceImpl implements CouponActivityService { ...@@ -30,12 +40,15 @@ public class CouponActivityServiceImpl implements CouponActivityService {
private CouponAdapter couponAdapter; private CouponAdapter couponAdapter;
@Autowired @Autowired
private CouponOfflineClient couponOfflineClient; private CouponOfflineClient couponOfflineClient;
@Autowired
private EmailAlertService emailAlertService;
private static Gson gson = new Gson(); private static Gson gson = new Gson();
@Override @Override
public BaseResponse verificationCoupon(ActivityChannelEnum activityChannelEnum, String couponCode, String oid, String partnerId, public BaseResponse verificationCoupon(ActivityChannelEnum activityChannelEnum, String couponCode, String oid, String partnerId,
String storeId, String userId, List<CouponCodeVerificationProductDto> products,Integer discountPrice) { String storeId, String userId, List<CouponCodeVerificationProductDto> products, Integer discountPrice) {
if (StringUtils.isNotBlank(couponCode)) { if (StringUtils.isNotBlank(couponCode)) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, couponCode, oid, partnerId, storeId, userId, products,discountPrice); CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, couponCode, oid, partnerId, storeId, userId, products, discountPrice);
try { try {
//3.券核销 //3.券核销
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto); CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
...@@ -51,4 +64,68 @@ public class CouponActivityServiceImpl implements CouponActivityService { ...@@ -51,4 +64,68 @@ public class CouponActivityServiceImpl implements CouponActivityService {
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 核销优惠券
*
* @param orderBean
*/
@Override
public BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList();
if (CollectionUtils.isEmpty(accountList) || CollectionUtils.isEmpty(orderBean.getProductList())) {
return ResponseUtil.success();
}
for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) {
List<CouponCodeVerificationProductDto> products = new ArrayList<>();
//商品券核销核销参数
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
CouponCodeVerificationProductDto couponCodeVerificationProductDto = new CouponCodeVerificationProductDto();
couponCodeVerificationProductDto.setPID(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1);
products.add(couponCodeVerificationProductDto);
}
}
}
}
Integer orderType = orderBean.getType();
ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeEnumConvert2ActivityChannel(orderType);
if (activityChannelEnum == null) {
activityChannelEnum = ActivityChannelEnum.pickup;
}
if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue());
try {
//3.券核销
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
} catch (Exception ex) {
emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
}
return ResponseUtil.success();
}
} }
...@@ -2,28 +2,22 @@ package cn.freemud.service.impl; ...@@ -2,28 +2,22 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.MessageNoticeAdapter; import cn.freemud.adapter.MessageNoticeAdapter;
import cn.freemud.adapter.OrderAdapter; import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.OrderExtInfoDto; import cn.freemud.entities.dto.OrderExtInfoDto;
import cn.freemud.entities.dto.ShoppingCartBaseResponse; import cn.freemud.entities.dto.ShoppingCartBaseResponse;
import cn.freemud.entities.dto.StoreBaseResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto; import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.vo.CreateOrderResponseVo; import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage; import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.enums.PayStatus; import cn.freemud.enums.PayStatus;
import cn.freemud.enums.RedisCacheEnum; import cn.freemud.enums.RedisCacheEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TransTypeEnum;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.utils.DateTimeUtil; import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.ValidationCode; import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -34,12 +28,9 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager; ...@@ -34,12 +28,9 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare; import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableActiveFlagRequest;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest; import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreBaseResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto; import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient; import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
...@@ -54,22 +45,17 @@ import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest; ...@@ -54,22 +45,17 @@ import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse; import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService; import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.sun.org.apache.regexp.internal.RE;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
......
package cn.freemud.service.impl; //package cn.freemud.service.impl;
//
import cn.freemud.adapter.BigDataAdapter; //import cn.freemud.adapter.UserAdapter;
import cn.freemud.adapter.MemberAdapter; //import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.adapter.MessageNoticeAdapter; //import cn.freemud.constant.UserInfoKeyConstant;
import cn.freemud.adapter.UserAdapter; //import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.base.constant.Version; //import cn.freemud.enums.ResponseResult;
import cn.freemud.base.entity.BaseResponse; //import cn.freemud.interceptor.ServiceException;
import cn.freemud.base.util.MD5Util; //import cn.freemud.redis.RedisCache;
import cn.freemud.constant.ApplicationConstant; //import cn.freemud.service.UserService;
import cn.freemud.constant.RedisKeyConstant; //import com.google.gson.Gson;
import cn.freemud.constant.ResponseCodeConstant; //import lombok.extern.slf4j.Slf4j;
import cn.freemud.constant.UserInfoKeyConstant; //import org.springframework.beans.factory.annotation.Autowired;
import cn.freemud.entities.db.Partner; //import org.springframework.stereotype.Service;
import cn.freemud.entities.dto.*; //
import cn.freemud.entities.dto.user.UserInfoDto; //import java.util.Map;
import cn.freemud.entities.vo.*; //
import cn.freemud.enums.*; ///**
import cn.freemud.interceptor.ServiceException; // * @author liming.guo
import cn.freemud.manager.OpenPlatformWxappPluginBindManager; // * @date 2018/05/11
import cn.freemud.manager.PartnerManager; // */
import cn.freemud.redis.RedisCache; //@Service
import cn.freemud.service.UserService; //@Slf4j
import cn.freemud.service.thirdparty.*; //public class UserServiceImpl implements UserService {
import cn.freemud.utils.*; // private static Gson gson = new Gson();
import com.alibaba.fastjson.JSON; // @Autowired
import com.alibaba.fastjson.JSONObject; // private UserAdapter userAdapter;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerMerchant; // @Autowired
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp; // private RedisCache redisCache;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerMerchantManager; //
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager; // /**
import com.google.common.collect.Maps; // * 校验用户是否登录
import com.google.gson.Gson; // */
import lombok.extern.slf4j.Slf4j; // public void checkUserLogin(String sessionId) {
import org.apache.commons.collections4.CollectionUtils; // Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId);
import org.apache.commons.lang.StringUtils; // if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
import org.bouncycastle.jce.provider.BouncyCastleProvider; // throw new ServiceException(ResponseResult.NOT_LOGIN);
import org.jasypt.contrib.org.apache.commons.codec_1_3.binary.Base64; // }
import org.springframework.beans.factory.annotation.Autowired; // }
import org.springframework.beans.factory.annotation.Value; // /**
import org.springframework.stereotype.Service; // * 校验用户是否登录
// */
import javax.crypto.BadPaddingException; // public boolean checkUserLoginFlag(String sessionId) {
import javax.crypto.Cipher; // Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId);
import javax.crypto.spec.IvParameterSpec; // log.info("submit userInfoMap:{}", gson.toJson(userInfoMap));
import javax.crypto.spec.SecretKeySpec; // if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
import java.net.URLEncoder; // return false;
import java.security.Security; // }
import java.security.spec.AlgorithmParameterSpec; // return true;
import java.util.*; // }
import java.util.concurrent.TimeUnit; //
import java.util.stream.Collectors; // /**
// * 获取缓存用户信息
/** // */
* @author liming.guo // @Override
* @date 2018/05/11 // public Map<String, Object> getUserInfoMapBySessionId(String sessionId) {
*/ // String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
@Service // Map<String, Object> map;
@Slf4j // try {
public class UserServiceImpl implements UserService { // map = redisCache.getValue(redisKey);
private static Gson gson = new Gson(); // }catch (Exception e){
@Autowired // map = redisCache.getValue(redisKey);
private UserAdapter userAdapter; // }
@Autowired // return map;
private RedisCache redisCache; // }
//
/** // /**
* 校验用户是否登录 // * 获取缓存用户信息
*/ // *
public void checkUserLogin(String sessionId) { // * @param sessionId
Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId); // * @return
if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) { // */
throw new ServiceException(ResponseResult.NOT_LOGIN); // @Override
} // public UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId) {
} // checkUserLogin(sessionId);
/** //
* 校验用户是否登录 // String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
*/ // Map<String, Object> map = redisCache.getValue(redisKey);
public boolean checkUserLoginFlag(String sessionId) { // return userAdapter.getUserLoginInfoDto(map);
Map<String, Object> userInfoMap = this.getUserInfoMapBySessionId(sessionId); // }
log.info("submit userInfoMap:{}", gson.toJson(userInfoMap)); //}
if (userInfoMap == null || userInfoMap.size() <= 0 || userInfoMap.get(UserInfoKeyConstant.MEMBER_ID) == null) {
return false;
}
return true;
}
/**
* 获取缓存用户信息
*/
@Override
public Map<String, Object> getUserInfoMapBySessionId(String sessionId) {
String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
Map<String, Object> map;
try {
map = redisCache.getValue(redisKey);
}catch (Exception e){
map = redisCache.getValue(redisKey);
}
return map;
}
/**
* 获取缓存用户信息
*
* @param sessionId
* @return
*/
@Override
public UserLoginInfoDto getUserLoginInfoBySessionId(String sessionId) {
checkUserLogin(sessionId);
String redisKey = RedisKeyConstant.SAAS_USER_INFO_SESSIONID_KEY_PREFIX + sessionId;
Map<String, Object> map = redisCache.getValue(redisKey);
return userAdapter.getUserLoginInfoDto(map);
}
}
...@@ -3,18 +3,18 @@ package cn.freemud.service.process.WechatPush; ...@@ -3,18 +3,18 @@ package cn.freemud.service.process.WechatPush;
import cn.freemud.amp.body.OrderBody; import cn.freemud.amp.body.OrderBody;
import cn.freemud.entities.dto.QueryOrdersResponseDto; import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.vo.WxappPluginVo; import cn.freemud.entities.vo.WxappPluginVo;
import cn.freemud.enums.PluginAuditStatusEnum; import cn.freemud.enums.PluginAuditStatusEnum;
import cn.freemud.enums.YesOrNoEnum; import cn.freemud.enums.YesOrNoEnum;
import cn.freemud.manager.OpenPlatformWxappPluginBindManager; import cn.freemud.manager.OpenPlatformWxappPluginBindManager;
import cn.freemud.service.OrderDistributeMQService; import cn.freemud.service.OrderDistributeMQService;
import cn.freemud.service.impl.UserServiceImpl;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.sdk.api.assortment.order.enums.OrderSdkType; import com.freemud.sdk.api.assortment.order.enums.OrderSdkType;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
...@@ -66,8 +66,10 @@ public class WechatPushProcessor { ...@@ -66,8 +66,10 @@ public class WechatPushProcessor {
@Autowired @Autowired
private AssortmentOpenPlatformWxappManager openPlatformWxappManager; private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
// @Autowired
// private UserServiceImpl userService;
@Autowired @Autowired
private UserServiceImpl userService; private AssortmentCustomerInfoManager customerInfoManager;
/** /**
* 订单创建上送微信 * 订单创建上送微信
...@@ -76,7 +78,7 @@ public class WechatPushProcessor { ...@@ -76,7 +78,7 @@ public class WechatPushProcessor {
* @param oId 订单ID * @param oId 订单ID
* @param companyId 商户号 * @param companyId 商户号
*/ */
public boolean statusOrderCreate(UserLoginInfoDto userLoginInfoDto, String oId, String companyId) { public boolean statusOrderCreate(AssortmentCustomerInfoVo userLoginInfoDto, String oId, String companyId) {
DisRequest disRequest = null; DisRequest disRequest = null;
try { try {
// 判断当前小程序是否开通推荐优惠插件并启用 // 判断当前小程序是否开通推荐优惠插件并启用
...@@ -93,7 +95,7 @@ public class WechatPushProcessor { ...@@ -93,7 +95,7 @@ public class WechatPushProcessor {
} }
QueryOrdersResponse.DataBean.OrderBean orderBean = queryOrderByIdResponse.getData(); QueryOrdersResponse.DataBean.OrderBean orderBean = queryOrderByIdResponse.getData();
// 获取当前商户微信支付mchId // 获取当前商户微信支付mchId
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppid()); AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppId());
if (wxApp == null || wxApp.getMchId() == null) { if (wxApp == null || wxApp.getMchId() == null) {
LogUtil.error("syncStatusOrderCreate 订单上送信息 未查询到商户号", gson.toJson(wxApp), ""); LogUtil.error("syncStatusOrderCreate 订单上送信息 未查询到商户号", gson.toJson(wxApp), "");
return false; return false;
...@@ -129,7 +131,7 @@ public class WechatPushProcessor { ...@@ -129,7 +131,7 @@ public class WechatPushProcessor {
return; return;
} }
try { try {
UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(sessionId); AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (null == userLoginInfoDto) { if (null == userLoginInfoDto) {
LogUtil.error("syncStatusOrderPay 订单上送信息不全 终止上送", gson.toJson(userLoginInfoDto), ""); LogUtil.error("syncStatusOrderPay 订单上送信息不全 终止上送", gson.toJson(userLoginInfoDto), "");
return; return;
...@@ -138,7 +140,7 @@ public class WechatPushProcessor { ...@@ -138,7 +140,7 @@ public class WechatPushProcessor {
String mchId = null; String mchId = null;
if(StringUtils.isBlank(platformMchId)) { if(StringUtils.isBlank(platformMchId)) {
// 获取当前商户微信支付mchId // 获取当前商户微信支付mchId
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppid()); AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppId());
if (wxApp == null || wxApp.getMchId() == null) { if (wxApp == null || wxApp.getMchId() == null) {
LogUtil.error("syncStatusOrderCreate 订单上送信息 未查询到商户号", gson.toJson(wxApp), ""); LogUtil.error("syncStatusOrderCreate 订单上送信息 未查询到商户号", gson.toJson(wxApp), "");
return; return;
...@@ -182,11 +184,11 @@ public class WechatPushProcessor { ...@@ -182,11 +184,11 @@ public class WechatPushProcessor {
* @param userLoginInfoDto * @param userLoginInfoDto
* @return * @return
*/ */
private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, UserLoginInfoDto userLoginInfoDto) { private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, AssortmentCustomerInfoVo userLoginInfoDto) {
OrderBody.SyncStatusInfo syncStatusInfo = new OrderBody.SyncStatusInfo(); OrderBody.SyncStatusInfo syncStatusInfo = new OrderBody.SyncStatusInfo();
syncStatusInfo.setMchId(mchId); syncStatusInfo.setMchId(mchId);
syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppid()); syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppId());
syncStatusInfo.setOpenId(userLoginInfoDto.getOpenId()); syncStatusInfo.setOpenId(userLoginInfoDto.getOpenId());
syncStatusInfo.setSessionKey(userLoginInfoDto.getSessionKey()); syncStatusInfo.setSessionKey(userLoginInfoDto.getSessionKey());
return syncStatusInfo; return syncStatusInfo;
...@@ -200,12 +202,12 @@ public class WechatPushProcessor { ...@@ -200,12 +202,12 @@ public class WechatPushProcessor {
* @param userLoginInfoDto * @param userLoginInfoDto
* @return * @return
*/ */
private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, UserLoginInfoDto userLoginInfoDto, String paidNo, String outTradeNo private OrderBody.SyncStatusInfo getSyncStatusInfo(String mchId, AssortmentCustomerInfoVo userLoginInfoDto, String paidNo, String outTradeNo
, String endTransId, String terminalId) { , String endTransId, String terminalId) {
OrderBody.SyncStatusInfo syncStatusInfo = new OrderBody.SyncStatusInfo(); OrderBody.SyncStatusInfo syncStatusInfo = new OrderBody.SyncStatusInfo();
syncStatusInfo.setMchId(mchId); syncStatusInfo.setMchId(mchId);
syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppid()); syncStatusInfo.setWxAppid(userLoginInfoDto.getWxAppId());
syncStatusInfo.setOpenId(userLoginInfoDto.getOpenId()); syncStatusInfo.setOpenId(userLoginInfoDto.getOpenId());
syncStatusInfo.setSessionKey(userLoginInfoDto.getSessionKey()); syncStatusInfo.setSessionKey(userLoginInfoDto.getSessionKey());
syncStatusInfo.setTransactionId(paidNo); syncStatusInfo.setTransactionId(paidNo);
...@@ -222,8 +224,8 @@ public class WechatPushProcessor { ...@@ -222,8 +224,8 @@ public class WechatPushProcessor {
* @param userLoginInfoDto * @param userLoginInfoDto
* @return true 未开启 false 已开启插件 * @return true 未开启 false 已开启插件
*/ */
private boolean checkWechatOpenPlugin(UserLoginInfoDto userLoginInfoDto) { private boolean checkWechatOpenPlugin(AssortmentCustomerInfoVo userLoginInfoDto) {
List<WxappPluginVo> openPlatformWxappPluginBinds = openPlatformWxappPluginBindManager.queryByWxAppid(userLoginInfoDto.getWxAppid()); List<WxappPluginVo> openPlatformWxappPluginBinds = openPlatformWxappPluginBindManager.queryByWxAppid(userLoginInfoDto.getWxAppId());
List<WxappPluginVo> pluginVoList = openPlatformWxappPluginBinds.stream().filter(wxappPluginVo -> wxappPluginVo.getPluginAppid().equals(COUPON_PLUGINS)).filter(wxappPluginVo -> wxappPluginVo.getOperateStatus() == 1).collect(Collectors.toList()); List<WxappPluginVo> pluginVoList = openPlatformWxappPluginBinds.stream().filter(wxappPluginVo -> wxappPluginVo.getPluginAppid().equals(COUPON_PLUGINS)).filter(wxappPluginVo -> wxappPluginVo.getOperateStatus() == 1).collect(Collectors.toList());
if (CollectionUtils.isEmpty(pluginVoList) || pluginVoList.size() != 1) { if (CollectionUtils.isEmpty(pluginVoList) || pluginVoList.size() != 1) {
LogUtil.error("checkWechatOpenPlugin 订单上送信息 未开启优惠插件", gson.toJson(pluginVoList), ""); LogUtil.error("checkWechatOpenPlugin 订单上送信息 未开启优惠插件", gson.toJson(pluginVoList), "");
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
*/ */
package cn.freemud.service; package cn.freemud.service;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.service.process.WechatPush.WechatPushProcessor; import cn.freemud.service.process.WechatPush.WechatPushProcessor;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -34,16 +33,16 @@ public class WechatPushProcessorTest { ...@@ -34,16 +33,16 @@ public class WechatPushProcessorTest {
@Test @Test
public void syncStatusOrderCreateTest() { public void syncStatusOrderCreateTest() {
UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto(); // UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
userLoginInfoDto.setWxAppid("wxb78fb7c6218cb52c"); // userLoginInfoDto.setWxAppId("wxb78fb7c6218cb52c");
userLoginInfoDto.setSessionKey("G9m9zqlrTeNAqtmclsqkPg\u003d\u003d"); // userLoginInfoDto.setSessionKey("G9m9zqlrTeNAqtmclsqkPg\u003d\u003d");
userLoginInfoDto.setMobile("15956904546"); // userLoginInfoDto.setMobile("15956904546");
userLoginInfoDto.setPartnerId("1864"); // userLoginInfoDto.setPartnerId("1864");
userLoginInfoDto.setNewMemeber(false); // userLoginInfoDto.setNewMember(false);
userLoginInfoDto.setUnionId("okRmn1I4WUvHfcBNkPQ15ydnSJDA"); // userLoginInfoDto.setUnionId("okRmn1I4WUvHfcBNkPQ15ydnSJDA");
userLoginInfoDto.setOpenId("oORZK5JfpU-MkOV_tDFff8rz8ook"); // userLoginInfoDto.setOpenId("oORZK5JfpU-MkOV_tDFff8rz8ook");
String oId = "142674066768146957"; // String oId = "142674066768146957";
String companyId = "1864"; // String companyId = "1864";
// Assert.assertTrue( wechatPushProcessor.statusOrderCreate(userLoginInfoDto, oId,companyId) ); // Assert.assertTrue( wechatPushProcessor.statusOrderCreate(userLoginInfoDto, oId,companyId) );
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<version>1.0.0</version> <version>1.0.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>1.1.1.RELEASE</version> <version>1.1.2.RELEASE</version>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<dependencies> <dependencies>
......
...@@ -4,4 +4,5 @@ ...@@ -4,4 +4,5 @@
| ------------ | ---------------- | ------ | ---------- | | ------------ | ---------------- | ------ | ---------- |
| 1.0.0-SNAPSHOT | 迁移后包明改为cn.freemud开头第一版 | wuping | 2019-12-16 | | 1.0.0-SNAPSHOT | 迁移后包明改为cn.freemud开头第一版 | wuping | 2019-12-16 |
| 1.1.0.RELEASE| 1.9.8需求打包release版本 | 侯书虎 | 2019-12-26 | | 1.1.0.RELEASE| 1.9.8需求打包release版本 | 侯书虎 | 2019-12-26 |
| 1.1.1.RELEASE| 1.9.9需求打包release版本 | 丁凯 | 2020-01-08 | | 1.1.1.RELEASE| 1.9.9需求打包release版本 | 丁凯 | 2020-01-08 |
\ No newline at end of file | 1.1.2.RELEASE| 农工商订单submit | 侯书虎 | 2020-01-13 |
\ No newline at end of file
...@@ -57,4 +57,13 @@ public enum OrderClientType { ...@@ -57,4 +57,13 @@ public enum OrderClientType {
this.name = name; this.name = name;
} }
public static OrderClientType getOrderClientType(Integer index){
for (OrderClientType orderType : values()){
if (index.equals(orderType.getIndex())){
return orderType;
}
}
return null;
}
} }
...@@ -98,6 +98,11 @@ public class OrderItemCreateReq { ...@@ -98,6 +98,11 @@ public class OrderItemCreateReq {
//备注 //备注
private String note; private String note;
/**
* 第三方商品分类
*/
private String thirdCategoryId;
//商品分类ID //商品分类ID
private String categoryId; private String categoryId;
...@@ -112,5 +117,10 @@ public class OrderItemCreateReq { ...@@ -112,5 +117,10 @@ public class OrderItemCreateReq {
// 是否删除 // 是否删除
private Boolean isDeleted; private Boolean isDeleted;
/**
* 是否算积分
* 线下订单上传专用
*/
private Boolean needBonus;
} }
...@@ -34,6 +34,10 @@ public class OrderSettlementCreateReq { ...@@ -34,6 +34,10 @@ public class OrderSettlementCreateReq {
//备注 //备注
private String note; private String note;
/**
* 拓展字段
*/
private String extInfo;
//优惠覆盖数量 //优惠覆盖数量
private Integer number; private Integer number;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId> <artifactId>productcenter-sdk</artifactId>
<version>2.6.RELEASE</version> <version>2.7.4.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -332,7 +332,7 @@ public class ShoppingCartConvertAdapter { ...@@ -332,7 +332,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setSpuId(spuId); cartGoods.setSpuId(spuId);
cartGoods.setSkuId(skuId); cartGoods.setSkuId(skuId);
cartGoods.setQty(qty); cartGoods.setQty(qty);
Integer goodsType = StringUtils.isEmpty(skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType(); Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType(); goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType();
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) { } else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) {
......
...@@ -15,6 +15,9 @@ package cn.freemud.constant; ...@@ -15,6 +15,9 @@ package cn.freemud.constant;
public class ShoppingCartConstant { public class ShoppingCartConstant {
public final static String SHOPPING_CART_INVALIAD_GOODS="因商家变更了商品,导致选购失败,请刷新门店后重新尝试选购商品";
public final static String SHOPPING_CART_EMPTY_GOODS_LIST="因商品变更或其他原因,导致加购失效,无法结算,请重新尝试选购商品";
public final static String SHOPPING_CART_INVALID_GOODS_EXIST = "有商品不在售卖状态,请重新提交结算"; public final static String SHOPPING_CART_INVALID_GOODS_EXIST = "有商品不在售卖状态,请重新提交结算";
public final static String SHOPPING_CART_ACTIVITY_CHANGE = "商品价格有变动,将按照最新活动价格计算哦"; public final static String SHOPPING_CART_ACTIVITY_CHANGE = "商品价格有变动,将按照最新活动价格计算哦";
......
...@@ -45,7 +45,9 @@ public class ShoppingCartInfoRequestVo { ...@@ -45,7 +45,9 @@ public class ShoppingCartInfoRequestVo {
@NotEmpty(message = "appId不能为空") @NotEmpty(message = "appId不能为空")
private String appId; private String appId;
/** /**
* 是否查询用户优惠券 1-查询用户优惠券 flag=1 用户去结算 * 是否为结算页
* 1:结算页 0:点餐页
* 结算页会查询用户优惠券,点餐页不会查询用户优惠券
*/ */
private Integer flag; private Integer flag;
/** /**
......
...@@ -37,7 +37,6 @@ public interface CommonService { ...@@ -37,7 +37,6 @@ public interface CommonService {
request.setStoreCode(storeCode); request.setStoreCode(storeCode);
StoreCenterService storeCenterService = SpringBeanUtil.getBean(StoreCenterService.class); StoreCenterService storeCenterService = SpringBeanUtil.getBean(StoreCenterService.class);
BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo()); BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
ApiLog.info("CommonService_getOrgIds",request,orgList);
if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) { if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) {
return orgList.getData(); return orgList.getData();
} }
......
...@@ -164,7 +164,7 @@ public interface ShoppingCartNewService { ...@@ -164,7 +164,7 @@ public interface ShoppingCartNewService {
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON); setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON);
} }
//校验合法性,更新缓存中购物车信息 //校验合法性,更新缓存中购物车信息
allCartGoodsList = updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList); updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList);
} }
} }
...@@ -249,12 +249,11 @@ public interface ShoppingCartNewService { ...@@ -249,12 +249,11 @@ public interface ShoppingCartNewService {
* @param allCartGoodsList * @param allCartGoodsList
* @param productBeanListSpuClass * @param productBeanListSpuClass
*/ */
default Map<String, List<CartGoods>> addNotProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, CartGoods cartGoods default void addNotProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, CartGoods cartGoods
, String goodsId, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> allCartGoodsList , String goodsId, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> allCartGoodsList) {
, List<ProductBeanDTO> productBeanListSpuClass) {
// 校验合法性,更新缓存中购物车信息 // 校验合法性,更新缓存中购物车信息
allCartGoodsList = updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList); updateCartGoodsLegal(cartGoods, userId, shoppingCartGoodsResponseVo, addShoppingCartGoodsRequestVo, allCartGoodsList);
// 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价” // 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
boolean haveCouponProduct = allCartGoodsList.parallelStream().anyMatch(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)); boolean haveCouponProduct = allCartGoodsList.parallelStream().anyMatch(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX));
...@@ -262,10 +261,6 @@ public interface ShoppingCartNewService { ...@@ -262,10 +261,6 @@ public interface ShoppingCartNewService {
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价” // 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS); setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS);
} }
Map<String, List<CartGoods>> map = new HashMap<>();
map.put(productBeanListSpuClass.get(0).getName(), allCartGoodsList);
return map;
} }
} }
...@@ -19,9 +19,11 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; ...@@ -19,9 +19,11 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.naming.Name; import javax.naming.Name;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -100,7 +102,7 @@ public class AssortmentSdkService { ...@@ -100,7 +102,7 @@ public class AssortmentSdkService {
// 根据不同点餐类型获取不同购物车实例 // 根据不同点餐类型获取不同购物车实例
BaseResponse<List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods>> baseResponse = shoppingCartService.getCartGoodsList(cartParamDto, LogThreadLocal.getTrackingNo()); BaseResponse<List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods>> baseResponse = shoppingCartService.getCartGoodsList(cartParamDto, LogThreadLocal.getTrackingNo());
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || CollectionUtils.isEmpty(baseResponse.getResult())) { if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || CollectionUtils.isEmpty(baseResponse.getResult())) {
return null; return new ArrayList<>();
} }
return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class); return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class);
...@@ -120,13 +122,16 @@ public class AssortmentSdkService { ...@@ -120,13 +122,16 @@ public class AssortmentSdkService {
cartParamDto.setTableNumber(tableNumber); cartParamDto.setTableNumber(tableNumber);
cartParamDto.setCartGoodsList(JSONArray.parseArray(JSONObject.toJSONString(cartGoodsList), com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.class)); cartParamDto.setCartGoodsList(JSONArray.parseArray(JSONObject.toJSONString(cartGoodsList), com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.class));
BaseResponse<List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods>> baseResponse = shoppingCartService.setCartGoodsList(cartParamDto, LogThreadLocal.getTrackingNo()); BaseResponse<List<com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods>> baseResponse = shoppingCartService.setCartGoodsList(cartParamDto, LogThreadLocal.getTrackingNo());
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || CollectionUtils.isEmpty(baseResponse.getResult())) { if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) {
return null; return null;
} }
return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class); return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class);
} }
@Value("${shopping.cart.check.action}")
private String shoppingCartCheckAction;
/** /**
* 调用SDK校验购物车 * 调用SDK校验购物车
* *
...@@ -147,10 +152,13 @@ public class AssortmentSdkService { ...@@ -147,10 +152,13 @@ public class AssortmentSdkService {
checkCartRequest.setTableNumber(tableNumber); checkCartRequest.setTableNumber(tableNumber);
checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
checkCartRequest.setMenuType(BusinessTypeEnum.getByType(menuType).getCode()); checkCartRequest.setMenuType(BusinessTypeEnum.getByType(menuType).getCode());
long checkStartTime = System.currentTimeMillis(); BaseResponse<CheckCartRequest> baseResponse ;
BaseResponse<CheckCartRequest> baseResponse = shoppingCartService.checkAllCartGoods(checkCartRequest); if ("checkAllCartGoodsNew".equals(shoppingCartCheckAction)){
//LogUtil.info("shoppingCartBaseService checkAllCartGoods ", checkStartTime, JSON.toJSONString(checkCartRequest), JSON.toJSONString(baseResponse)); baseResponse= shoppingCartService.checkAllCartGoodsNew(checkCartRequest);
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) { }else {
baseResponse=shoppingCartService.checkAllCartGoods(checkCartRequest);
}
if (baseResponse == null) {
return null; return null;
} }
return baseResponse.getResult(); return baseResponse.getResult();
......
...@@ -117,7 +117,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -117,7 +117,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
// 当添加的商品不是商品券时 // 当添加的商品不是商品券时
if (!spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { if (!spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
//添加非商品券商品 //添加非商品券商品
addNotProductGoods(requestVo, cartGoods, goodsId, userId, responseVo, allCartGoodsList, productBeanListSpuClass); addNotProductGoods(requestVo, cartGoods, goodsId, userId, responseVo, allCartGoodsList);
} else { } else {
// 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null // 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null
this.addProductGoods(requestVo, cartGoods, spuId2, userId, responseVo, this.addProductGoods(requestVo, cartGoods, spuId2, userId, responseVo,
......
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