zepengdev
2025-07-21 30943f4a43f9b3b997033ce13939ce380b3d8164
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.oying.modules.pc.category.service.impl;
 
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.oying.exception.EntityExistException;
import com.oying.exception.EntityNotFoundException;
import com.oying.modules.pc.category.converter.PlatformCategoryAssembler;
import com.oying.modules.pc.category.domain.PlatformCategory;
import com.oying.modules.pc.category.domain.dto.PlatformCategoryCreateRequest;
import com.oying.modules.pc.category.domain.dto.PlatformCategoryQueryCriteria;
import com.oying.modules.pc.category.domain.dto.PlatformCategoryUpdateDto;
import com.oying.modules.pc.category.mapper.PlatformCategoryMapper;
import com.oying.modules.pc.category.service.PlatformCategoryService;
import com.oying.modules.pc.common.ValueUpdate;
import com.oying.modules.pc.store.domain.StoreQualification;
import com.oying.modules.pc.utils.ImageUtils;
import com.oying.service.BucketStorageService;
import com.oying.utils.PageResult;
import com.oying.utils.PageUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
 
/**
 * 平台类目服务实现
 *
 * @author lzp
 * @date 2025-04-30
 **/
@Service
@RequiredArgsConstructor
public class PlatformCategoryServiceImpl extends ServiceImpl<PlatformCategoryMapper, PlatformCategory> implements PlatformCategoryService {
 
    private final PlatformCategoryMapper platformCategoryMapper;
    private final BucketStorageService bucketStorageService;
 
    @Override
    public PageResult<PlatformCategory> queryAll(PlatformCategoryQueryCriteria criteria, Page<Object> page) {
        return PageUtil.toPage(platformCategoryMapper.findAll(criteria, page));
    }
 
    @Override
    public List<PlatformCategory> queryAll(PlatformCategoryQueryCriteria criteria) {
        return platformCategoryMapper.findAll(criteria);
    }
 
    @Override
    public List<PlatformCategory> queryBatchIds(List<Long> ids) {
        LambdaQueryWrapper<PlatformCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.in(PlatformCategory::getCategoryId, ids);
        return platformCategoryMapper.selectList(wrapper);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(PlatformCategoryCreateRequest request) {
        platformCategoryMapper.insert(PlatformCategoryAssembler.to(request));
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(PlatformCategoryUpdateDto updateDto) {
 
        Long categoryId = updateDto.getCategoryId();
        PlatformCategory existingPlatformCategory = this.getById(categoryId);
        if (ObjUtil.isEmpty(existingPlatformCategory)) {
            throw new EntityNotFoundException(PlatformCategory.class, "categoryId", Optional.ofNullable(categoryId).map(Object::toString).orElse("null"));
        }
 
        // 新的类目数据
        PlatformCategory newPlatformCategory = PlatformCategoryAssembler.to(updateDto);
        // 记录图片值的变更
        ValueUpdate<Long> iconValueUpdate = new ValueUpdate<>(newPlatformCategory.getIconId(), existingPlatformCategory.getIconId());
        // 填充新的数据
        existingPlatformCategory.copy(newPlatformCategory);
        platformCategoryMapper.updateById(existingPlatformCategory);
        // 删除旧图片原纪录
        if (iconValueUpdate.isChangeAndOldValueNotEmpty()) {
            bucketStorageService.deleteAll(ListUtil.toList(iconValueUpdate.getOldValue()));
        }
 
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Long> ids) {
        List<PlatformCategory> existingPlatformCategories = this.queryBatchIds(ids);
        if (CollectionUtil.isEmpty(existingPlatformCategories)) {
            throw new EntityNotFoundException(PlatformCategory.class, "platformCategoryIds", ids.toString());
        }
        platformCategoryMapper.deleteBatchIds(ids);
        List<Long> storageIds = existingPlatformCategories.stream().map(PlatformCategory::getIconId).collect(Collectors.toList());
        // 删除旧图片原记录
        if (CollectionUtil.isNotEmpty(storageIds)) {
            bucketStorageService.deleteAll(storageIds);
        }
    }
}