mirror of https://gitee.com/stylefeng/roses
【7.3.4】【file】更新文件绑定业务信息的接口
parent
e1bbf89f89
commit
321bcd9f9d
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright [2020-2030] [https://www.stylefeng.cn]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||
*
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改Guns源码头部的版权声明。
|
||||
* 3.请保留源码和相关描述文件的项目出处,作者声明等。
|
||||
* 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 6.若您的项目无法满足以上几点,可申请商业授权
|
||||
*/
|
||||
package cn.stylefeng.roses.kernel.file.api;
|
||||
|
||||
import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 文件业务信息绑定的API
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2023/3/31 13:38
|
||||
*/
|
||||
public interface FileBusinessApi {
|
||||
|
||||
/**
|
||||
* 添加业务和文件的绑定
|
||||
*
|
||||
* @param businessCode 业务编码
|
||||
* @param businessId 业务id
|
||||
* @param fileIdList 文件id集合
|
||||
* @author fengshuonan
|
||||
* @date 2023/3/31 13:43
|
||||
*/
|
||||
void addFileBusinessBind(String businessCode, Long businessId, List<Long> fileIdList);
|
||||
|
||||
/**
|
||||
* 获取业务绑定的文件列表信息
|
||||
*
|
||||
* @param businessId 业务id
|
||||
* @return 文件的信息,不包含文件本身的字节信息
|
||||
* @author fengshuonan
|
||||
* @date 2020/11/29 16:26
|
||||
*/
|
||||
List<SysFileInfoResponse> getBusinessFileInfoList(Long businessId);
|
||||
|
||||
/**
|
||||
* 新增文件下载次数
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2023/3/31 14:23
|
||||
*/
|
||||
void addFileDownloadCount(Long businessId, Long fileId);
|
||||
|
||||
}
|
|
@ -130,4 +130,10 @@ public class SysFileInfoResponse {
|
|||
@ChineseDescription("文件访问路径")
|
||||
private String fileUrl;
|
||||
|
||||
/**
|
||||
* 下载次数
|
||||
*/
|
||||
@ChineseDescription("下载次数")
|
||||
private Integer downloadCount;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cn.stylefeng.roses.kernel.file.modular.service;
|
||||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.file.api.FileBusinessApi;
|
||||
import cn.stylefeng.roses.kernel.file.modular.entity.SysFileBusiness;
|
||||
import cn.stylefeng.roses.kernel.file.modular.pojo.request.SysFileBusinessRequest;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
@ -13,7 +14,7 @@ import java.util.List;
|
|||
* @author fengshuonan
|
||||
* @date 2023/03/31 13:30
|
||||
*/
|
||||
public interface SysFileBusinessService extends IService<SysFileBusiness> {
|
||||
public interface SysFileBusinessService extends IService<SysFileBusiness>, FileBusinessApi {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
|
|
|
@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
|
|||
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.file.api.FileInfoApi;
|
||||
import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
|
||||
import cn.stylefeng.roses.kernel.file.modular.entity.SysFileBusiness;
|
||||
import cn.stylefeng.roses.kernel.file.modular.enums.SysFileBusinessExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.file.modular.mapper.SysFileBusinessMapper;
|
||||
|
@ -16,6 +18,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -27,6 +31,9 @@ import java.util.List;
|
|||
@Service
|
||||
public class SysFileBusinessServiceImpl extends ServiceImpl<SysFileBusinessMapper, SysFileBusiness> implements SysFileBusinessService {
|
||||
|
||||
@Resource
|
||||
private FileInfoApi fileInfoApi;
|
||||
|
||||
@Override
|
||||
public void add(SysFileBusinessRequest sysFileBusinessRequest) {
|
||||
SysFileBusiness sysFileBusiness = new SysFileBusiness();
|
||||
|
@ -65,6 +72,68 @@ public class SysFileBusinessServiceImpl extends ServiceImpl<SysFileBusinessMappe
|
|||
return this.list(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFileBusinessBind(String businessCode, Long businessId, List<Long> fileIdList) {
|
||||
|
||||
if (ObjectUtil.isEmpty(fileIdList) || ObjectUtil.isEmpty(businessCode) || ObjectUtil.isEmpty(businessId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<SysFileBusiness> sysFileBusinesses = new ArrayList<>();
|
||||
for (Long fileId : fileIdList) {
|
||||
SysFileBusiness sysFileBusiness = new SysFileBusiness();
|
||||
sysFileBusiness.setBusinessCode(businessCode);
|
||||
sysFileBusiness.setBusinessId(businessId);
|
||||
sysFileBusiness.setFileId(fileId);
|
||||
sysFileBusinesses.add(sysFileBusiness);
|
||||
}
|
||||
|
||||
this.saveBatch(sysFileBusinesses);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysFileInfoResponse> getBusinessFileInfoList(Long businessId) {
|
||||
|
||||
// 获取业务下绑定的文件列表
|
||||
LambdaQueryWrapper<SysFileBusiness> sysFileBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysFileBusinessLambdaQueryWrapper.eq(SysFileBusiness::getBusinessId, businessId);
|
||||
List<SysFileBusiness> list = this.list(sysFileBusinessLambdaQueryWrapper);
|
||||
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 填充文件的详细信息
|
||||
ArrayList<SysFileInfoResponse> sysFileInfoResponses = new ArrayList<>();
|
||||
for (SysFileBusiness sysFileBusiness : list) {
|
||||
|
||||
// 获取每个文件的详情
|
||||
Long fileId = sysFileBusiness.getFileId();
|
||||
SysFileInfoResponse fileInfoWithoutContent = fileInfoApi.getFileInfoWithoutContent(fileId);
|
||||
if (fileInfoWithoutContent != null) {
|
||||
fileInfoWithoutContent.setDownloadCount(sysFileBusiness.getDownloadCount());
|
||||
sysFileInfoResponses.add(fileInfoWithoutContent);
|
||||
}
|
||||
}
|
||||
|
||||
return sysFileInfoResponses;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFileDownloadCount(Long businessId, Long fileId) {
|
||||
|
||||
LambdaQueryWrapper<SysFileBusiness> sysFileBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysFileBusinessLambdaQueryWrapper.eq(SysFileBusiness::getBusinessId, businessId);
|
||||
sysFileBusinessLambdaQueryWrapper.eq(SysFileBusiness::getFileId, fileId);
|
||||
SysFileBusiness sysFileBusiness = this.getOne(sysFileBusinessLambdaQueryWrapper, true);
|
||||
|
||||
if (sysFileBusiness != null) {
|
||||
sysFileBusiness.setDownloadCount(sysFileBusiness.getDownloadCount() + 1);
|
||||
}
|
||||
|
||||
this.updateById(sysFileBusiness);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取信息
|
||||
*
|
||||
|
@ -88,17 +157,8 @@ public class SysFileBusinessServiceImpl extends ServiceImpl<SysFileBusinessMappe
|
|||
private LambdaQueryWrapper<SysFileBusiness> createWrapper(SysFileBusinessRequest sysFileBusinessRequest) {
|
||||
LambdaQueryWrapper<SysFileBusiness> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
Long fileBusinessId = sysFileBusinessRequest.getFileBusinessId();
|
||||
Long businessId = sysFileBusinessRequest.getBusinessId();
|
||||
Long fileId = sysFileBusinessRequest.getFileId();
|
||||
Integer downloadCount = sysFileBusinessRequest.getDownloadCount();
|
||||
Long tenantId = sysFileBusinessRequest.getTenantId();
|
||||
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(fileBusinessId), SysFileBusiness::getFileBusinessId, fileBusinessId);
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(businessId), SysFileBusiness::getBusinessId, businessId);
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(fileId), SysFileBusiness::getFileId, fileId);
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(downloadCount), SysFileBusiness::getDownloadCount, downloadCount);
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(tenantId), SysFileBusiness::getTenantId, tenantId);
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue