185 lines
6.9 KiB
Java
185 lines
6.9 KiB
Java
package com.yunhai.userbase.controller.api;
|
|
|
|
import com.bestsch.utils.DException;
|
|
import com.yunhai.userbase.common.annotation.OperationLog;
|
|
import com.yunhai.userbase.common.context.UserContext;
|
|
import com.yunhai.userbase.common.validation.ValidationGroups;
|
|
import com.yunhai.userbase.config.Config;
|
|
import com.yunhai.userbase.entity.ApplicationInfo;
|
|
import com.yunhai.userbase.enums.BookType;
|
|
import com.yunhai.userbase.model.BaseDict;
|
|
import com.yunhai.userbase.model.BasePageQuery;
|
|
import com.yunhai.userbase.model.BasePageResult;
|
|
import com.yunhai.userbase.model.Operator;
|
|
import com.yunhai.userbase.model.appauthz.AppAuthzCategoryVo;
|
|
import com.yunhai.userbase.model.appcategory.AppCategoryQuery;
|
|
import com.yunhai.userbase.model.appcategory.AppCategoryRequest;
|
|
import com.yunhai.userbase.model.appcategory.AppCategoryVo;
|
|
import com.yunhai.userbase.model.application.ApplicationInfoQuery;
|
|
import com.yunhai.userbase.model.application.ApplicationInfoRequest;
|
|
import com.yunhai.userbase.model.application.ApplicationInfoSortVo;
|
|
import com.yunhai.userbase.model.application.ApplicationInfoVo;
|
|
import com.yunhai.userbase.model.appmodule.AppModuleQuery;
|
|
import com.yunhai.userbase.model.appmodule.AppModuleRequest;
|
|
import com.yunhai.userbase.model.appmodule.AppModuleVo;
|
|
import com.yunhai.userbase.service.IAppCategoryService;
|
|
import com.yunhai.userbase.service.IApplicationInfoService;
|
|
import com.yunhai.userbase.service.IAppModuleService;
|
|
import com.yunhai.userbase.service.SignKeyCacheService;
|
|
import com.yunhai.userbase.utils.DicUtil;
|
|
import com.yunhai.userbase.utils.PageUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.tomcat.util.http.fileupload.util.Streams;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Sort;
|
|
import org.springframework.data.web.SortDefault;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.validation.Valid;
|
|
import java.io.BufferedOutputStream;
|
|
import java.io.InputStream;
|
|
import java.net.URLEncoder;
|
|
import java.util.Enumeration;
|
|
import java.util.HashMap;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@RequestMapping(value = Config.API_PATH + "/app/")
|
|
public class AppSettingsController {
|
|
|
|
@Autowired
|
|
private IAppCategoryService appCategoryService;
|
|
|
|
@Autowired
|
|
private IApplicationInfoService applicationInfoService;
|
|
|
|
@Autowired
|
|
private IAppModuleService appModuleService;
|
|
|
|
@Autowired
|
|
private SignKeyCacheService signKeyCacheService;
|
|
|
|
|
|
|
|
@OperationLog("新增应用类型")
|
|
@PostMapping("AddType")
|
|
public void addType(@RequestBody @Validated(ValidationGroups.Create.class) AppCategoryRequest request) {
|
|
appCategoryService.add(request);
|
|
}
|
|
|
|
@OperationLog("编辑应用类型")
|
|
@PostMapping("EditType/{id}")
|
|
public void editType(@PathVariable Integer id, @RequestBody @Validated(ValidationGroups.Update.class) AppCategoryRequest request) {
|
|
appCategoryService.edit(id, request);
|
|
}
|
|
|
|
@OperationLog("删除应用类型")
|
|
@PostMapping("DeleteType/{id}")
|
|
public void deleteType(@PathVariable Integer id) {
|
|
appCategoryService.delete(id);
|
|
}
|
|
|
|
@GetMapping("/AppTypeList")
|
|
public List<AppCategoryVo> appTypeList(AppCategoryQuery query) {
|
|
return appCategoryService.list(query);
|
|
}
|
|
|
|
@OperationLog("应用类型排序")
|
|
@PostMapping("/AppTypeSort")
|
|
public void appTypeSort(@RequestBody List<Integer> ids) {
|
|
appCategoryService.sort(ids);
|
|
}
|
|
|
|
/**
|
|
* 应用授权用:获取所有应用类型及其类型下的应用(每个应用含 id/name/icon)。<br>
|
|
* 类型按 sortNo 升序,类型内应用按 sortNo、id 升序;无应用的类型 app 为空数组。
|
|
*/
|
|
@GetMapping("/AppAuthzList")
|
|
public List<AppAuthzCategoryVo> appAuthzList() {
|
|
return appCategoryService.listWithApps();
|
|
}
|
|
|
|
@OperationLog("新增应用")
|
|
@PostMapping("AddApp")
|
|
public void addApp(@RequestBody @Validated(ValidationGroups.Create.class) ApplicationInfoRequest request) {
|
|
applicationInfoService.add(request);
|
|
}
|
|
|
|
@OperationLog("编辑应用")
|
|
@PostMapping("EditApp/{id}")
|
|
public void editApp(@PathVariable Integer id, @RequestBody @Validated(ValidationGroups.Update.class) ApplicationInfoRequest request) {
|
|
applicationInfoService.edit(id, request);
|
|
}
|
|
|
|
@OperationLog("删除应用")
|
|
@PostMapping("DeleteApp/{id}")
|
|
public void deleteApp(@PathVariable Integer id) {
|
|
applicationInfoService.delete(id);
|
|
}
|
|
|
|
@OperationLog("重置应用密钥")
|
|
@PostMapping("ResetAppSecret/{id}")
|
|
public String resetAppSecret(@PathVariable Integer id) {
|
|
applicationInfoService.resetAppSecret(id);
|
|
ApplicationInfo info= applicationInfoService.getById(id);
|
|
return info.getAppSecret();
|
|
}
|
|
|
|
@OperationLog("全量刷新应用签名密钥到Redis")
|
|
@PostMapping("RefreshSignKeys")
|
|
public Map<String, Object> refreshSignKeys() {
|
|
int count = signKeyCacheService.refreshAll();
|
|
Map<String, Object> result = new LinkedHashMap<>();
|
|
result.put("refreshed", count);
|
|
return result;
|
|
}
|
|
|
|
@GetMapping("/AppList")
|
|
public BasePageResult<ApplicationInfoVo> appList(ApplicationInfoQuery query, BasePageQuery pageQuery,
|
|
@SortDefault(sort = "sortNo", direction = Sort.Direction.ASC) Sort sort) {
|
|
return PageUtils.toResult(applicationInfoService.list(query, PageUtils.toPageable(pageQuery, sort)));
|
|
}
|
|
|
|
@OperationLog("应用排序")
|
|
@PostMapping("/AppSort")
|
|
public void appSort(@RequestBody List<Integer> ids) {
|
|
applicationInfoService.sort(ids);
|
|
}
|
|
|
|
@GetMapping("/AppSortList")
|
|
public List<ApplicationInfoSortVo> appSortList(@RequestParam Integer categoryId) {
|
|
return applicationInfoService.findListByCategoryId(categoryId);
|
|
}
|
|
|
|
@OperationLog("新增模块")
|
|
@PostMapping("AddModule")
|
|
public void addModule(@RequestBody @Validated(ValidationGroups.Create.class) AppModuleRequest request) {
|
|
appModuleService.add(request);
|
|
}
|
|
|
|
@OperationLog("编辑模块")
|
|
@PostMapping("EditModule/{id}")
|
|
public void editModule(@PathVariable Integer id, @RequestBody @Validated(ValidationGroups.Update.class) AppModuleRequest request) {
|
|
appModuleService.edit(id, request);
|
|
}
|
|
|
|
@OperationLog("删除模块")
|
|
@PostMapping("DeleteModule/{id}")
|
|
public void deleteModule(@PathVariable Integer id) {
|
|
appModuleService.delete(id);
|
|
}
|
|
|
|
@GetMapping("/ModuleList")
|
|
public List<AppModuleVo> moduleList(AppModuleQuery query) {
|
|
return appModuleService.list(query);
|
|
}
|
|
}
|