page_id) { $model = new DiyTemplateForm(); $model->store_id = $this->store_id; $model->attributes = \Yii::$app->request->get(); $res = $model->detail(); if($res['code'] == 0) { return $res; } else { return $res; } } } private function getBlockList() { } /** * @param Store $store */ private function getModuleList($store) { $list = json_decode($store->home_page_module, true); if (!$list) { $list = [ [ 'name' => 'notice', ], [ 'name' => 'banner', ], [ 'name' => 'search', ], [ 'name' => 'nav', ], [ 'name' => 'topic', ], [ 'name' => 'coupon', ], [ 'name' => 'cat', ], ]; } else { $new_list = []; foreach ($list as $item) { if (stripos($item['name'], 'block-') !== false) { $names = explode('-', $item['name']); $new_list[] = [ 'name' => $names[0], 'block_id' => $names[1], ]; } elseif (stripos($item['name'], 'single_cat-') !== false) { $names = explode('-', $item['name']); $new_list[] = [ 'name' => $names[0], 'cat_id' => $names[1], ]; } elseif (stripos($item['name'], 'video-') !== false) { $names = explode('-', $item['name']); $new_list[] = [ 'name' => $names[0], 'video_id' => $names[1], ]; } else { $new_list[] = $item; } } $list = $new_list; } return $list; } public function getMiaoshaData() { $ms_next = false; $miaosha = Miaosha::findOne([ 'store_id' => $this->store_id, ]); if (!$miaosha) { return [ 'code' => 1, 'msg' => '暂无秒杀安排', ]; } $miaosha->open_time = json_decode($miaosha->open_time, true); $list = MiaoshaGoods::find()->alias('mg') ->select('mg.id,g.name,g.cover_pic AS pic,g.original_price AS price,mg.attr,mg.start_time') ->leftJoin(['g' => MsGoods::tableName()], 'mg.goods_id=g.id') ->where([ 'AND', [ 'mg.is_delete' => 0, 'g.is_delete' => 0, 'mg.open_date' => date('Y-m-d'), 'g.status' => 1, 'mg.start_time' => date('H'), 'mg.store_id' => $this->store_id, ], ['in','mg.start_time', $miaosha->open_time], ]) ->orderBy('g.sort ASC,g.created_at DESC') ->limit(10) ->asArray()->all(); if (empty($list)) { $ms_next = true; $next = MiaoshaGoods::find()->alias('mg') ->where([ 'AND', [ 'mg.is_delete' => 0, 'g.is_delete' => 0, 'g.status' => 1, 'mg.store_id' => $this->store_id, ], ['=','mg.open_date',date('Y-m-d')], ['>','mg.start_time', date('H')], ])->orWhere([ 'AND', [ 'mg.is_delete' => 0, 'g.is_delete' => 0, 'g.status' => 1, 'mg.store_id' => $this->store_id, ], ['>','mg.open_date',date('Y-m-d')], ]) ->leftJoin(['g' => MsGoods::tableName()], 'mg.goods_id=g.id') ->orderBy('mg.open_date asc,mg.start_time asc') ->select('mg.start_time,mg.open_date,mg.id')->one(); $list = MiaoshaGoods::find()->alias('mg') ->select('mg.id,g.name,g.cover_pic AS pic,g.original_price AS price,mg.attr,mg.start_time,mg.open_date') ->leftJoin(['g' => MsGoods::tableName()], 'mg.goods_id=g.id') ->where([ 'AND', [ 'mg.is_delete' => 0, 'g.is_delete' => 0, 'mg.open_date' => $next->open_date, 'g.status' => 1, 'mg.start_time' => $next->start_time, 'mg.store_id' => $this->store_id, ], ['in','mg.start_time', $miaosha->open_time], ]) ->orderBy('mg.open_date asc,mg.start_time asc') ->limit(10) ->asArray() ->all(); } ////// $startTime = intval(date('H')); $openDate = time(); foreach ($list as $i => $item) { $item['attr'] = json_decode($item['attr'], true); $list[$i] = $item; $price_list = []; foreach ($item['attr'] as $attr) { if ($attr['miaosha_price'] <= 0) { $price_list[] = doubleval($item['price']); } else { $price_list[] = doubleval($attr['miaosha_price']); } } $list[$i]['price'] = number_format($list[$i]['price'], 2, '.', ''); $list[$i]['miaosha_price'] = number_format(min($price_list), 2, '.', ''); unset($list[$i]['attr']); $startTime = $item['start_time']; $openDate = strtotime($item['open_date']); }; $openDate = $openDate>strtotime(date('Y-m-d',time()))?date('m.d',$openDate):''; if (count($list) == 0){ return [ 'name' => '暂无秒杀活动', 'rest_time' => 0, 'goods_list' => null, ]; }else{ $name = $ms_next?'预告':''; return [ // 'name' => intval(date('H')) . '点场', 'name' => $startTime . '点场'.$name, 'ms_next' => $ms_next, 'date' => $openDate, 'rest_time' => max(intval(strtotime(date('Y-m-d ' . $startTime . ':59:59')) - time()), 0), 'goods_list' => $list, ]; } } public function getPintuanData() { $num_query = PtOrderDetail::find()->alias('pod') ->select('pod.goods_id,SUM(pod.num) AS sale_num') ->leftJoin(['po' => PtOrder::tableName()], 'pod.order_id=po.id') ->where([ 'AND', [ 'pod.is_delete' => 0, 'po.is_delete' => 0, 'po.is_pay' => 1, ], ])->groupBy('pod.goods_id'); $list = PtGoods::find()->alias('pg') ->select('pg.*,pod.sale_num') ->leftJoin(['pod' => $num_query], 'pg.id=pod.goods_id') ->where([ 'AND', [ 'pg.is_delete' => 0, 'pg.status' => 1, 'pg.store_id' => $this->store_id, ], ])->orderBy('pg.is_hot DESC,pg.sort ASC,pg.created_at DESC') ->limit(10) ->asArray()->all(); $new_list = []; foreach ($list as $item) { $new_list[] = [ 'id' => $item['id'], 'pic' => $item['cover_pic'], 'name' => $item['name'], 'price' => number_format($item['price'], 2, '.', ''), 'sale_num' => intval($item['sale_num'] ? $item['sale_num'] : 0) + intval($item['virtual_sales'] ? $item['virtual_sales'] : 0), ]; } return [ 'goods_list' => $new_list, ]; } /** * 获取首页活动弹窗列表 */ public function getActModalList() { $act_list = []; return $act_list; $fxhb_act = $this->getFxhbAct(); if ($fxhb_act) { $act_list[] = $fxhb_act; } foreach ($act_list as $i => $item) { if ($i == 0) $act_list[$i]['show'] = true; else $act_list[$i]['show'] = false; $act_list[$i]['list'][] = $item; } return $act_list; } private function getFxhbAct() { $act_data = [ 'name' => '一起拆红包', 'pic_url' => \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/statics/images/fxhb/act_modal.png', 'pic_width' => 750, 'pic_height' => 696, 'url' => '/pages/fxhb/open/open', 'open_type' => 'navigate', 'page_id' => 'fxhb' ]; $fxhb_setting = FxhbSetting::findOne([ 'store_id' => $this->store_id, ]); if (!$fxhb_setting || $fxhb_setting->game_open != 1) { return null; } if ($user = \Yii::$app->user->isGuest) { return $act_data; } /** @var User $user */ $user = get_user_id(); /** @var FxhbHongbao $hongbao */ $hongbao = FxhbHongbao::find()->where([ 'user_id' => $user->id, 'store_id' => $this->store_id, 'parent_id' => 0, 'is_finish' => 0, 'is_expire' => 0, ])->one(); if (!$hongbao) return $act_data; if (time() > $hongbao->expire_time) { $hongbao->is_expire = 1; $hongbao->save(); return $act_data; } return null; } public function getYuyueData() { $list = YyGoods::find()->where(['store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1]) ->select(['id', 'name', 'cover_pic', 'price']) ->limit(10)->orderBy(['sort' => SORT_ASC])->asArray()->all(); return $list; } public function getMchList() { $list = Mch::find()->where([ 'store_id' => $this->store_id, 'is_delete' => 0, 'is_open' => 1, 'is_lock' => 0, 'is_recommend' => 1, ])->select('id,name,logo') ->orderBy('sort ASC,addtime DESC')->limit(10) ->asArray()->all(); return $list ? $list : []; } private function getUrl($url) { preg_match('/^[^\?+]\?([\w|\W]+)=([\w|\W]*?)&([\w|\W]+)=([\w|\W]*?)$/', $url, $res); return $res; } }