'ID', 'mall_id' => '商城id', 'goods_id' => '商品id', 'cate_id' => '分类id', 'contribution' => '贡献值', 'contribution_percent' => '贡献值类型:1:百分比;0:固定值', 'profit' => '利润值', 'profit_percent' => '利润值类型:1:百分比;0:固定值', 'status' => '状态[-1:删除;0:禁用;1启用]', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } // 关联模型 public function getGoods() { return $this->hasOne(Goods::class, ['id' => 'goods_id']); } public static function setData(array $params) { $t = Yii::$app->db->beginTransaction(); try { if (!empty($params['id'])) { $model = self::findOne(['id' => $params['id'], 'mall_id' => $params['mall_id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); if (empty($model)) throw new \Exception('服务不存在或已删除'); } else { $model = new self(); $model->loadDefaultValues(); } if (!$model->load($params, '')) throw new \Exception($model->getErrorMessage()); $res = $model->save(); if ($res == false) throw new \Exception($model->getErrorMessage()); BlindBoxCate::updateGoodsNum($model['cate_id']); $t->commit(); return $model; } catch (\Exception $e) { $t->rollBack(); self::$static_error = $e->getMessage(); return false; } } public static function addData(array $params) { $t = Yii::$app->db->beginTransaction(); try { foreach ($params['goods_id'] as $goods_id) { $where = ['goods_id' => $goods_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]; if (!empty($params['mall_id'])) $where['mall_id'] = $params['mall_id']; $model = self::findOne($where); if (empty($model)) $model = new self(); $data['goods_id'] = (int)$goods_id; $data['mall_id'] = (int)$params['mall_id']; $data['contribution_percent'] = $params['contribution_percent']; $data['contribution'] = $params['contribution']; $data['profit_percent'] = $params['profit_percent']; $data['profit'] = $params['profit']; $data['cate_id'] = $params['cate_id']; $model->loadDefaultValues(); if (!$model->load($data, '')) throw new \Exception($model->getErrorMessage()); $res = $model->save(); if ($res == false) throw new \Exception($model->getErrorMessage()); } BlindBoxCate::updateGoodsNum($params['cate_id']); $t->commit(); return true; } catch (\Exception $e) { $t->rollBack(); self::$static_error = $e->getMessage(); return false; } } public static function getGoodsList($mall_id, $goods_ids) { $where[] = ['mall_id' => $mall_id]; if (!empty($goods_ids)) $where[] = ['goods_id' => $goods_ids]; $where[] = ['status' => StatusEnum::ENABLED]; $params['where'] = $where; $params['order'] = 'id DESC'; $params['with'] = ['goods' => function ($query) { $query->where(['status' => StatusEnum::ENABLED]); }]; $params['limit'] = 10; $params['select'] = 'id,goods_id,created_at'; $list = BlindBoxGoods::lists($params); if (!empty($list)) { foreach ($list as &$item) { $item['goods_name'] = $item['cover_pic'] = ''; $item['price']= 0 ; if(isset($item['goods'])){ $item['goods_name'] = $item['goods']['goods_name']; $item['cover_pic'] = $item['goods']['cover_pic']; $item['price'] = $item['goods']['price']; unset($item['goods']); } } } return $list; } public static function del($mall_id, $ids) { $t = Yii::$app->db->beginTransaction(); try { $res = BlindBoxGoods::updateAll(['status' => StatusEnum::DELETE], ['id' => $ids, 'mall_id' => $mall_id]); if ($res === false) throw new \Exception(BlindBoxGoods::getStaticError()); $list = BlindBoxGoods::find()->where(['id' => $ids, 'mall_id' => $mall_id])->select('id,cate_id')->all(); foreach ($list as $item) { BlindBoxCate::updateGoodsNum($item['cate_id']); } $t->commit(); return true; } catch (\Exception $e) { $t->rollBack(); self::$static_error = $e->getMessage(); return false; } } public static function getGoodsListByDiy($mall_id,$post){ $where[] = ['mall_id' => $mall_id]; $where[] = ['status' => StatusEnum::ENABLED]; if (!empty($post['keyword'])) { $goods_list = Goods::lists(['where' => [['mall_id' => $mall_id], ['like', 'goods_name', trim($post['keyword']) . '%', false], ['status' => StatusEnum::ENABLED]], 'select' => 'id']); $goods_id_arr = array_column($goods_list, 'id'); $where[] = ['goods_id' => $goods_id_arr]; } $params['where'] = $where; $params['order'] = 'id DESC'; $params['with'] = ['goods' => function ($query) use($mall_id){ $query->where(['mall_id'=>$mall_id,'status' => StatusEnum::ENABLED]); }]; $params['limit'] = 10; $params['select']='id,goods_id,created_at'; $list = BlindBoxGoods::listPage($params,false,true); if(!empty($list['list'])){ foreach ($list['list'] as &$item){ $item['img'] = $item['goods']['cover_pic']; $item['title'] = $item['goods']['goods_name']; $item['sales_num'] = $item['goods']['sales_num']; $item['price'] = ''; $item['original_price'] = ''; $item['subtitle'] = ''; unset($item['goods']); } } return $list; } }