Commit 4f2e0986 by 徐康

创建订单使用真实openid

parent 7e05feb6
...@@ -82,7 +82,7 @@ public class OrderController { ...@@ -82,7 +82,7 @@ public class OrderController {
* 麦咖啡创建订单 * 麦咖啡创建订单
*/ */
@ApiAnnotation(logMessage = "createMCCafeOrder") @ApiAnnotation(logMessage = "createMCCafeOrder")
@PostMapping("/mcCafe/createOrder") @PostMapping("/MCoffee/createMCCafeOrder")
public BaseResponse createOrderMCCafe(@Validated @LogParams @RequestBody CreateOrderVo createOrderVo) { public BaseResponse createOrderMCCafe(@Validated @LogParams @RequestBody CreateOrderVo createOrderVo) {
return orderAdapterService.createMCCafeOrder(createOrderVo); return orderAdapterService.createMCCafeOrder(createOrderVo);
} }
...@@ -127,7 +127,7 @@ public class OrderController { ...@@ -127,7 +127,7 @@ public class OrderController {
* 麦咖啡订单支付成功后通知 * 麦咖啡订单支付成功后通知
*/ */
@ApiAnnotation(logMessage = "mcCafePaySuccessCallback") @ApiAnnotation(logMessage = "mcCafePaySuccessCallback")
@PostMapping({"/mcCafePaySuccessCallback","/openStoreMCCafeQueryPaymentCallback"}) @PostMapping({"/MCoffee/mcCafePaySuccessCallback","/openStoreMCCafeQueryPaymentCallback"})
public String mcCafePaySuccessCallback(@LogParams @RequestBody NewPaysuccessNoticeMessage message) { public String mcCafePaySuccessCallback(@LogParams @RequestBody NewPaysuccessNoticeMessage message) {
return mcCafeOrderService.mcCafePaySuccessCallback(message); return mcCafeOrderService.mcCafePaySuccessCallback(message);
} }
...@@ -193,6 +193,15 @@ public class OrderController { ...@@ -193,6 +193,15 @@ public class OrderController {
} }
/** /**
* 麦咖啡用户申请退款
*/
@ApiAnnotation(logMessage = "mcCafeRefund")
@PostMapping("/MCoffee/mcCafeRefund")
public BaseResponse mcCafeRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) {
return mcCafeOrderService.orderRefund(orderRefundVo);
}
/**
* 获取订单排队号 * 获取订单排队号
*/ */
@ApiAnnotation(logMessage = "queueIndex") @ApiAnnotation(logMessage = "queueIndex")
......
...@@ -206,6 +206,16 @@ public class CreateOrderVo { ...@@ -206,6 +206,16 @@ public class CreateOrderVo {
private String channelType; private String channelType;
/** /**
* 是否需要餐具,1 需要 0不需要
*/
private Integer needTableware;
/**
* 是否需要开发票,1 需要 0不需要
*/
private Integer needInvoice;
/**
* 微信配送地址信息 * 微信配送地址信息
*/ */
private WeixinDeliveryAddressDto weixinDeliveryAddress; private WeixinDeliveryAddressDto weixinDeliveryAddress;
......
...@@ -30,4 +30,10 @@ public interface MCCafeOrderService { ...@@ -30,4 +30,10 @@ public interface MCCafeOrderService {
*/ */
String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans); String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans);
/**
* 麦咖啡订单申请退款
*/
BaseResponse orderRefund(OrderRefundVo orderRefundVo);
} }
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.adapter.*; import cn.freemud.adapter.*;
import cn.freemud.amp.body.MessagePushNewMqBody;
import cn.freemud.amqp.Header; import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction; import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage; import cn.freemud.amqp.MQMessage;
...@@ -51,6 +52,7 @@ import com.freemud.api.assortment.datamanager.manager.*; ...@@ -51,6 +52,7 @@ import com.freemud.api.assortment.datamanager.manager.*;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager; import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.api.assortment.datamanager.meal.MealCacheManager; import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum; import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
...@@ -68,12 +70,17 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou ...@@ -68,12 +70,17 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService; import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
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.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
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.message.config.MessageOfficialRefundPushMqConfig;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
import com.freemud.sdk.api.assortment.message.enums.MessageEventType; import com.freemud.sdk.api.assortment.message.enums.MessageEventType;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService; import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType; import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
...@@ -85,6 +92,7 @@ import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo; ...@@ -85,6 +92,7 @@ import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.orderdistributor.entity.dto.PaymentMqMessageDto; import com.freemud.sdk.api.assortment.orderdistributor.entity.dto.PaymentMqMessageDto;
import com.freemud.sdk.api.assortment.orderdistributor.service.PaymentQueueService; import com.freemud.sdk.api.assortment.orderdistributor.service.PaymentQueueService;
import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest; import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse; import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService; import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -94,6 +102,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -94,6 +102,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -101,8 +110,10 @@ import org.springframework.stereotype.Service; ...@@ -101,8 +110,10 @@ import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR; import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service @Service
...@@ -113,7 +124,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -113,7 +124,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
private static Gson gson = new Gson(); private static Gson gson = new Gson();
@Value("${saas.reverseNotifyiDcUrl}") @Value("${mcCafe.reverseNotifyiDcUrl}")
private String reverseNotifyiDcUrl; private String reverseNotifyiDcUrl;
@Value("${program.backorders_change_order_status_consumer_queue}") @Value("${program.backorders_change_order_status_consumer_queue}")
private String backOrdersChangeOrderStatusConsumerQueue; private String backOrdersChangeOrderStatusConsumerQueue;
...@@ -555,8 +566,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -555,8 +566,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
String cardCode = createPrepayRequestDto.getCardCode(); String cardCode = createPrepayRequestDto.getCardCode();
String transId = createPrepayRequestDto.getTransId(); String transId = createPrepayRequestDto.getTransId();
// 测试appId和openid,后面删除,改为实时获取 // 测试appId和openid,后面删除,改为实时获取
paymentRequest.setWxAppId("wx21e254fdcc79dee8"); // paymentRequest.setWxAppId("wx21e254fdcc79dee8");
paymentRequest.setOpenId("oR0VA5aRRaGpQxaLUPgQqcDHamg4"); // paymentRequest.setOpenId("oR0VA5aRRaGpQxaLUPgQqcDHamg4");
//麦咖啡不支持svc卡 //麦咖啡不支持svc卡
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
...@@ -954,23 +965,279 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -954,23 +965,279 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return sendPaySuccessNoticeMessage(); return sendPaySuccessNoticeMessage();
} }
private List<CreateOrderAccountRequest> convertOrderBean2Accounts(OrderBean orderBean) { @Override
List<CreateOrderAccountRequest> list = new ArrayList<>(); public BaseResponse orderRefund(OrderRefundVo orderRefundVo) {
if(CollectionUtils.isNotEmpty(orderBean.getAccountList())) { if (StringUtils.isEmpty(orderRefundVo.getReason())) {
orderBean.getAccountList().forEach(o -> { orderRefundVo.setReason("退款");
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder() }
.accountId(o.getAccountId()) AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(orderRefundVo.getSessionId());
.name(o.getName()) if (userInfo == null || StringUtils.isEmpty(userInfo.getMemberId())) {
.price(o.getPrice()) return ResponseUtil.error(ResponseResult.NOT_LOGIN);
.accountType(orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(o.getType()))) }
.sequence(o.getSequence()) String memberId = userInfo.getMemberId();
.orderId(o.getOrderId()) String partnerId = userInfo.getPartnerId();
.build();
list.add(createOrderAccountDto); if (StringUtils.isBlank(orderRefundVo.getOid())) {
}); return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
} }
return list; BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderRefundVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
String string = JSONObject.toJSONString(queryOrderByIdResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
QueryOrderByIdResponseDto orderByIdResponseDto = jsonObject.toJavaObject(QueryOrderByIdResponseDto.class);
boolean isSon = StringUtils.isEmpty(orderByIdResponseDto.getData().getParentCode()) || "0".equals(orderByIdResponseDto.getData().getParentCode());
String orderId = isSon ? orderByIdResponseDto.getData().getOid() : orderByIdResponseDto.getData().getParentCode();
if (!RESPONSE_SUCCESS_CODE.equals(orderByIdResponseDto.getErrcode()) || orderByIdResponseDto.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "订单信息不存在");
}
if (!memberId.equals(orderByIdResponseDto.getData().getUserId())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "不能操作非本人的订单");
}
OrderBean orderBean = orderByIdResponseDto.getData();
if (PayStatus.NOT_PAY.getCode().equals(orderByIdResponseDto.getData().getPayStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单未支付,无法退款");
}
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单已取消,无法退款");
}
if(OldOrderType.COLLECT_GOODS.getCode().equals(orderBean.getOrderType()) || OldOrderType.EAT_IN.getCode().equals(orderBean.getOrderType())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "麦咖啡到店订单不支持退款");
}
if (OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单配送中,退款请联系售后!");
}
/**
* 已接单,制作完成,配送中,未接单,用户可申请退款
*
* v1.9.3.1 支持已完成订单可申请退款(通过b端后台控制)
*/
List<Integer> enableRefundCodes = Lists.newArrayList(Arrays.asList(
OrderStatus.TAKE_ORDER.getCode(),
OrderStatus.RECEIPT.getCode(),
OrderStatus.COMPLETE_MAKE.getCode(),
OrderStatus.DISTRIBUTION.getCode(),
OrderStatus.COMPLETE.getCode()
));
if (enableRefundCodes.contains(orderBean.getStatus()) && PayStatus.HAVE_PAID.getCode().equals(orderBean.getPayStatus())) {
if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) {
OrderBean.RefundBean refundBean = orderBean.getRefundList().get(0);
if (RefundStatus.APPLY_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "商家正在处理中,请稍后……");
}
if (RefundStatus.REFUSE_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "您的申请已被商家拒绝,请联系门店沟通。");
}
}
List<AssortmentOpenPlatformPartnerWxappConfig> partnerWxappConfigs = cacheOpenPlatformPartnerWxappConfigManager.cacheSelectDefaultPage(userInfo.getWxAppId(), "2");
Map<String, AssortmentOpenPlatformPartnerWxappConfig> configMap = partnerWxappConfigs.stream().collect(Collectors.toMap(AssortmentOpenPlatformPartnerWxappConfig::getAppKey, Function.identity()));
//是否退配送费
boolean isRefundDeliveryFee = true;
AssortmentOpenPlatformPartnerWxappConfig refundDeliveryFeeConfig = configMap.get(OrderRefundEnum.REFUND_DELIVERY_FEE_ENABLE.getKeyValue());
LogUtil.info("orderRefund of oid:{}, {}, {}", orderBean.getOid(),orderBean.getStatus(), (null != refundDeliveryFeeConfig ? ToStringBuilder.reflectionToString(refundDeliveryFeeConfig) : null));
// 0、null表示 关闭 ; 1 表示开启
if (null != refundDeliveryFeeConfig
&& Arrays.asList(OrderStatus.DISTRIBUTION.getCode()).contains(orderBean.getStatus())
&& !ALLOW_REFUND.equals(refundDeliveryFeeConfig.getAppValue())) {
isRefundDeliveryFee = false;
}
// 未接单
if (OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) {
//商家未接单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
BaseResponse baseResponse = partnerNoTakeOrder(orderRefundVo, orderBean, orderId,AfterSalesType.USER_CANCEL,isRefundDeliveryFee);
if (baseResponse != null) {
return baseResponse;
}
// 删除订单 通知活动添加商品库存
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
} else {
//TODO 申请取消配送单
CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
cancelOrderRequest.setStoreId(orderBean.getShopId());
cancelOrderRequest.setOrderId(orderBean.getOid());
cancelOrderRequest.setOrderClient(orderAdapter.getNewOrderClient(orderBean.getSource()));
//传入的售后单类型为:2:售中用户取消 8:售后申请
cancelOrderRequest.setAfterSalesType(AfterSalesType.USER_CANCEL);
cancelOrderRequest.setReason(orderRefundVo.getReason());
cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks());
cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
cancelOrderRequest.setRefundDeliveryAmount(isRefundDeliveryFee);
BaseOrderResponse baseResponseDto = orderCenterSdkService.orderCancel(cancelOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(baseResponseDto.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), baseResponseDto.getErrmsg());
}
if (orderBean.getAmount() > 0) {
sendPosMessage(partnerId, orderBean.getShopId());
}
//通知小助手发送申请退款公众号订阅消息
sendApplyRefundSubscriptionNotice(orderBean, orderRefundVo);
//已接单可发起退款申请,查询门店有无云打印机,有则打印退款申请小票
printApplyRefundSmallTicket(orderBean, orderRefundVo);
}
}
return ResponseUtil.success();
}
/**
* 商家未接单,取消订单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
*
* @param orderRefundVo
* @param orderBean
*/
private BaseResponse partnerNoTakeOrder(OrderRefundVo orderRefundVo, OrderBean orderBean, String fatherOrderId,AfterSalesType afterSalesType,Boolean isRefundDeliveryFee) {
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = null;
Long refundId = System.currentTimeMillis();
String partnerId = orderBean.getCompanyId();
int state = PayRefundStatus.SUCCESS.getCode();
//TODO 取消配送单
if (orderBean.getAmount() != 0) {
//调用支付退款
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, fatherOrderId);
response = standardPaymentService.orderRefund(orderPayRefundRequest, LogTreadLocal.getTrackingNo());
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
//获取支付返回退款状态
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
}
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
partnerId, afterSalesType, orderRefundVo.getReason(), LogTreadLocal.getTrackingNo(), refundId.toString());
cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
if (PayRefundStatus.RUNNING.getCode().intValue() == state) {
// 退款中
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent());
} else if (PayRefundStatus.SUCCESS.getCode().intValue() == state) {
//退款成功
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent());
}
cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks());
cancelOrderRequest.setRefundDeliveryAmount(isRefundDeliveryFee);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
if (baseOrderResponse == null || baseOrderResponse.getData() == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
return null;
}
/**
* 发送pos端消息
*/
public void sendPosMessage(String partnerId, String storeId) {
PushMessageNoticeDto pushMessageNoticeDto = messageNoticeAdapter.convent2PushMessageNoticeDto(2, partnerId, storeId,
null, null, null, null);
messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo());
}
/**
* 通知小助手发送申请退款公众号订阅消息
* @param orderBean
*/
public void sendApplyRefundSubscriptionNotice(OrderBean orderBean,OrderRefundVo request) {
LogUtil.debug("sendApplyRefundSubscriptionNotice", JSONObject.toJSONString(request), null);
String partnerId = orderBean.getCompanyId();
String shopId = orderBean.getShopId();
if(orderBean.getExtInfo() == null){
return;
}
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
if(extInfo == null || extInfo.getAppid() == null){
return;
}
AssortmentOpenPlatformWxappAuthorizer authorizerAppid = wxappAuthorizerManager.findAuthorizerByWxAppId(extInfo.getAppid());
if(authorizerAppid == null){
return;
}
String accessToken = authorizerAppid.getAuthorizerAccessToken();
String orderId = orderBean.getOid();
MpTemplateMsg template = new MpTemplateMsg();
MpTemplateMsg.TemplateMsgData data = new MpTemplateMsg.TemplateMsgData();
MpTemplateMsgDataValue first = new MpTemplateMsgDataValue();
first.setValue("用户申请退款");
MpTemplateMsgDataValue keyword1 = new MpTemplateMsgDataValue();
keyword1.setValue(orderId);
MpTemplateMsgDataValue keyword2 = new MpTemplateMsgDataValue();
Double amount = orderBean.getAmount() / 100.0D;
keyword2.setValue(amount.toString()+ " 元");
MpTemplateMsgDataValue keyword3 = new MpTemplateMsgDataValue();
keyword3.setValue(orderBean.getGmtPay() == null ? "" : DateUtil.convert2String(new Date(orderBean.getGmtPay()), "yyyy-MM-dd HH:mm:ss"));
MpTemplateMsgDataValue keyword4 = new MpTemplateMsgDataValue();
keyword4.setValue(orderBean.getUserName());
MpTemplateMsgDataValue keyword5 = new MpTemplateMsgDataValue();
keyword5.setValue(orderBean.getPhone());
MpTemplateMsgDataValue remark = new MpTemplateMsgDataValue();
remark.setValue(request.getReason()+","+request.getRemarks());
data.setFirst(first);
data.setKeyword1(keyword1);
data.setKeyword2(keyword2);
data.setKeyword3(keyword3);
data.setKeyword4(keyword4);
data.setKeyword5(keyword5);
data.setRemark(remark);
template.setData(data);
MessagePushNewMqBody messagePushMqBody = new MessagePushNewMqBody();
messagePushMqBody.setPartnerId(partnerId);
messagePushMqBody.setAccessToken(accessToken);
messagePushMqBody.setTemplate(template);
messagePushMqBody.setStoreId(shopId);
messagePushMqBody.setOrderId(orderId);
messagePushMqBody.setWxappid(extInfo.getAppid());
Header header = new Header(MQAction.INSERT.getAction(), "order-application-service-api", orderId, MessageOfficialRefundPushMqConfig.MESSAGE_PUSH_ORDER_REFUND_QUEUE);
MQMessage<MessagePushNewMqBody> message = new MQMessage<>(header, messagePushMqBody);
mqService.convertAndSend(MessageOfficialRefundPushMqConfig.MESSAGE_PUSH_EXCHANGE_TOPIC, MessageOfficialRefundPushMqConfig.MESSAGE_PUSH_ORDER_REFUND_QUEUE_EKY, message);
}
/**
* 申请退款小票打印
*
* @param orderBean
* @param orderRefundVo
*/
private void printApplyRefundSmallTicket(OrderBean orderBean, OrderRefundVo orderRefundVo) {
// 有云打印机 打印小票,杯贴
try {
List<AssortmentCloudPrinter> storePrinters = cloudPrinterManager.getStorePrinters(orderBean.getCompanyId(), orderBean.getShopId());
if (null != storePrinters && storePrinters.size() > 0) {
boolean printerStatus = false;
for (AssortmentCloudPrinter cloudPrinter : storePrinters) {
if (null != cloudPrinter.getStatus() && cloudPrinter.getStatus() == 1) {
printerStatus = true;
}
}
//在线打印
if (printerStatus) {
OrderPrintDto orderPrintDto = orderAdapter.convert2OrderPrintDto(orderBean);
String reason = orderRefundVo.getReason();
if (StringUtils.isNotBlank(orderRefundVo.getRemarks())) {
reason = reason + "," + orderRefundVo.getRemarks();
}
orderPrintDto.setRemark(reason);
fmAssistantCloudPrintClient.applyRefundPrint(orderPrintDto);
}
}
} catch (Exception e) {
LogUtil.error("applyRefundPrint_error", null, null, e);
}
} }
/** /**
......
...@@ -152,19 +152,19 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ ...@@ -152,19 +152,19 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
// } // }
// } // }
// 扣减积分,扣减失败冲正积分返回错误 // 扣减积分,扣减失败冲正积分返回错误
UserScoreRequest userScoreRequest = orderSdkAdapter.convent2UserScoreRequest(orderBean, accounts, true); // UserScoreRequest userScoreRequest = orderSdkAdapter.convent2UserScoreRequest(orderBean, accounts, true);
if (userScoreRequest != null) { // if (userScoreRequest != null) {
BaseResponse userScoreResponse = memberScoreService.useScore(userScoreRequest, ""); // BaseResponse userScoreResponse = memberScoreService.useScore(userScoreRequest, "");
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, userScoreResponse.getCode())) { // if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, userScoreResponse.getCode())) {
//TODO 失败取消订单,异步冲正库存 // //TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), // CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "积分不足", "", null); // AfterSalesType.SYSTEM_CANCEL, "积分不足", "", null);
orderCenterSdkService.orderCancel(cancelOrderRequest); // orderCenterSdkService.orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 // //失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange()); // backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足"); // return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足");
} // }
} // }
// CouponBaseResponse couponBaseResponse = couponClientService.lock(orderBean, accounts); // CouponBaseResponse couponBaseResponse = couponClientService.lock(orderBean, accounts);
// if (couponBaseResponse!=null){ // if (couponBaseResponse!=null){
......
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