Commit 1eddcd6d by 胡超

Merge remote-tracking branch 'remotes/origin/feature_20200507_1.9.22_couponAndOrganiz'

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/readme.md
#	order-application-service/pom.xml
parents 3e68949e d9b02499
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.4.4.RELEASE</version>
<version>1.4.5.RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -26,7 +26,7 @@
<dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.8.RELEASE</version>
<version>1.8.14.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -39,4 +39,5 @@
| 1.4.1.RELEASE | 返回储值卡支付订单支付金额 | 李小二 | 2020-05-11 |
| 1.4.2.RELEASE | 申请退款切取消接口新增超时时间字段 | 伍平 | 2020-05-12 |
| 1.4.3.RELEASE | 增加售后阶段 | 海波 | 2020-05-14 |
| 1.4.4.RELEASE | 全单退增加是否退配送费 | 海波 | 2020-05-18 |
\ No newline at end of file
| 1.4.4.RELEASE | 全单退增加是否退配送费 | 海波 | 2020-05-18 |
| 1.4.5.RELEASE | 券码接口新增组织机构 |胡超 | 2020-05-18 |
\ No newline at end of file
......@@ -48,6 +48,7 @@ import com.freemud.application.sdk.api.storecenter.enums.OpenTableEnum;
import com.freemud.application.sdk.api.storecenter.request.ChangeTableOrderStateRequest;
import com.freemud.application.sdk.api.storecenter.request.GetStoreTableRequest;
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.GetStoreTableResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
......@@ -219,6 +220,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// 核销优惠券,核销失败提示下单失败并冲正库存积分等
CouponRequest couponVerificationRequest = orderSdkAdapter.convert2CouponVerificationRequest(orderBean, accounts);
if (couponVerificationRequest!=null){
// 核销券新增参数:组织机构
couponVerificationRequest.setChannel_ids(this.getOrgIds(orderBean.getCompanyId(), orderBean.getShopId()));
BaseResponse<CouponRedeemResponse> couponRedeemResponseBaseResponse = offlineCouponSdkService.couponRedeem(couponVerificationRequest, "");
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponRedeemResponseBaseResponse.getCode())) {
//TODO 失败取消订单,异步冲正库存
......@@ -1425,5 +1428,21 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
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;
}
}
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.0.RELEASE</version>
<version>1.1.1.RELEASE</version>
<dependencies>
<dependency>
......@@ -48,7 +48,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>1.8.RELEASE</version>
<version>1.8.14.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......@@ -57,6 +57,12 @@
<version>1.4.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<version>2.6.1-SNAPSHOT</version>
<artifactId>storecenter-sdk</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
......
#### 购物车sdk更新记录
| 版本号 | 版本说明 | 更新人 | 更新时间 |
| --------------| ------------ | ------------- | ---------- |
| 1.1.0.RELEASE| 第一个release版本 | 丁凯 | 2020-03-04 |
\ No newline at end of file
| 1.1.0.RELEASE| 第一个release版本 | 丁凯 | 2020-03-04 |
| 1.1.1.RELEASE| 升级券码sdk | 胡超 | 2020-05-18 |
\ No newline at end of file
......@@ -27,6 +27,8 @@ import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopPr
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResult;
import com.freemud.application.sdk.api.productcenter.service.MenuService;
import com.freemud.application.sdk.api.productcenter.service.ProductService;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.shoppingcart.adapter.ShoppingCartAdapter;
import com.freemud.sdk.api.assortment.shoppingcart.constant.*;
import com.freemud.sdk.api.assortment.shoppingcart.domain.*;
......@@ -163,7 +165,8 @@ public interface ShoppingCartBaseService {
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
}
//校验商品券是否有当前点餐方式
cartGoodsStates = updateSpqCartGoodsInfo(checkCartRequest.getCartGoodsList(), checkCartRequest.getOrderWay(), checkCartRequest.getPartnerId(), checkCartRequest.getTrackingNo(), cartGoodsStates);
cartGoodsStates = updateSpqCartGoodsInfo(checkCartRequest.getCartGoodsList(), checkCartRequest.getOrderWay(), checkCartRequest.getPartnerId(), checkCartRequest.getTrackingNo(), cartGoodsStates
, checkCartRequest.getStoreId());
// 点餐方式改变商品券发生变动
if (cartGoodsStates != null && cartGoodsStates.isOrderWayFlag()) {
......@@ -228,7 +231,7 @@ public interface ShoppingCartBaseService {
* @param orderWay
* @return
*/
default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId, String trackingNo, CartGoodsStates goodsStates) {
default CartGoodsStates updateSpqCartGoodsInfo(List<CartGoods> cartGoodsList, Integer orderWay, String partnerId,String trackingNo, CartGoodsStates goodsStates, String storeId) {
//获取所有商品券cartGoodsUid=sqp+code
List<String> couponIds = cartGoodsList.parallelStream()
.filter(k ->StringUtils.isNotEmpty(k.getCartGoodsUid())&& k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).map(CartGoods::getSpuId).collect(Collectors.toList());
......@@ -236,7 +239,7 @@ public interface ShoppingCartBaseService {
if (CollectionUtils.isEmpty(couponIds)) {
return goodsStates;
}
List<DetailVO> detailVOList = getCouponsDetail(partnerId, couponIds, trackingNo);
List<DetailVO> detailVOList = getCouponsDetail(partnerId, storeId, couponIds, trackingNo);
if (CollectionUtils.isEmpty(detailVOList)) {
return goodsStates;
}
......@@ -396,7 +399,7 @@ public interface ShoppingCartBaseService {
* @param trackingNo
* @return
*/
default List<DetailVO> getCouponsDetail(String partnerId, List<String> codes, String trackingNo) {
default List<DetailVO> getCouponsDetail(String partnerId, String storeId, List<String> codes, String trackingNo) {
String appKey = getAppKey(partnerId, trackingNo);
if (StringUtils.isEmpty(appKey)) {
return null;
......@@ -405,6 +408,8 @@ public interface ShoppingCartBaseService {
couponDetailRequest.setCodes(codes);
couponDetailRequest.setMerchantId(partnerId);
couponDetailRequest.setPartnerId(partnerId);
// 券码新增参数:组织机构
couponDetailRequest.setChannelIdList(this.getOrgIds(partnerId, storeId));
OnlineCouponSdkService onlineCouponSdkService = SDKCommonBaseContextWare.getBean(OnlineCouponSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<CouponDetailResponse> couponDetailResponse = onlineCouponSdkService.allDetail(couponDetailRequest, appKey, trackingNo);
if (couponDetailResponse == null || !CartResponseConstant.SUCCESS.getCode().equals(couponDetailResponse.getCode()) || couponDetailResponse.getData() == null || CollectionUtils.isEmpty(couponDetailResponse.getData().getDetails())) {
......@@ -845,4 +850,22 @@ public interface ShoppingCartBaseService {
*/
BaseResponse<List<CartGoods>> updateGoodsQty(CartParamDto cartParamDto, String trackingNo);
/**
* 查询组织机构
* @param partnerId
* @param storeId
* @return
*/
default 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 && CartResponseConstant.SUCCESS.getCode().equals(orgList.getCode())) {
return orgList.getData();
}
return Collections.EMPTY_LIST;
}
}
......@@ -35,12 +35,12 @@
<dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.8.RELEASE</version>
<version>1.8.14.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.4.4.RELEASE</version>
<version>1.4.5.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -270,7 +270,7 @@
<dependency>
<groupId>com.freemud.card.sdk</groupId>
<artifactId>freemud-card-sdk</artifactId>
<version>2.1.5-SNAPSHOT</version>
<version>2.4.17-RELEASE</version>
</dependency>
<dependency>
......
......@@ -24,4 +24,8 @@ public class CouponCodeBaseDto {
private String store_id;
private String station_id;
private String operator_id;
// 组织机构ID,(String 类型的集合)
private String[] channel_ids;
}
......@@ -8,6 +8,7 @@ import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.entities.vo.ActivityCouponBean;
import cn.freemud.enums.*;
import cn.freemud.service.CouponActivityService;
import cn.freemud.service.StoreService;
import cn.freemud.service.thirdparty.CouponClient;
import cn.freemud.service.thirdparty.CouponOfflineClient;
import cn.freemud.utils.LogUtil;
......@@ -48,7 +49,8 @@ public class CouponActivityServiceImpl implements CouponActivityService {
private EmailAlertService emailAlertService;
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
@Autowired
private StoreServiceImpl storeService;
/**
* 核销优惠券
......@@ -95,6 +97,8 @@ public class CouponActivityServiceImpl implements CouponActivityService {
|| OrderAccountType.PRODUCT_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());
// 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_ids(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
try {
//71.券核销
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
......
package cn.freemud.service.impl;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.enums.ScopeConfigType;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.StoreService;
import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.GeoHash;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.WebUtil;
import cn.freemud.utils.*;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.awt.geom.Point2D;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
......@@ -185,4 +190,29 @@ public class StoreServiceImpl implements StoreService {
return WebUtil.calDistance(Double.valueOf(shopLng), Double.valueOf(shopLat), Double.valueOf(addressLng), Double.valueOf(addressLat));
}
/**
* 查询门店的组织机构
* @param partnerId
* @param storeCode
* @return
*/
public List<String> getOrgIds(String partnerId, String storeCode) {
GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(partnerId);
request.setStoreCode(storeCode);
StoreCenterService storeCenterService = SpringBeanUtil.getBean(StoreCenterService.class);
BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) {
return orgList.getData();
}
return null;
}
public String[] getOrgIdsArr(String partnerId, String storeCode) {
List<String> orgIdsList = getOrgIds(partnerId, storeCode);
if (CollectionUtils.isNotEmpty(orgIdsList)) {
return orgIdsList.toArray(new String[orgIdsList.size()]);
}
return null;
}
}
......@@ -40,12 +40,12 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>1.8.RELEASE</version>
<version>1.8.14.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.0.RELEASE</version>
<version>1.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -232,7 +232,7 @@
<dependency>
<groupId>com.freemud.card.sdk</groupId>
<artifactId>freemud-card-sdk</artifactId>
<version>2.2.RELEASE</version>
<version>2.4.17-RELEASE</version>
</dependency>
<dependency>
......
......@@ -16,4 +16,6 @@ public class GetMemberCouponRequestVo {
* 优惠券号("多个券用,隔开如:"1111,2222")
*/
private String couponCode;
// 门店ID
private String storeId;
}
......@@ -7,6 +7,8 @@ import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.google.common.base.Joiner;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
......@@ -43,4 +45,9 @@ public interface CommonService {
return null;
}
default String getOrgIdsAsString(String partnerId, String storeCode) {
List<String> orgIdList = this.getOrgIds(partnerId, storeCode);
return CollectionUtils.isNotEmpty(orgIdList) ? Joiner.on(",").join(orgIdList) : "";
}
}
......@@ -52,10 +52,11 @@ public interface CouponService {
* 批次查询券详情
*
* @param partnerId
* @param storeId
* @param codes
* @return
*/
List<GetCouponDetailResponseDto.Details> getMemberCoupons(String partnerId, List<String> codes);
List<GetCouponDetailResponseDto.Details> getMemberCoupons(String partnerId, String storeId, List<String> codes);
/**
* 同步券到会员卡包(投放会员卡包)
......
......@@ -30,6 +30,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.CommonService;
import cn.freemud.service.CouponService;
import cn.freemud.service.ItemService;
import cn.freemud.service.UserService;
......@@ -104,6 +105,8 @@ public class CouponServiceImpl implements CouponService {
private OpenPlatformClient openPlatformClient;
@Autowired
private ItemService itemService;
@Autowired
private CommonService commonService;
@Value("${coupon.partner.id}")
private String couponPartnerId;
......@@ -232,6 +235,9 @@ public class CouponServiceImpl implements CouponService {
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_ID_LIST, channelIds);
String appSecret = getAppSecret(requestVo.getPartnerId());
String sign = SignUtil.createMD5Sign(map, appSecret);
map.put(Finals.SIGN, sign);
......@@ -247,7 +253,7 @@ public class CouponServiceImpl implements CouponService {
* 批次查询
*/
@Override
public List<GetCouponDetailResponseDto.Details> getMemberCoupons(String partnerId, List<String> codes) {
public List<GetCouponDetailResponseDto.Details> getMemberCoupons(String partnerId, String storeId, List<String> codes) {
String appSecret = getAppSecret(partnerId);
// 最大15一提交
int maxNum = 15;
......@@ -270,6 +276,7 @@ public class CouponServiceImpl implements CouponService {
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);
......@@ -406,6 +413,7 @@ public class CouponServiceImpl implements CouponService {
Long totalAmount = createProductRequest(cartGoods, productList);
couponAvailableReqVo.setTotalAmount(Integer.valueOf(totalAmount + ""));
couponAvailableReqVo.setProductList(productList);
couponAvailableReqVo.setChannelIdList(commonService.getOrgIds(partnerId, storeId));
// 构建计算SDK
List<CouponStateVo> couponStateList = Lists.newArrayList();
for (int j = 0; j <= count; j++) {
......@@ -564,6 +572,7 @@ public class CouponServiceImpl implements CouponService {
GetMemberCouponRequestVo requestVo = new GetMemberCouponRequestVo();
requestVo.setPartnerId(partnerId);
requestVo.setCouponCode(couponCode);
requestVo.setStoreId(requestDto.getStoreId());
GetCouponDetailResponseDto couponDetailResponseDto = couponService.getMemberCoupon(requestVo);
LogUtil.info("couponService.getMemberCoupon", gson.toJson(requestVo), gson.toJson(couponDetailResponseDto));
if (couponDetailResponseDto == null || !couponDetailResponseDto.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
......@@ -800,6 +809,7 @@ public class CouponServiceImpl implements CouponService {
Long totalAmount = 0L;
couponAvailableReqVo.setTotalAmount(Integer.valueOf(totalAmount + ""));
couponAvailableReqVo.setProductList(productList);
couponAvailableReqVo.setChannelIdList(commonService.getOrgIds(partnerId, storeId));
// 构建计算SDK
List<CouponStateVo> couponStateList = Lists.newArrayList();
for (int j = 0; j <= count; j++) {
......
......@@ -89,7 +89,7 @@ public class CouponServiceTest {
@Test
public void getMemberCoupons() {
List<GetCouponDetailResponseDto.Details> details = couponService.getMemberCoupons("1864", Arrays.asList("8812412","88141242"));
List<GetCouponDetailResponseDto.Details> details = couponService.getMemberCoupons("1864", "1001",Arrays.asList("8812412","88141242"));
assertTrue(CollectionUtils.isNotEmpty(details));
}
......
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