123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- declare (strict_types = 1);
- namespace app\api\controller\coupon;
- use app\api\controller\Controller;
- use app\api\model\coupon\CouponActivity as ActivityModel;
- use app\api\model\coupon\CouponActivityJoin as CouponActivityJoinModel;
- use app\api\model\coupon\CouponActivityStatistics as CouponActivityStatisticsModel;
- use app\api\model\coupon\CouponActivityStatisticsRecord as CouponActivityStatisticsRecordModel;
- use app\api\model\coupon\CouponActivityHelp as CouponActivityHelpModel;
- use app\api\service\User as UserService;
- use app\api\model\coupon\CouponActivityCoupon as CouponActivityCouponModel;
- use app\api\model\Coupon as CouponModel;
- use app\api\model\UserCoupon as UserCouponModel;
- /**
- * 裂变活动控制器
- * Class Article
- * @package app\api\controller
- */
- class Activity extends Controller
- {
- /**
- * 活动详情
- * @param int $articleId
- * @return array|\think\response\Json
- * @throws \app\common\exception\BaseException
- */
- public function detail(int $id)
- {
- $activity = ActivityModel::where('id','=',$id)->find();
- if(empty($activity)||$activity->audit_status!=1||$activity->status!=1){
- return $this->renderError("活动已结束");
- }
- $userinfo = UserService::getCurrentLoginUser(false);
- $user_id = $userinfo->user_id??0;
- $join = null;
- if($user_id>0){
- $join = CouponActivityJoinModel::where('coupon_activity_id',$id)->where("user_id",'=',$user_id)->find();
- }
-
- // if(empty($join)){
- // $join['coupon_activity_id'] = $id;
- // $join['user_id'] = $user_id;
- // $join['extend_num'] = $activity->extend_num;
- // $join['have_extend_num'] = 0;
- // $join['extend_success'] = 0;
- // $join['create_time'] = time();
- // $join['update_time'] = time();
- // $joinModel = new CouponActivityJoinModel;
- // $id = $joinModel->save($join);
- // $join['id'] = $joinModel->id;
- // }
- $coupon = null;
- $coupon_id_arr = CouponActivityCouponModel::where('coupon_activity_id',$id)->where('type',1)->column('coupon_id');
- // 优惠券列表
- $now = Date("Y-m-d H:i:s",time());
- $query = new CouponModel;
- $couponList = $query->where('receive_type','=',10)->where('send_type','=',10)->where('is_delete', '=', 0)->where('audit_status','=',10)->where('status','=',1)->where('start_time','<',$now)->where("end_time",">",$now)->where("coupon_id",'in',$coupon_id_arr)
- ->order(['reduce_price'=>'desc', 'create_time' => 'desc'])
- ->select();
- $activity['fmt_time'] = date("Y年m月d日",strtotime($activity['start_time'])).'至'. date("Y年m月d日",strtotime($activity['end_time']));
-
- $data['activity'] = $activity;
- $data['join'] = $join;
- $data['coupon'] = $couponList;
- return $this->renderSuccess(compact('data'));
- }
- /**
- * 裂变活动埋点接口
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- * @author: zjwhust
- * @Time: 2022/1/22 18:08
- */
- public function statistics(){
- $param = $this->request->param();
- $couponActivityStatisticsModel = CouponActivityStatisticsModel::where(['coupon_activity_id'=>$param['coupon_activity_id']])->find();
- $id = $couponActivityStatisticsModel['id'];
- $param['coupon_activity_statistics_id'] = $id;
- CouponActivityStatisticsRecordModel::create($param);
- if($param['type']==2){
- CouponActivityStatisticsModel::setIncField($id,'share_nums');
- }
- if($param['user_id']>0){
- if(CouponActivityStatisticsRecordModel::where(['user_id'=>$param['user_id'],'coupon_activity_id'=>$param['coupon_activity_id'],'type'=>$param['type']])->count()<2){
- //如果当前用户没有创建的记录,那么久加1
- // 1首页 2分享 3被分享页面 4被分享领取 5被分享人二次分享
- switch ($param['type']){
- case 1:
- CouponActivityStatisticsModel::setIncField($id,'home_people');
- break;
- case 2:
- CouponActivityStatisticsModel::setIncField($id,'share_people_nums');
- break;
- case 3:
- CouponActivityStatisticsModel::setIncField($id,'newpage_people_nums');
- break;
- case 4:
- CouponActivityStatisticsModel::setIncField($id,'newpage_share_people_nums');
- break;
- case 5:
- CouponActivityStatisticsModel::setIncField($id,'two_share_people_nums');
- break;
- }
- }
- }
- return $this->renderSuccess();
- }
- public function join(int $id){
- $activity = ActivityModel::where('id','=',$id)->find();
- if(empty($activity)||$activity->audit_status!=1||$activity->status!=1||$activity->activity_status['code']!=1){
- return $this->renderError("活动已结束");
- }
- $userinfo = UserService::getCurrentLoginUser(true);
- $user_id = $userinfo->user_id;
- $join = null;
- $join = CouponActivityJoinModel::where('coupon_activity_id',$id)->where("user_id",'=',$user_id)->find();
- if(empty($join)){
- $join['coupon_activity_id'] = $id;
- $join['user_id'] = $user_id;
- $join['extend_num'] = $activity->extend_num;
- $join['have_extend_num'] = 0;
- $join['extend_success'] = 0;
- $join['create_time'] = time();
- $join['update_time'] = time();
- $joinModel = new CouponActivityJoinModel;
- $id = $joinModel->save($join);
- $join['id'] = $joinModel->id;
- }
- return $this->renderSuccess(compact('join'));
- }
- public function helpinfo($join_id){
- $userinfo = UserService::getCurrentLoginUser(false);
-
- $join = CouponActivityJoinModel::where('id',$join_id)->find();
- $coupon_id_arr = CouponActivityCouponModel::where('coupon_activity_id',$join->coupon_activity_id)->where('type',2)->column('coupon_id');
- // 优惠券列表
- $now = Date("Y-m-d H:i:s",time());
- $query = new CouponModel;
- $couponList = $query->where('receive_type','=',10)->where('send_type','=',10)->where('is_delete', '=', 0)->where('audit_status','=',10)->where('status','=',1)->where('start_time','<',$now)->where("end_time",">",$now)->where("coupon_id",'in',$coupon_id_arr)
- ->order(['reduce_price'=>'desc', 'create_time' => 'desc'])
- ->select();
- $data['is_login'] = false;
- $activity = ActivityModel::where('id','=',$join->coupon_activity_id)->find();
- $data['activity'] =$activity;
- if(empty($activity)||$activity->audit_status!=1||$activity->status!=1||$activity->activity_status['code']!=1){
- // return $this->renderError("活动已结束");
- }
- $data['fmt_time'] = date("Y年m月d日",strtotime($activity['start_time'])).'至'. date("Y年m月d日",strtotime($activity['end_time']));
-
- if(empty($userinfo)){
- $data['is_join_self'] = false;
- $data['is_help'] = false;
- $data['coupon_activity_id'] = $join->coupon_activity_id;
- $data['help_coupon'] = $couponList;
- return $this->renderSuccess(compact('data'));
- }
- $data['is_login'] = true;
- $user_id = $userinfo->user_id;
- $help = CouponActivityHelpModel::where('user_id',$user_id)->where("coupon_activity_join_id",$join_id)->find();
-
- $my_join = CouponActivityJoinModel::where('coupon_activity_id',$join->coupon_activity_id)->where("user_id",'=',$user_id)->find();
- $data['is_join_self'] = $user_id ==$join->user_id ?true:false;
- $data['is_help'] = $help?true:false;
- $data['coupon_activity_id'] = $join->coupon_activity_id;
- $data['help_coupon'] = $couponList;
- return $this->renderSuccess(compact('data'));
- }
- //领取
- public function tohelp($join_id){
- $userinfo = UserService::getCurrentLoginUser(true);
- $user_id = $userinfo->user_id;
- $join = CouponActivityJoinModel::where('id',$join_id)->find();
- if(empty($join)){
- return $this->renderError("找不到分享信息");
- }
- if($join->user_id==$user_id){
- return $this->renderError("请邀请好友领取");
- }
- $activity = ActivityModel::where('id','=',$join->coupon_activity_id)->find();
- if(empty($activity)||$activity->audit_status!=1||$activity->status!=1||$activity->activity_status['code']!=1){
- return $this->renderError("活动已结束");
- }
-
- $user_id = $userinfo->user_id;
- $help = CouponActivityHelpModel::where('user_id',$user_id)->where("coupon_activity_join_id",$join_id)->find();
- if($help){
- return $this->renderError("券包已领取");
- }
- $activity_id = $join->coupon_activity_id;
- $join->have_extend_num = $join->have_extend_num + 1;
- if($join->have_extend_num>=$join->extend_num&&$join->extend_success==0){
- $join->extend_success = 1;
- $this->addCoupon($activity_id,1,$join->user_id);
- }
- $join->save();
- $data['coupon_activity_id'] = $join->coupon_activity_id;
- $data['coupon_activity_join_id'] = $join_id;
- $data['user_id'] = $user_id;
- $data['create_time'] = time();
- $data['update_time'] = time();
- $helpModel = new CouponActivityHelpModel;
- $helpModel->save($data);
- $this->addCoupon($activity_id,2,$user_id);
- return $this->renderSuccess();
- }
-
- public function addCoupon($activity_id,$type,$user_id){
- $coupon_id_arr = CouponActivityCouponModel::where('coupon_activity_id',$activity_id)->where('type',$type)->column("coupon_id");
- $flag = true;
- $coupon_id_suc = [];
- log_record("type:".$type." coupon_id".implode(",",$coupon_id_arr));
- $list = CouponModel::where('coupon_id','in',$coupon_id_arr)->select();
- foreach($list as $row){
- $limit_receive_cnt = $row['limit_receive_cnt'];
- $coupon_id = $row['coupon_id'];
- for($i=0;$i<$limit_receive_cnt;$i++){
- $model = new UserCouponModel;
- $ok = $model->userreceive($coupon_id,$user_id);
- if(!$ok){
- $flag = false;
- }else{
- $coupon_id_suc[] = $coupon_id;
- }
- }
- }
- log_record("success:".implode(",",$coupon_id_suc));
- $coupon_id_suc[] = $coupon_id;
- return $flag;
- // foreach($coupon_id_arr as $coupon_id){
- // $model = new UserCouponModel;
- // $ok = $model->userreceive($coupon_id,$user_id);
- // if(!$ok){
- // $flag = false;
- // }else{
- // $coupon_id_suc[] = $coupon_id;
- // }
- // }
- }
- }
|