【7.3.4】【file】更新文件绑定业务信息的接口

pull/54/MERGE
fengshuonan 2023-03-31 15:00:59 +08:00
parent e1bbf89f89
commit 321bcd9f9d
4 changed files with 145 additions and 10 deletions

View File

@ -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.
*
* GunsAPACHE 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);
}

View File

@ -130,4 +130,10 @@ public class SysFileInfoResponse {
@ChineseDescription("文件访问路径")
private String fileUrl;
/**
*
*/
@ChineseDescription("下载次数")
private Integer downloadCount;
}

View File

@ -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 {
/**
*

View File

@ -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;
}