| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\models\v1;
- use app\models\Mch;
- use app\models\User;
- use app\modules\client\models\v1\diy\DiyTemplateForm;
- use yii\base\Model;
- class IndexForm extends Model
- {
- public $store_id;
- public $_platform;
- public $page_id;
- public function search()
- {
- if($this->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;
- }
- }
|