10 changed files with 244 additions and 26 deletions
-
52app/common.php
-
10app/controller/ResourceController.php
-
2app/middleware/LoginMiddleware.php
-
31app/model/Share.php
-
9app/model/ShareItem.php
-
2app/service/ResourceDirService.php
-
45app/service/ResourceService.php
-
22app/service/ShareItemService.php
-
92app/service/ShareService.php
-
5route/app.php
@ -0,0 +1,9 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace app\model; |
||||
|
|
||||
|
use app\exception\ModelException; |
||||
|
|
||||
|
class ShareItem extends Model |
||||
|
{ |
||||
|
} |
||||
@ -0,0 +1,22 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace app\service; |
||||
|
|
||||
|
class ShareItemService extends Service |
||||
|
{ |
||||
|
/** |
||||
|
* @param $share 分享对象 |
||||
|
* @param $ids 分享id数组 |
||||
|
* @param $type 分享类型 1 资源 2 内容 |
||||
|
* 添加 授权素材 |
||||
|
*/ |
||||
|
public function addShareItem($share, $ids, $type) |
||||
|
{ |
||||
|
foreach ($ids as $id) { |
||||
|
$share_item['type'] = $type; |
||||
|
$share_item['target_id'] = $id; |
||||
|
$share_item_array[] = $share_item; |
||||
|
} |
||||
|
$share->shareItem()->saveAll($share_item_array); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,92 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace app\service; |
||||
|
|
||||
|
use app\exception\ModelException; |
||||
|
use app\model\Resource; |
||||
|
use app\model\ResourceDir; |
||||
|
use app\model\Share; |
||||
|
|
||||
|
class ShareService extends Service |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* @param $param 提交参数 |
||||
|
* @param $user_id 用户id |
||||
|
* |
||||
|
* @return array |
||||
|
*/ |
||||
|
public function addResourceShare($param, $user_id) |
||||
|
{ |
||||
|
try { |
||||
|
$resource_share_info = (getResourceShareInfo()); |
||||
|
$param['code'] = $resource_share_info['code']; |
||||
|
$param['password'] = $resource_share_info['password']; |
||||
|
$param['share_link'] = $resource_share_info['share_link']; |
||||
|
|
||||
|
$expire_time_info = $this->getExpireTimeInfoByExpireType($param['expire_type']); |
||||
|
$param['expire_time'] = $expire_time_info['milliseconds']; |
||||
|
$param['share_start_time'] = date('Y-m-d H:i:s'); |
||||
|
$param['share_end_time'] = $this->getShareEndTime($param['share_start_time'], $expire_time_info['seconds']); |
||||
|
$param['user_id'] = $user_id; |
||||
|
$param['size'] = $this->getShareSize($param['ids'], $param['type']); |
||||
|
|
||||
|
$share = Share::create($param); |
||||
|
|
||||
|
//插入分享详情表
|
||||
|
(new ShareItemService())->addShareItem($share, $param['ids'], $param['type']); |
||||
|
|
||||
|
//这里关联关系无法预加载 这样写可以实现 但是感觉怪怪的。。
|
||||
|
$share->user = $share->user; |
||||
|
} catch (\Exception $e) { |
||||
|
throw new ModelException($e->getMessage()); |
||||
|
} |
||||
|
return dataReturn($this->sucCode, $this->addMsg, $share); |
||||
|
} |
||||
|
/** |
||||
|
* @param $expire_type 过期时间类型 |
||||
|
* 通过过期时间类型 获取过期时间 |
||||
|
*/ |
||||
|
public function getExpireTimeInfoByExpireType($expire_type) |
||||
|
{ |
||||
|
$expire_type_map = Share::EXPIRE_TYPE_MAP; |
||||
|
return [ |
||||
|
'milliseconds' => daysToMilliseconds($expire_type_map[$expire_type]), |
||||
|
'seconds' => daysToSeconds($expire_type_map[$expire_type]), |
||||
|
]; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param $share_start_time 分享开始时间 |
||||
|
* @param $expire_time_seconds 分享过起秒数 |
||||
|
* 计算分享结束时间 |
||||
|
*/ |
||||
|
public function getShareEndTime($share_start_time, $expire_time_seconds) |
||||
|
{ |
||||
|
|
||||
|
return date('Y-m-d H:i:s', strtotime($share_start_time) + $expire_time_seconds); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param $ids 分享ids |
||||
|
* @param $type 分享类型1 资源 2 内容 |
||||
|
* |
||||
|
* 获取分享的大小 |
||||
|
*/ |
||||
|
public function getShareSize($ids, $type) |
||||
|
{ |
||||
|
switch ($type) { |
||||
|
case 1: |
||||
|
//分享的是资源
|
||||
|
$resources = Resource::whereIn('id', $ids)->select(); |
||||
|
$size = 0; |
||||
|
foreach ($resources as $resource) { |
||||
|
$size += (new ResourceService())->getResourceSizeAndCount($resource)['size']; |
||||
|
} |
||||
|
break; |
||||
|
case 2: |
||||
|
//分享的是内容
|
||||
|
} |
||||
|
return $size; |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue