13693261870
9 天以前 db9f34881bfb372892823fcd403f3d833a4ecdfe
Merge branch 'master' of http://192.168.11.205:9000/r/se-cloud
已添加8个文件
已修改2个文件
954 ■■■■■ 文件已修改
docker-compose/mysql/initdb/se_cloud_20240629.sql 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker-compose/mysql/initdb/se_cloud_20241204.sql 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/controller/SysAppTokenController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/domain/SysAppToken.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/mapper/SysAppTokenMapper.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/service/impl/SysAppTokenServiceImpl.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/service/inte/ISysAppTokenService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/resources/mapper/system/SysAppTokenMapper.xml 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/token.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/token/index.vue 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker-compose/mysql/initdb/se_cloud_20240629.sql
@@ -176,7 +176,7 @@
-- ä¸€çº§èœå•
insert into sys_menu values('1', '系统管理', '0', '1', 'system',           null, '', '', 1, 0, 'M', '0', '0', '', 'system',   'admin', sysdate(), '', null, '系统管理目录');
-- insert into sys_menu values('2', '系统监控', '0', '2', 'monitor',          null, '', '', 1, 0, 'M', '0', '0', '', 'monitor',  'admin', sysdate(), '', null, '系统监控目录');
-- insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null, '', '', 1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录');
insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null, '', '', 1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录', '');
-- insert into sys_menu values('4', '官网', '0', '4', 'http://se.vip', null, '', '', 0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, '官网地址');
-- äºŒçº§èœå•
insert into sys_menu values('100',  '用户管理',       '1',   '1', 'user',       'system/user/index',                 '', '', 1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
@@ -193,9 +193,9 @@
-- insert into sys_menu values('111',  'Sentinel控制台', '2',   '3', 'http://localhost:8718',        '',                '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list',   'sentinel',      'admin', sysdate(), '', null, '流量控制菜单');
-- insert into sys_menu values('112',  'Nacos控制台',    '2',   '4', 'http://localhost:8848/nacos',  '',                '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list',      'nacos',         'admin', sysdate(), '', null, '服务治理菜单');
-- insert into sys_menu values('113',  'Admin控制台',    '2',   '5', 'http://localhost:9100/login',  '',                '', '', 0, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
-- insert into sys_menu values('114',  '表单构建',       '3',   '1', 'build',      'tool/build/index',                  '', '', 1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
-- insert into sys_menu values('115',  '代码生成',       '3',   '2', 'gen',        'tool/gen/index',                    '', '', 1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
-- insert into sys_menu values('116',  '系统接口',       '3',   '3', 'http://localhost:8080/swagger-ui/index.html', '', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
insert into sys_menu values('114',  '表单构建',       '3',   '1', 'build',      'tool/build/index',                  '', '', 1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单', '');
insert into sys_menu values('115',  '代码生成',       '3',   '2', 'gen',        'tool/gen/index',                    '', '', 1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单', '');
insert into sys_menu values('116',  '系统接口',       '3',   '3', 'http://localhost:8080/swagger-ui/index.html', '', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单', '');
-- ä¸‰çº§èœå•
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'system/operlog/index',    '', '', 1, 0, 'C', '0', '0', 'system:operlog:list',    'form',          'admin', sysdate(), '', null, '操作日志菜单');
insert into sys_menu values('501',  '登录日志', '108', '2', 'logininfor', 'system/logininfor/index', '', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor',    'admin', sysdate(), '', null, '登录日志菜单');
@@ -267,12 +267,12 @@
-- insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus',   '#', 'admin', sysdate(), '', null, '');
-- insert into sys_menu values('1054', '任务导出', '110', '6', '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export',         '#', 'admin', sysdate(), '', null, '');
-- ä»£ç ç”ŸæˆæŒ‰é’®
-- insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query',             '#', 'admin', sysdate(), '', null, '');
-- insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit',              '#', 'admin', sysdate(), '', null, '');
-- insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove',            '#', 'admin', sysdate(), '', null, '');
-- insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import',            '#', 'admin', sysdate(), '', null, '');
-- insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview',           '#', 'admin', sysdate(), '', null, '');
-- insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code',              '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query',             '#', 'admin', sysdate(), '', null, '', '');
insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit',              '#', 'admin', sysdate(), '', null, '', '');
insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove',            '#', 'admin', sysdate(), '', null, '', '');
insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import',            '#', 'admin', sysdate(), '', null, '', '');
insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview',           '#', 'admin', sysdate(), '', null, '', '');
insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code',              '#', 'admin', sysdate(), '', null, '', '');
-- é¦–页
insert into sys_menu values('1061', '作战实验条件建设',            '0', '1', '#', '', '', '', 1, 0, 'M', '0', '0', 'system:index:sy',   '#', 'admin', sysdate(), '', null, '首页', 'index');
insert into sys_menu values('1062', '作战概念开发与验证平台',   '1061', '1', '#', '', '', '', 0, 0, 'C', '0', '0', 'system:index:glkf', '#', 'admin', sysdate(), '', null, '概念开发与验证平台', 'index');
docker-compose/mysql/initdb/se_cloud_20241204.sql
@@ -107,5 +107,49 @@
insert into sys_status_ctrl (sys_name,ip,url,method,order_num) values ('用户及权限管理','127.0.0.1','http://localhost:8080/system/health', 'GET',1);
insert into sys_status_ctrl (sys_name,ip,url,method,order_num) values ('数据管理分系统','127.0.0.1','http://localhost:8080/gateway/health','GET',2);
-- ----------------------------
-- 03、分系统任务控制表
-- ----------------------------
drop table if exists sys_app_token;
create table sys_app_token (
  id                bigint(20)      not null auto_increment    comment 'ID',
  app_name          varchar(200)                               comment '系统名称',
  token             varchar(50)                                comment '令牌',
  expire_time       datetime                                   comment '失效时间',
  role_name         varchar(20)     default 'readonly'         comment '角色名称',
  status            char(1)         default 0                  comment '状态(0正常 1停用)',
  create_by         varchar(64)     default ''                 comment '创建者',
  create_time       datetime                                   comment '创建时间',
  update_by         varchar(64)     default ''                 comment '更新者',
  update_time       datetime                                   comment '更新时间',
  remark            varchar(500)                               comment '备注',
  primary key (id)
) engine=innodb auto_increment=1 comment = '外接应用表';
select * from sys_app_token order by id; -- select * from sys_role;
insert into sys_app_token (app_name, token, expire_time, role_name, create_by, create_time) values ('综合管理分系统', uuid(), '2027-01-01 00:00:00', 'superuser', 'admin', now()); -- 1801411200000
-- èœå• SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('外接应用', '3', '1', 'token', 'system/token/index', 1, 0, 'M', '0', '0', 'system:token:list', '#', 'admin', sysdate(), '', null, '外接应用');
-- æŒ‰é’®çˆ¶èœå•ID
SELECT @parentId := LAST_INSERT_ID();
-- æŒ‰é’® SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, mark)
values('外接应用查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'system:token:query',        '#', 'admin', sysdate(), '', null, '', 'sys');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, mark)
values('外接应用新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'system:token:add',          '#', 'admin', sysdate(), '', null, '', 'sys');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, mark)
values('外接应用修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'system:token:edit',         '#', 'admin', sysdate(), '', null, '', 'sys');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remar, markk)
values('外接应用删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'system:token:remove',       '#', 'admin', sysdate(), '', null, '', 'sys');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, mark)
values('外接应用导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'system:token:export',       '#', 'admin', sysdate(), '', null, '', 'sys');
-- ----------------------------
se-modules/se-system/src/main/java/com/se/system/controller/SysAppTokenController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.se.system.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import com.se.system.service.impl.SysAppTokenServiceImpl;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.se.common.log.annotation.Log;
import com.se.common.log.enums.BusinessType;
import com.se.common.security.annotation.RequiresPermissions;
import com.se.system.domain.SysAppToken;
import com.se.common.core.web.controller.BaseController;
import com.se.common.core.web.domain.AjaxResult;
import com.se.common.core.utils.poi.ExcelUtil;
import com.se.common.core.web.page.TableDataInfo;
/**
 * å¤–接应用Controller
 *
 * @author se
 * @date 2025-04-07
 */
@RestController
@RequestMapping("/token")
public class SysAppTokenController extends BaseController
{
    @Resource
    private SysAppTokenServiceImpl sysAppTokenService;
    /**
     * æŸ¥è¯¢å¤–接应用列表
     */
    @RequiresPermissions("system:token:list")
    @GetMapping("/list")
    public TableDataInfo list(SysAppToken sysAppToken)
    {
        startPage();
        List<SysAppToken> list = sysAppTokenService.selectSysAppTokenList(sysAppToken);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºå¤–接应用列表
     */
    @RequiresPermissions("system:token:export")
    @Log(title = "外接应用", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, SysAppToken sysAppToken)
    {
        List<SysAppToken> list = sysAppTokenService.selectSysAppTokenList(sysAppToken);
        ExcelUtil<SysAppToken> util = new ExcelUtil<SysAppToken>(SysAppToken.class);
        util.exportExcel(response, list, "外接应用数据");
    }
    /**
     * èŽ·å–å¤–æŽ¥åº”ç”¨è¯¦ç»†ä¿¡æ¯
     */
    @RequiresPermissions("system:token:query")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(sysAppTokenService.selectSysAppTokenById(id));
    }
    /**
     * æ–°å¢žå¤–接应用
     */
    @RequiresPermissions("system:token:add")
    @Log(title = "外接应用", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody SysAppToken sysAppToken)
    {
        return toAjax(sysAppTokenService.insertSysAppToken(sysAppToken));
    }
    /**
     * ä¿®æ”¹å¤–接应用
     */
    @RequiresPermissions("system:token:edit")
    @Log(title = "外接应用", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody SysAppToken sysAppToken)
    {
        return toAjax(sysAppTokenService.updateSysAppToken(sysAppToken));
    }
    /**
     * åˆ é™¤å¤–接应用
     */
    @RequiresPermissions("system:token:remove")
    @Log(title = "外接应用", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(sysAppTokenService.deleteSysAppTokenByIds(ids));
    }
}
se-modules/se-system/src/main/java/com/se/system/domain/SysAppToken.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
package com.se.system.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.se.common.core.annotation.Excel;
import com.se.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
 * å¤–接应用对象 sys_app_token
 *
 * @author se
 * @date 2025-04-07
 */
public class SysAppToken extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ID */
    private Long id;
    /** ç³»ç»Ÿåç§° */
    @Excel(name = "系统名称")
    private String appName;
    /** ä»¤ç‰Œ */
    @Excel(name = "令牌")
    private String token;
    /** å¤±æ•ˆæ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expireTime;
    /** è§’色名称 */
    @Excel(name = "角色名称")
    private String roleName;
    /** çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;
    public void setId(Long id)
    {
        this.id = id;
    }
    public Long getId()
    {
        return id;
    }
    public void setAppName(String appName)
    {
        this.appName = appName;
    }
    public String getAppName()
    {
        return appName;
    }
    public void setToken(String token)
    {
        this.token = token;
    }
    public String getToken()
    {
        return token;
    }
    public void setExpireTime(Date expireTime)
    {
        this.expireTime = expireTime;
    }
    public Date getExpireTime()
    {
        return expireTime;
    }
    public void setRoleName(String roleName)
    {
        this.roleName = roleName;
    }
    public String getRoleName()
    {
        return roleName;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getStatus()
    {
        return status;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("appName", getAppName())
            .append("token", getToken())
            .append("expireTime", getExpireTime())
            .append("roleName", getRoleName())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-modules/se-system/src/main/java/com/se/system/mapper/SysAppTokenMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.se.system.mapper;
import java.util.List;
import com.se.system.domain.SysAppToken;
/**
 * å¤–接应用Mapper接口
 *
 * @author se
 * @date 2025-04-07
 */
public interface SysAppTokenMapper
{
    /**
     * æŸ¥è¯¢å¤–接应用
     *
     * @param id å¤–接应用主键
     * @return å¤–接应用
     */
    public SysAppToken selectSysAppTokenById(Long id);
    /**
     * æŸ¥è¯¢å¤–接应用列表
     *
     * @param sysAppToken å¤–接应用
     * @return å¤–接应用集合
     */
    public List<SysAppToken> selectSysAppTokenList(SysAppToken sysAppToken);
    /**
     * æ–°å¢žå¤–接应用
     *
     * @param sysAppToken å¤–接应用
     * @return ç»“æžœ
     */
    public int insertSysAppToken(SysAppToken sysAppToken);
    /**
     * ä¿®æ”¹å¤–接应用
     *
     * @param sysAppToken å¤–接应用
     * @return ç»“æžœ
     */
    public int updateSysAppToken(SysAppToken sysAppToken);
    /**
     * åˆ é™¤å¤–接应用
     *
     * @param id å¤–接应用主键
     * @return ç»“æžœ
     */
    public int deleteSysAppTokenById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤å¤–接应用
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteSysAppTokenByIds(Long[] ids);
}
se-modules/se-system/src/main/java/com/se/system/service/impl/SysAppTokenServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.se.system.service.impl;
import java.util.List;
import com.se.common.core.utils.DateUtils;
import org.springframework.stereotype.Service;
import com.se.system.mapper.SysAppTokenMapper;
import com.se.system.domain.SysAppToken;
import com.se.system.service.inte.ISysAppTokenService;
import javax.annotation.Resource;
/**
 * å¤–接应用Service业务层处理
 *
 * @author se
 * @date 2025-04-07
 */
@Service
public class SysAppTokenServiceImpl implements ISysAppTokenService
{
    @Resource
    private SysAppTokenMapper sysAppTokenMapper;
    /**
     * æŸ¥è¯¢å¤–接应用
     *
     * @param id å¤–接应用主键
     * @return å¤–接应用
     */
    @Override
    public SysAppToken selectSysAppTokenById(Long id)
    {
        return sysAppTokenMapper.selectSysAppTokenById(id);
    }
    /**
     * æŸ¥è¯¢å¤–接应用列表
     *
     * @param sysAppToken å¤–接应用
     * @return å¤–接应用
     */
    @Override
    public List<SysAppToken> selectSysAppTokenList(SysAppToken sysAppToken)
    {
        return sysAppTokenMapper.selectSysAppTokenList(sysAppToken);
    }
    /**
     * æ–°å¢žå¤–接应用
     *
     * @param sysAppToken å¤–接应用
     * @return ç»“æžœ
     */
    @Override
    public int insertSysAppToken(SysAppToken sysAppToken)
    {
        sysAppToken.setCreateTime(DateUtils.getNowDate());
        return sysAppTokenMapper.insertSysAppToken(sysAppToken);
    }
    /**
     * ä¿®æ”¹å¤–接应用
     *
     * @param sysAppToken å¤–接应用
     * @return ç»“æžœ
     */
    @Override
    public int updateSysAppToken(SysAppToken sysAppToken)
    {
        sysAppToken.setUpdateTime(DateUtils.getNowDate());
        return sysAppTokenMapper.updateSysAppToken(sysAppToken);
    }
    /**
     * æ‰¹é‡åˆ é™¤å¤–接应用
     *
     * @param ids éœ€è¦åˆ é™¤çš„外接应用主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteSysAppTokenByIds(Long[] ids)
    {
        return sysAppTokenMapper.deleteSysAppTokenByIds(ids);
    }
    /**
     * åˆ é™¤å¤–接应用信息
     *
     * @param id å¤–接应用主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteSysAppTokenById(Long id)
    {
        return sysAppTokenMapper.deleteSysAppTokenById(id);
    }
}
se-modules/se-system/src/main/java/com/se/system/service/inte/ISysAppTokenService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.se.system.service.inte;
import java.util.List;
import com.se.system.domain.SysAppToken;
/**
 * å¤–接应用Service接口
 *
 * @author se
 * @date 2025-04-07
 */
public interface ISysAppTokenService
{
    /**
     * æŸ¥è¯¢å¤–接应用
     *
     * @param id å¤–接应用主键
     * @return å¤–接应用
     */
    public SysAppToken selectSysAppTokenById(Long id);
    /**
     * æŸ¥è¯¢å¤–接应用列表
     *
     * @param sysAppToken å¤–接应用
     * @return å¤–接应用集合
     */
    public List<SysAppToken> selectSysAppTokenList(SysAppToken sysAppToken);
    /**
     * æ–°å¢žå¤–接应用
     *
     * @param sysAppToken å¤–接应用
     * @return ç»“æžœ
     */
    public int insertSysAppToken(SysAppToken sysAppToken);
    /**
     * ä¿®æ”¹å¤–接应用
     *
     * @param sysAppToken å¤–接应用
     * @return ç»“æžœ
     */
    public int updateSysAppToken(SysAppToken sysAppToken);
    /**
     * æ‰¹é‡åˆ é™¤å¤–接应用
     *
     * @param ids éœ€è¦åˆ é™¤çš„外接应用主键集合
     * @return ç»“æžœ
     */
    public int deleteSysAppTokenByIds(Long[] ids);
    /**
     * åˆ é™¤å¤–接应用信息
     *
     * @param id å¤–接应用主键
     * @return ç»“æžœ
     */
    public int deleteSysAppTokenById(Long id);
}
se-modules/se-system/src/main/resources/mapper/system/SysAppTokenMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
<?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="com.se.system.mapper.SysAppTokenMapper">
    <resultMap type="SysAppToken" id="SysAppTokenResult">
        <result property="id"    column="id"    />
        <result property="appName"    column="app_name"    />
        <result property="token"    column="token"    />
        <result property="expireTime"    column="expire_time"    />
        <result property="roleName"    column="role_name"    />
        <result property="status"    column="status"    />
        <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"    />
    </resultMap>
    <sql id="selectSysAppTokenVo">
        select id, app_name, token, expire_time, role_name, status, create_by, create_time, update_by, update_time, remark from sys_app_token
    </sql>
    <select id="selectSysAppTokenList" parameterType="SysAppToken" resultMap="SysAppTokenResult">
        <include refid="selectSysAppTokenVo"/>
        <where>
            <if test="appName != null  and appName != ''"> and app_name like concat('%', #{appName}, '%')</if>
            <if test="token != null  and token != ''"> and token = #{token}</if>
            <if test="expireTime != null "> and expire_time = #{expireTime}</if>
            <if test="roleName != null  and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
        </where>
    </select>
    <select id="selectSysAppTokenById" parameterType="Long" resultMap="SysAppTokenResult">
        <include refid="selectSysAppTokenVo"/>
        where id = #{id}
    </select>
    <insert id="insertSysAppToken" parameterType="SysAppToken" useGeneratedKeys="true" keyProperty="id">
        insert into sys_app_token
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="appName != null">app_name,</if>
            <if test="token != null">token,</if>
            <if test="expireTime != null">expire_time,</if>
            <if test="roleName != null">role_name,</if>
            <if test="status != null">status,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="remark != null">remark,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="appName != null">#{appName},</if>
            <if test="token != null">#{token},</if>
            <if test="expireTime != null">#{expireTime},</if>
            <if test="roleName != null">#{roleName},</if>
            <if test="status != null">#{status},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="remark != null">#{remark},</if>
        </trim>
    </insert>
    <update id="updateSysAppToken" parameterType="SysAppToken">
        update sys_app_token
        <trim prefix="SET" suffixOverrides=",">
            <if test="appName != null">app_name = #{appName},</if>
            <if test="token != null">token = #{token},</if>
            <if test="expireTime != null">expire_time = #{expireTime},</if>
            <if test="roleName != null">role_name = #{roleName},</if>
            <if test="status != null">status = #{status},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="remark != null">remark = #{remark},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteSysAppTokenById" parameterType="Long">
        delete from sys_app_token where id = #{id}
    </delete>
    <delete id="deleteSysAppTokenByIds" parameterType="String">
        delete from sys_app_token where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
se-ui/src/api/system/token.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢å¤–接应用列表
export function listToken(query) {
  return request({
    url: '/system/token/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢å¤–接应用详细
export function getToken(id) {
  return request({
    url: '/system/token/' + id,
    method: 'get'
  })
}
// æ–°å¢žå¤–接应用
export function addToken(data) {
  return request({
    url: '/system/token',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹å¤–接应用
export function updateToken(data) {
  return request({
    url: '/system/token',
    method: 'put',
    data: data
  })
}
// åˆ é™¤å¤–接应用
export function delToken(id) {
  return request({
    url: '/system/token/' + id,
    method: 'delete'
  })
}
se-ui/src/views/system/token/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,308 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="系统名称" prop="appName">
        <el-input
          v-model="queryParams.appName"
          placeholder="请输入系统名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="令牌" prop="token">
        <el-input
          v-model="queryParams.token"
          placeholder="请输入令牌"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="失效时间" prop="expireTime">
        <el-date-picker clearable
          v-model="queryParams.expireTime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择失效时间">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="角色名称" prop="roleName">
        <el-input
          v-model="queryParams.roleName"
          placeholder="请输入角色名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['system:token:add']"
        >新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['system:token:edit']"
        >修改</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['system:token:remove']"
        >删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['system:token:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="tokenList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="ID" align="center" prop="id" />
      <el-table-column label="系统名称" align="center" prop="appName" />
      <el-table-column label="令牌" align="center" prop="token" />
      <el-table-column label="失效时间" align="center" prop="expireTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.expireTime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="角色名称" align="center" prop="roleName" />
      <el-table-column label="状态" align="center" prop="status" />
      <el-table-column label="备注" align="center" prop="remark" />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['system:token:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['system:token:remove']"
          >删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹å¤–æŽ¥åº”ç”¨å¯¹è¯æ¡† -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="系统名称" prop="appName">
          <el-input v-model="form.appName" placeholder="请输入系统名称" />
        </el-form-item>
        <el-form-item label="令牌" prop="token">
          <el-input v-model="form.token" placeholder="请输入令牌" readonly />
        </el-form-item>
        <el-form-item label="失效时间" prop="expireTime">
          <el-date-picker clearable
            v-model="form.expireTime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择失效时间">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="角色名称" prop="roleName">
          <el-input v-model="form.roleName" placeholder="请输入角色名称" />
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
        <el-button @click="cancel">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { listToken, getToken, delToken, addToken, updateToken } from "@/api/system/token";
export default {
  name: "Token",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // å¤–接应用表格数据
      tokenList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        appName: null,
        token: null,
        expireTime: null,
        roleName: null,
        status: null,
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢å¤–接应用列表 */
    getList() {
      this.loading = true;
      listToken(this.queryParams).then(response => {
        this.tokenList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        id: null,
        appName: null,
        token: null,
        expireTime: null,
        roleName: null,
        status: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        remark: null
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加外接应用";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      getToken(id).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改外接应用";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updateToken(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addToken(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除外接应用编号为"' + ids + '"的数据项?').then(function() {
        return delToken(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('system/token/export', {
        ...this.queryParams
      }, `token_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>