HomePageController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace app\frontend\controllers;
  3. use app\backend\modules\member\models\MemberRelation;
  4. use app\common\components\ApiController;
  5. use app\common\events\finance\PetEvent;
  6. use app\common\exceptions\MemberNotLoginException;
  7. use app\common\facades\EasyWeChat;
  8. use app\common\facades\RichText;
  9. use app\common\facades\Setting;
  10. use app\common\helpers\Cache;
  11. use app\common\models\AccountWechats;
  12. use app\common\models\member\MemberInvitationCodeLog;
  13. use app\common\models\MemberShopInfo;
  14. use app\common\models\Order;
  15. use app\common\modules\goods\GoodsRepository;
  16. use app\common\services\CollectHostService;
  17. use app\common\services\popularize\PortType;
  18. use app\framework\Http\Request;
  19. use app\frontend\models\Member;
  20. use app\frontend\models\PageShareRecord;
  21. use app\frontend\modules\coupon\controllers\MemberCouponController;
  22. use app\frontend\modules\home\services\ShopPublicDataService;
  23. use app\frontend\modules\member\controllers\MemberController;
  24. use app\frontend\modules\member\controllers\ServiceController;
  25. use app\frontend\modules\member\models\MemberModel;
  26. use app\frontend\modules\member\services\MemberLevelAuth;
  27. use app\frontend\modules\shop\controllers\IndexController;
  28. use Yunshop\Designer\Common\Services\IndexPageService;
  29. use Yunshop\Designer\Common\Services\OtherPageService;
  30. use Yunshop\Designer\Common\Services\PageTopMenuService;
  31. use Yunshop\Designer\models\Designer;
  32. use Yunshop\Designer\models\DesignerMenu;
  33. use Yunshop\Designer\models\GoodsGroupGoods;
  34. use Yunshop\Diyform\api\DiyFormController;
  35. use Yunshop\Love\Common\Models\GoodsLove;
  36. use Yunshop\Love\Common\Services\SetService;
  37. use Yunshop\Designer\Backend\Modules\Page\Controllers\RecordsController;
  38. use app\common\models\Goods;
  39. use Yunshop\NearbyStoreGoods\common\services\DesignerService;
  40. use Yunshop\NearbyStoreGoods\frontend\controllers\DesignerController;
  41. use app\common\helpers\Client;
  42. use app\frontend\modules\home\HomePage;
  43. use Yunshop\NewMemberPrize\frontend\controllers\NewMemberPrizeController;
  44. use Yunshop\SnatchRegiment\common\CommonService;
  45. use Yunshop\SnatchRegiment\models\SnatchGoods;
  46. class HomePageController extends ApiController
  47. {
  48. protected $publicAction = [
  49. 'index',
  50. 'wxapp',
  51. 'getParams',
  52. 'getCaptcha'
  53. ];
  54. protected $ignoreAction = [
  55. 'wxapp',
  56. 'getCaptcha'
  57. ];
  58. public function index(Request $request)
  59. {
  60. app('db')->cacheSelect = true;
  61. // 获取对应的装修服务
  62. $data_service = ShopPublicDataService::getInstance();
  63. // 获取首页数据
  64. $result = $data_service->getIndexData();
  65. return $this->successJson('ok', $result);
  66. }
  67. /**
  68. * 装修2.0 获取分页数据
  69. * @param 装修ID decorate_id
  70. * @param 组件ID component_id
  71. */
  72. public function getDecoratePage()
  73. {
  74. if (!app('plugins')->isEnabled('decorate') || \Setting::get('plugin.decorate.is_open') != "1") {
  75. return $this->errorJson('装修插件未开启');
  76. }
  77. $decorateId = request()->input('decorate_id'); //装修ID
  78. $componentId = request()->input('component_id'); //组件ID
  79. $componentKey = request()->input('component_key'); //组件名称
  80. $componentInfo = request()->input('component_info'); //组件参数
  81. if (!$decorateId || !$componentId || !$componentKey) {
  82. return $this->errorJson('缺少必要参数');
  83. }
  84. $className = ucfirst(str_replace('U_', '', $componentKey));
  85. $classNamespace = "\Yunshop\Decorate\common\services\component\\";
  86. // 判断类是否存在(类名需要对应组件名)
  87. if (class_exists($classNamespace . $className)) {
  88. $myclass = new \ReflectionClass($classNamespace . $className); //获取组件对应的类
  89. $commonData = [];
  90. $myclass = $myclass->newInstance($commonData);
  91. $list = $myclass->pageList(); //获取组件的分页数据
  92. }
  93. if (!$list) {
  94. return $this->errorJson('error');
  95. }
  96. return $this->successJson('success', $list);
  97. }
  98. /**
  99. * 小程序请求
  100. * @param Request $request
  101. * @return array|\Illuminate\Http\JsonResponse
  102. * @throws MemberNotLoginException
  103. */
  104. public function wxapp(Request $request)
  105. {
  106. return $this->index($request);
  107. }
  108. public function getFirstGoodsPage()
  109. {
  110. $list = (new IndexController())->getRecommentGoods();
  111. return $this->successJson('', $list);
  112. }
  113. public function getCaptcha()
  114. {
  115. //增加验证码功能
  116. $status = Setting::get('shop.sms.status');
  117. if ($status == 1) {
  118. $result['captcha'] = app('captcha')->create('default', true);
  119. $result['captcha']['status'] = $status;
  120. } else {
  121. $result['captcha']['status'] = $status;
  122. }
  123. return $this->successJson('ok', $result);
  124. }
  125. public function getParams(Request $request)
  126. {
  127. $this->dataIntegrated((new MemberController())->getAdvertisement($request, true), 'advertisement');
  128. $this->dataIntegrated((new MemberController())->guideFollow($request, true), 'guide');
  129. return $this->successJson('', $this->apiData);
  130. }
  131. /**
  132. * 添加页面分享记录
  133. * @return \Illuminate\Http\JsonResponse
  134. */
  135. public function addPageShareRecord()
  136. {
  137. $url = request()->url;
  138. $uid = \YunShop::app()->getMemberId();
  139. $result = PageShareRecord::insert(['url' => $url, 'member_id' => $uid, 'uniacid' => \YunShop::app()->uniacid]);
  140. return $this->successJson('成功', $result);
  141. }
  142. }