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
-
43app/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