alias('mdg') ->leftJoin(['g' => Goods::tableName()], 'mdg.goods_id = g.id') ->where(['mdg.md_id' => get_md_id(), 'g.store_id' => get_store_id(), 'g.mch_id' => 0, 'g.is_delete' => 0, 'g.md_food_id' => 0]) ->andWhere(['not like', 'g.name', '当面付']) ->andWhere(['g.product_type' => [0, 1, 2]])->andWhere(['g.status' => Goods::STATUS_NORMAL]); if (isset($arr['name']) && !empty($arr['name'])) { $query->andWhere([ 'like', 'g.name', $arr['name'] ]); } if (isset($arr['cat_id']) && $arr['cat_id'] > 0) { $query->leftJoin(['gc' => GoodsCat::tableName()], 'g.id = gc.goods_id')->andWhere([ 'gc.cat_id' => Cat::getCatId($arr['cat_id']) ])->groupBy('gc.goods_id'); } if (isset($arr['status']) && $arr['status'] > -1) { if ($arr['status'] == 0) { $query->andWhere(['mdg.status' => 0]); } elseif ($arr['status'] == 1) { $query->andWhere(['mdg.status' => 1]); } } $select = ['g.id', 'g.name', 'mdg.status', 'g.service', 'g.updated_at', 'g.virtual_sales', 'g.price', 'g.goods_num', 'g.sort' ,'g.cover_pic', 'g.original_price', 'g.attr', 'g.detail', 'g.use_attr', 'mdg.delivery_type', 'g.can_set_md_price', 'md_price' => 'mdg.price', 'md_goods_num' => 'mdg.goods_num', 'md_virtual_sales' => 'mdg.virtual_sales']; $query->select($select) ->orderBy(['g.sort' => SORT_DESC, 'g.id' => SORT_DESC]); $pagination = pagination_make($query); $list = $pagination['list']; foreach($list as $k => $v) { $goods_cat = GoodsCat::find()->alias('gc') ->leftJoin(['c' => Cat::tableName()], 'gc.cat_id=c.id') ->where([ 'gc.goods_id' => $v['id'] ]) ->select(['c.name']) ->asArray() ->all(); $list[$k]['cat'] = $goods_cat; // 处理门店商品兼容 // $list[$k]['md_virtual_sales'] = $v['virtual_sales']; // $list[$k]['md_goods_num'] = $v['goods_num']; // $list[$k]['md_price'] = $v['price']; $list[$k]['delivery_type'] = Json::decode($v['delivery_type']); $list[$k]['status'] = intval($v['status']); $list[$k]['choose_delivery_type'] = Json::decode(Md::findOne(get_md_id())->delivery_type); } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list, 'pageNo' => $pagination['pageNo'], 'totalCount' => $pagination['totalCount'] ] ]; } public function setAttrNum() { $data = post_params(); $md_goods = MdGoods::findOne(['goods_id' => $data['id'], 'md_id' => get_md_id()]); if (!$md_goods) { $md_goods = new MdGoods(); $md_goods->md_id = get_md_id(); $md_goods->goods_id = $data['id']; $md_goods->status = Goods::STATUS_NORMAL; $md_goods->price = $data['price']; $goods = Goods::findOne($data['id']); $md_goods->virtual_sales = $goods->virtual_sales; $md_goods->delivery_type = Md::findOne(get_md_id())->self_delivery_type; } $md_goods->attr = Json::encode($data['attr']); $goods_num = 0; foreach($data['attr'] as $item) { $goods_num += $item['num']; } $md_goods->goods_num = $goods_num; $res = $md_goods->save() ? ['code' => 0, 'msg' => '保存成功'] : ['code' => 1, 'msg' => implode(';', $md_goods->firstErrors)]; return $res; } // 修改商品属性 public function setType() { $type = get_params('type'); $goods_id = get_params('id'); $md_id = get_md_id(); $value = get_params('value', 0); if (!$type || !$goods_id || !$md_id) { return [ 'code' => 1, 'msg' => '参数错误' ]; } $md_goods = MdGoods::findOne([ 'md_id' => $md_id, 'goods_id' => $goods_id ]); $is_new_record = false; if (!$md_goods) { $md_goods = new MdGoods(); $md_goods->md_id = $md_id; $md_goods->goods_id = $goods_id; $is_new_record = true; } $goods = Goods::findOne($goods_id); if ($type == 'delivery_type') { $md_goods->delivery_type = Json::decode($value); } else { $md_goods->$type = $value; } if ($type == 'goods_num') { if ($goods->use_attr == 0) { $attr = Json::decode($goods->attr); $attr[0]['num'] = $value; $md_goods->attr = Json::encode($attr); } if ($is_new_record) { $md_goods->attr = $goods->attr; $md_goods->virtual_sales = $goods->virtual_sales; $md_goods->price = $goods->price; $md_goods->delivery_type = Md::findOne(get_md_id())->self_delivery_type; } } if ($type == 'price') { if ($goods->use_attr == 0) { $attr = Json::decode($goods->attr); $attr[0]['price'] = doubleval($value); $md_goods->attr = Json::encode($attr); } if ($is_new_record) { $md_goods->attr = $goods->attr; $md_goods->virtual_sales = $goods->virtual_sales; $md_goods->delivery_type = Md::findOne(get_md_id())->self_delivery_type; $md_goods->goods_num = $goods->goods_num; } } if ($type == 'virtual_sales'){ if ($is_new_record) { $md_goods->attr = $goods->attr; $md_goods->price = $value; $md_goods->delivery_type = Md::findOne(get_md_id())->self_delivery_type; $md_goods->goods_num = $goods->goods_num; } } if ($type == 'delivery_type'){ if ($is_new_record) { $md_goods->attr = $goods->attr; $md_goods->price = $goods->price; $md_goods->goods_num = $goods->goods_num; $md_goods->virtual_sales = $goods->virtual_sales; } } if ($type == 'status'){ if ($is_new_record) { $md_goods->attr = $goods->attr; $md_goods->price = $goods->price; $md_goods->virtual_sales = $goods->virtual_sales; $md_goods->delivery_type = Md::findOne(get_md_id())->self_delivery_type; $md_goods->goods_num = $goods->goods_num; } } if ($md_goods->save()) { return [ 'code' => 0, 'msg' => '保存成功' ]; } else { return [ 'code' => 1, 'msg' => implode(';', $md_goods->firstErrors) ]; } } }