Commit dbd25698 by chongfu.liang

重构

parent ba3ae383
package cn.freemud.demo.adapter.manager;
import cn.freemud.demo.entities.GetProductStock;
import cn.freemud.demo.entities.ProductStockBO;
import cn.freemud.entities.dto.GetProductStockRequestDto;
import cn.freemud.entities.dto.GetProductStockResponseDto;
import org.springframework.stereotype.Component;
@Component
public class ProductBO2DTOAdapter {
public GetProductStockRequestDto convert2GetProductStockDto(GetProductStock getProductStock) {
GetProductStockRequestDto getProductStockRequestDto = new GetProductStockRequestDto();
getProductStockRequestDto.setChannel(getProductStock.getChannel());
getProductStockRequestDto.setPartnerId(getProductStock.getPartnerId());
getProductStockRequestDto.setProductIds(getProductStock.getProductIds());
getProductStockRequestDto.setStoreId(getProductStock.getStoreId());
return getProductStockRequestDto;
}
}
package cn.freemud.demo.adapter.manager;
import cn.freemud.demo.entities.ProductStockBO;
import cn.freemud.demo.entities.bo.goods.PlatformProductBO;
import cn.freemud.demo.entities.bo.goods.ProductBO;
import cn.freemud.entities.dto.GetProductStockResponseDto;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import org.springframework.stereotype.Component;
......@@ -12,4 +14,8 @@ public class ProductDTO2BOAdapter {
return null;
}
public ProductStockBO convert2ProductStockBO(GetProductStockResponseDto.DataBean ProductStockDTO) {
return null;
}
}
......@@ -53,7 +53,7 @@ public class AddGoodsBOAdapter {
PlatformAddGoodsBO platformAddGoodsBO = mapperFacade.map(baseRequestDTO, PlatformAddGoodsBO.class);
PlatformProductBO platformProductBO = convert2PlatformProductBO(baseRequestDTO);
ProductBO platformProductBO = convert2PlatformProductBO(baseRequestDTO);
platformAddGoodsBO.setAddGoods(platformProductBO);
ManagerServiceBO managerService = ManagerServiceBO.builder()
......@@ -82,8 +82,8 @@ public class AddGoodsBOAdapter {
}
private PlatformProductBO convert2PlatformProductBO(AddGoodsRequestDTO baseRequestDTO) {
PlatformProductBO platformProductBO = mapperFacade.map(baseRequestDTO, PlatformProductBO.class);
private ProductBO convert2PlatformProductBO(AddGoodsRequestDTO baseRequestDTO) {
ProductBO platformProductBO = mapperFacade.map(baseRequestDTO, ProductBO.class);
String spuId = baseRequestDTO.getSpuId();
String skuId = baseRequestDTO.getSkuId();
......@@ -98,13 +98,13 @@ public class AddGoodsBOAdapter {
goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType();
}
platformProductBO.setGoodsType(goodsType);
List<PlatformComboxGoodsBO> productComboList = new ArrayList<>();
List<PlatformComboxGoodsBO> productGroupList = new ArrayList<>();
List<PlatformMaterialBO> materialGoodsList = new ArrayList<>();
List<ComboxGoodsBO> productComboList = new ArrayList<>();
List<ComboxGoodsBO> productGroupList = new ArrayList<>();
List<MaterialBO> materialGoodsList = new ArrayList<>();
//套餐
if (CollectionUtils.isNotEmpty(baseRequestDTO.getProductComboList())) {
for (ComboxGoodsRequestVo vo : baseRequestDTO.getProductComboList()) {
PlatformComboxGoodsBO productCombox = new PlatformComboxGoodsBO();
ComboxGoodsBO productCombox = new ComboxGoodsBO();
productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId());
productCombox.setQty(vo.getQty());
......@@ -116,20 +116,20 @@ public class AddGoodsBOAdapter {
//固定商品组
if (CollectionUtils.isNotEmpty(baseRequestDTO.getProductGroupList())) {
for (ComboxGoodsRequestVo vo : baseRequestDTO.getProductGroupList()) {
PlatformComboxGoodsBO productCombox = new PlatformComboxGoodsBO();
ComboxGoodsBO productCombox = new ComboxGoodsBO();
productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId());
productCombox.setQty(vo.getQty());
List<CartGoodsExtra> cartGoodsExtras = mapperFacade.mapAsList(vo.getExtra(), CartGoodsExtra.class);
productCombox.setExtra(cartGoodsExtras);
productCombox.setProductGroupId(vo.getProductGroupId() == null ? null : vo.getProductGroupId());
productCombox.setProductGroupId(StringUtils.isBlank(vo.getProductGroupId()) ? null : Long.parseLong(vo.getProductGroupId()));
productGroupList.add(productCombox);
}
}
//加料商品集
if (CollectionUtils.isNotEmpty(baseRequestDTO.getProductMaterialList())) {
for (MaterialRequestVo materialRequestVo : baseRequestDTO.getProductMaterialList()) {
PlatformMaterialBO materialGoods = new PlatformMaterialBO();
MaterialBO materialGoods = new MaterialBO();
materialGoods.setSpuId(materialRequestVo.getSpuId());
materialGoodsList.add(materialGoods);
}
......
......@@ -2,8 +2,11 @@ package cn.freemud.demo.entities;
import cn.freemud.demo.entities.bo.goods.GetProductBO;
import cn.freemud.demo.entities.bo.goods.ProductBO;
import cn.freemud.entities.vo.CartGoods;
import lombok.Data;
import java.util.List;
@Data
public class CheckBussinessRulesBO {
......@@ -11,4 +14,6 @@ public class CheckBussinessRulesBO {
private ProductBO product;
private List<CartGoods> cartGoods;
}
package cn.freemud.demo.entities;
import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class CouponDetailBO {
/**
*表示接口处理是否成功,1表示成功,0表示失败
*/
private Integer result;
private Integer statusCode;
private Integer ver;
private List<CouponDetailBO.Errors> errors;
private List<CouponDetailBO.Details> details;
@Data
public static class Details{
private String code;
private String activeCode;
private String title;
private Integer type;
private Integer status;
private String create_time;
private String redeem_time;
private String valid_start;
private String valid_ends;
private String minAmount;
private CouponDetailBO.Active active;
private List<CouponDetailBO.ActiveProduct> activeProduct;
private List<CouponDetailBO.ActiveRestrictionVOS> activeRestrictionVOS;
}
@Data
public static class Active{
@JsonProperty("ActiveCode")
private String activeCode;
@JsonProperty("ActiveDesc")
private String activeDesc;
@JsonProperty("ActiveName")
private String activeName;
@JsonProperty("BusinessID")
private Integer businessId;
@JsonProperty("CreateDate")
private String createDate;
@JsonProperty("CreateUser")
private String createUser;
@JsonProperty("EBCode")
private String ebCode;
@JsonProperty("EndDate")
private String endDate;
@JsonProperty("EndString")
private String endString;
@JsonProperty("Inventory")
private Integer inventory;
@JsonProperty("LastEditDate")
private String lastEditDate;
@JsonProperty("LastEditUser")
private String lastEditUser;
@JsonProperty("MaxDiscount")
private Integer maxDiscount;
@JsonProperty("MaxRedeemTimes")
private Integer maxRedeemTimes;
@JsonProperty("MinAmount")
private Integer minAmount;
@JsonProperty("PartnerID")
private String partnerId;
@JsonProperty("PercentDiscount")
private Integer percentDiscount;
@JsonProperty("Percentage")
private Integer percentage;
@JsonProperty("PromotionType")
private String promotionType;
@JsonProperty("ShouldRedeemAll")
private Boolean shouldRedeemAll;
@JsonProperty("StartDate")
private String startDate;
@JsonProperty("StartString")
private String startString;
@JsonProperty("State")
private Integer state;
@JsonProperty("Type")
private Integer type;
}
@Data
public static class ActiveProduct{
@JsonProperty("ActiveID")
private Integer activeId;
@JsonProperty("Amount")
private Integer amount;
@JsonProperty("Paid")
private Integer paid;
@JsonProperty("Price_Discount")
private BigDecimal priceDiscount;
@JsonProperty("Price_Original")
private BigDecimal priceOriginal;
@JsonProperty("Product")
private String product;
@JsonProperty("ProductID")
private Integer productId;
@JsonProperty("ProductID_Partner")
private String productIdPartner;
@JsonProperty("Remain")
private Integer remain;
}
@Data
public static class ActiveProductSetting{
}
@Data
public static class ActiveRestrictionVOS{
@JsonProperty("ActiveID")
private String activeId;
@JsonProperty("City")
private String city;
@JsonProperty("StoreIDPartner")
private String storeIdPartner;
}
@Data
public static class Errors{
@JsonProperty("error_code")
private String errorCode;
private String parameter;
}
}
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class GetCouponDetailBO {
private String partnerId;
private String couponCode;
private String storeCode;
}
package cn.freemud.demo.entities;
import lombok.Data;
import java.util.List;
@Data
public class GetProductBySkuIdBO {
private List<String> skuids;
private String partnerId;
private String storeId;
private String menuType;
}
package cn.freemud.demo.entities;
import lombok.Data;
import java.util.List;
@Data
public class GetProductStock {
private String channel;
private String partnerId;
private String storeId;
private List<Long> productIds;
}
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class GetStoreBO {
private String partnerId;
private String storeCode;
}
package cn.freemud.demo.entities;
import cn.freemud.demo.manager.coupon.CouponService;
import cn.freemud.demo.manager.customer.CustomerService;
import cn.freemud.demo.manager.product.ProductService;
import cn.freemud.demo.manager.store.StoreService;
import lombok.Builder;
import lombok.Data;
......@@ -13,4 +15,9 @@ public class ManagerServiceBO {
private ProductService productService;
private CouponService couponService;
private StoreService storeService;
}
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class ProductStockBO {
//商户商品id/编码
private String ccode;
private String channel;
// 采购中心id
private String pcid;
//非码商品id
private Long pid;
private String pname;
//商户id/编号
private String ptid;
private Integer qty;
//安全库存数
private Integer safeQty;
//门店id/编号
private String stid;
}
package cn.freemud.demo.entities.bo.goods;
import cn.freemud.entities.dto.GetMenuResponseDto;
import cn.freemud.entities.vo.CartGoods;
import lombok.Data;
import java.util.List;
@Data
public class GetProductBySkuIdResponseBO {
private String spuId;
private String spuName;
private String spuPicture;
private String skuId;
private String skuName;
private Long originalPrice;
/**
* 最终价格 单位分
*/
private Long finalPrice;
/**
* 上下架状态
*/
private Integer status;
// 1.5.4 对接库存新加
private Integer stock;
private Integer stockLimit;
/**
* type=10 多规格 type=1 单规格
*/
private Integer type;
/**
* 第三方商品编号
*/
private String customerCode;
/**
* 属性
*/
private List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductAttributeGroupListBean> productAttributeGroupList;
/**
* 分类id
*/
private String category;
/**
* 分类名称
*/
private String categoryName;
private String defaultSpecId;
private String defaultSpecName;
private List<CartGoods.CartGoodsExtra> extra;
}
package cn.freemud.demo.entities.bo.goods;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import lombok.Data;
import java.util.List;
......@@ -17,6 +18,12 @@ public class ProductBO {
private Integer goodsType;
private int type;
private Integer stockLimit;
private List<SkuProductBean> skuList;
/**
* 数量
*/
......@@ -41,16 +48,21 @@ public class ProductBO {
/**
* 套餐固定商品
*/
private List<McoffeeComboxGoodsBO> productComboList;
private List<ComboxGoodsBO> productComboList;
/**
* 套餐可选商品
*/
private List<McoffeeComboxGoodsBO> productGroupList;
private List<ComboxGoodsBO> productGroupList;
/**
* 加料
*/
private List<McoffeeMaterialBO> productMaterialList;
private List<MaterialBO> productMaterialList;
@Data
public static class SkuProductBean {
private String skuId;
private Integer stockLimit;
}
}
......@@ -2,6 +2,7 @@ package cn.freemud.demo.entities.bo.goods.add;
import cn.freemud.demo.entities.ManagerServiceBO;
import cn.freemud.demo.entities.bo.goods.PlatformProductBO;
import cn.freemud.demo.entities.bo.goods.ProductBO;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
......@@ -24,6 +25,9 @@ public class BaseAddGoodsBO {
private ManagerServiceBO managerService;
private ProductBO addGoods;
/**
* 微信appId
*/
......
......@@ -13,8 +13,6 @@ import java.util.List;
@Data
public class PlatformAddGoodsBO extends BaseAddGoodsBO {
private PlatformProductBO addGoods;
private String version;
/**
......
package cn.freemud.demo.manager.coupon;
import cn.freemud.demo.entities.CouponDetailBO;
import cn.freemud.demo.entities.GetCouponDetailBO;
import cn.freemud.demo.entities.bo.goods.GetProductBO;
import cn.freemud.demo.manager.product.ProductService;
import org.springframework.stereotype.Service;
@Service
public class CouponManager {
public CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetail, CouponService couponService){
CouponDetailBO couponDetail = couponService.getCouponDetail(getCouponDetail);
return couponDetail;
}
}
package cn.freemud.demo.manager.coupon;
import cn.freemud.demo.entities.CouponDetailBO;
import cn.freemud.demo.entities.GetCouponDetailBO;
import cn.freemud.demo.entities.bo.goods.GetProductBO;
public interface CouponService {
CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetailBO);
}
package cn.freemud.demo.manager.coupon;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.demo.entities.CouponDetailBO;
import cn.freemud.demo.entities.GetCouponDetailBO;
import cn.freemud.demo.entities.GetStoreBO;
import cn.freemud.demo.entities.bo.goods.add.MCoffeeAddGoodsBO;
import cn.freemud.demo.manager.store.StoreService;
import cn.freemud.entities.dto.GetAppKeyRequestDto;
import cn.freemud.entities.dto.GetAppKeyResponseDto;
import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import cn.freemud.enums.ResponseResult;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.thirdparty.CardBinClient;
import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.RedisUtil;
import com.freemud.card.sdk.comm.Finals;
import com.freemud.card.sdk.comm.SignUtil;
import com.google.common.base.Joiner;
import ma.glasnost.orika.MapperFacade;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
@Service("KgdCouponService")
public class KgdCouponServiceImpl implements CouponService {
@Autowired
CouponOnlineClient couponOnlineClient;
@Autowired
@Qualifier("KgdStoreService")
StoreService storeService;
@Autowired
CardBinClient cardBinClient;
@Autowired
private RedisCache redisCache;
@Value("${coupon.app.id}")
private String appid;
@Resource
private MapperFacade mapperFacade;
@Override
public CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetailBO) {
Map<String, String> map = new TreeMap<String, String>();
if (StringUtils.isBlank(getCouponDetailBO.getPartnerId()) || StringUtils.isBlank(getCouponDetailBO.getCouponCode())) {
return null;
}
map.put(Finals.CODES, getCouponDetailBO.getCouponCode());
map.put(Finals.PARTNER_ID, getCouponDetailBO.getPartnerId());
map.put(Finals.MERCHANT_ID, getCouponDetailBO.getPartnerId());
map.put(Finals.ACTION, "code.allDetails");
// 券码接口新增参数:组织机构(多个用英文逗号分离)
GetStoreBO getStoreBO = new GetStoreBO();
getStoreBO.setPartnerId(getCouponDetailBO.getPartnerId());
getStoreBO.setStoreCode(getCouponDetailBO.getStoreCode());
List<String> orgIds = storeService.getOrgIds(getStoreBO);
String channelIds = CollectionUtils.isNotEmpty(orgIds) ? Joiner.on(",").join(orgIds) : "";
map.put(Finals.CHANNEL_CODE_LIST, channelIds);
String appSecret = getAppSecret(getCouponDetailBO.getPartnerId());
String sign = SignUtil.createMD5Sign(map, appSecret);
map.put(Finals.SIGN, sign);
GetCouponDetailResponseDto responseDto = couponOnlineClient.getCouponDetails(map);
if (ResponseCodeConstant.RESPONSE_SUCCESS_1.equals(responseDto.getResult())) {
return convert2CouponDetailBO(responseDto);
}
return null;
}
private CouponDetailBO convert2CouponDetailBO(GetCouponDetailResponseDto responseDto) {
CouponDetailBO couponDetailBO = mapperFacade.map(responseDto, CouponDetailBO.class);
return couponDetailBO;
}
public String getAppSecret(String partnerId) {
// 获取券服务的密钥
String couponAppSecret = RedisUtil.getCouponAppSecret(partnerId);
String appSecret = redisCache.getValue(couponAppSecret);
if (StringUtils.isBlank(appSecret)) {
GetAppKeyResponseDto getAppKeyResponseDto = cardBinClient.getAppKey(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;
}
}
package cn.freemud.demo.manager.product;
import cn.freemud.demo.adapter.manager.ProductBO2DTOAdapter;
import cn.freemud.demo.adapter.manager.ProductDTO2BOAdapter;
import cn.freemud.demo.entities.GetProductBySkuIdBO;
import cn.freemud.demo.entities.GetProductStock;
import cn.freemud.demo.entities.ProductStockBO;
import cn.freemud.demo.entities.bo.goods.GetProductBO;
import cn.freemud.demo.entities.bo.goods.GetProductBySkuIdResponseBO;
import cn.freemud.demo.entities.bo.goods.PlatformProductBO;
import cn.freemud.demo.entities.bo.goods.ProductBO;
import cn.freemud.entities.dto.GetProductStockRequestDto;
import cn.freemud.entities.dto.GetProductStockResponseDto;
import cn.freemud.entities.vo.GetProductsVo;
import cn.freemud.service.ItemService;
import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.thirdparty.StockClient;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Service("KgdProductService")
public class KgdProductServiceImpl implements ProductService {
......@@ -22,11 +35,24 @@ public class KgdProductServiceImpl implements ProductService {
@Autowired
private ProductDTO2BOAdapter productDTO2BOAdapter;
@Autowired
private ProductBO2DTOAdapter productBO2DTOAdapter;
@Autowired
private ItemService itemService;
@Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService;
@Autowired
private StockClient stockClient;
@Override
public ProductBO getProductInfo(GetProductBO getProductBO) {
// 获取添加商品的详细信息
List< ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(getProductBO.getPartnerId(),
getProductBO.getStoreId(), Collections.singletonList(getProductBO.getSkuid()), getProductBO.getMenuType(), null);
getProductBO.getStoreId(), Collections.singletonList(getProductBO.getSkuid()), getProductBO.getMenuType(), shoppingCartBaseService);
ProductBeanDTO productBeanDTO = productBeanListSpuClass.get(0);
ProductBO platformProductBO = productDTO2BOAdapter.convert2ProductBO(productBeanDTO);
......@@ -34,5 +60,30 @@ public class KgdProductServiceImpl implements ProductService {
return platformProductBO;
}
@Override
public Map<String, GetProductBySkuIdResponseBO> getProductInfoBySkuIds(GetProductBySkuIdBO getProductBySkuIdBO) {
Map<String, GetProductBySkuIdResponseBO> products = itemService.getProductsBySkuId(getProductBySkuIdBO.getSkuids(), getProductBySkuIdBO.getPartnerId(),
getProductBySkuIdBO.getStoreId(), getProductBySkuIdBO.getMenuType());
return products;
}
@Override
public List<ProductStockBO> getProductStock(GetProductStock getProductStock) {
GetProductStockRequestDto getProductStockRequestDto = productBO2DTOAdapter.convert2GetProductStockDto(getProductStock);
GetProductStockResponseDto availableStocks = stockClient.getAvailableStocks(getProductStockRequestDto);
List<GetProductStockResponseDto.DataBean> result = availableStocks.getResult();
List<ProductStockBO> list = new ArrayList<>();
for (GetProductStockResponseDto.DataBean dataBean : result){
ProductStockBO productStockBO = productDTO2BOAdapter.convert2ProductStockBO(dataBean);
list.add(productStockBO);
}
return list;
}
}
package cn.freemud.demo.manager.product;
import cn.freemud.demo.entities.GetProductBySkuIdBO;
import cn.freemud.demo.entities.GetProductStock;
import cn.freemud.demo.entities.ProductStockBO;
import cn.freemud.demo.entities.bo.goods.GetProductBO;
import cn.freemud.demo.entities.bo.goods.GetProductBySkuIdResponseBO;
import cn.freemud.demo.entities.bo.goods.PlatformProductBO;
import cn.freemud.demo.entities.bo.goods.ProductBO;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class ProductManager {
......@@ -20,6 +27,21 @@ public class ProductManager {
}
public Map<String, GetProductBySkuIdResponseBO> getProductsInfoBySkuIds(GetProductBySkuIdBO getProductBySkuIdBO, ProductService productService){
Map<String, GetProductBySkuIdResponseBO> productInfo = productService.getProductInfoBySkuIds(getProductBySkuIdBO);
return productInfo;
}
public List<ProductStockBO> getProductStock(GetProductStock getProductStock, ProductService productService){
List<ProductStockBO> productStock = productService.getProductStock(getProductStock);
return productStock;
}
......
package cn.freemud.demo.manager.product;
import cn.freemud.demo.entities.GetProductBySkuIdBO;
import cn.freemud.demo.entities.GetProductStock;
import cn.freemud.demo.entities.ProductStockBO;
import cn.freemud.demo.entities.bo.goods.GetProductBO;
import cn.freemud.demo.entities.bo.goods.GetProductBySkuIdResponseBO;
import cn.freemud.demo.entities.bo.goods.PlatformProductBO;
import cn.freemud.demo.entities.bo.goods.ProductBO;
import java.util.List;
import java.util.Map;
public interface ProductService {
ProductBO getProductInfo(GetProductBO getProductBO);
Map<String, GetProductBySkuIdResponseBO> getProductInfoBySkuIds(GetProductBySkuIdBO getProductBySkuIdBO);
List<ProductStockBO> getProductStock(GetProductStock getProductStock);
}
package cn.freemud.demo.manager.store;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.demo.entities.GetStoreBO;
import cn.freemud.utils.SpringBeanUtil;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("KgdStoreService")
public class KgdStoreServiceImpl implements StoreService {
@Autowired
StoreCenterService storeCenterService;
@Override
public List<String> getOrgIds(GetStoreBO getStoreBO) {
GetOrgTreeListRequest request = new GetOrgTreeListRequest();
request.setPartnerId(getStoreBO.getPartnerId());
request.setStoreCode(getStoreBO.getStoreCode());
BaseResponse<List<String>> orgList = storeCenterService.getOrgList(request, LogThreadLocal.getTrackingNo());
if (orgList != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(orgList.getCode())) {
return orgList.getData();
}
return null;
}
}
package cn.freemud.demo.manager.store;
public class StoreManager {
}
package cn.freemud.demo.manager.store;
import cn.freemud.demo.entities.GetStoreBO;
import java.util.List;
public interface StoreService {
List<String> getOrgIds(GetStoreBO getStoreBO);
}
......@@ -14,9 +14,6 @@ public class PlatformAddGoodsService extends AbstractAddGoodsService {
@Override
public BaseResponse checkCustomParams(BaseAddGoodsBO baseRequestDTO) {
if (baseRequestDTO.getShopId().length() > MAX_SHOP_LENGTH){
throw new ServiceException(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
}
return ResponseBuilder.success();
}
......
package cn.freemud.demo.service;
import cn.freemud.entities.vo.CartGoods;
import java.util.List;
public class ShoppingBaseServiceImpl implements ShoppingCartService {
@Override
public List<CartGoods> updateAndGetShoppingCart() {
return null;
}
}
package cn.freemud.demo.service;
import cn.freemud.entities.vo.CartGoods;
import java.util.List;
public interface ShoppingCartService {
List<CartGoods> updateAndGetShoppingCart();
}
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.demo.entities.bo.goods.GetProductBySkuIdResponseBO;
import cn.freemud.entities.dto.GetMenuResponseDto;
import cn.freemud.entities.vo.*;
......@@ -30,4 +31,14 @@ public interface ItemService {
*/
Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId ,String menuType);
/**
* 通过sku或单品组装MAP商品详情信息
* @param pids skuId
* @param partnerId
* @param storeId
* @return key = skuid
*/
Map<String, GetProductBySkuIdResponseBO> getProductsBySkuId(List<String> pids, String partnerId, String storeId , String menuType);
}
......@@ -42,12 +42,10 @@ import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.productcenter.constant.ResponseConstant;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductRequest;
import com.freemud.application.sdk.api.productcenter.request.product.valid.ValidateShopProductType;
import com.freemud.application.sdk.api.productcenter.response.ProductResponseDTO;
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResponse;
import com.freemud.application.sdk.api.productcenter.response.valid.ValiadShopProductResult;
import com.freemud.card.sdk.comm.Finals;
import com.freemud.card.sdk.comm.SignUtil;
import com.freemud.card.sdk.service.CouponAvailableService;
......@@ -61,7 +59,6 @@ import com.freemud.card.sdk.vo.comm.GetCouponVo;
import com.freemud.card.sdk.vo.coupon.CreateCouponVo;
import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.freemud.card.sdk.vo.coupon.response.MemberBaseRespVo;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
......@@ -74,9 +71,10 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.IntStream;
@Service
@Slf4j
......@@ -231,6 +229,11 @@ public class CouponServiceImpl implements CouponService {
if (getMemberCouponListResponseDto != null && Objects.equals(getMemberCouponListResponseDto.getCode(), ResponseResult.SUCCESS.getCode())) {
return getMemberCouponListResponseDto.getData();
}
AtomicInteger sum = new AtomicInteger();
IntStream.range(0, 10).forEach(value -> sum.getAndIncrement());
return null;
}
......@@ -767,6 +770,8 @@ public class CouponServiceImpl implements CouponService {
*/
@Override
public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto, String goodsId) {
log.info("checkSpqInfo****" + gson.toJson(requestDto));
String partnerId = requestDto.getPartnerId();
String couponCode = requestDto.getCouponCode();
......
......@@ -16,6 +16,7 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.StoreItemAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.demo.entities.bo.goods.GetProductBySkuIdResponseBO;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean;
import cn.freemud.entities.vo.CartGoods;
......@@ -231,5 +232,92 @@ public class ItemServiceImpl implements ItemService {
return resultMap;
}
@Override
public Map<String, GetProductBySkuIdResponseBO> getProductsBySkuId(List<String> pids, String partnerId, String storeId, String menuType) {
Map<String, GetProductBySkuIdResponseBO> resultMap = new HashMap<>();
if (CollectionUtils.isEmpty(pids)) {
return resultMap;
}
List<String> skuIds = Lists.newArrayList();
//查询商品详情
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, storeId, ProductInfoType.ALL.getCode(), pids,menuType);
ProductInfosDto productInfosDto = storeItemClient.listProductInfos(getProductInfoDto);
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(productInfosDto.getErrcode())
&& productInfosDto.getData() != null
&& CollectionUtils.isNotEmpty(productInfosDto.getData().getProducts())) {
productInfosDto.getData().getProducts().stream().forEach(productBean -> {
//多规格获取sku信息
GetProductBySkuIdResponseBO getProductBySkuId = new GetProductBySkuIdResponseBO();
getProductBySkuId.setSkuId(productBean.getPid());
getProductBySkuId.setSkuName(productBean.getName());
String picture = CollectionUtils.isNotEmpty(productBean.getProductPictureList())
? productBean.getProductPictureList().get(0).getUrl() : null;
getProductBySkuId.setSpuId(productBean.getPid());
getProductBySkuId.setSpuName(productBean.getName());
getProductBySkuId.setSpuPicture(picture);
getProductBySkuId.setOriginalPrice(productBean.getOriginalPrice());
getProductBySkuId.setFinalPrice(productBean.getFinalPrice());
getProductBySkuId.setProductAttributeGroupList(productBean.getProductAttributeGroupList());
getProductBySkuId.setStatus(productBean.getStatus());
getProductBySkuId.setStock(productBean.getStock());
getProductBySkuId.setStockLimit(productBean.getStockLimit());
getProductBySkuId.setCustomerCode(productBean.getCustomerCode());
getProductBySkuId.setCategory(productBean.getCategory());
getProductBySkuId.setCategoryName(productBean.getCategoryName());
resultMap.put(productBean.getPid(), getProductBySkuId);
getProductBySkuId.setType(1);
// 规格ID 剔除单品
if (Objects.equals(productBean.getIsSkuProduct(), YesOrNoEnum.YES.getCode())) {
getProductBySkuId.setType(10);
skuIds.add(productBean.getPid());
}
});
}
if (CollectionUtils.isEmpty(skuIds)) {
return resultMap;
}
// 通过skuid查询spuid
GetSpuIdsBySkuIdsDto bySkuIdsDto = new GetSpuIdsBySkuIdsDto();
bySkuIdsDto.setProductIds(skuIds);
bySkuIdsDto.setPartnerId(partnerId);
ProductListDto productListDto = storeItemClient.getSpuIdsBySkuIds(bySkuIdsDto);
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(productListDto.getErrcode())
&& CollectionUtils.isNotEmpty(productListDto.getData())) {
productListDto.getData().stream().forEach(product -> {
product.getSkuList().stream().forEach(skuProductBean -> {
if (resultMap.get(skuProductBean.getSkuId()) != null) {
GetProductBySkuIdResponseBO getProductBySkuId = resultMap.get(skuProductBean.getSkuId());
getProductBySkuId.setSpuId(product.getPid());
getProductBySkuId.setSpuName(product.getName());
String picture = CollectionUtils.isNotEmpty(product.getProductPictureList())
? product.getProductPictureList().get(0).getUrl() : product.getPicture();
getProductBySkuId.setSpuPicture(picture);
if (CollectionUtils.isNotEmpty(product.getProductAttributeGroupList())
&& CollectionUtils.isNotEmpty(product.getProductAttributeGroupList().get(0).getAttributeValues())) {
List<CartGoods.CartGoodsExtra> extras = new ArrayList<>();
List<String> specId = new ArrayList<>();
List<String> specName = new ArrayList<>();
for (ProductListDto.DataBean.ProductAttributeGroupListBean bean : product.getProductAttributeGroupList()) {
for (ProductListDto.DataBean.ProductAttributeGroupListBean.AttributeValueBean attr : bean.getAttributeValues()) {
CartGoods.CartGoodsExtra extra = new CartGoods.CartGoodsExtra();
extra.setAttributeId(attr.getAttributeId());
extra.setAttributeName(attr.getAttributeValue());
specName.add(attr.getAttributeValue());
specId.add(attr.getAttributeId());
break;
}
}
getProductBySkuId.setExtra(extras);
getProductBySkuId.setDefaultSpecName(StringUtils.join(specName, "/"));
getProductBySkuId.setDefaultSpecId(StringUtils.join(specId, "/"));
}
resultMap.put(skuProductBean.getSkuId(), getProductBySkuId);
}
});
});
}
return resultMap;
}
}
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