package com.vci.ubcs.omd.controller; import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.nacos.api.exception.NacosException; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.vci.ubcs.omd.constant.OmdCacheConstant; import com.vci.ubcs.omd.entity.LinkType; import com.vci.ubcs.omd.repeater.DomainRepeater; import com.vci.ubcs.omd.service.ILinkTypeService; import com.vci.ubcs.omd.vo.BtmTreeVO; import com.vci.ubcs.omd.vo.LinkTypeVO; import com.vci.ubcs.omd.vo.DomainVO; import com.vci.ubcs.omd.wrapper.LinkTypeWrapper; import io.swagger.annotations.*; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.util.*; /** * Description:链接类型控制器 * * @author LiHang * @date 2023/5/29 */ @NonDS @RestController @AllArgsConstructor @RequestMapping("/link-type") @Api(value = "链接类型控制器", tags = "链接类型控制器") public class LinkTypeController extends BladeController { /** * 链接类型服务 */ private final ILinkTypeService linkTypeService; /** * 查看详情 * * @param oid 主键 * @return 执行结果 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "查看详情", notes = "传入主键") public R detail(String oid) { return R.data(linkTypeService.getLinkTypeByOid(oid)); } /** * 列表 * * @param condition 查询条件 * @return 执行结果 */ @GetMapping("/list") @ApiImplicitParams({ @ApiImplicitParam(name = "oid", value = "主键", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "id", value = "链接类型英文名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "链接类型中文名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "tableName", value = "链接类型数据库表名", paramType = "query", dataType = "string"), }) @ApiOperationSupport(order = 2) @ApiOperation(value = "查询列表", notes = "传入查询") public R> list(@ApiIgnore @RequestParam Map condition) { return R.data(LinkTypeWrapper.build().listEntityVO(linkTypeService.list(Condition.getQueryWrapper(condition, LinkType.class).lambda().orderByAsc(LinkType::getId)), null)); } /** * 分页列表 * * @param condition 查询条件 */ @GetMapping("/page") @ApiImplicitParams({ @ApiImplicitParam(name = "oid", value = "主键", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "id", value = "链接类型英文名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "链接类型中文名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "tableName", value = "链接类型数据库表名", paramType = "query", dataType = "string"), }) @ApiOperationSupport(order = 3) @ApiOperation(value = "查询列表", notes = "传入查询") public R> parentList(@ApiIgnore @RequestParam Map condition, Query query) { IPage pageVO = new Page<>(); IPage page = linkTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, LinkType.class).lambda().orderByAsc(LinkType::getId)); BeanUtil.copy(page, pageVO); pageVO.setRecords(LinkTypeWrapper.build().listEntityVO(page.getRecords(), null)); return R.data(pageVO); } /** * 新增或修改 * * @param dto 元数据页面传输对象 * @return 执行结果 */ @PostMapping("/submit/{auto}") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增或修改", notes = "传入链接类型对象") public R submit(@Valid @RequestBody LinkTypeVO dto, @PathVariable(value = "auto") boolean auto) { CacheUtil.clear(OmdCacheConstant.LINK_CACHE); if (StringUtils.isNotBlank(dto.getOid())){ return R.data(linkTypeService.editSave(dto)); }else { return R.data(linkTypeService.addSave(dto)); } } /** * 删除 * * @param ids 主键集合 * @return 执行结果 */ @PostMapping("/remove") @ApiOperationSupport(order = 5) @ApiOperation(value = "删除", notes = "主键集合") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { CacheUtil.clear(OmdCacheConstant.LINK_CACHE); List oidList = new ArrayList<>(); if (ids.contains(",")) { oidList.addAll(Func.toStrList(",", ids)); } else { oidList.add(ids); } return R.status(linkTypeService.removeBatchByIds(oidList)); } /** * 获取领域值 */ @GetMapping("/domain") @ApiOperationSupport(order = 6) @ApiOperation(value = "获取领域值") public R> getDomain(){ try { return R.data(DomainRepeater.getDomain()); } catch (NacosException e) { return R.fail(e.getErrMsg()); } } /** * 按domain分组,查询链接类型的树形结构 */ @GetMapping("/tree-domain") @ApiOperationSupport(order = 7) @ApiOperation(value = "链接类型树形结构", notes = "链接类型树形结构") public R> treeDomain(){ return R.data(linkTypeService.treeDomain()); } }