puzhibing
2026-03-24 b48cbdf78fda3bbc66dc74162b08ec535c19d9ec
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
package com.xiaopeng.operation.service.impl;
 
 
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
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.Objects;
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());
                JSONArray jsonArray = JSONArray.parseArray(item.getBannerPictures());
                for (int i = 0; i < jsonArray.size(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    if (Objects.isNull(jsonObject)) {
                        continue;
                    }
                    String downloadUrl = null;
                    try {
                        downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                    } catch (UnsupportedEncodingException e) {
                        log.error("获取图片下载地址失败", e);
                    }
                    jsonObject.put("url", downloadUrl);
                }
 
                vo.setImageUrl(JSONArray.toJSONString(jsonArray));
                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) {
 
            JSONArray jsonArray = JSONArray.parse(xpBanner.getBannerPictures());
            for (int i = 0; i < jsonArray.size(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                if (Objects.isNull(jsonObject)) {
                    continue;
                }
                String downloadUrl = null;
                try {
                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                } catch (UnsupportedEncodingException e) {
                    log.error("获取图片下载地址失败", e);
                }
                jsonObject.put("url", downloadUrl);
            }
 
            xpBanner.setBannerPictures(JSONArray.toJSONString(jsonArray));
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}