You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PublicController.php 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace app\controller\api\v2;
  3. use app\Request;
  4. use app\services\diy\DiyServices;
  5. use app\services\other\CityAreaServices;
  6. use app\services\product\category\StoreCategoryServices;
  7. use app\services\product\product\StoreProductServices;
  8. use app\services\wechat\WechatUserServices;
  9. use crmeb\services\CacheService;
  10. use crmeb\services\SystemConfigService;
  11. class PublicController
  12. {
  13. /**
  14. * 主页获取
  15. * @param Request $request
  16. * @return mixed
  17. */
  18. public function index(Request $request)
  19. {
  20. $data = SystemConfigService::more(['fast_number', 'bast_number', 'first_number', 'promotion_number', 'tengxun_map_key', 'site_name']);
  21. $site_name = $data['site_name'] ?? '';
  22. $tengxun_map_key = $data['tengxun_map_key'] ?? '';
  23. $fastNumber = (int)($data['fast_number'] ?? 0);// 快速选择分类个数
  24. $bastNumber = (int)($data['bast_number'] ?? 0);// 精品推荐个数
  25. $firstNumber = (int)($data['first_number'] ?? 0);// 首发新品个数
  26. $promotionNumber = (int)($data['promotion_number'] ?? 0);// 首发新品个数
  27. /** @var StoreCategoryServices $categoryService */
  28. $categoryService = app()->make(StoreCategoryServices::class);
  29. $info['fastList'] = $fastNumber ? $categoryService->byIndexList($fastNumber, 'id,cate_name,pid,pic') : [];// 快速选择分类个数
  30. /** @var StoreProductServices $storeProductServices */
  31. $storeProductServices = app()->make(StoreProductServices::class);
  32. $info['bastList'] = $bastNumber ? $storeProductServices->getRecommendProduct($request->uid(), 'is_best', $bastNumber) : [];// 精品推荐个数
  33. $info['firstList'] = $firstNumber ? $storeProductServices->getRecommendProduct($request->uid(), 'is_new', $firstNumber) : [];// 首发新品个数
  34. $benefit = $promotionNumber ? $storeProductServices->getRecommendProduct($request->uid(), 'is_benefit', $promotionNumber) : [];// 首页促销单品
  35. $likeInfo = $storeProductServices->getRecommendProduct($request->uid(), 'is_hot', 3);// 热门榜单 猜你喜欢
  36. if ($request->uid()) {
  37. /** @var WechatUserServices $wechatUserService */
  38. $wechatUserService = app()->make(WechatUserServices::class);
  39. $subscribe = $wechatUserService->value(['uid' => $request->uid(), 'user_type' => 'wechat'], 'subscribe') ? true : false;
  40. } else {
  41. $subscribe = true;
  42. }
  43. return app('json')->successful(compact('info', 'benefit', 'likeInfo', 'subscribe', 'tengxun_map_key', 'site_name'));
  44. }
  45. /**
  46. * 获取页面数据
  47. * @return mixed
  48. * @throws \think\db\exception\DataNotFoundException
  49. * @throws \think\db\exception\DbException
  50. * @throws \think\db\exception\ModelNotFoundException
  51. */
  52. public function getDiy($name = '')
  53. {
  54. /** @var DiyServices $diyService */
  55. $diyService = app()->make(DiyServices::class);
  56. $data = CacheService::redisHandler('diy')->remember('diy_' . $name, function () use ($name, $diyService) {
  57. $data = $diyService->getDiy($name);
  58. if (isset($data['f_scroll_box']['goodsList']['list'])) {
  59. $data['f_scroll_box']['goodsList']['list'] = get_thumb_water($data['f_scroll_box']['goodsList']['list'], 'small', ['pic']);
  60. }
  61. return $data;
  62. });
  63. return app('json')->successful($data);
  64. }
  65. /**
  66. * 是否强制绑定手机号
  67. * @return mixed
  68. */
  69. public function bindPhoneStatus()
  70. {
  71. $status = sys_config('store_user_mobile') ? true : false;
  72. return app('json')->success(compact('status'));
  73. }
  74. /**
  75. * 是否关注
  76. * @param Request $request
  77. * @param WechatUserServices $services
  78. * @return mixed
  79. */
  80. public function subscribe(Request $request, WechatUserServices $services)
  81. {
  82. return app('json')->success(['subscribe' => $services->value(['uid' => $request->uid(), 'user_type' => 'wechat'], 'subscribe') ? true : false]);
  83. }
  84. /**
  85. * 获取提货点自提开启状态
  86. * @return mixed
  87. */
  88. public function getStoreStatus()
  89. {
  90. $data['store_status'] = sys_config('store_self_mention', 0);
  91. return app('json')->successful($data);
  92. }
  93. /**
  94. * 获取颜色选择和分类模板选择
  95. * @param DiyServices $services
  96. * @param $name
  97. * @return mixed
  98. * @throws \think\db\exception\DataNotFoundException
  99. * @throws \think\db\exception\DbException
  100. * @throws \think\db\exception\ModelNotFoundException
  101. */
  102. public function colorChange(DiyServices $services, $name)
  103. {
  104. $status = (int)$services->getColorChange((string)$name);
  105. $navigation = (int)sys_config('navigation_open');
  106. return app('json')->success(compact('status', 'navigation'));
  107. }
  108. /**
  109. * 获取城市
  110. * @param CityAreaServices $services
  111. * @return mixed
  112. */
  113. public function city(Request $request, CityAreaServices $services)
  114. {
  115. $pid = $request->get('pid', 0);
  116. return app('json')->success($services->getCityTreeList((int)$pid));
  117. }
  118. /**
  119. * 解析(获取导入微信地址)
  120. * @param CityAreaServices $services
  121. * @return mixed
  122. */
  123. public function cityList(Request $request, CityAreaServices $services)
  124. {
  125. $address = $request->param('address', '');
  126. if (!$address)
  127. return app('json')->fail('地址不存在');
  128. $city = $services->searchCity(compact('address'));
  129. if (!$city) return app('json')->fail('地址暂未录入,请联系管理员');
  130. $where = [['id', 'in', array_merge([$city['id']], explode('/', trim($city->path, '/')))]];
  131. return app('json')->success($services->getCityList($where, 'id as value,id,name as label,parent_id as pid', ['children']));
  132. }
  133. /**
  134. * 获取客服类型配置
  135. * @return mixed
  136. */
  137. public function getCustomerType()
  138. {
  139. $data = SystemConfigService::more(['customer_type', 'customer_phone', 'customer_url']);
  140. $data['userInfo'] = [];
  141. return app('json')->success($data);
  142. }
  143. }