// +---------------------------------------------------------------------- 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; // } // } } }