| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- <?php
- namespace addons\Boss\api\modules\v1\controllers;
- use addons\Boss\common\enums\LevelEnum;
- use addons\Boss\common\models\AddonsBoss;
- use addons\Boss\common\models\AddonsBossCommissionLog;
- use addons\Boss\common\models\AddonsBossLevel;
- use addons\ZaoDoubleCopy\common\models\ZaoDoubleCopyUser;
- use common\enums\AddonsEnum;
- use addons\Boss\common\models\AddonsBossRevenueLog;
- use addons\Boss\common\models\AddonsBossRewardLog;
- use addons\Boss\common\models\BossPoolPrizeCommissionLog;
- use common\enums\StatusEnum;
- use common\models\mall\MallAddons;
- use Yii;
- use api\controllers\OnAuthController;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\Boss\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'], '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 ?? '';
- // 获取股东信息
- $boss = AddonsBoss::getOne([['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED]]);
- // 数据初始化
- $amounts = 0;
- $commission = 0;
- // 获取收益列表
- $where = [];
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'user_id', $this->user_id];
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- $order = 'created_at desc,end_time desc';
- $select = 'amounts,commission,type,compute_period,revenue,start_time,end_time,from_type';
- $params = array('where' => $where, 'order' => $order, 'select' => $select, 'limit' => $get['limit']);
- $digital_name = \Yii::$app->services->setting->mall->get($this->mall_id, 'digital.name') ?? '数字币';
- $list = AddonsBossCommissionLog::listPage($params, false, true);
- $is_has = [];
- if(!empty($list['list'])){
- $start_time = $list['list'][0]['start_time'];
- $end_time = $list['list'][0]['end_time'];
- }
- $amounts = 0;
- $logInfo = AddonsBossCommissionLog::find()->where(['user_id' => $this->user_id, 'status'=>[StatusEnum::ENABLED], 'mall_id' => $this->mall_id, 'type' => 1])->orderBy("end_time desc, id desc")->one();
- if(!empty($logInfo)){
- $amounts = $logInfo->amounts;
- }
- foreach ($list['list'] as $key => &$item) {
- if($item['start_time']==$start_time && $item['end_time']==$end_time){
- $commission += $item['commission'];
- }
-
- $item['start_time'] = date_format(date_create($item['start_time']), "Y-m-d");
- $item['end_time'] = date_format(date_create($item['end_time']), "Y-m-d");
- $item['money_msg'] = '元';
- if(in_array($item['type'],[LevelEnum::DIGITAL_PRIZE,LevelEnum::EXTRA_DIGITAL_PRIZE])){
- $item['money_msg'] = $digital_name;
- }
-
- }
- $data['is_boss'] = $boss ? 1 : 0; // 是否是股东,0=否,1=是
- $data['amounts'] = sprintf("%.2f", substr(sprintf("%.3f", $amounts), 0, -1)); // 分红池
- $data['commission'] = sprintf("%.2f", substr(sprintf("%.3f", $commission), 0, -1)); // 本期收益
- $data['performance'] = sprintf("%.2f", substr(sprintf("%.3f", $boss->performance), 0, -1)); // 团队业绩
- $data['performance_commission'] = sprintf("%.2f", substr(sprintf("%.3f", $boss->performance_commission), 0, -1)); // 业绩分红
- $data['able_withdrawal_commission'] = $boss->commission; // 可提现收益
- $data['unsettled_commission'] = AddonsBossRewardLog::getUnsettledCommission($this->user_id, $this->mall_id); // 未结算收益
- if (MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) {
- //二二复制:直推团队总业绩
- $copy_user = ZaoDoubleCopyUser::find()->select('user_id,achievement')->where(['user_id' => $this->user_id, 'status' => StatusEnum::ENABLED,'mall_id' => $this->mall_id])->asArray()->one();
- $data['zao_double_copy_achievement'] = $copy_user ? $copy_user['achievement'] : 0;
- }
- $data['list'] = $list;
- $this->success('获取成功', $data);
- }
- }
- public function actionRights()
- {
- if (Yii::$app->request->isGet) {
- // 获取股东信息
- $boss = AddonsBoss::getOne([['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED]]);
- // 获取股东等级
- $list = AddonsBossLevel::getBossLevel([['mall_id' => $this->mall_id]], [], true, 'level,name,explain', 'level asc');
- foreach ($list as $level) {
- if ($boss->level == $level['level']) {
- $level_name = $level['name'];
- break;
- }
- }
- $data['user_id'] = $this->user_id;
- $data['nickname'] = $this->user->nickname ?? '';
- $data['avatar_url'] = $this->user->avatar_url ?? '';
- $data['level_name'] = $level_name ?? '';
- $data['list'] = $list;
- $this->success('获取成功', $data);
- }
- }
- /**
- * 获取营业额(最近7天记录)
- * @return void
- */
- public function actionRevenueLog()
- {
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'is_settlement', StatusEnum::ENABLED];
- $order = 'created_at desc';
- $list = AddonsBossRevenueLog::lists(['limit' => 7, 'where' => $where, 'order' => $order]);
- $this->success('获取成功', $list);
- }
- /**
- * @Description: 奖金池结算记录
- * @Author: zsan
- * @DateTime 2023-10-13 11:05:25
- * @return mixed
- */
- public function actionPoolPrizeLog()
- {
- 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());
- $boss_id = AddonsBoss::find()->where(['user_id' => $this->user_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
- ->select('id')->scalar() ?? 0;
- if(empty($boss_id)) return $this->success('数据请求成功', ['list' => [], 'count' => 0, 'page_count' => 0, 'row_count' => 0]);
- $params = [
- 'where' => [
- ['mall_id' => $this->mall_id],
- ['boss_id' => $boss_id],
- ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]
- ],
- 'select' => 'id, user_id, billing_cycle, num, total_amount, amount, personal_performance, total_performance, start_at, end_at, created_at',
- 'with' => [
- 'user' => function ($query) {
- return $query->select('id, nickname, avatar_url');
- }
- ],
- 'page' => $get['page'] ?? 1,
- 'order' => 'created_at desc',
- 'limit' => $get['limit'] ?? 10,
- ];
- $list = BossPoolPrizeCommissionLog::listPage($params, false, true);
- if($list === false) return $this->error(BossPoolPrizeCommissionLog::getStaticError());
- foreach($list['list'] as &$v){
- $v['created_at'] = date('Y-m-d H:i:s', $v['created_at']);
- $v['start_at'] = date('Y-m-d', strtotime($v['start_at']));
- $v['end_at'] = date('Y-m-d', strtotime($v['end_at']));
- $v['billing_cycle'] = $v['billing_cycle'] == 1 ? '天': ($v['billing_cycle'] == 2 ? '周' : '月');
- }
- unset($v);
- return $this->success('数据请求成功',$list);
- }
- }
- }
|