StoreBargainController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\controller\api\v1\activity;
  12. use app\services\activity\bargain\StoreBargainServices;
  13. use app\services\activity\bargain\StoreBargainUserHelpServices;
  14. use app\services\activity\bargain\StoreBargainUserServices;
  15. use app\Request;
  16. use app\services\other\QrcodeServices;
  17. use app\services\user\UserServices;
  18. use app\services\wechat\WechatServices;
  19. use think\db\exception\DataNotFoundException;
  20. use think\db\exception\DbException;
  21. use think\db\exception\ModelNotFoundException;
  22. use think\Exception;
  23. /**
  24. * 砍价商品类
  25. * Class StoreBargainController
  26. * @package app\controller\api\activity
  27. */
  28. class StoreBargainController
  29. {
  30. protected $services;
  31. public function __construct(StoreBargainServices $services)
  32. {
  33. $this->services = $services;
  34. }
  35. /**
  36. * 砍价列表顶部图
  37. * @return mixed
  38. */
  39. public function config()
  40. {
  41. $lovely = sys_data('routine_lovely') ?? [];//banner图
  42. $info = isset($lovely[2]) ? $lovely[2] : [];
  43. return app('json')->successful($info);
  44. }
  45. /**
  46. * 砍价商品列表
  47. * @param Request $request
  48. * @return mixed
  49. */
  50. public function lst(Request $request)
  51. {
  52. $bargainList = $this->services->getBargainList();
  53. return app('json')->successful(get_thumb_water($bargainList));
  54. }
  55. /**
  56. * 砍价详情和当前登录人信息
  57. * @param Request $request
  58. * @param $id
  59. * @return mixed
  60. * @throws Exception
  61. * @throws DataNotFoundException
  62. * @throws ModelNotFoundException
  63. * @throws \think\exception\DbException
  64. */
  65. public function detail(Request $request, $id)
  66. {
  67. $data = $this->services->getBargain((int)$request->uid(), (int)$id);
  68. return app('json')->successful($data);
  69. }
  70. /**
  71. * 砍价 观看/分享/参与次数
  72. * @param Request $request
  73. * @return mixed
  74. */
  75. public function share(Request $request)
  76. {
  77. [$bargainId] = $request->postMore([
  78. ['bargainId', 0]
  79. ], true);
  80. /** @var StoreBargainUserHelpServices $bargainUserHelpService */
  81. $bargainUserHelpService = app()->make(StoreBargainUserHelpServices::class);
  82. $data['lookCount'] = $this->services->sum([], 'look');// 观看人数
  83. $data['userCount'] = $bargainUserHelpService->count([]);// 参与人数
  84. if (!$bargainId) return app('json')->successful($data);
  85. $this->services->addBargain((int)$bargainId, 'share');
  86. $data['shareCount'] = $this->services->sum([], 'share');// 分享人数
  87. return app('json')->successful($data);
  88. }
  89. /**
  90. * 砍价开启
  91. * @param Request $request
  92. * @return mixed
  93. * @throws Exception
  94. */
  95. public function start(Request $request)
  96. {
  97. [$bargainId] = $request->postMore([
  98. ['bargainId', 0]
  99. ], true);
  100. if (!$bargainId) return app('json')->fail('参数错误');
  101. if ((int)sys_config('bargain_subscribe') && request()->isWechat()) {
  102. /** @var WechatServices $wechat */
  103. $wechat = app()->make(WechatServices::class);
  104. $subscribe = $wechat->get(['uid' => $request->uid(), 'subscribe' => 1]);
  105. if (!$subscribe) {
  106. $url = '';
  107. /** @var QrcodeServices $qrcodeService */
  108. $qrcodeService = app()->make(QrcodeServices::class);
  109. $url = $qrcodeService->getTemporaryQrcode('bargain-' . $bargainId . '-' . $request->uid(), $request->uid())->url;
  110. return app('json')->successful('请先关注公众号', ['code' => 'subscribe', 'url' => $url]);
  111. }
  112. }
  113. return app('json')->success($this->services->setBargain((int)$request->uid(), (int)$bargainId));
  114. }
  115. /**
  116. * 砍价 帮助好友砍价
  117. * @param Request $request
  118. * @return mixed
  119. * @throws Exception
  120. * @throws DataNotFoundException
  121. * @throws ModelNotFoundException
  122. * @throws \think\exception\DbException
  123. */
  124. public function help(Request $request)
  125. {
  126. [$bargainId, $bargainUserUid] = $request->postMore([
  127. ['bargainId', 0],
  128. ['bargainUserUid', 0]
  129. ], true);
  130. if ((int)sys_config('bargain_subscribe') && request()->isWechat()) {
  131. /** @var WechatServices $wechat */
  132. $wechat = app()->make(WechatServices::class);
  133. $subscribe = $wechat->get(['uid' => $request->uid(), 'subscribe' => 1]);
  134. if (!$subscribe) {
  135. $url = '';
  136. /** @var QrcodeServices $qrcodeService */
  137. $qrcodeService = app()->make(QrcodeServices::class);
  138. $url = $qrcodeService->getTemporaryQrcode('bargain-' . $bargainId . '-' . $bargainUserUid, $bargainUserUid)->url;
  139. return app('json')->successful('请先关注公众号', ['code' => 'subscribe', 'url' => $url]);
  140. }
  141. }
  142. return app('json')->success($this->services->setHelpBargain((int)$request->uid(), (int)$bargainId, (int)$bargainUserUid));
  143. }
  144. /**
  145. * 砍价 砍掉金额
  146. * @param Request $request
  147. * @return mixed
  148. */
  149. public function help_price(Request $request)
  150. {
  151. [$bargainId, $bargainUserUid] = $request->postMore([
  152. ['bargainId', 0],
  153. ['bargainUserUid', 0]
  154. ], true);
  155. /** @var StoreBargainUserHelpServices $bargainUserHelp */
  156. $bargainUserHelp = app()->make(StoreBargainUserHelpServices::class);
  157. $price = $bargainUserHelp->getPrice($request->uid(), (int)$bargainId, (int)$bargainUserUid);
  158. return app('json')->successful($price);
  159. }
  160. /**
  161. * 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
  162. * @param Request $request
  163. * @return mixed
  164. * @throws \think\exception\DbException
  165. */
  166. public function help_count(Request $request)
  167. {
  168. [$bargainId, $bargainUserUid] = $request->postMore([
  169. ['bargainId', 0],
  170. ['bargainUserUid', 0]
  171. ], true);
  172. /** @var StoreBargainUserServices $bargainUserService */
  173. $bargainUserService = app()->make(StoreBargainUserServices::class);
  174. $data = $bargainUserService->helpCount($request, (int)$bargainId, (int)$bargainUserUid);
  175. return app('json')->successful($data);
  176. }
  177. /**
  178. * 砍价 砍价帮
  179. * @param Request $request
  180. * @return mixed
  181. * @throws \think\exception\DbException
  182. */
  183. public function help_list(Request $request)
  184. {
  185. [$bargainId, $bargainUserUid] = $request->postMore([
  186. ['bargainId', 0],
  187. ['bargainUserUid', 0],
  188. ], true);
  189. /** @var StoreBargainUserServices $bargainUser */
  190. $bargainUser = app()->make(StoreBargainUserServices::class);
  191. $bargainUserTableId = $bargainUser->getBargainUserTableId($bargainId, $bargainUserUid);
  192. /** @var StoreBargainUserHelpServices $bargainUserHelp */
  193. $bargainUserHelp = app()->make(StoreBargainUserHelpServices::class);
  194. [$page, $limit] = $this->services->getPageValue();
  195. $storeBargainUserHelp = $bargainUserHelp->getHelpList($bargainUserTableId, $page, $limit);
  196. return app('json')->successful($storeBargainUserHelp);
  197. }
  198. /**
  199. * 砍价 开启砍价用户信息
  200. * @param Request $request
  201. * @return mixed
  202. * @throws \think\exception\DbException
  203. */
  204. public function start_user(Request $request)
  205. {
  206. [$bargainId, $bargainUserUid] = $request->postMore([
  207. ['bargainId', 0],
  208. ['bargainUserUid', 0],
  209. ], true);
  210. if (!$bargainId || !$bargainUserUid) return app('json')->fail('参数错误');
  211. /** @var UserServices $userServices */
  212. $userServices = app()->make(UserServices::class);
  213. $userInfo = $userServices->getUserCacheInfo((int)$bargainUserUid);
  214. if (!$userInfo) {
  215. return app('json')->fail('用户信息获取失败');
  216. }
  217. return app('json')->successful(['nickname' => $userInfo['nickname'], 'avatar' => $userInfo['avatar']]);
  218. }
  219. /**
  220. * 砍价列表(已参与)
  221. * @param Request $request
  222. * @return mixed
  223. */
  224. public function user_list(Request $request)
  225. {
  226. $uid = $request->uid();
  227. /** @var StoreBargainUserServices $bargainUser */
  228. $bargainUser = app()->make(StoreBargainUserServices::class);
  229. $bargainUser->editBargainUserStatus($uid);// 判断过期砍价活动
  230. $list = $bargainUser->getBargainUserAll($uid);
  231. if (count($list)) return app('json')->successful(get_thumb_water($list));
  232. else return app('json')->successful([]);
  233. }
  234. /**
  235. * 砍价取消
  236. * @param Request $request
  237. * @return mixed
  238. */
  239. public function user_cancel(Request $request)
  240. {
  241. [$bargainId] = $request->postMore([
  242. ['bargainId', 0]
  243. ], true);
  244. if (!$bargainId) return app('json')->fail('参数错误');
  245. /** @var StoreBargainUserServices $bargainUser */
  246. $bargainUser = app()->make(StoreBargainUserServices::class);
  247. $res = $bargainUser->cancelBargain($bargainId, $request->uid());
  248. if ($res) return app('json')->successful('取消成功');
  249. else return app('json')->successful('取消失败');
  250. }
  251. /**
  252. * 获取分享海报信息
  253. * @param Request $request
  254. * @return mixed
  255. * @throws DataNotFoundException
  256. * @throws DbException
  257. * @throws ModelNotFoundException
  258. */
  259. public function posterInfo(Request $request, $bargainId)
  260. {
  261. return app('json')->success($this->services->posterInfo((int)$bargainId, $request->user()));
  262. }
  263. }