升鲜宝 生鲜配送供应链管理系统 运营管理系统 SaaS Admin:SYS & SAAS 常用 CRUD SQL 示例(用于对账/排查/脚本)

升鲜宝 SaaS Admin:SYS & SAAS 常用 CRUD SQL 示例(用于对账/排查/脚本)

 

-- =========================================================
-- 升鲜宝 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;

  

posted @ 2026-02-13 18:22  升鲜宝生鲜供应链系统  阅读(6)  评论(0)    收藏  举报