Commit 6dbe1827 by 周晓航

移除sdk调用券码接口 改成feign调用

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 161e42b5
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;
}
package cn.freemud.handle;
import cn.freemud.entities.dto.BindingCouponTypeDto;
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.vo.CouponMsg;
import cn.freemud.enums.ResponseResult;
import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
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 cn.freemud.service.thirdparty.CouponOnlineClient;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -34,8 +23,8 @@ import java.util.stream.Collectors;
@Component
public class GetActivityMsgHandle {
@Value("${coupon.app.id}")
private String appId;
@Autowired
private CouponOnlineClient couponOnlineClient;
/**
* fisherman 获取 虚拟商品 券数据
......@@ -48,19 +37,19 @@ public class GetActivityMsgHandle {
List<CouponMsg> retList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(productBindingCoupons)) {
// 处理 券数据 这里链路有问题 效率有点低, 后续需要优化
List<String> activityCodes = productBindingCoupons.stream()
Set<String> activityCodes = productBindingCoupons.stream()
.map(BindingCouponTypeDto::getActivityCode)
.collect(Collectors.toList());
List<ActiveDetailVO> activeDetailVOS = this.batchQueryActivityInfo(activityCodes, partnerId);
.collect(Collectors.toSet());
List<FastTemplateInfoResponseVO> activeDetailVOS = this.batchQueryActivityInfo(activityCodes, partnerId);
if (CollectionUtils.isNotEmpty(activeDetailVOS)) {
// 设置 券名称 数量
Map<String, ActiveDetailVO> collect = activeDetailVOS.stream().collect(Collectors.toMap(ActiveDetailVO::getActiveCode, a -> a, (k1, k2) -> k1));
Map<String, FastTemplateInfoResponseVO> collect = activeDetailVOS.stream().collect(Collectors.toMap(FastTemplateInfoResponseVO::getTemplateCode, a -> a, (k1, k2) -> k1));
productBindingCoupons.forEach(coupon -> {
CouponMsg msg = new CouponMsg();
ActiveDetailVO activeDetailVO = collect.get(coupon.getActivityCode());
FastTemplateInfoResponseVO activeDetailVO = collect.get(coupon.getActivityCode());
msg.setActivityCode(coupon.getActivityCode());
msg.setNum(coupon.getNum());
msg.setActivityName(activeDetailVO.getActiveName());
msg.setActivityName(activeDetailVO.getTemplateName());
retList.add(msg);
});
}
......@@ -68,45 +57,22 @@ public class GetActivityMsgHandle {
return retList;
}
private List<ActiveDetailVO> batchQueryActivityInfo(List<String> activityCodes, String partnerId) {
private List<FastTemplateInfoResponseVO> batchQueryActivityInfo(Set<String> activityCodes, String partnerId) {
String trackingNo = LogThreadLocal.getTrackingNo();
String appKey = this.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);
BaseResponse<List<ActiveDetailVO>> batchQueryResponse = fmActiveSdkService.batchQueryActivityInfo(activeBatchQueryRequest, trackingNo);
if (batchQueryResponse == null
|| !ResponseResult.SUCCESS.getCode().equals(batchQueryResponse.getCode())
|| CollectionUtils.isEmpty(batchQueryResponse.getData())) {
return null;
}
return batchQueryResponse.getData();
}
FastBatchQueryTemplateInfoRequest request = new FastBatchQueryTemplateInfoRequest();
request.setPartnerId(partnerId);
request.setTemplateCode(activityCodes);
request.setTrackingNo(trackingNo);
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())) {
CouponResponseDTO<List<FastTemplateInfoResponseVO>> responseDTO = couponOnlineClient.fastBatchQueryTemplateInfo(request);
if (responseDTO == null
|| !Objects.equals(responseDTO.getStatusCode(),100)
|| CollectionUtils.isEmpty(responseDTO.getResult())) {
return null;
}
appKey = appKeyVOBaseResponse.getData().getAppKey();
redisCache.save(key + partnerId, appKey);
}
return appKey;
List<FastTemplateInfoResponseVO> result = responseDTO.getResult();
return result;
}
}
......@@ -5,12 +5,17 @@ import cn.freemud.annotations.IgnoreFeignLogAnnotation;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import cn.freemud.entities.dto.coupon.CouponResponseDTO;
import cn.freemud.entities.dto.coupon.FastBatchQueryTemplateInfoRequest;
import cn.freemud.entities.dto.coupon.FastTemplateInfoResponseVO;
import cn.freemud.interceptor.FormSupportConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
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;
@FeignClient(name = "OPEN-STORE-ONLINE-COUPON-SERVICE", url = "${saas.coupononlineclient.feign.url}", configuration = FormSupportConfig.class)
......@@ -24,4 +29,14 @@ public interface CouponOnlineClient {
)
GetCouponDetailResponseDto getCouponDetails(@RequestParam Map<String, ?> map);
/**
* 新版 根据券模板查询 券基础信息数据
* @param request
* @return
*/
@IgnoreFeignLogAnnotation(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