liujie
2026-03-19 77d130ca8b5925ee1772c24b61c13aeedbef69bc
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
package com.xiaopeng.operation.service.impl;
 
 
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.operation.mapper.XpBannerMapper;
import com.xiaopeng.api.model.operation.XpBanner;
import com.xiaopeng.operation.query.BannerPageListQuery;
import com.xiaopeng.operation.query.WhitelistPageListQuery;
import com.xiaopeng.operation.service.XpBannerService;
import com.xiaopeng.operation.vo.XpBannerListVo;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * <p>
 * banner管理 服务实现类
 * </p>
 *
 * @author liu
 * @since 2026-02-03
 */
@Service
public class XpBannerServiceImpl extends ServiceImpl<XpBannerMapper, XpBanner> implements XpBannerService {
 
    @Resource
    private AliOssService aliOssService;
 
    @Override
    public List<XpBannerListVo> getXpBannerList() {
        LambdaQueryWrapper<XpBanner> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(XpBanner::getBannerStatus, 1);
        // 当前时间在开始和结束时间范围内
        List<XpBanner> list = list(wrapper.last(" and now() between start_time and end_time order by sort desc"));
 
        // 组装数据
        if (list != null && !list.isEmpty()) {
            return list.stream().map(item -> {
                XpBannerListVo vo = new XpBannerListVo();
                vo.setId(item.getId());
                vo.setJumpType(item.getJumpType());
                vo.setJumpUrl(item.getJumpUrl());
                JSONObject jsonObject = JSON.parseArray(item.getBannerPictures()).getJSONObject(0);
                String downloadUrl = null;
                try {
                    // 1
                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                } catch (UnsupportedEncodingException e) {
                    throw new RuntimeException(e);
                }
                jsonObject.put("url", downloadUrl);
                vo.setImageUrl(jsonObject.toJSONString());
                return vo;
            }).collect(Collectors.toList());
        }
        return Collections.emptyList();
    }
 
    @Override
    public PageInfo<XpBanner> pageList(BannerPageListQuery query) {
        PageInfo<XpBanner> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<XpBanner> list = this.baseMapper.pageList(pageInfo, query);
        for (XpBanner xpBanner : list) {
            JSONObject jsonObject = JSON.parseArray(xpBanner.getBannerPictures()).getJSONObject(0);
            String downloadUrl = null;
            try {
                // 1
                downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
            jsonObject.put("url", downloadUrl);
            xpBanner.setBannerPictures(jsonObject.toJSONString());
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}