From b0bc22e001eb3e93254ef6cf525d916ddc6542ff Mon Sep 17 00:00:00 2001 From: yaowanxin <3588231647@qq.com> Date: 星期二, 26 八月 2025 12:41:16 +0800 Subject: [PATCH] 人力资源模块2 --- main-business/src/main/java/com/ruoyi/business/other/service/impl/TempFileServiceImpl.java | 183 ++++++++++++++++++++ main-business/src/main/java/com/ruoyi/business/service/AccountFileService.java | 14 + main-business/src/main/java/com/ruoyi/business/service/impl/AccountFileServiceImpl.java | 25 ++ main-business/pom.xml | 5 main-business/src/main/java/com/ruoyi/business/other/mapper/TempFileMapper.java | 9 + main-business/src/main/java/com/ruoyi/business/other/service/TempFileService.java | 11 + main-business/src/main/java/com/ruoyi/business/other/pojo/CommonFile.java | 40 ++++ main-business/src/main/java/com/ruoyi/business/entity/AccountFile.java | 67 +++++++ main-business/src/main/java/com/ruoyi/business/mapper/AccountFileMapper.java | 15 + main-business/src/main/java/com/ruoyi/business/other/controller/TempFileController.java | 32 +++ main-business/src/main/java/com/ruoyi/business/other/pojo/TempFile.java | 20 ++ main-business/src/main/resources/mapper/AccountFileMapper.xml | 20 ++ main-business/src/main/java/com/ruoyi/business/other/mapper/CommonFileMapper.java | 9 + main-business/src/main/java/com/ruoyi/business/controller/AccountFileController.java | 63 +++++++ 14 files changed, 512 insertions(+), 1 deletions(-) diff --git a/main-business/pom.xml b/main-business/pom.xml index e4f1bce..11c92a4 100644 --- a/main-business/pom.xml +++ b/main-business/pom.xml @@ -28,7 +28,10 @@ <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> - + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> <!-- 鏍稿績妯″潡--> <dependency> diff --git a/main-business/src/main/java/com/ruoyi/business/controller/AccountFileController.java b/main-business/src/main/java/com/ruoyi/business/controller/AccountFileController.java new file mode 100644 index 0000000..7ef6f0c --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/controller/AccountFileController.java @@ -0,0 +1,63 @@ +package com.ruoyi.business.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.business.entity.AccountFile; +import com.ruoyi.business.service.AccountFileService; +import com.ruoyi.common.core.domain.AjaxResult; +import jakarta.annotation.Resource; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 璐㈠姟闄勪欢 + */ +@RestController +@RequestMapping("/account/accountFile") +public class AccountFileController { + + + @Resource + private AccountFileService accountFileService; + + + /** + * 鏂板 + * @param accountFile + * @return + */ + @PostMapping("/add") + public AjaxResult add(@RequestBody AccountFile accountFile) { + return AjaxResult.success(accountFileService.save(accountFile)); + } + + /** + * 鍒犻櫎 + * @param ids + * @return + */ + @DeleteMapping("/del") + public AjaxResult delAccountFile(@RequestBody List<Integer> ids) { + if(CollectionUtils.isEmpty(ids)){ + return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + } + //鍒犻櫎妫�楠岄檮浠� + return AjaxResult.success(accountFileService.removeBatchByIds(ids)); + } + + /** + *鍒嗛〉鏌ヨ + * @param page + * @param accountFile + * @return + */ + @GetMapping("/listPage") + public AjaxResult accountFileListPage(Page page, AccountFile accountFile) { + return AjaxResult.success(accountFileService.accountFileListPage(page, accountFile)); + } + + + + +} diff --git a/main-business/src/main/java/com/ruoyi/business/entity/AccountFile.java b/main-business/src/main/java/com/ruoyi/business/entity/AccountFile.java new file mode 100644 index 0000000..bfa1ff0 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/entity/AccountFile.java @@ -0,0 +1,67 @@ +package com.ruoyi.business.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 璐㈠姟绠$悊--闄勪欢 + * account_file + */ +@TableName(value = "account_file") +@Data +public class AccountFile implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 搴忓彿 + */ + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "鏂囦欢鍚嶇О") + private String name; + + @ApiModelProperty(value = "鏂囦欢璺緞") + private String url; + + @ApiModelProperty(value = "鏂囦欢澶у皬") + private int fileSize; + + @ApiModelProperty(value = "璐㈠姟ID") + @NotBlank(message = "璐㈠姟id涓嶈兘涓虹┖!") + private Long accountId; + + /** + * 绫诲瀷(鏀跺叆/鏀嚭) + */ + @ApiModelProperty(value = "绫诲瀷(鏀跺叆/鏀嚭)") + private String accountType; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "淇敼鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "淇敼鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "绉熸埛ID") + @TableField(fill = FieldFill.INSERT) + private Long tenantId; + + +} diff --git a/main-business/src/main/java/com/ruoyi/business/mapper/AccountFileMapper.java b/main-business/src/main/java/com/ruoyi/business/mapper/AccountFileMapper.java new file mode 100644 index 0000000..6d76c76 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/mapper/AccountFileMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import com.ruoyi.business.entity.AccountFile; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface AccountFileMapper extends BaseMapper<AccountFile> { + + IPage<AccountFile> accountFileListPage(Page page, @Param("accountFile") AccountFile accountFile); +} diff --git a/main-business/src/main/java/com/ruoyi/business/other/controller/TempFileController.java b/main-business/src/main/java/com/ruoyi/business/other/controller/TempFileController.java new file mode 100644 index 0000000..34ada8f --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/controller/TempFileController.java @@ -0,0 +1,32 @@ +package com.ruoyi.business.other.controller; + + + +import com.ruoyi.business.other.service.TempFileService; +import com.ruoyi.common.core.domain.AjaxResult; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + + +@RestController +@RequestMapping("/file") +@AllArgsConstructor +public class TempFileController { + + private TempFileService tempFileService; + + + @PostMapping("/upload") + public AjaxResult uploadFile(MultipartFile file, Integer type) { + try { + return AjaxResult.success(tempFileService.uploadFile(file, type)); + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + +} diff --git a/main-business/src/main/java/com/ruoyi/business/other/mapper/CommonFileMapper.java b/main-business/src/main/java/com/ruoyi/business/other/mapper/CommonFileMapper.java new file mode 100644 index 0000000..55a79a4 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/mapper/CommonFileMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.business.other.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.business.other.pojo.CommonFile; + + +public interface CommonFileMapper extends BaseMapper<CommonFile> { +} diff --git a/main-business/src/main/java/com/ruoyi/business/other/mapper/TempFileMapper.java b/main-business/src/main/java/com/ruoyi/business/other/mapper/TempFileMapper.java new file mode 100644 index 0000000..7cb7714 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/mapper/TempFileMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.business.other.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.business.other.pojo.TempFile; + + +public interface TempFileMapper extends BaseMapper<TempFile> { +} diff --git a/main-business/src/main/java/com/ruoyi/business/other/pojo/CommonFile.java b/main-business/src/main/java/com/ruoyi/business/other/pojo/CommonFile.java new file mode 100644 index 0000000..10081a3 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/pojo/CommonFile.java @@ -0,0 +1,40 @@ +package com.ruoyi.business.other.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 閫氱敤闄勪欢涓婁紶琛� + */ + +@Data +@TableName("common_file") +public class CommonFile { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + private Long id; + + /** 鍏宠仈琛ㄤ富閿瓺 */ + private Long commonId; + + /** 鏂囦欢鍚嶇О */ + private String name; + + /** 鏂囦欢璺緞 */ + private String url; + + /** 鍏宠仈琛� */ + private Integer type; + + /** 鍒涘缓鏃堕棿 */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 鏇存柊鏃堕棿 */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/main-business/src/main/java/com/ruoyi/business/other/pojo/TempFile.java b/main-business/src/main/java/com/ruoyi/business/other/pojo/TempFile.java new file mode 100644 index 0000000..2368d95 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/pojo/TempFile.java @@ -0,0 +1,20 @@ +package com.ruoyi.business.other.pojo; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("temp_file") +public class TempFile { + private static final long serialVersionUID = 1L; + + @TableId + private String tempId; // 涓存椂鏂囦欢ID锛圲UID锛� + private String originalName; // 鍘熷鏂囦欢鍚� + private String tempPath; // 涓存椂瀛樺偍璺緞 + private LocalDateTime expireTime; // 杩囨湡鏃堕棿 + private Integer type; // 鍏宠仈琛ㄧ被鍨� +} diff --git a/main-business/src/main/java/com/ruoyi/business/other/service/TempFileService.java b/main-business/src/main/java/com/ruoyi/business/other/service/TempFileService.java new file mode 100644 index 0000000..27bd3f0 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/service/TempFileService.java @@ -0,0 +1,11 @@ +package com.ruoyi.business.other.service; + + +import com.ruoyi.business.other.pojo.TempFile; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +public interface TempFileService { + TempFile uploadFile(MultipartFile file, Integer type) throws IOException; +} diff --git a/main-business/src/main/java/com/ruoyi/business/other/service/impl/TempFileServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/other/service/impl/TempFileServiceImpl.java new file mode 100644 index 0000000..b024478 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/other/service/impl/TempFileServiceImpl.java @@ -0,0 +1,183 @@ +package com.ruoyi.business.other.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.business.other.mapper.CommonFileMapper; +import com.ruoyi.business.other.mapper.TempFileMapper; +import com.ruoyi.business.other.pojo.CommonFile; +import com.ruoyi.business.other.pojo.TempFile; +import com.ruoyi.business.other.service.TempFileService; +import com.ruoyi.common.utils.StringUtils; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.UUID; + +@Service +@Slf4j +public class TempFileServiceImpl extends ServiceImpl<TempFileMapper, TempFile> implements TempFileService { + + @Autowired + private TempFileMapper tempFileMapper; + + @Autowired + private CommonFileMapper commonFileMapper; + + @Value("${file.upload-dir}") + private String uploadDir; + + @Value("${file.temp-dir}") + private String tempDir; + + // 涓婁紶鍒颁复鏃剁洰褰� + @Override + public TempFile uploadFile(MultipartFile file,Integer type) throws IOException { + // 1. 鐢熸垚涓存椂鏂囦欢ID鍜岃矾寰� + String tempId = UUID.randomUUID().toString(); + String originalFilename = file.getOriginalFilename(); + if(originalFilename == null) throw new IOException("鏂囦欢鍚嶄笉鑳戒负绌�"); +// URLEncoder urlEncoder = new URLEncoder(); +// String encodedFilename = urlEncoder.encode(originalFilename, StandardCharsets.UTF_8); +// encodedFilename = encodedFilename.replaceAll("%2E","."); +// Path tempFilePath = Paths.get(tempDir, tempId + "_" + encodedFilename); + + Path tempFilePath = Paths.get(tempDir, tempId + "_" + file.getOriginalFilename()); + + // 2. 纭繚鐩綍瀛樺湪 + Path parentDir = tempFilePath.getParent(); + if (parentDir != null && !Files.exists(parentDir)) { + try { + // 閫掑綊鍒涘缓鐩綍骞舵鏌ョ粨鏋� + Files.createDirectories(parentDir); + } catch (IOException e) { + log.error("鍒涘缓鐩綍澶辫触: {}", parentDir, e); + throw new IOException("鏃犳硶鍒涘缓鐩綍: " + parentDir, e); + } + } +// if (parentDir != null) { +// Files.createDirectories(parentDir); // 閫掑綊鍒涘缓鐩綍 +// } + + // 3. 淇濆瓨鏂囦欢鍒颁复鏃剁洰褰� + file.transferTo(tempFilePath.toFile()); + + // 4. 淇濆瓨涓存椂鏂囦欢璁板綍 + TempFile tempFileRecord = new TempFile(); + tempFileRecord.setTempId(tempId); + tempFileRecord.setOriginalName(file.getOriginalFilename()); + tempFileRecord.setTempPath(tempFilePath.toString()); + tempFileRecord.setExpireTime(LocalDateTime.now().plusHours(2)); // 2灏忔椂鍚庤繃鏈� + tempFileRecord.setType(type); + tempFileMapper.insert(tempFileRecord); + + return tempFileRecord; + } + + /** + * 灏嗕复鏃舵枃浠惰縼绉诲埌姝e紡鐩綍 + * + * @param businessId 涓氬姟ID锛堥攢鍞彴璐D锛� + * @param tempFileIds 涓存椂鏂囦欢ID鍒楄〃 + * @param fileType 鏂囦欢绫诲瀷(鏉ヨ嚜FileNameType) + * @throws IOException 鏂囦欢鎿嶄綔寮傚父 + */ + public void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds, Integer fileType) throws IOException { + if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(tempFileIds)) { + return; + } + + // 鏋勫缓姝e紡鐩綍璺緞锛堟寜涓氬姟绫诲瀷鍜屾棩鏈熷垎缁勶級 + String formalDir = uploadDir + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE); + + Path formalDirPath = Paths.get(formalDir); + + // 纭繚姝e紡鐩綍瀛樺湪锛堥�掑綊鍒涘缓锛� + if (!Files.exists(formalDirPath)) { + Files.createDirectories(formalDirPath); + } + + for (String tempFileId : tempFileIds) { + // 鏌ヨ涓存椂鏂囦欢璁板綍 + TempFile tempFile = tempFileMapper.selectById(tempFileId); + if (tempFile == null) { + log.warn("涓存椂鏂囦欢涓嶅瓨鍦紝璺宠繃澶勭悊: {}", tempFileId); + continue; + } + + // 鏋勫缓姝e紡鏂囦欢鍚嶏紙鍖呭惈涓氬姟ID鍜屾椂闂存埑锛岄伩鍏嶅啿绐侊級 + String originalFilename = tempFile.getOriginalName(); + String fileExtension = FilenameUtils.getExtension(originalFilename); + String formalFilename = businessId + "_" + + System.currentTimeMillis() + "_" + + UUID.randomUUID().toString().substring(0, 8) + + (StringUtils.hasText(fileExtension) ? "." + fileExtension : ""); + + Path formalFilePath = formalDirPath.resolve(formalFilename); + + try { + // 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級 + Files.move( + Paths.get(tempFile.getTempPath()), + formalFilePath, + StandardCopyOption.REPLACE_EXISTING, + StandardCopyOption.ATOMIC_MOVE + ); + log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath); + + // 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛� + CommonFile fileRecord = new CommonFile(); + fileRecord.setCommonId(businessId); + fileRecord.setName(originalFilename); + fileRecord.setUrl(formalFilePath.toString()); + fileRecord.setCreateTime(LocalDateTime.now()); + fileRecord.setType(fileType); + commonFileMapper.insert(fileRecord); + + // 鍒犻櫎涓存椂鏂囦欢璁板綍 + tempFileMapper.deleteById(tempFile); + + log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath); + } catch (IOException e) { + log.error("鏂囦欢杩佺Щ澶辫触: {}", tempFile.getTempPath(), e); + // 鍙�夋嫨鍥炴粴浜嬪姟鎴栬褰曞け璐ユ枃浠� + throw new IOException("鏂囦欢杩佺Щ寮傚父", e); + } + } + } + + @Scheduled(cron = "0 0 3 * * ?") // 姣忓ぉ鍑屾櫒3鐐规墽琛� + public void cleanupExpiredTempFiles() { + LambdaQueryWrapper<TempFile> wrapper = new LambdaQueryWrapper<>(); + wrapper.lt(TempFile::getExpireTime, LocalDateTime.now()); // expireTime < 褰撳墠鏃堕棿 + + List<TempFile> expiredFiles = tempFileMapper.selectList(wrapper); + for (TempFile file : expiredFiles) { + try { + // 鍒犻櫎鐗╃悊鏂囦欢 + Files.deleteIfExists(Paths.get(file.getTempPath())); + // 鍒犻櫎鏁版嵁搴撹褰� + tempFileMapper.deleteById(file); + log.info("宸叉竻鐞嗚繃鏈熶复鏃舵枃浠�: {}", file.getTempPath()); + } catch (IOException e) { + log.error("鍒犻櫎鏂囦欢澶辫触: {}", file.getTempPath(), e); + // 鍙�夋嫨璁板綍澶辫触鏃ュ織鎴栭噸璇� + } + } + log.info("杩囨湡涓存椂鏂囦欢娓呯悊瀹屾垚锛屽叡娓呯悊 {} 涓枃浠�", expiredFiles.size()); + } +} diff --git a/main-business/src/main/java/com/ruoyi/business/service/AccountFileService.java b/main-business/src/main/java/com/ruoyi/business/service/AccountFileService.java new file mode 100644 index 0000000..d158ee2 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/service/AccountFileService.java @@ -0,0 +1,14 @@ +package com.ruoyi.business.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.business.entity.AccountFile; + + +public interface AccountFileService extends IService<AccountFile> { + + + IPage<AccountFile> accountFileListPage(Page page, AccountFile accountFile); +} diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/AccountFileServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/AccountFileServiceImpl.java new file mode 100644 index 0000000..eb575a1 --- /dev/null +++ b/main-business/src/main/java/com/ruoyi/business/service/impl/AccountFileServiceImpl.java @@ -0,0 +1,25 @@ +package com.ruoyi.business.service.impl; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.ruoyi.business.entity.AccountFile; +import com.ruoyi.business.mapper.AccountFileMapper; +import com.ruoyi.business.service.AccountFileService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class AccountFileServiceImpl extends ServiceImpl<AccountFileMapper, AccountFile> implements AccountFileService { + + private AccountFileMapper accountFileMapper; + + + @Override + public IPage<AccountFile> accountFileListPage(Page page, AccountFile accountFile) { + return accountFileMapper.accountFileListPage(page,accountFile); + } +} diff --git a/main-business/src/main/resources/mapper/AccountFileMapper.xml b/main-business/src/main/resources/mapper/AccountFileMapper.xml new file mode 100644 index 0000000..ddeb3ad --- /dev/null +++ b/main-business/src/main/resources/mapper/AccountFileMapper.xml @@ -0,0 +1,20 @@ +<?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.ruoyi.business.mapper.AccountFileMapper"> + <select id="accountFileListPage" resultType="com.ruoyi.business.entity.AccountFile"> + SELECT + * + FROM account_file + where + 1=1 + <if test="accountFile.accountId != null and accountFile.accountId != ''"> + AND account_id = #{accountFile.accountId} + </if> + <if test="accountFile.name != null and accountFile.name != '' "> + AND name = #{accountFile.name} + </if> + <if test="accountFile.accountType != null and accountFile.accountType != '' "> + AND account_type = #{accountFile.accountType} + </if> + </select> +</mapper> -- Gitblit v1.9.3