Commit a97f2a85 by ping.wu

Merge branches 'feature/20210720-购物车日志修改-张志恒' and 'master' of…

Merge branches 'feature/20210720-购物车日志修改-张志恒' and 'master' of http://gitlab.freemud.com/order-group-application/order-group
parents 33f6a8d1 5a26fa32
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.1.84-RELEASE</version>
<version>2.1.85-RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.3.63.RELEASE</version>
<version>1.3.65.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -153,4 +153,5 @@
| 2.1.75-RELEASE | 集点活动改造 | 张志恒 | 2021-06-28|
| 2.1.76-RELEASE | 开放平台取消订单调用oms| 张志恒 | 2021-07-01|
| 2.1.82-RELEASE | pos 打印满赠 | 张志恒 | 2021-07-09|
| 2.1.84-RELEASE | KA-20210702-非码发版日售后单时间推迟 | 周晓航 | 2021-07-12|
\ No newline at end of file
| 2.1.84-RELEASE | KA-20210702-非码发版日售后单时间推迟 | 周晓航 | 2021-07-12|
| 2.1.85-RELEASE | 小助手日结统计订单查询和售后列表查询改为从库查询 | 刘继明 | 2021-07-19|
\ No newline at end of file
......@@ -1817,6 +1817,28 @@ public class OrderSdkAdapter {
return activityUpdateStockRequest;
}
public ActivityUpdateStockRequest convert2ActivityUpdateStockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean,
List<ActivityUpdateStockRequest.StockBeanDto> stockBeanDtos) {
if (orderBean == null || CollectionUtils.isEmpty(stockBeanDtos)) {
return null;
}
List<String> activityList = new ArrayList<>();
// 只记录订单级别的活动ID
if (CollectionUtils.isNotEmpty(stockBeanDtos)) {
activityList.addAll(stockBeanDtos.stream().filter(ad -> StringUtils.isNotBlank(ad.getActivityCode())).map(ActivityUpdateStockRequest.StockBeanDto::getActivityCode).distinct().collect(Collectors.toList()));
}
ActivityUpdateStockRequest updateStockRequest = new ActivityUpdateStockRequest();
updateStockRequest.setStock(stockBeanDtos);
updateStockRequest.setActivityList(activityList);
updateStockRequest.setOrderId(orderBean.getOid());
updateStockRequest.setPartnerCode(orderBean.getCompanyId());
updateStockRequest.setStoreId(orderBean.getShopId());
updateStockRequest.setVer("1");
updateStockRequest.setUserId(orderBean.getUserId());
updateStockRequest.setOrderCreateTime(DateUtil.getCurrentDate(DateUtil.FORMAT_yyyyMMdd_date));
return updateStockRequest;
}
/**
* 订单下载转换对象
*/
......
......@@ -402,4 +402,13 @@ public interface OrderCenterSdkService {
* 订单POS拒单 POS
*/
BaseOrderResponse mallOrderReject(CancelOrderRequest cancelOrderRequest);
/**
* 分页查询售后单(从库查询)
*/
AfterSalesListResp queryAfterSalesListFromDb(QueryAfterSalesOrderConditionsReq queryRequest, String trackNo);
/**
* 小助手日结统计订单信息查询(分页,从库查询)
*/
QueryOrdersResponse getOrderListByDb(QueryOrdersByConditionsRequest queryOrdersByConditionsRequest);
}
......@@ -2288,4 +2288,16 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
@Override
public AfterSalesListResp queryAfterSalesListFromDb(QueryAfterSalesOrderConditionsReq queryRequest, String trackNo) {
return orderDownLoadSdkService.queryAfterSalesOrderFromDb(queryRequest, trackNo);
}
@Override
public QueryOrdersResponse getOrderListByDb(QueryOrdersByConditionsRequest queryOrdersByConditionsRequest) {
OrderConditionsReq request = orderSdkAdapter.convent2QueryOrdersByConditionsRequest(queryOrdersByConditionsRequest);
BaseDownLoadResponse<List<OrderInfoReqs>> baseDownLoadResponse = orderDownLoadSdkService.queryOrderByDayFromDb(request, "");
return orderSdkAdapter.convent2OrdersResponseByES(baseDownLoadResponse);
}
}
......@@ -40,6 +40,10 @@ public class OrderCallBackConfig {
public static final String SEND_YOUSHU_REPORT_QUEUE_ROUTING_KEY="send-youshu-report-queue-routing-key";
public static final String SEND_YOUSHU_REPORT_QUEUE="send-youshu-report-queue";
// 支付宝订单状态推送 tapd需求id 1032865
public static final String ZFB_ORDER_SEND_QUEUE_ROUTING_KEY="zfb-order-send-queue-routing-key";
public static final String ZFB_ORDER_SEND_QUEUE="zfb-order-send-queue";
/**
* 定义基于Fanout 的Exchange。
* 基于这个代码,也可以非常方便的定义其他的Exchange类型。
......
......@@ -23,7 +23,9 @@ import cn.freemud.entities.dto.OrderStatusChangeRequestDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.WechatReportOrderDto;
import cn.freemud.entities.vo.OrderCallBackRequestVo;
import cn.freemud.entities.vo.OrderInfo;
import cn.freemud.redis.RedisCache;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
......@@ -63,6 +65,8 @@ public class OrderCallBackMQService {
private String invoicePartnerIds;
private static final String backOrdersChangeOrderStatusConsumerQueue="program.backorders_change_order_status_consumer_queue";
private static final String backOrdersNotifyActivityExchange="program.backorders_notify_activity_exchange";
@Autowired
private LogUtil logUtil;
public void sendOrderMQ(OrderCallBackRequestVo body) {
//发送订单回调
Header header = new Header(MQAction.UPDATE.getAction(), "call-back-service-api",
......@@ -86,6 +90,9 @@ public class OrderCallBackMQService {
}
// 有数订单数据上报 & 每日下单门店统计
sendYoushuReportMQ(body);
//支付宝订单状态变更上报
sendzfbOrderMQ(body);
}
/**
......@@ -349,4 +356,26 @@ public class OrderCallBackMQService {
ApiLog.infoMessage("send sendYoushuReportMQ Error orderCode:{} e:{}", body.getOrderCode(), ExceptionUtils.getFullStackTrace(e));
}
}
private void sendzfbOrderMQ(OrderCallBackRequestVo body) {
try {
if (Objects.isNull(body) || StringUtils.isEmpty(body.getContent())) {
return;
}
if (OrderClientType.ALIPAY.getIndex() != body.getOrderClient()) {
return;
}
logUtil.info("sendzfbOrderMQ orderCode:{} ", body.getOrderCode());
// 支付宝订单状态推送 tapd需求id 1032865
if ("1".equals(body.getMsgType())) {
Header header = new Header(MQAction.UPDATE.getAction(), "call-back-service-api",
null, OrderCallBackConfig.ZFB_ORDER_SEND_QUEUE);
MQMessage<OrderCallBackRequestVo> message = new MQMessage<>(header, body);
mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.ZFB_ORDER_SEND_QUEUE_ROUTING_KEY, message);
}
}catch (Exception e){
logUtil.error("sendzfbOrderMQ orderCode:{} ", e,body.getOrderCode());
}
}
}
......@@ -92,4 +92,7 @@ public class CalculationDiscountRequestDto {
* 拼团活动是,必传活动号
*/
private List<String> groupActivityCode;
//指定参与的活动类型
private List<Integer> activityTypes;
}
package cn.freemud.entities.dto.store;
import lombok.Data;
@Data
public class BusinessInfoDto {
private String autoSelfmentionTakeOrderWorkflowFinishTime;
private String autoSelfmentionMakerWorkflowFinishTime;
private String autoTakeOutTakeOrderWorkflowFinishTime;
private String autoDeliveryTakeOrderWorkflowFinishTime;
private String appointAutoSelfmentionTakeOrderWorkflowFinishTime;
private String appointAutoSelfmentionMakerWorkflowFinishTime;
private String appointAutoTakeOutTakeOrderWorkflowFinishTime;
private String appointAutoDeliveryTakeOrderWorkflowFinishTime;
private Integer autoThirdDeliveryTakeOrderWorkflowFinishTime;
private Integer appointThirdDeliveryTakeOrderWorkflowFinishTime;
private String autoChargebackOrderTime;
private String autoChargebackOrderType;
private String autoOrderPrintConfig;
private String overTimeCloseOrder;
private String overTimeCloseOrderTime;
private String pickUpAutomaticOrderTime;
private String takeOutAutomaticOrderTime;
private Integer automaticRefund;
private Integer deliveryAppoint;
private Integer selfMentionSwitch;
private Integer deliveryAppointTime;
private String deliveryOrderWarnTime;
private Integer tableware;
private Integer autoThirdDeliveryPickCompleteWorkflowFinishTime;
private Integer appointThirdDeliveryPickCompleteWorkflowFinishTime;
private String timeOfRefund;
private Integer timeTypeOfRefund;
private Integer turnOnTimeOfMaking;
private Integer goodsAvgTimeOfMaking;
private Integer deliveryFinishedAfterMinute;
private Integer deliveryProcessingAfterMinute;
private Integer deliveryProcessingBeforeMinute;
private Integer orderProgressBarStatus;
private ExpandFields expandFields;
}
package cn.freemud.entities.dto.store;
import lombok.Data;
@Data
public class ExpandFields {
//月销量配置值
private String monthlySalesConfigValue;
//月销量是否展示(1-是;0-否)
private String monthlySalesShow;
//点赞数是否展示(1-是;0-否)
private String likesShow;
//点赞数配置值
private String likesConfigValue;
//扫桌码下单(1-开启;0-关闭) 开启该配置的门店在下单的时候,需要判断有没有桌号,如果没有桌号需要扫码获取桌号后再下单
private String scanOrderSwitch;
//高峰时间配送时间
private Object[] peakTimeDelivery;
//每增加一公里增加的时长(分钟)
private String appendMinutePerKilometer;
}
package cn.freemud.entities.dto.store;
import cn.freemud.entities.dto.StoreResponseDto;
import lombok.Data;
@Data
public class SoreMixResponseDto {
private StoreResponseDto storeInfo;
private BusinessInfoDto businessInfo;
private Object deliveryInfo;
private Object parentUntilTop;
private Object storeBusyTimeInfoList;
private Object storeImageList;
}
......@@ -23,10 +23,27 @@ public class StoreInfoRequestDto {
private String storeCode;
private QueryInfo query;
public StoreInfoRequestDto(String partnerId, String storeCode) {
this.partnerId = partnerId;
this.storeCode = storeCode;
}
@Data
public static class QueryInfo{
//查询门店基本信息
private Boolean queryStoreInfo;
// 查询门店的渠道上级列表
private Boolean queryParentUntilTop;
//查询配送设置信息
private Boolean queryDeliveryInfo;
//查询业务设置信息
private Boolean queryBusinessInfo;
//查询门店图片
private Boolean queryStoreImage;
//查询门店繁忙时间
private Boolean queryStoreBusyTime;
}
}
......@@ -139,7 +139,7 @@ public enum ResponseResult {
UPDATE_ORDER_INFO_ERROR("45043","下单失败","Order failed"),
CLEAR_SHOPPING_INFO_ERROR("45044","操作购物车失败","Failed to operate shopping cart"),
ORDER_CREATE_TABLE_ERROR("45046","开台异常","Abnormal opening"),
ORDER_TABLE_BINDING_ERROR("45047","用户未绑定桌号","The user is not bound with the table number"),//改code与前端有强关联,不可重复
ORDER_TABLE_BINDING_ERROR("45047","未绑定桌号","The user is not bound with the table number"),//改code与前端有强关联,不可重复
ENCIRCLEORDER_TABLENUMBER_LOCK("45048","当前桌号正在开台或已开台","The current table number is being opened or has been opened"),
ENCIRCLEORDER_PRE_PAYMENT_SUCCESS("45049","订单已支付","Order paid"),
CLEAR_SHOPPING_INFO_SYSTEM_ERROR("45048","清空购物车异常","Empty shopping cart abnormal"),
......
package cn.freemud.enums;
public enum ScanOrderSwitchEnum {
TRUE("1", "开启"),
FALSE("0", "关闭");
ScanOrderSwitchEnum(String code, String message) {
this.code = code;
this.message = message;
}
private String code;
private String 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;
}
}
......@@ -3,6 +3,7 @@ package cn.freemud.manager;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.redis.RedisCache;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
......@@ -21,11 +22,15 @@ import java.util.stream.Collectors;
*/
@Component
public class BuyProductOnceManager {
// @Autowired
// protected RedisTemplate redisTemplate;
@Autowired
protected RedisTemplate redisTemplate;
private RedisCache redisCache;
//用户限购:每人每单限购一次 / 禁用
public ResponseResult checkBuyProductOnce(List<ProductInfo> products, String partnerId, String userId) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
List<ProductInfo> productsCheck = products.stream().filter(product -> product.getIsLimitNumProduct() == 1).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(productsCheck)) {
//每人每单限购一次
......@@ -55,6 +60,7 @@ public class BuyProductOnceManager {
//清掉key
public boolean removeCheckBuyProductOnceKey(String partnerId, String userId,String pid) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
String key = this.getCheckBuyProductOnceKey(partnerId, userId,pid);
redisTemplate.delete(key);
return true;
......
......@@ -3,6 +3,7 @@ package cn.freemud.manager;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.enums.OrderTackCodeRuleEnum;
import cn.freemud.enums.OrderType;
import cn.freemud.redis.RedisCache;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentTackCodeRule;
import com.freemud.api.assortment.datamanager.manager.AssortmentTackCodeRuleManager;
import com.freemud.sdk.api.assortment.order.request.order.ConfirmOrderRequest;
......@@ -27,8 +28,12 @@ import java.util.function.Function;
public class OrderTackCodeManager {
@Autowired
private AssortmentTackCodeRuleManager assortmentTackCodeRuleManager;
// @Autowired
// protected RedisTemplate redisTemplate;
@Autowired
protected RedisTemplate redisTemplate;
private RedisCache redisCache;
public final static String numberChar = "0123456789";
......@@ -44,6 +49,7 @@ public class OrderTackCodeManager {
* @return
*/
public String generateTackCode(Integer orderType, String partnerId, String storeId, ConfirmOrderRequest var1, Function<Integer, String> fun) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
String key = this.getOrderTackCodeKey(partnerId);
String randomKey = getRandomOrderTackCodeKey(partnerId, storeId);
String rule = (String) redisTemplate.opsForHash().entries(key).get("rule");
......@@ -166,6 +172,7 @@ public class OrderTackCodeManager {
}
private void initTackCodeSettingHash(AssortmentTackCodeRule assortmentTackCodeRule,String randomKey, Map<Object, Object> tackCodeSettingMap){
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
tackCodeSettingMap.put("eatInHead", assortmentTackCodeRule.getEatInHead());
tackCodeSettingMap.put("eatInCode", Integer.valueOf(assortmentTackCodeRule.getEatInCode()));
tackCodeSettingMap.put("eatInLength", assortmentTackCodeRule.getEatInCode().length());
......
......@@ -25,9 +25,7 @@ import cn.freemud.entities.dto.delivery.GetDeliveryFlagResponseDto;
import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.GetEstimateDeliveryRequest;
import cn.freemud.entities.dto.store.StoreCBaseResponse;
import cn.freemud.entities.dto.store.StoreCBaseResponseDto;
import cn.freemud.entities.dto.store.*;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
......@@ -41,6 +39,7 @@ import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreBaseApiClient;
import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.utils.AppLogUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
......@@ -51,6 +50,7 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ApiLog;
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.StatisticalPropertyRequest;
......@@ -83,7 +83,6 @@ import java.time.LocalTime;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class CheckOrder {
......@@ -138,6 +137,10 @@ public class CheckOrder {
@Autowired
private StoreBaseApiClient storeBaseApiClient;
@Autowired
private StoreClient storeClient;
/**
* 下单会员相关校验
*/
......@@ -186,6 +189,29 @@ public class CheckOrder {
}
/**
* 查询门店信息新接口
*/
public SoreMixResponseDto getStoreInfoNew(String partnerId, String shopId,Boolean queryBusinessInfo) {
// 获取门店信息
StoreInfoRequestDto request = new StoreInfoRequestDto();
request.setPartnerId(partnerId);
request.setStoreCode(shopId);
StoreInfoRequestDto.QueryInfo query = new StoreInfoRequestDto.QueryInfo();
// query.setQueryStoreInfo(true);
query.setQueryBusinessInfo(queryBusinessInfo);
request.setQuery(query);
StoreBaseResponseDto<SoreMixResponseDto> storeInfoNew = storeClient.getStoreInfoNew(request);
if (storeInfoNew == null || storeInfoNew.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
if (queryBusinessInfo && storeInfoNew.getBizVO().getBusinessInfo() == null) {
throw new ServiceException(ResponseResult.STORE_DATE_ERROR);
}
return storeInfoNew.getBizVO();
}
/**
* 下单门店相关校验
*/
public StoreResponse.BizVO checkOrderByStore(CreateOrderVo createOrderVo, String trackingNo) {
......@@ -217,6 +243,20 @@ public class CheckOrder {
}
/**
* queryBusinessInfoNew
*/
public BusinessInfoDto queryBusinessInfoNew(CreateOrderVo createOrderVo) {
String partnerId = createOrderVo.getPartnerId();
String shopId = createOrderVo.getShopId();
// 获取门店信息
SoreMixResponseDto storeInfoNew = getStoreInfoNew(partnerId, shopId, true);
BusinessInfoDto businessInfo =storeInfoNew.getBusinessInfo();
return businessInfo;
}
/**
* 下单订单类型校验
*/
public Integer checkOrderByOrderType(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
......@@ -271,6 +311,13 @@ public class CheckOrder {
if (storeResponseDto.getIsSelfMention() == null || storeResponseDto.getIsSelfMention() != 1) {
throw new ServiceException(ResponseResult.STORE_NOT_ENABLE_COLLECT_GOODS);
}
//扫桌码下单开关判断
BusinessInfoDto businessInfoDto = queryBusinessInfoNew(createOrderVo);
if(businessInfoDto != null && businessInfoDto.getExpandFields() != null
&& ScanOrderSwitchEnum.TRUE.getCode().equals(businessInfoDto.getExpandFields().getScanOrderSwitch())
&& StringUtils.isBlank(createOrderVo.getTableNumber())){
throw new ServiceException(ResponseResult.ORDER_TABLE_BINDING_ERROR);
}
createOrderVo.setUserName(userLoginInfoDto.getNickName());
createOrderVo.setMobile(userLoginInfoDto.getMobile());
}
......@@ -288,7 +335,6 @@ public class CheckOrder {
//获取门店配送信息
StoreDeliveryInfoDto storeDeliveryInfoDto = null;
if (storeDeliveryUseOld) {
//todo storeDeliveryUseOld 配置删除,老逻辑删除
storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, appId);
} else {
storeDeliveryInfoDto = getNewStoreDeliveryInfo(storeResponseDto, config, appId, trackingNo);
......@@ -822,7 +868,6 @@ public class CheckOrder {
storeDeliveryInfoDto.setDeliveryRadius(0);
}
// 只有小程序设置了外卖,并且开通了第三方配送账户,才是第三方配送单
//todo 判断多余
if (openPlatformIappWxappConfig == null) {
openPlatformIappWxappConfig = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(wxAppid);
}
......@@ -933,7 +978,6 @@ public class CheckOrder {
* @param storeCode 门店号
* @return
*/
//todo 预计送达时间购物车接口返回,免去多调用一次接口
private Date getEstimateDeliveryCompleteTime(String userLat,
String userLong,
String partnerId,
......@@ -950,7 +994,7 @@ public class CheckOrder {
request.setPartnerId(partnerId);
request.setStoreCode(storeCode);
StoreCBaseResponse<StoreCBaseResponseDto> responseDto = storeBaseApiClient.queryDeliverDetail(request);
// AppLogUtil.infoLog("fisherman 获取门店预计送达时间",request,responseDto);
AppLogUtil.infoLog("fisherman 获取门店预计送达时间",request,responseDto);
if (responseDto == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
......
......@@ -10,7 +10,10 @@ import cn.freemud.entities.Active;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.product.GetValidateProductInfoDto;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.product.ValidateProductInfosDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.NgsSellCouponCreateOrderVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
......@@ -21,6 +24,8 @@ import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.PromotionActivityClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil;
......@@ -51,6 +56,7 @@ import com.freemud.application.sdk.api.productcenter.request.product.GetProductI
import com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryInfoResponse;
import com.freemud.application.sdk.api.productcenter.response.product.GetProductInfosResponse;
import com.freemud.application.sdk.api.productcenter.service.MenuService;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.stockapi.service.StockSdkService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
......@@ -148,6 +154,10 @@ public class SellCouponOrderServiceImpl {
@Autowired
private BuyProductOnceManager buyProductOnceManager;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
/**
* 卖券订单创建
*/
......@@ -200,7 +210,11 @@ public class SellCouponOrderServiceImpl {
if (createOrderRequestResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderRequestResponse.getCode()) || createOrderRequestResponse.getResult() == null) {
return createOrderRequestResponse;
}
CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult();
//标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品
// List<ActivityUpdateStockRequest.StockBeanDto> stockBeanDtos = calculationDiscount(partnerId, storeId, userLoginInfoDto.getMemberId(), productInfosDto.getData().getProducts().get(0), createOrderRequest);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse);
if (createOrderResponse == null || createOrderResponse.getErrcode() != 100) {
......@@ -228,6 +242,22 @@ public class SellCouponOrderServiceImpl {
return ResponseUtil.error(baseResponse.getCode(),"商品库存不足");
}
}
// if(CollectionUtils.isNotEmpty(stockBeanDtos)){
// // 扣减活动库存
// ActivityUpdateStockRequest activityUpdateStockRequest = orderSdkAdapter.convert2ActivityUpdateStockRequest(orderBean, stockBeanDtos);
// // 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
// if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
// BaseResponse activityResponse = promotionDiscountClient.subtractStock(activityUpdateStockRequest);
// if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
// // 失败取消订单
// CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
// AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
// BaseOrderResponse orderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
// return ResponseUtil.error(ResponseResult.ORDER_CREATE_ERROR.getCode(),"活动库存不足");
// }
// }
// }
}
//创建支付
......@@ -827,4 +857,65 @@ public class SellCouponOrderServiceImpl {
return money;
}
/**
* 查询促销优惠,赋值订单金额,商品优惠后金额,优惠记录
*/
private List<ActivityUpdateStockRequest.StockBeanDto> calculationDiscount(String partnerId,String storeId,String userId,ProductInfo products,CreateOrderRequest createOrderRequest){
CalculationDiscountRequestDto calculationDiscountRequestDto = new CalculationDiscountRequestDto();
calculationDiscountRequestDto.setStoreId(storeId);
calculationDiscountRequestDto.setPartnerCode(partnerId);
calculationDiscountRequestDto.setUserId(userId);
List<CalculationDiscountGoodsDto> discountGoodsDtoList = new ArrayList<>();
CalculationDiscountGoodsDto discountGoodsDto = new CalculationDiscountGoodsDto();
discountGoodsDto.setGoodsId(products.getPid());
discountGoodsDto.setGoodsQuantity(1);
discountGoodsDto.setOriginalPrice(products.getFinalPrice().intValue());
discountGoodsDtoList.add(discountGoodsDto);
calculationDiscountRequestDto.setGoods(discountGoodsDtoList);
//买券包调促销指定只计算限时特价 [2,21]
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(2,21));
calculationDiscountRequestDto.setVer(1);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
if (!ResponseResult.SUCCESS.getCode().equals(activityCalculationDiscountResponseDto.getStatusCode()) || activityCalculationDiscountResponseDto.getResult() == null) {
return null;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
if(CollectionUtils.isEmpty(result.getDiscounts())){
return null;
}
if(CollectionUtils.isNotEmpty(result.getGoods())){
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods good : result.getGoods()){
if(good.getGoodsId().equals(products.getPid())){
if(CollectionUtils.isEmpty(good.getDiscounts())){
return null;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = good.getDiscounts();
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
Long discount = discounts.get(0).getDiscount();
orderSettlementCreateReq.setProductId(products.getPid());
orderSettlementCreateReq.setSettlementType(discounts.get(0).getType());
orderSettlementCreateReq.setSettlementAmount(products.getFinalPrice()-discount);
orderSettlementCreateReq.setShopDiscountAmount(discount);
orderSettlementCreateReq.setNumber(1);
orderSettlementCreateReq.setShopAmount(products.getFinalPrice()-discount);
orderSettlementCreateReq.setExternalObjectId(discounts.get(0).getActivityCode());
orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setExternalObjectName(discounts.get(0).getActivityName());
orderSettlementCreateReq.setNote(result.getDiscounts().get(0).getActivityName());
List<OrderSettlementCreateReq> orderSettlementCreateReqList = new ArrayList<>();
orderSettlementCreateReqList.add(orderSettlementCreateReq);
createOrderRequest.setOrderSettlementDetailList(orderSettlementCreateReqList);
createOrderRequest.setSettlementAmount(result.getTotalAmount());
createOrderRequest.setActualPayAmount(result.getTotalAmount());
createOrderRequest.getOrderItemList().get(0).setSettlementPrice(products.getFinalPrice()-discount);
createOrderRequest.getOrderItemList().get(0).setProductSharePrice(discount);
}
}
return result.getStocks();
}
return null;
}
}
......@@ -15,6 +15,7 @@ package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.*;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
......
......@@ -12,6 +12,7 @@
*/
package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
......@@ -22,6 +23,7 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.vo.QueryGroupHistoryRequest;
import cn.freemud.entities.vo.QuerySpellGroupRequest;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
......@@ -94,5 +96,9 @@ public interface PromotionDiscountClient {
@PostMapping("/activity/groupWork/queryHistory")
QueryHistoryGroupVOResponse queryHistory(QueryGroupHistoryRequest querySpellGroupRequest);
/**
* 扣减活动库存
*/
@PostMapping("/activity/stock/subtractStock")
BaseResponse subtractStock(@RequestBody ActivityUpdateStockRequest activityReq);
}
///**
// * All rights Reserved, Designed By www.freemud.cn
// *
// * @Title: StoreController
// * @Package cn.freemud.controller
// * @Description:
// * @author: ping.wu
// * @date: 2018/5/11 19:14
// * @version V1.0
// * @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
// * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
// */
//package cn.freemud.service.thirdparty;
//
//import cn.freemud.entities.dto.*;
//import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest;
//import com.freemud.application.sdk.api.storecenter.response.StoreBaseResponse;
//import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.http.MediaType;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//
//@FeignClient(name = "CONSOLE-API")
//@RequestMapping(produces = {"application/json;charset=UTF-8"})
//public interface StoreClient {
//
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: StoreController
* @Package cn.freemud.controller
* @Description:
* @author: ping.wu
* @date: 2018/5/11 19:14
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.store.SoreMixResponseDto;
import cn.freemud.entities.dto.store.StoreBaseResponseDto;
import cn.freemud.entities.dto.store.StoreInfoRequestDto;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreBaseResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "CONSOLE-API",url="${saas.storeitemclient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface StoreClient {
// /**
// * 查询附近门店
// *
......@@ -54,4 +57,11 @@
//
// @PostMapping(value = "/storecenter/storetable/v2/tableActiveFlagChange", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
// StoreBaseResponseDto<StoreBaseResponse> changeTableNumberStatus(@RequestBody ChangeTableOrderStateRequest changeTableOrderStateRequest);
//}
/**
* 查询门店信息
*/
@PostMapping(value = "/api/v2/organization/getStoreMix", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
StoreBaseResponseDto<SoreMixResponseDto> getStoreInfoNew(@RequestBody StoreInfoRequestDto request);
}
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<!-- <version>1.3.63.RELEASE</version>-->
<version>1.3.65.RELEASE</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
......@@ -94,4 +94,6 @@
| 1.3.60.RELEASE | 预计送达时间字段添加 | 周晓航 | 2021-06-24 |
| 1.3.61.RELEASE | 麦咖啡p7v2 | xukang | 2021-06-24 |
| 1.3.62.RELEASE | 集点活动改造 | 张志恒 | 2021-06-28 |
| 1.3.63.RELEASE | 开放平台取消订单调用oms | 张志恒 | 2021-07-01 |
\ No newline at end of file
| 1.3.63.RELEASE | 开放平台取消订单调用oms | 张志恒 | 2021-07-01 |
| 1.3.64.RELEASE | 小助手日结统计订单查询和售后列表查询改为从库查询 | 刘继明 | 2021-07-19 |
| 1.3.65.RELEASE | 聚合层sdk异常,版本引不到,解决代码报错 | 王航航 | 2021-07-20 |
\ No newline at end of file
......@@ -258,5 +258,14 @@ public class InterfaceAddressConstant {
* 查询 指定日期对应 商户号 的订单汇总数据
*/
public static final String QUERY_ORDER_COUNT_REPORT = "order/v2/orderCount";
/**
* 根据综合条件查询售后单(从库查询)
*/
public static final String QUERY_ORDER_AFTER_SALES_FROM_DB = "order/v2/db/queryAfterSalesOrderConditions";
/**
* 小助手日结统计订单从库查询
*/
public static final String QUERY_ORDER_DAY_FROM_DB = "order/v2/db/queryOrderByConditions";
}
......@@ -170,6 +170,36 @@ public class OrderDownLoadSdkService {
return responseHandle(responseDTO);
}
/**
* 根据综合条件查询售后单(从库查询)
*
* @param queryRequest
* @param trackingNo
* @return
*/
public AfterSalesListResp queryAfterSalesOrderFromDb(QueryAfterSalesOrderConditionsReq queryRequest, String trackingNo) {
AfterSalesListResp responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, InterfaceAddressConstant.QUERY_ORDER_AFTER_SALES_FROM_DB,
createBaseRequest(queryRequest, trackingNo), new ParameterizedTypeReference<AfterSalesListResp>() {
});
return responseDTO;
}
/**
* 小助手日结统计订单查询(从库查询)
* @param request
* @param trackingNo
* @return
*/
public BaseDownLoadResponse<List<OrderInfoReqs>> queryOrderByDayFromDb(OrderConditionsReq request, String trackingNo) {
long begin = System.currentTimeMillis();
BaseDownLoadResponse<List<OrderInfoReqs>> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexDownLoad(restTemplate, InterfaceAddressConstant.QUERY_ORDER_DAY_FROM_DB,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<BaseDownLoadResponse<List<OrderInfoReqs>>>() {
});
batchCheckTime(request,responseDTO);
ThirdPartyLog.infoConvertJson(begin, System.currentTimeMillis(), InterfaceAddressConstant.QUERY_ORDER_DAY_FROM_DB, request, responseMini(responseDTO));
return responseHandle(responseDTO);
}
BaseDownLoadResponse responseMini(BaseDownLoadResponse responseDTO){
......
......@@ -22,7 +22,7 @@
<lombok.version>1.16.16</lombok.version>
<feign-form.version>3.0.3</feign-form.version>
<ordercenter-sdk.version>1.0.0</ordercenter-sdk.version>
<ordercenter-sdk.version>1.3.65.RELEASE</ordercenter-sdk.version>
</properties>
<modules>
<module>ordercenter-sdk</module>
......
......@@ -23,10 +23,7 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeResponseDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeRequestDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.ActivityShareType;
import cn.freemud.enums.CouponStatus;
import cn.freemud.enums.CouponTypeEnum;
import cn.freemud.enums.*;
import cn.freemud.utils.BeanUtil;
//import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.google.common.collect.Lists;
......@@ -555,7 +552,7 @@ public class CouponAdapter {
couponPromotionVO.setStoreId(shoppingCartInfoRequestVo.getShopId());
// 删除配送券-> 商品券使用逻辑组装 fisherman购物车配送券组装
String couponCode1 = shoppingCartInfoRequestVo.getCouponCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if(CollectionUtils.isNotEmpty(couponCodes)){
Set<String > setCoupons = new HashSet<>();
couponCodes.forEach(c -> setCoupons.add(c.getCouponCode()));
......@@ -567,7 +564,12 @@ public class CouponAdapter {
}
couponPromotionVO.setOrderType(shoppingCartInfoRequestVo.getOrderType());
couponPromotionVO.setFlg(shoppingCartInfoRequestVo.getFlag());
// couponPromotionVO.setFlg(shoppingCartInfoRequestVo.getFlag());
couponPromotionVO.setAvailableCouponQueryFlag(shoppingCartInfoRequestVo.getFlag() == null ? "":shoppingCartInfoRequestVo.getFlag().toString());
if(Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())){
couponPromotionVO.setAvailableCouponQueryFlag(shoppingCartInfoRequestVo.getVersion());
}
couponPromotionVO.setUnChooseCouponCode(shoppingCartInfoRequestVo.getUnChooseCouponCode());
// 重新校验一遍 couponcodes
if (CollectionUtils.isNotEmpty(couponPromotionVO.getCouponCodes())) {
......@@ -598,7 +600,11 @@ public class CouponAdapter {
couponPromotionVO.setStoreId(baseRequestDTO.getShopId());
couponPromotionVO.setCouponCode(baseRequestDTO.getCouponCode());
couponPromotionVO.setOrderType(baseRequestDTO.getOrderType());
couponPromotionVO.setFlg(baseRequestDTO.getFlag());
// couponPromotionVO.setFlg(baseRequestDTO.getFlag());
couponPromotionVO.setAvailableCouponQueryFlag(baseRequestDTO.getFlag() == null ? "":baseRequestDTO.getFlag().toString());
if(Objects.equals(baseRequestDTO.getFlag(), SubmitPageEnum.YES.getCode())){
couponPromotionVO.setAvailableCouponQueryFlag(baseRequestDTO.getVersion());
}
couponPromotionVO.setUnChooseCouponCode(baseRequestDTO.getUnChooseCouponCode());
return couponPromotionVO;
}
......@@ -609,21 +615,21 @@ public class CouponAdapter {
* @param baseRequestDTO
* @return
*/
public CouponPromotionVO getCouponPromotionVO(ShoppingCartGoodsApportionBO baseRequestDTO) {
CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
List<ShoppingCartGoodsApportionBO.couponCode> couponCodes = baseRequestDTO.getCouponCodes();
if (CollectionUtils.isNotEmpty(couponCodes)) {
Set<String> setCoupons = new HashSet<>();
couponCodes.forEach(c -> setCoupons.add(c.getCouponCode()));
couponPromotionVO.setCouponCodes(setCoupons);
}
couponPromotionVO.setPartnerId(baseRequestDTO.getPartnerId());
couponPromotionVO.setUserId(baseRequestDTO.getUserId());
couponPromotionVO.setStoreId(baseRequestDTO.getShopId());
couponPromotionVO.setCouponCode(baseRequestDTO.getCouponCode());
couponPromotionVO.setOrderType(baseRequestDTO.getOrderType());
couponPromotionVO.setFlg(baseRequestDTO.getFlag());
return couponPromotionVO;
}
// public CouponPromotionVO getCouponPromotionVO(ShoppingCartGoodsApportionBO baseRequestDTO) {
// CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
// List<ShoppingCartGoodsApportionBO.couponCode> couponCodes = baseRequestDTO.getCouponCodes();
// if (CollectionUtils.isNotEmpty(couponCodes)) {
// Set<String> setCoupons = new HashSet<>();
// couponCodes.forEach(c -> setCoupons.add(c.getCouponCode()));
// couponPromotionVO.setCouponCodes(setCoupons);
// }
// couponPromotionVO.setPartnerId(baseRequestDTO.getPartnerId());
// couponPromotionVO.setUserId(baseRequestDTO.getUserId());
// couponPromotionVO.setStoreId(baseRequestDTO.getShopId());
// couponPromotionVO.setCouponCode(baseRequestDTO.getCouponCode());
// couponPromotionVO.setOrderType(baseRequestDTO.getOrderType());
// couponPromotionVO.setFlg(baseRequestDTO.getFlag());
// return couponPromotionVO;
// }
}
......@@ -309,7 +309,7 @@ public class ShoppingCartController {
* @param couponCodes
* @return
*/
private BaseResponse verifyCouponCodes (List<ShoppingCartInfoRequestVo.couponCode> couponCodes){
private BaseResponse verifyCouponCodes (List<ChooseCouponVo> couponCodes){
if (CollectionUtils.isNotEmpty(couponCodes) && couponCodes.size() > 1) {
long count = couponCodes.stream().filter(c -> c.getCouponType().compareTo(CouponTypeEnum.TYPE_1.getCode()) == 0
|| c.getCouponType().compareTo(CouponTypeEnum.TYPE_3.getCode()) == 0).count();
......
......@@ -10,7 +10,7 @@ import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.CouponPromotionVO;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
......@@ -51,8 +51,7 @@ public class DistributeAdapter {
}
if (type == 2){
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> CommonUtils.isProductCoupon(k.getCouponCode(), k.getCartGoodsUid())).collect(Collectors.toList());
// 是否存在商品券
boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods);
......
......@@ -206,7 +206,7 @@ public class ShoppingCartDemoController {
premiumRequest.setOrderType(listCartGoodsBO.getOrderType());
premiumRequest.setSessionId(listCartGoodsBO.getSessionId());
premiumRequest.setShopId(listCartGoodsBO.getShopId());
premiumRequest.setVersion(listCartGoodsBO.getVersion());
// premiumRequest.setVersion(listCartGoodsBO.getVersion());
if (!CollectionUtils.isEmpty(baseRequestDTO.getCouponCodes())) {
List<PremiumExchangeRequestVo.couponCode> list = new ArrayList<>();
baseRequestDTO.getCouponCodes().forEach(couponCode -> {
......
......@@ -15,6 +15,7 @@ import java.util.List;
@Data
public class ListCartGoodsBO extends BaseBo {
private String version;
@NotEmpty(message = "spuId不能为空")
private String spuId;
......
......@@ -13,18 +13,15 @@ import cn.freemud.demo.entities.bo.goods.*;
import cn.freemud.demo.entities.bo.member.*;
import cn.freemud.demo.entities.bo.product.GetRequiredProductListBO;
import cn.freemud.demo.entities.bo.promotion.ActivityBO;
import cn.freemud.demo.manager.coupon.CouponManager;
import cn.freemud.demo.manager.customer.CustomerManager;
import cn.freemud.demo.manager.product.ProductManager;
import cn.freemud.demo.manager.promotion.PromotionManager;
import cn.freemud.demo.service.GetShoppingCartGoodsApportionService;
import cn.freemud.demo.utils.CommonUtils;
import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
......@@ -739,7 +736,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
return null;
} else if ((Objects.equals(baseRequestDTO.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(baseRequestDTO.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(baseRequestDTO.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(baseRequestDTO.getFlag(), SubmitPageEnum.YES.getCode())) {
return shoppingGoodsAmountBO.getNewPackAmount() == null ? 0L : shoppingGoodsAmountBO.getNewPackAmount();
}
return null;
......
......@@ -27,7 +27,6 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.calculate.CalculationCommonService;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.WebUtil;
import com.alibaba.fastjson.JSONArray;
......@@ -619,7 +618,7 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
return null;
} else if ((Objects.equals(baseRequestDTO.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(baseRequestDTO.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(baseRequestDTO.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(baseRequestDTO.getFlag(), SubmitPageEnum.YES.getCode())) {
return shoppingGoodsAmountBO.getNewPackAmount() == null ? 0L : shoppingGoodsAmountBO.getNewPackAmount();
}
return null;
......
......@@ -3,6 +3,7 @@ package cn.freemud.entities.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
......@@ -63,6 +64,11 @@ public class GetMemberInfoResponseVo {
*/
private Integer discountAmount;
/**(千分比)
* 6.5代表的是6.5折
*/
private BigDecimal discount;
/**
* 状态:-1:未激活 0:可用(剔除过期) 1:已使用 2:部分使用 3:取消 6:已过期(根据生失效日期) 99:未知(目前暂不支持)
*/
......
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class DeliveryFeeInfo {
private Long deliveryAmount;
/**
* 微商城配送类型 到付 0:不包邮; 1:包邮; 2:运费到付
*/
private Integer costType;
}
package cn.freemud.entities.vo;
import lombok.Data;
@Data
public class ChooseCouponVo {
/**
* 优惠券
*/
private String couponCode;
/**
* 活动号
*/
private String activityCode;
/**
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
......@@ -23,7 +23,9 @@ public class CouponPromotionVO {
private String userId;
private String storeId;
private String couponCode;
private Integer flg;
// private Integer flg;
//是否查询可用优惠券,根据购物车版本是否为2判断
private String availableCouponQueryFlag;
private Integer orderType;
private String unChooseCouponCode;
// 用于存放 优惠券数组 兼并老版本的 couponCode
......
......@@ -34,6 +34,12 @@ public class QueryDeliveryTemplateResponseVo {
/**
* 是否包邮 -> true:是; false:否
*/
@Deprecated
private Boolean isDispatchFree;
/**
* 微商城配送类型 到付 0:不包邮; 1:包邮; 2:运费到付
*/
private Integer costType;
}
}
......@@ -96,6 +96,11 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
private Long deliveryAmount;
/**
* 微商城配送类型 到付 0:不包邮; 1:包邮; 2:运费到付
*/
private Integer costType;
/**
* 减免后配送费
*/
private Long discountDeliveryAmount;
......@@ -184,6 +189,11 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
*/
private Integer verCompat = 0;
/**
* 选中的可用优惠券集合
*/
private List<ChooseCouponVo> couponCodes;
@Data
public static class chooseGood {
......
......@@ -31,6 +31,7 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
@NotBlank(message = "sessionId不能为空")
private String sessionId;
//固定值为2表示新版本小程序,不查询可用优惠券
private String version;
/**
* 购物车版本号(围餐,拼单)
......@@ -69,7 +70,7 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
/**
* 优惠券code列表
*/
private List<couponCode> couponCodes;
private List<ChooseCouponVo> couponCodes;
/**
* 是否使用月享卡2.0
......
package cn.freemud.enums;
public enum AvailableCouponQueryFlagEnum {
NO("2", "不查询"),
YES("1", "查询");
private String code;
private String desc;
AvailableCouponQueryFlagEnum(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 cn.freemud.enums;
public enum DeliveryTemplateCostTypeEnum {
//0:不包邮; 1:包邮; 2:运费到付
COST_TYPE_0(0,"不包邮"),
COST_TYPE_1(1,"包邮"),
COST_TYPE_2(2,"运费到付");
private Integer code;
private String desc;
DeliveryTemplateCostTypeEnum(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;
}
}
......@@ -12,21 +12,21 @@
*/
package cn.freemud.enums;
public enum CouponFlag {
public enum SubmitPageEnum {
NO(0, "不查询"),
YES(1, "查询用户优惠券");
NO(0, "点餐页"),
YES(1, "结算页");
private Integer code;
private String desc;
CouponFlag(Integer code, String desc) {
SubmitPageEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static CouponFlag getByCode(Integer code) {
for (CouponFlag payType : values()) {
public static SubmitPageEnum getByCode(Integer code) {
for (SubmitPageEnum payType : values()) {
if (payType.getCode().equals(code)) {
return payType;
}
......
package cn.freemud.factory;
import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
......@@ -9,7 +8,6 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetSessionUserInfoDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.BizServiceException;
......@@ -21,7 +19,6 @@ import cn.freemud.service.ShoppingCartNewService;
import cn.freemud.service.impl.*;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.PromotionFactory;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig;
......@@ -541,10 +538,10 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
shoppingCartGoodsResponseVo.setProductsCount(cartGoodsList.size());
if (StringUtils.isNotEmpty(toastMsg)) {
toastMsg=shoppingCartInfoRequestVo!=null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())?SHOPPING_CART_EMPTY_GOODS_LIST:SHOPPING_CART_INVALIAD_GOODS;
toastMsg=shoppingCartInfoRequestVo!=null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())?SHOPPING_CART_EMPTY_GOODS_LIST:SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
if (shoppingCartInfoRequestVo!=null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())){
if (shoppingCartInfoRequestVo!=null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())){
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList)?toastMsg:"");
}
......@@ -564,7 +561,7 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
shoppingCartGoodsResponseVo.setNewPackAmount(null);
} else if ((Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())) {
Long packAmount = shoppingCartGoodsResponseVo.getNewPackAmount() == null ? 0 : shoppingCartGoodsResponseVo.getNewPackAmount();
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
......
......@@ -8,7 +8,7 @@ import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.IPromotionService;
......@@ -55,7 +55,7 @@ public class CouponPromotionService implements IPromotionService {
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (k.getCartGoodsUid()
.startsWith(CommonsConstant.COUPON_PREFIX) || StringUtils.isNotBlank(k.getCouponCode()))).collect(Collectors.toList());
// 是否存在商品券
......@@ -99,6 +99,19 @@ public class CouponPromotionService implements IPromotionService {
couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount());
}
}
if (CollectionUtils.isNotEmpty(calculationDiscountResult.getCouponDiscounts())) {
//选中优惠券赋值
List<ChooseCouponVo> couponCodes = new ArrayList<>();
for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults discount : calculationDiscountResult.getCouponDiscounts()){
if(chooseCouponVo.getCouponCode().equals(discount.getCouponCode())){
couponCodes.add(chooseCouponVo);
break;
}
}
}
shoppingCartGoodsResponseVo.setCouponCodes(couponCodes);
}
}
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
......@@ -133,7 +146,7 @@ public class CouponPromotionService implements IPromotionService {
}
if (StringUtils.isNotBlank(couponCode)) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
......
......@@ -442,6 +442,7 @@ public class CouponServiceImpl implements CouponService {
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode(), CouponStatus.STATUS_2.getCode()));
getMemberCouponListRequestDto.setPageNum(1);
getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE);
//获取会员服务的优惠券列表
GetMemberCouponListResponseDto.Result result = getMemberCouponList(getMemberCouponListRequestDto);
List<GetMemberCouponListResponseDto.Result.MemberCoupon> memberCoupons = Lists.newArrayList();
// 过滤优惠券得点餐方式
......@@ -467,7 +468,7 @@ public class CouponServiceImpl implements CouponService {
Collectors.toMap(GetMemberCouponListResponseDto.Result.MemberCoupon::getCouponCode, a -> a, (k1, k2) -> k1));
List<String> couponCodes = Lists.newArrayList();
memberCoupons.forEach(memberCoupon -> {
// 只筛选小于结束时间得
// 只筛选券结束时间大于当前时间的
if (System.currentTimeMillis() < DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime()) {
couponCodes.add(memberCoupon.getCouponCode());
}
......@@ -486,7 +487,7 @@ public class CouponServiceImpl implements CouponService {
}
private List<CouponStateVo> buildAvailiableCoupons(List<CartGoods> cartGoods, String partnerId, String storeId, List<String> couponCodes, int isNew,String appId,String menuType,Integer freightAmount) {
String appSecret = getAppSecret(partnerId);
// String appSecret = getAppSecret(partnerId);
// 最大15一提交
int maxNum = 15;
int count = couponCodes.size() / maxNum;
......@@ -513,7 +514,6 @@ public class CouponServiceImpl implements CouponService {
}
}
// 构建计算SDK
List<CouponStateVo> couponStateList = Lists.newArrayList();
for (int j = 0; j <= count; j++) {
List calCouponCodes = null;
......@@ -522,9 +522,7 @@ public class CouponServiceImpl implements CouponService {
} else {
calCouponCodes = couponCodes.subList(maxNum * j, maxNum * j + maxNum);
}
// 书写逻辑
couponAvailableReqVo.setCouponCodes(calCouponCodes);
//CouponAvailableRespVo couponsAvailable = couponAvailableService.getCouponsAvailable(couponAvailableReqVo, appSecret);
CouponAvailableRespDto couponsAvailable = couponAdaptClient.getCouponsAvailable(couponAvailableReqVo);
if (Objects.equals(String.valueOf(couponsAvailable.getResult()), ResponseResult.SUCCESS.getCode())
&& CollectionUtils.isNotEmpty(couponsAvailable.getCouponStateList())) {
......@@ -1319,7 +1317,7 @@ public class CouponServiceImpl implements CouponService {
@Override
public void checkValidCoupon(CouponPromotionVO couponPromotionVO, List<String> couponList, Map<String, List<String>> spqIdToCartUuid, String couponCode, List<CartGoods> cartGoodsList) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = couponList;
} else {
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(couponPromotionVO.getPartnerId(), couponPromotionVO.getUserId());
......
......@@ -435,10 +435,10 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
String appId = shoppingCartInfoRequestVo.getAppId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
// 兼容老版本
if (CollectionUtils.isNotEmpty(couponCodes) && StringUtils.isEmpty(couponCode)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode()) != 0)
.findFirst().orElse(null);
if (otherCouponCode != null) {
......@@ -643,9 +643,9 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
// 兼容老购物车
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (Objects.isNull(couponCode) && CollectionUtils.isNotEmpty(couponCodes)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode())!=0)
.findFirst().orElse(null);
if (otherCouponCode !=null) {
......
......@@ -23,6 +23,7 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.delivery.DeliveryFeeInfo;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetSessionUserInfoDto;
import cn.freemud.entities.ecology.VirtualBindStoreResponse;
......@@ -366,10 +367,10 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
List<CartGoods> cartGoodsList = new ArrayList<>();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
// 兼容老版本
if (CollectionUtils.isNotEmpty(couponCodes) && StringUtils.isEmpty(couponCode)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode()) != 0)
.findFirst().orElse(null);
if (otherCouponCode != null) {
......@@ -414,11 +415,11 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
DeliveryFeeInfo deliveryFeeInfo = calculateDeliveryAmount(partnerId, shoppingCartInfoRequestVo.getProvince(), cartGoodsList);
Long deliveryAmount = deliveryFeeInfo.getDeliveryAmount();
shoppingCartGoodsResponseVo.setCostType(deliveryFeeInfo.getCostType());
Long deliveryAmount = calculateDeliveryAmount(partnerId, shoppingCartInfoRequestVo.getProvince(),cartGoodsList);
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
CouponPromotionVO couponPromotionVO = couponAdapter.getCouponPromotionVO(shoppingCartInfoRequestVo, userLoginInfoDto);
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>();
......@@ -532,9 +533,9 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String storeId = shoppingCartInfoRequestVo.getShopId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (Objects.isNull(couponCode) && CollectionUtils.isNotEmpty(couponCodes)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode())!=0)
.findFirst().orElse(null);
if (otherCouponCode !=null) {
......@@ -580,7 +581,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
Long deliveryAmount = calculateDeliveryAmount(partnerId, shoppingCartInfoRequestVo.getProvince(),cartGoodsList);
DeliveryFeeInfo deliveryFeeInfo = calculateDeliveryAmount(partnerId, shoppingCartInfoRequestVo.getProvince(), cartGoodsList);
Long deliveryAmount = deliveryFeeInfo.getDeliveryAmount();
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
......@@ -926,7 +928,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
return customerInfoVo1;
}
private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons, List<ShoppingCartInfoRequestVo.couponCode> coupons){
private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons, List<ChooseCouponVo> coupons){
for(int i = 0 ; i < oldCoupons.size() ; i++){
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon oldCoupon = oldCoupons.get(i);
......@@ -937,7 +939,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
if (coupons != null) {
for(int x = 0 ; x < coupons.size() ; x++){
ShoppingCartInfoRequestVo.couponCode cp = coupons.get(x);
ChooseCouponVo cp = coupons.get(x);
if(codes.contains(cp.getCouponCode())){
continue;
}
......@@ -953,11 +955,13 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
return oldCoupons;
}
public Long calculateDeliveryAmount(String partnerId,String province,List<CartGoods> cartGoodsList) {
public DeliveryFeeInfo calculateDeliveryAmount(String partnerId, String province, List<CartGoods> cartGoodsList) {
DeliveryFeeInfo deliveryFeeInfo = new DeliveryFeeInfo();
Long deliveryAmount = 0L;
//区code 为空则运费为0
if (StringUtils.isBlank(province)) {
return deliveryAmount;
deliveryFeeInfo.setDeliveryAmount(deliveryAmount);
return deliveryFeeInfo;
}
Long orderAmount = 0L ;
Integer orderCount = 0;
......@@ -971,10 +975,15 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
throw new ServiceException(ResponseResult.SHOPPING_CART_QUERY_DELIVERY_TEMPLATE_ERR);
}
Boolean isDispatchFree = queryDeliveryTemplateResponseVo.getData().getIsDispatchFree();
if(!isDispatchFree) {
if(isDispatchFree != null && !isDispatchFree) {
deliveryAmount = Long.valueOf(null == queryDeliveryTemplateResponseVo.getData().getFreight() ? 0 : queryDeliveryTemplateResponseVo.getData().getFreight() );
}
return deliveryAmount;
//邮费付款方式 DeliveryTemplateCostTypeEnum
if(queryDeliveryTemplateResponseVo.getData() != null){
deliveryFeeInfo.setCostType(queryDeliveryTemplateResponseVo.getData().getCostType());
}
deliveryFeeInfo.setDeliveryAmount(deliveryAmount);
return deliveryFeeInfo;
}
/**
......
......@@ -260,10 +260,10 @@ public class CalculationCommonService {
shoppingCartGoodsResponseVo.setProductsCount(cartGoodsList.size());
String toastMsg = shoppingCartGoodsResponseVo.getToastMsg();
if (StringUtils.isNotEmpty(toastMsg)) {
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())) {
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())) {
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList) ? toastMsg : "");
}
......@@ -282,7 +282,7 @@ public class CalculationCommonService {
shoppingCartGoodsResponseVo.setNewPackAmount(null);
} else if ((Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())) {
Long packAmount = shoppingCartGoodsResponseVo.getNewPackAmount() == null ? 0 : shoppingCartGoodsResponseVo.getNewPackAmount();
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
......
......@@ -4,7 +4,7 @@ import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
......@@ -50,7 +50,7 @@ public class CouponSharingService {
, CouponPromotionVO couponPromotionVO
,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, String userId, String partnerId, String storeId, Integer orderType) {
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (StringUtils.isNotBlank(k.getCouponCode()) || k.getCartGoodsUid()
.startsWith(CommonsConstant.COUPON_PREFIX))).collect(Collectors.toList());
// 是否存在商品券
......@@ -93,6 +93,17 @@ public class CouponSharingService {
List<Integer> asList = Arrays.asList( ActivityTypeEnum.TYPE_3.getCode(), ActivityTypeEnum.TYPE_31.getCode(), ActivityTypeEnum.TYPE_34.getCode());
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> couponResultsList = calculationDiscountResult.getDiscounts();
couponDiscount = couponResultsList.stream().filter(d -> asList.contains(d.getType())).mapToLong(d -> d.getDiscount().longValue()).sum();
//选中优惠券赋值
List<ChooseCouponVo> couponCodes = new ArrayList<>();
for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discount : couponResultsList){
if(chooseCouponVo.getCouponCode().equals(discount.getActivityCode())){
couponCodes.add(chooseCouponVo);
break;
}
}
}
shoppingCartGoodsResponseVo.setCouponCodes(couponCodes);
}
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
......@@ -126,7 +137,7 @@ public class CouponSharingService {
useCoupon = false;
}
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
......@@ -204,7 +215,7 @@ public class CouponSharingService {
// 计算优惠信息时,已将券校验过,放在map中
Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap();
Map<String, List<String>> spqIdToCartUuid = discountResult == null ? new HashMap<>() : discountResult.getSpqIdToCartUuid();
couponPromotionVO.setFlg(0);
// couponPromotionVO.setFlg(0);
// couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
......
......@@ -1828,10 +1828,10 @@ public class ShoppingCartMCoffeeServiceImpl {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
shoppingCartGoodsResponseVo.setProductsCount(cartGoodsList.size());
if (StringUtils.isNotEmpty(toastMsg)) {
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())) {
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())) {
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList) ? toastMsg : "");
}
......
......@@ -764,15 +764,15 @@ public class CouponDiscountCalculation {
}
}
public CouponPromotionVO getCouponPromotionVO(String partnerId, String storeId, String userId, String couponCode, Integer orderType){
CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
couponPromotionVO.setPartnerId(partnerId);
couponPromotionVO.setUserId(userId);
couponPromotionVO.setStoreId(storeId);
couponPromotionVO.setCouponCode(couponCode);
couponPromotionVO.setOrderType(orderType);
couponPromotionVO.setFlg(CouponFlag.YES.getCode());
return couponPromotionVO;
}
// public CouponPromotionVO getCouponPromotionVO(String partnerId, String storeId, String userId, String couponCode, Integer orderType){
// CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
// couponPromotionVO.setPartnerId(partnerId);
// couponPromotionVO.setUserId(userId);
// couponPromotionVO.setStoreId(storeId);
// couponPromotionVO.setCouponCode(couponCode);
// couponPromotionVO.setOrderType(orderType);
// couponPromotionVO.setFlg(SubmitPageEnum.YES.getCode());
// return couponPromotionVO;
// }
}
......@@ -18,6 +18,7 @@ import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.SubmitPageEnum;
import cn.freemud.service.impl.ShoppingCartNewServiceImpl;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import cn.freemud.utils.WebUtil;
......@@ -91,7 +92,7 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation
});
if(!Objects.equals(flag,1)){
if(!Objects.equals(flag, SubmitPageEnum.YES.getCode())){
// 非结算页
orderingFoodPage(products,halfDiscountsMap,goodsDiscountsMap,gifeProductIds,shoppingCartGoodsResponseVo);
}else {// 结算页
......
......@@ -12,7 +12,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = "DELIVERYCENTER", url = "${delivery.center.baseUrl}")
@FeignClient(name = "DELIVERYCENTER", url = "${delivery.center.feign.Url}")
public interface DeliveryFeiginClient {
@PostMapping("/delivery/queryDeliveryTemplate")
......
......@@ -9,4 +9,4 @@ apollo.meta=http://212.129.229.203
env=dev
apollo.cluster=default
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=micro_progeram_commons,shopping_cart
\ No newline at end of file
apollo.bootstrap.namespaces=shopping_cart,micro_progeram_commons
\ No newline at end of file
......@@ -9,4 +9,4 @@ apollo.meta=http://public-apollo-configservice.koderover-qa-apollo-config.svc:80
env=uat
apollo.cluster=default
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=micro_progeram_commons,shopping_cart
apollo.bootstrap.namespaces=shopping_cart,micro_progeram_commons
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