IndexForm.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\plugins\food\models\client;
  8. use app\models\Banner;
  9. use app\models\Option;
  10. use app\models\Store;
  11. use app\plugins\food\models\FoodCat;
  12. use app\plugins\food\models\FoodGoods;
  13. use yii\base\Model;
  14. use yii\helpers\Json;
  15. class IndexForm extends Model
  16. {
  17. public static $validCategory = [
  18. 'B0199' => '火锅',
  19. 'B0001' => '中式正餐',
  20. 'B0002' => '西式正餐',
  21. 'B0003' => '日韩/东南亚菜',
  22. 'B0004' => '中式快餐',
  23. 'B0005' => '西式快餐',
  24. 'B0006' => '小吃/熟食',
  25. 'B0007' => '校园团餐',
  26. 'B0008' => '综合团餐',
  27. 'B0009' => '饮品/甜品',
  28. 'B0010' => '烘焙糕点',
  29. 'B0011' => '酒吧/清吧',
  30. 'B0012' => '咖啡馆/茶馆',
  31. 'B0200' => '宴会提供商'
  32. ];
  33. public $store_id;
  34. public function getInfo() {
  35. // 商户信息
  36. $store_id = get_store_id();
  37. $store_info = Store::findOne(['id' => $store_id, 'is_delete' => 0]);
  38. if (!$store_info) {
  39. return [
  40. 'code' => 1,
  41. 'msg' => '该店铺不存在'
  42. ];
  43. }
  44. $food_config = Option::getFoodBookConfig();
  45. $data = [
  46. 'store' => [
  47. 'name' => $food_config['name'],
  48. 'address' => $food_config['address'],
  49. 'phone' => $food_config['phone'],
  50. 'logo' => $store_info['logo'],
  51. 'open_time' => $food_config['open_time'],
  52. 'latitude' => explode(',', $store_info['coordinate'])[0] ?: '',
  53. 'longitude' => explode(',', $store_info['coordinate'])[1] ?: ''
  54. ],
  55. 'banner' => [],
  56. 'recommend_list' => []
  57. ];
  58. // 轮播图
  59. $banners = Banner::find()->where(['store_id' => $this->store_id, 'type' => Banner::TYPE_FOOD, 'is_delete' => 0])->orderBy('sort desc')->asArray()->all();
  60. if (!empty($banners)) {
  61. $temp = [];
  62. foreach ($banners as $value) {
  63. $temp[] = [
  64. 'image' => $value['pic_url'],
  65. 'link' => $value['page_url'],
  66. 'title' => $value['title']
  67. ];
  68. }
  69. $data['banner'] = $temp;
  70. }
  71. // 推荐商品
  72. $goods = FoodGoods::find()->where(['store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1, 'is_recommend' => 1])->orderBy('sort desc')->asArray()->all();
  73. if (!empty($goods)) {
  74. $temp = [];
  75. foreach ($goods as $value) {
  76. $temp[] = [
  77. 'goods_pic' => Json::decode($value['cover_pic'])[0]['url'],
  78. 'desc' => $value['subtitle'],
  79. 'name' => $value['name'],
  80. 'price' => $value['price'],
  81. 'original_price' => $value['original_price'],
  82. 'id' => $value['id'],
  83. 'sales' => $value['virtual_sales']
  84. ];
  85. }
  86. $data['recommend_list'] = $temp;
  87. }
  88. return [
  89. 'code' => 0,
  90. 'msg' => 'success',
  91. 'data' => $data
  92. ];
  93. }
  94. public function getGoodsList() {
  95. // 分类
  96. $cats = FoodCat::find()->where(['store_id' => $this->store_id, 'is_delete' => 0, 'is_show' => 1])->orderBy('sort desc')->select('id, name as title, desc as subtitle, pic_url as icon')->asArray()->all();
  97. if (empty($cats)) {
  98. return [
  99. 'code' => 1,
  100. 'msg' => '分类未找到'
  101. ];
  102. }
  103. foreach ($cats as $key => &$cat) {
  104. $goods_list = FoodGoods::find()->where(['store_id' => $this->store_id, 'cat_id' => $cat['id'], 'is_delete' => 0, 'status' => 1])
  105. ->select('id, name, cover_pic as goods_pic, subtitle as desc, price, original_price, attr, virtual_sales as sales')->orderBy('sort desc')->asArray()->all();
  106. if (empty($goods_list)) {
  107. // 如果当前分类下无商品,不作展示
  108. unset($cats[$key]);
  109. continue;
  110. }
  111. foreach ($goods_list as $key => $goods) {
  112. $goods_list[$key]['goods_pic'] = Json::decode($goods['goods_pic'])[0]['url'];
  113. $goods_list[$key]['attr'] = Json::decode($goods['attr']);
  114. }
  115. $cat['list'] = $goods_list;
  116. }
  117. sort($cats);
  118. return [
  119. 'code' => 0,
  120. 'msg' => 'success',
  121. 'data' => $cats
  122. ];
  123. }
  124. }