09btree

本文详细介绍了C++编程语言及其在数据结构实现中的应用,包括二叉树、队列、栈等基本数据结构的定义与操作。通过具体代码实例,展示了如何使用C++进行高效的数据处理。

09btree/btree.c

#include <stdio.h>
#include "btree.h"
#include "queue.h"

static void bnode_init(struct btree_info *info,
        struct bnode_info *bnode)
{
    bnode->parent = NULL;
    bnode->lchild = NULL;
    bnode->rchild = NULL;
}

static void btree_add(struct btree_info *info,
        struct bnode_info *bnode,
        int (*cmp)(struct bnode_info *,
            struct bnode_info *)) 
{
    bnode_init(info, bnode);

    struct bnode_info *cur = info->root;
    struct bnode_info **pparent = &info->root;

    while (*pparent) {
        if (cmp(bnode, cur) < 0) {
            pparent = &cur->lchild;
        } else {
            pparent = &cur->rchild;
        }   

        if (*pparent) {
            cur = *pparent;
        }   
    }   

    *pparent = bnode;
    bnode->parent = cur;
}


09btree/Makefile

SRCS := btree.c
SUBDIR := 

$(BUILT_IN): $(SRCS:.c=.o) $(SUBDIR)
    $(LD) $(LDFLAGS) -r -o $@ $(SRCS:.c=.o) $(SUBDIR:=/$(BUILT_IN))

$(SUBDIR):
    $(MAKE) -C $@

$(SRCS:.c=.o):
    $(CC) $(CFLAGS) -c $<

$(DEP): $(SRCS)
    $(CC) $(CFLAGS) -MM $(SRCS) >$@
    sed -i "s/: / $@: /g" $@

sinclude $(DEP)

.PHONY: clean $(SUBDIR)

clean:
    for dir in $(SUBDIR); do \
        $(MAKE) -C $$dir clean; \
    done
    $(RM) $(SRCS:.c=.o) $(BUILT_IN) $(DEP)


09btree/include/btree.h

struct bnode_info {
    struct bnode_info *parent;
    struct bnode_info *lchild;
    struct bnode_info *rchild;
};

struct btree_info {
    struct bnode_info *root;
    void (*bnode_init)(struct btree_info *,
            struct bnode_info *);
    void (*add)(struct btree_info *,
            struct bnode_info *bnode,
            int (*cmp)(struct bnode_info *,
                struct bnode_info *));
    void (*preorder)(struct btree_info *,
            void (*)(struct btree_info *,
                struct bnode_info *));
    void (*inorder)(struct btree_info *,
            void (*)(struct btree_info *,
                struct bnode_info *));
    void (*postorder)(struct btree_info *,
            void (*)(struct btree_info *,
                struct bnode_info *));
    void (*levelorder)(struct btree_info *,
            void (*)(struct btree_info *,
                struct bnode_info *));
    void (*reverse)(struct btree_info *); 
    void (*del)(struct btree_info *,
            struct bnode_info *,
            void (*)(struct btree_info *,
                struct bnode_info *));


 

    struct bnode_info *(*search)(struct btree_info *,
            struct bnode_info *key,
            int (*cmp)(struct bnode_info *,
                struct bnode_info *));
};

void btree_init(struct btree_info *);
void btree_destroy(struct btree_info *,
        void (*)(struct btree_info *,
            struct bnode_info *));

#define offsetof(type, member) \
    ( (size_t)(&((type*)0)->member) )

#define container_of(ptr, type, member) \
    ({const typeof(((type*)0)->member) *__mptr = ptr; \
      (type *)((char*)ptr - offsetof(type, member));})


 


09btree/include/list.h

struct node_info {
    struct node_info *prev;
    struct node_info *next;
    char priv[];
};

struct list_info {
    struct node_info *head;
    void (*add)(struct list_info *,
            const void *data_entry,
            size_t data_size);
    void (*add_tail)(struct list_info *,
            const void *data_entry,
            size_t data_size);
    void (*del)(struct list_info *,
            struct node_info *,
            size_t data_size);
};

#define list_for_each(cur, head) \
    for (cur = (head)->next; \
        (cur) != (head); \
        cur = (cur)->next)

#define list_for_each_safe(cur, tmp, head) \
    for (cur = (head)->next, tmp = (cur)->next; \
        (cur) != (head); \
        cur = tmp, tmp = (tmp)->next)

#define ENTRY(node, type) ((type*)(node->priv))

void list_init(struct list_info*);
void list_destroy(struct list_info*);


09btree/include/queue.h

#include "list.h"

struct queue_info {
    struct list_info list;
    void (*push)(struct queue_info *,
            const void *data_entry,
            size_t data_size);
    int (*pop)(struct queue_info *,
            void *data_entry,
            size_t data_size);
    int (*top)(struct queue_info *,
            void *data_entry,
            size_t data_size);
    int (*isempty)(struct queue_info *); 
};

void queue_init(struct queue_info *); 
void queue_destroy(struct queue_info *); 
~                                                


09btree/main/test.c

#include <stdio.h>
#include <stdlib.h>
#include "btree.h"

struct node_info {
    ssize_t data;
    struct bnode_info bnode;
};

static int cmp(struct bnode_info *a, struct bnode_info *b)
{
    struct node_info *pa = container_of(a, struct node_info, bnode);
    struct node_info *pb = container_of(b, struct node_info, bnode);

    return pa->data - pb->data;
}

static void print_node(struct btree_info *info,
        struct bnode_info *bnode)
{
    struct node_info *ptr = container_of(bnode, struct node_info, bnode);
    printf("%ld ", ptr->data);
}

static void m_free(struct btree_info *info,
        struct bnode_info *bnode)
{
    info->bnode_init(info, bnode);
    free(container_of(bnode, struct node_info, bnode));
}


 

int main()
{
    struct btree_info btree;
    btree_init(&btree);

    struct node_info *cur = NULL;

    ssize_t s[] = {10, 15, 2, 6, 7, 3, 8, 5, 2, 0, -2, 6};

    size_t i = 0;
    for (i = 0; i < sizeof(s) / sizeof(ssize_t); ++i) {
        cur = (struct node_info *)malloc(sizeof(struct node_info));
        cur->data = s[i];
        btree.add(&btree, &cur->bnode, cmp);
    }

    struct node_info key = {6};
    struct bnode_info *search_ret = NULL;


 

    printf("del node %ld\n", key.data);
    if (search_ret = btree.search(&btree, &key.bnode, cmp)) {
        btree.del(&btree, search_ret, m_free);
    }

    printf("preorder\n");
    btree.preorder(&btree, print_node);
    printf("\n");
    printf("inorder\n");
    btree.inorder(&btree, print_node);
    printf("\n");
    printf("postorder\n");
    btree.postorder(&btree, print_node);
    printf("\n");
    printf("levelorder\n");
    btree.levelorder(&btree, print_node);
    printf("\n");

    btree_destroy(&btree, m_free);

    return 0;
}


09btree/main/Makefile

SRCS := test.c
SUBDIR := 

$(BUILT_IN): $(SRCS:.c=.o) $(SUBDIR)
    $(LD) $(LDFLAGS) -r -o $@ $(SRCS:.c=.o) $(SUBDIR:=/$(BUILT_IN))

$(SUBDIR):
    $(MAKE) -C $@

$(SRCS:.c=.o):
    $(CC) $(CFLAGS) -c $<

$(DEP): $(SRCS)
    $(CC) $(CFLAGS) -MM $(SRCS) >$@
    sed -i "s/: / $@: /g" $@

sinclude $(DEP)

.PHONY: clean $(SUBDIR)

clean:
    for dir in $(SUBDIR); do \
        $(MAKE) -C $$dir clean; \
    done
    $(RM) $(SRCS:.c=.o) $(BUILT_IN) $(DEP)


09btree/queue/list.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"


static void __list_add(struct node_info *prev,
        struct node_info *next,
        const void *data_entry,
        size_t data_size)
{
    struct node_info *node = (struct node_info *)malloc(sizeof(struct node_info) + data_size);
    memcpy(node->priv, data_entry, data_size);

    node->prev = prev;
    node->next = next;
    prev->next = node;
    next->prev = node;
}


 

static void list_add(struct list_info *info,
        const void *data_entry, size_t data_size)
{
    __list_add(info->head, info->head->next,
            data_entry, data_size);
}

static void list_add_tail(struct list_info *info,
        const void *data_entry, size_t data_size)
{
    __list_add(info->head->prev, info->head,
            data_entry, data_size);
}


 

static void list_del(struct list_info *info,
        struct node_info *node,
        size_t data_size)
{
    node->prev->next = node->next;
    node->next->prev = node->prev;
    node->prev = node;
    node->next = node;

    if (data_size) {
        memset(node->priv, 0, data_size);
    }
    free(node);
}

void list_init(struct list_info *info)
{
    info->head = (struct node_info *)malloc(sizeof(struct node_info));
    info->head->prev = info->head;
    info->head->next = info->head;

    info->add = list_add;
    info->add_tail = list_add_tail;
    info->del = list_del;
}

void list_destroy(struct list_info *info)
{
    struct node_info *cur = info->head->next;

    for (; cur != info->head; cur = info->head->next) {
        list_del(info, cur, 0);
    }

    free(info->head);
}


09btree/queue/queue.c

#include <stdio.h>
#include <string.h>
#include "queue.h"


static void queue_push(struct queue_info *info,
        const void *data_entry,
        size_t data_size)
{
    info->list.add_tail(&info->list, data_entry, data_size);
}

static int queue_isempty(struct queue_info *info)
{
    return info->list.head->next == info->list.head;
}

static int queue_top(struct queue_info *info,
        void *data_entry,
        size_t data_size)
{
    if (queue_isempty(info)) {
        return -1; 
    }   

    if (data_entry) {
        memcpy(data_entry, info->list.head->next->priv, data_size);
    }   
    return 0;
}


 

static int queue_pop(struct queue_info *info,
        void *data_entry,
        size_t data_size)
{
    if (queue_top(info, data_entry, data_size) < 0) {
        return -1; 
    }

    //?..绗.?涓..?..?
    info->list.del(&info->list, info->list.head->next, data_size);
    return 0;
}

void queue_init(struct queue_info *info)
{
    list_init(&info->list);
    info->push = queue_push;
    info->pop = queue_pop;
    info->top = queue_top;
    info->isempty = queue_isempty;
}

void queue_destroy(struct queue_info *info)
{
    list_destroy(&info->list);
}


09btree/queue/Makefile

SRCS := list.c queue.c
SUBDIR := 

$(BUILT_IN): $(SRCS:.c=.o) $(SUBDIR)
    $(LD) $(LDFLAGS) -r -o $@ $(SRCS:.c=.o) $(SUBDIR:=/$(BUILT_IN))

$(SUBDIR):
    $(MAKE) -C $@

$(SRCS:.c=.o):
    $(CC) $(CFLAGS) -c $<

$(DEP): $(SRCS)
    $(CC) $(CFLAGS) -MM $(SRCS) >$@
    sed -i "s/: / $@: /g" $@

sinclude $(DEP)

.PHONY: clean $(SUBDIR)

clean:
    for dir in $(SUBDIR); do \
        $(MAKE) -C $$dir clean; \
    done
    $(RM) $(SRCS:.c=.o) $(BUILT_IN) $(DEP)



 

/* Navicat Premium Data Transfer Source Server : 二组数据库 Source Server Type : MySQL Source Server Version : 80027 Source Host : 8.136.9.120:3306 Source Schema : ERP-User Target Server Type : MySQL Target Server Version : 80027 File Encoding : 65001 Date: 11/09/2025 15:35:39 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for data_permission -- ---------------------------- DROP TABLE IF EXISTS `data_permission`; CREATE TABLE `data_permission` ( `id` bigint NOT NULL AUTO_INCREMENT, `user_id` bigint NOT NULL COMMENT '用户ID', `resource_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源类型', `resource_id` bigint NULL DEFAULT NULL COMMENT '资源ID', `permission_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限类型:ALL/DEPT/OWN', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), PRIMARY KEY (`id`) USING BTREE, INDEX `idx_user_resource`(`user_id`, `resource_type`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of data_permission -- ---------------------------- -- ---------------------------- -- Table structure for field_permission -- ---------------------------- DROP TABLE IF EXISTS `field_permission`; CREATE TABLE `field_permission` ( `id` bigint NOT NULL AUTO_INCREMENT, `role_id` bigint NOT NULL COMMENT '角色ID', `table_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '表名', `field_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字段名', `permission` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限:READ/WRITE/HIDDEN', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_role_table`(`role_id`, `table_name`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of field_permission -- ---------------------------- -- ---------------------------- -- Table structure for login_audit -- ---------------------------- DROP TABLE IF EXISTS `login_audit`; CREATE TABLE `login_audit` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_id` bigint NULL DEFAULT NULL COMMENT '用户ID(匿名失败时可为空)', `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '尝试登录的用户名', `success` tinyint NOT NULL COMMENT '是否成功:1=成功,0=失败', `client_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户端IP', `user_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'UA', `message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失败原因/备注', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_login_user`(`user_id`, `created_at`) USING BTREE, CONSTRAINT `fk_login_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '登录审计日志' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of login_audit -- ---------------------------- INSERT INTO `login_audit` VALUES (57, NULL, 'admin ', 0, '192.168.240.104', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 SLBrowser/9.0.6.5061 SLBChan/10 SLBVPV/64-bit', '登录失败', '2025-08-27 10:51:41'); INSERT INTO `login_audit` VALUES (58, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:52:20'); INSERT INTO `login_audit` VALUES (59, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:53:26'); INSERT INTO `login_audit` VALUES (60, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:54:23'); INSERT INTO `login_audit` VALUES (61, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:57:54'); INSERT INTO `login_audit` VALUES (62, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:58:22'); INSERT INTO `login_audit` VALUES (63, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:58:26'); INSERT INTO `login_audit` VALUES (64, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:58:27'); INSERT INTO `login_audit` VALUES (65, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:59:03'); INSERT INTO `login_audit` VALUES (66, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:01:18'); INSERT INTO `login_audit` VALUES (67, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:01:20'); INSERT INTO `login_audit` VALUES (68, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:02:58'); INSERT INTO `login_audit` VALUES (69, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:03:00'); INSERT INTO `login_audit` VALUES (70, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:03:01'); INSERT INTO `login_audit` VALUES (71, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:05:14'); INSERT INTO `login_audit` VALUES (72, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.26100.4768', '登录失败', '2025-08-27 11:05:19'); INSERT INTO `login_audit` VALUES (73, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:06:08'); INSERT INTO `login_audit` VALUES (74, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:06:15'); INSERT INTO `login_audit` VALUES (75, 2, 'admin', 1, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.26100.4768', '登录成功', '2025-08-27 11:10:25'); INSERT INTO `login_audit` VALUES (76, 2, 'admin', 1, '192.168.253.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', '登录成功', '2025-08-27 11:11:10'); INSERT INTO `login_audit` VALUES (77, 2, 'admin', 1, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录成功', '2025-08-27 11:19:42'); INSERT INTO `login_audit` VALUES (78, 2, 'admin', 1, '192.168.190.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', '登录成功', '2025-08-27 11:43:09'); INSERT INTO `login_audit` VALUES (79, 2, 'admin', 1, '192.168.253.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', '登录成功', '2025-08-27 15:15:36'); INSERT INTO `login_audit` VALUES (80, 13, 'superadmin', 0, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录失败', '2025-09-09 17:11:18'); INSERT INTO `login_audit` VALUES (81, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:17:03'); INSERT INTO `login_audit` VALUES (82, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:17:16'); INSERT INTO `login_audit` VALUES (83, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:19:36'); INSERT INTO `login_audit` VALUES (84, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:19:47'); INSERT INTO `login_audit` VALUES (85, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:21:30'); INSERT INTO `login_audit` VALUES (86, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:29:37'); INSERT INTO `login_audit` VALUES (87, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:39:50'); INSERT INTO `login_audit` VALUES (88, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.22621.2506', '登录成功', '2025-09-10 08:42:18'); INSERT INTO `login_audit` VALUES (89, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:47:06'); INSERT INTO `login_audit` VALUES (90, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:47:24'); INSERT INTO `login_audit` VALUES (91, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:47:37'); INSERT INTO `login_audit` VALUES (92, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.22621.2506', '登录成功', '2025-09-10 08:48:37'); INSERT INTO `login_audit` VALUES (93, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:50:15'); INSERT INTO `login_audit` VALUES (94, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 09:30:56'); INSERT INTO `login_audit` VALUES (95, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 09:40:24'); -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `parent_id` bigint NULL DEFAULT NULL COMMENT '父菜单ID', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单名称', `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型:CATALOG/MENU/BUTTON', `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端路由path', `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端组件名/路径', `icon` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标', `visible` tinyint NOT NULL DEFAULT 1 COMMENT '是否可见:1=是,0=否', `sort_order` int NOT NULL DEFAULT 100 COMMENT '排序值', `permission` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端权限标识(如按钮权限)', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `created_by` bigint NULL DEFAULT NULL COMMENT '创建人用户ID', `updated_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', `updated_by` bigint NULL DEFAULT NULL COMMENT '更新人用户ID', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_menu_parent`(`parent_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 52 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单/前端资源' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of menu -- ---------------------------- INSERT INTO `menu` VALUES (1, 0, '首页', 'MENU', '/home', 'home/Index', '🏠', 1, 1, 'home:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (2, 1, '销售管理', 'CATALOG', '/sales', NULL, '📊', 1, 2, 'sales:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (3, 1, '客户管理', 'MENU', '/sales/customers', 'sales/Customers', '👥', 1, 21, 'sales:customer:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (4, 1, '订单管理', 'MENU', '/sales/orders', 'sales/Orders', '📋', 1, 22, 'sales:order:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (5, NULL, '采购管理', 'CATALOG', '/procure', NULL, '🛒', 1, 3, 'procure:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (6, NULL, '供应商管理', 'MENU', '/procure/suppliers', 'procure/Suppliers', '🏢', 1, 31, 'procure:supplier:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (7, 0, '采购进货', 'MENU', '/procure/purchase', 'procure/Purchase', '📦', 1, 32, 'procure:purchase:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (8, 0, '仓储管理', 'CATALOG', '/ware', NULL, '🏭', 1, 4, 'ware:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (9, NULL, '入库管理', 'MENU', '/ware/in', 'ware/In', '⬇️', 1, 41, 'ware:in:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (10, 0, '出库管理', 'MENU', '/ware/out', 'ware/Out', '⬆️', 1, 42, 'ware:out:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (11, 0, '库存盘点', 'MENU', '/ware/inventory', 'ware/Inventory', '📊', 1, 43, 'ware:inventory:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (12, NULL, '财务管理', 'CATALOG', '/finance', NULL, '💰', 1, 5, 'finance:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (13, 0, '订单付款', 'MENU', '/finance/order-payment', 'finance/OrderPayment', '💳', 1, 51, 'finance:payment:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (14, 0, '手动付款', 'MENU', '/finance/manual-payment', 'finance/ManualPayment', '💸', 1, 52, 'finance:payment:manual', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (15, 0, '付款审批', 'MENU', '/finance/payment-approval', 'finance/PaymentApproval', '✅', 1, 53, 'finance:payment:approve', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (16, NULL, '付款记录', 'MENU', '/finance/payment-record', 'finance/PaymentRecord', '📝', 1, 54, 'finance:payment:record', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (17, 0, '订单回款', 'MENU', '/finance/order-collection', 'finance/OrderCollection', '💵', 1, 55, 'finance:collection:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (18, 0, '收款记录', 'MENU', '/finance/collection-record', 'finance/CollectionRecord', '📋', 1, 56, 'finance:collection:record', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (19, 0, '应收账款', 'MENU', '/finance/accounts-receivable', 'finance/AccountsReceivable', '📈', 1, 57, 'finance:receivable:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (20, 0, '应付账款', 'MENU', '/finance/accounts-payable', 'finance/AccountsPayable', '📉', 1, 58, 'finance:payable:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (21, 0, '供应商对账单', 'MENU', '/finance/supplier-reconciliation', 'finance/SupplierReconciliation', '📊', 1, 59, 'finance:reconciliation:supplier', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (22, 0, '客户对账单', 'MENU', '/finance/customer-reconciliation', 'finance/CustomerReconciliation', '📊', 1, 60, 'finance:reconciliation:customer', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (23, 0, '商品管理', 'CATALOG', '/commodity', NULL, '🏷️', 1, 6, 'commodity:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (24, 0, '商品档案', 'MENU', '/commodity/list', 'commodity/List', '📋', 1, 61, 'commodity:list:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (25, 0, '商品分类', 'MENU', '/commodity/category', 'commodity/Category', '📁', 1, 62, 'commodity:category:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (26, 0, '零售管理', 'CATALOG', '/retail', NULL, '🛍️', 1, 7, 'retail:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (27, NULL, '零售商品', 'MENU', '/retail/products', 'retail/products/Index', '🏷️', 1, 71, 'retail:product:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (28, 0, '零售出库', 'MENU', '/retail/outbound', 'retail/outbound/Index', '📦', 1, 72, 'retail:outbound:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (29, 0, '零售退货', 'MENU', '/retail/returns', 'retail/returns/Index', '↩️', 1, 73, 'retail:return:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (30, NULL, '订单跟踪', 'MENU', '/retail/tracking', 'retail/tracking/Index', '📍', 1, 74, 'retail:tracking:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (31, 0, '系统管理', 'CATALOG', '/system', NULL, '⚙️', 1, 8, 'system:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (32, 0, '用户管理', 'MENU', '/system/users', 'system/Users', '👤', 1, 81, 'system:user:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (33, 0, '角色管理', 'MENU', '/system/roles', 'system/Roles', '🎭', 1, 82, 'system:role:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (34, 31, '菜单管理', 'MENU', '/system/menus', 'system/Menus', '📋', 1, 83, 'system:menu:view', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (35, 31, '个人信息', 'MENU', '/system/profile', 'system/UserProfile', '👤', 1, 84, NULL, '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (36, 31, '修改密码', 'MENU', '/system/change-password', 'system/ChangePassword', '🔒', 1, 85, NULL, '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (37, 31, 'AI智能助手', 'MENU', '/system/ai-chat', 'system/AiChat', '🤖', 1, 86, NULL, '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (38, 31, '权限测试', 'MENU', '/system/permission-test', 'system/PermissionTest', '🧪', 1, 87, 'system:view', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (39, 27, '添加商品', 'BUTTON', NULL, NULL, NULL, 1, 1, 'retail:product:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (40, 27, '编辑商品', 'BUTTON', NULL, NULL, NULL, 1, 2, 'retail:product:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (41, 27, '查看商品', 'BUTTON', NULL, NULL, NULL, 1, 3, 'retail:product:view', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (42, 27, '切换状态', 'BUTTON', NULL, NULL, NULL, 1, 4, 'retail:product:toggle', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (43, 32, '添加用户', 'BUTTON', NULL, NULL, NULL, 1, 1, 'system:user:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (44, 32, '编辑用户', 'BUTTON', NULL, NULL, NULL, 1, 2, 'system:user:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (45, 32, '删除用户', 'BUTTON', NULL, NULL, NULL, 1, 3, 'system:user:delete', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (46, 33, '添加角色', 'BUTTON', NULL, NULL, NULL, 1, 1, 'system:role:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (47, 33, '编辑角色', 'BUTTON', NULL, NULL, NULL, 1, 2, 'system:role:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (48, 33, '删除角色', 'BUTTON', NULL, NULL, NULL, 1, 3, 'system:role:delete', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (49, 34, '添加菜单', 'BUTTON', NULL, NULL, NULL, 1, 1, 'system:menu:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (50, 34, '编辑菜单', 'BUTTON', NULL, NULL, NULL, 1, 2, 'system:menu:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (51, 34, '删除菜单', 'BUTTON', NULL, NULL, NULL, 1, 3, 'system:menu:delete', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); -- ---------------------------- -- Table structure for operation_permission -- ---------------------------- DROP TABLE IF EXISTS `operation_permission`; CREATE TABLE `operation_permission` ( `id` bigint NOT NULL AUTO_INCREMENT, `role_id` bigint NOT NULL COMMENT '角色ID', `resource_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源类型', `operation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '操作:CREATE/READ/UPDATE/DELETE', `permission` tinyint NOT NULL DEFAULT 0 COMMENT '是否有权限:1=是,0=否', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of operation_permission -- ---------------------------- -- ---------------------------- -- Table structure for role -- ---------------------------- DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID', `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色编码,唯一', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色名称', `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'BUSINESS' COMMENT '角色类型:SYSTEM(系统)/BUSINESS(业务)', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `created_by` bigint NULL DEFAULT NULL COMMENT '创建人用户ID', `updated_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', `updated_by` bigint NULL DEFAULT NULL COMMENT '更新人用户ID', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_role_code`(`code`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of role -- ---------------------------- INSERT INTO `role` VALUES (1, 'SUPER_ADMIN', '超级管理员', 'SYSTEM', 1, '系统最高权限角色,拥有所有权限', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (12, 'ADMIN', '系统管理员', 'SYSTEM', 1, '系统管理员,拥有大部分系统权限', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (13, 'SALES_MANAGER', '销售经理', 'BUSINESS', 1, '销售部门经理,负责销售管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (14, 'SALES_STAFF', '销售专员', 'BUSINESS', 1, '销售专员,负责日常销售工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (15, 'FINANCE_MANAGER', '财务经理', 'BUSINESS', 1, '财务部门经理,负责财务管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (16, 'FINANCE_STAFF', '财务专员', 'BUSINESS', 1, '财务专员,负责日常财务工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (17, 'WAREHOUSE_MANAGER', '仓库经理', 'BUSINESS', 1, '仓库部门经理,负责仓储管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (18, 'WAREHOUSE_STAFF', '仓库专员', 'BUSINESS', 1, '仓库专员,负责日常仓储工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (19, 'PROCURE_MANAGER', '采购经理', 'BUSINESS', 1, '采购部门经理,负责采购管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (20, 'PROCURE_STAFF', '采购专员', 'BUSINESS', 1, '采购专员,负责日常采购工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (21, 'RETAIL_MANAGER', '零售经理', 'BUSINESS', 1, '零售部门经理,负责零售管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (22, 'RETAIL_STAFF', '零售专员', 'BUSINESS', 1, '零售专员,负责日常零售工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (23, 'COMMODITY_MANAGER', '商品经理', 'BUSINESS', 1, '商品部门经理,负责商品管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (24, 'COMMODITY_STAFF', '商品专员', 'BUSINESS', 1, '商品专员,负责日常商品工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (25, 'VIEWER', '查看者', 'BUSINESS', 1, '只读用户,只能查看数据', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); -- ---------------------------- -- Table structure for role_menu -- ---------------------------- DROP TABLE IF EXISTS `role_menu`; CREATE TABLE `role_menu` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `role_id` bigint NOT NULL COMMENT '角色ID', `menu_id` bigint NOT NULL COMMENT '菜单ID', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, INDEX `fk_rm_role`(`role_id`) USING BTREE, INDEX `fk_rm_menu`(`menu_id`) USING BTREE, CONSTRAINT `fk_rm_menu` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_rm_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 618 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色-菜单授权' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of role_menu -- ---------------------------- INSERT INTO `role_menu` VALUES (71, 1, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (72, 1, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (73, 1, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (74, 1, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (75, 1, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (76, 1, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (77, 1, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (78, 1, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (79, 1, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (80, 1, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (81, 1, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (82, 1, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (83, 1, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (84, 1, 14, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (85, 1, 15, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (86, 1, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (87, 1, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (88, 1, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (89, 1, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (90, 1, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (91, 1, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (92, 1, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (93, 1, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (94, 1, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (95, 1, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (96, 1, 26, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (97, 1, 27, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (98, 1, 28, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (99, 1, 29, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (100, 1, 30, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (101, 1, 31, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (102, 1, 32, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (103, 1, 33, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (104, 1, 34, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (105, 1, 35, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (106, 1, 36, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (107, 1, 37, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (108, 1, 38, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (134, 12, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (135, 12, 31, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (136, 12, 32, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (137, 12, 33, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (138, 12, 34, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (139, 12, 35, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (140, 12, 36, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (141, 12, 37, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (142, 12, 38, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (149, 13, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (150, 13, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (151, 13, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (152, 13, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (153, 13, 14, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (154, 13, 15, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (155, 13, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (156, 13, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (157, 13, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (158, 13, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (159, 13, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (160, 13, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (161, 13, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (162, 13, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (163, 13, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (164, 13, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (165, 13, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (166, 13, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (180, 14, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (181, 14, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (182, 14, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (183, 14, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (184, 14, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (185, 14, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (186, 14, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (187, 14, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (188, 14, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (189, 14, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (190, 14, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (191, 14, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (195, 15, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (196, 15, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (197, 15, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (198, 15, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (199, 15, 14, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (200, 15, 15, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (201, 15, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (202, 15, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (203, 15, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (204, 15, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (205, 15, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (206, 15, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (207, 15, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (208, 15, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (209, 15, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (210, 16, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (211, 16, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (212, 16, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (213, 16, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (214, 16, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (215, 16, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (216, 16, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (217, 16, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (218, 16, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (219, 16, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (220, 16, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (221, 16, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (222, 16, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (225, 17, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (226, 17, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (227, 17, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (228, 17, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (229, 17, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (230, 17, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (231, 17, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (232, 17, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (233, 17, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (234, 17, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (235, 17, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (240, 18, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (241, 18, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (242, 18, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (243, 18, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (244, 18, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (245, 18, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (246, 18, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (247, 18, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (255, 19, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (256, 19, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (257, 19, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (258, 19, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (259, 19, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (260, 19, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (261, 19, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (262, 19, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (263, 19, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (264, 19, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (265, 19, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (266, 19, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (267, 19, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (268, 19, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (269, 19, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (270, 19, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (271, 19, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (272, 19, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (286, 20, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (287, 20, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (288, 20, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (289, 20, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (290, 20, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (291, 20, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (292, 20, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (293, 20, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (294, 20, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (295, 20, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (296, 20, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (301, 21, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (302, 21, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (303, 21, 27, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (304, 21, 30, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (305, 21, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (306, 21, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (307, 21, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (308, 21, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (309, 21, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (310, 21, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (311, 21, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (312, 21, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (313, 21, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (314, 21, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (315, 21, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (316, 21, 26, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (317, 21, 28, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (318, 21, 29, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (332, 22, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (333, 22, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (334, 22, 27, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (335, 22, 30, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (336, 22, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (337, 22, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (338, 22, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (339, 22, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (340, 22, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (341, 22, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (342, 22, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (343, 22, 26, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (344, 22, 28, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (345, 22, 29, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (347, 23, 5, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (348, 23, 6, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (349, 23, 9, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (350, 23, 27, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (351, 23, 30, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (352, 23, 1, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (353, 23, 7, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (354, 23, 8, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (355, 23, 10, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (356, 23, 11, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (357, 23, 23, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (358, 23, 24, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (359, 23, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (360, 23, 26, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (361, 23, 28, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (362, 23, 29, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (378, 24, 9, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (379, 24, 27, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (380, 24, 30, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (381, 24, 1, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (382, 24, 8, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (383, 24, 10, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (384, 24, 11, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (385, 24, 23, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (386, 24, 24, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (387, 24, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (388, 24, 26, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (389, 24, 28, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (390, 24, 29, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (393, 25, 5, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (394, 25, 6, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (395, 25, 9, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (396, 25, 12, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (397, 25, 16, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (398, 25, 27, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (399, 25, 30, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (400, 25, 1, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (401, 25, 7, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (402, 25, 8, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (403, 25, 10, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (404, 25, 11, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (405, 25, 13, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (406, 25, 17, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (407, 25, 18, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (408, 25, 19, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (409, 25, 20, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (410, 25, 21, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (411, 25, 22, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (412, 25, 23, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (413, 25, 24, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (414, 25, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (415, 25, 26, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (416, 25, 28, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (417, 25, 29, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (418, 25, 2, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (419, 25, 3, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (420, 25, 4, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (424, 1, 39, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (425, 1, 40, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (426, 1, 41, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (427, 1, 42, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (428, 1, 43, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (429, 1, 44, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (430, 1, 45, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (431, 1, 46, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (432, 1, 47, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (433, 1, 48, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (434, 1, 49, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (435, 1, 50, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (436, 1, 51, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (439, 12, 43, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (440, 12, 44, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (441, 12, 45, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (442, 12, 46, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (443, 12, 47, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (444, 12, 48, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (445, 12, 49, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (446, 12, 50, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (447, 12, 51, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (454, 21, 39, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (455, 21, 40, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (456, 21, 41, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (457, 21, 42, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (461, 22, 39, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (462, 22, 40, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (463, 22, 41, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (464, 25, 1, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (465, 25, 2, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (466, 25, 5, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (467, 25, 8, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (468, 25, 12, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (469, 25, 23, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (470, 25, 26, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (471, 25, 3, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (472, 25, 4, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (473, 25, 6, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (474, 25, 7, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (475, 25, 9, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (476, 25, 10, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (477, 25, 11, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (478, 25, 13, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (479, 25, 17, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (480, 25, 24, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (481, 25, 25, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (482, 25, 27, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (483, 25, 28, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (484, 25, 29, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (485, 25, 30, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (486, 25, 41, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (502, 25, 1, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (503, 25, 2, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (504, 25, 5, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (505, 25, 8, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (506, 25, 12, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (507, 25, 23, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (508, 25, 26, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (509, 25, 3, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (510, 25, 4, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (511, 25, 6, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (512, 25, 7, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (513, 25, 9, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (514, 25, 10, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (515, 25, 11, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (516, 25, 13, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (517, 25, 17, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (518, 25, 24, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (519, 25, 25, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (520, 25, 27, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (521, 25, 28, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (522, 25, 29, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (523, 25, 30, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (524, 25, 41, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (540, 1, 1, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (541, 1, 2, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (542, 1, 3, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (543, 1, 4, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (544, 1, 5, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (545, 1, 6, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (546, 1, 7, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (547, 1, 8, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (548, 1, 9, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (549, 1, 10, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (550, 1, 11, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (551, 1, 12, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (552, 1, 13, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (553, 1, 14, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (554, 1, 15, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (555, 1, 16, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (556, 1, 17, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (557, 1, 18, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (558, 1, 19, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (559, 1, 20, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (560, 1, 21, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (561, 1, 22, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (562, 1, 23, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (563, 1, 24, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (564, 1, 25, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (565, 1, 26, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (566, 1, 27, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (567, 1, 28, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (568, 1, 29, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (569, 1, 30, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (570, 1, 31, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (571, 1, 32, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (572, 1, 33, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (573, 1, 34, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (574, 1, 35, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (575, 1, 36, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (576, 1, 37, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (577, 1, 38, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (578, 1, 39, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (579, 1, 40, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (580, 1, 41, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (581, 1, 42, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (582, 1, 43, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (583, 1, 44, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (584, 1, 45, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (585, 1, 46, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (586, 1, 47, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (587, 1, 48, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (588, 1, 49, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (589, 1, 50, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (590, 1, 51, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (603, 1, 39, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (604, 1, 40, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (605, 1, 41, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (606, 1, 42, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (607, 1, 43, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (608, 1, 44, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (609, 1, 45, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (610, 1, 46, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (611, 1, 47, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (612, 1, 48, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (613, 1, 49, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (614, 1, 50, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (615, 1, 51, '2025-09-09 09:06:23', NULL); -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '登录账号,唯一', `password_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码哈希(BCrypt/Argon2)', `salt` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '可选盐(如算法需要)', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姓名/显示名', `email` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', `mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用,2=锁定', `is_super_admin` tinyint NOT NULL DEFAULT 0 COMMENT '是否超管:1=是,0=否', `last_login_at` datetime(0) NULL DEFAULT NULL COMMENT '最近登录时间', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `created_by` bigint NULL DEFAULT NULL COMMENT '创建人用户ID', `updated_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', `updated_by` bigint NULL DEFAULT NULL COMMENT '更新人用户ID', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', `avatar_url` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, `bio` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `position` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_user_username`(`username`) USING BTREE, UNIQUE INDEX `UK_sb8bbouer5wak8vyiiy4pf2bx`(`username`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (2, 'admin', '$2a$10$PZQr22sldRjxHAgGWXKDjOMHPEP4pT.4R4Z9KwnyYkiYoweHqIWIi', '', '管理员', '', '', 1, 1, '2025-09-10 14:34:45', '2025-08-25 12:43:37', NULL, '2025-09-01 15:36:21', 2, NULL, 'http://8.136.9.120:19000/avatars/avatar_2_20250901144118_99e115d1.jpg', '还大家好', '', '项目经理'); INSERT INTO `user` VALUES (8, '123', '$2a$10$T9BkHqnX2smR0vcMub5R9.ORySI5BrTl98ffN2Y.HdOfahLSBIxlG', NULL, '123', NULL, NULL, 1, 0, '2025-09-01 15:30:15', '2025-08-27 15:01:00', NULL, '2025-09-01 07:30:30', NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `user` VALUES (9, 'wrj', '$2a$10$y7KC7TJaw5u/uGy6wgiute.Fny.WA8jmx9uOh/JH2iEbc.Gi99kvy', NULL, '王瑞杰', '2512544602@qq.com', '13127347818', 1, 0, '2025-09-09 16:59:43', '2025-09-01 15:02:59', NULL, '2025-09-01 15:37:49', 9, NULL, 'http://8.136.9.120:19000/avatars/avatar_9_20250901152228_5021f356.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20250901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250901T072231Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=ae88e367e64eb99f8a32473099c5a8915fc2adf0f839b5cd23c81959a0dc9a85', '(。・∀・)ノ゙嗨', '财务部门', '项目经理'); INSERT INTO `user` VALUES (10, 'testuser', 'e10adc3949ba59abbe56e057f20f883e', '', '测试用户', 'test@example.com', NULL, 1, 0, '2025-09-09 17:04:40', '2025-09-09 08:55:52', NULL, '2025-09-09 09:04:34', NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `user` VALUES (13, 'superadmin', 'e10adc3949ba59abbe56e057f20f883e', '', '超级管理员', 'superadmin@example.com', NULL, 1, 1, '2025-09-09 17:07:51', '2025-09-09 09:06:23', NULL, '2025-09-09 09:06:23', NULL, NULL, NULL, NULL, NULL, NULL); -- ---------------------------- -- Table structure for user_role -- ---------------------------- DROP TABLE IF EXISTS `user_role`; CREATE TABLE `user_role` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_id` bigint NOT NULL COMMENT '用户ID', `role_id` bigint NOT NULL COMMENT '角色ID', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, INDEX `fk_ur_user`(`user_id`) USING BTREE, INDEX `fk_ur_role`(`role_id`) USING BTREE, CONSTRAINT `fk_ur_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_ur_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户-角色' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user_role -- ---------------------------- INSERT INTO `user_role` VALUES (2, 2, 1, '2025-08-27 02:26:18', NULL); INSERT INTO `user_role` VALUES (3, 8, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `user_role` VALUES (4, 9, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `user_role` VALUES (6, 10, 25, '2025-09-09 08:55:52', NULL); INSERT INTO `user_role` VALUES (7, 13, 1, '2025-09-09 09:06:23', NULL); SET FOREIGN_KEY_CHECKS = 1; 把这个SQL里的表全部查看一下,只保留和登陆相关的表
09-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值