Commit db17540d by ping.wu

Merge branches 'develop' and 'feature/20200522_买券订单创建_wuping' of…

Merge branches 'develop' and 'feature/20200522_买券订单创建_wuping' of http://gitlab.freemud.com/order-group-application/order-group into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents cb69a1c0 ab6e74ad
......@@ -45,7 +45,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId>
<version>2.6.RELEASE</version>
<version>2.8.4-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>membercenter-sdk</artifactId>
......
......@@ -84,13 +84,11 @@ import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
@Component
public class OrderAdapter {
private static FastDateFormat yyyyMMdd = FastDateFormat.getInstance("yyyy-MM-dd", Locale.CHINA);
private static FastDateFormat yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private static String SPMCHID = "1237482502";
private static String SPWXAPPID = "wx8244c7c48c7d45de";
private static String ENTRYPAGE = "pages/storeListShop";
// private static String SPWXAPPID = "wx8244c7c48c7d45de";
// private static String ENTRYPAGE = "pages/storeListShop";
private static String SERIALNO = "3425DD6C131D637D7316076C4A44E1CBEFE3DB55";
private static String privatekey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDO+3Q6YX6843Qo5Okhum74yG7zpJ8NbWk9EugJwxW9AZuZI3fziAW5+EblEkx0ZeXYX/GvztjRUZ+MA4eHAXnAdzhiTO46LOePtjQXXqPVOHKEhkfa/5qvJSzJ1Ei8ICrA1hQOGF0sqxMmFNpWaXJkHZ7rJ4KRir8osVeWEF8l8xWEktpXVzspT1PGt7T9i9cQO/lMFYP9nq4qr0pZ4rGgpjURjuZHam5E9l6IFP0VVBvyYP96c/9rUgDeLtPqRDCfQC3WYUtA34XudM/HaGCSPvg5ui5Q2sWob10YFP2F8iTCBHDE3rR1s+inYjS4oXd/TCWQ7+C/O7L9h5AKEFAZAgMBAAECggEAGNFJpF5gReG34ddgpKyn9aiCtS/96iw+PBZyQAlmJ91zfK8mCMs8dInyZjEFfcdiAcmvPvc8RAzXZoBd1bA1mwAwgIjc35jWwwKDyHGOj1hPUtiO8RFIyMtaTXDor7Xjqm+AxBfjxCFXEG/bphTKpHpwvZ1lKHJMbWKmL9YSsof1zK12FC5nFxA0mrPlpYHWFmbeMLu7ngDTGEA5AepKv+BZcqMEJGQvAgskGHdsLSd2NoadUQoFz0ZOrXAXlqNQpODUqRTm3besq2ClBaa2JNEG/KxGqZGM11jsTaduH5WhUubb53OJ8pbkw3ROept9fW25QX/k3ORJ3Xmq+g4gAQKBgQDqbRE1mrfEYW0yjnb6FKx+0jHcU/RNuqflCCoWaEzzNJbMzTxuYvyyR7bhT07B26Qji2ic3T/qUokMXpavadZItH8QegTf3eCtDWU1a6RdPkS+NvRT3NaJstbPnGEEavcbS4y45phE9637rhn7WpaWCmw4ggaawNH/lo7kOBCqGQKBgQDiB9PpW7gumtFlNqw6HVcdl/1SvIOWPujvzYNnFkp3ZWDf/hF7XWno3+w27kA/ox9X7A7ejZZgPsR1+QVgbAGCRDs7qVM77r0XddXtKatCnENWsIER11+SAHwXNI+OzVJyivxqc8MqKVt/TdIIRlOXmrDtBLWXrKtJ6+fpRZ2WAQKBgG1T2EbLlRB871Q4pLwUkC3FEYPTk4f8mPhzSk2Q7vItgHaa8Kf6eica0utY9T3rlS0OgwdFF93MCCZApr2/+jOGGgwxG7zb2UBbkuvK+6iQtbaQInpJ77PgN9Yy8/v/dqbAISzKPhFMAVPy6iMTKE9pJPdljHb3nfg42wMMMplhAoGAYV2r3F9FNNY+E1J82D/hUf8yAZzxNhx9bSdjTlnc1BfYpkSktTalM8qZz4PMK12SV+Z49UeamnUPXh5aQZHlCH9p4KZtE2khDWUWNSZ4/qWfoE1CHDRhl9wbmEds+7/YnzzdxOF/Fb9hCbK1IhlhUvIw+rjHnMGlu58idGsnmgECgYAk+2mWAoGUaQdgPHc0Ts8AiZ1CB2HcWEakFD4yYfVYL107OkxfSXd7dlaVklCHbHaMUYuT4euIfJzXfaTjEnImqQu2hs9u1yTyJHKwjj9gyWHYfcr4byiXjKnbwMkNCrrHWMXCKZ3/F0FQWRE9lsIHZYkFUUUoZYmSorbBf815HQ==";
......@@ -104,8 +102,8 @@ public class OrderAdapter {
private ShoppingCartAdapter shoppingCartAdapter;
@Autowired
private CacheOpenPlatformPartnerWxappConfigManager cacheWxappConfigManager;
@Autowired
private RedisCache redisCache;
// @Autowired
// private RedisCache redisCache;
@Autowired
private OrderCommonService orderCommonService;
......@@ -117,7 +115,7 @@ public class OrderAdapter {
* @return
*/
public BaseCreateOrderRequest convent2CreateOrderDto(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto,StoreResponse.BizVO storeResponseDto) {
UserDeliveryInfoDto deliveryInfoDto = createOrderVo.getUserDeliveryInfoDto();
// UserDeliveryInfoDto deliveryInfoDto = createOrderVo.getUserDeliveryInfoDto();
BaseCreateOrderRequest createOrderDto = getCreateOrderDto(createOrderVo);
OrderTaskReq orderTask = null;
if(StringUtils.isNotEmpty(createOrderVo.getTakeMealTime())){
......@@ -196,7 +194,7 @@ public class OrderAdapter {
}
Long scoreReduceAmount = shoppingCartGoodsDto.getScoreReduceAmount() != null ? shoppingCartGoodsDto.getScoreReduceAmount() : 0;
if (scoreReduceAmount > 0 && CustomerScoreConstant.SUBSTRACT.getValue().equals(createOrderVo.getUseCustomerScore())) {
Integer reduceScore = shoppingCartGoodsDto.getReduceScore() != null ? shoppingCartGoodsDto.getReduceScore().intValue() : 0;
// Integer reduceScore = shoppingCartGoodsDto.getReduceScore() != null ? shoppingCartGoodsDto.getReduceScore().intValue() : 0;
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("积分扣减")
......@@ -495,13 +493,6 @@ public class OrderAdapter {
String latitude = userDeliveryInfoDto != null ? userDeliveryInfoDto.getUserLatitude() : "";
String longitude = userDeliveryInfoDto != null ? userDeliveryInfoDto.getUserLongitude() : "";
String remark = StringUtils.isNotBlank(createOrderVo.getOrderRemark()) ? createOrderVo.getOrderRemark() : "";
// StringBuffer takeMealTime = new StringBuffer("");
// Date takeMealDate = null;
// if (StringUtils.isNotBlank(createOrderVo.getTakeMealTime())) {
// takeMealTime = takeMealTime.append(DateUtil.convert2String(new Date(), "yyyy-MM-dd"))
// .append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
// takeMealDate = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
// }
BaseCreateOrderRequest createOrderDto = new BaseCreateOrderRequest();
createOrderDto.setCompanyId(createOrderVo.getPartnerId());
createOrderDto.setShopId(createOrderVo.getShopId());
......@@ -557,15 +548,7 @@ public class OrderAdapter {
String latitude = userDeliveryInfoDto != null ? userDeliveryInfoDto.getUserLatitude() : "";
String longitude = userDeliveryInfoDto != null ? userDeliveryInfoDto.getUserLongitude() : "";
String remark = StringUtils.isNotBlank(createOrderVo.getOrderRemark()) ? createOrderVo.getOrderRemark() : "";
// StringBuffer takeMealTime = new StringBuffer("");
CreateFatherSonOrderRequest.OrderInfo productOrderInfo = new CreateFatherSonOrderRequest.OrderInfo();
// Date takeMealDate = null;
// if (StringUtils.isNotBlank(createOrderVo.getTakeMealTime())) {
// takeMealTime = takeMealTime.append(DateUtil.convert2String(new Date(), "yyyy-MM-dd"))
// .append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
// takeMealDate = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
// productOrderInfo.setOrderTask(saveOrderTaskReq(orderWarnTime,takeMealDate.getTime()));
// }
productOrderInfo.setPartnerId(createOrderVo.getPartnerId());
productOrderInfo.setShopId(createOrderVo.getShopId());
productOrderInfo.setShopName(createOrderVo.getStoreName());
......@@ -593,10 +576,6 @@ public class OrderAdapter {
productOrderInfo.setAmount(0L);
productOrderInfo.setBarCounter(createOrderVo.getTableNumber());
productOrderInfo.setOrderClient(OrderClientType.SAAS.getIndex());
// if (StringUtils.isNotBlank(createOrderVo.getTakeMealTime())) {
// takeMealTime = takeMealTime.append(DateUtil.convert2String(new Date(), "yyyy-MM-dd"))
// .append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
// }
ArrayList<CreateOrderAccountRequest> orderAccountDtos = new ArrayList<>();
long deliveryAmount = 0;
long discountDeliveryAmount = 0;
......@@ -665,7 +644,7 @@ public class OrderAdapter {
}
Long scoreReduceAmount = shoppingCartGoodsDto.getScoreReduceAmount() != null ? shoppingCartGoodsDto.getScoreReduceAmount() : 0;
if (scoreReduceAmount > 0 && CustomerScoreConstant.SUBSTRACT.getValue().equals(createOrderVo.getUseCustomerScore())) {
Integer reduceScore = shoppingCartGoodsDto.getReduceScore() != null ? shoppingCartGoodsDto.getReduceScore().intValue() : 0;
// Integer reduceScore = shoppingCartGoodsDto.getReduceScore() != null ? shoppingCartGoodsDto.getReduceScore().intValue() : 0;
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("积分扣减")
......@@ -741,15 +720,6 @@ public class OrderAdapter {
orderAccountDtos.add(createOrderAccountDto);
}
memberOrderInfo.setAccounts(orderAccountDtos);
/* List<CreateOrderProductRequest.ProductDiscount> memberProductList = new ArrayList<>();
CreateOrderProductRequest.ProductDiscount memberProduct = new CreateOrderProductRequest.ProductDiscount();
memberProduct.setQueryOrderAccountType(QueryOrderAccountType.CARD_DISCOUNT_AMOUNT);
memberProduct.setDiscountPrice(cardDiscountAmount);
List<CreateOrderProductRequest> products = new ArrayList<>();
CreateOrderProductRequest product = new CreateOrderProductRequest();
product.setDiscountList(memberProductList);
products.add(product);
memberOrderInfo.setProducts(products);*/
return memberOrderInfo;
}
......@@ -937,15 +907,6 @@ public class OrderAdapter {
responseVo.setTakeOut(0);
responseVo.setTakeOutDesc("");
}
/*
if (OrderType.COLLECT_GOODS.getCode().equals(ordersBean.getType())) {
responseVo.setTakeOut(1);
responseVo.setTakeOutDesc("打包带走");
} else {
responseVo.setTakeOut(0);
responseVo.setTakeOutDesc("店内就餐");
}
*/
responseVo.setTableNumber(ordersBean.getBarCounter());
responseVo.setPayStatus(ordersBean.getPayStatus());
responseVo.setPayStatusDesc(Optional.ofNullable(PayStatus.getByCode(ordersBean.getPayStatus()))
......@@ -1749,7 +1710,6 @@ public class OrderAdapter {
}
//优惠券满减总优惠
Long couponFull = couponDiscount + fullReduction;
// Long saleTotalAmount = originalTotalAmount - discountTotalAmount;
productVo.setOriginalTotalAmount(originalTotalAmount);
Long saleTotalAmount = productBean.getSettlementPrice() + couponFull;
productVo.setSaleTotalAmount(saleTotalAmount);
......@@ -1764,14 +1724,6 @@ public class OrderAdapter {
}
public OrderRefundRequestDto convent2OrderRefundRequestDto(OrderRefundVo orderRefundVo, String orderId) {
OrderRefundRequestDto orderRefundRequestDto = new OrderRefundRequestDto();
orderRefundRequestDto.setOrderId(orderId);
orderRefundRequestDto.setReason(orderRefundVo.getReason());
orderRefundRequestDto.setRemark(orderRefundVo.getRemarks());
return orderRefundRequestDto;
}
public com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest getOrderPayRefundRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, Long refundId, String fatherOrderId) {
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = new com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest();
orderPayRefundRequest.setOrgTransId(fatherOrderId);
......@@ -1789,7 +1741,6 @@ public class OrderAdapter {
public CancelOrderRequest convent2CancelOrderRequest(String orderId, String partnerId, AfterSalesType afterSalesType,
String reason, String trackingNo, String refundId) {
//Long refund_id = System.currentTimeMillis();
CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
cancelOrderRequest.setOrderId(orderId);
cancelOrderRequest.setPartnerId(partnerId);
......@@ -1827,7 +1778,6 @@ public class OrderAdapter {
orderPrintDto.setDeliveryTypeDesc("自配送");
}
orderPrintDto.setRemark(orderBean.getRemark());
// List<ProductBean> productBeans = orderBean.getProductList().stream().filter(p -> StringUtils.isEmpty(p.getParentProductId())).collect(Collectors.toList());
Integer count = orderBean.getProductList().stream().map(QueryOrdersResponseDto.DataBean.OrderBean.ProductBean::getNumber).reduce(Integer::sum).get();
orderPrintDto.setProductTotalAmount(count);
Long productAmount = orderBean.getProductList().stream().map(p -> p.getPrice() * p.getNumber()).reduce(Long::sum).get();
......@@ -1880,41 +1830,6 @@ public class OrderAdapter {
productVO.setSonProducts(comboProductVOs);
products.add(productVO);
}
// // 套餐商品map key=组装ParentProductId v=订单结构的商品信息
// Map<String, QueryOrdersResponseDto.DataBean.OrderBean.ProductBean> map = productBeans.stream().filter(productBean ->
// productBean.getProductType() != null && productBean.getProductType() == 6)
// .collect(Collectors.toMap(p -> p.getProductId() + "_" + p.getSequence(), p -> p));
// //套餐商品map key=ParentProductId v=打印的套餐商品
// Map<String, OrderPrintDto.ProductsBean> map2 = new HashMap<>();
//
// productBeans.stream().forEach((QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean) -> {
// OrderPrintDto.ProductsBean productBean1 = getProductBean(productBean);
//
// QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean2 = map.get(productBean.getParentProductId());
// //套餐子商品
// if (productBean2 != null) {
// OrderPrintDto.ProductsBean productsBean = map2.get(productBean.getParentProductId());
// List<OrderPrintDto.ProductsBean> sonProducts;
// if (productsBean != null) {
// sonProducts = productsBean.getSonProducts();
// sonProducts.add(productBean1);
// productsBean.setSonProducts(sonProducts);
// map2.put(productBean.getParentProductId(), productsBean);
// } else {
// OrderPrintDto.ProductsBean productBean3 = getProductBean(productBean2);
// sonProducts = productBean3.getSonProducts();
// sonProducts.add(productBean1);
// map2.put(productBean.getParentProductId(), productBean3);
// }
// }
// if ((StringUtils.isBlank(productBean.getParentProductId()) || "0".equals(productBean.getParentProductId()))
// && productBean.getProductType() != 6) {
// products.add(productBean1);
// }
//
// });
// products.addAll(map2.values());
return products;
}
......@@ -1943,6 +1858,7 @@ public class OrderAdapter {
productBean1.setSonProducts(new ArrayList<>());
return productBean1;
}
//申请
public void setApplyRefundDesc(OrderViewStatusDto orderViewStatusDto, QueryOrdersResponse.DataBean.OrderBean orderBean) {
orderViewStatusDto.setOrderStatus(orderBean.getStatus());
......@@ -1951,6 +1867,7 @@ public class OrderAdapter {
orderViewStatusDto.setRefundStatusText("商家会处理退款申请,请稍后");
orderViewStatusDto.setButtonContactPartner(true);
}
//同意
public void setAgreeRefundDesc(OrderViewStatusDto orderViewStatusDto, QueryOrdersResponse.DataBean.OrderBean orderBean) {
orderViewStatusDto.setOrderStatus(orderBean.getStatus());
......@@ -1990,7 +1907,6 @@ public class OrderAdapter {
createOrderProductDemoDto.setProductType(cartGoodsDetailDto.getProductType());
createOrderProductDemoDto.setParentProductId(cartGoodsDetailDto.getParentProductId());
createOrderProductDemoDto.setIsFixedProduct(cartGoodsDetailDto.getIsFixedProduct());
// createOrderProductDemoDto.setIsFixedProduct(false);
createOrderProductDemoDto.setCustomerCode(cartGoodsDetailDto.getCustomerCode());
createOrderProductDemoDto.setHasStockProudct(cartGoodsDetailDto.isStockLimit());
createOrderProductDemoDto.setWeight(cartGoodsDetailDto.getWeight());
......@@ -2339,47 +2255,6 @@ public class OrderAdapter {
}
/**
* 获取自定义信息
*/
// public OrderExtInfoDTO getOrderExtInfo(OrderPayResponse orderPayResponse, OrderExtInfoDTO orderExtInfoDto) {
// orderExtInfoDto.setOpenid(orderPayResponse.getOpenId());
// String prepayId = "";
// // StringUtils 依赖修改
// if (orderPayResponse.getPayOrder() != null && !StringUtils.isEmpty(orderPayResponse.getPayOrder().getPackageX())) {
// String[] prepayIds = orderPayResponse.getPayOrder().getPackageX().split("=");
// prepayId = prepayIds.length > 1 ? prepayIds[1] : "";
// }
// orderExtInfoDto.setPrepayId(prepayId);
//// orderExtInfoDto.setAppid(orderPayResponse.getWxAppid());
//// orderExtInfoDto.setServiceTime(orderEditInfo.getServiceTime());
//// orderExtInfoDto.setPushOrderTime(orderEditInfo.getPushOrderTime());
//// orderExtInfoDto.setSessionId(orderEditInfo.getSessionId());
//// orderExtInfoDto.setVersion(orderEditInfo.getVersion());
//// orderExtInfoDto.setRuleId(orderEditInfo.getRuleId());
// return orderExtInfoDto;
// }
/**
* 转换前端支付需要的信息
*
* @param orderPayResponse
* @return
*/
// public CreateOrderFlowResponse.CreateOrderResponseVo convent2CreateOrderResponseVo(OrderPayResponse orderPayResponse) {
// CreateOrderFlowResponse.CreateOrderResponseVo createOrderResponseVo = new CreateOrderFlowResponse.CreateOrderResponseVo();
// createOrderResponseVo.setOrderId(orderPayResponse.getOrderId());
// createOrderResponseVo.setWxAppid(orderPayResponse.getWxAppid());
// createOrderResponseVo.setFmId(orderPayResponse.getFmId());
// OrderPayResponse.PayOrderBean payOrderBean = orderPayResponse.getPayOrder();
// createOrderResponseVo.setTimestamp(payOrderBean == null ? "" : payOrderBean.getTimestamp());
// createOrderResponseVo.setNonceStr(payOrderBean == null ? "" : payOrderBean.getNonceStr());
// createOrderResponseVo.setPackageX(payOrderBean == null ? "" : payOrderBean.getPackageX());
// createOrderResponseVo.setSignType(payOrderBean == null ? "" : payOrderBean.getSignType());
// createOrderResponseVo.setSign(payOrderBean == null ? "" : payOrderBean.getSign());
// return createOrderResponseVo;
// }
/**
* 父子订单转换前端支付需要的信息
*
* @param orderPayResponse
......@@ -2690,45 +2565,45 @@ public class OrderAdapter {
}
public OrderTaskReq saveOrderTaskReq(String orderWarnTime, Long gmtExpect) {
OrderTaskReq orderTaskReq = new OrderTaskReq();
Date date = new Date(gmtExpect);
long timeStamp = getMinTime(orderWarnTime) * 60 * 1000;
Date warnDate = new Date(gmtExpect-timeStamp);
orderTaskReq.setTaskTime(DateUtil.convert2String(date,DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
orderTaskReq.setProcessingTime(DateUtil.convert2String(warnDate,DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
return orderTaskReq;
}
// public OrderTaskReq saveOrderTaskReq(String orderWarnTime, Long gmtExpect) {
// OrderTaskReq orderTaskReq = new OrderTaskReq();
// Date date = new Date(gmtExpect);
// long timeStamp = getMinTime(orderWarnTime) * 60 * 1000;
// Date warnDate = new Date(gmtExpect-timeStamp);
// orderTaskReq.setTaskTime(DateUtil.convert2String(date,DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// orderTaskReq.setProcessingTime(DateUtil.convert2String(warnDate,DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// return orderTaskReq;
// }
public Integer getMinTime(String code) {
Integer minTime = 0;
if(StringUtils.isBlank(code)){
return minTime;
}
switch (code) {
case "1":
minTime = 15;
break;
case "2":
minTime = 30;
break;
case "3":
minTime = 45;
break;
case "4":
minTime = 60;
break;
case "5":
minTime = 5;
break;
case "6":
minTime = 10;
break;
default:
minTime = 0;
}
return minTime;
}
// public Integer getMinTime(String code) {
// Integer minTime = 0;
// if(StringUtils.isBlank(code)){
// return minTime;
// }
// switch (code) {
// case "1":
// minTime = 15;
// break;
// case "2":
// minTime = 30;
// break;
// case "3":
// minTime = 45;
// break;
// case "4":
// minTime = 60;
// break;
// case "5":
// minTime = 5;
// break;
// case "6":
// minTime = 10;
// break;
// default:
// minTime = 0;
// }
// return minTime;
// }
/**
* 新老订单类型转换
......
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.SellCouponCreateOrderVo;
import cn.freemud.service.impl.SellCouponOrderServiceImpl;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
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;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CreateOrderController
* @Package cn.freemud.controller
* @Description:
* @author: ping1.wu
* @date: 2020/5/21 17:16
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Slf4j
@RequestMapping("/order")
@RestController
@Validated
public class CreateOrderController {
@Autowired
private SellCouponOrderServiceImpl sellCouponOrderService;
/**
* 卖券订单创建
*/
@ApiAnnotation(logMessage = "sellCouponOrderCreate")
@PostMapping("/sellCouponOrder/create")
public BaseResponse sellCouponOrderCreate(@Validated @LogParams @RequestBody SellCouponCreateOrderVo requestVo) {
return sellCouponOrderService.createOrder(requestVo);
}
}
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
import javax.validation.constraints.Pattern;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: SellCouponCreateOrderVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: ping1.wu
* @date: 2020/5/21 17:27
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class SellCouponCreateOrderVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
@NotEmpty(message = "shopId 门店号不能为空")
private String shopId;
//一键买券必传
@NotEmpty(message = "skuId 不能为空")
private String skuId;
/**
* svc 储值卡支付使用
*/
private String cardCode;
@NotEmpty(message = "menuType 不能为空")
private String menuType;
/**
* form_id 用于金额是0的情况,支付宝模板消息需要传
*/
private String formId;
/**
* 业务类型
*/
@NotEmpty(message = "bizType 业务类型不能为空")
private String bizType;
/**
* 版本号
*/
@NotEmpty(message = "version 版本号不能为空")
private String version;
}
......@@ -115,12 +115,24 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
//校验会员svc卡信息
checkCardCode(createOrderVo.getPartnerId(),userLoginInfoDto.getMemberId(),createOrderVo.getCardCode(),trackingNo);
checkCardCode(createOrderVo.getPartnerId(),userLoginInfoDto.getMemberId(),createOrderVo.getCardCode());
createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto;
}
public AssortmentCustomerInfoVo checkOrderByMemberNew(String sessionId, String cardCode) {
// 通过sessionId查询缓存中会员id
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
//校验会员svc卡信息
checkCardCode(userLoginInfoDto.getPartnerId(),userLoginInfoDto.getMemberId(),cardCode);
return userLoginInfoDto;
}
/**
* 查询门店信息
*/
......@@ -507,14 +519,14 @@ public class CheckOrder {
}
public void checkCardCode(String partnerId,String memberId,String cardCode,String trackingNo){
public void checkCardCode(String partnerId,String memberId,String cardCode){
if(StringUtils.isBlank(cardCode)){
return;
}
StatisticalPropertyRequest request = new StatisticalPropertyRequest();
request.setPartnerId(partnerId);
request.setMemberId(memberId);
BaseResponse<List<GetSvcInfoByMemberIdResponse>> responseDTO = memberPropertyService.getSvcInfoByMemberId(request,trackingNo);
BaseResponse<List<GetSvcInfoByMemberIdResponse>> responseDTO = memberPropertyService.getSvcInfoByMemberId(request,LogThreadLocal.getTrackingNo());
if (!ResponseResult.SUCCESS.getCode().equals(responseDTO.getCode()) || responseDTO.getData() == null
|| responseDTO.getData().size() == 0 ) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
......
......@@ -149,8 +149,8 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
@Autowired
private OrderCommonService orderCommonService;
// @Autowired
// private OrderCommonService orderCommonService;
@Autowired
private FMAssistantCloudPrintClient fmAssistantCloudPrintClient;
@Autowired
......@@ -175,8 +175,8 @@ public class OrderServiceImpl implements Orderservice {
private ActivityAdapter activityAdapter;
@Autowired
private CouponAdapter couponAdapter;
@Autowired
private ActivitySdkAdapter activitySdkAdapter;
// @Autowired
// private ActivitySdkAdapter activitySdkAdapter;
@Autowired
private MealCacheManager mealCacheManager;
//聚合订单服务
......@@ -214,8 +214,8 @@ public class OrderServiceImpl implements Orderservice {
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
@Autowired
private PaymentNewClient paymentNewClient;
@Autowired
private MallOrderServiceImpl mallOrderService;
// @Autowired
// private MallOrderServiceImpl mallOrderService;
@Autowired
private CacheOpenPlatformPartnerWxappConfigManager cacheOpenPlatformPartnerWxappConfigManager;
@Autowired
......@@ -422,9 +422,7 @@ public class OrderServiceImpl implements Orderservice {
this.sendPaySuccessMessage(orderBean);
}
// 有云打印机 打印小票,杯贴
//GetStoreCloudPrintResponseDto storeCloudPrint;
try {
//storeCloudPrint = fmCloudPrintClient.getStoreCloudPrint(new GetStoreCloudPrintDto(partnerId, storeId));
List<AssortmentCloudPrinter> storePrinters = cloudPrinterManager.getStorePrinters(partnerId, storeId);
if (null != storePrinters && storePrinters.size() > 0) {
boolean printerStatus = false;
......@@ -762,8 +760,6 @@ public class OrderServiceImpl implements Orderservice {
});
}
// Map<String, Object> responseMap = Maps.newTreeMap();
responseMap.put("count", queryOrderResponse.getData() == null ? 0 : queryOrderResponse.getData().getCount());
responseMap.put("list", queryOrderResponseVos);
//只有有订单时才显示用户自定义取餐信息
......@@ -1058,8 +1054,6 @@ public class OrderServiceImpl implements Orderservice {
//// log.error("deleteOrder is error , deleteOrderDto :{}", deleteOrderDto);
// return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR);
// }
// 删除订单 通知活动添加商品库存
//backOrdersNotifyActivity(orderBean, Arrays.asList(TransTypeEnum.ACTIVITY.getCode(), TransTypeEnum.PRODUCT.getCode()));
// TODO: 2019/9/10 删除订单通知
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
return ResponseUtil.success();
......@@ -1234,22 +1228,22 @@ public class OrderServiceImpl implements Orderservice {
return null;
}
public void backOrdersNotifyActivity(OrderBean orderBean, List<Integer> transType) {
LogUtil.info("backOrdersNotifyActivity", gson.toJson(orderBean), gson.toJson(transType));
if (orderBean == null) {
return;
}
// 删除订单 通知活动添加商品库存
ActivityCancelStockRequestDto activityCancelStockRequestDto = activityAdapter.convert2ActivityCancelStockRequestDto(
orderBean, transType);
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersNotifyActivity", orderBean.getOid(), backOrdersChangeOrderStatusConsumerQueue);
MQMessage<ActivityCancelStockRequestDto> message = new MQMessage<>(header, activityCancelStockRequestDto);
mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersChangeOrderStatusConsumerQueue, message);
} catch (Exception e) {
LogUtil.error("ActivityReverse", JSON.toJSONString(activityCancelStockRequestDto), "", e);
}
}
// public void backOrdersNotifyActivity(OrderBean orderBean, List<Integer> transType) {
// LogUtil.info("backOrdersNotifyActivity", gson.toJson(orderBean), gson.toJson(transType));
// if (orderBean == null) {
// return;
// }
// // 删除订单 通知活动添加商品库存
// ActivityCancelStockRequestDto activityCancelStockRequestDto = activityAdapter.convert2ActivityCancelStockRequestDto(
// orderBean, transType);
// try {
// Header header = new Header(MQAction.INSERT.getAction(), "backOrdersNotifyActivity", orderBean.getOid(), backOrdersChangeOrderStatusConsumerQueue);
// MQMessage<ActivityCancelStockRequestDto> message = new MQMessage<>(header, activityCancelStockRequestDto);
// mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersChangeOrderStatusConsumerQueue, message);
// } catch (Exception e) {
// LogUtil.error("ActivityReverse", JSON.toJSONString(activityCancelStockRequestDto), "", e);
// }
// }
public void backOrdersStatusChange(String oid, Integer orderStatus) {
......@@ -1306,55 +1300,6 @@ public class OrderServiceImpl implements Orderservice {
}
}
// /**
// * 用户评价
// *
// * @param requestVo
// * @return
// */
// @Override
// public BaseResponse userOrderEvaluation(AddUserOrderEvaluationRequestVo requestVo) {
// return microSupportClient.addEvaluationDetail(requestVo);
// }
//
// /**
// * 用户评价(新接口)
// *
// * @param requestVo
// * @return
// */
// @Override
// public BaseResponse userOrderEvaluationNew(AddUserOrderEvaluationNewRequestVo requestVo) {
// return microSupportClient.addEvaluationDetailNew(requestVo);
// }
//
// /**
// * 根据订单号查询对应的评价详情
// *
// * @param requestVo
// * @return
// */
// @Override
// public BaseResponse getEvaluationByOrderId(GetEvaluationDetailByOrderIdRequestVo requestVo) {
// return microSupportClient.getEvaluteDetailByOrderId(requestVo);
// }
//
// /**
// * 判断对应的订单有没有评价
// *
// * @param requestVo
// * @return
// */
// @Override
// public BaseResponse getEvaluationStatus(GetEvaluationDetailByOrderIdRequestVo requestVo) {
// return microSupportClient.getEvaluationStatus(requestVo);
// }
//
// @Override
// public BaseResponse getEvaluationStatusNew(GetEvaluationStatusNewRequestVo requestVo) {
// return microSupportClient.getEvaluationStatusNew(requestVo);
// }
@Override
public BaseResponse getRefundReason(GetRefundReasonVo getRefundReasonVo) {
AssortmentCustomerInfoVo customerInfoByObject = customerInfoManager.getCustomerInfoByObject(getRefundReasonVo.getSessionId());
......@@ -1391,7 +1336,6 @@ public class OrderServiceImpl implements Orderservice {
}
OrderBean orderBean = response.getData();
// TODO: 2019/9/9 再次校验是否可以退款 是否需要
// boolean refund = orderAdapter.buildRefundButton(orderBean, wxappId);
String document = OrderRefundConstant.COMMON_DOCUMENT;
if (OrderType.COLLECT_GOODS.getCode().equals(orderBean.getType())) {
return document;
......@@ -1449,15 +1393,6 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 获取缓存用户信息
*/
// private Map<String, Object> getUserInfoMapBySessionId(String sessionId) {
// String redisKey = "saas:user:info:sessionId:" + sessionId;
// Map<String, Object> map = redisCache.getValue(redisKey);
// return map;
// }
/**
* 支付后通知确认返回信息
*/
public String sendPaySuccessNoticeMessage() {
......@@ -1498,41 +1433,6 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 获取自定义信息
*/
// public OrderExtInfoDto getOrderExtInfo(String partnerId, String prepayId, String appid, String appsecret, String openid) {
// OrderExtInfoDto orderExtInfoDto = new OrderExtInfoDto();
// orderExtInfoDto.setOpenid(openid);
// orderExtInfoDto.setPrepayId(prepayId);
// orderExtInfoDto.setAppid(appid);
// orderExtInfoDto.setAppsecret(appsecret);
// String accessToken = getAccessToken(partnerId, appid);
// orderExtInfoDto.setAccessToken(accessToken);
// orderExtInfoDto.setExpireDate("");
// return orderExtInfoDto;
// }
/**
* 获取accessToken
*/
public String getAccessToken(String partnerId, String appid) {
if (StringUtils.isBlank(partnerId) || StringUtils.isBlank(appid)) {
return "";
}
String accessToken = "";
GetWxappAccessTokenDto getWxappAccessTokenDto = new GetWxappAccessTokenDto();
getWxappAccessTokenDto.setAppId(appid);
getWxappAccessTokenDto.setParentId(Long.valueOf(WxappMessageTemplateType.PAY_SUCCESS.getParentId()));
// GetWxappAccessTokenResponseDto responseDto = openPlatformClient.getAccessTokenAndTemplateId(getWxappAccessTokenDto);
// if (ResponseResult.SUCCESS.getCode().equals(responseDto.getCode()) && responseDto.getResult() != null) {
// accessToken = responseDto.getResult().getAccessToken();
// }
// LogUtil.info("getAccessToken end", gson.toJson(getWxappAccessTokenDto), gson.toJson(responseDto));
return accessToken;
}
/**
* 发送支付成功模板消息
*
* @param orderBean
......@@ -1569,24 +1469,24 @@ public class OrderServiceImpl implements Orderservice {
/**
* 异常状态退款流程
*/
public void orderRefund(OrderBean orderBean, String refundReason, String openid, String oid) {
String storeId = orderBean.getShopId();
String partnerId = orderBean.getCompanyId();
OrderRefundVo orderRefundVo = new OrderRefundVo();
orderRefundVo.setOid(orderBean.getOid());
orderRefundVo.setPartnerId(orderBean.getCompanyId());
orderRefundVo.setReason(refundReason);
//系统异常取消订单
partnerNoTakeOrder(orderRefundVo, orderBean, oid,AfterSalesType.SYSTEM_CANCEL,true);
// 发送消息到消息中心推送给pos前端
PushMessageNoticeDto pushMessageNoticeDto = messageNoticeAdapter.convent2PushMessageNoticeDto(2, partnerId, storeId,
null, null, null, null);
String messageNoticeResponse = messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo());
// 退单冲正商品库存,冲正商品券,冲正活动库存
//backOrdersNotifyActivity(orderBean, Arrays.asList(TransTypeEnum.ACTIVITY.getCode(), TransTypeEnum.COUPON.getCode(), TransTypeEnum.PRODUCT.getCode()));
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
}
// public void orderRefund(OrderBean orderBean, String refundReason, String openid, String oid) {
// String storeId = orderBean.getShopId();
// String partnerId = orderBean.getCompanyId();
// OrderRefundVo orderRefundVo = new OrderRefundVo();
// orderRefundVo.setOid(orderBean.getOid());
// orderRefundVo.setPartnerId(orderBean.getCompanyId());
// orderRefundVo.setReason(refundReason);
// //系统异常取消订单
// partnerNoTakeOrder(orderRefundVo, orderBean, oid,AfterSalesType.SYSTEM_CANCEL,true);
// // 发送消息到消息中心推送给pos前端
// PushMessageNoticeDto pushMessageNoticeDto = messageNoticeAdapter.convent2PushMessageNoticeDto(2, partnerId, storeId,
// null, null, null, null);
// String messageNoticeResponse = messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo());
// // 退单冲正商品库存,冲正商品券,冲正活动库存
// //backOrdersNotifyActivity(orderBean, Arrays.asList(TransTypeEnum.ACTIVITY.getCode(), TransTypeEnum.COUPON.getCode(), TransTypeEnum.PRODUCT.getCode()));
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//
// }
/**
* 获取父子订单商品第三方商品编号
......@@ -1904,7 +1804,6 @@ public class OrderServiceImpl implements Orderservice {
AfterSalesType.SYSTEM_CANCEL, "获取预支付失败", trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
// TODO: 2019/9/10 hubowen mq推送变更
//backOrdersNotifyActivity(orderBean, Arrays.asList(TransTypeEnum.PRODUCT.getCode(),TransTypeEnum.ACTIVITY.getCode()), backOrdersNotifyActivityQueue, backOrdersNotifyActivityExchange);
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//svc 卡支付失败
if (StringUtils.isNotBlank(cardCode)) {
......@@ -1943,7 +1842,6 @@ public class OrderServiceImpl implements Orderservice {
request.setCode(cardCode);
request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId());
// request.setStoreId("10086");
request.setAmount(orderBean.getAmount());
request.setTransId(transId);
request.setStationId("1");
......@@ -1980,7 +1878,6 @@ public class OrderServiceImpl implements Orderservice {
}
private PaymentRequest orderBodyConvertToPaymentBody(String openId, String partnerId,String appId, String payCode) {
// String wxAppId = userLoginInfoDto.getWxAppId();
//设置支付信息
PaymentRequest paymentRequest = new PaymentRequest();
paymentRequest.setOpenId(openId);
......@@ -2053,47 +1950,35 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 获取桌号
*/
// public String getTableNumber(String partnerId, String shopId, String tableNumber) {
// StoreTableNumber storeTableNumber = storeTableNumberManager.selectOne(partnerId, shopId, tableNumber);
// if (storeTableNumber == null) {
// return "";
// }
// return tableNumber;
// }
/**
* 冲正商品库存,活动库存,商品库存,订单取消,退款
*
* @param orderBean 订单信息
* @param transType TransTypeEnum 冲正类型
*/
public void backOrdersNotifyActivity(QueryOrdersResponse.DataBean.OrderBean orderBean, List<Integer> transType, String backOrdersNotifyActivityQueue,
String backOrdersNotifyActivityExchange) {
LogUtil.info("backOrdersNotifyActivity", JSONObject.toJSONString(transType), null);
if (orderBean == null) {
return;
}
// 删除订单 通知活动添加商品库存
ActivityCancelStockRequest activityCancelStockRequestDto = activitySdkAdapter.convert2ActivityCancelStockRequestDto(
orderBean, transType);
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersNotifyActivity", orderBean.getOid(), backOrdersNotifyActivityQueue);
MQMessage<ActivityCancelStockRequest> message = new MQMessage<>(header, activityCancelStockRequestDto);
mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersNotifyActivityQueue, message);
} catch (Exception e) {
//TODO 邮件告警
LogUtil.error("backOrdersNotifyActivity_error", backOrdersNotifyActivityExchange, backOrdersNotifyActivityQueue, e);
}
}
// public void backOrdersNotifyActivity(QueryOrdersResponse.DataBean.OrderBean orderBean, List<Integer> transType, String backOrdersNotifyActivityQueue,
// String backOrdersNotifyActivityExchange) {
// LogUtil.info("backOrdersNotifyActivity", JSONObject.toJSONString(transType), null);
// if (orderBean == null) {
// return;
// }
// // 删除订单 通知活动添加商品库存
// ActivityCancelStockRequest activityCancelStockRequestDto = activitySdkAdapter.convert2ActivityCancelStockRequestDto(
// orderBean, transType);
// try {
// Header header = new Header(MQAction.INSERT.getAction(), "backOrdersNotifyActivity", orderBean.getOid(), backOrdersNotifyActivityQueue);
// MQMessage<ActivityCancelStockRequest> message = new MQMessage<>(header, activityCancelStockRequestDto);
// mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersNotifyActivityQueue, message);
// } catch (Exception e) {
// //TODO 邮件告警
// LogUtil.error("backOrdersNotifyActivity_error", backOrdersNotifyActivityExchange, backOrdersNotifyActivityQueue, e);
// }
// }
/**
* 编辑订单,保持预支付信息
*/
public BaseResponse updateOrderInfo(OrderPayResponse orderPayResponse, OrderExtInfoDto orderExtInfo
, QueryOrdersResponse.DataBean.OrderBean orderBean, String trackingNo) {
// orderExtInfo = orderAdapter.getOrderExtInfo(orderPayResponse, orderExtInfo);
orderExtInfo.setOpenid(orderPayResponse.getOpenId());
orderExtInfo.setFmId(orderPayResponse.getFmId());
orderExtInfo.setAppid(orderPayResponse.getWxAppid());
......@@ -2120,7 +2005,6 @@ public class OrderServiceImpl implements Orderservice {
AfterSalesType.SYSTEM_CANCEL, "编辑订单支付信息失败", trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
//如果编辑订单支付信息失败,冲正
// backOrdersNotifyActivity(orderBean, Arrays.asList(TransTypeEnum.PRODUCT.getCode(),TransTypeEnum.ACTIVITY.getCode()), backOrdersNotifyActivityQueue, backOrdersNotifyActivityExchange);
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
return ResponseUtil.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
......@@ -2202,9 +2086,7 @@ public class OrderServiceImpl implements Orderservice {
*/
private void printApplyRefundSmallTicket(OrderBean orderBean, OrderRefundVo orderRefundVo) {
// 有云打印机 打印小票,杯贴
//GetStoreCloudPrintResponseDto storeCloudPrint;
try {
//storeCloudPrint = fmCloudPrintClient.getStoreCloudPrint(new GetStoreCloudPrintDto(orderBean.getCompanyId(), orderBean.getShopId()));
List<AssortmentCloudPrinter> storePrinters = cloudPrinterManager.getStorePrinters(orderBean.getCompanyId(), orderBean.getShopId());
if (null != storePrinters && storePrinters.size() > 0) {
boolean printerStatus = false;
......@@ -2400,7 +2282,6 @@ public class OrderServiceImpl implements Orderservice {
* 扫脸支付
*/
public OrderPayResponse facePay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo) {
// CodePayRequest request = new CodePayRequest();
FacePayRequestDto request = new FacePayRequestDto();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
......
package cn.freemud.service.impl;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.vo.SellCouponCreateOrderVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO;
import com.freemud.application.sdk.api.couponcenter.online.domain.AppKeyVO;
import com.freemud.application.sdk.api.couponcenter.online.domain.DetailVO;
import com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest;
import com.freemud.application.sdk.api.couponcenter.online.request.CouponDetailRequest;
import com.freemud.application.sdk.api.couponcenter.online.request.PartnerRequest;
import com.freemud.application.sdk.api.couponcenter.online.response.CouponDetailResponse;
import com.freemud.application.sdk.api.couponcenter.online.service.FMActiveSdkService;
import com.freemud.application.sdk.api.couponcenter.online.service.OnlineCouponSdkService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.*;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.productcenter.request.product.GetProductInfoRequest;
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.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
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.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: SellCouponOrderServiceImpl
* @Package cn.freemud.service.impl
* @Description:
* @author: ping1.wu
* @date: 2020/5/21 17:49
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
@Slf4j
public class SellCouponOrderServiceImpl {
@Autowired
private CheckOrder checkOrder;
@Autowired
private MenuService menuService;
@Autowired
private OrderSdkService orderSdkService;
@Autowired
private OrderServiceImpl orderservice;
@Autowired
private StoreCenterService storeCenterService;
@Autowired
private OrderAdapter orderAdapter;
@Autowired
private OrderSdkAdapter orderSdkAdapter;
@Value("${coupon.app.id}")
private String appId;
String SUCCESS = "100";
/**
* 卖券订单创建
*/
public BaseResponse createOrder(SellCouponCreateOrderVo requestVo){
// 查询用户信息、校验svc卡
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMemberNew(requestVo.getSessionId(), requestVo.getCardCode());
String trackingNo = LogThreadLocal.getTrackingNo();
String partnerId = userLoginInfoDto.getPartnerId();
String storeId = requestVo.getShopId();
//查询门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, storeId,null);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
if (storeResponse == null || storeResponse.getStatusCode() != 100 || storeResponse.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO();
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
checkOrder.checkOrderByStore(storeResponseDto,null);
GetProductInfoRequest request = new GetProductInfoRequest();
request.setChannel(requestVo.getMenuType());
request.setPartnerId(partnerId);
request.setProductInfoType(2);
request.setShopId(storeId);
request.setProductIds(Lists.newArrayList(requestVo.getSkuId()));
//获取商品(里面的活动)
com.freemud.application.sdk.api.base.BaseResponse<GetProductInfosResponse> productInfosByIds = menuService.getProductInfosByIds(request, trackingNo);
if(!SUCCESS.equals(productInfosByIds.getCode()) || productInfosByIds.getData() == null || CollectionUtils.isEmpty(productInfosByIds.getData().getProducts())){
return ResponseUtil.error(ResponseResultEnum.GET_PRODUCT_INFOS_ERROR.getCode(),ResponseResultEnum.GET_PRODUCT_INFOS_ERROR.getMessage());
}
List<GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType> productBindingCoupons = productInfosByIds.getData().getProducts().get(0).getProductBindingCouponTypes();
if(CollectionUtils.isEmpty(productBindingCoupons)){
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
}
List<String> activityCodes = new ArrayList<>();
for (GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType productBindingCouponType : productBindingCoupons){
activityCodes.add(productBindingCouponType.getActivityCode());
}
List<ActiveDetailVO> activeDetailVOS = batchQueryActivityInfo(partnerId, activityCodes, trackingNo);
CreateOrderRequest createOrderRequest = convent2NEWCreateOrderRequest(requestVo,userLoginInfoDto,productInfosByIds.getData(),activeDetailVOS,storeResponse.getBizVO());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse);
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = new CreatePrepayRequestDto();
createPrepayRequestDto.setPartnerId(partnerId);
createPrepayRequestDto.setTransId(orderInfoReqsBaseResponse.getResult().getOrderCode());
createPrepayRequestDto.setWxAppId(userLoginInfoDto.getWxAppId());
createPrepayRequestDto.setOpenId(userLoginInfoDto.getOpenId());
// createPrepayRequestDto.setFaceCode(null);
createPrepayRequestDto.setCardCode(requestVo.getCardCode());
createPrepayRequestDto.setPayCode(null);
createPrepayRequestDto.setFatherOrderBean(createOrderResponse.getData());
createPrepayRequestDto.setProductOrderBean(createOrderResponse.getData());
createPrepayRequestDto.setTotalAmount(createOrderRequest.getSettlementAmount());
createPrepayRequestDto.setCardAmount(0);
OrderExtInfoDto orderExtInfoDto = new OrderExtInfoDto();
String deliveryHoursDayStart = "";
String deliveryHoursDayEnd = "";
if (StringUtils.isNotBlank(storeResponseDto.getDeliveryHoursDay())) {
String[] days = storeResponseDto.getDeliveryHoursDay().split("-");
if (days.length == 2) {
deliveryHoursDayStart = DateUtil.convert2String(new Date(), DateUtil.FORMAT_yyyyMMdd_date) + " " + days[0] + ":00";
// deliveryHoursDayEnd = DateUtil.convert2String(new Date(), DateUtil.FORMAT_yyyyMMdd_date) + " " + days[1] + ":00";
}
}
orderExtInfoDto.setDeliveryHoursDayStart(deliveryHoursDayStart);
orderExtInfoDto.setDeliveryHoursDayEnd(deliveryHoursDayEnd);
orderExtInfoDto.setOpenid(userLoginInfoDto.getOpenId());
orderExtInfoDto.setAppid(userLoginInfoDto.getWxAppId());
orderExtInfoDto.setSessionId(requestVo.getSessionId());
Integer serviceTime = storeResponseDto.getServiceTime();
if (Objects.equals(serviceTime, null)) {
serviceTime = 50;
}
orderExtInfoDto.setServiceTime(serviceTime);
orderExtInfoDto.setVersion(requestVo.getVersion());
// 扩展字段中存储 sessionKey
orderExtInfoDto.setSessionKey(userLoginInfoDto.getSessionKey());
orderExtInfoDto.setFormId(requestVo.getFormId());
orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId());
createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto);
return orderservice.createPrepayOrder(createPrepayRequestDto);
}
/**
* 批量查询活动详情
*
* @param partnerId
* @param activityCodes
* @param trackingNo
* @return
*/
private List<ActiveDetailVO> batchQueryActivityInfo(String partnerId, List<String> activityCodes, String trackingNo) {
String appKey = getAppKey(partnerId, trackingNo);
if (StringUtils.isEmpty(appKey)) {
return null;
}
ActiveBatchQueryRequest activeBatchQueryRequest = new ActiveBatchQueryRequest();
//去重
List<String> activeCodes = new ArrayList<>(new HashSet(activityCodes));
activeBatchQueryRequest.setActiveCode(activeCodes);
activeBatchQueryRequest.setAppSecret(appKey);
activeBatchQueryRequest.setPartnerId(Integer.parseInt(partnerId));
FMActiveSdkService fmActiveSdkService = SDKCommonBaseContextWare.getBean(FMActiveSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<List<ActiveDetailVO>> batchQueryResponse = fmActiveSdkService.batchQueryActivityInfo(activeBatchQueryRequest, trackingNo);
if (batchQueryResponse == null || !SUCCESS.equals(batchQueryResponse.getCode()) || CollectionUtils.isEmpty(batchQueryResponse.getData())) {
return null;
}
return batchQueryResponse.getData();
}
/**
* 查询组织机构
* @param partnerId
* @param storeId
* @return
*/
private List<String> getOrgIds(String partnerId, String storeId) {
GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(partnerId);
request.setStoreCode(storeId);
StoreCenterService storeCenterService = SDKCommonBaseContextWare.getBean(StoreCenterService.class);
com.freemud.application.sdk.api.base.BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && SUCCESS.equals(orgList.getCode())) {
return orgList.getData();
}
return Collections.EMPTY_LIST;
}
/**
* 获取商户秘钥
*
* @param partnerId
* @param trackingNo
* @return
*/
private String getAppKey(String partnerId, String trackingNo) {
RedisCache redisCache = SDKCommonBaseContextWare.getBean(RedisCache.class);
String key = "kgd:coupon:appKey:partner:";
String appKey = redisCache.getValue(key + partnerId);
if (StringUtils.isEmpty(appKey)) {
PartnerRequest partnerRequest = new PartnerRequest();
partnerRequest.setPartnerId(Integer.parseInt(partnerId));
partnerRequest.setAppId(appId);
FMActiveSdkService fmActiveSdkService = SDKCommonBaseContextWare.getBean(FMActiveSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<AppKeyVO> appKeyVOBaseResponse = fmActiveSdkService.getAppKey(partnerRequest, trackingNo);
if (appKeyVOBaseResponse == null || !"100".equals(appKeyVOBaseResponse.getCode())
|| appKeyVOBaseResponse.getData() == null || StringUtils.isEmpty(appKeyVOBaseResponse.getData().getAppKey())) {
return null;
}
appKey = appKeyVOBaseResponse.getData().getAppKey();
redisCache.save(key + partnerId, appKey);
}
return appKey;
}
private CreateOrderRequest convent2NEWCreateOrderRequest(SellCouponCreateOrderVo requestVo,AssortmentCustomerInfoVo userLoginInfoDto,
GetProductInfosResponse productInfosResponse,List<ActiveDetailVO> activeDetailVOS,
StoreResponse.BizVO storeInfo){
CreateOrderRequest request = new CreateOrderRequest();
Integer orderClient = OrderClientType.SAAS.getIndex();
if(UserLoginChannelEnum.ALIPAY.getCode().equals(userLoginInfoDto.getChannel())){
orderClient = OrderClientType.ALIPAY.getIndex();
}
if(UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())){
orderClient = OrderClientType.APP.getIndex();
}
String partnerId = userLoginInfoDto.getPartnerId();
request.setOrderClient(orderClient);
request.setPartnerId(partnerId);
request.setStoreId(requestVo.getShopId());
//买券虚拟订单
request.setBizType(6);
//1:线上支付 2:线下支付
request.setPayType(1);
request.setUserId(userLoginInfoDto.getMemberId());
request.setUserName(userLoginInfoDto.getNickName());
request.setStoreName(storeInfo.getStoreName());
request.setThirdStoreId(storeInfo.getThirdPartCode());
request.setOrderState(1);
request.setPayState(1);
if(StringUtils.isNotBlank(requestVo.getCardCode())){
request.setPayChannel("10102");
request.setPayChannelName("储值卡支付");
}
GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean productBean = productInfosResponse.getProducts().get(0);
//订单原始金额,单位分
//用户在界面上看到的支付金额
request.setSettlementAmount(productBean.getFinalPrice());
//实际支付现金金额,扣除支付自生优惠,单位分`
request.setActualPayAmount(productBean.getFinalPrice());
request.setOriginalAmount(productBean.getOriginalPrice());
request.setOrderType(OrderType.GENERAL_DINE_IN.getIndex());
//商品信息转换
List<OrderItemCreateReq> orderItemList = new ArrayList<>();
OrderItemCreateReq orderItemCreateReq = new OrderItemCreateReq();
orderItemCreateReq.setSalePrice(productBean.getFinalPrice());
orderItemCreateReq.setProductPrice(productBean.getOriginalPrice());
orderItemCreateReq.setSettlementPrice(productBean.getFinalPrice());
orderItemCreateReq.setPartnerId(partnerId);
orderItemCreateReq.setProductId(requestVo.getSkuId());
orderItemCreateReq.setProductSpec(requestVo.getSkuId());
orderItemCreateReq.setProductName(productBean.getName());
orderItemCreateReq.setProductSpecName(productBean.getName());
orderItemCreateReq.setProductPicUrl(productBean.getPicture());
orderItemCreateReq.setProductSeq(1);
orderItemCreateReq.setProductCode(productBean.getProductCode());
orderItemCreateReq.setThirdProductId(productBean.getCustomerCode());
orderItemCreateReq.setProductQuantity(1);
Map<String,List<GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType>> map = new HashMap<>();
map.put("productBindingCoupons",productBean.getProductBindingCouponTypes());
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(map));
orderItemList.add(orderItemCreateReq);
//商品信息赋值
request.setOrderItemList(orderItemList);
//收货人信息转换
List<DeliveryContactInfoCreateReq> deliveryContactInfoList = new ArrayList<>();
DeliveryContactInfoCreateReq deliveryContactInfoCreateReq = new DeliveryContactInfoCreateReq();
//地址类型 1:订单地址 2:售后单地址 3:配送员信息
deliveryContactInfoCreateReq.setRelateObjectType(1);
//联系方式类型 1:取件 2:收件
deliveryContactInfoCreateReq.setInfoType(1);
deliveryContactInfoCreateReq.setContactsName(userLoginInfoDto.getNickName());
deliveryContactInfoCreateReq.setMobile(userLoginInfoDto.getMobile());
deliveryContactInfoCreateReq.setLatitude(null);
deliveryContactInfoCreateReq.setLongitude(null);
deliveryContactInfoCreateReq.setAddressDetail(null);
deliveryContactInfoCreateReq.setProvince(null);
deliveryContactInfoCreateReq.setCity(null);
deliveryContactInfoCreateReq.setRegion(null);
deliveryContactInfoList.add(deliveryContactInfoCreateReq);
request.setDeliveryContactInfoList(deliveryContactInfoList);
//保存门店渠道信息
request.setOrderExtended(orderAdapter.saveStoreInfo(storeInfo));
request.setOperator(userLoginInfoDto.getNickName());
request.setAppId(userLoginInfoDto.getWxAppId());
return request;
}
/**
* 查询券详情
*
* @param partnerId
* @param codes
* @param trackingNo
* @return
*/
private List<DetailVO> getCouponsDetail(String partnerId, String storeId, List<String> codes, String trackingNo) {
String appKey = getAppKey(partnerId, trackingNo);
if (StringUtils.isEmpty(appKey)) {
return null;
}
CouponDetailRequest couponDetailRequest = new CouponDetailRequest();
couponDetailRequest.setCodes(codes);
couponDetailRequest.setMerchantId(partnerId);
couponDetailRequest.setPartnerId(partnerId);
// 券码新增参数:组织机构
couponDetailRequest.setChannelIdList(this.getOrgIds(partnerId, storeId));
OnlineCouponSdkService onlineCouponSdkService = SDKCommonBaseContextWare.getBean(OnlineCouponSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<CouponDetailResponse> couponDetailResponse = onlineCouponSdkService.allDetail(couponDetailRequest, appKey, trackingNo);
if (couponDetailResponse == null || !SUCCESS.equals(couponDetailResponse.getCode()) || couponDetailResponse.getData() == null || CollectionUtils.isEmpty(couponDetailResponse.getData().getDetails())) {
return null;
}
return couponDetailResponse.getData().getDetails();
}
}
......@@ -160,10 +160,10 @@ public class OrderServiceTest {
}
@Test
public void getAccessToken() {
orderService.getAccessToken("1779", "wx2eba2ce69704a6c7");
}
// @Test
// public void getAccessToken() {
// orderService.getAccessToken("1779", "wx2eba2ce69704a6c7");
// }
@Test
......
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