Activity.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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\wap\controller;
  12. use app\wap\model\activity\EventRegistration;
  13. use app\wap\model\activity\EventSignUp;
  14. use basic\WapBasic;
  15. use think\Db;
  16. use service\JsonService;
  17. use service\SystemConfigService;
  18. use service\UtilService;
  19. use think\Cookie;
  20. use think\exception\HttpException;
  21. use think\response\Json;
  22. use think\Session;
  23. use think\Url;
  24. /**
  25. * 文章分类控制器
  26. * Class Article
  27. * @package app\wap\controller
  28. */
  29. class Activity extends AuthController
  30. {
  31. /**
  32. * 白名单
  33. */
  34. public static function WhiteList()
  35. {
  36. return [
  37. 'details',
  38. 'index',
  39. 'activityList'
  40. ];
  41. }
  42. public function index()
  43. {
  44. return $this->fetch('activity_list');
  45. }
  46. /**
  47. * 活动列表
  48. */
  49. public function activityList($page=1,$limit=20){
  50. $list=EventRegistration::eventRegistrationList($page,$limit);
  51. foreach ($list as &$value){
  52. $value['count']=EventSignUp::where('activity_id',$value['id'])->where('paid',1)->count();
  53. }
  54. return JsonService::successful($list);
  55. }
  56. /**
  57. * 活动扫码
  58. */
  59. public function scanningCode($order_id=''){
  60. if (!$order_id) $this->failed('参数有误!', Url::build('my/sign_list'));
  61. $order=EventSignUp::where('order_id',$order_id)->find();
  62. if(!$order) $this->failed('订单不存在!', Url::build('my/sign_list'));
  63. $activity=EventRegistration::where('id',$order['activity_id'])->field('title,image,phone,province,city,district,detail')->find();
  64. if(!$activity) $this->failed('活动不存在!', Url::build('my/sign_list'));
  65. $activity['order_id']=$order_id;
  66. return JsonService::successful($activity);
  67. }
  68. /**用户活动核销
  69. * @param string $order_id
  70. * @throws \think\db\exception\DataNotFoundException
  71. * @throws \think\db\exception\ModelNotFoundException
  72. * @throws \think\exception\DbException
  73. */
  74. public function scanCodeSignIn($type,$order_id=''){
  75. if (!$order_id || !$type) $this->failed('参数有误!', Url::build('my/sign_list'));
  76. $order=EventSignUp::where('order_id',$order_id)->find();
  77. if(!$order) $this->failed('订单不存在!', Url::build('my/sign_list'));
  78. if($order['status']) $this->failed('该订单已核销!', Url::build('my/sign_list'));
  79. $res=EventSignUp::where('order_id',$order_id)->where('paid',1)->update(['status'=>1]);
  80. if($res) return JsonService::successful('核销成功');
  81. else return JsonService::fail('核销失败');
  82. }
  83. /**
  84. * 用户报名活动列表
  85. */
  86. public function activitySignInList($page=1,$limit=20,$navActive=0){
  87. $uid=$this->userInfo['uid'];
  88. $model=EventSignUp::where('uid',$uid)->where('paid',1)->page((int)$page,(int)$limit);
  89. switch ($navActive){
  90. case 1:
  91. $model=$model->where('status',0);
  92. break;
  93. case 2:
  94. $model=$model->where('status',1);
  95. break;
  96. }
  97. $orderList=$model->order('add_time DESC')->field('order_id,status,pay_price,activity_id,user_info,uid')->select();
  98. $orderList=count($orderList)>0 ? $orderList->toArray() : [];
  99. foreach ($orderList as &$item){
  100. $activity=EventRegistration::where('id',$item['activity_id'])->find();
  101. $item['activity']=EventRegistration::singleActivity($activity);
  102. }
  103. return JsonService::successful($orderList);
  104. }
  105. /**活动订单详情
  106. * @param string $order_id
  107. * @throws \think\db\exception\DataNotFoundException
  108. * @throws \think\db\exception\ModelNotFoundException
  109. * @throws \think\exception\DbException
  110. */
  111. public function activitySignIn($order_id=''){
  112. if (!$order_id) $this->failed('参数有误!', Url::build('my/sign_list'));
  113. $order=EventSignUp::where('order_id',$order_id)->find();
  114. if(!$order) $this->failed('订单不存在!', Url::build('my/sign_list'));
  115. if($order['activity_id']){
  116. $activity=EventRegistration::where('id',$order['activity_id'])->field('id,title,image,province,city,district,detail,start_time,end_time,signup_start_time,signup_end_time,price')->find();
  117. if(!$activity) $this->failed('活动不存在!', Url::build('my/sign_list'));
  118. $activity=EventRegistration::singleActivity($activity);
  119. $start_time=date('y/m/d H:i',$activity['start_time']);
  120. $end_time=date('y/m/d H:i',$activity['end_time']);
  121. $activity['time']=$start_time.'~'.$end_time;
  122. $order['activity']=$activity;
  123. }else{
  124. $this->failed('活动不存在!');
  125. }
  126. $order['pay_time']=date('y/m/d H:i',$order['pay_time']);
  127. if(!$order['write_off_code']){
  128. $write_off_code=EventSignUp::qrcodes_url($order_id,5);
  129. EventSignUp::where('order_id',$order_id)->update(['write_off_code'=>$write_off_code]);
  130. $order['write_off_code']=$write_off_code;
  131. }
  132. return JsonService::successful($order);
  133. }
  134. /**检测活动状态
  135. * @param string $order_id
  136. */
  137. public function orderStatus($order_id=''){
  138. if (!$order_id) $this->failed('参数有误!', Url::build('my/sign_list'));
  139. $order=EventSignUp::where('order_id',$order_id)->where('paid',1)->find();
  140. if(!$order) $this->failed('订单不存在!', Url::build('my/sign_list'));
  141. if($order['status']){
  142. return JsonService::successful('ok');
  143. }else{
  144. return JsonService::fail('error');
  145. }
  146. }
  147. }