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 { // 导出数据 } } } }