| @@ -1,26 +0,0 @@ | |||
| package com.iformall.controller.sm; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.dto.sm.SaveApiMenuDTO; | |||
| import com.iformall.domain.po.sm.ApiDetail; | |||
| import com.iformall.service.sm.ApiDetailService; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| @RestController | |||
| @RequestMapping("/apiDetail") | |||
| @Api(tags = "api菜单详情接口") | |||
| public class ApiDetailController { | |||
| @Autowired | |||
| private ApiDetailService apiDetailService; | |||
| @ApiOperation("查询单个api菜单详情") | |||
| @GetMapping("/get") | |||
| public ResultData getApiDetail(Long id) { | |||
| ApiDetail apiDetail = apiDetailService.getApiDetail(id); | |||
| return new ResultData(apiDetail); | |||
| } | |||
| } | |||
| @@ -18,20 +18,20 @@ public class ApiGuideController { | |||
| @Autowired | |||
| private ApiGuideService apiGuideService; | |||
| @ApiOperation("分页查询api菜单") | |||
| @ApiOperation("分页查询api指南") | |||
| @GetMapping("/page") | |||
| public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { | |||
| return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); | |||
| } | |||
| @ApiOperation("新增api菜单") | |||
| @ApiOperation("新增api指南") | |||
| @PostMapping("/save") | |||
| public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { | |||
| apiGuideService.saveApiGuide(dto); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("修改api菜单") | |||
| @ApiOperation("修改api指南") | |||
| @PostMapping("/update") | |||
| public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { | |||
| apiGuideService.updateApiGuide(dto); | |||
| @@ -0,0 +1,27 @@ | |||
| package com.iformall.controller; | |||
| import com.iformall.annotation.AuthIgnore; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.service.sm.ApiGuideService; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.GetMapping; | |||
| import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| @RestController | |||
| @RequestMapping("/api/apiGuide") | |||
| @Api(tags = "api指南接口") | |||
| public class ApiGuideController { | |||
| @Autowired | |||
| private ApiGuideService apiGuideService; | |||
| @AuthIgnore | |||
| @ApiOperation("单个查询api指南") | |||
| @GetMapping("/getAvailableApiGuide") | |||
| public ResultData getAvailableApiGuide() { | |||
| return new ResultData(apiGuideService.getAvailableApiGuide()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,47 @@ | |||
| package com.iformall.controller; | |||
| import com.iformall.annotation.AuthIgnore; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.exception.BizException; | |||
| import com.iformall.service.sm.ApiMenuService; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| @RestController | |||
| @RequestMapping("/api/apiMenu") | |||
| @Api(tags = "api菜单接口") | |||
| public class ApiMenuController { | |||
| @Autowired | |||
| private ApiMenuService apiMenuService; | |||
| @AuthIgnore | |||
| @ApiOperation("全查询api菜单") | |||
| @GetMapping("/list") | |||
| public ResultData listApiMenu() { | |||
| return new ResultData(apiMenuService.listMenu()); | |||
| } | |||
| @AuthIgnore | |||
| @ApiOperation("查询某个api菜单所有子菜单") | |||
| @GetMapping("/listSubmenu") | |||
| public ResultData listApiSubmenu(Long id) { | |||
| if (id == null) { | |||
| throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
| } | |||
| return new ResultData(apiMenuService.listApiSubmenu(id)); | |||
| } | |||
| @AuthIgnore | |||
| @ApiOperation("单个查询菜单详情") | |||
| @GetMapping("/get") | |||
| public ResultData getApiMenu(Long id) { | |||
| if (id == null) { | |||
| throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
| } | |||
| return new ResultData(apiMenuService.getApiMenu(id)); | |||
| } | |||
| } | |||
| @@ -44,7 +44,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { | |||
| @Override | |||
| public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | |||
| AuthIgnore annotation; | |||
| if(handler instanceof HandlerMethod) { | |||
| annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class); | |||
| @@ -681,6 +681,9 @@ public enum ErrorCode{ | |||
| SECRET_NOT_EXISTS(71001, "该秘钥不存在"), | |||
| SERVICE_LOCKED(71002, "合作商被锁定,无法修改"), | |||
| NAME_REPEAT(81000, "名称重复"), | |||
| EXIST_AVAILABLE_GUIDE(81001, "存在可用指南"), | |||
| ; | |||
| private int code; | |||
| @@ -0,0 +1,27 @@ | |||
| package com.iformall.domain.vo.sm; | |||
| import com.iformall.domain.po.sm.ApiDetail; | |||
| import com.iformall.domain.po.sm.ApiMenu; | |||
| import io.swagger.annotations.ApiModel; | |||
| import io.swagger.annotations.ApiModelProperty; | |||
| import lombok.Data; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| @ApiModel(value = "查询某个api菜单所有子菜单相应数据") | |||
| @Data | |||
| public class ListApiSubmenuVO { | |||
| @ApiModelProperty("菜单id") | |||
| private Long id; | |||
| @ApiModelProperty("修改时间") | |||
| private Date updateTime; | |||
| @ApiModelProperty("菜单名称") | |||
| private String name; | |||
| @ApiModelProperty("状态(0:正常,1:锁定)") | |||
| private Integer status; | |||
| @ApiModelProperty("详情id") | |||
| private Long detailId; | |||
| @ApiModelProperty("接口描述") | |||
| private String description; | |||
| } | |||
| @@ -3,6 +3,7 @@ package com.iformall.mapper; | |||
| import com.iformall.domain.po.sm.ApiMenu; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| import com.iformall.domain.vo.sm.ApiMenuVO; | |||
| import com.iformall.domain.vo.sm.ListApiSubmenuVO; | |||
| import java.util.List; | |||
| @@ -16,6 +17,8 @@ public interface ApiMenuMapper extends BaseMapper<ApiMenu> { | |||
| List<ApiMenu> listParentMenu(); | |||
| List<ApiMenuVO> listApiMenuAndDetail(ApiMenu apiMenu); | |||
| List<ListApiSubmenuVO> listSubmenu(Long id); | |||
| } | |||
| @@ -6,6 +6,7 @@ import com.iformall.domain.dto.sm.UpdateApiMenuDTO; | |||
| import com.iformall.domain.po.sm.ApiMenu; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| import com.iformall.domain.vo.sm.ApiMenuVO; | |||
| import com.iformall.domain.vo.sm.ListApiSubmenuVO; | |||
| import java.util.List; | |||
| @@ -23,4 +24,8 @@ public interface ApiMenuService extends IService<ApiMenu> { | |||
| List<ApiMenu> listParentMenu(); | |||
| ApiMenuVO getApiMenu(Long id); | |||
| List<ApiMenu> listMenu(); | |||
| List<ListApiSubmenuVO> listApiSubmenu(Long id); | |||
| } | |||
| @@ -1,16 +1,23 @@ | |||
| package com.iformall.service.sm.impl; | |||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.CommonConstants; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.domain.dto.sm.SaveApiGuideDTO; | |||
| import com.iformall.domain.dto.sm.UpdateApiGuideDTO; | |||
| import com.iformall.domain.po.sm.ApiGuide; | |||
| import com.iformall.exception.BizException; | |||
| import com.iformall.service.sm.ApiGuideService; | |||
| import com.iformall.mapper.ApiGuideMapper; | |||
| import org.apache.commons.collections.CollectionUtils; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.List; | |||
| /** | |||
| * | |||
| */ | |||
| @@ -27,15 +34,52 @@ public class ApiGuideServiceImpl extends ServiceImpl<ApiGuideMapper, ApiGuide> i | |||
| @Override | |||
| public void saveApiGuide(SaveApiGuideDTO dto) { | |||
| ApiGuide dbApiGuide = apiGuideMapper.selectOne(new LambdaQueryWrapper<ApiGuide>().eq(ApiGuide::getName, dto.getName())); | |||
| if (dbApiGuide != null) { | |||
| throw new BizException(ErrorCode.NAME_REPEAT); | |||
| } | |||
| // 暂时处理,存在正常的指南,则不可新增新的正常指南 | |||
| List<ApiGuide> apiGuides = apiGuideMapper.selectList(new LambdaQueryWrapper<ApiGuide>() | |||
| .eq(ApiGuide::getStatus, CommonConstants.STATUS_NORMAL) | |||
| .eq(ApiGuide::getDeleteFlag, CommonConstants.FLAG_FALSE)); | |||
| if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus()) && !CollectionUtils.isEmpty(apiGuides)) { | |||
| throw new BizException(ErrorCode.EXIST_AVAILABLE_GUIDE); | |||
| } | |||
| ApiGuide apiGuide = SaveApiGuideDTO.mapping(dto); | |||
| apiGuideMapper.insert(apiGuide); | |||
| } | |||
| @Override | |||
| public void updateApiGuide(UpdateApiGuideDTO dto) { | |||
| ApiGuide dbApiGuide = apiGuideMapper.selectOne(new LambdaQueryWrapper<ApiGuide>() | |||
| .eq(ApiGuide::getName, dto.getName()) | |||
| .ne(ApiGuide::getId, dto.getId())); | |||
| if (dbApiGuide != null) { | |||
| throw new BizException(ErrorCode.NAME_REPEAT); | |||
| } | |||
| // 暂时处理,存在正常的指南,则不可修改新的正常指南 | |||
| List<ApiGuide> apiGuides = apiGuideMapper.selectList(new LambdaQueryWrapper<ApiGuide>() | |||
| .eq(ApiGuide::getStatus, CommonConstants.STATUS_NORMAL) | |||
| .eq(ApiGuide::getDeleteFlag, CommonConstants.FLAG_FALSE) | |||
| .ne(ApiGuide::getId, dto.getId())); | |||
| if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus()) && !CollectionUtils.isEmpty(apiGuides)) { | |||
| throw new BizException(ErrorCode.EXIST_AVAILABLE_GUIDE); | |||
| } | |||
| ApiGuide apiGuide = UpdateApiGuideDTO.mapping(dto); | |||
| apiGuideMapper.updateById(apiGuide); | |||
| } | |||
| @Override | |||
| public ApiGuide getAvailableApiGuide() { | |||
| ApiGuide apiGuide = new ApiGuide(); | |||
| apiGuide.setStatus(CommonConstants.STATUS_NORMAL); | |||
| List<ApiGuide> apiGuides = apiGuideMapper.listApiGuide(apiGuide); | |||
| return !CollectionUtils.isEmpty(apiGuides) ? apiGuides.get(0) : null; | |||
| } | |||
| } | |||
| @@ -10,6 +10,7 @@ import com.iformall.domain.dto.sm.UpdateApiMenuDTO; | |||
| import com.iformall.domain.po.sm.ApiDetail; | |||
| import com.iformall.domain.po.sm.ApiMenu; | |||
| import com.iformall.domain.vo.sm.ApiMenuVO; | |||
| import com.iformall.domain.vo.sm.ListApiSubmenuVO; | |||
| import com.iformall.mapper.ApiDetailMapper; | |||
| import com.iformall.service.sm.ApiMenuService; | |||
| import com.iformall.mapper.ApiMenuMapper; | |||
| @@ -76,6 +77,16 @@ public class ApiMenuServiceImpl extends ServiceImpl<ApiMenuMapper, ApiMenu> impl | |||
| public List<ApiMenu> listParentMenu() { | |||
| return apiMenuMapper.listParentMenu(); | |||
| } | |||
| @Override | |||
| public List<ApiMenu> listMenu() { | |||
| return apiMenuMapper.listApiMenu(null); | |||
| } | |||
| @Override | |||
| public List<ListApiSubmenuVO> listApiSubmenu(Long id) { | |||
| return apiMenuMapper.listSubmenu(id); | |||
| } | |||
| } | |||
| @@ -30,7 +30,7 @@ | |||
| and `name` = #{name} | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status = #{status} | |||
| and `status` = #{status} | |||
| </if> | |||
| </sql> | |||
| @@ -79,4 +79,13 @@ | |||
| LEFT JOIN api_detail d ON m.id = d.menu_id | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| <select id="listSubmenu" resultType="com.iformall.domain.vo.sm.ListApiSubmenuVO"> | |||
| SELECT | |||
| m.id AS id, m.update_time AS updateTime, m.name AS name, m.status AS status, d.id AS detailId, d.description AS description | |||
| FROM | |||
| api_menu m | |||
| LEFT JOIN api_detail d ON m.id = d.menu_id | |||
| WHERE | |||
| m.delete_flag = 0 AND m.`status` = 0 AND m.parent_id = #{id} | |||
| </select> | |||
| </mapper> | |||