AppController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. package com.dragoninfo.dcuc.authweb.restcontroller.app;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.alibaba.nacos.client.naming.utils.CollectionUtils;
  5. import com.dragoninfo.dcuc.app.dto.ApplyInfoDTO;
  6. import com.dragoninfo.dcuc.app.entity.ApplyInfo;
  7. import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade;
  8. import com.dragoninfo.dcuc.app.facade.IManufacturerInfoFacade;
  9. import com.dragoninfo.dcuc.auth.auth.vo.ApplicationInfoVO;
  10. import com.dragoninfo.dcuc.auth.power.facade.IApplicationInfoFacade;
  11. import com.dragoninfo.dcuc.auth.sub.dto.AuthOrgDTO;
  12. import com.dragoninfo.dcuc.auth.sub.facade.IAuthOrgInfoFacade;
  13. import com.dragoninfo.dcuc.authweb.business.MtAuthBusiness;
  14. import com.dragoninfo.dcuc.authweb.restcontroller.app.vo.AppVo;
  15. import com.dragoninfo.dcuc.duceap.facade.IDuceapUploadFacade;
  16. import com.dragoninfo.duceap.core.enums.ResultEnum;
  17. import com.dragoninfo.duceap.core.response.Result;
  18. import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
  19. import com.dragonsoft.duceap.base.entity.search.SearchDTO;
  20. import com.dragonsoft.duceap.base.exception.ApplicationException;
  21. import com.dragonsoft.duceap.commons.util.string.StringUtils;
  22. import com.dragonsoft.duceap.core.search.Searchable;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiImplicitParam;
  25. import io.swagger.annotations.ApiImplicitParams;
  26. import io.swagger.annotations.ApiOperation;
  27. import lombok.extern.slf4j.Slf4j;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.data.domain.Page;
  30. import org.springframework.web.bind.annotation.*;
  31. import java.util.*;
  32. /**
  33. * @author yica
  34. * @date 2018/8/8
  35. */
  36. @Slf4j
  37. @Api(tags = {"应用管理接口"})
  38. @RestController
  39. @RequestMapping(value = "/appsvr/v2")
  40. public class AppController {
  41. @Autowired
  42. private IApplyInfoFacade applyInfoFacade;
  43. @Autowired
  44. private IAuthOrgInfoFacade authOrgInfoFacade;
  45. @Autowired
  46. private IDuceapUploadFacade uploadFacade;
  47. @Autowired
  48. private IApplicationInfoFacade applicationInfoFacade;
  49. @ApiOperation(value = "查询所有应用列表")
  50. @ApiImplicitParam(name = "applyStatus", value = "applyStatus:应用在用标识(0:启用 1:禁用)")
  51. @GetMapping("allApps")
  52. public Result<List<ApplyInfo>> allApps(@RequestParam(value = "applyStatus",required = false) String applyStatus){
  53. List<ApplyInfo> applyList = applyInfoFacade.findList(applyStatus);
  54. return Result.success(applyList);
  55. }
  56. @ApiOperation(value = "查询应用列表")
  57. @ApiImplicitParam(name = "searchable", value = "查询条件(applyName:应用名称,like;managerOrgCode:应用系统事权单位代码,like;applyStatus:应用在用标识(0:启用 1:禁用);=;)")
  58. @PostMapping(value = "apps")
  59. public Result<List<ApplyInfo>> applyPage(Searchable searchable) {
  60. SearchDTO searchDTO = searchable.toSearchDTO();
  61. Page<ApplyInfo> page = applyInfoFacade.applyInfoPage(searchDTO);
  62. return Result.success(page.getTotalElements(), page.getContent());
  63. }
  64. @ApiOperation(value = "修改应用")
  65. @PutMapping(value = "/app/{id}")
  66. public Result<Object> update(@RequestBody AppVo appVo) {
  67. try {
  68. ApplyInfoDTO applyInfoDTO = new ApplyInfoDTO();
  69. BeanUtil.copyProperties(appVo, applyInfoDTO);
  70. //检查应用信息是否已存
  71. ResponseStatus responseStatus = applyInfoFacade.isRepeat(applyInfoDTO);
  72. if (!ResponseStatus.SUCCESS_CODE.equals(responseStatus.getStatusCode())) {
  73. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), responseStatus.getMessage());
  74. }
  75. applyInfoFacade.updateApply(applyInfoDTO);
  76. } catch (Exception e) {
  77. log.error("update app", e);
  78. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "修改异常");
  79. }
  80. return Result.success();
  81. }
  82. @ApiOperation(value = "保存应用")
  83. @PostMapping(value = "/app")
  84. public Result<Object> save(@RequestBody AppVo appVo) {
  85. try {
  86. ApplyInfoDTO applyInfoDTO = new ApplyInfoDTO();
  87. BeanUtil.copyProperties(appVo, applyInfoDTO);
  88. //检查应用信息是否已存
  89. ResponseStatus responseStatus = applyInfoFacade.isRepeat(applyInfoDTO);
  90. if (!ResponseStatus.SUCCESS_CODE.equals(responseStatus.getStatusCode())) {
  91. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), responseStatus.getMessage());
  92. }
  93. applyInfoFacade.saveAppIy(applyInfoDTO);
  94. } catch (Exception e) {
  95. log.error("save app", e);
  96. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "保存异常");
  97. }
  98. return Result.success();
  99. }
  100. @ApiOperation(value = "删除应用")
  101. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "应用ID", required = true
  102. , example = "40288a8b699fc2500169a33b20540000")})
  103. @DeleteMapping(value = "/app/{id}")
  104. public Result<Object> del(@PathVariable("id") String id) {
  105. //TODO
  106. //权限中心对施工人员和厂商未做管理
  107. applyInfoFacade.del(id);
  108. return Result.success("删除成功");
  109. }
  110. /**
  111. * 详情
  112. *
  113. * @param id
  114. * @return
  115. */
  116. @ApiOperation(value = "查询应用")
  117. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "应用ID", required = true
  118. , example = "40288a8b699fc2500169a33b20540000")})
  119. @GetMapping(value = "/app/{id}")
  120. public Result<AppVo> toDetail(@PathVariable("id") String id) {
  121. //查询应用信息
  122. ApplyInfo applyInfo = applyInfoFacade.applyDetail(id);
  123. //存入机构信息信息
  124. String orgCode = applyInfo.getOrgCode();
  125. if(StringUtils.isNotBlank(orgCode)) {
  126. applyInfo.setOrgName(authOrgInfoFacade.getOrgByCode(orgCode).getFullName());
  127. }
  128. AppVo appVo = new AppVo();
  129. BeanUtil.copyProperties(applyInfo, appVo);
  130. appVo.setFile(uploadFacade.queryByBusiId(id, ""));
  131. return Result.success(appVo);
  132. }
  133. @ApiOperation(value = "开启停止应用")
  134. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "应用ID", required = true
  135. , example = "40288a8b699fc2500169a33b20540000")})
  136. @PutMapping(value = "/app/status/{id}")
  137. public Result<Object> startOrStop(@PathVariable String id) {
  138. String message = "";
  139. try {
  140. message = applyInfoFacade.startOrStop(id);
  141. } catch (Exception e) {
  142. log.error(e.getMessage(), e);
  143. throw new ApplicationException(300, "操作失败", e);
  144. }
  145. return Result.success(message);
  146. }
  147. @ApiOperation(value = "根据厂商ID,获取厂商所有的应用")
  148. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "厂商ID", required = true
  149. , example = "40288a8b699fc2500169a33b20540000")})
  150. @GetMapping(value = "app/manufacturer/{mfrId}")
  151. public Result<List<Map<String, String>>> getAppByMfr(@PathVariable String mfrId) {
  152. if (StrUtil.isBlank(mfrId)) {
  153. return Result.success(Collections.emptyList());
  154. }
  155. List<ApplyInfo> appList = applyInfoFacade.getAppListByManufacturerId(mfrId);
  156. List<Map<String, String>> list = new ArrayList<>(appList.size());
  157. for (ApplyInfo app : appList) {
  158. Map<String, String> appmap = new HashMap<>();
  159. appmap.put("code", app.getId());
  160. appmap.put("value", app.getApplyName());
  161. appmap.put("managerName", app.getManagerName());
  162. appmap.put("managerPhone", app.getManagerPhone());
  163. list.add(appmap);
  164. }
  165. return Result.success(list);
  166. }
  167. /**
  168. * 根据机构Id获取应用信息列表
  169. **/
  170. @ApiOperation(value = "查询应用列表")
  171. @ApiImplicitParam(name = "searchable", value = "查询条件")
  172. @PostMapping(value = "apps/role/_serach")
  173. public Result getAppList(Searchable searchable) {
  174. // AuthUserDTO userInfo = authUserInfoFacade.get(ContextUtils.getUserInfo().getId());
  175. //TODO
  176. //权限中心同步的应用厂商非必填
  177. //外部人员只能配置自己所属厂商下的应用
  178. // if (UserTypeEnum.EXTERNAL.getValue().equals(userInfo.getUserType())) {
  179. // searchable.addSearchParam("manufacturerId", userInfo.getCompany());
  180. // }
  181. SearchDTO searchDTO = searchable.toSearchDTO();
  182. Page<ApplyInfo> applyInfos = applyInfoFacade.applyInfoPage(searchDTO);
  183. if (CollectionUtils.isEmpty(applyInfos.getContent())) {
  184. return Result.success(0L, "");
  185. }
  186. //填充统计数据
  187. List<ApplicationInfoVO> apps = applicationInfoFacade.addCountInfo(objectConvert(applyInfos));
  188. return Result.success(applyInfos.getTotalElements(), apps);
  189. }
  190. private List<ApplicationInfoVO> objectConvert(Page<ApplyInfo> applyInfos) {
  191. List<ApplicationInfoVO> apps = new ArrayList<>();
  192. for (ApplyInfo applyInfo : applyInfos) {
  193. ApplicationInfoVO applicationInfoVO = new ApplicationInfoVO();
  194. applicationInfoVO.setId(applyInfo.getId());
  195. applicationInfoVO.setCode(applyInfo.getApplyCode());
  196. applicationInfoVO.setName(applyInfo.getApplyName());
  197. applicationInfoVO.setMenus(0L);
  198. applicationInfoVO.setRoles(0L);
  199. applicationInfoVO.setInitquotas(0L);
  200. applicationInfoVO.setQuotaed(0L);
  201. applicationInfoVO.setLeavequotas(0L);
  202. apps.add(applicationInfoVO);
  203. }
  204. return apps;
  205. }
  206. }