|
@@ -18,7 +18,7 @@ use Tymon\JWTAuth\Facades\JWTAuth;
|
|
|
use Dingo\Api\Http\Response;
|
|
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
|
|
use Illuminate\Database\QueryException;
|
|
|
-
|
|
|
+use League\Csv\Writer;
|
|
|
/**
|
|
|
* Created by PhpStorm.
|
|
|
* User: durong
|
|
@@ -429,5 +429,223 @@ class BehaviorRepository
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
+ public function download($filePath, $type, $request)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ set_time_limit(0);
|
|
|
+ if (!ini_get("auto_detect_line_endings")) {
|
|
|
+ ini_set("auto_detect_line_endings", '1');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 文件路径
|
|
|
+ $writer = Writer::createFromPath(public_path($filePath), 'w+');
|
|
|
+
|
|
|
+ // 设置标题
|
|
|
+ if ($type == 'registered_record') {
|
|
|
+ $title = [
|
|
|
+ '新用户注册', date('Y年m月d日')
|
|
|
+ ];
|
|
|
+ } elseif ($type == 'comment_record') {
|
|
|
+ $title = [
|
|
|
+ '评论账本', date('Y年m月d日')
|
|
|
+ ];
|
|
|
+ } elseif ($type == 'release_record') {
|
|
|
+ $title = [
|
|
|
+ '发布账本', date('Y年m月d日')
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ $title = [
|
|
|
+ '唯一/普通行为账本', date('Y年m月d日')
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ $title = eval('return ' . iconv('utf-8', 'gbk//IGNORE', var_export($title, true) . ';'));
|
|
|
+ $writer->insertone($title);
|
|
|
+
|
|
|
+ // 内容
|
|
|
+ if ($type == 'registered_record') {
|
|
|
+ $header = [
|
|
|
+ '账本ID', '触发时间', '用户ID', '消耗体力值', '触发类型', '生成类型',
|
|
|
+ '绝对级数', '上级用户ID', '发放状态', '生成数量', '发放数量'
|
|
|
+ ];
|
|
|
+ } elseif ($type == 'comment_record') {
|
|
|
+ $header = [
|
|
|
+ '账本ID', '触发时间', '用户ID', '关联内容ID', '内容作者ID', '上级评论者ID', '消耗体力值', '触发类型', '生成类型', '发放状态', '生成数量', '发放数量'
|
|
|
+ ];
|
|
|
+ } elseif ($type == 'release_record') {
|
|
|
+ $header = [
|
|
|
+ '账本ID', '触发时间', '用户ID', '关联内容ID', '消耗体力值', '触发类型', '生成类型', '发放状态', '生成数量', '发放数量'
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ $header = [
|
|
|
+ '账本ID', '触发时间', '用户ID', '关联内容ID', '消耗体力值', '触发类型', '生成类型', '发放状态', '生成数量', '发放数量'
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ $header = eval('return ' . iconv('utf-8', 'gbk//IGNORE', var_export($header, true) . ';'));
|
|
|
+ $writer->insertone($header);
|
|
|
+
|
|
|
+ $where = [];
|
|
|
+ if (isset($request['id'])) {
|
|
|
+ $where[] = ['id', $request['id']];
|
|
|
+ }
|
|
|
+ if (isset($request['uid'])) {
|
|
|
+ $where[] = ['uid', $request['uid']];
|
|
|
+ }
|
|
|
+ if (isset($request['absolute_progression'])) {
|
|
|
+ $where[] = ['absolute_progression', $request['absolute_progression']];
|
|
|
+ }
|
|
|
+ if (isset($request['trigger_type'])) {
|
|
|
+ $where[] = ['trigger_type', $request['trigger_type']];
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($type == 'registered_record') {
|
|
|
+ $registeredRecord = $this->registeredRecord;
|
|
|
+ $registeredRecord->where($where)
|
|
|
+ ->where(function ($query) use ($request) {
|
|
|
+ if (isset($request['created_at'])) {
|
|
|
+ $time = explode('_', $request['created_at']);
|
|
|
+ $query->whereBetween('created_at', $time);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ ->orderBy('id', 'desc')
|
|
|
+ ->chunk(1, function ($registeredRecords) use ($writer, $type) {
|
|
|
+ $data = [];
|
|
|
+ foreach ($registeredRecords as $registeredRecord) {
|
|
|
+ $tmp = [
|
|
|
+ $registeredRecord->id,
|
|
|
+ Carbon::parse($registeredRecord->created_at)->toDateTimeString(),
|
|
|
+ $registeredRecord->uid,
|
|
|
+ $registeredRecord->physical_exertion,
|
|
|
+ $registeredRecord->trigger_type == 0 ? '无效触发' : '有效触发',
|
|
|
+ $registeredRecord->generation_type == 0 ? '' : '彩虹豆',
|
|
|
+ $registeredRecord->absolute_progression,
|
|
|
+ $registeredRecord->superior_uid,
|
|
|
+ $registeredRecord->release_status == 0 ? '异常' : '正常',
|
|
|
+ $registeredRecord->generation_quantity,
|
|
|
+ $registeredRecord->quantity_issued
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($tmp as $key => $value) {
|
|
|
+ $tmp[$key] = iconv('utf-8', 'gbk//IGNORE', $value);
|
|
|
+ }
|
|
|
+ $data[] = $tmp;
|
|
|
+ }
|
|
|
+ $writer->insertAll($data);
|
|
|
+ });
|
|
|
+ }elseif ($type == 'comment_record'){
|
|
|
+ $commentRecord = $this->commentRecord;
|
|
|
+
|
|
|
+ $commentRecord->where($where)
|
|
|
+ ->where(function ($query) use ($request) {
|
|
|
+ if (isset($request['created_at'])) {
|
|
|
+ $time = explode('_', $request['created_at']);
|
|
|
+ $query->whereBetween('created_at', $time);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ ->orderBy('id', 'desc')
|
|
|
+ ->chunk(1, function ($commentRecords) use ($writer, $type) {
|
|
|
+ $data = [];
|
|
|
+ foreach ($commentRecords as $commentRecord) {
|
|
|
+ $tmp = [
|
|
|
+ $commentRecord->id,
|
|
|
+ Carbon::parse($commentRecord->created_at)->toDateTimeString(),
|
|
|
+ $commentRecord->uid,
|
|
|
+ $commentRecord->related_content_id,
|
|
|
+ $commentRecord->content_author_id,
|
|
|
+ $commentRecord->superior_commentator_id,
|
|
|
+ $commentRecord->physical_exertion,
|
|
|
+ $commentRecord->trigger_type == 0 ? '无效触发' : '有效触发',
|
|
|
+ $commentRecord->generation_type == 0 ? '' : '彩虹豆',
|
|
|
+ $commentRecord->release_status == 0 ? '异常' : '正常',
|
|
|
+ $commentRecord->generation_quantity,
|
|
|
+ $commentRecord->quantity_issued
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($tmp as $key => $value) {
|
|
|
+ $tmp[$key] = iconv('utf-8', 'gbk//IGNORE', $value);
|
|
|
+ }
|
|
|
+ $data[] = $tmp;
|
|
|
+ }
|
|
|
+ $writer->insertAll($data);
|
|
|
+ });
|
|
|
+ }elseif ($type == 'release_record'){
|
|
|
+ $releaseRecord = $this->releaseRecord;
|
|
|
+
|
|
|
+ $releaseRecord->where($where)
|
|
|
+ ->where(function ($query) use ($request) {
|
|
|
+ if (isset($request['created_at'])) {
|
|
|
+ $time = explode('_', $request['created_at']);
|
|
|
+ $query->whereBetween('created_at', $time);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ ->orderBy('id', 'desc')
|
|
|
+ ->chunk(1, function ($releaseRecords) use ($writer, $type) {
|
|
|
+ $data = [];
|
|
|
+ foreach ($releaseRecords as $releaseRecord) {
|
|
|
+ $tmp = [
|
|
|
+ $releaseRecord->id,
|
|
|
+ Carbon::parse($releaseRecord->created_at)->toDateTimeString(),
|
|
|
+ $releaseRecord->uid,
|
|
|
+ $releaseRecord->related_content_id,
|
|
|
+ $releaseRecord->physical_exertion,
|
|
|
+ $releaseRecord->trigger_type == 0 ? '无效触发' : '有效触发',
|
|
|
+ $releaseRecord->generation_type == 0 ? '' : '彩虹豆',
|
|
|
+ $releaseRecord->release_status == 0 ? '异常' : '正常',
|
|
|
+ $releaseRecord->generation_quantity,
|
|
|
+ $releaseRecord->quantity_issued
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($tmp as $key => $value) {
|
|
|
+ $tmp[$key] = iconv('utf-8', 'gbk//IGNORE', $value);
|
|
|
+ }
|
|
|
+ $data[] = $tmp;
|
|
|
+ }
|
|
|
+ $writer->insertAll($data);
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ $generalRecord = $this->generalRecord;
|
|
|
+
|
|
|
+ $generalRecord->where($where)
|
|
|
+ ->where(function ($query) use ($request) {
|
|
|
+ if (isset($request['created_at'])) {
|
|
|
+ $time = explode('_', $request['created_at']);
|
|
|
+ $query->whereBetween('created_at', $time);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ ->orderBy('id', 'desc')
|
|
|
+ ->chunk(1, function ($generalRecords) use ($writer, $type) {
|
|
|
+ $data = [];
|
|
|
+ foreach ($generalRecords as $generalRecord) {
|
|
|
+ $tmp = [
|
|
|
+ $generalRecord->id,
|
|
|
+ Carbon::parse($generalRecord->created_at)->toDateTimeString(),
|
|
|
+ $generalRecord->uid,
|
|
|
+ $generalRecord->related_content_id,
|
|
|
+ $generalRecord->content_author_id,
|
|
|
+ $generalRecord->physical_exertion,
|
|
|
+ $generalRecord->trigger_type == 0 ? '无效触发' : '有效触发',
|
|
|
+ $generalRecord->generation_type == 0 ? '' : '彩虹豆',
|
|
|
+ $generalRecord->release_status == 0 ? '异常' : '正常',
|
|
|
+ $generalRecord->generation_quantity,
|
|
|
+ $generalRecord->quantity_issued
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($tmp as $key => $value) {
|
|
|
+ $tmp[$key] = iconv('utf-8', 'gbk//IGNORE', $value);
|
|
|
+ }
|
|
|
+ $data[] = $tmp;
|
|
|
+ }
|
|
|
+ $writer->insertAll($data);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ Log::info('账本导出成功!');
|
|
|
+
|
|
|
+ } catch (QueryException $e) {
|
|
|
+ Log::debug('账本导出失败!' . $e->getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|