| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- <?php
- namespace addons\LuckyGroup\backend\controllers;
- use addons\LuckyGroup\common\models\LuckyGroupFrozenLog;
- use addons\LuckyGroup\common\models\LuckyGroupLevel;
- use addons\LuckyGroup\common\models\LuckyGroupOrder;
- use addons\LuckyGroup\common\models\LuckyGroupUser;
- use common\enums\AddonsEnum;
- use common\enums\UserWalletEnum;
- use common\models\common\CapitalLog;
- use common\models\common\CommissionLog;
- use common\models\user\User;
- use common\models\common\CapitalStatistics;
- use common\helpers\csv\CsvExportHelper;
- use common\enums\DownloadEnum;
- class FinanceController extends BaseController
- {
- /**
- * 积分明细
- * @author hpei
- */
- public function actionScoreLog()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $filename = '积分列表-' . date('YmdHis') . '_' . rand(10000, 99999);
- $data = \Yii::$app->request->post();
- $data['table'] = 'score';
- $data['mall_id'] = $this->mall_id;
- $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_ASSETS, CapitalLog::class, 'exportAssets', $data);
- if ($res === false) return $this->error('加入导出任务失败' . CsvExportHelper::getStaticError());
- return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
- }
- $get = \Yii::$app->request->get();
- $params['alias'] = 'b';
- $params['joinWith'] = ['user' => function ($query) {
- $query->select(['id', 'avatar_url', 'nickname', 'mobile']);
- }];
- if (isset($get['keyword']) && !empty($get['keyword'])) $params['where'] = [['or', ['like', 'nickname', $get['keyword']], ['=', 'mobile', $get['keyword']]]];
- if (isset($get['user_id']) && !empty($get['user_id'])) $params['where'][] = ['=', 'user_id', $get['user_id']];
- if (isset($get['desc']) && !empty($get['desc'])) $params['where'][] = ['like', 'b.desc', $get['desc']];
- if (isset($get['capital_type']) && !empty($get['capital_type'])) $params['where'][] = ['=', 'b.capital_type', $get['capital_type']];
- if (!empty($get['start'])) $params['where'][] = ['>=', 'b.created_at', strtotime($get['start'])];
- if (!empty($get['end'])) $params['where'][] = ['<=', 'b.created_at', strtotime($get['end'])];
- if (!empty($get['order_no'])) $params['where'][] = [ 'b.order_no'=>$get['order_no']];
- $params['where'][] = ['=', 'b.mall_id', $this->mall_id];
- $params['where'][] = ['=', 'b.from_type', AddonsEnum::ADDONS_NAME_LUCKY_GROUP];
- $params['where'][] = ['=', 'b.change_type', CapitalLog::CHANGE_TYPE_ADD];
- $params['order'] = 'b.created_at desc';
- $params['limit'] = 20;
- $params['select'] = ['b.change_num', 'b.source_table_id', 'b.change_type', 'b.current_num', 'b.desc', 'b.capital_type', 'b.created_at', 'b.user_id', 'b.from_type'];
- CapitalLog::$capitalType = 'score';
- if ($get['status'] == 0) {
- CapitalLog::$capitalType = 'score_frozen';
- $params['where'][] = ['=', 'b.status', $get['status']];
- }
- $params['page'] = empty($get['page']) ? 1 : $get['page'];
- $pageData = CapitalLog::listPage($params, false);
- if ($pageData === false) return $this->error(CapitalLog::getStaticError());
- $from_type_map = UserWalletEnum::getFromTypeMapByScore();
- $capital_type_map = [
- UserWalletEnum::ATTEND_REWARD => '参团奖励',
- UserWalletEnum::WIN_REWARD => '拼中奖励',
- UserWalletEnum::FIRST => '直推奖励',
- UserWalletEnum::SECOND => '间推奖励',
- ];
- $user_id_arr = array_column($pageData['list'], 'user_id');
- $source_table_id_arr = array_column($pageData['list'], 'source_table_id');
- $lk_order_list = LuckyGroupOrder::lists(['where' => [['id' => $source_table_id_arr]], 'index' => 'id', 'select' => 'id,order_no']);
- $lk_user_list = LuckyGroupUser::lists(['where' => [['user_id' => $user_id_arr]], 'index' => 'user_id', 'select' => 'user_id,level']);
- $level_arr = array_column($lk_user_list, 'level');
- $level_arr = LuckyGroupLevel::lists(['where' => [['level' => $level_arr], ['mall_id' => $this->mall_id]], 'index' => 'level', 'select' => 'level,name']);
- foreach ($pageData['list'] as &$val) {
- $val['lucky_group_level'] = '默认等级';
- $val['order_no'] = '';
- if (isset($lk_user_list[$val['user_id']])) {
- $level = $lk_user_list[$val['user_id']]['level'];
- if (isset($level_arr[$level])) {
- $val['lucky_group_level'] = $level_arr[$level]['name'];
- }
- }
- if (isset($lk_order_list[$val['source_table_id']])) {
- $val['order_no'] = $lk_order_list[$val['source_table_id']]['order_no'];
- }
- $val['source_text'] = ($from_type_map[$val['from_type']] ?? '') . ($capital_type_map[$val['capital_type']] ? '-' . $capital_type_map[$val['capital_type']] : '');
- }
- $pageData['incomeCapitalTypeList'] = $capital_type_map;
- $where['where'] = [['=', 'mall_id', $this->mall_id], ['=', 'type', CapitalStatistics::SCORE]];
- $total = CapitalStatistics::statistics($where, ['sum(capital_total) capital_total', 'sum(expend_capital_total) expend_capital_total']);
- $score = $total[0]['capital_total'] ? round($total[0]['capital_total'], 2) : 0;//总积分
- $score_used = $total[0]['expend_capital_total'] ? round($total[0]['expend_capital_total'], 2) : 0;//已使用的积分
- $score_no_used = $score - $score_used;
- $pageData['total'] = ['score' => $score, 'score_used' => $score_used, 'score_no_used' => $score_no_used];
- $pageData['export_list'] = CapitalLog::exportFieldsList();
- return $this->success('操作成功', $pageData);
- } else {
- return $this->render('score-log');
- }
- }
- /**
- * 余额明细
- * @return mixed
- */
- public function actionBalanceLog()
- {
- CapitalLog::$capitalType = 'balance';
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $filename = '余额列表-' . date('YmdHis') . '_' . rand(10000, 99999);
- $data = \Yii::$app->request->post();
- $data['table'] = 'balance';
- $data['mall_id'] = $this->mall_id;
- $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_ASSETS, CapitalLog::class, 'exportAssets', $data);
- if ($res === false) return $this->error('加入导出任务失败' . CsvExportHelper::getStaticError());
- return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
- }
- $page = \Yii::$app->request->get('page') ?? 1;
- $limit = \Yii::$app->request->get('page_size') ?? $this->pageSize;
- $keyword = \Yii::$app->request->get('keyword');
- $order_no = \Yii::$app->request->get('order_no');
- $user_id = \Yii::$app->request->get('user_id');
- $start = \Yii::$app->request->get('start');
- $end = \Yii::$app->request->get('end');
- $remark = \Yii::$app->request->get('remark');
- $type = \Yii::$app->request->get('balance_from_type');
- $flag = \Yii::$app->request->get('flag');
- $where[] = ['log.mall_id' => $this->mall_id];
- $where[] = ['log.from_type' => AddonsEnum::ADDONS_NAME_LUCKY_GROUP];
- $where[] = ['=', 'log.change_type', CapitalLog::CHANGE_TYPE_ADD];
- $where[] = ['in', 'log.status', [0,1]];
- if (\Yii::$app->request->get('status') == 0) {
- //查询冻结表,未结算数据
- $where[] = ['in', 'log.status', [-1, 0]];
- CapitalLog::$capitalType = 'balance_frozen';
- }
- if (!empty($keyword)) $where[] = ['or', ['like', 'user.nickname', $keyword], ['like', 'user.mobile', $keyword]];
- if (!empty($user_id)) $where[] = ['log.user_id' => $user_id];
- if (!empty($remark)) $where[] = ['like', 'log.desc', $remark];
- if (!empty($type)){
- $where[] = ['log.capital_type' => $type];
- }else{
- $capital_type = [
- UserWalletEnum::FIRST,
- UserWalletEnum::SECOND,
- UserWalletEnum::ATTEND_REWARD,
- UserWalletEnum::WIN_REWARD,
- UserWalletEnum::POOL_REWARD,
- UserWalletEnum::INVITE_REWARD,
- ];
- $where[] = ['log.capital_type' => $capital_type];
- }
- if (!empty($start)) $where[] = ['>=', 'log.created_at', strtotime($start)];
- if (!empty($end)) $where[] = ['<=', 'log.created_at', strtotime($end)];
- if (!empty($order_no)) $where[] = [ 'log.order_no'=>$order_no];
- $join = [
- ['LEFT JOIN', User::tableName() . 'as user', 'log.user_id = user.id and log.mall_id = user.mall_id'],
- ];
- $params = [
- 'alias' => 'log',
- 'select' => 'log.id,log.mall_id,log.user_id,log.source_table_id,log.change_type,log.from_type,log.capital_type,log.change_num,log.current_num,log.desc,log.source_table,log.created_at,user.nickname,user.avatar_url,user.mobile,user.username',
- 'join' => $join,
- 'where' => $where,
- 'order' => 'log.id desc,log.created_at desc,',
- 'page' => $page,
- 'limit' => $limit,
- ];
- if ($flag == "EXPORT") {
- } else {
- $list = CapitalLog::listPage($params, false, true);
- }
- $from_type_map = UserWalletEnum::getFromTypeMapByBalance();
- $capital_type_map = [
- UserWalletEnum::ATTEND_REWARD => '参团奖励',
- UserWalletEnum::WIN_REWARD => '拼中奖励',
- UserWalletEnum::FIRST => '直推奖励',
- UserWalletEnum::SECOND => '间推奖励',
- ];
- if (!empty($list['list'])) {
- $user_id_arr = array_column($list['list'], 'user_id');
- $source_table_id_arr = array_column($list['list'], 'source_table_id');
- $lk_order_list = LuckyGroupOrder::lists(['where' => [['id' => $source_table_id_arr]], 'index' => 'id', 'select' => 'id,order_no']);
- $lk_user_list = LuckyGroupUser::lists(['where' => [['user_id' => $user_id_arr]], 'index' => 'user_id', 'select' => 'user_id,level']);
- $level_arr = array_column($lk_user_list, 'level');
- $level_arr = LuckyGroupLevel::lists(['where' => [['level' => $level_arr], ['mall_id' => $this->mall_id]], 'index' => 'level', 'select' => 'level,name']);
- foreach ($list['list'] as &$v) {
- $v['source_text'] = ($from_type_map[$v['from_type']] ?? '') . ($capital_type_map[$v['capital_type']] ? '-' . $capital_type_map[$v['capital_type']] : '');
- $v['created_at'] = date("Y-m-d H:i:s", $v["created_at"]);
- $v['lucky_group_level'] = '默认等级';
- $v['order_no'] = '';
- if (isset($lk_user_list[$v['user_id']])) {
- $level = $lk_user_list[$v['user_id']]['level'];
- if (isset($level_arr[$level])) {
- $v['lucky_group_level'] = $level_arr[$level]['name'];
- }
- }
- if (isset($lk_order_list[$v['source_table_id']])) {
- $v['order_no'] = $lk_order_list[$v['source_table_id']]['order_no'];
- }
- };
- }
- // 业务类型
- $list['incomeCapitalTypeList'] = $capital_type_map;
- // 导出字段列表
- $list['export_list'] = CapitalLog::exportFieldsList();
- $where['where'] = [['=', 'mall_id', $this->mall_id], ['=', 'type', CapitalStatistics::BALANCE]];
- return $this->success('操作成功', $list);
- }
- return $this->render($this->action->id);
- }
- /**
- * 佣金明细
- */
- public function actionCommissionLog()
- {
- CapitalLog::$capitalType = 'commission';
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isPost) {
- $filename = '佣金列表-' . date('YmdHis') . '_' . rand(10000, 99999);
- $data = \Yii::$app->request->post();
- $data['table'] = 'commission';
- $data['mall_id'] = $this->mall_id;
- $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_ASSETS, CapitalLog::class, 'exportAssets', $data);
- if ($res === false) return $this->error('加入导出任务失败' . CsvExportHelper::getStaticError());
- return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
- }
- $page = \Yii::$app->request->get('page') ?? 1;
- $limit = \Yii::$app->request->get('page_size') ?? $this->pageSize;
- $get = \Yii::$app->request->get();
- $params[] = ['log.mall_id' => $this->mall_id];
- $params[] = ['log.from_type' => AddonsEnum::ADDONS_NAME_LUCKY_GROUP];
- $params[] = ['=', 'log.change_type', CapitalLog::CHANGE_TYPE_ADD];
- if ($get['status'] == 0) {
- //查询冻结表,未结算数据
- $params[] = ['in', 'log.status', [-1, 0]];
- CapitalLog::$capitalType = 'commission_frozen';
- }
- if (!empty($get['user_id'])) $params[] = ['log.user_id' => $get['user_id']];
- if (!empty($get['from_type'])) $params[] = ['log.from_type' => $get['from_type']];
- if (!empty($get['capital_type'])) $params[] = ['log.capital_type' => $get['capital_type']];
- if (!empty($get['remark'])) $params[] = ['like', 'log.desc', $get['remark']];
- if (!empty($get['keyword'])) $params[] = ['or', ['like', 'user.nickname', $get['keyword']], ['like', 'user.mobile', $get['keyword']]];
- if (!empty($get['order_no'])) $params[] = [ 'log.order_no'=>$get['order_no']];
- if (!empty($get['date'])) {
- $date = date($get['date'] . '-01');
- } else {
- $date = date('Y-m-01');
- }
- $start_time = strtotime($date);
- $end_time = strtotime($date . '+1 month -1 day 23:59:59');
- $params[] = ['>=', 'log.created_at', $start_time];
- $params[] = ['<=', 'log.created_at', $end_time];
- $join = [
- ['LEFT JOIN', User::tableName() . ' as user', 'user.id = log.user_id and log.mall_id = user.mall_id'],
- ];
- $params = [
- 'alias' => 'log',
- 'select' => 'log.id,log.mall_id,log.user_id,log.change_type,log.source_table_id,log.change_num,log.current_num,log.desc,log.from_type,log.capital_type,log.created_at,user.nickname,user.avatar_url,user.mobile,user.username',
- 'join' => $join,
- 'where' => $params,
- 'order' => 'id desc',
- 'page' => $page,
- 'limit' => $limit,
- ];
- $list = CapitalLog::listPage($params, false, true);
- $commission_map = UserWalletEnum::getCommissionMap();
- $list['date'] = explode('-', $date)[0] . '-' . explode('-', $date)[1];
- $capital_type_map = [
- UserWalletEnum::POOL_REWARD => '奖金池奖励',
- UserWalletEnum::TEAM => '渠道奖励',
- UserWalletEnum::EQUAL => '平级奖励',
- UserWalletEnum::OVER => '越级奖励',
- ];
- if (!empty($list['list'])) {
- $user_id_arr = array_column($list['list'], 'user_id');
- $order_ids = $source_table_id_arr = [];
- foreach ($list['list'] as $item) {
- if ($item['capital_type'] == UserWalletEnum::POOL_REWARD) {
- $source_table_id_arr[] = $item['source_table_id'];
- } else {
- $order_ids[] = $item['source_table_id'];
- }
- }
- $source_table_id_arr = array_column($list['list'], 'source_table_id');
- $lk_frozen_list = LuckyGroupFrozenLog::lists(['where' => [['id' => $source_table_id_arr]], 'index' => 'id', 'select' => 'id,source_id']);
- $source_id_arr = array_column($lk_frozen_list, 'source_id');
- $lk_order_list = LuckyGroupOrder::lists(['where' => [['id' => $source_id_arr]], 'index' => 'id', 'select' => 'id,order_no']);
- $lucky_group_order_list = LuckyGroupOrder::lists(['where' => [['id' => $order_ids]], 'index' => 'id', 'select' => 'id,order_no']);
- $lk_user_list = LuckyGroupUser::lists(['where' => [['user_id' => $user_id_arr]], 'index' => 'user_id', 'select' => 'user_id,level']);
- $level_arr = array_column($lk_user_list, 'level');
- $level_arr = LuckyGroupLevel::lists(['where' => [['level' => $level_arr], ['mall_id' => $this->mall_id]], 'index' => 'level', 'select' => 'level,name']);
- foreach ($list['list'] as &$lv) {
- $lv['lucky_group_level'] = '默认等级';
- $lv['order_no'] = '';
- if (isset($lk_user_list[$lv['user_id']])) {
- $level = $lk_user_list[$lv['user_id']]['level'];
- if (isset($level_arr[$level])) {
- $lv['lucky_group_level'] = $level_arr[$level]['name'];
- }
- }
- if ($lv['capital_type'] == UserWalletEnum::POOL_REWARD) {
- if (isset($lk_frozen_list[$lv['source_table_id']])) {
- $source_id = $lk_frozen_list[$lv['source_table_id']]['source_id'];
- if (isset($lk_order_list[$source_id])) {
- $lv['order_no'] = $lk_order_list[$source_id]['order_no'];
- }
- }
- } else {
- if (isset($lucky_group_order_list[$lv['source_table_id']])) {
- $lv['order_no'] = $lucky_group_order_list[$lv['source_table_id']]['order_no'];
- }
- }
- $lv['source_text'] = ($commission_map[$lv['from_type']] ?? '') . ($capital_type_map[$lv['capital_type']] ? '-' . $capital_type_map[$lv['capital_type']] : '');
- $lv['created_at'] = date('Y-m-d H:i:s', $lv['created_at']);
- }
- }
- // 业务类型
- $list['commissionFromTypeList'] = $commission_map;//来源类型
- $list['incomeCapitalTypeList'] = $capital_type_map;//佣金类型
- // 导出字段列表
- $list['export_list'] = CommissionLog::EXPORT_FIELD_LIST;
- $where['where'] = [['=', 'mall_id', $this->mall_id], ['=', 'type', CapitalStatistics::COMMISSIOIN]];
- CapitalLog::$capitalType = 'commission_frozen';
- $list['export_list'] = CapitalLog::exportFieldsList();
- return $this->success('操作成功', $list);
- } else {
- $flag = \Yii::$app->request->post('flag');
- if (empty($flag)) {
- return $this->render('commission-log');
- } else {
- // 导出数据
- }
- }
- }
- }
|