package com.dragoninfo.dcuc.authweb.restcontroller.app; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.dragoninfo.dcuc.app.dto.ApplyInfoDTO; import com.dragoninfo.dcuc.app.entity.ApplyInfo; import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade; import com.dragoninfo.dcuc.app.facade.IManufacturerInfoFacade; import com.dragoninfo.dcuc.auth.auth.vo.ApplicationInfoVO; import com.dragoninfo.dcuc.auth.power.facade.IApplicationInfoFacade; import com.dragoninfo.dcuc.auth.sub.dto.AuthOrgDTO; import com.dragoninfo.dcuc.auth.sub.facade.IAuthOrgInfoFacade; import com.dragoninfo.dcuc.authweb.business.MtAuthBusiness; import com.dragoninfo.dcuc.authweb.restcontroller.app.vo.AppVo; import com.dragoninfo.dcuc.duceap.facade.IDuceapUploadFacade; import com.dragoninfo.duceap.core.enums.ResultEnum; import com.dragoninfo.duceap.core.response.Result; import com.dragonsoft.duceap.base.entity.http.ResponseStatus; import com.dragonsoft.duceap.base.entity.search.SearchDTO; import com.dragonsoft.duceap.base.exception.ApplicationException; import com.dragonsoft.duceap.commons.util.string.StringUtils; import com.dragonsoft.duceap.core.search.Searchable; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.*; import java.util.*; /** * @author yica * @date 2018/8/8 */ @Slf4j @Api(tags = {"应用管理接口"}) @RestController @RequestMapping(value = "/appsvr/v2") public class AppController { @Autowired private IApplyInfoFacade applyInfoFacade; @Autowired private IAuthOrgInfoFacade authOrgInfoFacade; @Autowired private IDuceapUploadFacade uploadFacade; @Autowired private IApplicationInfoFacade applicationInfoFacade; @ApiOperation(value = "查询所有应用列表") @ApiImplicitParam(name = "applyStatus", value = "applyStatus:应用在用标识(0:启用 1:禁用)") @GetMapping("allApps") public Result> allApps(@RequestParam(value = "applyStatus",required = false) String applyStatus){ List applyList = applyInfoFacade.findList(applyStatus); return Result.success(applyList); } @ApiOperation(value = "查询应用列表") @ApiImplicitParam(name = "searchable", value = "查询条件(applyName:应用名称,like;managerOrgCode:应用系统事权单位代码,like;applyStatus:应用在用标识(0:启用 1:禁用);=;)") @PostMapping(value = "apps") public Result> applyPage(Searchable searchable) { SearchDTO searchDTO = searchable.toSearchDTO(); Page page = applyInfoFacade.applyInfoPage(searchDTO); return Result.success(page.getTotalElements(), page.getContent()); } @ApiOperation(value = "修改应用") @PutMapping(value = "/app/{id}") public Result update(@RequestBody AppVo appVo) { try { ApplyInfoDTO applyInfoDTO = new ApplyInfoDTO(); BeanUtil.copyProperties(appVo, applyInfoDTO); //检查应用信息是否已存 ResponseStatus responseStatus = applyInfoFacade.isRepeat(applyInfoDTO); if (!ResponseStatus.SUCCESS_CODE.equals(responseStatus.getStatusCode())) { return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), responseStatus.getMessage()); } applyInfoFacade.updateApply(applyInfoDTO); } catch (Exception e) { log.error("update app", e); return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "修改异常"); } return Result.success(); } @ApiOperation(value = "保存应用") @PostMapping(value = "/app") public Result save(@RequestBody AppVo appVo) { try { ApplyInfoDTO applyInfoDTO = new ApplyInfoDTO(); BeanUtil.copyProperties(appVo, applyInfoDTO); //检查应用信息是否已存 ResponseStatus responseStatus = applyInfoFacade.isRepeat(applyInfoDTO); if (!ResponseStatus.SUCCESS_CODE.equals(responseStatus.getStatusCode())) { return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), responseStatus.getMessage()); } applyInfoFacade.saveAppIy(applyInfoDTO); } catch (Exception e) { log.error("save app", e); return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "保存异常"); } return Result.success(); } @ApiOperation(value = "删除应用") @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "应用ID", required = true , example = "40288a8b699fc2500169a33b20540000")}) @DeleteMapping(value = "/app/{id}") public Result del(@PathVariable("id") String id) { //TODO //权限中心对施工人员和厂商未做管理 applyInfoFacade.del(id); return Result.success("删除成功"); } /** * 详情 * * @param id * @return */ @ApiOperation(value = "查询应用") @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "应用ID", required = true , example = "40288a8b699fc2500169a33b20540000")}) @GetMapping(value = "/app/{id}") public Result toDetail(@PathVariable("id") String id) { //查询应用信息 ApplyInfo applyInfo = applyInfoFacade.applyDetail(id); //存入机构信息信息 String orgCode = applyInfo.getOrgCode(); if(StringUtils.isNotBlank(orgCode)) { applyInfo.setOrgName(authOrgInfoFacade.getOrgByCode(orgCode).getFullName()); } AppVo appVo = new AppVo(); BeanUtil.copyProperties(applyInfo, appVo); appVo.setFile(uploadFacade.queryByBusiId(id, "")); return Result.success(appVo); } @ApiOperation(value = "开启停止应用") @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "应用ID", required = true , example = "40288a8b699fc2500169a33b20540000")}) @PutMapping(value = "/app/status/{id}") public Result startOrStop(@PathVariable String id) { String message = ""; try { message = applyInfoFacade.startOrStop(id); } catch (Exception e) { log.error(e.getMessage(), e); throw new ApplicationException(300, "操作失败", e); } return Result.success(message); } @ApiOperation(value = "根据厂商ID,获取厂商所有的应用") @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "厂商ID", required = true , example = "40288a8b699fc2500169a33b20540000")}) @GetMapping(value = "app/manufacturer/{mfrId}") public Result>> getAppByMfr(@PathVariable String mfrId) { if (StrUtil.isBlank(mfrId)) { return Result.success(Collections.emptyList()); } List appList = applyInfoFacade.getAppListByManufacturerId(mfrId); List> list = new ArrayList<>(appList.size()); for (ApplyInfo app : appList) { Map appmap = new HashMap<>(); appmap.put("code", app.getId()); appmap.put("value", app.getApplyName()); appmap.put("managerName", app.getManagerName()); appmap.put("managerPhone", app.getManagerPhone()); list.add(appmap); } return Result.success(list); } /** * 根据机构Id获取应用信息列表 **/ @ApiOperation(value = "查询应用列表") @ApiImplicitParam(name = "searchable", value = "查询条件") @PostMapping(value = "apps/role/_serach") public Result getAppList(Searchable searchable) { // AuthUserDTO userInfo = authUserInfoFacade.get(ContextUtils.getUserInfo().getId()); //TODO //权限中心同步的应用厂商非必填 //外部人员只能配置自己所属厂商下的应用 // if (UserTypeEnum.EXTERNAL.getValue().equals(userInfo.getUserType())) { // searchable.addSearchParam("manufacturerId", userInfo.getCompany()); // } SearchDTO searchDTO = searchable.toSearchDTO(); Page applyInfos = applyInfoFacade.applyInfoPage(searchDTO); if (CollectionUtils.isEmpty(applyInfos.getContent())) { return Result.success(0L, ""); } //填充统计数据 List apps = applicationInfoFacade.addCountInfo(objectConvert(applyInfos)); return Result.success(applyInfos.getTotalElements(), apps); } private List objectConvert(Page applyInfos) { List apps = new ArrayList<>(); for (ApplyInfo applyInfo : applyInfos) { ApplicationInfoVO applicationInfoVO = new ApplicationInfoVO(); applicationInfoVO.setId(applyInfo.getId()); applicationInfoVO.setCode(applyInfo.getApplyCode()); applicationInfoVO.setName(applyInfo.getApplyName()); applicationInfoVO.setMenus(0L); applicationInfoVO.setRoles(0L); applicationInfoVO.setInitquotas(0L); applicationInfoVO.setQuotaed(0L); applicationInfoVO.setLeavequotas(0L); apps.add(applicationInfoVO); } return apps; } }