无关风月
2025-02-08 bbc55de9bb0f6e5d3d8267c628d25780c19ebf36
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
package com.xinquan.system.controller;
 
 
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.PageDTO;
import com.xinquan.common.core.web.domain.BaseModel;
import com.xinquan.common.log.annotation.Log;
import com.xinquan.common.log.enums.BusinessType;
import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.system.api.domain.NoticeRecord;
import com.xinquan.system.domain.Version;
import com.xinquan.system.service.VersionService;
import com.xinquan.user.api.feign.RemoteAppUserService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * <p>
 * 版本表 前端控制器
 * </p>
 *
 * @author mitao
 * @since 2024-08-21
 */
@RestController
@RequestMapping("/system/version")
public class VersionController {
    @Autowired
    private VersionService versionService;
    @Autowired
    private TokenService tokenService;
    @Autowired
    private RemoteAppUserService remoteAppUserService;
    @GetMapping("/detailVersionApp")
    @ApiOperation(value = "获取最新安卓安装包", tags = "2.0新增 安卓版本管理")
    public R<Version> detailVersionApp() {
        List<Version> list = versionService.lambdaQuery().isNotNull(Version::getAndroidFile).orderByDesc(BaseModel::getCreateTime).list();
        if (!list.isEmpty()){
            return R.ok(list.get(0));
        }
        return R.ok(new Version());
    }
    @GetMapping("/detailVersionAppIos")
    @ApiOperation(value = "获取最新ios安装包", tags = "2.0新增 ios版本管理")
    public R<Version> detailVersionAppIos() {
        List<Version> list = versionService.lambdaQuery().isNotNull(Version::getIosFile).orderByDesc(BaseModel::getCreateTime).list();
        if (!list.isEmpty()){
            return R.ok(list.get(0));
        }
        return R.ok(new Version());
    }
    @GetMapping("/versionList")
    @ApiOperation(value = "版本管理列表-分页", tags = {"管理后台-版本管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"),
            @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer")
    })
    public R<PageDTO<Version>> versionList(
            @RequestParam(value = "pageCurr", defaultValue = "1") Integer pageCurr,
            @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
        Long userId = SecurityUtils.getUserId();
        if(userId ==null || userId == 0)return R.tokenError("登录失效");
        Page<Version> page = versionService.lambdaQuery()
                .orderByDesc(Version::getCreateTime)
                .page(new Page<>(pageCurr, pageSize));
        if (page.getRecords().isEmpty()){
            return R.ok(PageDTO.empty(page));
        }
        for (Version record : page.getRecords()) {
            record.setUid(record.getId() + "");
        }
        return R.ok(PageDTO.of(page, Version.class));
    }
    @PostMapping("/addVersion")
    @ApiOperation(value = "新增版本管理", tags = "管理后台-版本管理")
    @Log(title = "【版本管理】新增", businessType = BusinessType.INSERT)
 
    public R addVersion(@RequestBody Version homeBackgroundMusic) {
        homeBackgroundMusic.setCreateBy(SecurityUtils.getUsername());
        homeBackgroundMusic.setCreateTime(LocalDateTime.now());
        List<AppUser> data = remoteAppUserService.getAllUserList().getData();
        for (AppUser datum : data) {
            // 给用户添加一条系统消息
            NoticeRecord noticeRecord = new NoticeRecord();
            noticeRecord.setAppUserId(datum.getId());
            noticeRecord.setReadStatus(1);
            noticeRecord.setNoticeType(1);
            noticeRecord.setTitle("APP版本升级通知");
            noticeRecord.setContent("APP已更新至【"+homeBackgroundMusic.getVersionNo()+"】版本,请及时更新!");
            remoteAppUserService.addNoticeReplay(noticeRecord);
        }
        List<Version> list = versionService.list(new LambdaQueryWrapper<Version>()
                .eq(Version::getVersionNo, homeBackgroundMusic.getVersionNo()));
        if (!list.isEmpty())return R.fail("版本号不可重复");
        return R.ok(versionService.save(homeBackgroundMusic));
    }
    @GetMapping("/detailVersion")
    @ApiOperation(value = "查看详情版本管理", tags = "管理后台-版本管理")
    public R<Version> detailVersion(String uid) {
        return R.ok(versionService.getById(uid));
    }
    @PostMapping("/updateVersion")
    @ApiOperation(value = "修改版本管理", tags = "管理后台-版本管理")
    @Log(title = "【版本管理】修改", businessType = BusinessType.UPDATE)
 
    public R updateVersion(@RequestBody Version homeBackgroundMusic) {
        List<Version> list = versionService.list(new LambdaQueryWrapper<Version>()
                .eq(Version::getVersionNo, homeBackgroundMusic.getVersionNo())
                .ne(Version::getId,homeBackgroundMusic.getId())
        );
        if (!list.isEmpty())return R.fail("版本号不可重复");
        homeBackgroundMusic.setUpdateBy(SecurityUtils.getUsername());
        homeBackgroundMusic.setUpdateTime(LocalDateTime.now());
        return R.ok(versionService.updateById(homeBackgroundMusic));
    }
    @PostMapping("/deleteVersion")
    @ApiOperation(value = "批量删除", tags = "管理后台-版本管理")
    @Log(title = "【版本管理】批量删除", businessType = BusinessType.DELETE)
 
    public R deleteVersion(String ids) {
        return R.ok(versionService.removeBatchByIds(Arrays.asList(ids.split(",")).stream().map(Long::valueOf).collect(Collectors.toList())));
    }
}