Couponuser.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * 优惠券
  4. */
  5. namespace app\ais\controller\api\v1;
  6. use app\ais\controller\api\Base;
  7. use app\ais\model\AisCoupon;
  8. use app\ais\model\AisStore;
  9. use app\ais\model\AisCouponUser;
  10. use app\ais\model\AisConfig;
  11. use app\ais\model\AisStoreUnion;
  12. use think\Db;
  13. class Couponuser extends Base{
  14. protected $config;
  15. /**
  16. * 初始化当前应用管理员是不是联盟城市账户
  17. * @return void
  18. */
  19. public function initialize() {
  20. parent::initialize();
  21. $this->isUserAuth();
  22. $this->config = AisConfig::getConfig($this->member_miniapp_id);
  23. }
  24. /**
  25. * 用户已领优惠券
  26. * @return void
  27. */
  28. public function index(){
  29. $param['type'] = $this->request->param('type/d',0);
  30. $param['page'] = $this->request->param('page/d',1);
  31. $this->apiSign($param);
  32. $condition[] = ['member_miniapp_id','=',$this->miniapp_id];
  33. $condition[] = ['uid','=',$this->user->id];
  34. $condition[] = ['money','=',0];
  35. $condition[] = ['is_end','=',0];
  36. switch ($param['type']){
  37. case 1:
  38. $condition[] = ['types','<=',1];
  39. break;
  40. case 2:
  41. $condition[] = ['types','=',2];
  42. break;
  43. case 3:
  44. $condition[] = ['types','=',3];
  45. break;
  46. }
  47. $coupon = AisCouponUser::with(['store' => function($query) {
  48. $query->field('id,name,img');
  49. }])->where($condition)->order('create_time desc')->page($param['page'],10)->select();
  50. if ($coupon->isEmpty()) {
  51. return enjson(204);
  52. }
  53. foreach ($coupon as $key => $info){
  54. $coupon[$key]->end_time = $info->create_time + $this->config->coupon_longtime * 60 * 60;
  55. }
  56. return enjson(200,$coupon);
  57. }
  58. /**
  59. * 领取优惠券
  60. * @return void
  61. */
  62. public function getCoupon(){
  63. $param['id'] = $this->request->param('id');
  64. $param['store_id'] = $this->request->param('store_id'); //引荐的店铺id
  65. $this->apiSign($param);
  66. $couponUser = AisCouponUser::where(['member_miniapp_id' => $this->miniapp_id,'coupon_id' => $param['id'],'uid' => $this->user->id,'is_end' => 0])->find();
  67. if(!empty($couponUser)){
  68. return enjson(200,'已经拥有该优惠券',$couponUser);
  69. }
  70. if($param['id']){
  71. $info = AisCoupon::where(['member_miniapp_id' => $this->miniapp_id,'id' => $param['id'],'is_end' => 0])->find();
  72. if(!empty($info)){
  73. $is_group = AisStoreUnion::isGroup($param['id'],$param['store_id'],$this->miniapp_id);
  74. $data['member_miniapp_id'] = $this->miniapp_id;
  75. $data['store_id'] = $info->store_id;
  76. $data['coupon_id'] = $info->id;
  77. $data['uid'] = $this->user->id;
  78. $data['is_end'] = 0;
  79. $data['types'] = $info->types;
  80. $data['name'] = $info->name;
  81. $data['price'] = $info->price;
  82. $data['discount'] = $info->discount;
  83. $data['howmuch'] = $info->howmuch;
  84. $data['amount'] = $info->amount;
  85. $data['tips'] = $info->tips;
  86. $data['group_ids'] = $is_group ?? 0;
  87. $data['parent_store_id'] = !empty($param['store_id']) ? $param['store_id'] : 0;
  88. $data['update_time'] = time();
  89. $data['create_time'] = time();
  90. $rel = AisCouponUser::create($data);
  91. if($rel){
  92. return enjson(200,$rel);
  93. }
  94. return enjson(204);
  95. }
  96. }
  97. return enjson(403,'未找到优惠券');
  98. }
  99. /**
  100. * 用户优惠券查看
  101. * @return void
  102. */
  103. public function read(){
  104. $param['id'] = $this->request->param('id');
  105. $this->apiSign($param);
  106. $info = AisCouponUser::with(['coupon' => function($query) {
  107. $query->field('id,create_time');
  108. },'store' => function($query) {
  109. $query->field('id,name,address,longitude,latitude,img,telphone');
  110. }])->where(['member_miniapp_id' => $this->miniapp_id,'id' => $param['id']])->find();
  111. if (empty($info)) {
  112. return enjson(404,'未找到优惠券');
  113. }
  114. $info->store->img = $info->store->img;
  115. if(!empty($this->lbs)){
  116. $info->store->distance = getDistance($this->lbs->lng,$this->lbs->lat,$info->store->longitude,$info->store->latitude);
  117. }
  118. return enjson(200,$info);
  119. }
  120. }