Commit 5326727e by hanghang.wang

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

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
parents 4c8c37d3 09457d05
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<dependency> <dependency>
<artifactId>couponcenter-sdk</artifactId> <artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<version>4.0.0-SNAPSHOT</version> <version>4.1.2-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -234,6 +234,10 @@ public class OrderSdkAdapter { ...@@ -234,6 +234,10 @@ public class OrderSdkAdapter {
List<OrderCostCreateReq> orderCostCreateReqs = new ArrayList<>(); List<OrderCostCreateReq> orderCostCreateReqs = new ArrayList<>();
// 更新订单商品详情信息 // 更新订单商品详情信息
originalAmount = updateOrderItemsAndSettlements(orderItemList, orderSettlementCreateReqList, orderCostCreateReqs, requestVO.getProducts(), requestVO.getAccounts(), requestVO.getCompanyId()); originalAmount = updateOrderItemsAndSettlements(orderItemList, orderSettlementCreateReqList, orderCostCreateReqs, requestVO.getProducts(), requestVO.getAccounts(), requestVO.getCompanyId());
//增加总优惠记录
if (!CollectionUtils.isEmpty(requestVO.getAccounts())) {
addTotalDisaccountData(orderSettlementCreateReqList, requestVO);
}
//商品信息赋值 //商品信息赋值
request.setOrderItemList(orderItemList); request.setOrderItemList(orderItemList);
//订单原始金额,单位分 //订单原始金额,单位分
...@@ -287,6 +291,24 @@ public class OrderSdkAdapter { ...@@ -287,6 +291,24 @@ public class OrderSdkAdapter {
return request; return request;
} }
private void addTotalDisaccountData(List<OrderSettlementCreateReq> orderSettlementCreateReqList, BaseCreateOrderRequest requestVO) {
OrderSettlementCreateReq createReq = new OrderSettlementCreateReq();
createReq.setProductId("0");
createReq.setProductSeq(0);
createReq.setNumber(0);
createReq.setExternalObjectId("");
createReq.setSettlementType(205);
//商家优惠
createReq.setShopDiscountAmount(requestVO.getTotalDiscountAmount());
//结算金额
createReq.setSettlementAmount(requestVO.getAmount());
createReq.setPlatformDiscountAmount(0L);
//是否线上 false:不是 true:是
createReq.setIsOnline(true);
createReq.setExternalObjectName("优惠总金额");
orderSettlementCreateReqList.add(createReq);
}
public com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest convent2NEWCreateMCCafeOrderRequest(BaseCreateOrderRequest requestVO) { public com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest convent2NEWCreateMCCafeOrderRequest(BaseCreateOrderRequest requestVO) {
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest request = new com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest(); com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest request = new com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest();
request.setPartnerId(requestVO.getCompanyId()); request.setPartnerId(requestVO.getCompanyId());
...@@ -3654,4 +3676,83 @@ public class OrderSdkAdapter { ...@@ -3654,4 +3676,83 @@ public class OrderSdkAdapter {
orderStateInfoResp.setData(info); orderStateInfoResp.setData(info);
return orderStateInfoResp; return orderStateInfoResp;
} }
public CouponRequest convert2PreCheckRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts,String openId) {
if (CollectionUtils.isEmpty(accounts)) {
return null;
}
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.COUPON) || account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
return null;
}
CreateOrderAccountRequest accountBean = accountRequest.get();
CouponRequest couponRequest = new CouponRequest();
couponRequest.setReqtype(71);
couponRequest.setVer(Integer.valueOf(Version.VERSION_1));
couponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
ActivityChannelEnum activityChannelEnum = orderTypeEnumConvert2ActivityChannel(orderBean.getOrderType());
if (activityChannelEnum == null) {
activityChannelEnum = ActivityChannelEnum.pickup;
}
couponRequest.setChannel(activityChannelEnum.getCode());
couponRequest.setStation_id("-1");
couponRequest.setOperator_id("-1");
couponRequest.setStore_id(orderBean.getShopId());
couponRequest.setMemberId(orderBean.getUserId());
couponRequest.setOpenid(openId);
// 订单号 替换成唯一序号
couponRequest.setTrans_id(orderBean.getOid());
couponRequest.setBusiness_date(DateUtil.convert2String(new Date(), DateUtil.FORMAT_yyyyMMdd));
List<TransactionVO> transactions = new ArrayList<>();
TransactionVO couponCodeVerificationTransDto = new TransactionVO();
couponCodeVerificationTransDto.setCode(accountBean.getAccountId());
couponCodeVerificationTransDto.setOpenId(openId);
Integer discountPrice = accountBean.getPrice().intValue();
if (discountPrice != null && discountPrice < 0) {
discountPrice = 0 - discountPrice;
}
couponCodeVerificationTransDto.setTotalAmount(accountBean.getPrice().longValue());
//商品券预教研
List<ProductRedeemVO> products = new ArrayList<>();
if (QueryOrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getAccountType().getCode())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
ProductRedeemVO couponCodeVerificationProductDto = new ProductRedeemVO();
couponCodeVerificationProductDto.setPid(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1);
products.add(couponCodeVerificationProductDto);
}
}
}
}
if (CollectionUtils.isNotEmpty(products)) {
couponCodeVerificationTransDto.setProducts(products);
}
transactions.add(couponCodeVerificationTransDto);
couponRequest.setTransactions(transactions);
return couponRequest;
}
private ActivityChannelEnum orderTypeEnumConvert2ActivityChannel(Integer orderType) {
if (Objects.equals(OldOrderType.TAKE_OUT.getCode(), orderType)) {
return ActivityChannelEnum.delivery;
} else if (Objects.equals(OldOrderType.COLLECT_GOODS.getCode(), orderType) || Objects.equals(OldOrderType.EAT_IN.getCode(), orderType)) {
return ActivityChannelEnum.pickup;
}else if (Objects.equals(OldCreateOrderType.SAASMALL.getCode(), orderType)) {
return ActivityChannelEnum.saasmall;
} else {
return ActivityChannelEnum.pickup;
}
}
} }
...@@ -3,7 +3,9 @@ package com.freemud.sdk.api.assortment.order.enums; ...@@ -3,7 +3,9 @@ package com.freemud.sdk.api.assortment.order.enums;
public enum ActivityChannelEnum { public enum ActivityChannelEnum {
// pickup-到店取餐 deliver-外卖 // pickup-到店取餐 deliver-外卖
pickup("pickup", "到店取餐"), pickup("pickup", "到店取餐"),
delivery("delivery", "外卖"); delivery("delivery", "外卖"),
saasmall("saasmall", "外卖");
private String code; private String code;
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CreateOrderType
* @Package cn.freemud.enums
* @Description:
* @author: liming.guo
* @date: 2018/7/3 13:35
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.order.enums;
public enum OldCreateOrderType {
TAKE_OUT(2, "外卖"),
COLLECT_GOODS(1, "到店"),
SAASMALL(3, "商城");
private Integer code;
private String desc;
public static OldCreateOrderType getByCode(Integer code) {
if (code == null) {
return null;
}
for (OldCreateOrderType createOrderType : values()) {
if (createOrderType.getCode().equals(code)) {
return createOrderType;
}
}
return null;
}
OldCreateOrderType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
...@@ -179,6 +179,8 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -179,6 +179,8 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/ */
private Byte marketingType; private Byte marketingType;
private Long totalDiscountAmount;
@Data @Data
public static class DeliveryTypeInfo { public static class DeliveryTypeInfo {
/** /**
......
...@@ -40,6 +40,8 @@ public class CreateFatherSonOrderRequest extends BaseConfig { ...@@ -40,6 +40,8 @@ public class CreateFatherSonOrderRequest extends BaseConfig {
*/ */
private String menuType; private String menuType;
private String openId;
@Data @Data
public static class OrderInfo { public static class OrderInfo {
/** /**
......
...@@ -15,4 +15,5 @@ public class CreateOrderRequest extends BaseConfig { ...@@ -15,4 +15,5 @@ public class CreateOrderRequest extends BaseConfig {
*/ */
MqMessageRequest mqMessageRequest; MqMessageRequest mqMessageRequest;
private String openId;
} }
...@@ -56,11 +56,13 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; ...@@ -56,11 +56,13 @@ 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.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.response.GetStoreTableResponse; import com.freemud.application.sdk.api.storecenter.response.GetStoreTableResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.response.vo.GetOrgTreeListResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.structure.MessageCenterType; import com.freemud.application.sdk.api.structure.MessageCenterType;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto; import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient; import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.adapter.*; import com.freemud.sdk.api.assortment.order.adapter.*;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderEditInfo; import com.freemud.sdk.api.assortment.order.entities.OrderEditInfo;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest;
...@@ -134,7 +136,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -134,7 +136,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return getCreateOrderResponse(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null); return getCreateOrderResponse(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null);
} }
BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(), BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(),
config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest(),config.getBaseCreateOrderRequest().getMenuType()); config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest(),config.getBaseCreateOrderRequest().getMenuType(),config.getOpenId());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) { if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null); return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null);
} }
...@@ -155,7 +157,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -155,7 +157,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
} }
CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0); CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0);
BaseOrderResponse baseOrderResponse =updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(), BaseOrderResponse baseOrderResponse =updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(),
createFatherSonOrderRequest.getMqMessageRequest(),createFatherSonOrderRequest.getMenuType()); createFatherSonOrderRequest.getMqMessageRequest(),createFatherSonOrderRequest.getMenuType(),createFatherSonOrderRequest.getOpenId());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) { if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return CreateFatherSonOrderResponse.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg()); return CreateFatherSonOrderResponse.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
} }
...@@ -175,7 +177,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -175,7 +177,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
} }
private BaseOrderResponse updateStockAndScore(OrderBean orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest, private BaseOrderResponse updateStockAndScore(OrderBean orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest,String menuType) { List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest,String menuType,String openId) {
//TODO 转换获取库存信息,扣减库存 //TODO 转换获取库存信息,扣减库存
UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE,menuType); UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE,menuType);
if (updateStocksRequest != null && CollectionUtils.isNotEmpty(updateStocksRequest.getProductStocks())) { if (updateStocksRequest != null && CollectionUtils.isNotEmpty(updateStocksRequest.getProductStocks())) {
...@@ -225,9 +227,12 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -225,9 +227,12 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// 下单成锁定劵,冻结失败提示下单失败并冲正库存积分等,判断支付渠道,积分和svc卡直接核销,无需锁定10102 = svc卡支付 || 支付金额小于等于0 // 下单成锁定劵,冻结失败提示下单失败并冲正库存积分等,判断支付渠道,积分和svc卡直接核销,无需锁定10102 = svc卡支付 || 支付金额小于等于0
//todo:统一流程 下单锁券再核销 //todo:统一流程 下单锁券再核销
CouponLockRequest couponLockRequest = orderSdkAdapter.convert2CouponLockRequest(orderBean, accounts); // CouponLockRequest couponLockRequest = orderSdkAdapter.convert2CouponLockRequest(orderBean, accounts);
if (couponLockRequest != null) { CouponRequest request = orderSdkAdapter.convert2PreCheckRequest(orderBean, accounts, openId);
BaseResponse<CouponLockResponse> couponLockResponseBaseResponse = offlineCouponSdkService.couponLock(couponLockRequest, ""); if (request != null) {
request.setChannel_ids(getOrgCodes(orderBean.getCompanyId(),orderBean.getShopId()));
// BaseResponse<CouponLockResponse> couponLockResponseBaseResponse = offlineCouponSdkService.couponLock(couponLockRequest, "");
BaseResponse<CouponLockResponse> couponLockResponseBaseResponse = offlineCouponSdkService.precheckAndLock(request, LogThreadLocal.getTrackingNo());
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponLockResponseBaseResponse.getCode())) { if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponLockResponseBaseResponse.getCode())) {
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), AfterSalesType.SYSTEM_CANCEL, "锁定券码失败", "", null); CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), AfterSalesType.SYSTEM_CANCEL, "锁定券码失败", "", null);
orderCancel(cancelOrderRequest); orderCancel(cancelOrderRequest);
...@@ -239,6 +244,21 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -239,6 +244,21 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, ""); return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, "");
} }
List<String> getOrgCodes(String partnerId, String storeCode) {
GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(partnerId);
request.setStoreCode(storeCode);
BaseResponse<GetOrgTreeListResponse> orgList = storeCenterService.getOrgTreeList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) {
List<GetOrgTreeListResponse.OrgList> orgResponseList = orgList.getData().getOrgList();
if (CollectionUtils.isEmpty(orgResponseList)){
return null;
}
return orgResponseList.stream().map(org -> org.getOrganizationId()).collect(Collectors.toList());
}
return null;
}
/** /**
* 围餐更新库存和积分 * 围餐更新库存和积分
*/ */
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<dependency> <dependency>
<artifactId>couponcenter-sdk</artifactId> <artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<version>4.0.0-SNAPSHOT</version> <version>4.1.2-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
......
...@@ -340,6 +340,7 @@ public class OrderAdapter { ...@@ -340,6 +340,7 @@ public class OrderAdapter {
} }
createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList()); createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList());
createOrderDto.setTotalDiscountAmount(shoppingCartGoodsDto.getTotalDiscountAmount());
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接 // update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos); ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos);
......
...@@ -44,6 +44,13 @@ public class DeliveryController { ...@@ -44,6 +44,13 @@ public class DeliveryController {
return deliveryService.callbackUrl(request); return deliveryService.callbackUrl(request);
} }
@ApiAnnotation(logMessage = "配送异常回调")
@ApiOperation(value = "配送异常回调", notes = "配送异常回调", produces = "application/json")
@PostMapping("/delivery/errorCallbackUrl")
public BaseResponse errorCallbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) {
return deliveryService.errorCallbackUrl(request);
}
@ApiAnnotation(logMessage = "麦咖啡配送回调") @ApiAnnotation(logMessage = "麦咖啡配送回调")
@ApiOperation(value = "麦咖啡配送回调", notes = "麦咖啡配送回调", produces = "application/json") @ApiOperation(value = "麦咖啡配送回调", notes = "麦咖啡配送回调", produces = "application/json")
@PostMapping("/delivery/macCafeCallback") @PostMapping("/delivery/macCafeCallback")
......
package cn.freemud.entities.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName: GetMemberExtendInfoRequestDto
* @Description:
* @Author: freemud
* @Date: 2021/6/9 下午4:28
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GetMemberExtendInfoRequestDto {
private String partnerId;
private String memberId;
private Integer isQueryGrade;
private Integer isQueryPaid;
private Integer isQueryLabel;
}
package cn.freemud.entities.dto;
/**
* @ClassName: GetMemberExtendInfoResponseDto
* @Description:
* @Author: freemud
* @Date: 2021/6/9 下午4:29
*/
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GetMemberExtendInfoResponseDto {
private GetMemberExtendInfoResponseDto.MemberGradeDto memberGrade;
private List<GetMemberExtendInfoResponseDto.MemberPaidDetail> memberPaids;
private List<GetMemberExtendInfoResponseDto.GetMemberLabels> memberLabels;
@Data
public static class MemberGradeDto {
private String ruleCode;
private String ruleName;
private String cycleDate;
}
@Data
public static class MemberPaidDetail {
private String id;
private String paidId;
private String paidName;
private Date openTime;
private Date expiryTime;
}
@Data
public static class GetMemberLabels {
private String memberId;
private String labelCode;
private String labelName;
private Date updateTime;
}
}
...@@ -76,5 +76,14 @@ public class CallbackUrlRequestDto { ...@@ -76,5 +76,14 @@ public class CallbackUrlRequestDto {
* 配送平台统一异常描述 * 配送平台统一异常描述
*/ */
private String exceptionDesc; private String exceptionDesc;
/**
* 异常状态
*/
private String errorStatus;
/**
* 异常信息
*/
private String errorDesc;
private String errorCreateTime;
} }
...@@ -48,4 +48,13 @@ public class SendMessageRequest { ...@@ -48,4 +48,13 @@ public class SendMessageRequest {
*/ */
private String utcTime; private String utcTime;
private String amount;
private String orderTime;
private String phone;
private String UserName;
private String remindMessage;
} }
...@@ -15,6 +15,7 @@ public interface ThirdDeliveryService { ...@@ -15,6 +15,7 @@ public interface ThirdDeliveryService {
* 配送回调 * 配送回调
*/ */
BaseResponse callbackUrl(CallbackUrlRequestDto request); BaseResponse callbackUrl(CallbackUrlRequestDto request);
/** /**
* 配送回调 * 配送回调
*/ */
...@@ -31,4 +32,8 @@ public interface ThirdDeliveryService { ...@@ -31,4 +32,8 @@ public interface ThirdDeliveryService {
*/ */
BaseResponse<DeliveryAmountVo> queryDeliveryAmount(WeixinDeliveryAddressDto request); BaseResponse<DeliveryAmountVo> queryDeliveryAmount(WeixinDeliveryAddressDto request);
/**
* 配送异常回调
*/
BaseResponse errorCallbackUrl(CallbackUrlRequestDto request);
} }
package cn.freemud.service.business;
import com.freemud.application.sdk.api.ordercenter.request.PaySuccessReq;
import com.freemud.sdk.api.assortment.order.request.order.ConfirmOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse;
/**
* @ClassName: OrderBusinessService
* @Description:
* @Author: freemud
* @Date: 2021/6/9 下午4:12
*/
public interface OrderBusinessService {
PayAccessResponse payAccess(ConfirmOrderRequest confirmOrderRequest);
Integer getPaySuccessTimeout(ConfirmOrderRequest confirmOrderRequest, PaySuccessReq request);
}
...@@ -117,7 +117,7 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService { ...@@ -117,7 +117,7 @@ public class CocoCouponRelationServiceImpl implements CouponRelationService {
couponCodeVerificationDto.setTrans_id(orderBean.getOid()); couponCodeVerificationDto.setTrans_id(orderBean.getOid());
couponCodeVerificationDto.setBusiness_date(DateUtil.convert2Str(new Date(), DateUtil.FORMAT_yyyyMMdd)); couponCodeVerificationDto.setBusiness_date(DateUtil.convert2Str(new Date(), DateUtil.FORMAT_yyyyMMdd));
// 核销券新增参数:组织机构ID // 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId())); couponCodeVerificationDto.setChannel_ids(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
// 核销交易信息 // 核销交易信息
List<CouponCodeVerificationTransDto> transactions = new ArrayList<>(); List<CouponCodeVerificationTransDto> transactions = new ArrayList<>();
......
...@@ -107,7 +107,7 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -107,7 +107,7 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
couponCodeVerificationDto.setOrderPaymentAmount(orderBean.getAmount()); couponCodeVerificationDto.setOrderPaymentAmount(orderBean.getAmount());
couponCodeVerificationDto.setOrderDiscountAmount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount()); couponCodeVerificationDto.setOrderDiscountAmount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount());
// 核销券新增参数:组织机构ID // 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId())); couponCodeVerificationDto.setChannel_ids(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
try { try {
//71.券核销 //71.券核销
for (int i = 2; i >= 0; i--) { for (int i = 2; i >= 0; i--) {
......
...@@ -329,6 +329,15 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -329,6 +329,15 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
return ResponseUtil.success(deliveryAmountVo); return ResponseUtil.success(deliveryAmountVo);
} }
@Override
public BaseResponse errorCallbackUrl(CallbackUrlRequestDto request) {
// pos获取回调状态
sendPosMessage(request.getPartnerId(), request.getStoreId(), request.getOrderId(), 71, request.getErrorDesc());
//生态回调
sendException(request.getOrderId(), request.getErrorDesc(), request.getErrorCreateTime(), "运单预警");
return ResponseUtil.success();
}
/** /**
* 配送单异常取消配送单 * 配送单异常取消配送单
*/ */
...@@ -401,8 +410,11 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -401,8 +410,11 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
message.setContent(content); message.setContent(content);
pushMessageNoticeDto.setData(new Gson().toJson(message)); pushMessageNoticeDto.setData(new Gson().toJson(message));
try {
messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo()); messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo());
}catch (Exception e){
LogUtil.error("推送消息中心失败,订单编号:{},失败原因:{}", orderId, "", e);
}
} }
/** /**
......
...@@ -34,6 +34,7 @@ import cn.freemud.redis.RedisCache; ...@@ -34,6 +34,7 @@ import cn.freemud.redis.RedisCache;
import cn.freemud.service.BuriedPointService; import cn.freemud.service.BuriedPointService;
import cn.freemud.service.CouponActivityService; import cn.freemud.service.CouponActivityService;
import cn.freemud.service.MallOrderService; import cn.freemud.service.MallOrderService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient; import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
...@@ -154,7 +155,8 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -154,7 +155,8 @@ public class MallOrderServiceImpl implements MallOrderService {
private AssortmentCustomerInfoManager assortmentCustomerInfoManager; private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired @Autowired
private PaymentQueueService paymentQueueService; private PaymentQueueService paymentQueueService;
@Autowired
private OrderBusinessService orderBusinessService;
/** /**
* 创建订单 * 创建订单
*/ */
...@@ -508,7 +510,7 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -508,7 +510,7 @@ public class MallOrderServiceImpl implements MallOrderService {
} }
// 订单支付成功 // 订单支付成功
com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse payAccessRes = orderCenterSdkService.payAccess(confirmOrderRequest); com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse payAccessRes = orderBusinessService.payAccess(confirmOrderRequest);
String string2 = JSONObject.toJSONString(payAccessRes); String string2 = JSONObject.toJSONString(payAccessRes);
JSONObject jsonObject2 = JSONObject.parseObject(string2); JSONObject jsonObject2 = JSONObject.parseObject(string2);
payAccessResponse = jsonObject2.toJavaObject(PayAccessResponse.class); payAccessResponse = jsonObject2.toJavaObject(PayAccessResponse.class);
......
...@@ -21,6 +21,7 @@ import cn.freemud.interceptor.ServiceException; ...@@ -21,6 +21,7 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.BuyProductOnceManager; import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.StoreItemClient; import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -144,6 +145,8 @@ public class SellCouponOrderServiceImpl { ...@@ -144,6 +145,8 @@ public class SellCouponOrderServiceImpl {
private final String SUCCESS = "100"; private final String SUCCESS = "100";
private final String ngsCouponProductId = "76161384"; private final String ngsCouponProductId = "76161384";
@Autowired
private OrderBusinessService orderBusinessService;
@Autowired @Autowired
private BuyProductOnceManager buyProductOnceManager; private BuyProductOnceManager buyProductOnceManager;
...@@ -787,7 +790,7 @@ public class SellCouponOrderServiceImpl { ...@@ -787,7 +790,7 @@ public class SellCouponOrderServiceImpl {
} }
try { try {
// 订单支付成功 // 订单支付成功
PayAccessResponse payAccessResponse = orderCenterSdkService.payAccess(var1); PayAccessResponse payAccessResponse = orderBusinessService.payAccess(var1);
}catch (Exception e){ }catch (Exception e){
LogUtil.error(LogThreadLocal.getTrackingNo(),"sdkPayAccessError",JSONObject.toJSONString(var1),null,e); LogUtil.error(LogThreadLocal.getTrackingNo(),"sdkPayAccessError",JSONObject.toJSONString(var1),null,e);
} }
......
...@@ -10,6 +10,7 @@ import cn.freemud.utils.*; ...@@ -10,6 +10,7 @@ import cn.freemud.utils.*;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest; import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.response.vo.GetOrgTreeListResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -24,6 +25,7 @@ import java.util.Arrays; ...@@ -24,6 +25,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service @Service
public class StoreServiceImpl implements StoreService { public class StoreServiceImpl implements StoreService {
...@@ -201,9 +203,14 @@ public class StoreServiceImpl implements StoreService { ...@@ -201,9 +203,14 @@ public class StoreServiceImpl implements StoreService {
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setStoreCode(storeCode); request.setStoreCode(storeCode);
StoreCenterService storeCenterService = SpringBeanUtil.getBean(StoreCenterService.class); StoreCenterService storeCenterService = SpringBeanUtil.getBean(StoreCenterService.class);
BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo()); // BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
BaseResponse<GetOrgTreeListResponse> orgList = storeCenterService.getOrgTreeList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) { if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) {
return orgList.getData(); List<GetOrgTreeListResponse.OrgList> orgResponseList = orgList.getData().getOrgList();
if (CollectionUtils.isEmpty(orgResponseList)){
return null;
}
return orgResponseList.stream().map(org -> org.getOrganizationId()).collect(Collectors.toList());
} }
return null; return null;
} }
......
///** /**
// * All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
// * *
// * @Title: CustomerExtendClient * @Title: CustomerExtendClient
// * @Package cn.freemud.service.thirdparty * @Package cn.freemud.service.thirdparty
// * @Description: * @Description:
// * @author: song.cai * @author: song.cai
// * @date: 2019/2/20 16:42 * @date: 2019/2/20 16:42
// * @version V1.0 * @version V1.0
// * @Copyright: 2019 www.freemud.cn Inc. All rights reserved. * @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
// * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目 * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
// */ */
//
//package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
//
//import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
//import com.alibaba.fastjson.JSONObject; import com.freemud.application.sdk.api.base.BaseResponse;
//import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
//
//@FeignClient(name = "CUSTOMER-SERVICE", url = "${saas.customerclient.feign.url}") @FeignClient(name = "CUSTOMER-SERVICE", url = "${saas.customerclient.feign.url}")
//@RequestMapping(produces = {"application/json;charset=UTF-8"}) @RequestMapping(produces = { "application/json;charset=UTF-8" })
//public interface CustomerClient { public interface CustomerClient {
// /** // /**
// * 根据聚道注册会员 // * 根据聚道注册会员
// */ // */
// @PostMapping(value = "/customerservice/registerByChannel") // @PostMapping(value = "/customerservice/registerByChannel")
// MemberRegisterResponseDto registerByChannel(@RequestBody MemberRegisterRequestDto memberRegisterRequestDto); // MemberRegisterResponseDto registerByChannel(@RequestBody MemberRegisterRequestDto memberRegisterRequestDto);
// //
// /** // /**
// * 根据渠道信息查询顾客信息 // * 根据渠道信息查询顾客信息
// */ // */
// @PostMapping(value = "/customerservice/getMemberByChannel") // @PostMapping(value = "/customerservice/getMemberByChannel")
// GetMemberInfoByChannelResponseDto getMemberInfoByChannel(@RequestBody GetMemberInfoByChannelRequestDto getMemberInfoByChannelRequestDto); // GetMemberInfoByChannelResponseDto getMemberInfoByChannel(@RequestBody GetMemberInfoByChannelRequestDto
// // getMemberInfoByChannelRequestDto);
// /** //
// * 修改unionid // /**
// */ // * 修改unionid
// @PostMapping(value = "/customerservice/updateMemberChannel") // */
// JSONObject updateUserUnionId(@RequestBody UpdateMemUnionIdRequestDto updateMemUnionIdRequestDto); // @PostMapping(value = "/customerservice/updateMemberChannel")
// // JSONObject updateUserUnionId(@RequestBody UpdateMemUnionIdRequestDto updateMemUnionIdRequestDto);
// /** //
// * 根据会员id获取会员信息 // /**
// */ // * 根据会员id获取会员信息
// @PostMapping(value = "/customerservice/getMemberById") // */
// GetMemberInfoByIdResponseDto getMemberInfoById(@RequestBody GetMemberInfoByIdRequestDto getMemberInfoByIdRequestDto); // @PostMapping(value = "/customerservice/getMemberById")
// // GetMemberInfoByIdResponseDto getMemberInfoById(@RequestBody GetMemberInfoByIdRequestDto
// /** // getMemberInfoByIdRequestDto);
// * 修改顾客信息 //
// */ // /**
// @PostMapping(value = "/customerservice/update") // * 修改顾客信息
// JSONObject editMemberInfo(@RequestBody EditMemberInfoRequestDto editMemberInfoRequestDto); // */
// // @PostMapping(value = "/customerservice/update")
// // JSONObject editMemberInfo(@RequestBody EditMemberInfoRequestDto editMemberInfoRequestDto);
// /** //
// * 获取用户收货地址列表 //
// */ // /**
// @PostMapping(value = "/customerservice/address/getAddressList") // * 获取用户收货地址列表
// GetReceiveAddressListResponseDto getReceiveAddressList(@RequestBody GetReceiveAddressListDto getReceiveListDto); // */
// // @PostMapping(value = "/customerservice/address/getAddressList")
// /** // GetReceiveAddressListResponseDto getReceiveAddressList(@RequestBody GetReceiveAddressListDto getReceiveListDto);
// * 新增收货地址 //
// */ // /**
// @PostMapping(value = "/customerservice/address/add") // * 新增收货地址
// AddReceiveAddressResponseDto addReceiveAddress(@RequestBody AddReceiveAddressDto addReceiveDto); // */
// // @PostMapping(value = "/customerservice/address/add")
// /** // AddReceiveAddressResponseDto addReceiveAddress(@RequestBody AddReceiveAddressDto addReceiveDto);
// * 修改收货地址 //
// */ // /**
// @PostMapping(value = "/customerservice/address/update") // * 修改收货地址
// UpdateReceiveAddressResponseDto updateReceiveAddress(@RequestBody UpdateReceiveAddressDto updateReceiveAddressDto); // */
// // @PostMapping(value = "/customerservice/address/update")
// /** // UpdateReceiveAddressResponseDto updateReceiveAddress(@RequestBody UpdateReceiveAddressDto
// * 删除收货地址 // updateReceiveAddressDto);
// */ //
// @PostMapping(value = "/customerservice/address/delete") // /**
// DeleteReceiveAddressResponseDto deleteReceiveAddress(@RequestBody DeleteReceiveAddressDto deleteReceiveAddressDto); // * 删除收货地址
// // */
// // @PostMapping(value = "/customerservice/address/delete")
// /** // DeleteReceiveAddressResponseDto deleteReceiveAddress(@RequestBody DeleteReceiveAddressDto
// * 查询收货地址详情 // deleteReceiveAddressDto);
// */ //
// @PostMapping(value = "/customerservice/address/get") //
// QueryReceiveAddressResponseDto queryReceiveAddressById(@RequestBody QueryReceiveAddressDto queryReceiveAddressDto); // /**
//} // * 查询收货地址详情
// */
// @PostMapping(value = "/customerservice/address/get")
// QueryReceiveAddressResponseDto queryReceiveAddressById(@RequestBody QueryReceiveAddressDto
// queryReceiveAddressDto);
/**
* 查询收货地址详情
*/
@PostMapping(value = "/customerservice/extend/getMemberExtendInfo")
BaseResponse<GetMemberExtendInfoResponseDto>
getMemberExtendInfo(@RequestBody GetMemberExtendInfoRequestDto extendInfoRequest);
}
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId> <artifactId>couponcenter-sdk</artifactId>
<version>1.9.2.RELEASE</version> <version>4.1.2-SNAPSHOT</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
......
...@@ -82,7 +82,7 @@ public class KgdCouponServiceImpl implements CouponService { ...@@ -82,7 +82,7 @@ public class KgdCouponServiceImpl implements CouponService {
List<String> orgIds = storeService.getOrgIds(getStoreBO); List<String> orgIds = storeService.getOrgIds(getStoreBO);
String channelIds = CollectionUtils.isNotEmpty(orgIds) ? Joiner.on(",").join(orgIds) : ""; String channelIds = CollectionUtils.isNotEmpty(orgIds) ? Joiner.on(",").join(orgIds) : "";
map.put(Finals.CHANNEL_CODE_LIST, channelIds); map.put(Finals.CHANNEL_ID_LIST, channelIds);
String appSecret = getAppSecret(getCouponDetailBO.getPartnerId()); String appSecret = getAppSecret(getCouponDetailBO.getPartnerId());
String sign = SignUtil.createMD5Sign(map, appSecret); String sign = SignUtil.createMD5Sign(map, appSecret);
map.put(Finals.SIGN, sign); map.put(Finals.SIGN, sign);
......
...@@ -15,11 +15,16 @@ import com.freemud.application.sdk.api.log.LogThreadLocal; ...@@ -15,11 +15,16 @@ import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; 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.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.response.vo.GetOrgTreeListResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.util.ResponseUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service("KgdStoreService") @Service("KgdStoreService")
public class KgdStoreServiceImpl implements StoreService { public class KgdStoreServiceImpl implements StoreService {
...@@ -39,12 +44,19 @@ public class KgdStoreServiceImpl implements StoreService { ...@@ -39,12 +44,19 @@ public class KgdStoreServiceImpl implements StoreService {
GetOrgTreeListRequest request = new GetOrgTreeListRequest(); GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(getStoreBO.getPartnerId()); request.setPartnerId(getStoreBO.getPartnerId());
request.setStoreCode(getStoreBO.getStoreCode()); request.setStoreCode(getStoreBO.getStoreCode());
BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo()); BaseResponse<GetOrgTreeListResponse> response = storeCenterService.getOrgTreeList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) { if (Objects.equals("100", response.getCode()) && response.getData() != null) {
return orgList.getData(); List<GetOrgTreeListResponse.OrgList> orgList = ((GetOrgTreeListResponse)response.getData()).getOrgList();
if (CollectionUtils.isEmpty(orgList)) {
return null;
} else {
List<String> orgIds = (List)orgList.stream().map(GetOrgTreeListResponse.OrgList::getOrganizationId).collect(Collectors.toList());
return orgIds;
} }
} else {
return null; return null;
} }
}
@Override @Override
public StoreInfoBO getStoreInfo(GetStoreInfoBO getStoreInfo) { public StoreInfoBO getStoreInfo(GetStoreInfoBO getStoreInfo) {
......
...@@ -9,10 +9,15 @@ import cn.freemud.demo.entities.bo.store.StoreInfoBO; ...@@ -9,10 +9,15 @@ import cn.freemud.demo.entities.bo.store.StoreInfoBO;
import cn.freemud.demo.manager.customer.CustomerManager; import cn.freemud.demo.manager.customer.CustomerManager;
import cn.freemud.demo.manager.store.StoreManager; import cn.freemud.demo.manager.store.StoreManager;
import cn.freemud.entities.dto.StoreDeliveryInfoDto; import cn.freemud.entities.dto.StoreDeliveryInfoDto;
import cn.freemud.entities.vo.QueryDeliveryDistanceRequest;
import cn.freemud.entities.vo.QueryDeliveryDistanceResponseVo;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.enums.CreateOrderType; import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.ScopeConfigType; import cn.freemud.enums.ScopeConfigType;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.delivery.DeliveryFactory; import cn.freemud.service.delivery.DeliveryFactory;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.utils.WebUtil; import cn.freemud.utils.WebUtil;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
...@@ -42,6 +47,8 @@ public class DeliveryServiceImpl { ...@@ -42,6 +47,8 @@ public class DeliveryServiceImpl {
@Autowired @Autowired
private DeliveryFactory deliveryFactory; private DeliveryFactory deliveryFactory;
@Autowired
private DeliveryFeiginClient deliveryFeiginClient;
// 配送费逻辑是否使用旧的 // 配送费逻辑是否使用旧的
@Value("${store.delivery.use.old:true}") @Value("${store.delivery.use.old:true}")
private boolean storeDeliveryUseOld; private boolean storeDeliveryUseOld;
...@@ -238,10 +245,15 @@ public class DeliveryServiceImpl { ...@@ -238,10 +245,15 @@ public class DeliveryServiceImpl {
* @return * @return
*/ */
public double getDistance(String shopLng, String shopLat, String addressLng, String addressLat) { public double getDistance(String shopLng, String shopLat, String addressLng, String addressLat) {
if (StringUtils.isBlank(shopLng) || StringUtils.isBlank(shopLat) || StringUtils.isBlank(addressLng) || StringUtils.isBlank(addressLat)) { // if (StringUtils.isBlank(shopLng) || StringUtils.isBlank(shopLat) || StringUtils.isBlank(addressLng) || StringUtils.isBlank(addressLat)) {
return 100000; // return 100000;
// }
// return WebUtil.calDistance(Double.valueOf(shopLng), Double.valueOf(shopLat), Double.valueOf(addressLng), Double.valueOf(addressLat));
QueryDeliveryDistanceResponseVo responseVo = deliveryFeiginClient.queryDeliveryDistance(new QueryDeliveryDistanceRequest(Double.parseDouble(shopLat), Double.parseDouble(shopLng), Double.parseDouble(addressLat), Double.parseDouble(addressLng)));
if (responseVo == null || responseVo.getCode() != 100 || responseVo.getData().getDistance() == null) {
throw new ServiceException(ResponseResult.STORE_DELIVERY_AMOUNT_ERROR);
} }
return WebUtil.calDistance(Double.valueOf(shopLng), Double.valueOf(shopLat), Double.valueOf(addressLng), Double.valueOf(addressLat)); return responseVo.getData().getDistance();
} }
} }
package cn.freemud.entities.vo;
import lombok.Data;
/**
* @ClassName: QueryDeliveryDistanceRequest
* @Description:
* @Author: freemud
* @Date: 2021/6/3 下午8:44
*/
@Data
public class QueryDeliveryDistanceRequest {
/**
* 目的地纬度
*/
private double desLatitude;
/**
* 目的地经度
*/
private double desLongitude;
/**
* 出发点纬度
*/
private double oriLatitude;
/**
* 出发点经度
*/
private double oriLongitude;
public QueryDeliveryDistanceRequest(double desLatitude, double desLongitude, double oriLatitude, double oriLongitude) {
this.desLatitude = desLatitude;
this.desLongitude = desLongitude;
this.oriLatitude = oriLatitude;
this.oriLongitude = oriLongitude;
}
}
package cn.freemud.entities.vo;
import lombok.Data;
/**
* @ClassName: QueryDeliveryDistanceResponseVo
* @Description:
* @Author: freemud
* @Date: 2021/6/3 下午8:36
*/
@Data
public class QueryDeliveryDistanceResponseVo {
private Integer code;
private RoutePlanner data;
private String msg;
@Data
public static class RoutePlanner {
/**
* 起终点的骑行距离,单位:米
*/
private Integer distance;
/**
* 起终点的骑行时间,单位:秒
*/
private Integer duration;
}
}
...@@ -97,7 +97,7 @@ public interface CommonService { ...@@ -97,7 +97,7 @@ public interface CommonService {
} }
default String getOrgIdsAsString(String partnerId, String storeCode) { default String getOrgIdsAsString(String partnerId, String storeCode) {
List<String> orgIdList = this.getOrgIds(partnerId, storeCode); List<String> orgIdList = this.getOrgIdsForCoupon(partnerId, storeCode);
return CollectionUtils.isNotEmpty(orgIdList) ? Joiner.on(",").join(orgIdList) : ""; return CollectionUtils.isNotEmpty(orgIdList) ? Joiner.on(",").join(orgIdList) : "";
} }
......
...@@ -287,7 +287,7 @@ public class CouponServiceImpl implements CouponService { ...@@ -287,7 +287,7 @@ public class CouponServiceImpl implements CouponService {
map.put(Finals.ACTION, "code.allDetails"); map.put(Finals.ACTION, "code.allDetails");
// 券码接口新增参数:组织机构(多个用英文逗号分离) // 券码接口新增参数:组织机构(多个用英文逗号分离)
String channelIds = commonService.getOrgIdsAsString(requestVo.getPartnerId(), requestVo.getStoreId()); String channelIds = commonService.getOrgIdsAsString(requestVo.getPartnerId(), requestVo.getStoreId());
map.put(Finals.CHANNEL_CODE_LIST, channelIds); map.put(Finals.CHANNEL_ID_LIST, channelIds);
String appSecret = getAppSecret(requestVo.getPartnerId()); String appSecret = getAppSecret(requestVo.getPartnerId());
String sign = SignUtil.createMD5Sign(map, appSecret); String sign = SignUtil.createMD5Sign(map, appSecret);
map.put(Finals.SIGN, sign); map.put(Finals.SIGN, sign);
...@@ -511,8 +511,8 @@ public class CouponServiceImpl implements CouponService { ...@@ -511,8 +511,8 @@ public class CouponServiceImpl implements CouponService {
Long totalAmount = createProductRequest(cartGoods, productList, isNew); Long totalAmount = createProductRequest(cartGoods, productList, isNew);
couponAvailableReqVo.setTotalAmount(Integer.valueOf(totalAmount + "")); couponAvailableReqVo.setTotalAmount(Integer.valueOf(totalAmount + ""));
couponAvailableReqVo.setProductList(productList); couponAvailableReqVo.setProductList(productList);
couponAvailableReqVo.setChannelCodeList(commonService.getOrgCodes(partnerId, storeId)); // couponAvailableReqVo.setChannelCodeList(commonService.getOrgCodes(partnerId, storeId));
// couponAvailableReqVo.setChannelIdList(commonService.getOrgIdsForCoupon(partnerId, storeId)); couponAvailableReqVo.setChannelIdList(commonService.getOrgIdsForCoupon(partnerId, storeId));
if (StringUtils.isNotBlank(menuType)) { if (StringUtils.isNotBlank(menuType)) {
String code = BusinessTypeEnum.getByType(menuType).getCode(); String code = BusinessTypeEnum.getByType(menuType).getCode();
String channel = CouponRedeemChannel.getChannelByType(code); String channel = CouponRedeemChannel.getChannelByType(code);
......
...@@ -795,7 +795,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -795,7 +795,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
List<String> cartGoodsUidList = calculationDiscountGoodsList.stream().map(ActivityCalculationDiscountRequestDto.CalculationDiscountGoods::getCartGoodsUid).collect(toList()); List<String> cartGoodsUidList = calculationDiscountGoodsList.stream().map(ActivityCalculationDiscountRequestDto.CalculationDiscountGoods::getCartGoodsUid).collect(toList());
activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList); activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList);
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee); activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto; ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
......
...@@ -569,7 +569,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -569,7 +569,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList); activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList);
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee); activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto; ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
......
...@@ -1405,7 +1405,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1405,7 +1405,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList); activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList);
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee); activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto; ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
...@@ -2949,7 +2949,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2949,7 +2949,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer orderType = requestVo.getOrderType(); Integer orderType = requestVo.getOrderType();
CouponAvailableCartInfo couponAvailableCartInfo; CouponAvailableCartInfo couponAvailableCartInfo;
List<String> orgCodes = commonService.getOrgCodes(partnerId, storeId); List<String> orgCodes = commonService.getOrgIdsForCoupon(partnerId, storeId);
// 获取购物车商品 // 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(partnerId, requestVo.getStoreId(), userId, "", shoppingCartBaseService); List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(partnerId, requestVo.getStoreId(), userId, "", shoppingCartBaseService);
if (grayPush(partnerId,storeId,"2")) { if (grayPush(partnerId,storeId,"2")) {
......
...@@ -11,6 +11,7 @@ import cn.freemud.enums.*; ...@@ -11,6 +11,7 @@ import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.*; import cn.freemud.manager.*;
//import cn.freemud.service.thirdparty.StoreClient; //import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.utils.*; import cn.freemud.utils.*;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -49,7 +50,8 @@ public class StoreServiceImpl { ...@@ -49,7 +50,8 @@ public class StoreServiceImpl {
private OpenPlatformIappWxappConfigDeliveryManager openPlatformIappWxappConfigDeliveryManager; private OpenPlatformIappWxappConfigDeliveryManager openPlatformIappWxappConfigDeliveryManager;
@Autowired @Autowired
private OpenPlatformIappWxappConfigManager openPlatformIappWxappConfigManager; private OpenPlatformIappWxappConfigManager openPlatformIappWxappConfigManager;
@Autowired
private DeliveryFeiginClient deliveryFeiginClient;
/** /**
* 确定门店是否打烊 * 确定门店是否打烊
*/ */
...@@ -417,10 +419,12 @@ public class StoreServiceImpl { ...@@ -417,10 +419,12 @@ public class StoreServiceImpl {
* @return * @return
*/ */
public double getDistance(String shopLng, String shopLat, String addressLng, String addressLat) { public double getDistance(String shopLng, String shopLat, String addressLng, String addressLat) {
if (StringUtils.isBlank(shopLng) || StringUtils.isBlank(shopLat) || StringUtils.isBlank(addressLng) || StringUtils.isBlank(addressLat)) { // return WebUtil.calDistance(Double.valueOf(shopLng), Double.valueOf(shopLat), Double.valueOf(addressLng), Double.valueOf(addressLat));
return 100000; QueryDeliveryDistanceResponseVo responseVo = deliveryFeiginClient.queryDeliveryDistance(new QueryDeliveryDistanceRequest(Double.parseDouble(shopLat), Double.parseDouble(shopLng), Double.parseDouble(addressLat), Double.parseDouble(addressLng)));
if (responseVo == null || responseVo.getCode() != 100 || responseVo.getData().getDistance() == null) {
throw new ServiceException(ResponseResult.STORE_DELIVERY_AMOUNT_ERROR);
} }
return WebUtil.calDistance(Double.valueOf(shopLng), Double.valueOf(shopLat), Double.valueOf(addressLng), Double.valueOf(addressLat)); return responseVo.getData().getDistance();
} }
} }
...@@ -191,7 +191,7 @@ public class CalculationSharingDiscountService { ...@@ -191,7 +191,7 @@ public class CalculationSharingDiscountService {
//组装促销 //组装促销
calculationSharingDiscountRequestDto.setGoods(calculationDiscountGoodsList); calculationSharingDiscountRequestDto.setGoods(calculationDiscountGoodsList);
calculationSharingDiscountRequestDto.setCoupons(coupons); calculationSharingDiscountRequestDto.setCoupons(coupons);
calculationSharingDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId,storeId)); calculationSharingDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId,storeId));
calculationSharingDiscountRequestDto.setDistributionFee(deliveryAmount); calculationSharingDiscountRequestDto.setDistributionFee(deliveryAmount);
calculationSharingDiscountRequestDto.setIsMember(isMember); calculationSharingDiscountRequestDto.setIsMember(isMember);
......
package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.QueryDeliveryDistanceRequest;
import cn.freemud.entities.vo.QueryDeliveryDistanceResponseVo;
import cn.freemud.entities.vo.QueryDeliveryTemplateRequestVo; import cn.freemud.entities.vo.QueryDeliveryTemplateRequestVo;
import cn.freemud.entities.vo.QueryDeliveryTemplateResponseVo; import cn.freemud.entities.vo.QueryDeliveryTemplateResponseVo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
...@@ -13,4 +15,6 @@ public interface DeliveryFeiginClient { ...@@ -13,4 +15,6 @@ public interface DeliveryFeiginClient {
@PostMapping("/delivery/queryDeliveryTemplate") @PostMapping("/delivery/queryDeliveryTemplate")
QueryDeliveryTemplateResponseVo queryDeliveryTemplate(@RequestBody QueryDeliveryTemplateRequestVo queryDeliveryTemplateRequestVo); QueryDeliveryTemplateResponseVo queryDeliveryTemplate(@RequestBody QueryDeliveryTemplateRequestVo queryDeliveryTemplateRequestVo);
@PostMapping("/tools/routePlanner")
QueryDeliveryDistanceResponseVo queryDeliveryDistance(@RequestBody QueryDeliveryDistanceRequest queryDeliveryTemplateRequestVo);
} }
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