Commit 7119277f by dingkai

mall购物车sdk

parent 7442dafe
......@@ -8,20 +8,21 @@
<configuration>
<webroots />
<sourceRoots>
<root url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/java" />
<root url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/resources" />
<root url="file://$MODULE_DIR$/src/main/java" />
<root url="file://$MODULE_DIR$/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/target/classes" />
<output-test url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/target/test-classes" />
<content url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk">
<sourceFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/../assortment-shoppingcart-sdk/target" />
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
......
......@@ -183,6 +183,7 @@ public class ShoppingCartAdapter {
cartGoods.setAmount(newOrigOriginalPrice*cartGoods.getQty());
//咨询商品服务,套餐售价取originalPrice
cartGoods.setFinalPrice(isSetMealProduct?productBean.getOriginalPrice(): productBean.getFinalPrice());
cartGoods.setWeight(productBean.getWeight());
cartGoods.setUnit(productBean.getUnit());
cartGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(productBean.getWeightType()));
}
......@@ -229,6 +230,7 @@ public class ShoppingCartAdapter {
comboxGoods.setCustomerCode(productBean.getCustomerCode());
comboxGoods.setFinalPrice(finalPrice);
comboxGoods.setWeightType(CommonsConstant.WEIGHT_PRODUCT.equals(productBean.getWeightType()));
comboxGoods.setWeight(productBean.getWeight());
comboxGoods.setUnit(productBean.getUnit());
return true;
}
......
......@@ -58,4 +58,19 @@ public class RedisKeyConstant {
*/
public final static String MEAL_CART_LOCK_KEY = "kgd:meal:lock:{0}:{1}:{2}";
/**
* 用户购物车在redis的key前缀(商城购物车)
*/
public final static String SAAS_MALL_SHOPPINGCART_KEY_PREFIX = "saas:user:info:mall:cart:goods:";
/**
* 用户购物车总价在redis的key前缀(商城购物车)
*/
public final static String SAAS_MALL_SHOPPINGCART_AMOUNT_PREFIX = "saas:user:info:mall:cart:amount:goods:";
/**
* 点餐门店绑定的商城门店redis的key前缀
*/
public final static String OPENSTORE_MICROMALL_BIND_STOREID_PREFIX = "openstore:micromall:bind:storeId:";
}
......@@ -38,6 +38,10 @@ public class CartGoods {
*/
private boolean weightType;
/**
* 重量
*/
private Double weight;
/**
* 单位
*/
private String unit;
......@@ -217,6 +221,10 @@ public class CartGoods {
*/
private boolean weightType;
/**
* 重量
*/
private Double weight;
/**
* 单位
*/
private String unit;
......
package com.freemud.sdk.api.assortment.shoppingcart.service.impl;
import ch.qos.logback.classic.Level;
import cn.freemud.base.entity.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant;
import com.freemud.sdk.api.assortment.shoppingcart.constant.RedisKeyConstant;
import com.freemud.sdk.api.assortment.shoppingcart.constant.VersionUtils;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartAddItem;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.data.redis.core.BoundValueOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ShoppingCartBaseServiceImpl
* @Package com.freemud.sdk.api.assortment.shoppingcart.service.impl
* @Description:
* @author: yuhao.chi
* @date: 2019/4/10 15:30
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Service("shoppingCartMallBaseService")
public class ShoppingCartMallBaseServiceImpl implements ShoppingCartBaseService {
@Autowired
private RedisTemplate redisTemplate;
@Value("${coupon.app.id}")
private String appId;
@Override
public BaseResponse<List<CartAddItem>> detailCart(CartParamDto cartParamDto, String trackingNo) {
return null;
}
@Override
public BaseResponse<List<CartGoods>> getCartGoodsList(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
BoundHashOperations<String, String, CartGoods> operations = redisTemplate.boundHashOps(redisKey);
List<CartGoods> cartGoodsList = operations.values();
//对创建时间进行排序
cartGoodsList.sort(Comparator.comparingLong(CartGoods::getCreateTimeMili));
return CartResponseUtil.success(cartGoodsList);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "getCartGoodsList", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public BaseResponse<List<CartGoods>> setCartGoodsList(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
BoundHashOperations<String, String, CartGoods> operations = redisTemplate.boundHashOps(redisKey);
this.clear(cartParamDto, trackingNo);
Map<String, CartGoods> cartGoodsMap = cartParamDto.getCartGoodsList().parallelStream()
.filter(k -> StringUtils.isNotEmpty(k.getCartGoodsUid()))
.collect(Collectors.toMap(CartGoods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
operations.putAll(cartGoodsMap);
return this.getCartGoodsList(cartParamDto, trackingNo);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "setCartGoodsList", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public BaseResponse<CartGoods> getCartGoods(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
BoundHashOperations<String, String, CartGoods> operations = redisTemplate.boundHashOps(redisKey);
CartGoods cartGoods = operations.get(cartParamDto.getCartGoodsUid());
return CartResponseUtil.success(cartGoods);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "getCartGoods", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public BaseResponse<List<CartGoods>> updateGoodsQty(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
BoundHashOperations<String, String, CartGoods> operations = redisTemplate.boundHashOps(redisKey);
CartGoods cartGoods = operations.get(cartParamDto.getCartGoodsUid());
if (cartGoods != null) {
// 当数量为0时,移除
if (Objects.equals(cartParamDto.getQty(), 0)) {
operations.delete(cartParamDto.getCartGoodsUid());
} else {
cartGoods.setQty(cartParamDto.getQty());
operations.put(cartParamDto.getCartGoodsUid(), cartGoods);
}
}
return this.getCartGoodsList(cartParamDto, trackingNo);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "updateGoodsQty", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public BaseResponse clear(CartParamDto cartParamDto, String trackingNo) {
try {
redisTemplate.delete(this.getShoppingCartGoodsKey(cartParamDto));
redisTemplate.delete(this.getShoppingCartGoodsAmountKey(cartParamDto));
return new BaseResponse(VersionUtils.VER_1, CartResponseConstant.SUCCESS.getCode(), CartResponseConstant.SUCCESS.getMessage());
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "clear", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public String getCouponAppId() {
return this.appId;
}
@Override
public Map<String, Boolean> getCouponOrderWay(String partnerId, List<String> activityCodes, Integer orderTye, String trackingNo) {
return null;
}
/**
* 获取绑定微商城门店id
*/
public String getBindMallShopId(String appId, String trackingNo) {
try {
BoundValueOperations operations = redisTemplate.boundValueOps(this.getBindMallShopKey(appId));
String mallShopId = (String) operations.get();
return mallShopId;
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "getBindMallShopId", appId, e, Level.ERROR);
return null;
}
}
/**
* 获取记录购物车信息的key
*
* @return
*/
private String getShoppingCartGoodsKey(CartParamDto cartParamDto) {
return RedisKeyConstant.SAAS_MALL_SHOPPINGCART_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId();
}
/**
* 获取记录购物车价格的key
*
* @return
*/
private String getShoppingCartGoodsAmountKey(CartParamDto cartParamDto) {
return RedisKeyConstant.SAAS_MALL_SHOPPINGCART_AMOUNT_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId();
}
/**
* 获取绑定的微商城门店
*/
private String getBindMallShopKey(String appId) {
return RedisKeyConstant.OPENSTORE_MICROMALL_BIND_STOREID_PREFIX + appId;
}
}
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