Commit f10eefda by 姜海波
parents e67d61e2 f25c5cf3
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.9.RELEASE</version>
<version>1.3.2.RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -23,4 +23,8 @@
| 1.2.5.RELEASE | 满额减配送费 | 海波 | 2020-03-26 |
| 1.2.7.RELEASE | 判断优化 | 丁凯 | 2020-04-03 |
| 1.2.8.RELEASE | 增加延时队列 | 海波 | 2020-04-13 |
| 1.2.9.RELEASE | oms接单 | 侯书虎 | 2020-04-13 |
\ No newline at end of file
| 1.2.9.RELEASE | oms接单 | 侯书虎 | 2020-04-13 |
| 1.3.0.RELEASE | app订单 | 丁凯 | 2020-04-20 |
| 1.3.1.RELEASE | queryOrderById返回新增商家、平台优惠 | 侯书虎 | 2020-04-20 |
| 1.3.2.RELEASE | ext_info 增加stapleFood主食设置 | 李小二 | 2020-04-20 |
| 1.3.3.RELEASE | 第三方外卖单配送费类型与新用户立减类型重复区分 | wuping | 2020-04-21 |
\ No newline at end of file
......@@ -603,9 +603,16 @@ public class OrderSdkAdapter {
accountBean.setName(orderSettlementResp.getNote());
accountBean.setNumber(1);
accountBean.setPrice(orderSettlementResp.getSettlementAmount() == null ? 0L : orderSettlementResp.getSettlementAmount().longValue());
//处理第三方外卖单优惠金额信息
if(orderSettlementResp.getSettlementAmount() != null && orderSettlementResp.getSettlementAmount().intValue() > 0){
long discountFee = 0 - Math.abs(orderSettlementResp.getSettlementAmount().longValue());
accountBean.setPrice(discountFee);
}
accountBean.setSequence(orderSettlementResp.getProductSeq());
accountBean.setType(getOldOrderAccountType(orderSettlementResp.getSettlementType()));
accountBean.setAddInfo("");
accountBean.setPlatformDiscountAmount(orderSettlementResp.getPlatformDiscountAmount());
accountBean.setShopDiscountAmount(orderSettlementResp.getShopDiscountAmount());
accountList.add(accountBean);
}
}
......@@ -1244,6 +1251,9 @@ public class OrderSdkAdapter {
case 23:
name = "saasmall";
break;
case 12:
name = "app";
break;
default:
name = orderClientType.toString();
break;
......@@ -1285,6 +1295,9 @@ public class OrderSdkAdapter {
case 23:
name = "saas 商城";
break;
case 12:
name = "APP";
break;
default:
break;
}
......@@ -1719,6 +1732,9 @@ public class OrderSdkAdapter {
private Integer getOldOrderAccountType(int newOrderAccountType) {
// 新订单服务枚举 OrderSettlementType
switch (newOrderAccountType) {
case 1:
newOrderAccountType = OldOrderAccountType.NEW_USER_DISCOUNT.getCode();
break;
case 2:
newOrderAccountType = OldOrderAccountType.BUY_DISCOUNT.getCode();
break;
......@@ -2521,6 +2537,11 @@ public class OrderSdkAdapter {
if (StringUtils.isNotBlank(product.getThirdCategoryId())){
extInfo.setThirdCategoryId(product.getThirdCategoryId());
}
extInfo.setStapleFood(product.getStapleFood());
//if (product.getStapleFood()!=null && product.getStapleFood()>0) {
// extInfo.setStapleFood(1);
//}
// todo 订单行扩展字段商品组
extInfo.setProductGroupList(product.getProductGroupList());
......
......@@ -81,4 +81,11 @@ public class OrderExtInfoDTO {
* 微信上报异常补推使用
*/
private String sessionKey;
/**
* 来源appId
*/
private String fromAppId;
private String fmId;
}
......@@ -35,6 +35,7 @@ public enum OldOrderAccountType {
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额", "CARD_DISCOUNT_AMOUNT"),
XY_DISCOUNT(104, "x件y折", "XY_DISCOUNT"),
FULL_DISTRIBUTION_FEE(1014, "满减配送费", "FULL_DISTRIBUTION_FEE"),
NEW_USER_DISCOUNT(101, "新用户立减", "NEW_USER_DISCOUNT"),
TOTAL_DISCOUNT(205, "优惠总金额", "TOTAL_DISCOUNT");
private Integer code;
......
......@@ -158,4 +158,7 @@ public class CreateOrderProductRequest extends BaseConfig {
/** 商品组 **/
private List<ProductGroupVo> productGroupList;
/** 是否主食**/
private Integer stapleFood;
}
......@@ -48,4 +48,7 @@ public class OrderProductAddInfoDto extends BaseConfig {
/** 商品组 **/
private List<ProductGroupVo> productGroupList;
/** 是否主食 **/
private Integer stapleFood;
}
......@@ -572,6 +572,11 @@ public class QueryOrdersResponse {
* 自定义对象
*/
private String addInfo;
//平台优惠
private Long platformDiscountAmount;
//商家优惠
private Long shopDiscountAmount;
}
@NoArgsConstructor
......
......@@ -40,7 +40,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.9.RELEASE</version>
<version>1.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -1939,6 +1939,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setHasStockProudct(cartGoodsDetailDto.isStockLimit());
createOrderProductDemoDto.setWeight(cartGoodsDetailDto.getWeight());
createOrderProductDemoDto.setUnit(cartGoodsDetailDto.getUnit());
createOrderProductDemoDto.setStapleFood(0);
return createOrderProductDemoDto;
}
......@@ -2336,6 +2337,25 @@ public class OrderAdapter {
return createOrderResponseVo;
}
public CreateOrderResponseVo convent2CreateFatherSonOrderNoPayResponseVo(QueryOrdersResponse.DataBean.OrderBean orderBean) {
CreateOrderResponseVo createOrderResponseVo = new CreateOrderResponseVo();
createOrderResponseVo.setOid(orderBean.getOid());
createOrderResponseVo.setWxappId("");
createOrderResponseVo.setFmId("");
createOrderResponseVo.setTimestamp("");
createOrderResponseVo.setNonceStr("");
createOrderResponseVo.setPackageX("");
createOrderResponseVo.setSignType("");
createOrderResponseVo.setSign("");
//微信新版订阅消息判断新加字段
if(orderBean != null && orderBean.getType() != null){
createOrderResponseVo.setOrderType(getNewOrderType(orderBean.getType(), orderBean.getGmtExpect()));
}
createOrderResponseVo.setOrderStr("");
createOrderResponseVo.setPaySuccess(false);
return createOrderResponseVo;
}
public OrderPayResponse convent2OrderPayResponse(UnifiedOrderResponse unifiedOrderResponse) {
OrderPayResponse responseDto = new OrderPayResponse();
responseDto.setFmId(unifiedOrderResponse.getFmId());
......@@ -2718,4 +2738,30 @@ public class OrderAdapter {
return orderTask;
}
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId,
String faceCode, String cardCode, QueryOrdersResponse.DataBean.OrderBean fatherOrderBean,
QueryOrdersResponse.DataBean.OrderBean productOrderBean, long totalAmount, int cardAmount, OrderExtInfoDTO orderExtInfoDTO){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(wxAppId);
requestDto.setOpenId(openId);
requestDto.setFaceCode(faceCode);
requestDto.setCardCode(cardCode);
requestDto.setFatherOrderBean(fatherOrderBean);
requestDto.setProductOrderBean(productOrderBean);
requestDto.setTotalAmount(totalAmount);
requestDto.setCardAmount(cardAmount);
requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
return requestDto;
}
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto,CreateOrderVo createOrderVo,
CreateOrderOperateDto createOrderOperateDto, OrderExtInfoDTO orderExtInfoDTO){
return this.convertToCreatePrepayRequestDto(createOrderVo.getPartnerId(), userLoginInfoDto.getWxAppId(), userLoginInfoDto.getOpenId(),
createOrderVo.getFaceCode(), createOrderVo.getCardCode(), createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(),
createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount(), orderExtInfoDTO);
}
}
......@@ -25,6 +25,7 @@ import cn.freemud.utils.ResponseUtil;
import cn.freemud.service.impl.MallOrderServiceImpl;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -218,4 +219,13 @@ public class OrderController {
return mallOrderService.orderAffirm(request);
}
/**
* 创建预支付
*/
@ApiAnnotation(logMessage = "createPrepay")
@PostMapping("/createPrepay")
public BaseResponse createPrepay(@Validated @LogParams @RequestBody CreatePrepayVo request) {
return orderAdapterService.createPrepay(request);
}
}
......@@ -39,6 +39,8 @@ public class ProductComboListDto {
private Integer status;
private Integer stockLimit;
private String unit;
/* 是否主食*/
private Integer isStaple;
protected List<ProductAttributeGroup> productAttributeGroupList;
}
package cn.freemud.entities.dto.order;
import com.freemud.sdk.api.assortment.order.entities.OrderExtInfoDTO;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
@Data
public class CreatePrepayRequestDto {
private String partnerId;
private String wxAppId;
private String openId;
private String faceCode;
private String cardCode;
private QueryOrdersResponse.DataBean.OrderBean fatherOrderBean;
private QueryOrdersResponse.DataBean.OrderBean productOrderBean;
private long totalAmount;
private int cardAmount;
private OrderExtInfoDTO orderExtInfoDTO;
}
......@@ -12,47 +12,54 @@
*/
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CreateOrderResponseVo {
@ApiModelProperty(value = "订单id")
private String oid;
@ApiModelProperty(value = "微信appid")
private String wxappId;
@ApiModelProperty(value = "时间戳")
private String timestamp;
@ApiModelProperty(value = "随机字符串")
private String nonceStr;
@ApiModelProperty(value = "订单详情扩展字符串")
private String packageX;
@ApiModelProperty(value = "签名方式")
private String signType;
@ApiModelProperty(value = "签名")
private String sign;
/**
* 是否支持成功 支付金额为0,现为商品券时返回true,其余为false
*/
@ApiModelProperty(value = "是否支持成功")
private Boolean paySuccess;
/**
* 非码支付商户号 用户数据上报
*/
@ApiModelProperty(value = "非码支付商户号")
private String fmId;
/**
* 下单版本号
*/
@ApiModelProperty(value = "下单版本号")
private Integer orderUpdateVer;
/**
* 订单类型
*/
@ApiModelProperty(value = "订单类型")
private Integer orderType;
/**
* 支付宝参数 唤起支付宝支付使用
*/
@ApiModelProperty(value = "支付宝参数 唤起支付宝支付使用")
private String orderStr;
}
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class CreatePrepayVo {
/**
* 商户id
*/
@NotEmpty
@ApiModelProperty(value = "商户id")
private String partnerId;
/**
* 用户sessionId
*/
@NotEmpty
@ApiModelProperty(value = "用户sessionId")
private String sessionId;
/**
* 订单号
*/
@NotEmpty
@ApiModelProperty(value = "订单号")
private String orderCode;
/**
* 门店id
*/
@NotEmpty
@ApiModelProperty(value = "门店id")
private String storeId;
/**
* 支付appid
*/
@NotEmpty
@ApiModelProperty(value = "支付appId")
private String payAppId;
@ApiModelProperty(value = "微信openId")
private String openId;
}
......@@ -52,4 +52,8 @@ public class GetProductsVo {
/** 商品组 */
private List<ProductGroup> productGroupList;
/*
* 是否主食
*/
private Integer stapleFood;
}
......@@ -136,6 +136,10 @@ public enum ResponseResult {
ORDER_HAS_CANCELED("45053", "订单已经被取消"),
ORDER_MALL_NOT_MATCH("45054", "非商城订单,无法操作"),
AFFIRM_ORDER_FAIL("45055", "确认订单失败"),
ORDER_EMPTY_CREATE_PREPAY_FAIL("45056", "订单为空,创建预订单失败"),
ORDER_HAS_PAID("45057", "订单已支付或已完成"),
ORDER_PRE_PAYMENT_CLOSE_FAILED("45058","关闭预支付订单失败"),
ORDER_OWNER_ERROR("45059","订单归属错误"),
/**
* 支付
......
package cn.freemud.enums;
import lombok.Getter;
@Getter
public enum UserLoginChannelEnum {
WEIXIN("1", "微信"),
ALIPAY("2", "支付宝"),
APP("3", "APP");
private String code;
private String desc;
UserLoginChannelEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
}
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
/**
* app订单服务
*/
public interface AppOrderService {
/**
* 创建订单
*/
BaseResponse createOrderFlow(CreateOrderVo createOrderVo);
/**
* 创建预支付
*/
BaseResponse createPrepay(CreatePrepayVo createPrepayVo);
}
......@@ -2,6 +2,7 @@ package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -23,4 +24,9 @@ public interface OrderAdapterService {
*/
BaseResponse createOrderNew(CreateOrderVo createOrderVo);
/**
* 创建预支付
*/
BaseResponse createPrepay(CreatePrepayVo createPrepayVo);
}
......@@ -116,7 +116,6 @@ public class CheckOrder {
return userLoginInfoDto;
}
/**
* 查询门店信息
*/
......
......@@ -128,15 +128,20 @@ public class ItemServiceImpl implements ItemService{
*/
private void saveComboProductsThirdInfo(ProductInfo productBean,Map<String, GetProductsVo> resultMap){
GetProductsVo spuProductsVo = resultMap.get(productBean.getPid());
List<Integer> stapleFood = Arrays.asList(0,1);
//套餐固定商品
if (CollectionUtils.isNotEmpty(productBean.getProductComboList())) {
for (ProductComboListDto productComboListDto : productBean.getProductComboList()) {
GetProductsVo comboProductsVo = new GetProductsVo();
comboProductsVo.setCustomerCode(productComboListDto.getCustomerCode());
comboProductsVo.setProductCode(productComboListDto.getProductCode());
if (productComboListDto.getIsStaple()!=null && stapleFood.contains(productComboListDto.getIsStaple())) {
comboProductsVo.setStapleFood(productComboListDto.getIsStaple());
} else {
comboProductsVo.setStapleFood(0);
}
//第三方商品属性信息
comboProductsVo.setProductAttributeGroupList(productComboListDto.getProductAttributeGroupList());
if(CollectionUtils.isNotEmpty(spuProductsVo.getProductGroupList())){
/** 商品组 */
for(ProductGroup group : spuProductsVo.getProductGroupList()){
......
......@@ -546,7 +546,7 @@ public class MallOrderServiceImpl implements MallOrderService {
comboProduct.setProductCode(products.get(comboSkuId).getProductCode());
comboProduct.setThirdProductSpecId(products.get(comboSkuId).getThirdProductSpecId());
comboProduct.setThirdProductPropertyId(getThirdPropertyId(products.get(comboSkuId).getProductAttributeGroupList(),comboProduct.getAddInfo()));
comboProduct.setStapleFood(products.get(comboSkuId).getStapleFood());
// todo 套餐商品的商品组信息
setProductGroupInfo(products.get(comboSkuId).getProductGroupList(), comboProduct);
} else {
......
......@@ -2,14 +2,13 @@ package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.MallOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.*;
import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
......@@ -41,6 +40,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired
private MallOrderService mallOrderService;
@Autowired
private AppOrderService appOrderService;
@Override
public BaseResponse createOrderNew(CreateOrderVo createOrderVo) {
......@@ -81,6 +82,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return mallOrderService.createOrder(createOrderVo);
}
/**
* APP下单
*/
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
return appOrderService.createOrderFlow(createOrderVo);
}
//原标准点餐程序逻辑处理
BaseResponse baseResponse = this.checkStandardParamInfo(createOrderVo);
if(ObjectUtils.notEqual(baseResponse.getCode(),ResponseResult.SUCCESS.getCode())){
......@@ -89,6 +97,18 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return orderservice.createOrderNew(createOrderVo);
}
@Override
public BaseResponse createPrepay(CreatePrepayVo createPrepayVo) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createPrepayVo.getSessionId());
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
return appOrderService.createPrepay(createPrepayVo);
}
throw new UnsupportedOperationException("暂不支持渠道:"+assortmentCustomerInfoVo.getChannel());
}
/**
* 标准点餐参数校验
* @param createOrderVo
......
......@@ -46,7 +46,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.9.RELEASE</version>
<version>1.3.1.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
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