|
@@ -12,6 +12,55 @@ class CartService extends CrudService {
|
|
|
this.goodsSpecModel = this.ctx.model.Shop.GoodsSpec;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 返回购物车需要的数据格式
|
|
|
+ * @param {Object} query 查询条件
|
|
|
+ * @param query.customer 顾客id
|
|
|
+ * @return {Array}
|
|
|
+ */
|
|
|
+ async selfCart({ customer }) {
|
|
|
+ assert(customer, '缺少顾客信息');
|
|
|
+ const { populate } = this.getRefMods();
|
|
|
+ let list = await this.model.find({ customer }).populate(populate);
|
|
|
+ list = JSON.parse(JSON.stringify(list));
|
|
|
+ list = list.map(i => {
|
|
|
+ const obj = {};
|
|
|
+ obj.cart_id = _.get(i, '_id');
|
|
|
+ obj.shop_name = _.get(i.shop, 'name');
|
|
|
+ obj.shop = _.get(i.shop, '_id');
|
|
|
+ obj.goods = this.setCartGoodsData(i.goods, i.goodsSpec);
|
|
|
+ return obj;
|
|
|
+ });
|
|
|
+ list = _.groupBy(list, 'shop');
|
|
|
+ const arr = [];
|
|
|
+ for (const key in list) {
|
|
|
+ const shopGroup = list[key];
|
|
|
+ const goods = shopGroup.reduce((p, n) => {
|
|
|
+ p.push(n.goods);
|
|
|
+ return p;
|
|
|
+ }, []);
|
|
|
+ const shop = _.omit(_.head(shopGroup), [ 'goods' ]);
|
|
|
+ arr.push({ ...shop, goods });
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重组购物车商品
|
|
|
+ * @param {Object} goods 商品
|
|
|
+ * @param {Object} goodsSpec 商品规格
|
|
|
+ */
|
|
|
+ setCartGoodsData(goods, goodsSpec) {
|
|
|
+ const obj = {};
|
|
|
+ obj.goods_id = _.get(goods, '_id');
|
|
|
+ obj.goods_name = _.get(goods, 'name');
|
|
|
+ obj.goodsSpec_id = _.get(goodsSpec, '_id');
|
|
|
+ obj.goodsSpec_name = _.get(goodsSpec, 'name');
|
|
|
+ obj.money = _.get(goodsSpec, 'sell_money');
|
|
|
+ obj.num = _.get(goodsSpec, 'num');
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 创建购物车信息,若找到该店的该商品规格.进行库存校验
|
|
|
* 数量进行合并;
|