Ver Fonte

feat(system): 添加主导航表相关功能

- 新增 GameNavigator 实体类
- 新增 GameNavigatorBo 业务对象类
- 新增 GameNavigatorController 控制器- 新增 GameNavigatorMapper Mapper接口和 XML 文件
- 新增 GameNavigatorVo 视图对象类
- 新增 IGameNavigatorService 服务接口
- 新增 IGameNavigatorServiceImpl 服务实现类
zhou há 2 semanas atrás
pai
commit
80c2d18fd2

+ 131 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/controller/GameNavigatorController.java

@@ -0,0 +1,131 @@
+package org.dromara.system.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.bo.GameNavigatorBo;
+import org.dromara.system.domain.vo.GameNavigatorVo;
+import org.dromara.system.domain.vo.VsNavBottomMainVo;
+import org.dromara.system.service.IGameNavigatorService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 赛事主导航表管理
+ *
+ * @author system
+ * @date 2025-01-20
+ */
+@Slf4j
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/scenic/navigator")
+public class GameNavigatorController extends BaseController {
+
+    private final IGameNavigatorService gameNavigatorService;
+
+    /**
+     * 查询底部主导航表列表
+     */
+    @SaCheckPermission("scenic:navigator:list")
+    @GetMapping("/list")
+    public TableDataInfo<GameNavigatorVo> list(GameNavigatorBo bo, PageQuery pageQuery) {
+        return gameNavigatorService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出底部主导航表列表
+     */
+    @SaCheckPermission("scenic:navigator:export")
+    @Log(title = "底部主导航表", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(GameNavigatorBo bo, HttpServletResponse response) {
+        try {
+            List<GameNavigatorVo> list = gameNavigatorService.queryList(bo);
+            ExcelUtil.exportExcel(list, "底部主导航表", GameNavigatorVo.class, response);
+        } catch (Exception e) {
+            // 如果导出过程中出现异常,重置Content-Type并返回错误信息
+            response.reset();
+            response.setContentType("application/json;charset=UTF-8");
+            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+            try {
+                response.getWriter().write("{\"code\":500,\"msg\":\"导出失败:" + e.getMessage() + "\"}");
+            } catch (IOException ex) {
+                // 忽略写入错误
+            }
+        }
+    }
+
+    /**
+     * 获取底部主导航表详细信息
+     *
+     * @param navId 主键
+     */
+    @SaCheckPermission("scenic:navigator:query")
+    @GetMapping("/{navId}")
+    public R<GameNavigatorVo> getInfo(@NotNull(message = "主键不能为空")
+                                        @PathVariable Long navId) {
+        return R.ok(gameNavigatorService.queryById(navId));
+    }
+
+    /**
+     * 新增底部主导航表
+     */
+    @SaCheckPermission("scenic:navigator:add")
+    @Log(title = "底部主导航表", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody GameNavigatorBo bo) {
+        return toAjax(gameNavigatorService.insertByBo(bo));
+    }
+
+    /**
+     * 修改底部主导航表
+     */
+    @SaCheckPermission("scenic:navigator:edit")
+    @Log(title = "底部主导航表", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody GameNavigatorBo bo) {
+        return toAjax(gameNavigatorService.updateByBo(bo));
+    }
+
+    /**
+     * 删除底部主导航表
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("scenic:navigator:remove")
+    @Log(title = "底部主导航表", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(gameNavigatorService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 获取启用的底部主导航列表
+     */
+    @GetMapping("/enabled")
+    public R<List<GameNavigatorVo>> getEnabledNavList() {
+        return R.ok(gameNavigatorService.getEnabledNavList());
+    }
+
+}

+ 83 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/GameNavigator.java

@@ -0,0 +1,83 @@
+package org.dromara.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.tenant.core.TenantEntity;
+
+import java.io.Serial;
+
+/**
+ * 主导航表 common_navigator
+ *
+ * @author system
+ * @date 2025-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("common_navigator")
+@AutoMapper(target = org.dromara.system.domain.vo.GameNavigatorVo.class)
+public class GameNavigator extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 导航ID
+     */
+    @TableId(value = "nav_id", type = IdType.AUTO)
+    private Long navId;
+
+    /**
+     * 导航名称
+     */
+    private String name;
+
+    /**
+     * 导航图标
+     */
+    private String pic;
+
+    /**
+     * 图标颜色
+     */
+    private String color;
+
+    /**
+     * 跳转类型(1跳转链接 2不跳转 3小程序内链 4小程序外链 5H5外链 6公众号文章  7电话拨号)
+     */
+    private Integer jumpType;
+
+    /**
+     * 跳转路径
+     */
+    private String jumpPath;
+
+    /**
+     * 活动类型(0赛前 1赛中 2赛后)
+     */
+    private Integer activityType;
+
+    /**
+     * 小程序AppID(当 jump_type = 4 小程序外链 时使用)
+     */
+    private String appId;
+
+    /**
+     * 排序号
+     */
+    private Integer sortNum;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private Integer status;
+
+    /**
+     * 显示标志
+     */
+    private Integer showFlag;
+}

+ 83 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameNavigatorBo.java

@@ -0,0 +1,83 @@
+package org.dromara.system.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.system.domain.GameNavigator;
+
+/**
+ * 主导航表业务对象 common_navigator
+ *
+ * @author system
+ * @date 2025-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = GameNavigator.class, reverseConvertGenerate = false)
+public class GameNavigatorBo extends BaseEntity {
+
+    /**
+     * 导航ID
+     */
+    @NotNull(message = "导航ID不能为空", groups = { EditGroup.class })
+    private Long navId;
+
+    /**
+     * 导航名称
+     */
+    @NotBlank(message = "导航名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 导航图标
+     */
+    @NotBlank(message = "导航图标不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String pic;
+
+    /**
+     * 图标颜色
+     */
+    private String color;
+
+    /**
+     * 跳转类型(1跳转链接 2不跳转 3小程序内链 4小程序外链 5H5外链 6公众号文章  7电话拨号)
+     */
+    @NotNull(message = "跳转类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer jumpType;
+
+    /**
+     * 跳转路径
+     */
+    private String jumpPath;
+
+    /**
+     * 活动类型(0赛前 1赛中 2赛后)
+     */
+    private Integer activityType;
+
+    /**
+     * 小程序AppID
+     */
+    private String appId;
+
+    /**
+     * 排序号
+     */
+    @NotNull(message = "排序号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer sortNum;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private Integer status;
+
+    /**
+     * 显示标志
+     */
+    private Integer showFlag;
+}

+ 144 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameNavigatorVo.java

@@ -0,0 +1,144 @@
+package org.dromara.system.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.system.domain.GameNavigator;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 主导航表视图对象 common_navigator
+ *
+ * @author system
+ * @date 2025-01-20
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = GameNavigator.class)
+public class GameNavigatorVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 导航ID
+     */
+    @ExcelProperty(value = "导航ID")
+    private Long navId;
+
+    /**
+     * 导航名称
+     */
+    @ExcelProperty(value = "导航名称")
+    private String name;
+
+    /**
+     * 导航图标
+     */
+    @ExcelProperty(value = "导航图标")
+    private String pic;
+
+    /**
+     * 图标颜色
+     */
+    @ExcelProperty(value = "图标颜色")
+    private String color;
+
+    /**
+     * 跳转类型(1跳转链接 2不跳转 3小程序内链 4小程序外链 5H5外链 6公众号文章  7电话拨号)
+     */
+    @ExcelProperty(value = "跳转类型")
+    private Integer jumpType;
+
+    /**
+     * 跳转路径
+     */
+    @ExcelProperty(value = "跳转路径")
+    private String jumpPath;
+
+    /**
+     * 活动类型(0赛前 1赛中 2赛后)
+     */
+    @ExcelProperty(value = "活动类型")
+    @ExcelDictFormat(dictType = "game_activity_type")
+    private Integer activityType;
+
+    /**
+     * 小程序AppID
+     */
+    @ExcelProperty(value = "小程序AppID")
+    private String appId;
+
+    /**
+     * 排序号
+     */
+    @ExcelProperty(value = "排序号")
+    private Integer sortNum;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_normal_disable")
+    private Integer status;
+
+    /**
+     * 显示标志
+     */
+    @ExcelProperty(value = "显示标志")
+    private Integer showFlag;
+
+  /**
+   * 删除标志
+   */
+  @ExcelProperty(value = "删除标志")
+  private Integer delFlag;
+
+  /**
+   * 备注
+   */
+  @ExcelProperty(value = "备注")
+  private String remark;
+
+  /**
+   * 创建者
+   */
+  @ExcelProperty(value = "创建者")
+  private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+  /**
+   * 更新者
+   */
+  @ExcelProperty(value = "更新者")
+  private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @ExcelProperty(value = "更新时间")
+    private Date updateTime;
+
+  /**
+   * 租户编号
+   */
+  @ExcelProperty(value = "租户编号")
+  private String tenantId;
+
+  /**
+   * 创建部门
+   */
+  @ExcelProperty(value = "创建部门")
+  private Long createDept;
+}

+ 28 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/mapper/GameNavigatorMapper.java

@@ -0,0 +1,28 @@
+package org.dromara.system.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.GameNavigator;
+import org.dromara.system.domain.VsNavBottomMain;
+import org.dromara.system.domain.vo.GameNavigatorVo;
+import org.dromara.system.domain.vo.VsNavBottomMainVo;
+
+import java.util.List;
+
+/**
+ * 主导航表Mapper接口
+ *
+ * @author zlt
+ * @date 2025-08-15
+ */
+public interface GameNavigatorMapper extends BaseMapperPlus<GameNavigator, GameNavigatorVo> {
+
+    /**
+     * 获取启用的主导航列表
+     */
+    List<GameNavigatorVo> getEnabledNavList();
+
+    /**
+     * 根据类型获取导航列表
+     */
+    List<GameNavigatorVo> getNavListByType(String type);
+}

+ 76 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/IGameNavigatorService.java

@@ -0,0 +1,76 @@
+package org.dromara.system.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.bo.GameNavigatorBo;
+import org.dromara.system.domain.vo.GameNavigatorVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 主导航表Service接口
+ *
+ * @author system
+ * @date 2025-01-20
+ */
+public interface IGameNavigatorService {
+
+    /**
+     * 查询主导航表
+     *
+     * @param navId 主键
+     * @return 主导航表
+     */
+    GameNavigatorVo queryById(Long navId);
+
+    /**
+     * 分页查询主导航表列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 主导航表分页列表
+     */
+    TableDataInfo<GameNavigatorVo> queryPageList(GameNavigatorBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的主导航表列表
+     *
+     * @param bo 查询条件
+     * @return 主导航表列表
+     */
+    List<GameNavigatorVo> queryList(GameNavigatorBo bo);
+
+    /**
+     * 新增主导航表
+     *
+     * @param bo 主导航表
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(GameNavigatorBo bo);
+
+    /**
+     * 修改主导航表
+     *
+     * @param bo 主导航表
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(GameNavigatorBo bo);
+
+    /**
+     * 校验并批量删除主导航表信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 获取启用的主导航列表
+     *
+     * @return 主导航列表
+     */
+    List<GameNavigatorVo> getEnabledNavList();
+
+}

+ 152 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/IGameNavigatorServiceImpl.java

@@ -0,0 +1,152 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.GameNavigator;
+import org.dromara.system.domain.bo.GameNavigatorBo;
+import org.dromara.system.domain.vo.GameNavigatorVo;
+import org.dromara.system.mapper.GameNavigatorMapper;
+import org.dromara.system.service.IGameNavigatorService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 主导航表Service业务层处理
+ *
+ * @author system
+ * @date 2025-01-20
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class IGameNavigatorServiceImpl implements IGameNavigatorService {
+
+    private final GameNavigatorMapper baseMapper;
+
+    /**
+     * 查询主导航表
+     *
+     * @param navId 主键
+     * @return 主导航表
+     */
+    @Override
+    public GameNavigatorVo queryById(Long navId) {
+        return baseMapper.selectVoById(navId);
+    }
+
+    /**
+     * 分页查询主导航表列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 主导航表分页列表
+     */
+    @Override
+    public TableDataInfo<GameNavigatorVo> queryPageList(GameNavigatorBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<GameNavigator> lqw = buildQueryWrapper(bo);
+        Page<GameNavigatorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的主导航表列表
+     *
+     * @param bo 查询条件
+     * @return 主导航表列表
+     */
+    @Override
+    public List<GameNavigatorVo> queryList(GameNavigatorBo bo) {
+        LambdaQueryWrapper<GameNavigator> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<GameNavigator> buildQueryWrapper(GameNavigatorBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<GameNavigator> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getNavId() != null, GameNavigator::getNavId, bo.getNavId());
+        lqw.like(StringUtils.isNotBlank(bo.getName()), GameNavigator::getName, bo.getName());
+        lqw.eq(Objects.nonNull(bo.getJumpType()), GameNavigator::getJumpType, bo.getJumpType());
+        lqw.eq(Objects.nonNull(bo.getStatus()), GameNavigator::getStatus, bo.getStatus());
+        lqw.eq(bo.getShowFlag() != null, GameNavigator::getShowFlag, bo.getShowFlag());
+        lqw.orderByAsc(GameNavigator::getSortNum);
+        return lqw;
+    }
+
+    /**
+     * 新增主导航表
+     *
+     * @param bo 主导航表
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(GameNavigatorBo bo) {
+        GameNavigator add = MapstructUtils.convert(bo, GameNavigator.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            if (add != null) {
+                bo.setNavId(add.getNavId());
+            }
+        }
+        return flag;
+    }
+
+    /**
+     * 修改主导航表
+     *
+     * @param bo 主导航表
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(GameNavigatorBo bo) {
+        GameNavigator update = MapstructUtils.convert(bo, GameNavigator.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(GameNavigator entity) {
+        // TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除主导航表
+     *
+     * @param ids     需要删除的主键集合
+     * @param isValid 是否校验,true-删除前校验,false-不校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            // TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    /**
+     * 获取启用的主导航列表
+     *
+     * @return 主导航列表
+     */
+    @Override
+    public List<GameNavigatorVo> getEnabledNavList() {
+        return baseMapper.getEnabledNavList();
+    }
+
+}

+ 43 - 0
ruoyi-modules/ruoyi-game-event/src/main/resources/mapper/system/GameNavigatorMapper.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.GameNavigatorMapper">
+
+    <resultMap type="org.dromara.system.domain.vo.GameNavigatorVo" id="GameNavigatorResult">
+        <result property="navId" column="nav_id"/>
+        <result property="name" column="name"/>
+        <result property="pic" column="pic"/>
+        <result property="color" column="color"/>
+        <result property="jumpType" column="jump_type"/>
+        <result property="jumpPath" column="jump_path"/>
+        <result property="activityType" column="activity_type"/>
+        <result property="appId" column="app_id"/>
+        <result property="sortNum" column="sort_num"/>
+        <result property="status" column="status"/>
+        <result property="showFlag" column="show_flag"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="createDept" column="create_dept"/>
+    </resultMap>
+
+    <!-- 获取启用的底部主导航列表 -->
+    <select id="getEnabledNavList" resultMap="GameNavigatorResult">
+        SELECT * FROM common_navigator
+        WHERE status = 0 AND del_flag = 0
+        ORDER BY sort_num ASC
+    </select>
+
+    <!-- 根据类型获取导航列表 -->
+<!--    <select id="getNavListByType" resultMap="GameNavigatorResult">-->
+<!--        SELECT * FROM common_navigator-->
+<!--        WHERE type = #{type} AND del_flag = 0-->
+<!--        ORDER BY sort_num ASC-->
+<!--    </select>-->
+
+</mapper>