Commit 1a3ab1d2 by zhiheng.zhang

Merge branch 'feature/2020/08/06-1.9.34-劵锁定与解锁-张志恒'

parents 490098f8 6dd3c8de
# Created by .ignore support plugin (hsz.mobi)
.gitignore
.idea/
assortment-ordercenter-sdk/assortment-ordercenter-sdk.iml
assortment-ordercenter-sdk/target/
assortment-shoppingcart-sdk/assortment-shoppingcart-sdk.iml
assortment-shoppingcart-sdk/target/
call-back-service/call-back-service.iml
call-back-service/target/
order-application-service/order-application-service.iml
order-application-service/target/
order-group.iml
ordercenter-sdk/ordercenter-sdk.iml
ordercenter-sdk/target/
platform-sdk/platform-sdk.iml
platform-sdk/target/
push-order-service/push-order-service.iml
push-order-service/target/
shopping-cart-application-service/shopping-cart-application-service.iml
shopping-cart-application-service/target/
order-management/order-management.iml
order-management/target/
...@@ -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>1.9.2.RELEASE</version> <version>1.11.0-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -4,6 +4,7 @@ import cn.freemud.base.constant.Version; ...@@ -4,6 +4,7 @@ import cn.freemud.base.constant.Version;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO; import com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO;
import com.freemud.application.sdk.api.couponcenter.offline.domain.TransactionVO; import com.freemud.application.sdk.api.couponcenter.offline.domain.TransactionVO;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponLockRequest;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest; import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest; import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest;
...@@ -3081,4 +3082,23 @@ public class OrderSdkAdapter { ...@@ -3081,4 +3082,23 @@ public class OrderSdkAdapter {
} }
return bizTypes; return bizTypes;
} }
public CouponLockRequest convert2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts){
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();
CouponLockRequest couponLockRequest = new CouponLockRequest();
// 订单号 替换成唯一序号
couponLockRequest.setPartnerId(orderBean.getCompanyId());
couponLockRequest.setOrderId(orderBean.getOid());
couponLockRequest.setCouponCode(accountBean.getAccountId());
return couponLockRequest;
}
} }
...@@ -13,7 +13,9 @@ import com.freemud.api.assortment.datamanager.order.config.ManagerOrderBeanConfi ...@@ -13,7 +13,9 @@ import com.freemud.api.assortment.datamanager.order.config.ManagerOrderBeanConfi
import com.freemud.api.assortment.datamanager.order.manager.AssortmentOrderManager; import com.freemud.api.assortment.datamanager.order.manager.AssortmentOrderManager;
import com.freemud.api.assortment.datamanager.order.vo.DMOrderItemVo; import com.freemud.api.assortment.datamanager.order.vo.DMOrderItemVo;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponLockRequest;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest; import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponLockResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService; import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
...@@ -217,20 +219,17 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -217,20 +219,17 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足"); return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足");
} }
} }
// 核销优惠券,核销失败提示下单失败并冲正库存积分等
CouponRequest couponVerificationRequest = orderSdkAdapter.convert2CouponVerificationRequest(orderBean, accounts); // 下单成锁定劵,冻结失败提示下单失败并冲正库存积分等
if (couponVerificationRequest!=null){ CouponLockRequest couponLockRequest = orderSdkAdapter.convert2CouponLockRequest(orderBean, accounts);
// 核销券新增参数:组织机构 if (couponLockRequest!=null){
couponVerificationRequest.setChannel_codes(this.getOrgIds(orderBean.getCompanyId(), orderBean.getShopId())); BaseResponse<CouponLockResponse> couponLockResponseBaseResponse = offlineCouponSdkService.couponLock(couponLockRequest, "");
BaseResponse<CouponRedeemResponse> couponRedeemResponseBaseResponse = offlineCouponSdkService.couponRedeem(couponVerificationRequest, ""); if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponLockResponseBaseResponse.getCode())) {
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponRedeemResponseBaseResponse.getCode())) { CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),AfterSalesType.SYSTEM_CANCEL, "锁定券码失败", "", null);
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "核销券码失败", "", null);
orderCancel(cancelOrderRequest); orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 //失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange()); backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
return BaseOrderResponse.getErrorBaseOrderResponse(couponRedeemResponseBaseResponse.getCode(), "核销券码失败"); return BaseOrderResponse.getErrorBaseOrderResponse(couponLockResponseBaseResponse.getCode(), couponLockResponseBaseResponse.getMessage());
} }
} }
...@@ -1558,22 +1557,4 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -1558,22 +1557,4 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
} }
return minTime; return minTime;
} }
/**
* 查询门店的组织机构
* @param partnerId
* @param storeCode
* @return
*/
private List<String> getOrgIds(String partnerId, String storeCode) {
GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(partnerId);
request.setStoreCode(storeCode);
BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && ResponseResult.SUCCESS.getCode().equals(orgList.getCode())) {
return orgList.getData();
}
return null;
}
} }
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId> <artifactId>sdk-common-base</artifactId>
<version>1.3.9-SNAPSHOT</version> <version>1.5.2.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,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>1.9.2.RELEASE</version> <version>1.11.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
......
...@@ -22,10 +22,7 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto; ...@@ -22,10 +22,7 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto;
import cn.freemud.entities.dto.promotion.CouponPromotionDto; import cn.freemud.entities.dto.promotion.CouponPromotionDto;
import cn.freemud.entities.dto.promotion.OrderBeanRequest; import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.*;
import cn.freemud.enums.ActivityShareType;
import cn.freemud.enums.CouponStatus;
import cn.freemud.enums.CouponTypeEnum;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.BeanUtil;
import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo; import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -122,10 +119,39 @@ public class CouponAdapter { ...@@ -122,10 +119,39 @@ public class CouponAdapter {
public CouponCodeVerificationDto convert2CouponCodeVerificationDto(ActivityChannelEnum activityChannelEnum, String couponCode, String orderId, public CouponCodeVerificationDto convert2CouponCodeVerificationDto(ActivityChannelEnum activityChannelEnum, String couponCode, String orderId,
String partnerCode, String storeId, String userId, String partnerCode, String storeId, String userId,
List<CouponCodeVerificationProductDto> products, Integer discountPrice, CouponReqType couponReqType) {
CouponCodeVerificationDto couponCodeVerificationDto = new CouponCodeVerificationDto();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(couponReqType.getCode());
couponCodeVerificationDto.setPartnerId(partnerCode);
couponCodeVerificationDto.setChannel(activityChannelEnum.getCode());
couponCodeVerificationDto.setStation_id("-1");
couponCodeVerificationDto.setOperator_id("-1");
couponCodeVerificationDto.setStore_id(storeId);
// 订单号 替换成唯一序号
couponCodeVerificationDto.setTrans_id(orderId);
couponCodeVerificationDto.setBusiness_date(DateUtil.convert2Str(new Date(), DateUtil.FORMAT_yyyyMMdd));
List<CouponCodeVerificationTransDto> transactions = new ArrayList<>();
CouponCodeVerificationTransDto couponCodeVerificationTransDto = new CouponCodeVerificationTransDto();
couponCodeVerificationTransDto.setCode(couponCode);
if (discountPrice != null && discountPrice < 0) {
discountPrice = 0 - discountPrice;
}
couponCodeVerificationTransDto.setTotalAmount(discountPrice);
if (CollectionUtils.isNotEmpty(products)) {
couponCodeVerificationTransDto.setProducts(products);
}
transactions.add(couponCodeVerificationTransDto);
couponCodeVerificationDto.setTransactions(transactions);
return couponCodeVerificationDto;
}
public CouponCodeVerificationDto convert2CouponReverseDto(ActivityChannelEnum activityChannelEnum, String couponCode, String orderId,
String partnerCode, String storeId, String userId,
List<CouponCodeVerificationProductDto> products, Integer discountPrice) { List<CouponCodeVerificationProductDto> products, Integer discountPrice) {
CouponCodeVerificationDto couponCodeVerificationDto = new CouponCodeVerificationDto(); CouponCodeVerificationDto couponCodeVerificationDto = new CouponCodeVerificationDto();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1)); couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(71); couponCodeVerificationDto.setReqtype(3);
couponCodeVerificationDto.setPartnerId(partnerCode); couponCodeVerificationDto.setPartnerId(partnerCode);
couponCodeVerificationDto.setChannel(activityChannelEnum.getCode()); couponCodeVerificationDto.setChannel(activityChannelEnum.getCode());
couponCodeVerificationDto.setStation_id("-1"); couponCodeVerificationDto.setStation_id("-1");
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderType
* @Package cn.freemud.enums
* @Description: 订单状态
* @author: liming.guo
* @date: 2018/5/21 14:43
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.enums;
public enum CouponReqType {
RECTIFICATION(3, "冲正"),
WRITEOFF(71, "核销");
private Integer code;
private String desc;
CouponReqType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static CouponReqType getByCode(Integer code) {
for (CouponReqType payType : values()) {
if (payType.getCode().equals(code)) {
return payType;
}
}
return null;
}
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;
}
}
...@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.CouponCodeVerificationProductDto; ...@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.CouponCodeVerificationProductDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto; import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.ActivityClassifyCouponBean; import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.CouponReqType;
import java.util.List; import java.util.List;
...@@ -14,8 +15,7 @@ public interface CouponActivityService { ...@@ -14,8 +15,7 @@ public interface CouponActivityService {
* 核销优惠券 * 核销优惠券
* @param orderBean * @param orderBean
*/ */
BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean); BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType);
/** /**
* 移除卡包 * 移除卡包
......
...@@ -58,7 +58,7 @@ public class CouponActivityServiceImpl implements CouponActivityService { ...@@ -58,7 +58,7 @@ public class CouponActivityServiceImpl implements CouponActivityService {
* @param orderBean * @param orderBean
*/ */
@Override @Override
public BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean) { public BaseResponse verificationCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean,CouponReqType couponReqType) {
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList(); List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList();
if (CollectionUtils.isEmpty(accountList) || CollectionUtils.isEmpty(orderBean.getProductList())) { if (CollectionUtils.isEmpty(accountList) || CollectionUtils.isEmpty(orderBean.getProductList())) {
return ResponseUtil.success(); return ResponseUtil.success();
...@@ -96,17 +96,24 @@ public class CouponActivityServiceImpl implements CouponActivityService { ...@@ -96,17 +96,24 @@ public class CouponActivityServiceImpl implements CouponActivityService {
if (OrderAccountType.COUPON.getCode().equals(accountBean.getType()) if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType()) || OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) { || OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue()); CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(),couponReqType);
// 核销券新增参数:组织机构ID // 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId())); couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
try { try {
//71.券核销 //71.券核销
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto); for (int i = 2; i >= 0; i--) {
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto); CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) { ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto))); if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL); LogUtil.info("CouponReverseServiceImpl", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
break;
}
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
} }
} catch (Exception ex) { } catch (Exception ex) {
emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex))); emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex); ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
......
...@@ -2,9 +2,10 @@ package cn.freemud.service.impl; ...@@ -2,9 +2,10 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.OrderAdapter; import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.AppCreateOrderVo;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.AppCreateOrderVo;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo; import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage; import cn.freemud.entities.vo.PaysuccessNoticeMessage;
...@@ -12,7 +13,10 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo; ...@@ -12,7 +13,10 @@ import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.AppOrderService;
import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.MallOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
...@@ -28,7 +32,6 @@ import org.apache.commons.lang.StringUtils; ...@@ -28,7 +32,6 @@ import org.apache.commons.lang.StringUtils;
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 java.util.Arrays;
import java.util.Map; import java.util.Map;
/** /**
......
...@@ -69,6 +69,9 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome ...@@ -69,6 +69,9 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
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.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.request.CouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
...@@ -94,6 +97,7 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou ...@@ -94,6 +97,7 @@ 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.request.GetListByCodesRequest; import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
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.response.GetListByCodesResponse; import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse;
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;
...@@ -148,6 +152,7 @@ import java.util.function.Function; ...@@ -148,6 +152,7 @@ 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 cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service @Service
@Slf4j @Slf4j
...@@ -249,6 +254,8 @@ public class OrderServiceImpl implements Orderservice { ...@@ -249,6 +254,8 @@ public class OrderServiceImpl implements Orderservice {
private OrderDownLoadSdkService orderDownLoadSdkService; private OrderDownLoadSdkService orderDownLoadSdkService;
@Autowired @Autowired
private OrderSdkAdapter orderSdkAdapter; private OrderSdkAdapter orderSdkAdapter;
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
@Override @Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) { public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
...@@ -562,7 +569,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -562,7 +569,11 @@ public class OrderServiceImpl implements Orderservice {
if (jsonObject.containsKey("code")) { if (jsonObject.containsKey("code")) {
Integer code = (Integer) jsonObject.get("code"); Integer code = (Integer) jsonObject.get("code");
if (Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_0, code) || Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, code)) { if (Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_0, code) || Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, code)) {
// 新版支付成功的情况下code为100 try {
verificationCoupon(newMessage.getTransId());
}catch (Exception e){
log.error("核销券码失败transId:"+newMessage.getTransId(),e);
}
return newSendPaySuccessNoticeMessage(); return newSendPaySuccessNoticeMessage();
} else { } else {
return newSendPayFaileMessage(); return newSendPayFaileMessage();
...@@ -571,6 +582,25 @@ public class OrderServiceImpl implements Orderservice { ...@@ -571,6 +582,25 @@ public class OrderServiceImpl implements Orderservice {
return newSendPayFaileMessage(); return newSendPayFaileMessage();
} }
private String verificationCoupon(String transId){
QueryRelationOrderByIdResponseDto queryOrderByIdResponseDto = getQueryRelationOrderByIdResponseDto(transId);
if (queryOrderByIdResponseDto.getData() == null || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, queryOrderByIdResponseDto.getErrcode())) {
return refundFaileMessage("order query fail" + queryOrderByIdResponseDto);
}
OrderBean orderBean = new OrderBean();
if (1 == queryOrderByIdResponseDto.getData().size()) {
orderBean = queryOrderByIdResponseDto.getData().get(0);
} else {
List<OrderBean> orderBeans = queryOrderByIdResponseDto.getData().stream().filter(order -> order.getBizType().equals(1)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(orderBeans)) {
orderBean = orderBeans.get(0);
}
}
//核销券
BaseResponse baseResponse = couponActivityService.verificationCoupon(orderBean,CouponReqType.WRITEOFF);
return "核销券码返回结果" + baseResponse.getCode() + "," + baseResponse.getMessage();
}
@Override @Override
public String refundNotifyCallback(RefundNotifyCallbackRequestVo requestVo) { public String refundNotifyCallback(RefundNotifyCallbackRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo(); String trackingNo = LogTreadLocal.getTrackingNo();
...@@ -1308,6 +1338,24 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1308,6 +1338,24 @@ public class OrderServiceImpl implements Orderservice {
} }
} }
public void backOrdersStatusChange(String oid, Integer orderStatus,Integer payState) {
if (StringUtils.isEmpty(oid)) {
return;
}
ApiLog.info("backOrdersStatusChange", oid, String.valueOf(orderStatus));
OrderStatusChangeRequestDto requestDto = new OrderStatusChangeRequestDto();
requestDto.setOid(oid);
requestDto.setOrderStatus(orderStatus);
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersStatusChange", oid, backOrdersChangeOrderStatusConsumerQueue);
MQMessage<OrderStatusChangeRequestDto> message = new MQMessage<>(header, requestDto);
mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersChangeOrderStatusConsumerQueue, message);
} catch (Exception e) {
LogUtil.error("ActivityReverse", JSON.toJSONString(requestDto), "", e);
}
}
/** /**
* 发MQ去打印 * 发MQ去打印
* *
......
...@@ -123,6 +123,25 @@ public class OrderDownLoadSdkService { ...@@ -123,6 +123,25 @@ public class OrderDownLoadSdkService {
QueryByCodeResponse queryResponse = RequestThirdPartyUtils.httpGetReqComplex(this.restTemplate, url QueryByCodeResponse queryResponse = RequestThirdPartyUtils.httpGetReqComplex(this.restTemplate, url
, createBaseRequest(null, trackingNo), new ParameterizedTypeReference<QueryByCodeResponse>() { , createBaseRequest(null, trackingNo), new ParameterizedTypeReference<QueryByCodeResponse>() {
}); });
return queryResponse;
}
/**
* 根据订单号查询订单详情
*
* @param partnerId
* @param orderCode
* @param trackingNo
* @param orderCode
* @param trackingNo
* @return
*/
public QueryByCodeResponse queryOrderByCode(String partnerId, String orderCode, String trackingNo,Long startTimestamp,Long endTimestamp) {
String url = InterfaceAddressConstant.QUERY_ORDER_BY_CODE + "?orderCode=" + orderCode + "&partnerId=" + partnerId+ "&startTimestamp=" + startTimestamp+ "&endTimestamp=" + endTimestamp;
QueryByCodeResponse queryResponse = RequestThirdPartyUtils.httpGetReqComplex(this.restTemplate, url
, createBaseRequest(null, trackingNo), new ParameterizedTypeReference<QueryByCodeResponse>() {
});
return queryResponse; return queryResponse;
} }
......
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