Commit 161e42b5 by 周晓航

替换sdk 旧接口/batchQueryActivityInfo 改成feign

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent a1a190f3
package cn.freemud.entities.dto.coupon;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/9 下午2:45
* @description :
*/
@Data
public class CouponResponseDTO<T> {
private Integer statusCode;
/**
* 返回信息
*/
private String msg;
private T result;
}
package cn.freemud.entities.dto.coupon;
import lombok.Data;
import java.util.Set;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/9 下午2:42
* @description :
*/
@Data
public class FastBatchQueryTemplateInfoRequest {
/**
* 商户号
*/
private String partnerId;
/**
* 模板编号列表
*/
private Set<String> templateCode;
private String trackingNo;
}
package cn.freemud.entities.dto.coupon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/9 下午2:43
* @description :
*/
@Data
public class FastTemplateInfoResponseVO {
@ApiModelProperty(value = "模板编号", required = true)
private String templateCode;
@ApiModelProperty(value = "模板名称", required = true)
private String templateName;
@ApiModelProperty(value = "券类型:0 商品券 1 代金券 3 折扣券 4 换购券 5 配送券 6商品兑换券 7买M免N券", required = true)
private Integer type;
@ApiModelProperty("券子类型,目前只对商品券生效,0:白名单商品券,1:黑名单商品券")
private Integer subType;
@ApiModelProperty(value = "固定有效期开始时间,格式YYYY-MM-DD HH:mm:ss", required = true)
private Date effectiveStartTime;
@ApiModelProperty(value = "固定有效结束时间,格式YYYY-MM-DD HH:mm:ss", required = true)
private Date effectiveEndTime;
@ApiModelProperty(value = "领券结束时间,格式YYYY-MM-DD HH:mm:ss", required = true)
private Date receiveEndTime;
@ApiModelProperty(value = "领券开始时间,格式YYYY-MM-DD HH:mm:ss", required = true)
private Date receiveStartTime;
@ApiModelProperty(value = "启用金额,单位:分", required = true)
private Integer minAmount;
@ApiModelProperty(value = "券面值,折扣券时,10代表1折,65代表6.5折。其他券时单位为分,如100=1元", required = true)
private Integer faceValue;
@ApiModelProperty("固定时长有效期类型的券,领取后等待生效天数,0代表立即生效。")
private Integer fromDayEffective;
@ApiModelProperty("固定时长有效期类型的券,生效后几天内有效")
private Integer effectiveDays;
@ApiModelProperty("券图片")
private String logo;
@ApiModelProperty("券扩展类型")
private Integer extentType;
@ApiModelProperty("门店限制类型,当“门店或渠道限制类型”为“门店限制”时生效,当 1:所有门店,2:部分门店,3:发券指定门店")
private Integer storeLimitType;
@ApiModelProperty("门店或渠道限制类型,1:门店限制,2:渠道限制")
private Integer storeChannelLimitType;
@ApiModelProperty("活动状态:0未启用、 1启用、2开始、 3结束、 4暂停、5作废、6禁用")
private Integer status;
}
......@@ -10,6 +10,9 @@ import cn.freemud.constant.CommonRedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.Active;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.coupon.CouponResponseDTO;
import cn.freemud.entities.dto.coupon.FastBatchQueryTemplateInfoRequest;
import cn.freemud.entities.dto.coupon.FastTemplateInfoResponseVO;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.product.GetValidateProductInfoDto;
import cn.freemud.entities.dto.product.ProductInfo;
......@@ -21,13 +24,13 @@ import cn.freemud.entities.vo.NgsSellCouponCreateOrderVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.entities.vo.SellCouponCreateOrderVo;
import cn.freemud.enums.*;
import cn.freemud.enums.integralproduct.IntegralProductStatusEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService;
import cn.freemud.service.OrderFactoryService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.utils.AppLogUtil;
......@@ -35,13 +38,7 @@ import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO;
import com.freemud.application.sdk.api.couponcenter.online.domain.AppKeyVO;
import com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest;
import com.freemud.application.sdk.api.couponcenter.online.request.PartnerRequest;
import com.freemud.application.sdk.api.couponcenter.online.service.FMActiveSdkService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
......@@ -67,7 +64,6 @@ import com.freemud.application.sdk.api.promotioncenter.response.PromotionRespons
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.stockapi.service.StockSdkService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
......@@ -78,7 +74,6 @@ import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -118,8 +113,6 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Autowired
private OrderServiceImpl orderservice;
@Autowired
private StoreCenterService storeCenterService;
@Autowired
private OrderAdapter orderAdapter;
......@@ -167,7 +160,8 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
@Autowired
private PayServiceImpl payService;
@Autowired
private CouponOnlineClient couponOnlineClient;
/**
* 抖音卖券
*/
......@@ -477,39 +471,30 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
if (CollectionUtils.isEmpty(productBindingCoupons)) {
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
}
// 产品确认 暂时不需要改逻辑
// List<GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean> products = productInfosByIds.getData().getProducts();
//
// for (GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean product : products) {
// Integer status = product.getStatus();
// if (!Objects.equals(status, IntegralProductStatusEnum.STATUS_2.getCode())) {
// return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+skuId+"包含的商品已失效,请联系门店尽快处理");
// }
// }
List<String> activityCodes = new ArrayList<>();
Set<String> activityCodes = new HashSet<>();
for (GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType productBindingCouponType : productBindingCoupons) {
activityCodes.add(productBindingCouponType.getActivityCode());
}
//批量查询活动详情
List<ActiveDetailVO> activeDetailVOS = batchQueryActivityInfo(partnerId, activityCodes, trackingNo);
List<FastTemplateInfoResponseVO> activeDetailVOS = batchQueryActivityInfo(partnerId, activityCodes, trackingNo);
if (CollectionUtils.isEmpty(activeDetailVOS) || activityCodes.size() != activeDetailVOS.size()) {
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
}
//优惠券是否失效
Date now = new Date();
for (ActiveDetailVO activeDetailVO : activeDetailVOS) {
for (FastTemplateInfoResponseVO activeDetailVO : activeDetailVOS) {
if (activeDetailVO.getEffectiveEndTime() != null && activeDetailVO.getEffectiveEndTime().before(now)) {
return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+activeDetailVO.getActiveCode()+"已过期,请联系门店尽快处理");
return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+activeDetailVO.getTemplateCode()+"已过期,请联系门店尽快处理");
}
// endDate 领券结束时间 校验 当前时间小鱼endDate
if (activeDetailVO.getEndDate() != null && activeDetailVO.getEndDate().before(now)) {
return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+activeDetailVO.getActiveCode()+"已过期,请联系门店尽快处理");
if (activeDetailVO.getReceiveStartTime() != null && activeDetailVO.getReceiveStartTime().before(now)) {
return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+activeDetailVO.getTemplateCode()+"已过期,请联系门店尽快处理");
}
// state = 1 || 2 可以买
if (activeDetailVO.getState() !=null) {
Integer state = activeDetailVO.getState();
if (activeDetailVO.getStatus() !=null) {
Integer state = activeDetailVO.getStatus();
if (!Objects.equals(state,1) && !Objects.equals(state,2)) {
return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+activeDetailVO.getActiveCode()+"已失效,请联系门店尽快处理");
return ResponseUtil.error(ResponseResult.COUPON_INVAILD.getCode(),"您需要购买的券包,包含的优惠券券编号"+activeDetailVO.getTemplateCode()+"已失效,请联系门店尽快处理");
}
}
}
......@@ -617,71 +602,26 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
* @param trackingNo
* @return
*/
private List<ActiveDetailVO> batchQueryActivityInfo(String partnerId, List<String> activityCodes, String trackingNo) {
String appKey = getAppKey(partnerId, trackingNo);
if (StringUtils.isEmpty(appKey)) {
return null;
}
ActiveBatchQueryRequest activeBatchQueryRequest = new ActiveBatchQueryRequest();
//去重
List<String> activeCodes = new ArrayList<>(new HashSet(activityCodes));
activeBatchQueryRequest.setActiveCode(activeCodes);
activeBatchQueryRequest.setAppSecret(appKey);
activeBatchQueryRequest.setPartnerId(Integer.parseInt(partnerId));
FMActiveSdkService fmActiveSdkService = SDKCommonBaseContextWare.getBean(FMActiveSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<List<ActiveDetailVO>> batchQueryResponse = fmActiveSdkService.batchQueryActivityInfo(activeBatchQueryRequest, trackingNo);
if (batchQueryResponse == null || !SUCCESS.equals(batchQueryResponse.getCode()) || CollectionUtils.isEmpty(batchQueryResponse.getData())) {
private List<FastTemplateInfoResponseVO> batchQueryActivityInfo(String partnerId, Set<String> activityCodes, String trackingNo) {
FastBatchQueryTemplateInfoRequest request = new FastBatchQueryTemplateInfoRequest();
request.setPartnerId(partnerId);
request.setTemplateCode(activityCodes);
request.setTrackingNo(trackingNo);
CouponResponseDTO<List<FastTemplateInfoResponseVO>> responseDTO = couponOnlineClient.fastBatchQueryTemplateInfo(request);
if (responseDTO == null
|| !Objects.equals(responseDTO.getStatusCode(),100)
|| CollectionUtils.isEmpty(responseDTO.getResult())) {
return null;
}
return batchQueryResponse.getData();
List<FastTemplateInfoResponseVO> result = responseDTO.getResult();
return result;
}
/**
* 查询组织机构
* @param partnerId
* @param storeId
* @return
*/
private List<String> getOrgIds(String partnerId, String storeId) {
GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(partnerId);
request.setStoreCode(storeId);
StoreCenterService storeCenterService = SDKCommonBaseContextWare.getBean(StoreCenterService.class);
com.freemud.application.sdk.api.base.BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && SUCCESS.equals(orgList.getCode())) {
return orgList.getData();
}
return Collections.EMPTY_LIST;
}
/**
* 获取商户秘钥
*
* @param partnerId
* @param trackingNo
* @return
*/
private String getAppKey(String partnerId, String trackingNo) {
RedisCache redisCache = SDKCommonBaseContextWare.getBean(RedisCache.class);
String key = "kgd:coupon:appKey:partner:";
String appKey = redisCache.getValue(key + partnerId);
if (StringUtils.isEmpty(appKey)) {
PartnerRequest partnerRequest = new PartnerRequest();
partnerRequest.setPartnerId(Integer.parseInt(partnerId));
partnerRequest.setAppId(appId);
FMActiveSdkService fmActiveSdkService = SDKCommonBaseContextWare.getBean(FMActiveSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<AppKeyVO> appKeyVOBaseResponse = fmActiveSdkService.getAppKey(partnerRequest, trackingNo);
if (appKeyVOBaseResponse == null || !"100".equals(appKeyVOBaseResponse.getCode())
|| appKeyVOBaseResponse.getData() == null || StringUtils.isEmpty(appKeyVOBaseResponse.getData().getAppKey())) {
return null;
}
appKey = appKeyVOBaseResponse.getData().getAppKey();
redisCache.save(key + partnerId, appKey);
}
return appKey;
}
/**
* 转换对象,从购买优惠券业务提出重写
......@@ -697,7 +637,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
* @return
*/
private CreateOrderRequest convent2NEWCreateOrderRequest(AssortmentCustomerInfoVo userLoginInfoDto,
GetProductInfosResponse productInfosResponse,List<ActiveDetailVO> activeDetailVOS,
GetProductInfosResponse productInfosResponse,List<FastTemplateInfoResponseVO> activeDetailVOS,
StoreResponse.BizVO storeInfo,
String shopId,
String cardCode,
......@@ -769,12 +709,12 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
OrderProductAddInfoDto orderProductAddInfoDto = new OrderProductAddInfoDto();
List<ProductBindingCouponType> productBindingCoupons = new ArrayList<>();
for (GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType productBindingCouponType : productBean.getProductBindingCouponTypes()){
for (ActiveDetailVO activeDetailVO : activeDetailVOS){
if(productBindingCouponType.getActivityCode().equals(activeDetailVO.getActiveCode())){
for (FastTemplateInfoResponseVO activeDetailVO : activeDetailVOS){
if(productBindingCouponType.getActivityCode().equals(activeDetailVO.getTemplateCode())){
ProductBindingCouponType productBindingCouponType2 = new ProductBindingCouponType();
productBindingCouponType2.setActivityCode(productBindingCouponType.getActivityCode());
productBindingCouponType2.setNum(productBindingCouponType.getNum());
productBindingCouponType2.setActivityName(activeDetailVO.getActiveName());
productBindingCouponType2.setActivityName(activeDetailVO.getTemplateName());
productBindingCoupons.add(productBindingCouponType2);
break;
}
......
......@@ -2,11 +2,11 @@ package cn.freemud.service.thirdparty;
//import cn.freemud.constant.IgnoreFeignLogAnnotation;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import cn.freemud.entities.dto.coupon.InvalidCouponsRequestDto;
import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto;
import cn.freemud.entities.dto.coupon.*;
import cn.freemud.interceptor.FormSupportConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
......@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
//@IgnoreFeignLogAnnotation
......@@ -38,4 +39,15 @@ public interface CouponOnlineClient {
@LogIgnoreFeign(logMessage="invalidCoupons",messageFieldName= ResponseCodeKeyConstant.MSG,statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE)
@PostMapping(value = "/coupon/state/invalid/coupons")
InvalidCouponsResponseDto invalidCoupons(@RequestBody InvalidCouponsRequestDto invalidCouponsRequestDto);
/**
* 新版 根据券模板查询 券基础信息数据
* @param request
* @return
*/
@LogIgnoreFeign(logMessage="fastBatchQueryTemplateInfo",messageFieldName= ResponseCodeKeyConstant.MSG,
statusCodeFieldName=ResponseCodeKeyConstant.STATUS_CODE)
@PostMapping(value = "/fastBatchQueryTemplateInfo")
CouponResponseDTO<List<FastTemplateInfoResponseVO>> fastBatchQueryTemplateInfo(@RequestBody FastBatchQueryTemplateInfoRequest request);
}
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