request->isGet) { $get = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($get,[ [['page','limit','type'], 'integer'], [['type'],'default','value' => '2'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $get = ServeBonusRewardLog::exceptNullVal($get); //会员信息 $data['user_id'] = $this->user_id; $data['nickname'] = $this->user->nickname ?? ''; $data['avatar_url'] = $this->user->avatar_url ?? ''; $ServeBonus = ServeBonus::getOne([['user_id'=> $this->user_id,'status'=>StatusEnum::ENABLED]],true,['serveBonusLevel'=>function($query){ $query->andwhere(['=','mall_id',$this->mall_id]); }]); $data['level_name'] = $ServeBonus['serveBonusLevel']['name'] ?? '--'; // 获取服务商信息 // 获取收益列表 $where = []; $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['=', 'user_id', $this->user_id]; $where[] = ['=', 'type', $get['type']]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $order = 'id desc,created_at desc'; $select = 'order_id,order_no,type,level,amounts,commission,is_settlement,created_at,updated_at'; $params = array('where' => $where, 'order' => $order, 'select' => $select , 'limit' => $get['limit']); $list = ServeBonusRewardLog::listPage($params, false, true); $data['is_ServeBonus'] = $ServeBonus ? 1 : 0;// 是否是服务商,0=否,1=是 $data['commission'] = $ServeBonus['total_commission'];// 累计收益 $data['list'] = $list; // 获取业绩信息 $data['accumulation_condition'] = ServeBonusLevelSetting::find()->where(['mall_id' => $this->mall_id, 'level' => $ServeBonus['level'], 'status' => StatusEnum::ENABLED])->select('accumulation_condition')->scalar(); $data['achievement'] = []; if ($data['accumulation_condition'] == 1) { $data['achievement'] = AchievementLogic::getUserAchievement($this->user_id, $this->mall_id); $data['achievement']['month_achievement'] = $data['achievement']['last_month_achievement']; } $this->success('获取成功', $data); } } /** * 获取分红记录 * @Author: ltm * @DateTime: 2022/2/11 0011 15:15 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionCommission(){ if (Yii::$app->request->isGet) { $get = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($get,[ [['page','limit'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $get = ServeBonusCommissionLog::exceptNullVal($get); //会员信息 $data['user_id'] = $this->user_id; $data['nickname'] = $this->user->nickname ?? ''; $data['avatar_url'] = $this->user->avatar_url ?? ''; //分红记录 $where = []; $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $where[] = ['=', 'user_id', $this->user_id]; $order = 'period_id desc,created_at desc'; $select = 'commission,extra_commission,created_at,updated_at,start_time,end_time,period_id,achievement_commission'; $params = array('where' => $where, 'order' => $order, 'select' => $select , 'limit' => $get['limit'], 'with' => ['period' => function($query){ $query->select('id,period_num'); }]); $list = ServeBonusCommissionLog::listPage($params, false, true); if (!empty($list['list'])) { foreach ($list['list'] as $key => &$item) { $item['start_time'] = strtotime($item['start_time']); $item['end_time'] = strtotime($item['end_time']); } } $data['list'] = $list; $this->success('获取成功', $data); } } /** * @Author: ltm * @DateTime: 2022/2/9 0009 9:43 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $data * @return string */ public function actionFans() { if (Yii::$app->request->isGet) { // 检查提交的参数 $get = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($get,[ [['user_id','page','limit'], 'integer'], [['type'],'default','value' => '1'],//type=1;查询直推关系 type=2;查询间推关系 ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $get = User::exceptNullVal($get); $user_id = $this->user_id; $parent_id = $this->user->parent_id ?? 0; if (!empty($get['user_id'])) { $user_id = $get['user_id']; $parent_id = User::find()->select('parent_id')->where(['id' => $user_id])->asArray()->scalar(); } $user_ids = UserPartitionRelationship::getChildIdArr($user_id,$get['type']); //查询推荐人信息 $parent_data = User::getOne([['id' => $parent_id]],true,'','','nickname,avatar_url,level'); $data['user_id'] = $parent_id ?? '--'; $data['nickname'] = $parent_data['nickname'] ?? '平台'; $data['avatar_url'] = $parent_data['avatar_url']; $serve_user = ServeBonus::getOne([['user_id'=> $this->user->parent_id]],true,['serveBonusLevel']); $data['level_name'] = $serve_user['serveBonusLevel']['name'] ?? '--'; //根据会员ID查询会员信息 $where = []; $where[] = ['in', 'id', $user_ids]; $order = 'created_at desc'; $select = 'nickname,id,mobile,avatar_url'; $params = array('where' => $where, 'order' => $order, 'select' => $select , 'limit' => $get['limit'],'with'=>['userTeamStatistics'=>function($query){ $query->select('user_direct_total,user_indirect_total,user_id'); }]); $list = User::listPage($params, false, true); if($list){ foreach ($list['list'] as $k => $item){ $list['list'][$k]['user_id'] = $item['id']; $list['list'][$k]['customer'] = $item['userTeamStatistics']['user_direct_total']; $list['list'][$k]['fans'] = $item['userTeamStatistics']['user_indirect_total']; $list['list'][$k]['all_fans'] = $list['list'][$k]['customer'] +$list['list'][$k]['fans']; unset($list['list'][$k]['userTeamStatistics']); } } //查询粉丝中的粉丝数量 $data['list'] = $list; $this->success('获取成功', $data); } } /** * 服务商等级权益 * @Author: ltm * @DateTime: 2022/2/11 0011 15:15 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionLevel(){ if (Yii::$app->request->isGet) { $get = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($get,[ [['page','limit'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $get = ServeBonusLevel::exceptNullVal($get); //会员信息 $data['user_id'] = $this->user_id; $data['nickname'] = $this->user->nickname ?? ''; $data['avatar_url'] = $this->user->avatar_url ?? ''; $serve_user = ServeBonus::getOne([['user_id'=> $this->user_id]],true,['serveBonusLevel']); $data['level_name'] = $serve_user['serveBonusLevel']['name'] ?? '--'; //获取服务商等级 $where[] = ['mall_id'=>$this->mall_id]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $select = 'name,level,explain'; $params = array('where' => $where, 'select' => $select , 'limit' => '100'); $list = ServeBonusLevel::lists($params, true); $data['list'] = $list; $this->success('获取成功', $data); } } /** * 获取业绩分红记录 * @Author: ltm * @DateTime: 2022/2/11 0011 15:15 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionAchievement(){ if (Yii::$app->request->isGet) { $get = Yii::$app->request->get(); // 检查提交的参数 $res = Yii::$app->services->validate->validate($get,[ [['page','limit'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); //会员信息 $data['user_id'] = $this->user_id; $data['nickname'] = $this->user->nickname ?? ''; $data['avatar_url'] = $this->user->avatar_url ?? ''; $data['last_log'] = ['amounts'=>0,'amounts_num'=>0,'total_amounts_num'=>0,'commission'=>0]; //分红记录 $where = []; $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $where[] = ['=', 'user_id', $this->user_id]; $order = 'period_num desc,created_at desc'; $select = 'period_num,amounts,amounts_num,total_amounts_num,commission,start_time,end_time,is_settlement'; $params = array('where' => $where, 'order' => $order, 'select' => $select , 'limit' => $get['limit']); $last_log = ServeBonusCloudStockPeriod::find() ->where(['=', 'mall_id', $this->mall_id]) ->andWhere(['=', 'status', StatusEnum::ENABLED]) ->andWhere(['=', 'user_id', $this->user_id]) ->select($select) ->orderBy($order) ->asArray() ->one(); $serveBonus = ServeBonus::findOne(['user_id'=>$this->user_id,'status'=>StatusEnum::ENABLED]); $level = $serveBonus ? $serveBonus['level'] : 0; if(!empty($last_log) && $last_log['is_settlement'] == 0){ $last_log['amounts_num'] = ServeBonusCloudStockPeriod::getAmountsNum($this->mall_id,$level,$last_log['start_time'],$last_log['end_time']); $last_log['total_amounts_num'] = ServeBonusOrderLog::getTotalAmountsNum($this->mall_id,$level,$last_log['start_time'],$last_log['end_time']); $data['last_log'] = $last_log; }else{ // 获取基础配置 $config = Yii::$app->services->setting->addons->get($this->mall_id, 'ServeBonus', 'basic'); // 获取结算周期,0=天,1=周,2=月 $compute_period = $config['compute_period']; switch ($compute_period) { case 1: $start_day = date("Ymd", time()); $end_day = $start_day; break; case 2: $start_day = date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)); $end_day = date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600)); break; case 3: $start_day = date("Ym01", time()); $end_day = date('Y-m-d', strtotime(date('Y-m-01', time()). ' 1 month -1 day')); break; } $data['last_log'] ['amounts_num'] = ServeBonusCloudStockPeriod::getAmountsNum($this->mall_id,$level,$start_day,$end_day) ?? 0; $data['last_log'] ['total_amounts_num'] = ServeBonusOrderLog::getTotalAmountsNum($this->mall_id,$level,$start_day,$end_day); } $list = ServeBonusCloudStockPeriod::listPage($params, false, true); if (!empty($list['list'])) { foreach ($list['list'] as $key => &$item) { if($last_log && $item['period_num'] == $last_log['period_num']){ $item = $last_log; } $item['start_time'] = date('Y-m-d',strtotime($item['start_time'])); $item['end_time'] = date('Y-m-d',strtotime($item['end_time'])); } } $data['list'] = $list; $this->success('获取成功', $data); } } }