| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- <?php
- namespace addons\ServeBonus\backend\controllers;
- use addons\ServeBonus\common\enums\LevelEnum;
- use addons\ServeBonus\common\logic\CommissionLogLogic;
- use addons\ServeBonus\common\models\ServeBonus;
- use addons\ServeBonus\common\models\ServeBonusAchievement;
- 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\ServeBonusOrderLog;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use Yii;
- use common\controllers\AddonsController;
- use function Clue\StreamFilter\fun;
- /**
- * 结算明细控制器
- *
- * Class CommissionController
- * @package addons\ServeBonus\backend\controllers
- */
- class CommissionController extends AddonsController
- {
- /**
- * @var string
- */
- // public $layout = "@addons/ServeBonus/backend/views/layouts/main";
- public $enableCsrfValidation = false;
- /**
- * 结算周期列表
- * @Author: ltm
- * @DateTime: 2021/10/23 0023 10:14
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @return mixed|void
- */
- public function actionPeriod()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax) {
- if ($retuest->isPost) {
- // 检查提交的参数
- $params = $retuest->post();
- $res = Yii::$app->services->validate->validate($params,[
- [['page','limit'], 'integer'],
- [['datetime'], 'each', 'rule' => ['string']]
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $compute_period = LevelEnum::getComputePeriod();// 分红周期
- $where = [];
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- // 时间筛选
- if (!empty($params['datetime'])) {
- $start_time = strtotime($params['datetime'][0]);
- $end_time = strtotime($params['datetime'][1]);
- $where[] = ['between', 'created_at', $start_time, $end_time];
- }
- $order = 'period_num desc';
- $params = array('where' => $where, 'order' => $order, 'limit' => $params['limit']);
- $list = ServeBonusPeriod::listPage($params, false, true);
- if (empty($list)) $this->success('获取成功', compact('list', 'compute_period'));
- foreach ($list['list'] as &$item) {
- $item['start_time'] = date("Y-m-d", strtotime($item['start_time']));
- $item['end_time'] = date("Y-m-d", strtotime($item['end_time']));
- }
- $this->success('获取成功', compact('list', 'compute_period'));
- }
- }
- return $this->render($this->action->id);
- }
- /**
- * 分红明细
- * @Author: lun
- * @DateTime: 2022/1/27 0027 9:57
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @return mixed|string|void
- */
- public function actionCommissionLog()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax) {
- if ($retuest->isPost) {
- // 检查提交的参数
- $params = $retuest->post();
- $res = Yii::$app->services->validate->validate($params,[
- [['period_id'], 'required'],
- [['period_id','page','limit','level','user_id'], 'integer'],
- [['mobile'], 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
- [['datetime'], 'each', 'rule' => ['string']]
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params = ServeBonusRewardLog::exceptNullVal($params);
- // 获取服务商等级
- if ($params['page'] == 1) {
- $level_list = ServeBonusLevel::getServeBonusLevel([['mall_id' => $this->mall_id]], [], true, 'level,name');
- }
- $where = [];
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'period_id', $params['period_id']];
- !empty($params['user_id']) && $where[] = ['=', 'user_id', $params['user_id']];
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- // 时间筛选
- if (!empty($params['datetime'])) {
- $start_time = strtotime($params['datetime'][0]);
- $end_time = strtotime($params['datetime'][1]);
- $where[] = ['between', 'created_at', $start_time, $end_time];
- }
- // 根据等级搜索
- if (!empty($params['level'])) {
- $user_ids = ServeBonus::find()->select('user_id')->where(['mall_id' => $this->mall_id, 'level' => $params['level'], 'status' => StatusEnum::ENABLED])->asArray()->column();
- if (empty($user_ids)) $this->success('获取成功', compact('list', 'level_list'));
- $where[] = ['in', 'user_id', $user_ids];
- }
- // 根据手机号码搜索
- if (!empty($params['mobile'])) {
- $user_id = User::find()->select("id")->where(['mobile' => $params['mobile']])->asArray()->scalar();
- !empty($user_id) && $where[] = ['=', 'user_id', $user_id];
- }
- // 关联用户信息
- $with = ['user' => function ($query) {
- $query->select("id,nickname,mobile,avatar_url");
- },'servebonus' => function ($query) {
- $query->select("user_id,level");
- }];
- $order = 'id desc,created_at desc';
- $params = array('where' => $where, 'order' => $order, 'with' => $with, 'limit' => $params['limit']);
- $list = ServeBonusCommissionLog::listPage($params, false, true);
- if (empty($list)) $this->success('获取成功', compact('list', 'compute_period'));
- foreach ($list['list'] as &$item) {
- $item['start_time'] = date("Y-m-d", strtotime($item['start_time']));
- $item['end_time'] = date("Y-m-d", strtotime($item['end_time']));
- }
- $this->success('获取成功', compact('list', 'level_list'));
- }
- }
- return $this->render($this->action->id);
- }
- /**
- * 获取分红订单信息
- * @Author: lun
- * @DateTime: 2022/1/26 0026 17:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return mixed|void
- */
- public function actionExtraOrder()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax && $retuest->isPost) {
- $params = $retuest->post();
- // 检查提交的参数
- $res = Yii::$app->services->validate->validate($params, [
- [['user_id', 'type','is_settlement','order_id','page','limit','level','period_id'], 'integer'],
- [['order_no'], 'string'],
- [['mobile'], 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
- [['datetime'], 'each', 'rule' => ['string']]
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params = ServeBonusRewardLog::exceptNullVal($params);
- // 获取服务商等级
- if ($params['page'] == 1) {
- $level_list = ServeBonusLevel::getServeBonusLevel([['mall_id' => $this->mall_id]], [], true, 'level,name');
- }
- $where = [];
- $where[] = ['=', 'mall_id', $this->mall_id];
- !empty($params['user_id']) && $where[] = ['=', 'user_id', $params['user_id']];
- !empty($params['order_no']) && $where[] = ['=', 'order_no', $params['order_no']];
- !empty($params['order_id']) && $where[] = ['=', 'order_id', $params['order_id']];
- !empty($params['level']) && $where[] = ['=', 'level', $params['level']];
- !empty($params['type']) && $where[] = ['=', 'type', $params['type']];
- !empty($params['period_id']) && $where[] = ['=', 'period_id', $params['period_id']];
- // 时间筛选
- if (!empty($params['datetime'])) {
- $start_time = strtotime($params['datetime'][0]);
- $end_time = strtotime($params['datetime'][1]);
- $where[] = ['between', 'created_at', $start_time, $end_time];
- }
- isset($params['is_settlement']) && $params['is_settlement'] !== '' && $where[] = ['=', 'is_settlement', $params['is_settlement']];
- // 根据手机号查询
- if (!empty($params['mobile'])) {
- $user_id = User::find()->select("id")->where(['mobile' => $params['mobile']])->asArray()->scalar();
- !empty($user_id) && $where[] = ['=', 'user_id', $user_id];
- }
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- // 关联用户信息
- $with = ['user' => function ($query) {
- $query->select("id,nickname,mobile,avatar_url");
- }];
- $order = 'id desc,created_at desc';
- $log_params = array('where' => $where, 'order' => $order, 'with' => $with, 'limit' => $params['limit']);
- // 查询列表
- $list = ServeBonusRewardLog::listPage($log_params, false, true);
- return $this->success('获取成功', ['list' => $list, 'level_list' => $level_list ?? []]);
- }
- return $this->render($this->action->id);
- }
- /**
- * 出单奖励列表
- * @Author: lun
- * @DateTime: 2022/1/26 0026 17:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return mixed|void
- */
- public function actionForeverOrder()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax && $retuest->isPost) {
- $params = $retuest->post();
- // 检查提交的参数
- $res = Yii::$app->services->validate->validate($params, [
- [['user_id', 'type','page','limit','level'], 'integer'],
- [['order_no'], 'string'],
- [['mobile'], 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
- [['datetime'], 'each', 'rule' => ['string']]
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params = ServeBonusRewardLog::exceptNullVal($params);
- // 获取服务商等级
- if ($params['page'] == 1) {
- $level_list = ServeBonusLevel::getServeBonusLevel([['mall_id' => $this->mall_id]], [], true, 'level,name');
- }
- $where = [];
- $where[] = ['=', 'mall_id', $this->mall_id];
- !empty($params['user_id']) && $where[] = ['=', 'user_id', $params['user_id']];
- !empty($params['order_no']) && $where[] = ['=', 'order_no', $params['order_no']];
- // 时间筛选
- if (!empty($params['datetime'])) {
- $start_time = strtotime($params['datetime'][0]);
- $end_time = strtotime($params['datetime'][1]);
- $where[] = ['between', 'created_at', $start_time, $end_time];
- }
- // 根据手机号查询
- if (!empty($params['mobile'])) {
- $user_id = User::find()->select("id")->where(['mobile' => $params['mobile']])->asArray()->scalar();
- !empty($user_id) && $where[] = ['=', 'user_id', $user_id];
- }
- // 根据等级搜索
- if (!empty($params['level'])) {
- $user_ids = ServeBonus::find()->select('user_id')->where(['mall_id' => $this->mall_id, 'level' => $params['level'], 'status' => StatusEnum::ENABLED])->asArray()->column();
- if (empty($user_ids)) $this->success('获取成功', compact('list', 'level_list'));
- $where[] = ['in', 'user_id', $user_ids];
- }
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- // 关联用户信息
- $with = ['user' => function ($query) {
- $query->select("id,nickname,mobile,avatar_url");
- }, 'buy' => function ($query) {
- $query->select("id,nickname,mobile,avatar_url");
- }];
- $order = 'id desc,created_at desc';
- $log_params = array('where' => $where, 'with' => $with, 'order' => $order, 'limit' => $params['limit']);
- // 查询列表
- $list = ServeBonusAchievement::listPage($log_params, false, true);
- return $this->success('获取成功', compact('list', 'level_list'));
- }
- return $this->render($this->action->id);
- }
- /**
- * @Author: ltm 测试方法,测试完删除掉
- * @DateTime: 2022/2/10 0010 16:29
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return string
- */
- public function actionManualexecution(){
- $commiss = new CommissionLogLogic();
- $commiss->execute($this->mall_id,true);
- return $this->success('获取成功');
- }
- /**
- * 获取业绩分红订单信息
- * @Author: lun
- * @DateTime: 2022/1/26 0026 17:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $params
- * @return mixed|void
- */
- public function actionAchievementSettleLog()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax && $retuest->isPost) {
- $params = $retuest->post();
- // 检查提交的参数
- $res = Yii::$app->services->validate->validate($params, [
- [['user_id','page','limit','level'], 'integer'],
- [['mobile'], 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
- [['datetime'], 'each', 'rule' => ['string']]
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params = ServeBonusCloudStockPeriod::exceptNullVal($params);
- // 获取服务商等级
- if ($params['page'] == 1) {
- $level_list = ServeBonusLevel::getServeBonusLevel([['mall_id' => $this->mall_id]], [], true, 'level,name');
- }
- $where = [];
- $where[] = ['=', 'mall_id', $this->mall_id];
- !empty($params['user_id']) && $where[] = ['=', 'user_id', $params['user_id']];
- // 时间筛选
- if (!empty($params['datetime'])) {
- $start_time = strtotime($params['datetime'][0]);
- $end_time = strtotime($params['datetime'][1]);
- $where[] = ['between', 'created_at', $start_time, $end_time];
- }
- // 根据手机号查询
- if (!empty($params['mobile'])) {
- $user_id = User::find()->select("id")->where(['mobile' => $params['mobile'],'mall_id'=>$this->mall_id])->asArray()->scalar();
- !empty($user_id) && $where[] = ['=', 'user_id', $user_id];
- }
- // 根据等级搜索
- if (!empty($params['level'])) {
- $user_ids = ServeBonus::find()->select('user_id')->where(['mall_id' => $this->mall_id, 'level' => $params['level'], 'status' => StatusEnum::ENABLED])->asArray()->column();
- if (empty($user_ids)) $this->success('获取成功', compact('list', 'level_list'));
- $where[] = ['in', 'user_id', $user_ids];
- }
- $where[] = ['=', 'status', StatusEnum::ENABLED];
- // 关联用户信息
- $with = ['user' => function ($query) {
- $query->select("id,nickname,mobile,avatar_url");
- }];
- $order = 'id desc,created_at desc';
- $log_params = array('where' => $where,'order' => $order, 'with' => $with, 'limit' => $params['limit']);
- // 查询列表
- $list = ServeBonusCloudStockPeriod::listPage($log_params, false, true);
- if(!empty($list['list'])){
- $user_ids = array_column($list['list'],'user_id');
- // 获取所有服务商列表
- $servebonus_list = ServeBonus::find()
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED,'user_id'=>$user_ids])
- ->select('user_id,level')
- ->indexBy('user_id')
- ->asArray()
- ->all();
- foreach($list['list'] as &$item){
- $item['level'] = $servebonus_list[$item['user_id']] ? $servebonus_list[$item['user_id']]['level'] : 0;
- if(empty($item['is_settlement'])){
- $item['amounts_num'] = ServeBonusCloudStockPeriod::getAmountsNum($this->mall_id,$item['level'],$item['start_time'],$item['end_time']);
- $item['total_amounts_num'] = ServeBonusOrderLog::getTotalAmountsNum($this->mall_id,$item['level'],$item['start_time'],$item['end_time']);
- }
- }
- }
- return $this->success('获取成功', ['list' => $list, 'level_list' => $level_list ?? []]);
- }
- return $this->render($this->action->id);
- }
- }
|