request->isGet) { $get_active = PkActivity::getCurrentPkActivity($this->mall_id); $get_active['activity_apply_status'] = PkActivity::getPersonalActivityApplyStatus($get_active['id'], $this->user_id, $this->mall_id); $data['activity'] = $get_active; $performance_type = $get_active['performance_type'] ?? 1; $new_where[] = ['=','status',StatusEnum::ENABLED]; $new_where[] = ['=','mall_id',$this->mall_id]; $new_where[] = ['=','activity_id',$get_active['id'] ?? 0]; $new_where[] = $performance_type == PkEnum::NEW_ACTIVE ? ['>', 'new_user_num', 0] : ['>', 'order_money_num', 0]; $params['where'] = $new_where; $params['order'] = $performance_type == PkEnum::NEW_ACTIVE ? 'new_user_num desc,id asc' : 'order_money_num desc,id asc'; $params['with'] = 'user'; $params['limit'] = Yii::$app->request->get('limit', 10); $list = PkActivityStatistic::listPage($params,false,true); unset($list['sql']); $data['pk_list'] = $list; $config = \Yii::$app->services->setting->addons->get($this->mall_id, PkEnum::ADDONS_NAME, 'basic'); $data['bj_images'] = $config['bg_img']; $data['is_enable'] = $config['is_enable'];//活动未开始 return $this->success('操作成功',$data); } } /** * 个人参加PK */ public function actionPersonJoin() { $activity_id = \Yii::$app->request->post('activity_id', 0); $performance_goal = \Yii::$app->request->post('performance_goal', 0); return $this->success('操作成功', compact('activity_id', 'performance_goal')); } /** * 获取个人活动详情 */ public function actionDetailPersonActivity() { if (\Yii::$app->request->isGet) { $params = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params, [ [['activity_id'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); } $data = PkActivity::getOne([['mall_id'=>$this->mall_id,'id'=>$params['activity_id']]],true); if (!$data) { return $this->success("成功", null); } $data['prize'] = json_decode($data['prize'], true); $data['activity_apply_status'] = PkActivity::getPersonalActivityApplyStatus($data['id'], $this->user_id, $this->mall_id); return $this->success("成功", $data); } /** * 获取PK规则 */ public function actionGetRules() { $data = \Yii::$app->services->setting->addons->get($this->mall_id, PkEnum::ADDONS_NAME, 'basic'); return $this->success('成功', $data['person']); } /** * 拉新明细 | 业绩明细 */ public function actionInviteList() { if (\Yii::$app->request->isGet) { $params = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params, [ [['activity_id', 'page', 'limit'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $activity = PkActivity::getOne([['id'=> $params['activity_id']]],true); $number = PkActivityStatistic::getOne([['activity_id'=> $params['activity_id'],'user_id'=>$this->user_id]],true); $log_where[] = ['=','share_user_id',$this->user_id]; $log_where[] = ['=','mall_id',$this->mall_id]; $log_where[] = ['=','activity_id',$params['activity_id']]; $with = 'user'; if($activity['performance_type'] == PkEnum::NEW_ACTIVE){//拉新 $pk_num = (float) $number['new_user_num']; $where_stitic[] = ['>','new_user_num',$number['new_user_num']]; //获取列表 $list = PkInviteLog::listPage(array('where' => $log_where,'with'=>$with, 'limit' => $params['limit']),false,true); }else{ $pk_num = (float) $number['order_money_num']; $where_stitic[] = ['>','order_money_num',$number['order_money_num']]; $list = PkPerformanceLog::listPage(array('where' => $log_where,'with'=>$with, 'limit' => $params['limit']),false,true); } $where_stitic[] = ['=','activity_id',$params['activity_id']]; $where_stitic[] = ['=','mall_id',$this->mall_id]; $rank = PkActivityStatistic::getOne($where_stitic,true,'','','count(id) as num'); if($pk_num > 0){ if($rank['num'] == 0){ $rank['num'] = 1; } }else{ $rank['num'] = ''; } $data['rank'] = $rank; $data['number'] = $number; $data['activity'] = $activity; $data['list'] = $list; $data['share_user'] = User::getOne([['id'=>$this->user_id]],true,'','','id,mobile,nickname,avatar_url,parent_id,username'); $this->success('成功', $data); } } /** * 加入PK操作 */ public function actionPersonPkJoin() { if (\Yii::$app->request->isPost) { $params = Yii::$app->request->post(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($params,[ [['activity_id','performance_type','performance_goal'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $is_join = PkActivityStatistic::findOne([ 'activity_id' => $params['activity_id'], 'user_id' => $this->user_id, 'mall_id' => $this->mall_id, 'status' => PkEnum::IS_ENABLE ]); if ($is_join) { return $this->error('您已参与该活动'); } if ($params['performance_goal'] <= 0) { return $this->error('我的目标必须为非负数'); } $activity = PkActivity::getOne([['id'=>$params['activity_id']]],false); if (!$activity || $activity->is_enable !=1) { return $this->error('活动不存在或已结束或者暂停'); } if (!in_array($activity->status, [PkEnum::STATUS_STARTED, PkEnum::STATUS_NOT_START])) { return $this->error("个人活动状态只有在未开始或进行中才可以加入", [], 1001); } if ($activity->people_max_amount != PkEnum::PEOPLE_NUM_NO_LIMIT) { if ($activity->member_num >= $activity->people_max_amount && $activity->performance_type == 1) { return $this->error("超出活动人数上限", [], 1003); } } if (strtotime($activity->begin_time) > time()) { return $this->error("活动未开始", [], 1004); } if (!PkActivity::isLegalApplyTime($activity) || strtotime($activity->end_time) <= time()) { return $this->error("已到禁止报名PK活动时间", [], 1005); } $where = [ ['user_id' => $this->user_id], ['mall_id' => $this->mall_id], ['activity_id' => $params['activity_id']], ['=', 'status', StatusEnum::ENABLED] ]; $is_personal_member = PkActivityStatistic::getOne($where, true); if ($is_personal_member) { return $this->error("已经加入了该活动", [], 1004); } $data = []; $add_data['mall_id'] = $this->mall_id; $add_data['is_pay'] = PkEnum::IS_NOT_PAY; $add_data['order_no'] = PkOrder::getOrderNo(); $add_data['user_id'] = $this->user_id; $add_data['activity_id'] = $activity->id; $add_data['status'] = StatusEnum::ENABLED; $add_data['money'] = $activity['price']; $add_data['order_type'] = PkEnum::ORDER_TYPE_PERSON; $add_data['pay_type'] = ""; $add_data['performance_goal'] = $params['performance_goal']; $add_order = PkOrder::setData($add_data); $data['trade'] = $add_order; $data['money'] = $activity['price']; if ($add_order === false) return $this->error(PkOrder::getStaticError()); return $this->success("成功", $data); } } // 统计分享次数 public function actionCountShareLog() { $request = Yii::$app->request; if ($request->isPost) { $activity_id = $request->post('activity_id', 0); $share_desc = $request->post('share_desc', ''); $share_url = $request->post('share_url', ''); $check = Yii::$app->services->validate->validate($params,[ [['activity_id'], 'integer'], [['share_desc', 'share_url'], 'string'], ]); if($check === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $tran = Yii::$app->db->beginTransaction(); try { PkShareLog::addShareNum($this->mall_id, $activity_id, $this->user_id, $share_url, $share_desc); $tran->commit(); } catch (\Exception $e) { $tran->rollBack(); return $this->success("fail", []); } } return $this->success("success", []); } // 统计访问次数 public function actionCountVisitLog() { $request = Yii::$app->request; if ($request->isPost) { $activity_id = $request->post('activity_id', 0); $share_user_id = (int) $request->post('pid', ''); $visit_url = $request->post('visit_url', ''); $user_id = (int) $this->user_id ?? 0; $check = Yii::$app->services->validate->validate($params,[ [['activity_id', 'pid'], 'integer'], [['visit_url'], 'string'], ]); if($check === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $tran = Yii::$app->db->beginTransaction(); try { PkShareVisitLog::addVisitNum($this->mall_id, $activity_id, $share_user_id, $user_id, $visit_url); $tran->commit(); } catch (\Exception $e) { $tran->rollBack(); return $this->success("fail: " . $e->getMessage(), []); } } return $this->success("success", []); } }