Coupon.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace addons\shopro\controller;
  3. use app\admin\model\shopro\Coupon as CouponModel;
  4. use addons\shopro\traits\CouponSend;
  5. use app\admin\model\shopro\goods\Goods as GoodsModel;
  6. class Coupon extends Common
  7. {
  8. use CouponSend;
  9. protected $noNeedLogin = ['index', 'listByGoods', 'detail'];
  10. protected $noNeedRight = ['*'];
  11. public function index()
  12. {
  13. $ids = $this->request->param('ids', '');
  14. $coupons = CouponModel::with(['user_coupons'])
  15. ->normal() // 正常的可以展示的优惠券
  16. ->canGet() // 在领取时间之内的
  17. ->order('id', 'desc');
  18. if ($ids) {
  19. $coupons = $coupons->whereIn('id', $ids);
  20. }
  21. $coupons = $coupons->paginate($this->request->param('list_rows', 10))->each(function ($coupon) {
  22. $coupon->get_status = $coupon->get_status;
  23. $coupon->get_status_text = $coupon->get_status_text;
  24. });
  25. $this->success('获取成功', $coupons);
  26. }
  27. /**
  28. * 商品相关的优惠券列表,前端商品详情使用
  29. *
  30. * @param Request $request
  31. * @param int $goods_id
  32. * @return void
  33. */
  34. public function listByGoods()
  35. {
  36. $user = auth_user();
  37. $goods_id = $this->request->param('goods_id');
  38. $goods = GoodsModel::field('id,category_ids')->where('id', $goods_id)->find();
  39. if (!$goods) {
  40. $this->error(__('No Results were found'));
  41. }
  42. $coupons = CouponModel::with(['user_coupons'])
  43. ->normal() // 正常的可以展示的优惠券
  44. ->canGet() // 在领取时间之内的
  45. ->goods($goods) // 符合指定商品,并且检测商品所属分类
  46. ->order('id', 'desc');
  47. //这里注释是因为多重循环导致不必要的数据结构
  48. /*if ($user) {
  49. // 关联用户优惠券
  50. $coupons = $coupons->with(['userCoupons']);
  51. }*/
  52. $coupons = $coupons->select();
  53. $coupons = collection($coupons)->each(function ($coupon) {
  54. $coupon->get_status = $coupon->get_status;
  55. $coupon->get_status_text = $coupon->get_status_text;
  56. });
  57. $coupons = json_decode(json_encode($coupons),true);
  58. foreach($coupons as $key => $val){
  59. $val['get_start_time'] = substr($val['get_start_time'],0,10);
  60. $val['get_end_time'] = substr($val['get_end_time'],0,10);
  61. $val['use_start_time'] = substr($val['use_start_time'],0,10);
  62. $val['use_end_time'] = substr($val['use_end_time'],0,10);
  63. unset($val['user_coupons']);
  64. $coupons[$key] = $val;
  65. }
  66. $this->success('获取成功', $coupons);
  67. }
  68. public function get()
  69. {
  70. $id = $this->request->param('id');
  71. $this->repeatFilter(null, 2);
  72. $userCoupon = $this->getCoupon($id);
  73. $this->success('领取成功');
  74. // $this->success('领取成功', $userCoupon);
  75. }
  76. public function detail()
  77. {
  78. $id = $this->request->param('id');
  79. $coupon = CouponModel::where('id', $id)->find();
  80. if (!$coupon) {
  81. $this->error(__('No Results were found'));
  82. }
  83. $coupon->get_status = $coupon->get_status;
  84. $coupon->get_status_text = $coupon->get_status_text;
  85. $coupon->items_value = $coupon->items_value;
  86. $this->success('优惠券详情', $coupon);
  87. }
  88. }