惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
博客园_首页
B
Blog RSS Feed
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
B
Blog
MyScale Blog
MyScale Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 热门话题
D
Docker
A
Arctic Wolf
G
Google Developers Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
Cisco Talos Blog
Cisco Talos Blog
P
Privacy International News Feed
I
Intezer
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
MongoDB | Blog
MongoDB | Blog
美团技术团队
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
S
Securelist
P
Proofpoint News Feed
Simon Willison's Weblog
Simon Willison's Weblog
V
Visual Studio Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Cloudflare Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic
博客园 - Franky
The Last Watchdog
The Last Watchdog
T
Tailwind CSS Blog
T
Tenable Blog
Hacker News: Ask HN
Hacker News: Ask HN
雷峰网
雷峰网
Know Your Adversary
Know Your Adversary
Scott Helme
Scott Helme
S
SegmentFault 最新的问题
L
Lohrmann on Cybersecurity
F
Full Disclosure
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org

博客园 - 升鲜宝生鲜供应链系统

升鲜宝生鲜配送供应链系统 vs_车辆管理模块开发文档 PRD(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝供应链管理系统Spring Boot 4.0 项目源代码结构及数据库字典模块命名与表字段命名开发约束规范(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝 B2B 订货商城线性 --- |----- 原型图(一)---升鲜宝生鲜配送供应链管理系统源代码服务 升鲜宝云商品库功能设计与数据库表结构详细文档(一)---升鲜宝生鲜配送供应链管理系统源代码服务 升鲜宝PAD生产加工系统:销售单客户预订明细分割增强版 猪肉分割加工轻量版 · PAD端操作效果图与开发说明(二)---升鲜宝生鲜配送供应链管理系统源代码服务 升鲜宝PAD生产加工系统 猪肉分割加工轻量版功能模块方案与页面效果图(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝B2B订货商城后端开发文档(一)---升鲜宝生鲜配送供应链管理系统 【研究与学习】快驴商品模块功能分析与数据库表结构设计文档(一)---升鲜宝生鲜配送供应链管理系统源代码服务(标准版、专业版) 【研究与学习】悦厚系统商品模块功能设计与数据字典文档(一)---升鲜宝生鲜配送供应链管理系统 【研究与学习】易订货商品模块设计分析文档字段级数据字典 + 表关系 + 单位换算 + 价格/库存/促销链路(一)---升鲜宝生鲜配送供应链管理系统 【研究与学习收银系统】(一)菜某秘后台 SaaS 租户运营控制、费用管理系统数据字典及功能设计方案详细文档 升鲜宝云仓供应链管理系统功能详细设计方案 PRD(二)---升鲜宝生鲜配送供应链管理系统 升鲜宝云仓供应链管理系统方案(一)---升鲜宝供应链管理系统 统一字段权限组件功能设计方案(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝供应链管理系统生成图片、生成 PDF、生成分享码通用组件功能设计文档(一)---升鲜宝生鲜配送供应链管理系统源代码(Spring Boot Vue3 Uniapp ) 升鲜宝后端 API 与手机端 API 开发说明(一)---升鲜宝生鲜配送供应链管理系统重构版 「我的中心」设置模块 功能设计与开发文档(一)--- 升鲜宝生鲜配送供应链管理系统重构说明 通用明细列表控件设计与开发文档(一)---升鲜宝生鲜配送供应链管理软件重构方案 管理类软件通用高级查询组件(一)---升鲜宝生鲜配送供应链管理软件重构方案 升鲜宝商品模块重构版接口清单 (二)+ 页面原型字段设计 升鲜宝供应链商品模块设计(一) 数据字典及功能开发详细说明 升鲜宝日志功能模块设计说明(一)---生鲜配送供应链管理系统源代码 升鲜宝静态文本国际化完整 SQL 说明 升鲜宝多语言数据库设计演进对比文档 升鲜宝通用自定义列导入导出功能的通用设计方案(一)---升鲜宝生鲜配送供应链管理系统源代码 升鲜宝高性能多语言解决方案(二)---升鲜宝生鲜配送供应链管理系统 升鲜宝高性能多语言解决方案(一)---升鲜宝生鲜配送供应链管理系统 企业微信CRM模块功能设计(三)—— 升鲜宝生鲜配送供应链管理系统源代码 企业微信CRM模块功能设计(二)—— 升鲜宝生鲜配送供应链管理系统源代码 企业微信CRM模块功能设计(一)—— 升鲜宝生鲜配送供应链管理系统源代码 升鲜宝社区团购商城软件设计功能文档(含完整功能设计、业务流程图、数据字典、DDL 口径与后台权限设计)--生鲜配送供应链管理系统源码 升鲜宝社区团购商城 MySQL 8.0 DDL 生鲜配送供应链管理系统源代码之升鲜宝社区团购商城小程序(一) 《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册(升鲜宝版)》 升鲜宝供应链管理系统B端客户价格域的表结构设计及相关说明 PMS商品域完整 DDL 脚本 及 系统功能设计规格书,这套底层模型能够完美支撑生鲜行业特有的“多单位销售”、“双单位称重核算”以及“非标品临采”等复杂场景。 “多租户(tenant)+ 部门数据权限(dept)双层隔离” 的升鲜宝最终设计(单体 Spring Boot 直接可落地,未来拆微服务也不改核心规则)。 升鲜宝 生鲜配送供应链管理系统 SaaS Admin 权限体系完整架构图 升鲜宝 SaaS 平台后台数据库结构(含菜单/权限)最终版(MySQL) 升鲜宝 生鲜配送供应链管理系统 SaaS 平台后台功能模块规划 升鲜宝 生鲜配送 供应链管理系统 SaaS 自动计费引擎核心接口清单 升鲜宝 供应链管理系统 SaaS 自动计费引擎详细算法说明书(Algorithm Spec) 升鲜宝 SaaS 租户订阅系统数据库设计与功能说明
升鲜宝 生鲜配送供应链管理系统 运营管理系统 SaaS Admin:SYS & SAAS 常用 CRUD SQL 示例(用于对账/排查/脚本)
升鲜宝生鲜供应链系统 · 2026-02-13 · via 博客园 - 升鲜宝生鲜供应链系统
-- =========================================================
-- 升鲜宝 SaaS Admin:SYS & SAAS 常用 CRUD SQL 示例(用于对账/排查/脚本)
-- 数据库:saas_master_db
--
-- 说明:
-- 1) 生产建议仍走 API + Service(SQL 仅示例)
-- 2) “禁用”使用 enabled=0;“软删除”使用 del_flag=1
-- 3) create_date / update_date 统一毫秒时间戳
-- =========================================================
SET NAMES utf8mb4;
SET @now_ms := ROUND(UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)) * 1000);

-- =========================================================
-- 1) 用户 sys_user
-- =========================================================

-- 1.1 用户列表(分页 + 关键字)
-- :keyword 为空则不过滤;:offset=: (page-1)*size;:size
SELECT
  u.id,
  u.user_code,
  u.user_name,
  u.status,
  u.enabled,
  u.del_flag,
  u.create_date,
  u.update_date
FROM sys_user u
WHERE u.del_flag = 0
  AND (
    :keyword IS NULL OR :keyword = ''
    OR u.user_code LIKE CONCAT('%', :keyword, '%')
    OR u.user_name LIKE CONCAT('%', :keyword, '%')
  )
ORDER BY u.id DESC
LIMIT :offset, :size;

-- 1.2 用户详情
SELECT
  id, user_code, user_name, password_hash, status, enabled, del_flag, create_date, update_date
FROM sys_user
WHERE id = :userId
LIMIT 1;

-- 1.3 新增用户(password_hash 建议用 BCrypt)
-- 注意:user_code 需唯一
INSERT INTO sys_user (
  id, user_code, user_name, password_hash,
  status, enabled, del_flag,
  create_date, update_date
)
VALUES (
  :id, :userCode, :userName, :passwordHash,
  1, 1, 0,
  @now_ms, @now_ms
);

-- 1.4 修改用户(不改密码)
UPDATE sys_user
SET
  user_name = :userName,
  status = :status,
  enabled = :enabled,
  update_date = @now_ms
WHERE id = :userId
  AND del_flag = 0;

-- 1.5 修改密码(重置)
UPDATE sys_user
SET
  password_hash = :passwordHash,
  update_date = @now_ms
WHERE id = :userId
  AND del_flag = 0;

-- 1.6 禁用 / 启用
UPDATE sys_user
SET enabled = 0, update_date = @now_ms
WHERE id = :userId AND del_flag = 0;

UPDATE sys_user
SET enabled = 1, update_date = @now_ms
WHERE id = :userId AND del_flag = 0;

-- 1.7 软删除
UPDATE sys_user
SET del_flag = 1, update_date = @now_ms
WHERE id = :userId;

-- 1.8 用户角色列表
SELECT
  ur.user_id,
  ur.role_id,
  r.role_code,
  r.role_name
FROM sys_user_role ur
JOIN sys_role r ON r.id = ur.role_id AND r.del_flag = 0
WHERE ur.user_id = :userId
ORDER BY r.id;

-- 1.9 给用户分配角色(先删后插,或用事务)
DELETE FROM sys_user_role WHERE user_id = :userId;
INSERT INTO sys_user_role (id, user_id, role_id, create_date)
VALUES
  (:id1, :userId, :roleId1, @now_ms),
  (:id2, :userId, :roleId2, @now_ms);


-- =========================================================
-- 2) 角色 sys_role
-- =========================================================

-- 2.1 角色列表(分页 + 关键字)
SELECT
  r.id, r.role_code, r.role_name, r.enabled, r.del_flag, r.create_date, r.update_date
FROM sys_role r
WHERE r.del_flag = 0
  AND (
    :keyword IS NULL OR :keyword = ''
    OR r.role_code LIKE CONCAT('%', :keyword, '%')
    OR r.role_name LIKE CONCAT('%', :keyword, '%')
  )
ORDER BY r.id DESC
LIMIT :offset, :size;

-- 2.2 新增角色
INSERT INTO sys_role (
  id, role_code, role_name,
  enabled, del_flag,
  create_date, update_date
)
VALUES (
  :id, :roleCode, :roleName,
  1, 0,
  @now_ms, @now_ms
);

-- 2.3 修改角色
UPDATE sys_role
SET
  role_name = :roleName,
  enabled = :enabled,
  update_date = @now_ms
WHERE id = :roleId
  AND del_flag = 0;

-- 2.4 禁用 / 启用
UPDATE sys_role SET enabled = 0, update_date = @now_ms WHERE id = :roleId AND del_flag = 0;
UPDATE sys_role SET enabled = 1, update_date = @now_ms WHERE id = :roleId AND del_flag = 0;

-- 2.5 软删除
UPDATE sys_role SET del_flag = 1, update_date = @now_ms WHERE id = :roleId;


-- =========================================================
-- 3) 菜单 sys_menu
-- =========================================================

-- 3.1 菜单全量(用于构树)
SELECT
  id, parent_id, menu_type, menu_code, menu_name,
  route_path, component_path, perms_code, icon,
  sort_code, visible, enabled, del_flag
FROM sys_menu
WHERE del_flag = 0 AND enabled = 1
ORDER BY sort_code ASC, id ASC;

-- 3.2 新增菜单
INSERT INTO sys_menu (
  id, parent_id, menu_type,
  menu_code, menu_name,
  route_path, component_path,
  perms_code, icon,
  sort_code, visible, enabled, del_flag,
  create_date, update_date
)
VALUES (
  :id, :parentId, :menuType,
  :menuCode, :menuName,
  :routePath, :componentPath,
  :permsCode, :icon,
  :sortCode, :visible, :enabled, 0,
  @now_ms, @now_ms
);

-- 3.3 修改菜单
UPDATE sys_menu
SET
  parent_id = :parentId,
  menu_type = :menuType,
  menu_name = :menuName,
  route_path = :routePath,
  component_path = :componentPath,
  perms_code = :permsCode,
  icon = :icon,
  sort_code = :sortCode,
  visible = :visible,
  enabled = :enabled,
  update_date = @now_ms
WHERE id = :menuId AND del_flag = 0;

-- 3.4 软删除菜单
UPDATE sys_menu SET del_flag = 1, update_date = @now_ms WHERE id = :menuId;


-- =========================================================
-- 4) 权限点 sys_permission / 授权 sys_role_permission
-- =========================================================

-- 4.1 权限点列表(分页 + 关键字)
SELECT
  p.id, p.perm_type, p.perm_code, p.perm_name, p.perm_value,
  p.menu_id, p.enabled, p.del_flag, p.create_date, p.update_date
FROM sys_permission p
WHERE p.del_flag = 0
  AND (
    :keyword IS NULL OR :keyword = ''
    OR p.perm_code LIKE CONCAT('%', :keyword, '%')
    OR p.perm_name LIKE CONCAT('%', :keyword, '%')
    OR p.perm_value LIKE CONCAT('%', :keyword, '%')
  )
ORDER BY p.id DESC
LIMIT :offset, :size;

-- 4.2 新增权限点
INSERT INTO sys_permission (
  id, perm_type, perm_code, perm_name, perm_value,
  menu_id, enabled, del_flag,
  create_date, update_date
)
VALUES (
  :id, :permType, :permCode, :permName, :permValue,
  :menuId, 1, 0,
  @now_ms, @now_ms
);

-- 4.3 修改权限点
UPDATE sys_permission
SET
  perm_type = :permType,
  perm_name = :permName,
  perm_value = :permValue,
  menu_id = :menuId,
  enabled = :enabled,
  update_date = @now_ms
WHERE id = :permId AND del_flag = 0;

-- 4.4 禁用 / 启用权限点
UPDATE sys_permission SET enabled=0, update_date=@now_ms WHERE id=:permId AND del_flag=0;
UPDATE sys_permission SET enabled=1, update_date=@now_ms WHERE id=:permId AND del_flag=0;

-- 4.5 软删除权限点
UPDATE sys_permission SET del_flag=1, update_date=@now_ms WHERE id=:permId;

-- 4.6 查询角色拥有的权限点
SELECT
  rp.role_id,
  rp.permission_id,
  p.perm_code,
  p.perm_name,
  p.perm_value
FROM sys_role_permission rp
JOIN sys_permission p ON p.id = rp.permission_id AND p.del_flag=0
WHERE rp.role_id = :roleId
ORDER BY p.id;

-- 4.7 角色授权(先删后插)
DELETE FROM sys_role_permission WHERE role_id = :roleId;
INSERT INTO sys_role_permission (id, role_id, permission_id, create_date)
VALUES
  (:id1, :roleId, :permId1, @now_ms),
  (:id2, :roleId, :permId2, @now_ms);


-- =========================================================
-- 5) SaaS 套餐/租户/订阅(saas_plan / saas_tenant / saas_subscription)
-- =========================================================

-- 5.1 套餐列表
SELECT id, plan_code, plan_name, billing_cycle, currency_code, base_price, enabled, del_flag
FROM saas_plan
WHERE del_flag=0
ORDER BY id DESC
LIMIT :offset, :size;

-- 5.2 新增/修改/禁用套餐
INSERT INTO saas_plan (id, plan_code, plan_name, billing_cycle, currency_code, base_price, enabled, del_flag, create_date, update_date)
VALUES (:id, :planCode, :planName, :billingCycle, :currencyCode, :basePrice, 1, 0, @now_ms, @now_ms);

UPDATE saas_plan
SET plan_name=:planName, billing_cycle=:billingCycle, currency_code=:currencyCode, base_price=:basePrice, enabled=:enabled, update_date=@now_ms
WHERE id=:planId AND del_flag=0;

UPDATE saas_plan SET enabled=0, update_date=@now_ms WHERE id=:planId AND del_flag=0;
UPDATE saas_plan SET enabled=1, update_date=@now_ms WHERE id=:planId AND del_flag=0;

-- 5.3 租户列表
SELECT id, tenant_code, tenant_name, tenant_state, plan_id, expire_date, shard_id, db_name, del_flag
FROM saas_tenant
WHERE del_flag=0
ORDER BY id DESC
LIMIT :offset, :size;

-- 5.4 新增/修改/冻结/解冻租户
INSERT INTO saas_tenant (id, tenant_code, tenant_name, tenant_state, plan_id, expire_date, shard_id, db_name, del_flag, create_date, update_date)
VALUES (:id, :tenantCode, :tenantName, 1, :planId, :expireDate, :shardId, :dbName, 0, @now_ms, @now_ms);

UPDATE saas_tenant
SET tenant_name=:tenantName, plan_id=:planId, expire_date=:expireDate, shard_id=:shardId, db_name=:dbName, update_date=@now_ms
WHERE id=:tenantId AND del_flag=0;

UPDATE saas_tenant SET tenant_state=2, update_date=@now_ms WHERE id=:tenantId AND del_flag=0; -- 冻结
UPDATE saas_tenant SET tenant_state=1, update_date=@now_ms WHERE id=:tenantId AND del_flag=0; -- 解冻

-- 5.5 订阅列表(按租户)
SELECT id, tenant_id, plan_id, sub_state, auto_renew, start_date, end_date, del_flag
FROM saas_subscription
WHERE del_flag=0 AND (:tenantId IS NULL OR tenant_id=:tenantId)
ORDER BY id DESC
LIMIT :offset, :size;

-- 5.6 新增/修改订阅
INSERT INTO saas_subscription (id, tenant_id, plan_id, sub_state, auto_renew, start_date, end_date, del_flag, create_date, update_date)
VALUES (:id, :tenantId, :planId, :subState, :autoRenew, :startDate, :endDate, 0, @now_ms, @now_ms);

UPDATE saas_subscription
SET plan_id=:planId, sub_state=:subState, auto_renew=:autoRenew, start_date=:startDate, end_date=:endDate, update_date=@now_ms
WHERE id=:subId AND del_flag=0;