2021与蓝度共同重构项目,服务端
liuhaonan
2022-09-14 aebf1df56a02c71a5e6b4a9da395c12ed66edb1b
changes
已添加11个文件
已修改2个文件
453 ■■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/bo/PlatformFileListBo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/PlatformFile.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/PlatformFileUser.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/PlatformFileMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/PlatformFileUserMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/PlatformFileMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/PlatformFileUserMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/EditFileParam.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/PlatformFilePermissionParam.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlatformFileService.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlatformFileUserService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/bo/PlatformFileListBo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.sandu.ximon.dao.bo;
import lombok.Data;
/**
 * @author LiuHaoNan
 * @date 2022/9/14
 */
@Data
public class PlatformFileListBo {
    private Long fileId;
    /**
     * æ–‡ä»¶åç§°
     */
    private String fileName;
    /**
     * æ–‡ä»¶å¤§å°
     */
    private Long fileSize;
}
dao/src/main/java/com/sandu/ximon/dao/domain/PlatformFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.sandu.ximon.dao.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * å¹³å°æ–‡ä»¶è¡¨
 *
 * @TableName platform_file
 */
@TableName(value = "platform_file")
@Data
public class PlatformFile implements Serializable {
    /**
     * æ–‡ä»¶id
     */
    @TableId
    private Long fileId;
    /**
     * æ–‡ä»¶åç§°
     */
    private String fileName;
    /**
     * æ–‡ä»¶å¤§å°
     */
    private Long fileSize;
    /**
     * url
     */
    private String fileUrl;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     * æ›´æ–°æ—¶é—´
     */
    private Date updateTime;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
dao/src/main/java/com/sandu/ximon/dao/domain/PlatformFileUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.sandu.ximon.dao.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
 * æ–‡ä»¶ç”¨æˆ·ç»‘定表
 * @TableName platform_file_user
 */
@TableName(value ="platform_file_user")
@Data
public class PlatformFileUser implements Serializable {
    /**
     *
     */
    @TableId
    private Long id;
    /**
     * æ–‡ä»¶id
     */
    private Long fileId;
    /**
     * ç”¨æˆ·id
     */
    private Long userId;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
dao/src/main/java/com/sandu/ximon/dao/mapper/PlatformFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.sandu.ximon.dao.mapper;
import com.sandu.ximon.dao.bo.PlatformFileListBo;
import com.sandu.ximon.dao.domain.PlatformFile;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€platform_file(平台文件表)】的数据库操作Mapper
* @createDate 2022-09-14 09:52:22
* @Entity com.sandu.ximon.dao.domain.PlatformFile
*/
@Mapper
public interface PlatformFileMapper extends BaseMapper<PlatformFile> {
    List<PlatformFileListBo> fileLiet(String keyword, Long userId);
}
dao/src/main/java/com/sandu/ximon/dao/mapper/PlatformFileUserMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.sandu.ximon.dao.mapper;
import com.sandu.ximon.dao.domain.PlatformFileUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€platform_file_user(文件用户绑定表)】的数据库操作Mapper
* @createDate 2022-09-14 09:52:31
* @Entity com.sandu.ximon.dao.domain.PlatformFileUser
*/
@Mapper
public interface PlatformFileUserMapper extends BaseMapper<PlatformFileUser> {
}
dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml
@@ -27,8 +27,9 @@
        light_task_pole_relation t1
        LEFT JOIN pole t2 ON t1.pole_id = t2.id
        <where>
            AND t1.task_id = #{taskId}
             t1.task_id = #{taskId}
        </where>
        GROUP BY t2.id
    </select>
    <select id="test" resultType="com.sandu.ximon.dao.bo.LightTaskPoleRelationBo">
dao/src/main/resources/mapper/PlatformFileMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sandu.ximon.dao.mapper.PlatformFileMapper">
    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.PlatformFile">
        <id property="fileId" column="file_id" jdbcType="BIGINT"/>
        <result property="fileName" column="file_name" jdbcType="VARCHAR"/>
        <result property="fileUrl" column="file_url" jdbcType="VARCHAR"/>
        <result property="fileSize" column="file_size" jdbcType="BIGINT"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <sql id="Base_Column_List">
        file_id
        ,file_name,file_size,
        create_time,update_time
    </sql>
    <select id="fileLiet" resultType="com.sandu.ximon.dao.bo.PlatformFileListBo">
        SELECT
        *
        FROM
        platform_file t1
        LEFT JOIN platform_file_user t2 ON t1.file_Id = t2.file_Id
        WHERE
        1 =1
        <if test="userId!=null">
            AND
            t2.user_id = #{userId}
        </if>
        <if test="keyword != null and keyword != ''">
            AND (
            t1.file_name LIKE CONCAT('%', #{keyword},'%')
            )
        </if>
    </select>
</mapper>
dao/src/main/resources/mapper/PlatformFileUserMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sandu.ximon.dao.mapper.PlatformFileUserMapper">
    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.PlatformFileUser">
            <id property="id" column="id" jdbcType="BIGINT"/>
            <result property="fileId" column="file_id" jdbcType="BIGINT"/>
            <result property="userId" column="user_id" jdbcType="BIGINT"/>
    </resultMap>
    <sql id="Base_Column_List">
        id,file_id,user_id
    </sql>
</mapper>
ximon-admin/src/main/java/com/sandu/ximon/admin/param/EditFileParam.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.sandu.ximon.admin.param;
import lombok.Data;
import java.util.List;
/**
 * @author LiuHaoNan
 * @date 2022/9/14
 * å¹³å°æ–‡ä»¶
 */
@Data
public class EditFileParam {
    private Long fileId;
    /**
     * æ–‡ä»¶åç§°
     */
    private String fileName;
    private List<Long> fileIds;
}
ximon-admin/src/main/java/com/sandu/ximon/admin/param/PlatformFilePermissionParam.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.sandu.ximon.admin.param;
/**
 * @author LiuHaoNan
 * @date 2022/9/14
 * å¹³å°æ–‡ä»¶
 */
public class PlatformFilePermissionParam {
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
@@ -105,18 +105,24 @@
            throw new BusinessException("保存路灯任务失败");
        }
        List<String> poleCodeList = new ArrayList<>();
        if (CollectionUtil.isNotEmpty(param.getPoleIdList())) {
            List<Pole> poleList = SpringContextHolder.getBean(PoleService.class).listByIds(param.getPoleIdList());
        //传入的灯杆id集合
        List<Long> poleIdList = new ArrayList<>();
        //去重
        for (Long item : param.getPoleIdList()) {
            if (!poleIdList.contains(item)) {
                poleIdList.add(item);
            }
        }
        if (CollectionUtil.isNotEmpty(poleIdList)) {
            List<Pole> poleList = SpringContextHolder.getBean(PoleService.class).listByIds(poleIdList);
            if (CollectionUtil.isNotEmpty(poleList)) {
                poleCodeList = poleList.stream().map(Pole::getDeviceCode).collect(Collectors.toList());
            }
        }
        String content = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "},{内帧指令" + newLightTask.getFramePayload() + ", ç¯æ†ID:" + param.getPoleIdList().toString() + ", æŽ§åˆ¶çš„灯头地址:" + param.getLightAddress() + " }";
        String content = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "},{内帧指令" + newLightTask.getFramePayload() + ", ç¯æ†ID:" + poleIdList.toString() + ", æŽ§åˆ¶çš„灯头地址:" + param.getLightAddress() + " }";
        StoreOperationRecordsUtils.storeOperationData(poleCodeList, null, "新增路灯任务", content);
        //传入的灯杆id集合
        List<Long> poleIdList = param.getPoleIdList();
        //记录这些灯杆原先的任务
        List<LightTaskPoleRelation> oldLightTaskStatusAndPoles;
        if ("FFFF".equals(param.getLightAddress())) {
@@ -156,7 +162,7 @@
         * ä¸‹å‘路灯任务日志记录开始
         */
        String content1 = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "}," + " ç¯æ†ID:" + param.getPoleIdList().toString() + " }";
        String content1 = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "}," + " ç¯æ†ID:" + poleIdList.toString() + " }";
        StoreOperationRecordsUtils.storeOperationData(poleCodeList, null, "下发路灯任务", content1);
        /**
         * ä¸‹å‘路灯任务日志记录结束
@@ -172,7 +178,7 @@
            lightTaskPoleRelationService.saveBatch(all);
        }
        if (!param.getPoleIdList().isEmpty() && num == newPoleMap.size()) {
        if (!poleIdList.isEmpty() && num == newPoleMap.size()) {
            //所有灯杆都下发失败 æ–°å¢žçš„任务不保留
            removeById(newLightTask);
            throw new BusinessException("指令下发失败,请检查灯杆状态后重新新增任务");
@@ -217,7 +223,13 @@
        //编辑后灯杆ID集合
        List<Long> poleIdList = param.getPoleIdList();
        List<Long> poleIdList = new ArrayList<>();
        //去重
        for (Long item : param.getPoleIdList()) {
            if (!poleIdList.contains(item)) {
                poleIdList.add(item);
            }
        }
        if (poleIdList.isEmpty()) {
            throw new BusinessException("编辑任务时请选择灯杆");
        }
@@ -225,12 +237,12 @@
        List<LightTaskStatusAndPole> oldLightTaskStatusAndPoles = lightTaskPoleRelationService.listPoleAndStatusIdByTaskId(taskId);
        List<Long> oldList = oldLightTaskStatusAndPoles.stream().map(LightTaskStatusAndPole::getId).collect(Collectors.toList());
        //判断param.getPoleIdList()中是否有旧的灯杆ID    (直接下发)
        List<Long> newPoleIdList = param.getPoleIdList().stream().filter(poleId -> !oldList.contains(poleId)).collect(Collectors.toList());
        //判断param.getPoleIdList()中是否有新的灯杆ID    (覆盖操作)
        List<Long> oldPoleIdList = param.getPoleIdList().stream().filter(poleId -> oldList.contains(poleId)).collect(Collectors.toList());
        //oldList中有的灯杆ID,但是param.getPoleIdList()中没有 (关灯操作)
        List<Long> closeLight = oldList.stream().filter(poleId -> !param.getPoleIdList().contains(poleId)).collect(Collectors.toList());
        //判断poleIdList中是否有旧的灯杆ID    (直接下发)
        List<Long> newPoleIdList = poleIdList.stream().filter(poleId -> !oldList.contains(poleId)).collect(Collectors.toList());
        //判断poleIdList中是否有新的灯杆ID    (覆盖操作)
        List<Long> oldPoleIdList = poleIdList.stream().filter(poleId -> oldList.contains(poleId)).collect(Collectors.toList());
        //oldList中有的灯杆ID,但是poleIdList中没有 (关灯操作)
        List<Long> closeLight = oldList.stream().filter(poleId -> !poleIdList.contains(poleId)).collect(Collectors.toList());
        //取出覆盖操作的关系信息
@@ -317,13 +329,13 @@
         * ç¼–辑路灯任务日志记录开始
         */
        List<String> poleCodeList = new ArrayList<>();
        if (CollectionUtil.isNotEmpty(param.getPoleIdList())) {
            List<Pole> poleList = SpringContextHolder.getBean(PoleService.class).listByIds(param.getPoleIdList());
        if (CollectionUtil.isNotEmpty(poleIdList)) {
            List<Pole> poleList = SpringContextHolder.getBean(PoleService.class).listByIds(poleIdList);
            if (CollectionUtil.isNotEmpty(poleList)) {
                poleCodeList = poleList.stream().map(Pole::getDeviceCode).collect(Collectors.toList());
            }
        }
        String content = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "},{内帧指令" + newLightTask.getFramePayload() + ", ç¯æ†ID:" + param.getPoleIdList().toString() + ", æŽ§åˆ¶çš„灯头地址:" + param.getLightAddress() + " }";
        String content = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "},{内帧指令" + newLightTask.getFramePayload() + ", ç¯æ†ID:" + poleIdList.toString() + ", æŽ§åˆ¶çš„灯头地址:" + param.getLightAddress() + " }";
        StoreOperationRecordsUtils.storeOperationData(poleCodeList, null, "编辑路灯任务", content);
        /**
         * ç¼–辑路灯任务日志记录结束
@@ -348,10 +360,9 @@
        List<LightTaskPoleRelation> all = new ArrayList<>();
        all.addAll(newPoleSuccess);
        all.addAll(oldPoleFail);
        all.addAll(oldPoleSuccess);
        all.addAll(oldPoleFail);
        all.addAll(closePoleFail);
//        all.addAll(oldPoleFail);
//        all.addAll(closePoleFail);
        List<Long> allPoleId = new ArrayList<>();
@@ -378,7 +389,7 @@
        /**
         * ä¸‹å‘路灯任务日志记录开始
         */
        String content1 = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "}," + " ç¯æ†ID:" + param.getPoleIdList().toString() + " }";
        String content1 = "{任务ID:" + newLightTask.getTaskId() + ", ä»»åŠ¡åï¼š" + newLightTask.getTaskName() + "}," + " ç¯æ†ID:" + poleCodeList.toString() + " }";
        StoreOperationRecordsUtils.storeOperationData(poleCodeList, null, "下发路灯任务", content1);
        /**
         * ä¸‹å‘路灯任务日志记录结束
@@ -390,7 +401,7 @@
            throw new BusinessException("编辑失败,请检查原有设备和编辑后的设备是否在线!");
        } else if (!closePoleFail.isEmpty() && !newPoleSuccess.isEmpty() && !oldPoleFail.isEmpty()) {
            return "原任务中存在下发异常,原任务保留,创建新任务进行保存";
        } else if (!newPoleFail.isEmpty() && !newPoleSuccess.isEmpty()) {
        } else if (!newPoleFail.isEmpty()) {
            return "新任务中存在下发异常,忽略异常操作的灯杆";
        } else {
            return "操作异常";
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlatformFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
package com.sandu.ximon.admin.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.file.FileUploadDto;
import com.sandu.common.file.impl.AliOssFileServiceImpl;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.param.EditFileParam;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.dao.bo.PlatformFileListBo;
import com.sandu.ximon.dao.domain.PlatformFile;
import com.sandu.ximon.dao.domain.PlatformFileUser;
import com.sandu.ximon.dao.enums.AdministratorEnums;
import com.sandu.ximon.dao.mapper.PlatformFileMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
 * @author LiuHaoNan
 * @date 2022/9/14
 */
@Slf4j
@Service
@AllArgsConstructor
public class PlatformFileService extends BaseServiceImpl<PlatformFileMapper, PlatformFile> {
    private final AliOssFileServiceImpl aliOssFileService;
    private final PlatformFileUserService platformFileUserService;
    /**
     * æ–‡ä»¶ä¸Šä¼ 
     *
     * @param file
     * @return
     */
    public boolean addProgramFile(MultipartFile file) {
        PermissionToCheck();
        FileUploadDto fileUploadDto = aliOssFileService.uploadFile(file);
        PlatformFile platformFile = new PlatformFile();
        platformFile.setFileName(fileUploadDto.getFileName());
        platformFile.setFileSize(fileUploadDto.getFileSize());
        platformFile.setFileUrl(fileUploadDto.getFileUrl());
        log.error("超管进行文件上传[ æ–‡ä»¶å:" + fileUploadDto.getFileName() + ", æ–‡ä»¶å¤§å°: " + fileUploadDto.getFileSize() + ", url: " + fileUploadDto.getFileUrl() + "]");
        return save(platformFile);
    }
    /**
     * ä¿®æ”¹æ–‡ä»¶åç§°
     * @param param
     * @return
     */
    public boolean updateFileName(EditFileParam param) {
        PermissionToCheck();
        if (param.getFileId() == null || param.getFileName().isEmpty()) {
            throw new BusinessException("编辑时参数不能为空!");
        }
        PlatformFile byId = getById(param.getFileId());
        if (byId == null) {
            throw new BusinessException("未找到文件!");
        }
        byId.setFileName(param.getFileName());
        return updateById(byId);
    }
    /**
     * åˆ é™¤æ–‡ä»¶
     * @param param
     * @return
     */
    public boolean deleteFile(EditFileParam param) {
        PermissionToCheck();
        if (param.getFileIds() == null || param.getFileIds().size() == 0) {
            throw new BusinessException("删除时参数不能为空!");
        }
        List<PlatformFile> platformFiles = listByIds(param.getFileIds());
        if (platformFiles == null && platformFiles.size() == 0) {
            throw new BusinessException("未找到文件!");
        }
        return removeByIds(platformFiles);
    }
    /**
     * å¹³å°æ–‡ä»¶èµ„源列表
     * @param vo
     * @param keyword
     * @return
     */
    public Object fileList(BaseConditionVO vo, String keyword) {
        List<PlatformFileListBo> platformFileListBos;
        if (AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())) {
            PageHelper.startPage(vo.getPageNo(), vo.getPageSize());
            platformFileListBos = baseMapper.fileLiet(keyword, null);
        } else {
            PageHelper.startPage(vo.getPageNo(), vo.getPageSize());
            platformFileListBos = baseMapper.fileLiet(keyword, SecurityUtils.getUserId());
        }
        return platformFileListBos;
    }
    /**
     * ä¸‹è½½æ–‡ä»¶
     * @param fileId
     * @return
     */
    public String downFile(Long fileId) {
        if(!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())){
            PlatformFileUser one = platformFileUserService.getOne(Wrappers.lambdaQuery(PlatformFileUser.class)
                    .eq(PlatformFileUser::getUserId, SecurityUtils.getUserId()).eq(PlatformFileUser::getFileId, fileId));
            if (one == null) {
                throw new BusinessException("抱歉,你无权下载 !");
            }
        }
        PlatformFile byId = getById(fileId);
        return byId.getFileUrl();
    }
//    public boolean  setPermission(){}
    /**
     * æƒé™æ ¡éªŒ
     */
    private void PermissionToCheck() {
        if (!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())) {
            //超管
            throw new BusinessException("非超管不能操作");
        }
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlatformFileUserService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.sandu.ximon.admin.service;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.dao.domain.PlatformFileUser;
import com.sandu.ximon.dao.mapper.PlatformFileUserMapper;
import org.springframework.stereotype.Service;
/**
 * @author LiuHaoNan
 * @date 2022/9/14
 */
@Service
public class PlatformFileUserService extends BaseServiceImpl<PlatformFileUserMapper, PlatformFileUser> {
}