| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 |
- <?php
- namespace addons\SalesCompany\backend\controllers;
- use Yii;
- use common\controllers\AddonsController;
- use common\models\user\User;
- use common\enums\StatusEnum;
- use addons\SalesCompany\common\models\SalesCompany;
- use addons\SalesCompany\common\models\SalesCompanyAgent;
- use addons\SalesCompany\common\models\CommissionLog;
- use addons\CloudStockTwo\common\models\CloudStockTwoLevel;
- use addons\CloudStockTwo\common\models\CloudStockTwoAgent;
- use addons\SalesCompany\common\enums\SalesCompanyEnum;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\SalesCompany\backend\controllers
- */
- class DefaultController extends BaseController
- {
- public $enableCsrfValidation = false;
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isGet) {
- $get = \Yii::$app->request->get();
- $get['mall_id'] = $this->mall_id;
- $params = [];
- $user_id_arr = [];
- $is_search = 0;
- if (!empty($get['user_id'])) {
- $is_search = 1;
- $user_id_arr[] = $get['user_id'];
- }
- if (!empty($get['keyword'])) {
- $is_search = 1;
- $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['like', 'username', $get['keyword']],
- ['like', 'nickname', $get['keyword']],
- ['like', 'mobile', $get['keyword']]
- ]], 'select' => 'id']);
- $user_ids = array_column($user_list, 'id');
- if (!empty($user_id_arr)) {
- $user_id_arr = array_intersect($user_id_arr, $user_ids);
- } else {
- $user_id_arr = $user_ids;
- }
- $company_list = SalesCompany::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['like', 'name', $get['keyword']],
- ]], 'select' => 'user_id']);
- $company_user_ids = array_column($company_list, 'user_id');
- if (!empty($user_id_arr)) {
- $user_id_arr = array_merge($user_id_arr, $company_user_ids);
- } else {
- $user_id_arr = $company_user_ids;
- }
- }
- if ($is_search) $params['where'][] = ['in', 'user_id', $user_id_arr];
- $params['where'][] = ['=', 'mall_id', $this->mall_id];
- $params['where'][] = ['in', 'status', [StatusEnum::ENABLED, StatusEnum::DISABLED]];
- $params['limit'] = 10;
- $params['order'] = 'created_at desc';
- try{
- $pageData = SalesCompany::listPage($params, false);
- }catch(\Exception $e){
- return $this->fail('获取数据失败');
- }
- if ($pageData === false) return $this->error(SalesCompany::getStaticError());
- if (!empty($pageData['list'])) {
- $user_id_arr = array_column($pageData['list'], 'user_id');
- $user_list = $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile']);
- $user_arr = [];
- $company_log = CommissionLog::lists(['where' => [['mall_id' => $this->mall_id,'status'=>StatusEnum::ENABLED,'is_frozen'=>0]], 'index' => 'user_id','select'=>'sum(num) as total_num,user_id','group'=>'user_id']);
- foreach ($user_list as $item) {
- $user_arr[$item['id']] = $item;
- }
- foreach ($pageData['list'] as &$v) {
- $v['nickname'] = $v['avatar_url'] = $v['mobile'] = '';
- if (isset($user_arr[$v['user_id']])) {
- $v['mobile'] = $user_arr[$v['user_id']]['mobile'];
- $v['nickname'] = $user_arr[$v['user_id']]['nickname'];
- $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url'];
- }
- $count = SalesCompanyAgent::find()->where(['mall_id'=>$this->mall_id,'status'=>StatusEnum::ENABLED,'company_id'=>$v['id']])->count();
- $v['agent_num'] = $count;
- $v['num'] = 0;
- if(isset($company_log[$v['user_id']])){
- $v['num'] = $company_log[$v['user_id']]['total_num'];
- }
- }
- }
- return $this->success('操作成功', $pageData);
- }
- }
- return $this->render('index');
- }
- /**
- * 查找用户
- * @return string
- */
- public function actionSearchUser()
- {
- if (\Yii::$app->request->isAjax) {
- $keyword = \Yii::$app->request->get('keyword', '');
- $params = ['keyword' => $keyword, 'mall_id' => $this->mall_id];
- $query = User::find()->alias('u')
- ->where(['u.status' => StatusEnum::ENABLED, 'u.mall_id' => $params['mall_id']]);
- if (isset($params['keyword']) && !empty($params['keyword'])) {
- $query->andWhere(['or', ['like', 'nickname', $params['keyword']], ['like', 'mobile', $params['keyword']], ['like', 'id', $params['keyword']]]);
- }
- $list = $query->limit(20)->select('u.id,u.nickname,u.mobile')->asArray()->all();
- foreach ($list as &$item) {
- if (empty($item['nickname'])) {
- $item['nickname'] = $item['mobile'] . "(id:{$item['id']})";
- }
- }
- $data['list'] = $list;
- return $this->success('操作成功', $data);
- }
- return $this->error();
- }
- /**
- * 添加用户
- * @return string
- */
- public function actionEdit()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['user_id','name'], 'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['is_enable'] = 1;
- $res = SalesCompany::getOne([['mall_id' => $this->mall_id], ['user_id' => $params['user_id']], ['status' => [StatusEnum::ENABLED]]]);
- if ($res) return $this->error('该会员已绑定销售公司');
- $res = SalesCompany::setData($params);
- if ($res === false) return $this->error(SalesCompany::getStaticError());
- return $this->success('操作成功');
- }else{
- $data['level'] = $level;
- return $this->success('操作成功',$data);
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- return $this->render('edit',[
- // 'level' => EightOutTwoLogic::getUpgradeLevel($this->mall_id),
- ]);
- }
- /*代理列表*/
- public function actionAgentList()
- {
- if (\Yii::$app->request->isAjax) {
- $page = \Yii::$app->request->get('page', 1);
- $limit = \Yii::$app->request->get('limit', $this->pageSize);
- $get = Yii::$app->request->get();
- $salesCompany = SalesCompany::getOne([['id' => $get['company_id']]]);
- if (!$salesCompany) {
- return $this->error('销售公司数据不存在');
- }
- if (!empty($get['user_id'])) {
- $is_search = 1;
- $user_id_arr[] = $get['user_id'];
- }
- if (!empty($get['keyword'])) {
- $is_search = 1;
- $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['like', 'username', $get['keyword']],
- ['like', 'nickname', $get['keyword']],
- ['like', 'mobile', $get['keyword']]
- ]], 'select' => 'id']);
- $user_ids = array_column($user_list, 'id');
- if (!empty($user_id_arr)) {
- $user_id_arr = array_intersect($user_id_arr, $user_ids);
- } else {
- $user_id_arr = $user_ids;
- }
- }
- if ($is_search) $wheres[] = ['in', 'user_id', $user_id_arr];
- $wheres[] = ['mall_id' => $this->mall_id];
- $wheres[] = ['company_id' => $get['company_id']];
- $wheres[] = ['status' => StatusEnum::ENABLED];
- $params = [
- 'select' => 'id,mall_id,user_id,company_id',
- 'where' => $wheres,
- 'order' => 'created_at desc',
- 'page' => $page,
- 'limit' => $limit,
- ];
- $salesCompanyAgent = SalesCompanyAgent::listPage($params);
- if (false === $salesCompanyAgent) {
- return $this->error(SalesCompanyAgent::getStaticError());
- }
- if (empty($salesCompanyAgent['list'])) {
- return $this->success('success', $salesCompanyAgent);
- }
- $user_ids = array_column($salesCompanyAgent['list'], 'user_id');
- $user_list = $user_list = User::lists(['where' => [['id' => $user_ids]], 'select' => 'id,nickname,avatar_url,mobile']);
- $user_arr = [];
- foreach ($user_list as $item) {
- $user_arr[$item['id']] = $item;
- }
- $agent_list = CloudStockTwoAgent::lists(['where' => [['user_id' => $user_ids,'status'=>StatusEnum::ENABLED]], 'select' => 'level,user_id','index' => 'user_id']);
- $level_list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]], 'index' => 'level']);
- $level_arr = array_column($salesCompanyAgent['list'], 'level');
- foreach ($salesCompanyAgent['list'] as $k => &$v) {
- $v['nickname'] = $v['avatar_url'] = $v['mobile'] = '';
- if (isset($user_arr[$v['user_id']])) {
- $v['mobile'] = $user_arr[$v['user_id']]['mobile'];
- $v['nickname'] = $user_arr[$v['user_id']]['nickname'];
- $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url'];
- }
- $v['level'] = $agent_list[$v['user_id']]['level'] ?? 0;
- $v['level_name'] = $level_list[$v['level']]['name'] ?? '';
- }
- return $this->success('success', $salesCompanyAgent);
- }
- return $this->render('index');
- }
- /**
- * 查找代理
- * @return string
- */
- public function actionSearchAgent()
- {
- if (\Yii::$app->request->isAjax) {
- $keyword = \Yii::$app->request->get('keyword', '');
- $params = ['keyword' => $keyword, 'mall_id' => $this->mall_id];
- $cloudStockAgent = CloudStockTwoAgent::find()
- ->select('user_id')
- ->where(['mall_id' => $this->mall_id,'status'=>StatusEnum::ENABLED])
- ->asArray()
- ->column();
- $query = User::find()->alias('u')
- ->where(['u.status' => StatusEnum::ENABLED, 'u.mall_id' => $params['mall_id'],'id'=>$cloudStockAgent]);
- if (isset($params['keyword']) && !empty($params['keyword'])) {
- $query->andWhere(['or', ['like', 'nickname', $params['keyword']], ['like', 'mobile', $params['keyword']], ['like', 'id', $params['keyword']]]);
- }
- $list = $query->limit(20)->select('u.id,u.nickname,u.mobile')->asArray()->all();
- foreach ($list as &$item) {
- if (empty($item['nickname'])) {
- $item['nickname'] = $item['mobile'] . "(id:{$item['id']})";
- }
- }
- $data['list'] = $list;
- return $this->success('操作成功', $data);
- }
- return $this->error();
- }
- /**
- * 添加代理
- * @return string
- */
- public function actionAgentEdit()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['user_id','company_id'], 'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $res = SalesCompanyAgent::getOne([['mall_id' => $this->mall_id], ['user_id' => $params['user_id']], ['status' => [StatusEnum::ENABLED]]]);
- if ($res) return $this->error('该会员已绑定销售公司');
- $res = SalesCompanyAgent::setData($params);
- if ($res === false) return $this->error(SalesCompany::getStaticError());
- return $this->success('操作成功');
- }else{
- $data['level'] = $level;
- return $this->success('操作成功',$data);
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- return $this->render('edit',[
- // 'level' => EightOutTwoLogic::getUpgradeLevel($this->mall_id),
- ]);
- }
- /**
- * 删除
- *
- * @return string
- */
- public function actionAgentDelete()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- if ($request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id'], 'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $salesCompanyAgent = SalesCompanyAgent::getOne([['id' => $params['id']]]);
- if (!$salesCompanyAgent) return $this->error('数据不存在');
- $salesCompanyAgent->status = StatusEnum::DELETE;
- $res = $salesCompanyAgent->save();
- if ($res === false) return $this->error("修改失败");
- return $this->success('操作成功');
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- }
- /**
- * 基础配置
- *
- * @return string
- */
- public function actionSetting()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax) {
- if ($retuest->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params,[
- [['management_fee',], 'integer'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- // 保存配置
- $config = Yii::$app->services->setting->addons->set($this->mall_id, SalesCompanyEnum::ADDONS_NAME, ['basic' => $params]);
- $this->success('保存成功', $config);
- } else {
- // 获取配置
- $config = Yii::$app->services->setting->addons->get($this->mall_id, SalesCompanyEnum::ADDONS_NAME, 'basic');
- $this->success('获取成功', $config);
- }
- }
- return $this->render($this->action->id);
- }
- /*
- *更改状态
- */
- public function actionUpdateStatus()
- {
- $params = Yii::$app->request->post();
- if (!in_array($params['is_enable'], [StatusEnum::ENABLED, StatusEnum::DISABLED])) {
- return $this->error('参数不对');
- }
- $params['mall_id'] = $this->mall_id;
- $res = SalesCompany::setData($params);
- if ($res === false) return $this->error(SalesCompany::getStaticError());
- return $this->success('操作成功');
- }
- public function actionIncomeList()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isGet) {
- $get = \Yii::$app->request->get();
- $get['mall_id'] = $this->mall_id;
- $params = [];
- $user_id_arr = [];
- $is_search = 0;
- if (!empty($get['user_id'])) {
- $is_search = 1;
- $user_id_arr[] = $get['user_id'];
- }
- if (!empty($get['keyword'])) {
- $is_search = 1;
- $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['like', 'username', $get['keyword']],
- ['like', 'nickname', $get['keyword']],
- ['like', 'mobile', $get['keyword']]
- ]], 'select' => 'id']);
- $company_user_ids = SalesCompany::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['like', 'name', $get['keyword']],
- ]], 'select' => 'user_id as id']);
- $user_list_merge = array_merge($user_list,$company_user_ids);
- $user_ids = array_column($user_list_merge, 'id');
- if (!empty($user_id_arr)) {
- $user_id_arr = array_intersect($user_id_arr, $user_ids);
- } else {
- $user_id_arr = $user_ids;
- }
- }
- if ($is_search) $params['where'][] = ['in', 'user_id', $user_id_arr];
- $params['where'][] = ['=', 'mall_id', $this->mall_id];
- $params['where'][] = ['in', 'status', [StatusEnum::ENABLED, StatusEnum::DISABLED]];
- $params['where'][] = ['=', 'is_frozen', $get['type']];
- $params['limit'] = 10;
- $params['order'] = 'created_at desc';
- try{
- $pageData = CommissionLog::listPage($params, false);
- }catch(\Exception $e){
- return $this->fail('获取数据失败');
- }
- if ($pageData === false) return $this->error(CommissionLog::getStaticError());
- if (!empty($pageData['list'])) {
- $user_id_arr = array_column($pageData['list'], 'user_id');
- $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']);
- $user_arr = [];
- foreach ($user_list as $item) {
- $user_arr[$item['id']] = $item;
- }
- $sales_company_list = SalesCompany::lists(['where' => [['mall_id' => $this->mall_id]], 'select' => 'user_id,name']);
- $sales_company_arr = [];
- foreach ($sales_company_list as $item) {
- $sales_company_arr[$item['user_id']] = $item;
- }
- foreach ($pageData['list'] as &$v) {
- $v['nickname'] = $v['avatar_url'] = $v['mobile'] = '';
- if (isset($user_arr[$v['user_id']])) {
- $v['mobile'] = $user_arr[$v['user_id']]['mobile'];
- $v['nickname'] = $user_arr[$v['user_id']]['nickname'];
- $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url'];
- }
- $v['rate_money'] = bcsub($v['total_money'],$v['money'],2);
- $v['company_name'] = $sales_company_arr[$v['user_id']]['name'] ?? '';
- }
- }
- $total_rate = 0;
- $total_price = 0;
- $total = CommissionLog::find()->select('sum(money) as price,sum(total_money) as total_price')->where(['mall_id'=>$this->mall_id,'is_frozen'=>0])->asArray()->one();
- if(!empty($total)){
- $total_price = $total['price'];
- $total_rate = $total['total_price'] - $total_price;
- }
- $pageData['orderTotalArr'] = [
- [
- 'type' => 'total_order',
- 'name' => '平台总抽佣',
- 'value' => $total_rate,
- ],
- [
- 'type' => 'total_price',
- 'name' => '总结算金额',
- 'value' => $total_price,
- ],
- ];
- return $this->success('操作成功', $pageData);
- }
- }
- return $this->render('income-list');
- }
- }
|