| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- <?php
- namespace addons\ServeBonus\api\modules\v1\controllers;
- use addons\ServeBonus\common\logic\AchievementLogic;
- use addons\ServeBonus\common\models\ServeBonus;
- use addons\ServeBonus\common\models\ServeBonusCommissionLog;
- use addons\ServeBonus\common\models\ServeBonusLevel;
- use addons\ServeBonus\common\models\ServeBonusPeriod;
- use addons\ServeBonus\common\models\ServeBonusRewardLog;
- use addons\ServeBonus\common\models\ServeBonusCloudStockPeriod;
- use addons\ServeBonus\common\models\ServeBonusLevelSetting;
- use addons\ServeBonus\common\models\ServeBonusOrderLog;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use common\models\user\UserLevel;
- use Yii;
- use api\controllers\OnAuthController;
- use common\models\user\UserPartitionRelationship;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\ServeBonus\api\modules\v1\controllers
- */
- class DefaultController extends OnAuthController
- {
- public $modelClass = '';
- public $enableCsrfValidation = false;
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- // protected $authOptional = ['index'];
- /**
- * 服务商分红首页
- *
- * @return string
- */
- public function actionIndex()
- {
- if (Yii::$app->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);
- }
- }
- }
|