| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models;
- use app\jobs\SyncMdGoodsJob;
- use app\models\Cat;
- use app\models\Goods;
- use app\models\GoodsCat;
- use app\models\Md;
- use app\models\MdGoods;
- use yii\base\Model;
- use yii\helpers\Json;
- class MdGoodsForm extends Model
- {
- /**
- * @param array $arr | status 状态 name 名称 cat_id 分类id mch_id 入驻商 is_verify 审核 select 查询数据
- * @return array
- */
- public static function getList ($arr = [])
- {
- $query = MdGoods::find()->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)
- ];
- }
- }
- }
|