123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- <?php
- // +----------------------------------------------------------------------
- // | Niucloud-admin 企业快速开发的saas管理平台
- // +----------------------------------------------------------------------
- // | 官方网址:https://www.niucloud.com
- // +----------------------------------------------------------------------
- // | niucloud团队 版权所有 开源版本可自由商用
- // +----------------------------------------------------------------------
- // | Author: Niucloud Team
- // +----------------------------------------------------------------------
- namespace app\service\admin\sys;
- use app\dict\sys\FileDict;
- use app\dict\sys\IconDict;
- use app\model\sys\SysAttachment;
- use app\model\sys\SysAttachmentCategory;
- use app\service\core\sys\CoreAttachmentService;
- use core\base\BaseAdminService;
- use core\exception\AdminException;
- use think\db\exception\DataNotFoundException;
- use think\db\exception\DbException;
- use think\db\exception\ModelNotFoundException;
- /**
- * 附件服务层
- * Class CoreAgreementService
- * @package app\service\core\sys
- */
- class AttachmentService extends BaseAdminService
- {
- public $core_attachment_service;
- public function __construct()
- {
- parent::__construct();
- $this->model = new SysAttachment();
- $this->core_attachment_service = new CoreAttachmentService();
- }
- /**
- * 新增素材
- * @param array $data
- */
- public function add(array $data)
- {
- $data[ 'site_id' ] = $this->site_id;
- return $this->core_attachment_service->add($data);
- }
- /**
- *
- * /**
- * 编辑素材
- * @param int $att_id
- * @param array $data
- * @return SysAttachment
- */
- public function edit(int $att_id, array $data)
- {
- return $this->core_attachment_service->edit($this->site_id, $att_id, $data);
- }
- /**
- * 修改附件分组
- * @param $att_id
- * @param $cate_id
- * @return bool
- */
- public function modifyCategory($att_id, $cate_id)
- {
- $where = array (
- [ 'att_id', '=', $att_id ],
- [ 'site_id', '=', $this->site_id ],
- );
- $this->model->where($where)->update([ 'cate_id' => $cate_id, 'update_time' => time() ]);
- return true;
- }
- /**
- * 批量更新附件分组
- * @param $att_ids
- * @param $cate_id
- * @return bool
- */
- public function batchModifyCategory($att_ids, $cate_id)
- {
- $where = array (
- [ 'att_id', 'in', is_string($att_ids) ? explode($att_ids) : $att_ids ],
- [ 'site_id', '=', $this->site_id ],
- );
- $this->model->where($where)->update([ 'cate_id' => $cate_id, 'update_time' => time() ]);
- return true;
- }
- /**
- * 删除素材
- * @param int $att_id
- * @return mixed
- */
- public function del(int $att_id)
- {
- return $this->core_attachment_service->del($this->site_id, $att_id);
- }
- /**
- * 批量删除
- * @param $data
- * @return true|null
- */
- public function delAll($data)
- {
- return $this->core_attachment_service->delAll($this->site_id, $data);
- }
- /**
- * 管理端获取附件列表
- * @param array $data
- * @return array
- */
- public function getPage(array $data)
- {
- $where = array (
- [ 'site_id', '=', $this->site_id ]
- );
- if (!empty($data[ 'att_type' ])) {
- $where[] = [ 'att_type', '=', $data[ 'att_type' ] ];
- }
- if (!empty($data[ 'cate_id' ])) {
- $where[] = [ 'cate_id', '=', $data[ 'cate_id' ] ];
- }
- if (!empty($data[ 'real_name' ])) {
- $where[] = [ 'real_name', 'like', '%' . $data[ 'real_name' ] . '%' ];
- }
- return $this->getPageList($this->model, $where, 'att_id,path,real_name,att_type,url', 'att_id desc', each:function($item, $key)
- {
- $item[ 'thumb' ] = get_thumb_images($this->site_id, $item[ 'url' ], FileDict::SMALL);
- });
- }
- /**
- * 新增素材组
- * @param array $data
- * @return mixed
- */
- public function addCategory(array $data)
- {
- $data[ 'site_id' ] = $this->site_id;
- $category_model = new SysAttachmentCategory();
- $attachment = $category_model->create($data);
- if (!$attachment->id)
- throw new AdminException('ADD_FAIL');//创建失败
- return $attachment->att_id;
- }
- /**
- * 素材组模型对象
- * @param int $site_id
- * @param int $id
- * @return mixed
- */
- public function findCategory(int $site_id, int $id)
- {
- $where = array (
- [ 'site_id', '=', $site_id ],
- [ 'id', '=', $id ]
- );
- $category_model = new SysAttachmentCategory();
- $category = $category_model->where($where)->findOrEmpty();
- if ($category->isEmpty())
- throw new AdminException('ATTACHMENT_GROUP_NOT_EXIST');
- return $category;
- }
- /**
- * 编辑素材组
- * @param int $id
- * @param array $data
- * @return SysAttachmentCategory
- */
- public function editCategory(int $id, array $data)
- {
- $where = array (
- [ 'site_id', '=', $this->site_id ],
- [ 'id', '=', $id ]
- );
- $category_model = new SysAttachmentCategory();
- return $category_model->where($where)->update($data);
- }
- /**
- * 删除素材组
- * @param int $id
- * @return mixed
- * @throws DbException
- */
- public function delCategory(int $id)
- {
- //查询是否有下级菜单或按钮
- $category = $this->findCategory($this->site_id, $id);
- if ($this->model->where([ [ 'cate_id', '=', $id ] ])->count() > 0)
- throw new AdminException('ATTACHMENT_GROUP_HAS_IMAGE');
- //下级存在图片不能删除
- return $category->delete();
- }
- /**
- * 管理端获取附件组列表
- * @param array $data
- * @return array
- * @throws DbException
- */
- public function getCategoryPage(array $data)
- {
- $where = array (
- [ 'site_id', '=', $this->site_id ]
- );
- if (!empty($data[ 'type' ])) {
- $where[] = [ 'type', '=', $data[ 'type' ] ];
- }
- if (!empty($data[ 'name' ])) {
- $where[] = [ 'name', 'like', '%' . $data[ 'name' ] . '%' ];
- }
- return $this->getPageList(( new SysAttachmentCategory() ), $where, 'id,name', 'id desc');
- }
- /**
- * 获取分组列表
- * @param array $data
- * @return array
- * @throws DataNotFoundException
- * @throws DbException
- * @throws ModelNotFoundException
- */
- public function getCategoryList(array $data)
- {
- $where = array (
- [ 'site_id', '=', $this->site_id ]
- );
- if (!empty($data[ 'type' ])) {
- $where[] = [ 'type', '=', $data[ 'type' ] ];
- }
- if (!empty($data[ 'name' ])) {
- $where[] = [ 'name', 'like', '%' . $data[ 'name' ] . '%' ];
- }
- return SysAttachmentCategory::where($where)->field('id,name,type')->order('id desc')->select()->toArray();
- }
- /**
- * 获取图标库分类列表
- * @param array $data
- * @return array|null
- */
- public function getIconCategoryList(array $data)
- {
- $icon_list = IconDict::getIcon();
- foreach ($icon_list as $k => $v) {
- unset($icon_list[ $k ][ 'glyphs' ]);
- if (!empty($data[ 'name' ]) && !str_contains($v['name'], $data['name'])) {
- unset($icon_list[ $k ]);
- }
- }
- return array_values($icon_list);
- }
- /**
- * 获取图标库列表
- * @param array $data
- * @return array|null
- */
- public function getIconList(array $data)
- {
- $icon_list = IconDict::getIcon();
- $res = [
- 'current_page' => intval($data[ 'page' ]),
- 'per_page' => intval($data[ 'limit' ]),
- 'data' => [],
- 'total' => 0
- ];
- $temp_data = [];
- foreach ($icon_list as $v) {
- $icon = $v[ 'glyphs' ]; // 图标列表
- foreach ($icon as $ck => $cv) {
- // 素材表中数据保持要一致
- $icon[ $ck ][ 'att_id' ] = $cv[ 'icon_id' ];
- $icon[ $ck ][ 'url' ] = $v[ 'font_family' ] . '-' . $v[ 'css_prefix_text' ] . $cv[ 'font_class' ];
- $icon[ $ck ][ 'real_name' ] = $cv[ 'name' ];
- // 查询名称
- if (!empty($data[ 'real_name' ]) && !str_contains($cv['name'], $data['real_name'])) {
- unset($icon[ $ck ]);
- }
- }
- $icon = array_values($icon);
- if (!empty($data[ 'cate_id' ]) && $data[ 'cate_id' ] == $v[ 'id' ]) {
- // 查询指定分类下的图标
- $temp_data = $icon;
- break;
- } else {
- // 查询全部图标
- $temp_data = array_merge($temp_data, $icon);
- }
- }
- // 手动分页
- $res[ 'total' ] = count($temp_data); // 总数量
- $start = ( $res[ 'current_page' ] - 1 ) * $res[ 'per_page' ]; // 数组下标从0 开始
- $icon_list = array_slice($temp_data, $start, $res[ 'per_page' ]);
- $res[ 'data' ] = $icon_list;
- return $res;
- }
- }
|