xiangpei
2025-05-22 e868be6c913a6a99e1491c088d052a5f58e252f9
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package cn.lili.modules.lmk.service.impl;
 
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.Activity;
import cn.lili.modules.lmk.domain.entity.CustomerBlack;
import cn.lili.modules.lmk.domain.entity.CustomerTagRef;
import cn.lili.modules.lmk.domain.form.ActivityForm;
import cn.lili.modules.lmk.domain.form.CustomerTagRefForm;
import cn.lili.modules.lmk.domain.query.ActivityQuery;
import cn.lili.modules.lmk.domain.vo.ActivityVO;
import cn.lili.modules.lmk.domain.vo.CustomerBlackVO;
import cn.lili.modules.lmk.mapper.ActivityMapper;
import cn.lili.modules.lmk.mapper.CustomerBlackMapper;
import cn.lili.modules.lmk.service.ActivityService;
import cn.lili.modules.lmk.service.LmkFileService;
import cn.lili.utils.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.micrometer.core.instrument.util.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartFile;
 
import java.util.List;
import java.util.stream.Collectors;
 
@Service
@RequiredArgsConstructor
public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements ActivityService {
 
    private final ActivityMapper activityMapper;
 
    private final LmkFileService lmkFileService;
 
    @Override
    public Result add(ActivityForm form) {
        Activity entity = ActivityForm.getEntityByForm(form, null);
        //默认新增活动为
        entity.setStatus("未开始");
        //默认不为推荐
        entity.setRecommend(false);
 
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
 
    @Override
    public Result update(ActivityForm form) {
 
        Activity entity = baseMapper.selectById(form.getId());
        //判断修改前的封面类型是否为文本,文本不需要删除文件
        if (!"文字".equals(entity.getCoverType())){
            //判断路径是否改变
            if (!form.getCover().equals(entity.getCover())) {
                //删除云服务器中旧的图片
                lmkFileService.deleteObject(entity.getCover());
            }
 
        }
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
 
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
 
    @Override
    public Result remove(List<String> ids) {
        baseMapper.deleteBatchIds(ids);
        return Result.ok("删除成功");
    }
 
    @Override
    public Result removeById(String id) {
        //删除,同时判断该对象的封面是否存在 ,存在则在云服务器删除
        ActivityVO vo = baseMapper.getById(id);
        if (StringUtils.isNotEmpty(vo.getCover())){
            lmkFileService.deleteObject(vo.getCover());
        }
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
 
    @Override
    public Result page(ActivityQuery query) {
        IPage<ActivityVO> page = PageUtil.getPage(query, ActivityVO.class);
 
        baseMapper.getPage(page, query);
        for (ActivityVO vo : page.getRecords()) {
            if (!"文字".equals(vo.getCoverType())){
                String url = lmkFileService.getPreviewUrl(vo.getCover());
                vo.setUrl(url);
            }
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
 
    @Override
    public Result detail(String id) {
        ActivityVO vo = baseMapper.getById(id);
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
    }
 
    @Override
    public Result all() {
        List<Activity> entities = baseMapper.selectList(null);
        List<ActivityVO> vos = entities.stream()
                .map(entity -> ActivityVO.getVoByEntity(entity, null))
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
 
    @Override
    public Result uploadObject(MultipartFile file) {
        return lmkFileService.uploadObject(file);
    }
 
    @Override
    public String getPreviewUrl(String fileKey) {
        return lmkFileService.getPreviewUrl(fileKey);
    }
 
    @Override
    public Result deleteObject(String fileKey) {
        return lmkFileService.deleteObject(fileKey);
    }
 
    @Override
    public Result activityChangeStatus(ActivityForm form) {
        Activity entity = baseMapper.selectById(form.getId());
        entity.setStatus(form.getStatus());
        baseMapper.updateById(entity);
        return Result.ok();
    }
 
    @Override
    public Result activityChangeRecommend(ActivityForm form) {
        Activity entity = baseMapper.selectById(form.getId());
        entity.setRecommend(form.getRecommend());
        baseMapper.updateById(entity);
        return Result.ok();
    }
}