@@ -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 | @Autowired | ||||
private ApiGuideService apiGuideService; | private ApiGuideService apiGuideService; | ||||
@ApiOperation("分页查询api菜单") | |||||
@ApiOperation("分页查询api指南") | |||||
@GetMapping("/page") | @GetMapping("/page") | ||||
public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { | public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { | ||||
return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); | return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); | ||||
} | } | ||||
@ApiOperation("新增api菜单") | |||||
@ApiOperation("新增api指南") | |||||
@PostMapping("/save") | @PostMapping("/save") | ||||
public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { | public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { | ||||
apiGuideService.saveApiGuide(dto); | apiGuideService.saveApiGuide(dto); | ||||
return new ResultData(); | return new ResultData(); | ||||
} | } | ||||
@ApiOperation("修改api菜单") | |||||
@ApiOperation("修改api指南") | |||||
@PostMapping("/update") | @PostMapping("/update") | ||||
public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { | public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { | ||||
apiGuideService.updateApiGuide(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 | @Override | ||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | ||||
AuthIgnore annotation; | AuthIgnore annotation; | ||||
if(handler instanceof HandlerMethod) { | if(handler instanceof HandlerMethod) { | ||||
annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class); | annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class); | ||||
@@ -681,6 +681,9 @@ public enum ErrorCode{ | |||||
SECRET_NOT_EXISTS(71001, "该秘钥不存在"), | SECRET_NOT_EXISTS(71001, "该秘钥不存在"), | ||||
SERVICE_LOCKED(71002, "合作商被锁定,无法修改"), | SERVICE_LOCKED(71002, "合作商被锁定,无法修改"), | ||||
NAME_REPEAT(81000, "名称重复"), | |||||
EXIST_AVAILABLE_GUIDE(81001, "存在可用指南"), | |||||
; | ; | ||||
private int code; | 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.iformall.domain.po.sm.ApiMenu; | ||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
import com.iformall.domain.vo.sm.ApiMenuVO; | import com.iformall.domain.vo.sm.ApiMenuVO; | ||||
import com.iformall.domain.vo.sm.ListApiSubmenuVO; | |||||
import java.util.List; | import java.util.List; | ||||
@@ -16,6 +17,8 @@ public interface ApiMenuMapper extends BaseMapper<ApiMenu> { | |||||
List<ApiMenu> listParentMenu(); | List<ApiMenu> listParentMenu(); | ||||
List<ApiMenuVO> listApiMenuAndDetail(ApiMenu apiMenu); | 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.iformall.domain.po.sm.ApiMenu; | ||||
import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
import com.iformall.domain.vo.sm.ApiMenuVO; | import com.iformall.domain.vo.sm.ApiMenuVO; | ||||
import com.iformall.domain.vo.sm.ListApiSubmenuVO; | |||||
import java.util.List; | import java.util.List; | ||||
@@ -23,4 +24,8 @@ public interface ApiMenuService extends IService<ApiMenu> { | |||||
List<ApiMenu> listParentMenu(); | List<ApiMenu> listParentMenu(); | ||||
ApiMenuVO getApiMenu(Long id); | ApiMenuVO getApiMenu(Long id); | ||||
List<ApiMenu> listMenu(); | |||||
List<ListApiSubmenuVO> listApiSubmenu(Long id); | |||||
} | } |
@@ -1,16 +1,23 @@ | |||||
package com.iformall.service.sm.impl; | package com.iformall.service.sm.impl; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
import com.github.pagehelper.PageInfo; | 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.SaveApiGuideDTO; | ||||
import com.iformall.domain.dto.sm.UpdateApiGuideDTO; | import com.iformall.domain.dto.sm.UpdateApiGuideDTO; | ||||
import com.iformall.domain.po.sm.ApiGuide; | import com.iformall.domain.po.sm.ApiGuide; | ||||
import com.iformall.exception.BizException; | |||||
import com.iformall.service.sm.ApiGuideService; | import com.iformall.service.sm.ApiGuideService; | ||||
import com.iformall.mapper.ApiGuideMapper; | import com.iformall.mapper.ApiGuideMapper; | ||||
import org.apache.commons.collections.CollectionUtils; | |||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
import java.util.List; | |||||
/** | /** | ||||
* | * | ||||
*/ | */ | ||||
@@ -27,15 +34,52 @@ public class ApiGuideServiceImpl extends ServiceImpl<ApiGuideMapper, ApiGuide> i | |||||
@Override | @Override | ||||
public void saveApiGuide(SaveApiGuideDTO dto) { | 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); | ApiGuide apiGuide = SaveApiGuideDTO.mapping(dto); | ||||
apiGuideMapper.insert(apiGuide); | apiGuideMapper.insert(apiGuide); | ||||
} | } | ||||
@Override | @Override | ||||
public void updateApiGuide(UpdateApiGuideDTO dto) { | 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); | ApiGuide apiGuide = UpdateApiGuideDTO.mapping(dto); | ||||
apiGuideMapper.updateById(apiGuide); | 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.ApiDetail; | ||||
import com.iformall.domain.po.sm.ApiMenu; | import com.iformall.domain.po.sm.ApiMenu; | ||||
import com.iformall.domain.vo.sm.ApiMenuVO; | import com.iformall.domain.vo.sm.ApiMenuVO; | ||||
import com.iformall.domain.vo.sm.ListApiSubmenuVO; | |||||
import com.iformall.mapper.ApiDetailMapper; | import com.iformall.mapper.ApiDetailMapper; | ||||
import com.iformall.service.sm.ApiMenuService; | import com.iformall.service.sm.ApiMenuService; | ||||
import com.iformall.mapper.ApiMenuMapper; | import com.iformall.mapper.ApiMenuMapper; | ||||
@@ -76,6 +77,16 @@ public class ApiMenuServiceImpl extends ServiceImpl<ApiMenuMapper, ApiMenu> impl | |||||
public List<ApiMenu> listParentMenu() { | public List<ApiMenu> listParentMenu() { | ||||
return apiMenuMapper.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} | and `name` = #{name} | ||||
</if> | </if> | ||||
<if test=" null != status "> | <if test=" null != status "> | ||||
and `status = #{status} | |||||
and `status` = #{status} | |||||
</if> | </if> | ||||
</sql> | </sql> | ||||
@@ -79,4 +79,13 @@ | |||||
LEFT JOIN api_detail d ON m.id = d.menu_id | LEFT JOIN api_detail d ON m.id = d.menu_id | ||||
<include refid="dynamicWhereConditions"/> | <include refid="dynamicWhereConditions"/> | ||||
</select> | </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> | </mapper> |