Merge remote-tracking branch 'origin/dev/3.1_release_merge' into dev-ltx

This commit is contained in:
litianxiang
2025-10-16 09:32:38 +08:00
4 changed files with 57 additions and 7 deletions

View File

@@ -259,7 +259,7 @@ public class MyTaskScheduler {
SendEmailUtil.sendExcelEmail("kimwong@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName);
// SendEmailUtil.sendExcelEmail("ningning@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName);
SendEmailUtil.sendExcelEmail("johnnyho@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName);
SendEmailUtil.sendExcelEmail("ringolau@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName);
// SendEmailUtil.sendExcelEmail("ringolau@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName);
SendEmailUtil.sendExcelEmail("chelseayu@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName);
}
} catch (IOException e) {
@@ -272,7 +272,7 @@ public class MyTaskScheduler {
SendEmailUtil.sendNoExcelEmail("kimwong@code-create.com.hk", null);
// SendEmailUtil.sendNoExcelEmail("ningning@code-create.com.hk", null);
SendEmailUtil.sendNoExcelEmail("johnnyho@code-create.com.hk", null);
SendEmailUtil.sendNoExcelEmail("ringolau@code-create.com.hk", null);
// SendEmailUtil.sendNoExcelEmail("ringolau@code-create.com.hk", null);
SendEmailUtil.sendNoExcelEmail("chelseayu@code-create.com.hk", null);
}
}

View File

@@ -9,7 +9,7 @@ import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface CollectionSortMapper extends CommonMapper<CollectionSort> {
@Update("UPDATE collection_sort SET sort = sort + 1 " +
/*@Update("UPDATE collection_sort SET sort = sort + 1 " +
"WHERE parent_id = #{parentId} " +
"AND relation_type != 'Design' " +
"AND sort > #{originalSort}")
@@ -17,6 +17,15 @@ public interface CollectionSortMapper extends CommonMapper<CollectionSort> {
@Param("parentId") Long parentId,
@Param("relationType") String relationType,
@Param("originalSort") int originalSort
);*/
@Update("UPDATE collection_sort SET sort = sort + 1 " +
"WHERE parent_id = #{parentId} " +
"AND relation_type != 'Design' " +
"AND sort > #{originalSort} " +
"ORDER BY sort DESC") // 关键:按排序号倒序更新
void increaseGenerateSortAbove(
@Param("parentId") Long parentId,
@Param("originalSort") int originalSort
);
@Select("SELECT * FROM collection_sort WHERE parent_id IN (SELECT id FROM collection_sort WHERE relation_id = #{relationId})")

View File

@@ -27,6 +27,7 @@ import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -50,8 +51,9 @@ public class ClassificationServiceImpl implements ClassificationService {
@Override
public Boolean saveOrUpdate(ClassificationDTO classificationDTO) {
//校验
classificationDTOCheck(classificationDTO);
AuthPrincipalVo userHolder = UserContext.getUserHolder();
classificationDTO.setUserId(userHolder.getId());
classificationDTOCheck(classificationDTO);
Classification classification = CopyUtil.copyObject(classificationDTO, Classification.class);
if (null == classificationDTO.getId()) {
// 新增
@@ -82,7 +84,10 @@ public class ClassificationServiceImpl implements ClassificationService {
@Override
public Boolean delete(ClassificationDTO classificationDTO) {
QueryWrapper<ClassificationRelLibrary> qw = new QueryWrapper<>();
qw.lambda().eq(ClassificationRelLibrary::getUserId, UserContext.getUserHolder().getId());
if (Objects.nonNull(classificationDTO.getClassificationIdList()) && !classificationDTO.getClassificationIdList().isEmpty()){
qw.lambda().in(ClassificationRelLibrary::getClassificationId, classificationDTO.getClassificationIdList());
}
List<ClassificationRelLibrary> classificationRelLibraryList = classificationRelLibraryMapper.selectList(qw);
if (0 == classificationDTO.getDeleteConfirm()) {
// 校验删除的分类是否有关联的library数据
@@ -311,6 +316,7 @@ public class ClassificationServiceImpl implements ClassificationService {
throw new BusinessException("classificationName.cannot.be.empty");
}
QueryWrapper<Classification> qw = new QueryWrapper<>();
qw.lambda().eq(Classification::getUserId, classificationDTO.getUserId());
qw.lambda().ne(null != classificationDTO.getId(), Classification::getId, classificationDTO.getId());
qw.lambda().eq(Classification::getType, classificationDTO.getType());
if (null == classificationDTO.getParentId()) {

View File

@@ -6,6 +6,7 @@ import com.ai.da.mapper.primary.entity.CollectionSort;
import com.ai.da.model.dto.CollectionSortDTO;
import com.ai.da.model.enums.CollectionType;
import com.ai.da.service.CollectionSortService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
@@ -163,7 +164,8 @@ public class CollectionSortServiceImpl extends ServiceImpl<CollectionSortMapper,
deleteByParentId(userLikeSortId);
// 3. 批量更新排序号使用自定义Mapper方法
baseMapper.decrementSortAfterDelete(projectId, parentId, deletedSort);
// baseMapper.decrementSortAfterDelete(projectId, parentId, deletedSort);
resort(projectId, parentId);
}
private void deleteByParentId(Long parentId) {
@@ -225,7 +227,8 @@ public class CollectionSortServiceImpl extends ServiceImpl<CollectionSortMapper,
}
child.setSort(collectionSort.getSort());
// 原来排序的大于等于userLikeSortId的排序的都要1
baseMapper.increaseGenerateSortAbove(parentId, relationType, collectionSort.getSort() - 1);
// baseMapper.increaseGenerateSortAbove(parentId, /*relationType,*/ collectionSort.getSort() - 1);
resort(collectionSort.getProjectId(), parentId);
// 当前的生成结果则填入userLikeSortId的排序位置
child.setUpdateTime(LocalDateTime.now());
baseMapper.updateById(child);
@@ -262,4 +265,36 @@ public class CollectionSortServiceImpl extends ServiceImpl<CollectionSortMapper,
return "";
}
}
@Transactional(rollbackFor = Exception.class)
public void resort(Long projectId, Long parentId) {
// 2. 查询同组数据,按原排序升序
List<CollectionSort> list = baseMapper.selectList(
new LambdaQueryWrapper<CollectionSort>()
.eq(CollectionSort::getProjectId, projectId)
.eq(CollectionSort::getParentId, parentId)
.orderByAsc(CollectionSort::getSort)
);
// 3. 重新编号 sort从 1 开始
for (int i = 0; i < list.size(); i++) {
list.get(i).setSort(i + 1);
}
// 4. 批量更新
if (!list.isEmpty()) {
updateBatchById(list);
}
}
/**
* 批量更新(如果你使用 MyBatis-Plus可以继承 ServiceImpl 来用内置的 updateBatchById
*/
@Transactional(rollbackFor = Exception.class)
public void updateBatchById(List<CollectionSort> list) {
for (CollectionSort item : list) {
baseMapper.updateById(item);
}
}
}