goupan
2024-04-03 5506e9a45e717ffcb67ec313b5a4e8206d9b3a39
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
package cn.stylefeng.roses.kernel.migration.web.controller;
 
import cn.stylefeng.roses.kernel.migration.api.pojo.MigrationAggregationPOJO;
import cn.stylefeng.roses.kernel.migration.web.pojo.MigrationRequest;
import cn.stylefeng.roses.kernel.migration.web.service.MigrationService;
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
 
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
 
/**
 * 数据迁移控制器
 *
 * @author majianguo
 * @date 2021/7/6 17:35
 */
@RestController
@ApiResource(name = "数据迁移控制器", resBizType = ResBizTypeEnum.SYSTEM)
public class MigrationController {
 
    @Resource
    private MigrationService migrationService;
 
    /**
     * 获取所有可备份数据列表
     *
     * @return {@link ResponseData}
     * @author majianguo
     * @date 2021/7/6 17:37
     **/
    @GetResource(name = "获取所有可备份数据列表", path = "/dataMigration/getAllMigrationList")
    public ResponseData<List<MigrationRequest>> getAllMigrationList() {
        List<MigrationRequest> migrationRequestList = migrationService.getAllMigrationList();
        return new SuccessResponseData<>(migrationRequestList);
    }
 
    /**
     * 备份指定数据列表
     *
     * @return {@link cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData}
     * @author majianguo
     * @date 2021/7/7 11:11
     **/
    @GetResource(name = "备份指定数据列表", path = "/dataMigration/migrationSelectData")
    public ResponseData<String> migrationSelectData(@Validated(MigrationAggregationPOJO.export.class) MigrationAggregationPOJO migrationAggregationPOJO) {
        List<String> res = new ArrayList<>();
        for (String s : migrationAggregationPOJO.getAppAndModuleNameList()) {
            try {
                String decode = URLDecoder.decode(s, "UTF-8");
                res.add(decode);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        migrationAggregationPOJO.setAppAndModuleNameList(res);
        String migrationSelectDataStr = migrationService.migrationSelectData(migrationAggregationPOJO);
        return new SuccessResponseData<>(migrationSelectDataStr);
    }
 
    /**
     * 恢复备份数据
     *
     * @return {@link ResponseData}
     * @author majianguo
     * @date 2021/7/7 11:11
     **/
    @PostResource(name = "恢复备份数据", path = "/dataMigration/restoreData")
    public ResponseData<?> restoreData(@RequestPart("file") MultipartFile file, String type) {
        migrationService.restoreData(file, type);
        return new SuccessResponseData<>();
    }
}