郑永安
2023-06-19 59e91a4e9ddaf23cebb12993c774aa899ab22d16
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
package com.gk.firework.Controller;
 
import com.alibaba.fastjson.JSONObject;
import com.gk.firework.Controller.Base.BaseController;
import com.gk.firework.Domain.AuthorizationInfo;
import com.gk.firework.Domain.Enterprise;
import com.gk.firework.Domain.Enum.ErrorCode;
import com.gk.firework.Domain.UserInfo;
import com.gk.firework.Domain.Utils.Msg;
import com.gk.firework.Domain.Utils.StringUtils;
import com.gk.firework.Service.AuthorizationService;
import com.gk.firework.Service.EnterpriseService;
import com.gk.firework.Service.UserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.Date;
import java.util.List;
 
/**
 * @author : jingjy
 * @date : 2021/7/2 14:31
 */
@Api("授权码")
@RequestMapping("auth")
@RestController
public class AuthorizationController extends BaseController {
    @Autowired
    private AuthorizationService authorizationService;
    @Autowired
    private EnterpriseService enterpriseService;
    @Autowired
    private UserService userService;
 
    @GetMapping("/list")
    public Msg getAuthListByEnterpriseId(@RequestParam("userId") String userId) {
        if (StringUtils.isBlank(userId)) {
            return new Msg(ErrorCode.ERROR_10001);
        }
        UserInfo userInfo = userService.getById(userId);
        if (userInfo == null) {
            return new Msg(ErrorCode.ERROR_50001);
        }
        List<AuthorizationInfo> authorizationInfo = authorizationService.getAuthByEnterprise(userInfo.getCompanynumber());
        return success(authorizationInfo);
    }
 
    @PostMapping("/create")
    public Msg createAuth(@RequestBody JSONObject jsonObject) {
        String userId = jsonObject.getString("userId");
        String contractCode = jsonObject.getString("contractCode");
        Byte flag = jsonObject.getByte("flag");
        if (StringUtils.isBlank(userId)) {
            return new Msg(ErrorCode.ERROR_10001);
        }
        UserInfo userInfo = userService.getById(userId);
        if (userInfo == null) {
            return new Msg(ErrorCode.ERROR_50001);
        }
        if (StringUtils.isBlank(contractCode)) {
            return new Msg(ErrorCode.ERROR_10002, "合同编号不能为空");
        }
        AuthorizationInfo authorizationInfo = new AuthorizationInfo();
        List<AuthorizationInfo> authorizationExist = authorizationService.getAuthByEnterprise(userInfo.getCompanynumber());
        String prefix;
        if (authorizationExist.size() > 0) {
            //企业已经生成过授权码,则使用第一次生成的前缀
            prefix = authorizationExist.get(0).getAuthcodeprefix();
        } else {
            //未生成则随机生成,不能重复
            String str;
            str = randomLetter(3);
            boolean isPrefixExist;
            isPrefixExist = authorizationService.checkPrefixExist(str);
            while (isPrefixExist) {
                str = randomLetter(3);
                isPrefixExist = authorizationService.checkPrefixExist(str);
            }
            prefix = str;
        }
        String suffix;
            suffix = randomLetter(3);
        boolean isAuthCodeExist;
        isAuthCodeExist = authorizationService.checkCodeExist(prefix + suffix);
        while (isAuthCodeExist) {
            suffix = randomLetter(3);
            isAuthCodeExist = authorizationService.checkCodeExist(prefix + suffix);
        }
        authorizationInfo.setAuthcode(prefix+suffix);
        authorizationInfo.setAuthcodeprefix(prefix);
        authorizationInfo.setFlag(flag);
        authorizationInfo.setEnterprisenumber(userInfo.getCompanynumber());
        authorizationInfo.setContractcode(contractCode);
        authorizationInfo.setCreatedat(new Date());
        authorizationInfo.setCreatedby(userService.getById(getUser().getId()).getUsername());
        authorizationInfo.setStatus((byte)1);
        authorizationService.save(authorizationInfo);
        return success();
    }
 
    @PostMapping("status")
    public Msg changeStatus(@RequestBody JSONObject jsonObject){
        String id = jsonObject.getString("id");
        String status = jsonObject.getString("status");
        if (!"0".equals(status) && !"1".equals(status)){
            return new Msg(ErrorCode.ERROR_10004);
        }
        if (StringUtils.isBlank(id)){
            return new Msg(ErrorCode.ERROR_10002);
        }
        AuthorizationInfo authorizationInfo = authorizationService.getById(id);
        if (authorizationInfo == null){
            return new Msg(ErrorCode.ERROR_50001);
        }
        authorizationInfo.setStatus(Byte.parseByte(status));
        authorizationService.updateById(authorizationInfo);
        return success();
    }
 
    @PostMapping("delete")
    public Msg deleteAuth(@RequestBody JSONObject jsonObject){
        String id = jsonObject.getString("id");
        if (StringUtils.isBlank(id)){
            return new Msg(ErrorCode.ERROR_10002);
        }
        AuthorizationInfo authorizationInfo = authorizationService.getById(id);
        if (authorizationInfo == null){
            return new Msg(ErrorCode.ERROR_50001);
        }
        authorizationService.removeById(id);
        return success();
    }
    /**
     * @param n 随机字符串长度
     * @return 生成的随机字符串
     */
    private String randomLetter(int n) {
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < n; i++) {
            str.append((char) (Math.random() * 26 + 'A'));
        }
        return str.toString();
    }
}