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 = 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 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(); } }