Commit 04305ea3 by hanghang.wang

拼团

parent 70473d7c
...@@ -74,13 +74,6 @@ public class OrderController { ...@@ -74,13 +74,6 @@ public class OrderController {
return orderAdapterService.createOrderNew(createOrderVo); return orderAdapterService.createOrderNew(createOrderVo);
} }
@ApiOperation(value = "创建拼团订单", notes = "创建拼团订单", produces = "application/json")
@ApiAnnotation(logMessage = "createSpellGroupOrder")
@PostMapping("/createSpellGroupOrder")
public BaseResponse createSpellGroupOrder(@Validated @LogParams @RequestBody CreateSpellGroupOrderReq request) {
return orderAdapterService.createSpellGroupOrder(request);
}
/** /**
* 麦咖啡创建订单 * 麦咖啡创建订单
*/ */
......
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
import cn.freemud.service.Orderservice;
import cn.freemud.service.SpellGroupOrderService;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author wanghanghang
* @title: SpellGroupOrderController
* @projectName order-group
* @description: 拼团订单Controller
* @date 2021/4/16上午9:50
*/
@RequestMapping("/order")
@RestController
public class SpellGroupOrderController {
@Autowired
private SpellGroupOrderService spellGroupOrderService;
@ApiOperation(value = "创建拼团订单", notes = "创建拼团订单", produces = "application/json")
@ApiAnnotation(logMessage = "createSpellGroupOrder")
@PostMapping("/createSpellGroupOrder")
public BaseResponse createSpellGroupOrder(@Validated @LogParams @RequestBody CreateSpellGroupOrderReq request) {
return spellGroupOrderService.createSpellGroupOrder(request);
}
}
package cn.freemud.entities.dto; package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -60,8 +62,6 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -60,8 +62,6 @@ public class ActivityCalculationDiscountResponseDto {
* 使用到的优惠券及优惠金额 * 使用到的优惠券及优惠金额
*/ */
private List<CouponResults> couponDiscounts; private List<CouponResults> couponDiscounts;
/** /**
* 多种优惠方案计算出的优惠集合,并按优惠力度倒序排列 * 多种优惠方案计算出的优惠集合,并按优惠力度倒序排列
*/ */
...@@ -73,6 +73,11 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -73,6 +73,11 @@ public class ActivityCalculationDiscountResponseDto {
*/ */
List<ActivityPrompt> activityPrompts; List<ActivityPrompt> activityPrompts;
/**
* 活动集合
*/
List<ActivityUpdateStockRequest.StockBeanDto> stocks;
@Data @Data
public static class ActivityPrompt { public static class ActivityPrompt {
......
package cn.freemud.entities.dto; package cn.freemud.entities.dto;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResultDto;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq; import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -19,13 +24,35 @@ public class CreateSpellGroupOrderDto extends CreateSpellGroupOrderReq { ...@@ -19,13 +24,35 @@ public class CreateSpellGroupOrderDto extends CreateSpellGroupOrderReq {
/** /**
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取 * 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/ */
public UserDeliveryInfoDto userDeliveryInfoDto; // public UserDeliveryInfoDto userDeliveryInfoDto;
private String userName; /**
*当前用户id
private String mobile; */
private String userId;
/**
*当前用户昵称
*/
private String nickName;
/**
*存储送货地址信息
*/
List<DeliveryContactInfoCreateReq> deliveryContactInfoCreateReqList; List<DeliveryContactInfoCreateReq> deliveryContactInfoCreateReqList;
/**
* 存储商品信息
*/
private List<ProductInfo> products;
/**
* 存储促销返回商品算价信息
*/
private ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
/**
* 门店信息
*/
private StoreResponse storeResponse;
} }
...@@ -87,4 +87,9 @@ public class CalculationDiscountRequestDto { ...@@ -87,4 +87,9 @@ public class CalculationDiscountRequestDto {
* saas-自提 saasdelivery-外卖 saasmall-微商城 .... * saas-自提 saasdelivery-外卖 saasmall-微商城 ....
*/ */
private String productChannel; private String productChannel;
/**
* 拼团活动是,必传活动号
*/
private String groupActivityCode;
} }
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List; import java.util.List;
/** /**
* @author freemud * @author wanghanghang
* @title: CreateSpellGroupOrderReq * @title: CreateSpellGroupOrderReq
* @projectName order-group * @projectName order-group
* @description: TODO * @description: 创建拼团订单request
* @date 2021/4/14上午9:52 * @date 2021/4/14上午9:52
*/ */
@Data @Data
...@@ -24,62 +21,73 @@ public class CreateSpellGroupOrderReq { ...@@ -24,62 +21,73 @@ public class CreateSpellGroupOrderReq {
/** /**
* 参与拼团编号->团编号 * 参与拼团编号->团编号
*/ */
private String SpellGroupCode; private String spellGroupCode;
//@NotEmpty(message = "门店ID 不能为空") @NotEmpty(message = "门店ID 不能为空")
private String storeId; private String storeId;
private String thirdShopId; @NotEmpty(message = "商户号 不能为空")
private String partnerId; private String partnerId;
@Builder.Default @Builder.Default
private String menuType = "saas"; private String menuType = "saasmall";
/** /**
* 渠道类型 OrderChannelType * 渠道类型 OrderChannelType
*/ */
private String channelType; private String channelType = "saasmall";
/*下单渠道必填,根据此字段的值判断是自营或第三方,来走不同的状态机 详细见 orderClientType枚举*/
private Integer orderClient;
/**
* 下单支付渠道类型
*/
@NotNull(message = "下单支付渠道类型不能为空")
private Byte payChannelType;
/** /**
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType * 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
*/ */
//@NotNull(message = "下单类型不能为空") @Builder.Default
private Integer orderType; private Integer orderType = 3;
/** /**
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单 * 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/ */
@NotNull @Builder.Default
private Byte marketingType; private Integer marketingType = 2;
/** /**
* 收货地址ID * 收货地址ID
*/ */
@NotEmpty(message = "收货地址ID不能为空")
private String receiveId; private String receiveId;
/** /**
* 收货地址 * 拼团活动号
*/ */
private String receiveAddress; @NotEmpty(message = "拼团活动号不能为空")
private String activityCode;
/** /**
* 收货用户名 * 拼团商品集合,本次只会传入一条
*/ */
private String receiveUsername; @NotNull(message = "拼团商品信息不能为空")
private List<SpellGroupProduct> spellGroupProductList;
/** /**
* 收货电话 * 订单备注,预留字段
*/ */
@Pattern(regexp = "^1[3|4|5|6|7|8|9][0-9]{9}$", message = "手机号码格式不正确") private String orderRemark;
private String receiveMobile;
//拼团商品集合,本次只会传入一条
private List<SpellGroupProduct> spellGroupProductList;
/**
* 拼团商品
*/
@Data @Data
public static class SpellGroupProduct{ public static class SpellGroupProduct {
private String productId; private String productId;
private Integer productQuantity;
} }
} }
...@@ -240,12 +240,11 @@ public enum ResponseResult { ...@@ -240,12 +240,11 @@ public enum ResponseResult {
* 拼团订单状态码 80001 - 80101 * 拼团订单状态码 80001 - 80101
*/ */
SPELL_GROUP_THE_CLUB_IS_FULL("80001", "拼团已满员"), SPELL_GROUP_THE_CLUB_IS_FULL("80001", "拼团已满员"),
SPELL_GROUP_CREAT_ORDER_ERROR("80002", "创建拼团订单失败"),
SPELL_GROUP_ACTIVITE_AMOUNT_ERROR("80003", "返回的价格是商品原价,则表示库存不足或者活动关闭"),
; ;
private String code; private String code;
private String message; private String message;
......
package cn.freemud.manager;
import cn.freemud.adapter.SpellGroupOrderAdapter;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.CreateSpellGroupOrderDto;
import cn.freemud.entities.dto.GetProductInfoDto;
import cn.freemud.entities.dto.ProductInfosDto;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* @author wanghanghang
* @title: SpellGroupOrderDataManager
* @projectName order-group
* @description: TODO
* @date 2021/4/15下午3:45
*/
@Component
public class SpellGroupOrderDataManager {
@Autowired
private StoreItemClient storeItemClient;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
//会员SDK
@Autowired
private MemberCenterService memberCenterService;
//门店SDK
@Autowired
private StoreCenterService storeCenterService;
/**
* 查询门店信息
*/
public StoreResponse getStoreInfo(String partnerId, String shopId, String trackingNo) {
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, shopId, null);
return storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
}
/**
* 查询地址信息
*
* @param receiveId
* @param partnerId
* @param trackingNo
* @return
*/
public QueryReceiveAddressResponse queryOrderReceiveAddress(String receiveId, String partnerId, String trackingNo) {
//校验收货地址是否可配送
QueryReceiveAddressRequest request = new QueryReceiveAddressRequest(receiveId, partnerId);
BaseResponse<QueryReceiveAddressResponse> queryReceiveAddressResponse = memberCenterService.queryReceiveAddressById(request, trackingNo);
if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) {
throw new ServiceException(ResponseResult.SPELL_GROUP_THE_CLUB_IS_FULL);
}
QueryReceiveAddressResponse receiveAddressResult = queryReceiveAddressResponse.getData();
return receiveAddressResult;
}
/**
* 查询商品信息
*
* @param createSpellGroupOrderDto
* @return
*/
public List<ProductInfo> queryProductInfos(CreateSpellGroupOrderDto createSpellGroupOrderDto) {
GetProductInfoDto getProductInfoReq = new GetProductInfoDto();
List<String> proIds = new ArrayList<>();
createSpellGroupOrderDto.getSpellGroupProductList().forEach(proInfo -> {
proIds.add(proInfo.getProductId());
});
getProductInfoReq.setProductIds(proIds);
getProductInfoReq.setPartnerId(createSpellGroupOrderDto.getPartnerId());
getProductInfoReq.setShopId(createSpellGroupOrderDto.getStoreId());
getProductInfoReq.setProductInfoType(1);
ProductInfosDto productInfosReps = storeItemClient.listProductInfos(getProductInfoReq);
if (!ResponseResult.SUCCESS.getCode().equals(productInfosReps.getCode()) || productInfosReps.getData() == null) {
throw new ServiceException(ResponseResult.SPELL_GROUP_THE_CLUB_IS_FULL);
}
return productInfosReps.getData().getProducts();
}
/**
* 查询算价信息
*
* @param calculationDiscountRequestDto
* @return
*/
public ActivityCalculationDiscountResponseDto queryCalculationDiscount(CalculationDiscountRequestDto calculationDiscountRequestDto) {
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
if (!ResponseResult.SUCCESS.getCode().equals(activityCalculationDiscountResponseDto.getStatusCode()) || activityCalculationDiscountResponseDto.getResult() == null) {
throw new ServiceException(ResponseResult.SPELL_GROUP_THE_CLUB_IS_FULL);
}
return activityCalculationDiscountResponseDto;
}
}
...@@ -154,11 +154,5 @@ public interface Orderservice { ...@@ -154,11 +154,5 @@ public interface Orderservice {
*/ */
BaseResponse queryTodayOrders(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo); BaseResponse queryTodayOrders(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo);
/**
* 创建拼团订单
* @param createSpellGroupOrderReq
* @return
*/
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq);
} }
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
/**
* @author wanghanghang
* @title: SpellGroupOrderService
* @projectName order-group
* @description: TODO
* @date 2021/4/15下午9:01
*/
public interface SpellGroupOrderService {
/**
* 创建拼团订单
* @param createSpellGroupOrderReq
* @return
*/
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq);
}
...@@ -917,31 +917,7 @@ public class CheckOrder { ...@@ -917,31 +917,7 @@ public class CheckOrder {
createOrderVo.setUserDeliveryInfoDto(userDeliveryInfoDto); createOrderVo.setUserDeliveryInfoDto(userDeliveryInfoDto);
} }
/**
* 校验拼团订单收货地址
*/
public void checkSpellGroupOrderReceiveAddress(String receiveId,String partnerId , String trackingNo,CreateSpellGroupOrderDto createSpellGroupOrderDto) {
//校验收货地址是否可配送
QueryReceiveAddressRequest request = new QueryReceiveAddressRequest(receiveId,partnerId);
BaseResponse<QueryReceiveAddressResponse> queryReceiveAddressResponse = memberCenterService.queryReceiveAddressById(request, trackingNo);
if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) {
throw new ServiceException(ResponseResult.USER_GETRECEIVEADDRESS_ERROR);
}
QueryReceiveAddressResponse receiveAddressResult = queryReceiveAddressResponse.getData();
DeliveryContactInfoCreateReq deliveryContactInfoCreateReq = new DeliveryContactInfoCreateReq();
deliveryContactInfoCreateReq.setRelateObjectType(1);
deliveryContactInfoCreateReq.setAddressDetail(receiveAddressResult.getReceiveAddress());
deliveryContactInfoCreateReq.setInfoType(1);
deliveryContactInfoCreateReq.setLatitude(new BigDecimal(receiveAddressResult.getLatitude()));
deliveryContactInfoCreateReq.setLongitude(new BigDecimal(receiveAddressResult.getLongitude()));
deliveryContactInfoCreateReq.setMobile(StringUtils.isEmpty(receiveAddressResult.getMobile()) ? receiveAddressResult.getReceiveMobile() : receiveAddressResult.getMobile());
deliveryContactInfoCreateReq.setContactsName(receiveAddressResult.getReceiveName());
createSpellGroupOrderDto.setUserName(receiveAddressResult.getReceiveName());
createSpellGroupOrderDto.setMobile(StringUtils.isEmpty(receiveAddressResult.getMobile()) ? receiveAddressResult.getReceiveMobile() : receiveAddressResult.getMobile());
createSpellGroupOrderDto.getDeliveryContactInfoCreateReqList().add(deliveryContactInfoCreateReq);
}
public void checkCardCode(String partnerId, String memberId, String cardCode) { public void checkCardCode(String partnerId, String memberId, String cardCode) {
......
...@@ -44,17 +44,24 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto; ...@@ -44,17 +44,24 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto; import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.pay.CombPayResponse; import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.product.AttributeValue; import cn.freemud.entities.dto.product.*;
import cn.freemud.entities.dto.product.GroupDetail; import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.product.ProductAttributeGroup; import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.entities.dto.product.ProductGroup;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto; import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto; import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.enums.AfterSalesOrderCreateEventEnum;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.PayRefundStatus;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.QueryOrderStatus;
import cn.freemud.enums.RefundStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient; import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.manager.SpellGroupOrderDataManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.coupon.CouponRelationFactory; import cn.freemud.service.coupon.CouponRelationFactory;
...@@ -66,8 +73,16 @@ import cn.freemud.utils.*; ...@@ -66,8 +73,16 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponLockRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponLockResponse;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.sdk.api.assortment.order.enums.*;
import jdk.nashorn.internal.runtime.ECMAException; import jdk.nashorn.internal.runtime.ECMAException;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.*; import com.freemud.api.assortment.datamanager.entity.db.*;
...@@ -132,10 +147,6 @@ import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRe ...@@ -132,10 +147,6 @@ import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRe
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService; import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime;
import com.freemud.sdk.api.assortment.order.enums.NewOrderType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.QueryDeliveryType;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest; import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
...@@ -179,6 +190,8 @@ import java.util.function.Function; ...@@ -179,6 +190,8 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND; import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service @Service
@Slf4j @Slf4j
...@@ -386,47 +399,16 @@ public class OrderServiceImpl implements Orderservice { ...@@ -386,47 +399,16 @@ public class OrderServiceImpl implements Orderservice {
return this.createPrepayOrder(createPrepayRequestDto); return this.createPrepayOrder(createPrepayRequestDto);
} }
@Override
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq) {
String trackingNo = LogThreadLocal.getTrackingNo();
//校验用户信息
String sessionId = createSpellGroupOrderReq.getSessionId();
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
//团id不为空,调用促销查询团是否关闭,关闭之后给提示不可下单
if(1==1){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_THE_CLUB_IS_FULL);
}
//团开启 则继续执行
CreateSpellGroupOrderDto createSpellGroupOrderDto = new CreateSpellGroupOrderDto();
BeanUtils.copyProperties(createSpellGroupOrderReq, createSpellGroupOrderDto);
//查询配送地址等信息
checkOrder.checkSpellGroupOrderReceiveAddress(createSpellGroupOrderReq.getReceiveId(),createSpellGroupOrderReq.getPartnerId(),trackingNo,createSpellGroupOrderDto);
//查询商品信息 public CreateOrderResponse getCreateOrderResponse(String code, String message, QueryOrdersResponse.DataBean.OrderBean data) {
CreateOrderResponse baseOrderResponse = new CreateOrderResponse();
baseOrderResponse.setErrcode(Integer.valueOf(code));
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件 baseOrderResponse.setErrmsg(message);
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo); baseOrderResponse.setData(data);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo, shoppingCartGoodsDto); return baseOrderResponse;
//1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
if (createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null) {
return createOrderOperateDtoResponse;
} }
CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto) createOrderOperateDtoResponse.getResult();
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
return this.createPrepayOrder(createPrepayRequestDto);
}
/** /**
* 扫脸支付下单 * 扫脸支付下单
*/ */
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
*/ */
package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.ActivityQueryRequestDto; import cn.freemud.entities.dto.ActivityQueryRequestDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto; import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
...@@ -23,8 +27,17 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,8 +27,17 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping(produces = {"application/json;charset=UTF-8"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface PromotionDiscountClient { public interface PromotionDiscountClient {
/**无人使用,注释掉。**/
// @PostMapping("/calculation/discount/sharing")
// CalculationDiscountResponseDto discountSharing(@RequestBody CalculationDiscountRequestDto calculationDiscountRequestDto);
/**
* 新版优惠均摊计算
* @param calculationDiscountRequestDto
* @return
*/
@PostMapping("/calculation/discount/sharing") @PostMapping("/calculation/discount/sharing")
CalculationDiscountResponseDto discountSharing(@RequestBody CalculationDiscountRequestDto calculationDiscountRequestDto); ActivityCalculationDiscountResponseDto calculationDiscountSharing(CalculationDiscountRequestDto calculationDiscountRequestDto);
/** /**
* 统一活动查询接口 * 统一活动查询接口
......
package cn.freemud.controller;
import cn.freemud.OrderApplication;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
import com.alibaba.fastjson.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
/**
* @author freemud
* @title: SpellGroupOrderControllerTest
* @projectName order-group
* @description: TODO
* @date 2021/4/16下午3:58
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = OrderApplication.class)
public class SpellGroupOrderControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
/**
* 创建订单
*/
@Test
public void createOrder() {
CreateSpellGroupOrderReq createSpellGroupOrderReq = new CreateSpellGroupOrderReq();
// createSpellGroupOrderReq.setSessionId();
// createSpellGroupOrderReq.setSpellGroupCode();
// createSpellGroupOrderReq.setStoreId("3536");
// createSpellGroupOrderReq.setPartnerId("1864");
// createSpellGroupOrderReq.setMenuType();
// createSpellGroupOrderReq.setChannelType();
// createSpellGroupOrderReq.setOrderClient();
// createSpellGroupOrderReq.setPayChannelType();
// createSpellGroupOrderReq.setOrderType();
// createSpellGroupOrderReq.setMarketingType();
// createSpellGroupOrderReq.setReceiveId();
// createSpellGroupOrderReq.setActivityCode();
// createSpellGroupOrderReq.setSpellGroupProductList();
// createSpellGroupOrderReq.setOrderRemark();
String str = JSONObject.toJSONString(createSpellGroupOrderReq);
try {
mockMvc.perform(post("/order/createSpellGroupOrder").content(str).
contentType(MediaType.APPLICATION_JSON_UTF8).accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print()).
andExpect(jsonPath("$.code").value("100"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
...@@ -25,4 +25,6 @@ public class OrderExtendedReq { ...@@ -25,4 +25,6 @@ public class OrderExtendedReq {
//订单门店英文名称 //订单门店英文名称
private String storeNameEn; private String storeNameEn;
private String spellGroupCode;
} }
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