Commit a02c5b28 by ping.wu

Merge branches 'feature/20211101_礼品卡消费记录渠道_wuping' and 'qa' of…

Merge branches 'feature/20211101_礼品卡消费记录渠道_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa
parents 04856f78 4d7f91ac
......@@ -72,4 +72,10 @@ public class CombPayRequest {
private String ver ="10";
private String storeName;
private Long merchantDiscount;
/**
* @see com.freemud
* 下单所用小程序类型:1微信,2支付宝,3抖音")
*/
private Integer applicationType;
}
......@@ -4192,6 +4192,7 @@ public class OrderAdapter {
orderPayDto.setPlatforms(platforms);
orderPayDto.setOut_order_no(orderBean.getOid());
orderPayDto.setCardCode(cardNo);
orderPayDto.setApplicationType(getPayApplicationType(orderBean.getOrderClient()));
return orderPayDto;
}
......@@ -4641,4 +4642,25 @@ public class OrderAdapter {
return name;
}
/**
* 礼品卡支付参数转化
*/
public Integer getPayApplicationType(String orderClient) {
Integer applicationType = PayApplicationTypeEnum.WECHAT.getType();
switch (orderClient) {
case "2":
applicationType = PayApplicationTypeEnum.WECHAT.getType();
break;
case "3":
applicationType = PayApplicationTypeEnum.ALIPAY.getType();
break;
case "27":
applicationType = PayApplicationTypeEnum.BYTE_DANCE.getType();
break;
default:
break;
}
return applicationType;
}
}
package cn.freemud.entities.dto.order;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -32,6 +35,13 @@ public class FacePayRequestDto {
private Long clientCode;
private String code;
private Long undisAmount;
// private List<CodePayRequest.PayProduct> products;
private String payCode;
private String cardPassword;
private Long merchantDiscount;
//下单所用小程序类型:1微信,2支付宝,3抖音 礼品卡支付新增,记录渠道
private Integer applicationType;
private List<CodePayRequest.PayProduct> products;
}
package cn.freemud.enums;
public enum PayApplicationTypeEnum {
WECHAT(1, "微信小程序"),
ALIPAY(2, "支付宝小程序"),
BYTE_DANCE(3, "抖音小程序"),
;
private int type;
private String desc;
PayApplicationTypeEnum() {
}
PayApplicationTypeEnum(Integer type, String desc) {
this.type = type;
this.desc = desc;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
......@@ -735,7 +735,7 @@ public class PayServiceImpl {
* 纯储值卡或礼品卡支付
*/
public OrderPayResponse svcPay(String cardCode, OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest();
FacePayRequestDto request = new FacePayRequestDto();
OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
......@@ -749,6 +749,7 @@ public class PayServiceImpl {
request.setOperatorId("1");
request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount());
request.setApplicationType(orderAdapter.getPayApplicationType(orderBean.getOrderClient()));
SVCCardAmountRequestDto svcRequest = new SVCCardAmountRequestDto();
svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode));
......@@ -769,12 +770,13 @@ public class PayServiceImpl {
return orderPayResponse;
}
//svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
com.freemud.application.sdk.api.base.BaseResponse<FacePayResponseDto> responseBase = paymentNewClient.codePay(request);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())
|| responseBase.getData() == null || !Objects.equals(responseBase.getData().getResultCode(), ResponseCodeConstant.RESPONSE_SUCCESS)) {
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "卡支付异常" : responseBase.getMessage());
} else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
FacePayResponseDto codePayResponse = responseBase.getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
......
......@@ -58,4 +58,10 @@ public interface PaymentNewClient {
@PostMapping("paymentcenter/invoice/create")
com.freemud.application.sdk.api.base.BaseResponse<InvoiceCreateResponse> createInvoice(@RequestBody InvoiceCreateRequest request);
//线下付,储值卡/礼品卡支付
@LogIgnoreFeign(logMessage="codePay",statusCodeFieldName= ResponseCodeKeyConstant.STATUS_CODE)
@PostMapping("paymentcenter/codePay")
com.freemud.application.sdk.api.base.BaseResponse<FacePayResponseDto> codePay(@RequestBody FacePayRequestDto orderPayDto);
}
......@@ -35,6 +35,7 @@ public class GetCouponDetailResponseDto {
private Integer storeChannelLimit;
private Active active;
private List<ActiveProduct> activeProduct;
//活动门店限制(非发券指定门店活动使用)
private List<ActiveRestrictionVOS> activeRestrictionVOS;
/**
* 可核销周,时间段设置
......@@ -66,6 +67,8 @@ public class GetCouponDetailResponseDto {
private List<ActiveChannel> activeChannels;
// private List<ActiveRedeemTimeIntervalVO> activeRedeemTimeIntervalList;
private Integer storeLimitLevel;
//为0可用
private Integer storelimit;
private String limitStoreId;
// private Integer today_available_times;
private Integer total_available_times;
......
......@@ -18,4 +18,7 @@ public class GetMemberCouponRequestVo {
private String couponCode;
// 门店ID
private String storeId;
//是否 校验券门店是否可用
private Boolean checkStoreId = false;
}
......@@ -20,21 +20,7 @@ import java.util.List;
import java.util.Map;
public interface CouponService {
/**
* 获取优惠券列表
*
* @param getMemberCouponListRequestVo
* @return
*/
// BaseResponse<GetMemberCouponListResponseVo> getCouponList(GetMemberCouponListRequestVo getMemberCouponListRequestVo);
/**
* 添加到微信卡包
*
* @param requestVo
* @return
*/
// AddWeiXinCardResponseVo addWeiXinCard(AddWeiXinCardRequestVo requestVo);
/**
* 获取卡券详情
......@@ -47,40 +33,6 @@ public interface CouponService {
List<GetMemberCouponListResponseDto.Result.MemberCoupon> getValidMemberCouponList(GetMemberCouponListRequestDto getMemberCouponListRequestDto, Integer orderType);
/**
* 批次查询券详情
*
* @param partnerId
* @param storeId
* @param codes
* @return
*/
List<GetCouponDetailResponseDto.Details> getMemberCoupons(String partnerId, String storeId, List<String> codes);
/**
* 获取麦咖啡卡券详情
*
* @param requestVo
* @return
*/
// GetCouponDetailResponseDto getMCCafeMemberCoupon(GetMemberCouponRequestVo requestVo);
/**
* 同步券到会员卡包(投放会员卡包)
*
* @param requestVo
* @return
*/
// BaseResponse receiveMemberCoupon(ReceiveMemberCouponRequestVo requestVo);
/**
* 调用会员接口列表
*
* @param cartGoods
* @return
*/
//ActivityClassifyCouponBean availableCoupon(List<CartGoods> cartGoods, String partnerId, String userId, String storeId, String couponCode, boolean hasGoodsCoupon, Integer orderType, int isNew,String appId,String MenuType, String unChooseCouponCode);
/**
* 调用会员接口列表
*
* @param cartGoods
......@@ -93,18 +45,6 @@ public interface CouponService {
*/
String getAppSecret(String partnerId);
/**
* 获取卡券服务麦咖啡商户密钥
*/
// String getMCCafeAppSecret(String partnerId);
/**
* 通过code校验券是否存在,返回商品券信息pid、price、code
*
* @param requestDto
* @return
*/
// CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto);
CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto, String goodsId);
......@@ -113,17 +53,6 @@ public interface CouponService {
GetProductsVo getSpqProductInfo(CheckSpqInfoRequestDto requestDto, String goodsId);
// /**
// * 领券
// *
// * @param activityCodes
// * @param partnerId
// * @param storeId
// * @param mobile
// * @param userId
// */
// List<CreateCouponBeanVo> createCoupon(List<ActivityDiscountDto> activityCodes, String partnerId, String storeId, String mobile, String userId);
GetCouponBarCodeResponseVo getCouponBarCode(String couponCode);
......@@ -136,5 +65,4 @@ public interface CouponService {
*/
Map<String, Boolean> couponOrderWay(String partnerId, List<String> activityCodes, Integer orderTye);
void checkValidCoupon(CouponPromotionVO couponPromotionVO, List<String> couponList, Map<String, List<String>> spqIdToCartUuid, String couponCode, List<CartGoods> cartGoodsList);
}
......@@ -26,7 +26,6 @@ import cn.freemud.entities.vo.coupon.CouponAvailableReqVo;
import cn.freemud.entities.vo.coupon.CouponStateVo;
import cn.freemud.entities.vo.coupon.Product;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.CommonService;
import cn.freemud.service.CouponService;
......@@ -38,11 +37,10 @@ import cn.freemud.utils.RedisUtil;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.productcenter.constant.ResponseConstant;
import com.freemud.application.sdk.api.util.SignUtil;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -88,87 +86,7 @@ public class CouponServiceImpl implements CouponService {
@Value("${coupon.app.id}")
private String appid;
/**
* 获取优惠券列表
*
* @param getMemberCouponListRequestVo
* @return
*/
// @Override
// public BaseResponse<GetMemberCouponListResponseVo> getCouponList(GetMemberCouponListRequestVo getMemberCouponListRequestVo) {// UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(getMemberCouponListRequestVo.getSessionId());
//
// List<Integer> statusFlags = getMemberCouponListRequestVo.getStatusFlags();
// if (CollectionUtils.isNotEmpty(statusFlags) && statusFlags.size() == 1 && statusFlags.contains(0)) {
// statusFlags.add(-2);
// }
// String partnerId = getMemberCouponListRequestVo.getPartnerId();
// String memberId = userLoginInfoDto.getMemberId();
// Integer pageNumber = getMemberCouponListRequestVo.getPageNumber() == null ? 1 : getMemberCouponListRequestVo.getPageNumber();
// Integer pageSize = getMemberCouponListRequestVo.getPageSize() == null ? 10 : getMemberCouponListRequestVo.getPageSize();
// Integer pageCount = null;
// Integer totalRecord = null;
// // 会员服务的优惠券列表
// List<GetMemberCouponListResponseDto.Result.MemberCoupon> couponList = null;
// GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(partnerId, memberId);
// getMemberCouponListRequestDto.setStatusFlags(statusFlags);
// getMemberCouponListRequestDto.setPageNum(pageNumber);
// getMemberCouponListRequestDto.setPageSize(pageSize);
// GetMemberCouponListResponseDto.Result result = this.getMemberCouponList(getMemberCouponListRequestDto);
// if (result != null) {
// couponList = result.getMemberCoupons();
// pageCount = result.getTotalPages();
// totalRecord = result.getTotalCount();
// }
//
// //查询有效优化券是否可以加入微信卡包状态
// AddWeixinCardJudgeResponseDto responseDto = null;
// if (CollectionUtils.isNotEmpty(couponList) && statusFlags.contains(0)) {
// AddWeixinCardJudgeRequestDto requestDto = couponAdapter.convert2AddWeixinCardJudgeRequestDto(couponList, partnerId, userLoginInfoDto.getUnionId());
// responseDto = openPlatformClient.addWeixinCardJudge(requestDto);
// }
// //获取券条形码
// Map<String, String> couponBarCodeMap = getCouponBarCodeMap(couponList);
// // 复制优惠券到Vo
// List<GetMemberCouponListResponseVo.MemberCoupon> memberCouponList = couponAdapter.convert2MemberCouponList(couponList, responseDto, couponBarCodeMap);
// //TODO 根据到期日期先后排序
// if (statusFlags.contains(0)) {
// //有效券
// memberCouponList.sort(Comparator.comparing(GetMemberCouponListResponseVo.MemberCoupon::getEndTime));
// } else {
// //无效券
// memberCouponList.sort(Comparator.comparing(GetMemberCouponListResponseVo.MemberCoupon::getEndTime).reversed());
// }
//
// GetMemberCouponListResponseVo getMemberCouponListResponseVo = new GetMemberCouponListResponseVo();
// getMemberCouponListResponseVo.setPageCount(pageCount == null ? 0 : pageCount);
// getMemberCouponListResponseVo.setTotalRecord(totalRecord == null ? 0 : totalRecord);
// getMemberCouponListResponseVo.setCoupons(memberCouponList);
// return ResponseUtil.success(getMemberCouponListResponseVo);
// }
// @Override
// public AddWeiXinCardResponseVo addWeiXinCard(AddWeiXinCardRequestVo requestVo) {
// UserLoginInfoDto userLoginInfoDto = userService.getUserLoginInfoBySessionId(requestVo.getSessionId());
// String appId = userLoginInfoDto.getWxAppid();
// String partnerId = userLoginInfoDto.getPartnerId();
// AddWeiXinCardResponseVo responseVo = new AddWeiXinCardResponseVo();
// //TODO 组装请求参数
// AddWeixinCardCodeRequestDto requestDto = new AddWeixinCardCodeRequestDto();
// requestDto.setWxAppid(appId);
// requestDto.setPartnerId(partnerId);
// List<AddWeixinCardCodeRequestDto.WeixinCardCodeAdd> list = Lists.newArrayList();
// AddWeixinCardCodeRequestDto.WeixinCardCodeAdd cardCodeAdd = new AddWeixinCardCodeRequestDto.WeixinCardCodeAdd();
// cardCodeAdd.setActivityCode(requestVo.getActivityCode());
// cardCodeAdd.setCouponCode(requestVo.getCouponCode());
// list.add(cardCodeAdd);
// requestDto.setWeixinCardCodeAddsList(list);
// AddWeixinCardCodeResponseDto responseDto = openPlatformClient.addWeiXinCardCode(requestDto);
// if (!responseDto.getCode().equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR)) {
// throw new ServiceException(ResponseResult.COUPON_NOT_ADD_WEIXIN_CARD);
// }
// BeanUtil.convertBean(responseDto.getResult(), responseVo);
// return responseVo;
// }
/**
* 获取会员服务的优惠券列表
......@@ -212,12 +130,6 @@ public class CouponServiceImpl implements CouponService {
}
// @Override
// public BaseResponse receiveMemberCoupon(ReceiveMemberCouponRequestVo requestVo) {
// MemberAddCouponVo memberAddCouponVo = couponAdapter.convert2MemberAddCouponVo(requestVo);
// MemberBaseRespVo memberBaseRespVo = memberProductService.receiveMemberCoupon(memberAddCouponVo);
// return ResponseUtil.success(memberBaseRespVo);
// }
@Override
public GetCouponDetailResponseDto getMemberCoupon(GetMemberCouponRequestVo requestVo) {
......@@ -233,6 +145,10 @@ public class CouponServiceImpl implements CouponService {
// 券码接口新增参数:组织机构(多个用英文逗号分离)
String channelIds = commonService.getOrgIdsAsString(requestVo.getPartnerId(), requestVo.getStoreId());
map.put(Finals.CHANNEL_ID_LIST, channelIds);
if(requestVo.getCheckStoreId()){
map.put(Finals.STOREID, requestVo.getStoreId());
map.put(Finals.STORECHECK, "0");
}
String appSecret = getAppSecret(requestVo.getPartnerId());
String sign = SignUtil.createMD5Sign(map, appSecret);
map.put(Finals.SIGN, sign);
......@@ -243,67 +159,6 @@ public class CouponServiceImpl implements CouponService {
return null;
}
// @Override
// public GetCouponDetailResponseDto getMCCafeMemberCoupon(GetMemberCouponRequestVo requestVo) {
// //TODO 券详情查券服务
// Map<String, String> map = new TreeMap<String, String>();
// if (StringUtils.isBlank(requestVo.getPartnerId()) || StringUtils.isBlank(requestVo.getCouponCode())) {
// return null;
// }
// map.put(Finals.CODES, requestVo.getCouponCode());
// map.put(Finals.PARTNER_ID, requestVo.getPartnerId());
// map.put(Finals.MERCHANT_ID, requestVo.getPartnerId());
// map.put(Finals.ACTION, "code.allDetails");
// // 券码接口新增参数:组织机构(多个用英文逗号分离)
// String channelIds = commonService.getOrgIdsAsString(requestVo.getPartnerId(), requestVo.getStoreId());
// map.put(Finals.CHANNEL_CODE_LIST, channelIds);
// String appSecret = getMCCafeAppSecret(requestVo.getPartnerId());
// String sign = SignUtil.createMD5Sign(map, appSecret);
// map.put(Finals.SIGN, sign);
// GetCouponDetailResponseDto responseDto = couponOnlineMCCafeClient.getMCCafeCouponDetails(map);
// if (ResponseCodeConstant.RESPONSE_SUCCESS_1.equals(responseDto.getResult())) {
// return responseDto;
// }
// return null;
// }
/**
* 批次查询
*/
@Override
public List<GetCouponDetailResponseDto.Details> getMemberCoupons(String partnerId, String storeId, List<String> codes) {
String appSecret = getAppSecret(partnerId);
// 最大15一提交
int maxNum = 15;
int count = codes.size() / maxNum;
List<GetCouponDetailResponseDto.Details> details = Lists.newArrayList();
//TODO 券详情查券服务
for (int j = 0; j <= count; j++) {
List calCouponCodes = null;
if (j == count) {
calCouponCodes = codes.subList(maxNum * j, codes.size());
} else {
calCouponCodes = codes.subList(maxNum * j, maxNum * j + maxNum);
}
Map<String, String> map = new TreeMap<String, String>();
String couponCodes = calCouponCodes.toString();
if (StringUtils.isBlank(couponCodes)) {
return Collections.emptyList();
}
map.put(Finals.CODES, couponCodes.substring(1, couponCodes.length() - 1).replace(" ", ""));
map.put(Finals.PARTNER_ID, partnerId);
map.put(Finals.MERCHANT_ID, partnerId);
map.put(Finals.ACTION, "code.allDetails");
map.put(Finals.CHANNEL_ID_LIST, commonService.getOrgIdsAsString(partnerId, storeId));
String sign = SignUtil.createMD5Sign(map, appSecret);
map.put(Finals.SIGN, sign);
GetCouponDetailResponseDto responseDto = couponOnlineClient.getCouponDetails(map);
if (ResponseCodeConstant.RESPONSE_SUCCESS_1.equals(responseDto.getResult())) {
details.addAll(responseDto.getDetails());
}
}
return details;
}
@Override
public String getAppSecret(String partnerId) {
......@@ -321,21 +176,6 @@ public class CouponServiceImpl implements CouponService {
return appSecret;
}
// @Override
// public String getMCCafeAppSecret(String partnerId) {
// // 获取券服务的密钥
// String couponAppSecret = RedisUtil.getCouponAppSecret(partnerId);
// String appSecret = redisCache.getValue(couponAppSecret);
// if (StringUtils.isBlank(appSecret)) {
// GetAppKeyResponseDto getAppKeyResponseDto = cardBinMCCafeClient.getMCCafeAppKey(GetAppKeyRequestDto.builder().partnerId(partnerId).appId(appid).build());
// if (Objects.equals(String.valueOf(getAppKeyResponseDto.getStatusCode()), ResponseResult.SUCCESS.getCode())
// && getAppKeyResponseDto.getData() != null) {
// redisCache.save(couponAppSecret, getAppKeyResponseDto.getData().getAppKey());
// appSecret = getAppKeyResponseDto.getData().getAppKey();
// }
// }
// return appSecret;
// }
/**
* key = 活动code , value = 返回是否匹配点餐方式
......@@ -701,12 +541,11 @@ public class CouponServiceImpl implements CouponService {
}
}
// @Override
/**
* 老版本券校验
*/
public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto) {
ShoppingSdkLogUtil.infoLog("OldCheckSpqInfo","requestDto");
String partnerId = requestDto.getPartnerId();
String couponCode = requestDto.getCouponCode();
String storeId = requestDto.getStoreId();
......@@ -715,6 +554,7 @@ public class CouponServiceImpl implements CouponService {
requestVo.setPartnerId(partnerId);
requestVo.setCouponCode(couponCode);
requestVo.setStoreId(requestDto.getStoreId());
requestVo.setCheckStoreId(true);
GetCouponDetailResponseDto couponDetailResponseDto = this.getMemberCoupon(requestVo);
if (couponDetailResponseDto == null || !couponDetailResponseDto.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null;
......@@ -724,16 +564,20 @@ public class CouponServiceImpl implements CouponService {
&& !Objects.equals(couponDetailResponseDto.getDetails().get(0).getStatus(), CouponStatus.STATUS_2.getCode())) {
return null;
}
List<String> couPonstoreIds = Lists.newArrayList();
// List<String> couPonstoreIds = Lists.newArrayList();
//TODO 判断该券是否在这个门店下(一个券可以在多个门店下使用)
if (CollectionUtils.isNotEmpty(couponDetailResponseDto.getDetails().get(0).getActiveRestrictionVOS())) {
couponDetailResponseDto.getDetails().get(0).getActiveRestrictionVOS().forEach(activeRestrictionVOS -> {
couPonstoreIds.add(activeRestrictionVOS.getStoreIdPartner());
});
}
if (CollectionUtils.isNotEmpty(couPonstoreIds) && !couPonstoreIds.contains(storeId)) {
return null;
// couponDetailResponseDto.getDetails().get(0).getActiveRestrictionVOS().forEach(activeRestrictionVOS -> {
// couPonstoreIds.add(activeRestrictionVOS.getStoreIdPartner());
// });
GetCouponDetailResponseDto.Details detail = couponDetailResponseDto.getDetails().get(0);
if (detail.getStorelimit() != 0 || detail.getStoreChannelLimit() != 0) {
return null;
}
}
// if (CollectionUtils.isNotEmpty(couPonstoreIds) && !couPonstoreIds.contains(storeId)) {
// return null;
// }
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = couponDetailResponseDto.getDetails().get(0).getActiveProduct().get(0).getProductIdPartner();
......@@ -898,6 +742,7 @@ public class CouponServiceImpl implements CouponService {
requestVo.setPartnerId(partnerId);
requestVo.setCouponCode(couponCode);
requestVo.setStoreId(requestDto.getStoreId());
requestVo.setCheckStoreId(true);
GetCouponDetailResponseDto couponDetailResponseDto = this.getMemberCoupon(requestVo);
if (couponDetailResponseDto == null || !couponDetailResponseDto.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null;
......@@ -932,16 +777,17 @@ public class CouponServiceImpl implements CouponService {
return null;
}
//判断该券是否在这个门店下(一个券可以在多个门店下使用)
List<String> couponStoreIds = Lists.newArrayList();
// List<String> couponStoreIds = Lists.newArrayList();
for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) {
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus()) && !CouponStatus.STATUS_2.getCode().equals(detail.getStatus())) continue;
for (GetCouponDetailResponseDto.ActiveRestrictionVOS activeRestrictionVO : detail.getActiveRestrictionVOS()) {
couponStoreIds.add(activeRestrictionVO.getStoreIdPartner());
// for (GetCouponDetailResponseDto.ActiveRestrictionVOS activeRestrictionVO : detail.getActiveRestrictionVOS()) {
// couponStoreIds.add(activeRestrictionVO.getStoreIdPartner());
// }
if (detail.getStorelimit() != 0 || detail.getStoreChannelLimit() != 0) {
return null;
}
}
if (CollectionUtils.isNotEmpty(couponStoreIds) && !couponStoreIds.contains(storeId)) {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = goodsId;
......@@ -1033,7 +879,6 @@ public class CouponServiceImpl implements CouponService {
|| valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
return null;
}
return productsVo;
}
......@@ -1087,218 +932,6 @@ public class CouponServiceImpl implements CouponService {
return productsVo;
}
@Autowired
private ActivityClient activityClient;
private final static String application = "isaas";
/**
* 券来源:
* 60:wechat
* 61:xinmeida
* 62:tmall
* 63:isaas
*/
private final static String SOURCE_FLAG = "63";
private final static String FORMAT_YYYY_DD_23_59_59 = "yyyy-MM-dd 23:59:59";
// /**
// * 领券
// * 领券不需要关心应用和点餐方式
// *
// * @param activityDiscountDtos
// * @param partnerId
// * @param storeId
// * @param mobile
// * @param userId
// */
// @Override
// public List<CreateCouponBeanVo> createCoupon(List<ActivityDiscountDto> activityDiscountDtos, String partnerId, String storeId, String mobile, String userId) {
// Map<String, Integer> activityDiscountMap = activityDiscountDtos.stream().collect(Collectors.toMap(ActivityDiscountDto::getDiscountId, a -> a.getCount(), (k1, k2) -> k1));
// List<String> activityCodes = activityDiscountDtos.stream().map(ActivityDiscountDto::getDiscountId).collect(Collectors.toList());
// ActivityQueryRequestDto activityQueryRequestDto = ActivityQueryRequestDto.builder()
// .ver(Version.VERSION_1)
// .partnerCode(partnerId)
// .storeId(storeId)
// .userId(userId)
// .application(application)
// .activityCodes(activityCodes)
// .isShowBenefit(1)
// .isShowCycles(0)
// .isShowGoods(1)
// .isShowSendGoods(0)
// .isShowStore(0)
// .isShowTime(0)
// .build();
// // 领券调用统一查询接口不需要关心 appid, 和 点餐方式
// ActivityQueryResponseDto activityQueryResponseDto = activityClient.query(activityQueryRequestDto);
// if (Objects.equals(activityQueryResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())
// && CollectionUtils.isNotEmpty(activityQueryResponseDto.getResult())) {
// Long now = System.currentTimeMillis();
// // 构建券
// List<CreateCouponVo> coupons = buildCreateCoupons(activityDiscountMap, activityQueryResponseDto, now);
// GetCouponVo getCouponVo = new GetCouponVo();
// //
// getCouponVo.setPartner_id(Integer.valueOf(couponPartnerId));
// getCouponVo.setMerchant_id(Integer.valueOf(partnerId));
// if (StringUtils.isBlank(mobile)) {
// mobile = "18900000000";
// }
// getCouponVo.setMobile(mobile);
// getCouponVo.setMemberId(userId);
// getCouponVo.setAppSecret(getAppSecret(couponPartnerId));
// getCouponVo.setCoupons(coupons);
// GetCodeRespVo getCodeRespVo = getCouponService.getCoupons(getCouponVo);
// Map<String, ActivityResponseDto> activityResponseDtoMap = activityQueryResponseDto.getResult().stream().collect(
// Collectors.toMap(ActivityResponseDto::getActivityCode, a -> a, (k1, k2) -> k1));
// if (Objects.equals(String.valueOf(getCodeRespVo.getResult()), ResponseResult.SUCCESS.getCode()) && CollectionUtils.isNotEmpty(getCodeRespVo.getCodeList())) {
// List<ActivityResponseDto> activityResponseDtos = Lists.newArrayList();
// getCodeRespVo.getCodeList().forEach(code -> {
// if (activityResponseDtoMap.get(code.getActiveCode()) != null) {
// ActivityResponseDto activityResponseDto = activityResponseDtoMap.get(code.getActiveCode());
// activityResponseDto.setActivityCode(code.getCode());
// activityResponseDto.setCode(code.getActiveCode());
// activityResponseDtos.add(activityResponseDto);
// }
// });
// List<CreateCouponBeanVo> createCouponBeanVos = convert2CreateCouponBeanVo(activityResponseDtos);
// return createCouponBeanVos;
// }
// }
// return null;
// }
//
// private List<CreateCouponVo> buildCreateCoupons(Map<String, Integer> activityDiscountMap, ActivityQueryResponseDto activityQueryResponseDto, Long now) {
// List<CreateCouponVo> coupons = Lists.newArrayList();
// for (ActivityResponseDto activityResponseDto : activityQueryResponseDto.getResult()) {
// // 多张券送多次
// int count = activityDiscountMap.get(activityResponseDto.getActivityCode()) != null ? activityDiscountMap.get(activityResponseDto.getActivityCode()) : 1;
// // 不再可领取有效期范围内直接过
// if (activityResponseDto.getStartTime() == null || activityResponseDto.getEndTime() == null) {
// continue;
// }
// if (now < activityResponseDto.getStartTime() || now > activityResponseDto.getEndTime()) {
// continue;
// }
// // 券活动状态不是已启用得过
// if (!Objects.equals(activityResponseDto.getActivityStatus(), ActivityStatusEnum.START.getCode())) {
// continue;
// }
// CreateCouponVo createCouponVo = new CreateCouponVo();
// String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// createCouponVo.setOrder_id(uuid);
// createCouponVo.setNumber(count);
// createCouponVo.setTitle(activityResponseDto.getActivityName());
// createCouponVo.setState(0);
// createCouponVo.setTimestamp(DateUtil.convert2Str(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// createCouponVo.setActive_code(activityResponseDto.getActivityCode());
// createCouponVo.setActive_name(activityResponseDto.getActivityName());
// createCouponVo.setPromotionActiveCode(activityResponseDto.getActivityCode());
// if (activityResponseDto.getValidityPeriodStart() != null && activityResponseDto.getValidityPeriodEnd() != null) {
// // 根据有效期来计算
// createCouponVo.setValid_start(DateUtil.convert2Str(new Date(activityResponseDto.getValidityPeriodStart()), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// createCouponVo.setValid_ends(DateUtil.convert2Str(new Date(activityResponseDto.getValidityPeriodEnd()), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// } else {
// // 根据固定时长来计算 天来计算
// int delayTimes = activityResponseDto.getDelayTimes() != null ? activityResponseDto.getDelayTimes() : 0;
// // 有效期为0 默认传1天,做兼容处理
// int validityPeriod = activityResponseDto.getValidityPeriod() != null ? activityResponseDto.getValidityPeriod() : 1;
// createCouponVo.setValid_start(DateUtil.convert2Str(DateUtil.addDays(new Date(), delayTimes), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// createCouponVo.setValid_ends(DateUtil.convert2Str(DateUtil.addDays(new Date(), (delayTimes + validityPeriod - 1)), FORMAT_YYYY_DD_23_59_59));
// }
// createCouponVo.setSourceFlag(SOURCE_FLAG);
// createCouponVo.setRemark(activityResponseDto.getActivityName());
// if (Objects.equals(activityResponseDto.getActivityType(), ActivityTypeEnum.TYPE_32.getCode())) {
// createCouponVo.setCouponType(CouponTypeEnum.TYPE_0.getCode() + "");
// } else if (Objects.equals(activityResponseDto.getActivityType(), ActivityTypeEnum.TYPE_3.getCode())) {
// createCouponVo.setCouponType(CouponTypeEnum.TYPE_1.getCode() + "");
// } else if (Objects.equals(activityResponseDto.getActivityType(), ActivityTypeEnum.TYPE_31.getCode())) {
// createCouponVo.setCouponType(CouponTypeEnum.TYPE_3.getCode() + "");
// }
// coupons.add(createCouponVo);
// }
// return coupons;
// }
private List<CreateCouponBeanVo> convert2CreateCouponBeanVo(List<ActivityResponseDto> coupons) {
List<CreateCouponBeanVo> createCouponBeanVos = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(coupons)) {
coupons.forEach(coupon -> {
CreateCouponBeanVo createCouponBeanVo = new CreateCouponBeanVo();
createCouponBeanVo.setCouponType(Objects.equals(coupon.getActivityType(), ActivityTypeEnum.TYPE_3.getCode())
? CouponTypeEnum.TYPE_1.getCode()
: Objects.equals(coupon.getActivityType(), ActivityTypeEnum.TYPE_31.getCode())
? CouponTypeEnum.TYPE_3.getCode() : CouponTypeEnum.TYPE_0.getCode());
createCouponBeanVo.setActivityName(coupon.getActivityName());
// 券code 在外面赋值得是券code
createCouponBeanVo.setCouponCode(coupon.getActivityCode());
createCouponBeanVo.setActivityCode(coupon.getCode());
createCouponBeanVo.setThresholdAmount(CollectionUtils.isNotEmpty(coupon.getBenefits()) ? coupon.getBenefits().get(0).getThresholdAmount() : 0);
createCouponBeanVo.setDiscountAmount(CollectionUtils.isNotEmpty(coupon.getBenefits()) ? coupon.getBenefits().get(0).getDiscountAmount() : 0);
if (coupon.getValidityPeriodStart() != null && coupon.getValidityPeriodEnd() != null) {
// 根据有效期来计算
createCouponBeanVo.setValidityPeriodStart(DateUtil.convert2Str(new Date(coupon.getValidityPeriodStart()), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
createCouponBeanVo.setValidityPeriodEnd(DateUtil.convert2Str(new Date(coupon.getValidityPeriodEnd()), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
} else {
// 根据固定时长来计算 天来计算
int delayTimes = coupon.getDelayTimes() != null ? coupon.getDelayTimes() : 0;
int validityPeriod = coupon.getValidityPeriod() != null ? coupon.getValidityPeriod() : 0;
createCouponBeanVo.setValidityPeriodStart(DateUtil.convert2Str(DateUtil.addDays(new Date(), delayTimes), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
createCouponBeanVo.setValidityPeriodEnd(DateUtil.convert2Str(DateUtil.addDays(new Date(), (delayTimes + validityPeriod)), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
createCouponBeanVos.add(createCouponBeanVo);
});
}
return createCouponBeanVos;
}
// /**
// * 查询当前门店下可用商品券,循环获取
// *
// * @param partnerId
// * @param storeId
// * @param codes
// */
// public List<CouponStateVo> getCouponStateByStoreId(String partnerId, String storeId, List<String> codes) {
// String appSecret = getAppSecret(partnerId);
// // 最大15一提交
// int maxNum = 15;
// int count = codes.size() / maxNum;
// // 计算可用不可用券
// CouponAvailableReqVo couponAvailableReqVo = new CouponAvailableReqVo();
// couponAvailableReqVo.setMerchantId(partnerId);
// couponAvailableReqVo.setProviderId(partnerId);
// couponAvailableReqVo.setStoreId(storeId);
// List<Product> productList = Lists.newArrayList();
// // 优惠券优先级最高,根据商品原价做计算
// // 订单金额
// Long totalAmount = 0L;
// couponAvailableReqVo.setTotalAmount(Integer.valueOf(totalAmount + ""));
// couponAvailableReqVo.setProductList(productList);
// couponAvailableReqVo.setChannelCodeList(commonService.getOrgCodes(partnerId, storeId));
// // 构建计算SDK
// List<CouponStateVo> couponStateList = Lists.newArrayList();
// for (int j = 0; j <= count; j++) {
// List calCouponCodes = null;
// if (j == count) {
// calCouponCodes = codes.subList(maxNum * j, codes.size());
// } else {
// calCouponCodes = codes.subList(maxNum * j, maxNum * j + maxNum);
// }
// // 书写逻辑
// couponAvailableReqVo.setCouponCodes(calCouponCodes);
// //CouponAvailableRespVo couponsAvailable = couponAvailableService.getCouponsAvailable(couponAvailableReqVo, appSecret);
// CouponAvailableRespDto couponsAvailable = couponAdaptClient.getCouponsAvailable(couponAvailableReqVo);
// if (Objects.equals(String.valueOf(couponsAvailable.getResult()), ResponseResult.SUCCESS.getCode())
// && CollectionUtils.isNotEmpty(couponsAvailable.getCouponStateList())) {
// couponStateList.addAll(couponsAvailable.getCouponStateList());
// }
// }
// return couponStateList;
// }
@Override
public GetCouponBarCodeResponseVo getCouponBarCode(String couponCode) {
byte[] bytes = BarcodeUtil.generateBarCode128(couponCode, 6D, null, true, false);
......@@ -1309,55 +942,7 @@ public class CouponServiceImpl implements CouponService {
return getCouponBarCodeResponseVo;
}
/**
* 获取券条形码
*/
public Map<String, String> getCouponBarCodeMap(List<GetMemberCouponListResponseDto.Result.MemberCoupon> couponList) {
Map<String, String> CouponBarCodeMap = Maps.newHashMap();
if (CollectionUtils.isNotEmpty(couponList)) {
couponList.forEach(coupon -> {
GetCouponBarCodeResponseVo responseVo = this.getCouponBarCode(coupon.getCouponCode());
CouponBarCodeMap.put(coupon.getCouponCode(), responseVo.getBase64Image());
});
}
return CouponBarCodeMap;
}
@Override
public void checkValidCoupon(CouponPromotionVO couponPromotionVO, List<String> couponList, Map<String, List<String>> spqIdToCartUuid, String couponCode, List<CartGoods> cartGoodsList) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = couponList;
} else {
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(couponPromotionVO.getPartnerId(), couponPromotionVO.getUserId());
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode(), CouponStatus.STATUS_2.getCode()));
getMemberCouponListRequestDto.setPageNum(1);
getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE);
List<GetMemberCouponListResponseDto.Result.MemberCoupon> validMemberCouponList = this.getValidMemberCouponList(getMemberCouponListRequestDto, couponPromotionVO.getOrderType());
validCouponCodeLis = validMemberCouponList.stream().map(GetMemberCouponListResponseDto.Result.MemberCoupon::getCouponCode).collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(validCouponCodeLis)){
List<String> uuidList = spqIdToCartUuid.get(couponCode);
if (CollectionUtils.isNotEmpty(uuidList)){
List<CartGoods> newCartList = cartGoodsList.stream().filter(p -> !uuidList.contains(p.getCartGoodsUid())).collect(Collectors.toList());
assortmentSdkService.setShoppingCart(couponPromotionVO.getPartnerId(), couponPromotionVO.getStoreId(), couponPromotionVO.getUserId(), newCartList, null, null, this.shoppingCartBaseService,null);
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
}
} else {
String finalCouponCode = couponCode;
String memberCouponCode = validCouponCodeLis.stream().filter(p -> finalCouponCode.equals(p)).findFirst().orElse(null);
if (StringUtils.isBlank(memberCouponCode)){
List<String> uuidList = spqIdToCartUuid.get(memberCouponCode);
if (CollectionUtils.isNotEmpty(uuidList)){
List<CartGoods> newCartList = cartGoodsList.stream().filter(p -> !uuidList.contains(p.getCartGoodsUid())).collect(Collectors.toList());
assortmentSdkService.setShoppingCart(couponPromotionVO.getPartnerId(), couponPromotionVO.getStoreId(), couponPromotionVO.getUserId(), newCartList, null, null, this.shoppingCartBaseService,null);
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
}
}
}
}
// @Override
public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto, String goodsId,Integer goodsType) {
String partnerId = requestDto.getPartnerId();
String couponCode = requestDto.getCouponCode();
......@@ -1410,34 +995,6 @@ public class CouponServiceImpl implements CouponService {
|| valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
return null;
}
// CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
// dto.setCouponCode(couponCode);
// dto.setActiveCode(details.getActive().getActiveCode());
// dto.setCouponName(details.getTitle());
// dto.setActivityName(details.getActive().getActiveName());
// if (details.getActive().getMaxRedeemTimes() != null && details.getActive().getMaxRedeemTimes() > 1){
// if (details.getToday_available_times() != null){
// dto.setTodayAvailableTimes(details.getToday_available_times());
// } else {
// dto.setTodayAvailableTimes(1);
// }
// } else {
// dto.setTodayAvailableTimes(1);
// }
// dto.setPrice(productsVo.getFinalPrice());
// dto.setSpuId(productsVo.getSpuId());
// dto.setSpuName(productsVo.getSkuName());
// dto.setStockLimit(ObjectUtils.equals(1, productsVo.getStockLimit()));
// dto.setSkuId(productsVo.getSkuId());
// dto.setSkuName(StringUtils.isNotBlank(productsVo.getSkuName()) ? productsVo.getSkuName() : productsVo.getSpuName());
// dto.setPicture(productsVo.getSpuPicture());
// dto.setCouponType(0);
// return dto;
boolean productValid = false;
Integer couponType = 0;
......@@ -1476,29 +1033,6 @@ public class CouponServiceImpl implements CouponService {
if (CollectionUtils.isNotEmpty(couponStoreIds) && !couponStoreIds.contains(storeId)) {
return null;
}
//券返回的商品id
// List<String> skuIds = Lists.newArrayList();
// String skuId = goodsId;
// skuIds.add(skuId);
//通过skuid查询spuid
// Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId, requestDto.getMenuType());
// GetProductsVo productsVo = productsVoMap.get(skuId);
// if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
// return null;
// }
// 校验券的可用时间
// List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList = couponDetailResponseDto.getDetails().get(0).getActiveRedeemTimeIntervalList();
// boolean verificationPassed = checkCouonRedeemTime(activeRedeemTimeIntervalList);
// if (!verificationPassed){
// return null;
// }
// 校验商品可用时间
// ValidateShopProductRequest request = getValidateShopProductRequest(productsVo, requestDto);
// ProductResponseDTO<ValiadShopProductResponse> valiadProductResponse = storeItemClient.validateShopProduct(request);
// if (null == valiadProductResponse || !Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, valiadProductResponse.getErrcode())
// || valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
// return null;
// }
CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
if (details.getActive().getMaxRedeemTimes() != null && details.getActive().getMaxRedeemTimes() > 1){
if (details.getToday_available_times() != null){
......
package cn.freemud.service.thirdparty;
//import cn.freemud.constant.IgnoreFeignLogAnnotation;
import cn.freemud.annotations.IgnoreFeignLogAnnotation;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
......@@ -10,12 +9,10 @@ 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.Map;
//@IgnoreFeignLogAnnotation
@FeignClient(name = "OPEN-STORE-ONLINE-COUPON-SERVICE", url = "${saas.coupononlineclient.feign.url}", configuration = FormSupportConfig.class)
public interface CouponOnlineClient {
/**
......
......@@ -94,11 +94,11 @@ public class CouponServiceTest {
assertEquals(getCouponDetailResponseDto.getStatusCode().toString(), "100");
}
@Test
public void getMemberCoupons() {
List<GetCouponDetailResponseDto.Details> details = couponService.getMemberCoupons("1864", "1001",Arrays.asList("8812412","88141242"));
assertTrue(CollectionUtils.isNotEmpty(details));
}
// @Test
// public void getMemberCoupons() {
// List<GetCouponDetailResponseDto.Details> details = couponService.getMemberCoupons("1864", "1001",Arrays.asList("8812412","88141242"));
// assertTrue(CollectionUtils.isNotEmpty(details));
// }
// @Test
// public void receiveMemberCoupon() {
......
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