Browse Source

资源

master
unknown 1 year ago
parent
commit
93a15c4ba8
  1. 50
      app/controller/ResourceController.php
  2. 9
      app/model/AccreditFile.php
  3. 26
      app/model/File.php
  4. 55
      app/model/Resource.php
  5. 21
      app/model/ResourceFile.php
  6. 9
      app/model/User.php
  7. 6
      app/validate/ResourceValidate.php
  8. 3
      route/app.php

50
app/controller/ResourceController.php

@ -7,24 +7,55 @@ use app\validate\ResourceValidate;
use think\facade\Db; use think\facade\Db;
use think\facade\Lang; use think\facade\Lang;
use think\exception\ValidateException; use think\exception\ValidateException;
use think\Request;
class ResourceController class ResourceController
{ {
/** /**
* 全部资源 列表 * 全部资源 列表
*/ */
public function index()
public function index(Request $request)
{ {
$resource_list = Resource::where('type', 1)->select();
$param = $request->param();
$resource_list = Resource::field('id, name,user_id, resource_type, audit_status, del_audit_status, copyright_type, copyright_status, effective_start_time, effective_end_time,create_time')
->when(isset($param['resource_type']), function ($query) use ($param) {
$query->where('resource_type', $param['resource_type']);
})
->when(isset($param['copyright_type']), function ($query) use ($param) {
$query->where('copyright_type', $param['copyright_type']);
})
->when(isset($param['copyright_status']), function ($query) use ($param) {
$query->where('copyright_status', $param['copyright_status']);
})
->when(isset($param['create_time']), function ($query) use ($param) {
$query->where('create_time', '>', $param['create_time']);
})
->when(isset($param['audit_status']), function ($query) use ($param) {
$query->where('audit_status', $param['audit_status']);
})
->when(isset($param['del_audit_status']), function ($query) use ($param) {
$query->where('del_audit_status', $param['del_audit_status']);
})
->when(isset($param['order_field']) && isset($param['order_sort']), function ($query) use ($param) {
$query->order($param['order_field'], $param['order_sort']);
})
->with('user')
->where('type', 1)
->select();
// $userService = app('userService'); // $userService = app('userService');
// return $userService->doSomething(); // return $userService->doSomething();
return jsonReturn(0, Lang::get('成功'), $resource_list); return jsonReturn(0, Lang::get('成功'), $resource_list);
} }
public function save(Resource $resource)
/**
* 全部资源 新增
*/
public function save(Resource $resource, Request $request)
{ {
$param = input('post.');
$param = $request->param();
// 数据验证 // 数据验证
try { try {
switch ($param['copyright_type']) { switch ($param['copyright_type']) {
@ -52,4 +83,15 @@ class ResourceController
} }
return json($res); return json($res);
} }
/**
* 资源 详情
*/
public function detail(Resource $resource, $id)
{
$resource_detail = $resource::with('user')
->with('files')
->find($id);
return jsonReturn(0, Lang::get('成功'), $resource_detail);
}
} }

9
app/model/AccreditFile.php

@ -0,0 +1,9 @@
<?php
namespace app\model;
use app\exception\ModelException;
class AccreditFile extends Model
{
}

26
app/model/File.php

@ -6,4 +6,30 @@ use app\exception\ModelException;
class File extends Model class File extends Model
{ {
/**
* @param $files 素材数组
* @param $file_input_mode 素材录入方式
* 添加资源 素材关联表
*/
public function addFile($resource, $files, $file_input_mode)
{
foreach ($files as $file) {
$file['file_input_mode'] = $file_input_mode;
$file_array[] = $file;
}
// 资源素材关联 系统会自动插入
$resource->files()->saveAll($file_array);
}
/**
* @param $files 素材数组
* 获得一组素材的大小
*/
public function getFileSize($files)
{
$size = 0;
foreach ($files as $file) {
$size += $file['size'];
}
return $size;
}
} }

55
app/model/Resource.php

@ -6,41 +6,46 @@ use app\exception\ModelException;
class Resource extends Model class Resource extends Model
{ {
public function user()
{
return $this->belongsTo(User::class);
}
public function files()
{
return $this->belongsToMany(File::class, ResourceFile::class, 'file_id', 'resource_id');
}
/** /**
* @param $param
* @param $param 前端提交的参数
* @return array * @return array
* @throws ModelException
* 添加资源
*/ */
public function addResource($param): array public function addResource($param): array
{ {
try { try {
//添加资源的前置操作
$param = $this->beforeAddResource($param);
//插入资源表 //插入资源表
$resource_res = self::create($param);
//插入素材表 添加素材录入方式 并获取插入后的ids
$file_obj = new File();
foreach ($param['file'] as $file) {
$file['file_input_mode'] = $param['file_input_mode'];
$file_array[] = $file;
}
$resource = self::create($param);
$file_res = $file_obj->saveAll($file_array);
foreach ($file_res as $item) {
$file_ids[] = $item->id;
}
//插入资源素材关联表
foreach ($file_ids as $file_id) {
$resource_file_array[] = [
'resource_id' => $resource_res->id,
'file_id' => $file_id,
];
}
$ResourceFile = new ResourceFile();
$ResourceFile->saveAll($resource_file_array);
//插入素材表
(new File())->addFile($resource, $param['files'], $param['file_input_mode']);
} catch (\Exception $e) { } catch (\Exception $e) {
throw new ModelException($e->getMessage()); throw new ModelException($e->getMessage());
} }
return dataReturn($this->sucCode, $this->addMsg, $resource_res->id);
return dataReturn($this->sucCode, $this->addMsg, $resource->id);
}
/**
* @param $param 前端提交的参数
* @return array
* 添加资源前的操作
*/
public function beforeAddResource($param)
{
$param['size'] = (new File())->getFileSize($param['files']);
//todo 还有状态的啥的
return $param;
} }
} }

21
app/model/ResourceFile.php

@ -3,7 +3,26 @@
namespace app\model; namespace app\model;
use app\exception\ModelException; use app\exception\ModelException;
use think\model\Pivot;
class ResourceFile extends Model
class ResourceFile extends Pivot
{ {
protected $autoWriteTimestamp = true;
/**
* @param int $resource_id 资源id
* @param array $file_ids 素材ids
* @return array
* 手动添加 添加资源素材关联表
*/
public function addResourceFile($resource_id, $file_ids)
{
foreach ($file_ids as $file_id) {
$resource_file_array[] = [
'resource_id' => $resource_id,
'file_id' => $file_id,
];
}
$ResourceFile = new ResourceFile();
$ResourceFile->saveAll($resource_file_array);
}
} }

9
app/model/User.php

@ -0,0 +1,9 @@
<?php
namespace app\model;
use app\exception\ModelException;
class User extends Model
{
}

6
app/validate/ResourceValidate.php

@ -23,12 +23,12 @@ class ResourceValidate extends Validate
'accredit_file_number|授权文件号码' => 'require', 'accredit_file_number|授权文件号码' => 'require',
"use_range|适用范围" => 'require', "use_range|适用范围" => 'require',
"file_input_mode|素材录入方式" => 'require', "file_input_mode|素材录入方式" => 'require',
"file|素材" => 'require',
"files|素材" => 'require',
]; ];
protected $scene = [ protected $scene = [
'save_purchase' => ['name', 'resource_type', 'accredit_main_body', 'supplier', 'price', 'accredit_file_number', 'use_range', 'file_input_mode', 'file'],
'save_selfown' => ['name', 'resource_type', 'file_input_mode', 'file'],
'save_purchase' => ['name', 'resource_type', 'accredit_main_body', 'supplier', 'price', 'accredit_file_number', 'use_range', 'file_input_mode', 'files'],
'save_selfown' => ['name', 'resource_type', 'file_input_mode', 'files'],
// 'update' => ['id', 'title', 'domain', 'parent_id'], // 'update' => ['id', 'title', 'domain', 'parent_id'],
// 'setStatus' => ['id', 'status'], // 'setStatus' => ['id', 'status'],
]; ];

3
route/app.php

@ -17,8 +17,9 @@ Route::get('think', function () {
Route::get('hello/:name', 'index/hello'); Route::get('hello/:name', 'index/hello');
Route::group('resource', function () { Route::group('resource', function () {
Route::get('/index', 'resource/index');
Route::post('/save', 'resource/save'); Route::post('/save', 'resource/save');
Route::rule('/index', 'resource/index');
Route::get('/detail/:id', 'resource/detail');
}); });
Route::group('oss', function () { Route::group('oss', function () {

Loading…
Cancel
Save