Commit c1a67f0b by shuhu.hou

Merge remote-tracking branch 'origin/develop' into develop

parents aba50cf0 4d620755
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.1-SNAPSHOT</version>
<version>1.2.2-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -26,7 +26,7 @@
<dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.8.3-SNAPSHOT</version>
<version>1.8.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.1.4-SNAPSHOT</version>
<version>1.1.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -24,4 +24,5 @@
| 1.1.8-SNAPSHOT| 核销流程更改 | 侯书虎 | 2020-02-10 |
| 1.1.9-SNAPSHOT| pos渠道名称 | 丁凯 | 2020-02-11 |
| 1.2.0-SNAPSHOT| 订单查询返回orderType字段 | 侯书虎 | 2020-02-12 |
| 1.2.1-SNAPSHOT| 开放平台创建订单修改 | 姜海波 | 2020-02-17 |
\ No newline at end of file
| 1.2.1-SNAPSHOT| 开放平台创建订单修改 | 姜海波 | 2020-02-17 |
| 1.2.2-SNAPSHOT| 开放平台创建订单修改 | 姜海波 | 2020-02-21 |
\ No newline at end of file
......@@ -139,7 +139,6 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
public ActivityUpdateStockRequest activityUpdateStockRequest;
private OrderClientType orderClientType;
/**
* 省
......
......@@ -282,4 +282,14 @@ public interface OrderCenterSdkService {
* @return
*/
QueryOrderByIdResponse queryOrderByCodeES(String orderCode, String partnerId, String trackNo);
/**
* 根据用户ID 查询30分钟内未支付并且有券的 订单
*
* @param userId 用户ID
* @param trackingNo 交易号
* @return
*/
QueryOrdersResponse queryOrderWithCoupon(String userId, String trackingNo);
}
......@@ -1299,4 +1299,12 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
QueryOrderByIdResponse orderByIdResponse = orderSdkAdapter.convent2QueryOrderByIdResponse(orderInfo);
return orderByIdResponse;
}
@Override
public QueryOrdersResponse queryOrderWithCoupon(String userId, String trackingNo) {
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response
= orderSdkService.queryOrderWithCoupon(userId, trackingNo);
return orderSdkAdapter.convent2QueryOrdersResponse(response);
}
}
......@@ -42,13 +42,13 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId>
<version>2.7.4.RELEASE</version>
<version>2.7.5-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>1.1.RELEASE</version>
<version>1.8.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -310,6 +310,7 @@ public class ShoppingCartAdapter {
cartGoods.setAmount(newOrigOriginalPrice * cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice
cartGoods.setFinalPrice(isSetMealProduct ? spuProduct.getOriginalPrice() : isSkuProduct ? skuProduct.getFinalPrice() : spuProduct.getFinalPrice());
cartGoods.setWeight(spuProduct.getWeight());
cartGoods.setUnit(spuProduct.getUnit());
cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(spuProduct.getWeightType()));
} catch (Exception ex) {
......@@ -401,6 +402,7 @@ public class ShoppingCartAdapter {
comboxGoods.setFinalPrice(finalPrice);
comboxGoods.setWeightType(isComboxGoods? CommonsConstant.WEIGHT_PRODUCT.equals(productComboType.getWeightType()):CommonsConstant.WEIGHT_PRODUCT.equals(groupDetailType.getWeightType()));
comboxGoods.setUnit(isComboxGoods?productComboType.getUnit():groupDetailType.getUnit());
comboxGoods.setWeight(isComboxGoods ? productComboType.getWeight() : groupDetailType.getWeight());
}
private Map<String, String> getAttributes(CartGoods cartGoods, List<CartGoods.CartGoodsExtra> extra, List<ProductBeanDTO.ProductAttributeGroupListBean> attributeGroupListBeanList, List<String> invalidGoodsIdList) {
......
......@@ -35,7 +35,7 @@
<dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.8.3-SNAPSHOT</version>
<version>1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
......@@ -318,6 +318,11 @@
<version>2.4.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>order-management</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
</dependency>
......
......@@ -2,12 +2,11 @@ package cn.freemud.adapter;
import cn.freemud.entities.dto.StoreDeliveryInfoDto;
import cn.freemud.entities.dto.UserDeliveryInfoDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.SubtractStockVO;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.OrderAccountType;
import cn.freemud.enums.OrderSourceType;
import cn.freemud.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
......@@ -130,7 +129,7 @@ public class MallOrderAdapter {
createOrderDto.setPayType(QueryPayType.ONLINE_PAY);
createOrderDto.setSource(OrderSourceType.SAASMALL.getCode());
createOrderDto.setSourceName(OrderSourceType.SAASMALL.getDesc());
createOrderDto.setOrderClientType(OrderClientType.SAASMALL);
createOrderDto.setOrderClient(OrderClientType.SAASMALL);
createOrderDto.setRemark(remark);
createOrderDto.setGmtExpect(null);
BaseCreateOrderRequest.DeliveryTypeInfo deliveryTypeInfo = new BaseCreateOrderRequest.DeliveryTypeInfo();
......@@ -141,6 +140,7 @@ public class MallOrderAdapter {
createOrderDto.setProvince(userDeliveryInfoDto.getReceiveProvince());
createOrderDto.setCity(userDeliveryInfoDto.getReceiveCity());
createOrderDto.setRegion(userDeliveryInfoDto.getReceiveRegion());
createOrderDto.setMenuType(BusinessTypeEnum.SAAS_MALL.getName());
return createOrderDto;
}
......
......@@ -202,15 +202,6 @@ public class OrderController {
}
/**
* 订单确认完成
*/
@ApiAnnotation(logMessage = "affirm")
@PostMapping("/affirm")
public BaseResponse orderAffirm(@LogParams @Valid @RequestBody OrderAffirmRequestVO request) {
return mallOrderService.orderAffirm(request);
}
/**
* 查询30分钟未支付的优惠券订单
*/
@ApiAnnotation(logMessage = "queryOrderWithCoupon")
......@@ -220,4 +211,13 @@ public class OrderController {
return ResponseUtil.success();
}
/**
* 订单确认完成
*/
@ApiAnnotation(logMessage = "affirm")
@PostMapping("/affirm")
public BaseResponse orderAffirm(@Validated @LogParams @RequestBody OrderAffirmRequestVO request) {
return mallOrderService.orderAffirm(request);
}
}
......@@ -30,9 +30,10 @@ public enum OrderSourceType {
SAAS("saas", "saas 点餐"),
SAASMALL("saasmall", "微商城"),
ALIPAY("alipay", "支付宝小程序点餐"),
ALIPAY("alipay", "支付宝小程序点餐");
SAASMALL("saasmall", "微商城"),
;
private String code;
......
......@@ -12,63 +12,134 @@
*/
package cn.freemud.service.impl;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.StoreConstant;
import cn.freemud.entities.dto.StoreDeliveryInfoDto;
import cn.freemud.entities.dto.UserDeliveryInfoDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.delivery.DeliveryAmountVo;
import cn.freemud.enums.BusinessTypeEnum;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.delivery.ThirdDeliveryServiceImpl;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
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.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class CheckMallOrder {
@Autowired
private ShoppingCartClient shoppingCartClient;
@Autowired
private CheckOrder checkOrder;
// 缓存取用户数据用
private ThirdDeliveryServiceImpl thirdDeliveryService;
@Autowired
private UserServiceImpl userService;
private AssortmentCustomerInfoManager customerInfoManager;
@Autowired
private ThirdDeliveryServiceImpl thirdDeliveryService;
private StoreCenterService storeCenterService;
/**
* 下单会员相关校验
*/
public UserLoginInfoDto checkOrderByMember(CreateOrderVo createOrderVo, String trackingNo) {
public AssortmentCustomerInfoVo checkOrderByMember(CreateOrderVo createOrderVo) {
// 通过sessionId查询缓存中会员id
UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(createOrderVo.getSessionId());
String sessionId = createOrderVo.getSessionId();
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto;
}
/**
* 查询门店信息
*/
public StoreResponse getStoreInfo(String partnerId, String shopId, String trackingNo) {
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, shopId,null);
return storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
}
/**
* 下单门店相关校验
*/
public StoreResponse.BizVO checkOrderByStore(CreateOrderVo createOrderVo, String trackingNo) {
return checkOrder.checkOrderByStore(createOrderVo, trackingNo);
String partnerId = createOrderVo.getPartnerId();
String shopId = createOrderVo.getShopId();
// 获取门店信息
StoreResponse storeResponse = getStoreInfo(partnerId, shopId, trackingNo);
if (storeResponse == null || storeResponse.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO();
// 校验门店是否停业 1 营业 2 停业 3 繁忙置休
if (storeResponseDto.getActiveFlag() == null || storeResponseDto.getActiveFlag() != 1) {
throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
}
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState())) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
}
//设置营业开始和结束时间
String businessHourStr = storeResponseDto.getBusinessHoursDay().replace("-", ",").replace("_", ",");
String[] businessHours = businessHourStr.split(",");
if (businessHours.length != 2) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
Date date = new Date();
String startDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[0] + ":00";
Date startDateTime = DateUtil.convert2Date(startDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
String endDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[1] + ":00";
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date endDateTime;
try {
endDateTime = hhmmss.parse(endDateTimeStr);
} catch (ParseException e) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
}
storeResponseDto.setBusinessHoursDayStartTime(startDateTime);
storeResponseDto.setBusinessHoursDayEndTime(endDateTime);
// 校验门店是否打烊,打烊了则不让操作
if (storeResponseDto.getBusinessHoursDayStartTime() == null
|| storeResponseDto.getBusinessHoursDayEndTime() == null) {
throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
}
// 桌号不为空,查数据库重新设置桌号
/*if (StringUtils.isNotBlank(createOrderVo.getTableNumber())) {
createOrderVo.setTableNumber(getTableNumber(partnerId, shopId, createOrderVo.getTableNumber()));
}*/
createOrderVo.setStoreName(storeResponseDto.getStoreName());
createOrderVo.setStoreAddress(storeResponseDto.getAddress());
createOrderVo.setThirdShopId(storeResponseDto.getThirdPartCode());
return storeResponseDto;
}
/**
* 下单配送相关校验
*/
public void checkOrderByDelivery(CreateOrderVo createOrderVo, UserLoginInfoDto userLoginInfoDto,
public void checkOrderByDelivery(CreateOrderVo createOrderVo, AssortmentCustomerInfoVo userLoginInfoDto,
StoreResponse.BizVO storeResponseDto,Long totalAmount, String trackingNo) {
StoreDeliveryInfoDto storeDeliveryInfoDto = this.getStoreDeliveryInfo(storeResponseDto, userLoginInfoDto.getWxAppId());
//订单金额小于起送费提示
......@@ -90,6 +161,7 @@ public class CheckMallOrder {
.flag(CouponFlag.NO.getCode())
.useCustomerScore(createOrderVo.getUseCustomerScore())
.channelType(OrderChannelType.SAASMALL.getCode())
.menuType(BusinessTypeEnum.SAAS_MALL.getName())
.build();
// 通过购物车获取优惠信息
GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto();
......
......@@ -131,7 +131,7 @@ public class CouponActivityServiceImpl implements CouponActivityService {
try {
//移除卡包失败,邮件报警
com.freemud.application.sdk.api.base.BaseResponse baseResponse = offlineCouponSdkService.callbackNotify(couponCode, orderCode, partnerId,"");
if (!Objects.equals(baseResponse.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
if (!Objects.equals(baseResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("券码移除卡包失败", String.format("request:%s \r\nresponse:%s","券码号:"+couponCode+"订单号:"+orderCode, JSONObject.toJSONString(baseResponse)));
return ResponseUtil.error(ResponseResult.COUPON_CALLBACK_FAIL);
}
......
......@@ -212,11 +212,11 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private ActivityApplicationClient activityApplicationClient;
@Autowired
private MallOrderServiceImpl mallOrderService;
@Autowired
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
@Autowired
private PaymentNewClient paymentNewClient;
@Autowired
private MallOrderServiceImpl mallOrderService;
......@@ -2173,21 +2173,6 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 历史判断围餐是从userLoginInfoDto判断iappid的。
* 商城订单从前端传channelType区分,
* 默认点餐
*/
private String getQueryOrderChannelType(QueryOrderVo queryOrderVo, AssortmentCustomerInfoVo userLoginInfoDto) {
String channelType = OrderChannelType.SAAS.getCode();
if(IappIdType.WC_XCX.getCode().equals(userLoginInfoDto.getIappId())) {
channelType = OrderChannelType.IWC.getCode();
} else if(OrderChannelType.SAASMALL.getCode().equals(queryOrderVo.getChannelType())) {
channelType = OrderChannelType.SAASMALL.getCode();
}
return channelType;
}
/**
* 下单支付
*/
private BaseResponse createOrderAndPay(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
......@@ -2395,4 +2380,19 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 历史判断围餐是从userLoginInfoDto判断iappid的。
* 商城订单从前端传channelType区分,
* 默认点餐
*/
private String getQueryOrderChannelType(QueryOrderVo queryOrderVo, AssortmentCustomerInfoVo userLoginInfoDto) {
String channelType = OrderChannelType.SAAS.getCode();
if(IappIdType.WC_XCX.getCode().equals(userLoginInfoDto.getIappId())) {
channelType = OrderChannelType.IWC.getCode();
} else if(OrderChannelType.SAASMALL.getCode().equals(queryOrderVo.getChannelType())) {
channelType = OrderChannelType.SAASMALL.getCode();
}
return channelType;
}
}
......@@ -60,6 +60,74 @@
<groupId>cn.freemud.commons</groupId>
<artifactId>commons-base</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
package cn.freemud.management.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.service.OrderDeliveryService;
import com.freemud.application.sdk.api.log.ApiAnnotation;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 创建配送单
*/
@Slf4j
@RequestMapping("/order")
@RestController
@Validated
public class DeliveryOrderController {
@Autowired
private OrderDeliveryService orderDeliveryService;
@ApiAnnotation(logMessage = "创建配送单")
@ApiOperation(value = "创建配送单", notes = "创建配送单", produces = "application/json")
@GetMapping("/delivery/create")
public BaseResponse deliveryCreate(@RequestParam("orderCode") String orderCode
, @RequestParam(value = "operator", required = false) String operator) {
return orderDeliveryService.createDelivery(orderCode);
}
}
......@@ -2,6 +2,7 @@ package cn.freemud.management.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.util.CheckException;
import cn.freemud.management.util.CommonResp;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
......@@ -11,6 +12,9 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.google.common.base.Throwables;
import javafx.util.Pair;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -20,6 +24,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
public class OrderDeliveryService {
......@@ -36,31 +41,42 @@ public class OrderDeliveryService {
private int SUCCESS = 100;
private String delivery_type_self = "self";
/**
* 外卖单创建配送信息
*
* @param orderCode
* @return
*/
public BaseResponse createDelivery(String orderCode) {
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(orderCode);
return CommonResp.success(this.createDelivery(orderBean));
}
public Boolean createDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean) {
//判断外卖单
if (1 != orderBean.getType()) {
return true;
}
if (!orderBean.getSource().equalsIgnoreCase(OrderSourceType.SAAS.getCode())) {
return true;
if (null == orderBean) {
return CommonResp.fail("订单不存在");
}
//配送信息为空,则不创建配送单
if (orderBean.getAddInfo() == null || orderBean.getAddInfo().getDeliveryType() == null) {
return true;
Pair<Boolean, String> pair = checkOrderOfDelivery(orderBean);
if (!pair.getKey()) {
log.info("无需创建配送单({}),{}", orderBean.getOid(), pair.getValue());
return CommonResp.success(pair.getValue());
}
//自配送不创建配送单
if (delivery_type_self.equalsIgnoreCase(orderBean.getAddInfo().getDeliveryType())) {
return true;
try {
this.createDelivery(orderBean);
} catch (CheckException e) {
log.error("创建配送单失败({}),trace:{}", orderCode, Throwables.getStackTraceAsString(e));
return CommonResp.fail(e.getMessage());
}
return CommonResp.success();
}
/**
* 创建配送信息
*
* @param orderBean
* @return
*/
public Boolean createDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean) {
StoreInfoRequest storeInfoRequestDto = new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId());
StoreResponse storeInfo = storeCenterService.getStoreInfo(storeInfoRequestDto, LogTreadLocal.getTrackingNo());
if (SUCCESS != storeInfo.getStatusCode() || storeInfo.getBizVO() == null) {
return false;
throw new CheckException("查询门店信息失败");
}
// 调用配送系统创建配送单
......@@ -70,15 +86,40 @@ public class OrderDeliveryService {
//创建配送单失败,更新订单为异常单
if (deliveryResponse == null || SUCCESS != deliveryResponse.getCode() || deliveryResponse.getData() == null) {
String deliveryId = deliveryResponse != null && deliveryResponse.getData() != null ? deliveryResponse.getData().getDeliveryId() : "";
orderBaseService.updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, "");
return false;
orderBaseService.updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, "sys");
throw new CheckException("创建配送单信息失败,配送状态更新为配送异常");
}
// 创建配送单成功
orderBaseService.updateDeliverySuccess(orderBean.getOid(), deliveryResponse.getData().getDeliveryId(), "");
orderBaseService.updateDeliverySuccess(orderBean.getOid(), deliveryResponse.getData().getDeliveryId(), "sys");
return true;
}
/**
* 校验订单是否符合创建配送单要求
*
* @param orderBean
* @return
*/
public Pair<Boolean, String> checkOrderOfDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean) {
//判断外卖单
if (1 != orderBean.getType()) {
return new Pair<>(false, "该订单不是外卖类型订单");
}
if (!orderBean.getSource().equalsIgnoreCase(OrderSourceType.SAAS.getCode())) {
return new Pair<>(false, "订单来源异常");
}
//配送信息为空,则不创建配送单
if (orderBean.getAddInfo() == null || orderBean.getAddInfo().getDeliveryType() == null) {
return new Pair<>(false, "未找到订单配送信息");
}
//自配送不创建配送单
if (delivery_type_self.equalsIgnoreCase(orderBean.getAddInfo().getDeliveryType())) {
return new Pair<>(false, "该订单为自配送");
}
return new Pair<>(true, "success");
}
/**
* 创建配送单请求对象
*
* @param order
......
package cn.freemud.management.util;
import lombok.Getter;
@Getter
public class CheckException extends RuntimeException {
protected ResponseCodeEnum responseCodeEnum;
public CheckException(ResponseCodeEnum responseCodeEnum) {
super(responseCodeEnum.msg);
this.responseCodeEnum = responseCodeEnum;
}
public CheckException(String message) {
super(message);
}
}
\ No newline at end of file
......@@ -49,6 +49,10 @@ public class CommonResp<T> extends BaseResponse<T> {
return new CommonResp(ResponseCodeEnum.FAILURE);
}
public static CommonResp fail(String message) {
return new CommonResp(ResponseCodeEnum.FAILURE.code, message);
}
public static CommonResp fail(Object data) {
return new CommonResp(ResponseCodeEnum.FAILURE, data);
}
......
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.1.4-SNAPSHOT</version>
<version>1.1.5-SNAPSHOT</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
......@@ -10,4 +10,5 @@
| 1.1.2-SNAPSHOT | 创建订单新增部分参数 | 侯书虎 | 2020-01-03 |
| 1.1.1.RELEASE| 1.9.9需求打包release版本 | 丁凯 | 2020-01-08 |
| 1.1.2.RELEASE| 农工商订单submit | 侯书虎 | 2020-01-13 |
| 1.1.4-SNAPSHOT| 开放平台专用创建订单接口 | 姜海波 | 2020-02-17 |
\ No newline at end of file
| 1.1.4-SNAPSHOT| 开放平台专用创建订单接口 | 姜海波 | 2020-02-17 |
| 1.1.5-SNAPSHOT | 优化活动订单 | 胡超 | 2020-02-10 |
\ No newline at end of file
......@@ -151,4 +151,9 @@ public class InterfaceAddressConstant {
* 根据订单号查询订单详情
*/
public static final String QUERY_ORDER_BY_CODE = "order/v2/queryOrderByCode";
/**
* 根据用户ID 查询30分钟内未支付并且有券的 订单
*/
public static final String QUERY_ORDER_WITH_COUPON="order/v2/queryOrderWithCoupon";
}
......@@ -106,4 +106,9 @@ public class OrderConditionsReq {
//订单业务类型 1:普通订单 2:虚拟订单
private Integer bizType;
// 外部对象ID 如:活动ID
private List<String> externalObjectIds;
// 外部对象ID 如:活动类型
private List<Integer> settlementTypes;
}
......@@ -679,4 +679,19 @@ public class OrderSdkService {
return responseHandle(responseDTO);
}
/**
* 根据用户ID 查询30分钟内未支付并且有券的 订单
*
* @param userId 用户ID
* @param trackingNo 交易号
* @return
*/
public BaseResponse<QueryOrderForUserResp> queryOrderWithCoupon(String userId, String trackingNo) {
String url = InterfaceAddressConstant.QUERY_ORDER_WITH_COUPON + "?userId=" + userId;
OrderBaseResp<QueryOrderForUserResp> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, url,
createBaseRequest(null, trackingNo), new ParameterizedTypeReference<OrderBaseResp<QueryOrderForUserResp>>() {
});
return responseHandle(responseDTO);
}
}
......@@ -35,12 +35,12 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId>
<version>2.7.4.RELEASE</version>
<version>2.7.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>1.1.RELEASE</version>
<version>1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
......
......@@ -69,6 +69,11 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
private String svcDiscountDesc;
/**
* svc卡开关标识
*/
private boolean svcSwitch;
/**
* 可用优惠券列表
*/
private ActivityClassifyCouponBean availableCoupon;
......
......@@ -111,7 +111,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
//商品skuId或者商品券的商品id
String spuId2 = spuId;
// 获取商品详细信息
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId, Collections.singletonList(spuId2),BusinessTypeEnum.SAAS_MALL.getName(), this.shoppingCartBaseService);
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId, Collections.singletonList(spuId2), BusinessTypeEnum.SAAS_MALL.getName(), this.shoppingCartBaseService);
//查询多个商品库存信息
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId);
......@@ -232,7 +232,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
//查询商品信息
List<String> pids = new ArrayList<>();
pids.add(cartGoods.getGoodsId());
Map<String, GetProductsVo> products = itemService.getProducts(pids, partnerId, storeId,"saasmall");
Map<String, GetProductsVo> products = itemService.getProducts(pids, partnerId, storeId,BusinessTypeEnum.SAAS_MALL.getCode());
GetProductsVo getProductsVo = products.get(cartGoods.getGoodsId());
// 商品没有库存限制
......@@ -240,7 +240,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
return;
}
GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel("saas");
requestDto.setChannel(BusinessTypeEnum.SAAS_MALL.getCode());
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
requestDto.setProductIds(Collections.singletonList(Long.parseLong(cartGoods.getGoodsId())));
......@@ -591,7 +591,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
private void queryManyGoodsStocks(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<Long> productIds
, List<ProductBeanDTO> productBeanListSpuClass, String skuId) {
GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel("saas");
requestDto.setChannel(BusinessTypeEnum.SAAS_MALL.getCode());
requestDto.setPartnerId(addShoppingCartGoodsRequestVo.getPartnerId());
requestDto.setStoreId(addShoppingCartGoodsRequestVo.getShopId());
requestDto.setProductIds(productIds);
......
......@@ -1252,10 +1252,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* 储值卡支付余额校验
* 校验订单商品金额与外卖配送费
*/
private void SVCCardPay(String cardCode, String receiveId, String partnerId, String storeId,
private boolean SVCCardPay(String cardCode, String receiveId, String partnerId, String storeId,
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
//svc储值卡开关
boolean svcSwitch=false;
if (StringUtils.isBlank(cardCode)) {
return;
return false;
}
Integer orderAmount = shoppingCartGoodsResponseVo.getTotalAmount().intValue();
String trackingNo = LogThreadLocal.getTrackingNo();
......@@ -1277,12 +1279,17 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
//throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
shoppingCartGoodsResponseVo.setSvcSwitch(svcSwitch);
return false;
}
svcSwitch=true;
BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setTotalAmount(0L);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
shoppingCartGoodsResponseVo.setSvcSwitch(svcSwitch);
return true;
}
/**
......
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