IndexController.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <?php
  2. namespace app\frontend\modules\shop\controllers;
  3. use app\api\Base;
  4. use app\common\components\ApiController;
  5. use app\common\facades\Setting;
  6. use app\common\models\Category;
  7. use app\common\models\Goods;
  8. use app\common\models\Slide;
  9. use app\framework\Http\Request;
  10. use app\frontend\modules\goods\models\Brand;
  11. use Illuminate\Support\Facades\DB;
  12. use app\common\services\goods\VideoDemandCourseGoods;
  13. use app\common\models\Adv;
  14. use app\common\helpers\Cache;
  15. use Yunshop\Love\Common\Services\SetService;
  16. /**
  17. * Created by PhpStorm.
  18. * Author: 芸众商城 www.yunzshop.com
  19. * Date: 2017/3/3
  20. * Time: 22:16
  21. */
  22. class IndexController extends ApiController
  23. {
  24. protected $publicAction = ['getDefaultIndex'];
  25. public function getDefaultIndex()
  26. {
  27. $set = Setting::get('shop.category');
  28. $set['cat_adv_img'] = replace_yunshop(yz_tomedia($set['cat_adv_img']));
  29. $category = $this->getRecommentCategoryList();
  30. foreach ($category as &$item) {
  31. $item['thumb'] = replace_yunshop(yz_tomedia($item['thumb']));
  32. $item['adv_img'] = replace_yunshop(yz_tomedia($item['adv_img']));
  33. }
  34. $data = [
  35. 'ads' => $this->getAds(),
  36. 'category' => $category,
  37. 'set' => $set,
  38. 'goods' => $this->getRecommentGoods(),
  39. ];
  40. return $this->successJson('成功', $data);
  41. }
  42. //获取推荐品牌
  43. public function getRecommentBrandList()
  44. {
  45. $request = Brand::uniacid()->select('id', 'name', 'logo')
  46. ->where('is_recommend', 1)->get();
  47. foreach ($request as &$item) {
  48. if ($item['logo']) {
  49. $item['logo'] = replace_yunshop(yz_tomedia($item['logo']));
  50. }
  51. }
  52. return $request;
  53. }
  54. //获取限时购商品
  55. public function getTimeLimitGoods()
  56. {
  57. $goods_model = \app\common\modules\shop\ShopConfig::current()->get('goods.models.commodity_classification');
  58. $goods_model = new $goods_model;
  59. $time = time();
  60. $field = ['id', 'thumb', 'title', 'price', 'market_price'];
  61. $timeGoods = $goods_model->uniacid()->select(DB::raw(implode(',', $field)))
  62. ->whereHas('hasOneGoodsLimitBuy', function ($query) use ($time) {
  63. $query->where('status', 1)->where('start_time', '<=', $time);
  64. })
  65. ->with('hasOneGoodsLimitBuy')
  66. // ->where("is_recommand", 1)
  67. ->where("status", 1)
  68. ->whereInPluginIds()
  69. ->orderBy("is_recommand", 'desc')
  70. ->orderBy("display_order", 'desc')
  71. ->orderBy("id", 'desc')
  72. ->limit(6)
  73. ->get();
  74. // $timeGoods->vip_level_status;
  75. if (!empty($timeGoods->toArray())) {
  76. foreach ($timeGoods as $key => &$value) {
  77. $value->thumb = yz_tomedia($value->thumb);
  78. $value->hasOneGoodsLimitBuy->start_time = date('Y/m/d H:i:s', $value->hasOneGoodsLimitBuy->start_time);
  79. $value->hasOneGoodsLimitBuy->end_time = date('Y/m/d H:i:s', $value->hasOneGoodsLimitBuy->end_time);
  80. }
  81. }
  82. return $timeGoods;
  83. }
  84. public function getRecommentGoods()
  85. {
  86. //$goods = new Goods();
  87. $field = ['id as goods_id', 'thumb', 'title', 'price', 'market_price', 'has_option'];
  88. // if (!Cache::has('YZ_Index_goodsList')) {
  89. $goods_model = \app\common\modules\shop\ShopConfig::current()->get('goods.models.commodity_classification');
  90. $goods_model = new $goods_model;
  91. $goodsList = $goods_model->uniacid()->select(DB::raw(implode(',', $field)))
  92. ->with(['hasManyOptions' => function ($query) {
  93. return $query->select('id', 'goods_id', 'product_price');
  94. }])
  95. ->where("is_recommand", 1)
  96. ->where("status", 1)
  97. ->whereInPluginIds()
  98. ->orderBy("display_order", 'desc')
  99. ->orderBy("id", 'desc')
  100. ->paginate(16);
  101. // ->get()->map(function (Goods $goods) {
  102. // return $goods->append('vip_price');
  103. // });
  104. foreach ($goodsList as $key => &$item){
  105. $item['vip_level_status'] = $item->vip_level_status;
  106. $item['thumb'] = yz_tomedia($item->thumb);
  107. if ($item->has_option && !$item->hasManyOptions->isEmpty()) {
  108. $min_price = $item->hasManyOptions->min('product_price');
  109. $max_price = $item->hasManyOptions->max('product_price');
  110. $item->price = $min_price==$max_price?$min_price:$min_price.'-'.$max_price;
  111. }
  112. // dd($key,$item->vip_level_status);
  113. }
  114. if($goodsList){
  115. $goodsList = $goodsList->toArray();
  116. }
  117. // foreach ($goodsList['data'] as &$value) {
  118. // $value['thumb'] = yz_tomedia($value['thumb']);
  119. // }
  120. if (app('plugins')->isEnabled('love')){
  121. // $love_basics_set = SetService::getLoveSet();//获取爱心值基础设置
  122. // $goodsList->love_name = $love_basics_set['name'];
  123. foreach ($goodsList['data'] as &$goodsValue){
  124. $love_value = \Yunshop\Love\Common\Models\GoodsLove::select('award_proportion')
  125. ->where('uniacid',\Yunshop::app()->uniacid)
  126. ->where('goods_id',$goodsValue['goods_id'])
  127. ->where('award',1)
  128. ->first();
  129. $goodsValue['award_proportion'] = $love_value->award_proportion;
  130. }
  131. }
  132. // Cache::put('YZ_Index_goodsList', $goodsList, 4200);
  133. // } else {
  134. // $goodsList = Cache::get('YZ_Index_goodsList');
  135. //
  136. // }
  137. /*//是否是课程商品
  138. $videoDemand = new VideoDemandCourseGoods();
  139. foreach ($goodsList as &$value) {
  140. $value->thumb = yz_tomedia($value->thumb);
  141. $value->is_course = $videoDemand->isCourse($value->goods_id);
  142. }*/
  143. return $goodsList;
  144. }
  145. public function getRecommentCategoryList()
  146. {
  147. $request = Category::getRecommentCategoryList()
  148. ->where('is_home', '1')
  149. ->pluginId()
  150. ->get();
  151. foreach ($request as &$item) {
  152. $item['thumb'] = replace_yunshop(yz_tomedia($item['thumb']));
  153. $item['adv_img'] = replace_yunshop(yz_tomedia($item['adv_img']));
  154. }
  155. return $request;
  156. }
  157. /**
  158. * @param $goods_id
  159. * @param null $option_id
  160. * @return bool|\Illuminate\Database\Eloquent\Model|null|static
  161. */
  162. public function getAds()
  163. {
  164. $slide = Slide::getSlidesIsEnabled()->get();
  165. if ($slide) {
  166. $slide = $slide->toArray();
  167. foreach ($slide as &$item) {
  168. $item['thumb'] = replace_yunshop(yz_tomedia($item['thumb']));
  169. }
  170. }
  171. return $slide;
  172. }
  173. public function getAdv()
  174. {
  175. $adv = Adv::first();
  176. $advertises = $adv['advs'] ?: [];
  177. $new_advertises = [];
  178. if ($advertises) {
  179. foreach ($advertises as $key => $value) {
  180. $advArr = [];
  181. $advArr['sort'] = $key;
  182. $advArr['img'] = $value['img'] ? yz_tomedia($value['img']) : '';
  183. $advArr['link'] = $value['link'];
  184. $advArr['small_link'] = $value['small_link'];
  185. $new_advertises[] = $advArr;
  186. }
  187. $field = array_column($new_advertises, 'sort');
  188. array_multisort($field, SORT_ASC, $new_advertises);
  189. }
  190. return $new_advertises;
  191. }
  192. public function getPayProtocol(Request $request, $integrated = null)
  193. {
  194. $setting = Setting::get('shop.trade');
  195. //共享链支付协议开启
  196. if ($setting['share_chain_pay_open'] == 1) {
  197. if(is_null($integrated)){
  198. return $this->successJson('获取成功', htmlspecialchars_decode($setting['pay_content']));
  199. }else{
  200. return show_json(1, htmlspecialchars_decode($setting['pay_content']));
  201. }
  202. // return $this->successJson('获取成功', str_replace('&nbsp;', '',strip_tags(htmlspecialchars_decode($setting['pay_content']) )) );
  203. }
  204. if(is_null($integrated)){
  205. return $this->errorJson('未开启共享链支付协议');
  206. }else{
  207. return show_json(1,'');
  208. }
  209. }
  210. }