refactor: 字节枚举整型落库并统一发布快照 Status
发布记录 Status 改为 EsSnapshotStatus(TINYINT),计费启用判断改用 EnableStatus;db.sql 与 migrate_enum_int_comments.sql 补全枚举字段注释及旧库迁移。
This commit is contained in:
parent
dd2abab42b
commit
793085607a
26
db.sql
26
db.sql
@ -494,7 +494,7 @@ CREATE TABLE `t_sales_product` (
|
|||||||
`ProductDescription` TEXT COMMENT '产品描述',
|
`ProductDescription` TEXT COMMENT '产品描述',
|
||||||
`PreStorageScript` TEXT COMMENT '入库前脚本',
|
`PreStorageScript` TEXT COMMENT '入库前脚本',
|
||||||
`CustomerGuideMarkdown` MEDIUMTEXT COMMENT '对客说明 Markdown',
|
`CustomerGuideMarkdown` MEDIUMTEXT COMMENT '对客说明 Markdown',
|
||||||
`IsActive` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
|
`IsActive` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用',
|
||||||
`Scheme` VARCHAR(32) NOT NULL COMMENT '排货方案:costLowest/timeFastest/overallBest',
|
`Scheme` VARCHAR(32) NOT NULL COMMENT '排货方案:costLowest/timeFastest/overallBest',
|
||||||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||||||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||||||
@ -514,7 +514,7 @@ CREATE TABLE `t_sales_product_price` (
|
|||||||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
||||||
`SalesProductId` INT NOT NULL COMMENT '销售产品ID',
|
`SalesProductId` INT NOT NULL COMMENT '销售产品ID',
|
||||||
`SerialNumber` INT NOT NULL COMMENT '序号',
|
`SerialNumber` INT NOT NULL COMMENT '序号',
|
||||||
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
`Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用',
|
||||||
`PriceName` VARCHAR(64) NOT NULL COMMENT '价格名称',
|
`PriceName` VARCHAR(64) NOT NULL COMMENT '价格名称',
|
||||||
`CostItem` VARCHAR(64) NOT NULL COMMENT '费用项',
|
`CostItem` VARCHAR(64) NOT NULL COMMENT '费用项',
|
||||||
`CostUnit` VARCHAR(16) NOT NULL COMMENT '费用单位:kg/票/件',
|
`CostUnit` VARCHAR(16) NOT NULL COMMENT '费用单位:kg/票/件',
|
||||||
@ -584,7 +584,7 @@ CREATE TABLE `t_sales_product_publish_record` (
|
|||||||
`SalesProductId` INT NOT NULL COMMENT '销售产品ID',
|
`SalesProductId` INT NOT NULL COMMENT '销售产品ID',
|
||||||
`Version` VARCHAR(32) NOT NULL COMMENT '版本号,如 20231227112339',
|
`Version` VARCHAR(32) NOT NULL COMMENT '版本号,如 20231227112339',
|
||||||
`OperatorType` VARCHAR(16) NOT NULL COMMENT '操作类型:price/rules',
|
`OperatorType` VARCHAR(16) NOT NULL COMMENT '操作类型:price/rules',
|
||||||
`Status` VARCHAR(16) NOT NULL COMMENT '状态:生效/回滚/无效',
|
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None未设置,1=Active生效,2=Inactive失效',
|
||||||
`PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人',
|
`PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人',
|
||||||
`PublishTime` DATETIME NOT NULL COMMENT '发布时间',
|
`PublishTime` DATETIME NOT NULL COMMENT '发布时间',
|
||||||
`Description` VARCHAR(512) NULL COMMENT '版本备注',
|
`Description` VARCHAR(512) NULL COMMENT '版本备注',
|
||||||
@ -626,7 +626,7 @@ CREATE TABLE `t_service_channel` (
|
|||||||
`ForecastCode` VARCHAR(128) NULL COMMENT '预报单号',
|
`ForecastCode` VARCHAR(128) NULL COMMENT '预报单号',
|
||||||
`Description` TEXT COMMENT '描述',
|
`Description` TEXT COMMENT '描述',
|
||||||
`PreScript` TEXT COMMENT '入库前脚本',
|
`PreScript` TEXT COMMENT '入库前脚本',
|
||||||
`IsActive` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
|
`IsActive` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用',
|
||||||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||||||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||||||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||||||
@ -643,7 +643,7 @@ CREATE TABLE `t_service_channel_price` (
|
|||||||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
||||||
`ServiceChannelId` INT NOT NULL COMMENT '服务渠道ID',
|
`ServiceChannelId` INT NOT NULL COMMENT '服务渠道ID',
|
||||||
`SerialNumber` INT NOT NULL COMMENT '序号',
|
`SerialNumber` INT NOT NULL COMMENT '序号',
|
||||||
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
`Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用',
|
||||||
`PriceName` VARCHAR(64) NOT NULL COMMENT '价格名称',
|
`PriceName` VARCHAR(64) NOT NULL COMMENT '价格名称',
|
||||||
`CostItem` VARCHAR(64) NOT NULL COMMENT '费用项',
|
`CostItem` VARCHAR(64) NOT NULL COMMENT '费用项',
|
||||||
`CostUnit` VARCHAR(16) NOT NULL COMMENT '费用单位:kg/票/件',
|
`CostUnit` VARCHAR(16) NOT NULL COMMENT '费用单位:kg/票/件',
|
||||||
@ -695,7 +695,7 @@ CREATE TABLE `t_service_channel_publish_record` (
|
|||||||
`ServiceChannelId` INT NOT NULL COMMENT '服务渠道ID',
|
`ServiceChannelId` INT NOT NULL COMMENT '服务渠道ID',
|
||||||
`Version` VARCHAR(32) NOT NULL COMMENT '版本号',
|
`Version` VARCHAR(32) NOT NULL COMMENT '版本号',
|
||||||
`OperatorType` VARCHAR(16) NOT NULL COMMENT '操作类型:price/rules',
|
`OperatorType` VARCHAR(16) NOT NULL COMMENT '操作类型:price/rules',
|
||||||
`Status` VARCHAR(16) NOT NULL COMMENT '状态:生效/回滚/无效',
|
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None未设置,1=Active生效,2=Inactive失效',
|
||||||
`PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人',
|
`PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人',
|
||||||
`PublishTime` DATETIME NOT NULL COMMENT '发布时间',
|
`PublishTime` DATETIME NOT NULL COMMENT '发布时间',
|
||||||
`Description` VARCHAR(512) NULL COMMENT '版本备注',
|
`Description` VARCHAR(512) NULL COMMENT '版本备注',
|
||||||
@ -809,7 +809,7 @@ CREATE TABLE `t_weight_rounding_info` (
|
|||||||
|
|
||||||
CREATE TABLE `t_auto_trigger` (
|
CREATE TABLE `t_auto_trigger` (
|
||||||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
||||||
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
|
`Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用',
|
||||||
`RuleName` VARCHAR(128) NULL COMMENT '规则名称',
|
`RuleName` VARCHAR(128) NULL COMMENT '规则名称',
|
||||||
`Priority` INT NOT NULL DEFAULT 100 COMMENT '优先级,数值越小越先执行',
|
`Priority` INT NOT NULL DEFAULT 100 COMMENT '优先级,数值越小越先执行',
|
||||||
`Operation` VARCHAR(32) NULL COMMENT '操作:拦截/警告/问题件',
|
`Operation` VARCHAR(32) NULL COMMENT '操作:拦截/警告/问题件',
|
||||||
@ -835,7 +835,7 @@ CREATE TABLE `t_issue_template` (
|
|||||||
`Title` VARCHAR(128) NOT NULL COMMENT '问题标题',
|
`Title` VARCHAR(128) NOT NULL COMMENT '问题标题',
|
||||||
`Content` TEXT NOT NULL COMMENT '问题内容',
|
`Content` TEXT NOT NULL COMMENT '问题内容',
|
||||||
`NotifyMethod` VARCHAR(64) NOT NULL COMMENT '通知方式,逗号分隔',
|
`NotifyMethod` VARCHAR(64) NOT NULL COMMENT '通知方式,逗号分隔',
|
||||||
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT '0-禁用 1-启用',
|
`Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用',
|
||||||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||||||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||||||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||||||
@ -947,7 +947,7 @@ CREATE TABLE `t_customer` (
|
|||||||
`Balance` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '账户余额',
|
`Balance` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '账户余额',
|
||||||
`TotalQuota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '总额度',
|
`TotalQuota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '总额度',
|
||||||
`UsedQuota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '已用额度',
|
`UsedQuota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '已用额度',
|
||||||
`Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-正常,2-冻结',
|
`Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'CustomerStatus:0=None未设置,1=Disabled禁用,2=Normal正常,3=Frozen冻结',
|
||||||
`Remark` VARCHAR(512) NULL COMMENT '备注信息',
|
`Remark` VARCHAR(512) NULL COMMENT '备注信息',
|
||||||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人(系统/管理员账号)',
|
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人(系统/管理员账号)',
|
||||||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
@ -955,7 +955,7 @@ CREATE TABLE `t_customer` (
|
|||||||
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
||||||
`Salesman` VARCHAR(32) NULL COMMENT '所属销售员账号',
|
`Salesman` VARCHAR(32) NULL COMMENT '所属销售员账号',
|
||||||
`CustomerService` VARCHAR(32) NULL COMMENT '所属顾问',
|
`CustomerService` VARCHAR(32) NULL COMMENT '所属顾问',
|
||||||
`CustomerGroup` TINYINT NULL COMMENT '客户分组:0-普通客户,1-VIP1,2-VIP2,3-VIP3,4-VIP4,5-VIP5',
|
`CustomerGroup` TINYINT NULL COMMENT 'CustomerGroup:0=None未设置,1=Normal普通,2=Vip1…6=Vip5',
|
||||||
`OrganizationId` CHAR(36) NULL COMMENT '归属销售组织 FK organization.Id',
|
`OrganizationId` CHAR(36) NULL COMMENT '归属销售组织 FK organization.Id',
|
||||||
`LastLoginIp` VARCHAR(64) NULL COMMENT '最后在线IP',
|
`LastLoginIp` VARCHAR(64) NULL COMMENT '最后在线IP',
|
||||||
`LastLoginTime` DATETIME NULL COMMENT '最后在线时间',
|
`LastLoginTime` DATETIME NULL COMMENT '最后在线时间',
|
||||||
@ -981,10 +981,10 @@ CREATE TABLE `t_recharge_record` (
|
|||||||
`SecretLevel` TINYINT NOT NULL DEFAULT 3 COMMENT '数据密级 1-4',
|
`SecretLevel` TINYINT NOT NULL DEFAULT 3 COMMENT '数据密级 1-4',
|
||||||
`SerialNumber` VARCHAR(64) NOT NULL COMMENT '流水号',
|
`SerialNumber` VARCHAR(64) NOT NULL COMMENT '流水号',
|
||||||
`RechargeTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '充值提交时间',
|
`RechargeTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '充值提交时间',
|
||||||
`PayType` TINYINT NOT NULL COMMENT '支付方式:1-微信,2-支付宝',
|
`PayType` TINYINT NOT NULL COMMENT 'PayType:0=None未设置,1=Wechat微信,2=Alipay支付宝',
|
||||||
`RechargeAmount` DECIMAL(18,2) NOT NULL COMMENT '充值金额,>=0.01',
|
`RechargeAmount` DECIMAL(18,2) NOT NULL COMMENT '充值金额,>=0.01',
|
||||||
`RechargeScreenshot` VARCHAR(255) NULL COMMENT '充值截图URL',
|
`RechargeScreenshot` VARCHAR(255) NULL COMMENT '充值截图URL',
|
||||||
`RechargeStatus` TINYINT NOT NULL DEFAULT 0 COMMENT '充值状态:0-待审核,1-审核通过,2-审核驳回',
|
`RechargeStatus` TINYINT NOT NULL DEFAULT 1 COMMENT 'RechargeStatus:0=None未设置,1=Pending待审核,2=Approved通过,3=Rejected驳回',
|
||||||
`Remark` VARCHAR(512) NULL COMMENT '备注(客户/审核人填写)',
|
`Remark` VARCHAR(512) NULL COMMENT '备注(客户/审核人填写)',
|
||||||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||||||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
@ -1020,7 +1020,7 @@ CREATE TABLE `t_dict` (
|
|||||||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1',
|
||||||
`DictType` VARCHAR(64) NOT NULL COMMENT '字典类型',
|
`DictType` VARCHAR(64) NOT NULL COMMENT '字典类型',
|
||||||
`DictSort` INT NOT NULL DEFAULT 0 COMMENT '排序值',
|
`DictSort` INT NOT NULL DEFAULT 0 COMMENT '排序值',
|
||||||
`DictCode` VARCHAR(64) NOT NULL COMMENT '字典编码',
|
`DictCode` VARCHAR(64) NOT NULL COMMENT '字典编码:字符串类存语义码(camelCase);数值类存整数字符串如1/2,与对应枚举值一致(0=None不入库)',
|
||||||
`DictName` VARCHAR(128) NOT NULL COMMENT '字典名称',
|
`DictName` VARCHAR(128) NOT NULL COMMENT '字典名称',
|
||||||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||||||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||||||
|
|||||||
74
sql/migrate_enum_int_comments.sql
Normal file
74
sql/migrate_enum_int_comments.sql
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
-- 已有库增量:字节枚举字段注释统一 + 发布记录 Status 改 TINYINT + 旧 0 起编码迁移
|
||||||
|
-- 对应 C# 枚举:EnableStatus / CustomerStatus / CustomerGroup / RechargeStatus / PayType / EsSnapshotStatus
|
||||||
|
-- 约定:0=None 未设置;业务值从 1 起。执行前请备份。
|
||||||
|
|
||||||
|
-- ---------- 1. 发布记录 Status:VARCHAR(中文) -> TINYINT(EsSnapshotStatus) ----------
|
||||||
|
ALTER TABLE `t_sales_product_publish_record`
|
||||||
|
ADD COLUMN `StatusInt` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None,1=Active生效,2=Inactive失效' AFTER `OperatorType`;
|
||||||
|
|
||||||
|
UPDATE `t_sales_product_publish_record`
|
||||||
|
SET `StatusInt` = CASE
|
||||||
|
WHEN TRIM(`Status`) IN ('生效', 'active', 'Active', '1') THEN 1
|
||||||
|
WHEN TRIM(`Status`) IN ('失效', '无效', 'inactive', 'Inactive', '2') THEN 2
|
||||||
|
ELSE 1
|
||||||
|
END;
|
||||||
|
|
||||||
|
ALTER TABLE `t_sales_product_publish_record`
|
||||||
|
DROP COLUMN `Status`,
|
||||||
|
CHANGE COLUMN `StatusInt` `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None未设置,1=Active生效,2=Inactive失效';
|
||||||
|
|
||||||
|
ALTER TABLE `t_service_channel_publish_record`
|
||||||
|
ADD COLUMN `StatusInt` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None,1=Active生效,2=Inactive失效' AFTER `OperatorType`;
|
||||||
|
|
||||||
|
UPDATE `t_service_channel_publish_record`
|
||||||
|
SET `StatusInt` = CASE
|
||||||
|
WHEN TRIM(`Status`) IN ('生效', 'active', 'Active', '1') THEN 1
|
||||||
|
WHEN TRIM(`Status`) IN ('失效', '无效', 'inactive', 'Inactive', '2') THEN 2
|
||||||
|
ELSE 1
|
||||||
|
END;
|
||||||
|
|
||||||
|
ALTER TABLE `t_service_channel_publish_record`
|
||||||
|
DROP COLUMN `Status`,
|
||||||
|
CHANGE COLUMN `StatusInt` `Status` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None未设置,1=Active生效,2=Inactive失效';
|
||||||
|
|
||||||
|
-- ---------- 2. 旧 0 起编码 -> 1 起(若已迁移可跳过对应 UPDATE) ----------
|
||||||
|
UPDATE `t_customer` SET `Status` = `Status` + 1 WHERE `Status` BETWEEN 0 AND 2;
|
||||||
|
UPDATE `t_customer` SET `CustomerGroup` = `CustomerGroup` + 1 WHERE `CustomerGroup` BETWEEN 0 AND 5;
|
||||||
|
UPDATE `t_recharge_record` SET `RechargeStatus` = `RechargeStatus` + 1 WHERE `RechargeStatus` BETWEEN 0 AND 2;
|
||||||
|
|
||||||
|
UPDATE `t_sales_product` SET `IsActive` = CASE `IsActive` WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE `IsActive` END WHERE `IsActive` IN (0, 1);
|
||||||
|
UPDATE `t_service_channel` SET `IsActive` = CASE `IsActive` WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE `IsActive` END WHERE `IsActive` IN (0, 1);
|
||||||
|
UPDATE `t_sales_product_price` SET `Status` = CASE `Status` WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE `Status` END WHERE `Status` IN (0, 1);
|
||||||
|
UPDATE `t_service_channel_price` SET `Status` = CASE `Status` WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE `Status` END WHERE `Status` IN (0, 1);
|
||||||
|
UPDATE `t_auto_trigger` SET `Status` = CASE `Status` WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE `Status` END WHERE `Status` IN (0, 1);
|
||||||
|
UPDATE `t_issue_template` SET `Status` = CASE `Status` WHEN 0 THEN 1 WHEN 1 THEN 2 ELSE `Status` END WHERE `Status` IN (0, 1);
|
||||||
|
|
||||||
|
-- ---------- 3. 字段注释(可重复执行 MODIFY) ----------
|
||||||
|
ALTER TABLE `t_customer`
|
||||||
|
MODIFY COLUMN `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'CustomerStatus:0=None未设置,1=Disabled禁用,2=Normal正常,3=Frozen冻结',
|
||||||
|
MODIFY COLUMN `CustomerGroup` TINYINT NULL COMMENT 'CustomerGroup:0=None未设置,1=Normal普通,2=Vip1…6=Vip5';
|
||||||
|
|
||||||
|
ALTER TABLE `t_recharge_record`
|
||||||
|
MODIFY COLUMN `PayType` TINYINT NOT NULL COMMENT 'PayType:0=None未设置,1=Wechat微信,2=Alipay支付宝',
|
||||||
|
MODIFY COLUMN `RechargeStatus` TINYINT NOT NULL DEFAULT 1 COMMENT 'RechargeStatus:0=None未设置,1=Pending待审核,2=Approved通过,3=Rejected驳回';
|
||||||
|
|
||||||
|
ALTER TABLE `t_sales_product`
|
||||||
|
MODIFY COLUMN `IsActive` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用';
|
||||||
|
|
||||||
|
ALTER TABLE `t_service_channel`
|
||||||
|
MODIFY COLUMN `IsActive` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用';
|
||||||
|
|
||||||
|
ALTER TABLE `t_sales_product_price`
|
||||||
|
MODIFY COLUMN `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用';
|
||||||
|
|
||||||
|
ALTER TABLE `t_service_channel_price`
|
||||||
|
MODIFY COLUMN `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用';
|
||||||
|
|
||||||
|
ALTER TABLE `t_auto_trigger`
|
||||||
|
MODIFY COLUMN `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用';
|
||||||
|
|
||||||
|
ALTER TABLE `t_issue_template`
|
||||||
|
MODIFY COLUMN `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用';
|
||||||
|
|
||||||
|
ALTER TABLE `t_dict`
|
||||||
|
MODIFY COLUMN `DictCode` VARCHAR(64) NOT NULL COMMENT '字典编码:字符串类存语义码;数值类存整数字符串如1/2,与枚举值一致(0=None不入库)';
|
||||||
@ -4,6 +4,7 @@ using Oms.Application.Dtos.Shared;
|
|||||||
using Oms.Application.Shared;
|
using Oms.Application.Shared;
|
||||||
using Oms.Domain.ChannelsAggregate.Consts;
|
using Oms.Domain.ChannelsAggregate.Consts;
|
||||||
using Oms.Domain.ChannelsAggregate.Entities;
|
using Oms.Domain.ChannelsAggregate.Entities;
|
||||||
|
using Oms.Domain.Shared;
|
||||||
using Oms.Domain.Shared.Enums;
|
using Oms.Domain.Shared.Enums;
|
||||||
|
|
||||||
namespace Oms.Application.Services.Channels;
|
namespace Oms.Application.Services.Channels;
|
||||||
@ -148,7 +149,7 @@ public partial class SalesProductService
|
|||||||
SalesProductId = entity.SalesProductId,
|
SalesProductId = entity.SalesProductId,
|
||||||
Version = entity.Version,
|
Version = entity.Version,
|
||||||
OperatorType = entity.OperatorType,
|
OperatorType = entity.OperatorType,
|
||||||
Status = entity.Status,
|
Status = EnumDisplayNames.Of(entity.Status),
|
||||||
PublishUser = entity.PublishUser,
|
PublishUser = entity.PublishUser,
|
||||||
PublishTime = entity.PublishTime,
|
PublishTime = entity.PublishTime,
|
||||||
Description = entity.Description,
|
Description = entity.Description,
|
||||||
@ -235,7 +236,7 @@ public partial class SalesProductService
|
|||||||
SalesProductId = salesProductId,
|
SalesProductId = salesProductId,
|
||||||
Version = DateTime.Now.ToString("yyyyMMddHHmmss"),
|
Version = DateTime.Now.ToString("yyyyMMddHHmmss"),
|
||||||
OperatorType = operatorType,
|
OperatorType = operatorType,
|
||||||
Status = "生效",
|
Status = EsSnapshotStatus.Active,
|
||||||
PublishUser = string.IsNullOrWhiteSpace(CurrentUser.UserName) ? CurrentUser.GetId<int>().ToString() : CurrentUser.UserName!,
|
PublishUser = string.IsNullOrWhiteSpace(CurrentUser.UserName) ? CurrentUser.GetId<int>().ToString() : CurrentUser.UserName!,
|
||||||
PublishTime = DateTime.Now,
|
PublishTime = DateTime.Now,
|
||||||
Description = description,
|
Description = description,
|
||||||
|
|||||||
@ -2,6 +2,7 @@ using Oms.Application.Dtos.Channels;
|
|||||||
using Oms.Application.Dtos.Shared;
|
using Oms.Application.Dtos.Shared;
|
||||||
using Oms.Application.Shared;
|
using Oms.Application.Shared;
|
||||||
using Oms.Domain.ChannelsAggregate.Entities;
|
using Oms.Domain.ChannelsAggregate.Entities;
|
||||||
|
using Oms.Domain.Shared;
|
||||||
using Oms.Domain.Shared.Enums;
|
using Oms.Domain.Shared.Enums;
|
||||||
|
|
||||||
namespace Oms.Application.Services.Channels;
|
namespace Oms.Application.Services.Channels;
|
||||||
@ -162,7 +163,7 @@ public partial class ServiceChannelService
|
|||||||
ServiceChannelId = entity.ServiceChannelId,
|
ServiceChannelId = entity.ServiceChannelId,
|
||||||
Version = entity.Version,
|
Version = entity.Version,
|
||||||
OperatorType = entity.OperatorType,
|
OperatorType = entity.OperatorType,
|
||||||
Status = entity.Status,
|
Status = EnumDisplayNames.Of(entity.Status),
|
||||||
PublishUser = entity.PublishUser,
|
PublishUser = entity.PublishUser,
|
||||||
PublishTime = entity.PublishTime,
|
PublishTime = entity.PublishTime,
|
||||||
Description = entity.Description,
|
Description = entity.Description,
|
||||||
@ -230,7 +231,7 @@ public partial class ServiceChannelService
|
|||||||
ServiceChannelId = serviceChannelId,
|
ServiceChannelId = serviceChannelId,
|
||||||
Version = DateTime.Now.ToString("yyyyMMddHHmmss"),
|
Version = DateTime.Now.ToString("yyyyMMddHHmmss"),
|
||||||
OperatorType = operatorType,
|
OperatorType = operatorType,
|
||||||
Status = "生效",
|
Status = EsSnapshotStatus.Active,
|
||||||
PublishUser = string.IsNullOrWhiteSpace(CurrentUser.UserName) ? CurrentUser.GetId<int>().ToString() : CurrentUser.UserName!,
|
PublishUser = string.IsNullOrWhiteSpace(CurrentUser.UserName) ? CurrentUser.GetId<int>().ToString() : CurrentUser.UserName!,
|
||||||
PublishTime = DateTime.Now,
|
PublishTime = DateTime.Now,
|
||||||
Description = description,
|
Description = description,
|
||||||
|
|||||||
@ -8,6 +8,7 @@ using Oms.Domain.ChannelsAggregate.Entities;
|
|||||||
using Oms.Domain.CustomersAggregate.Enums;
|
using Oms.Domain.CustomersAggregate.Enums;
|
||||||
using Oms.Domain.OrdersAggregate.Consts;
|
using Oms.Domain.OrdersAggregate.Consts;
|
||||||
using Oms.Domain.OrdersAggregate.Entities;
|
using Oms.Domain.OrdersAggregate.Entities;
|
||||||
|
using Oms.Domain.Shared;
|
||||||
|
|
||||||
namespace Oms.Application.Services.Orders;
|
namespace Oms.Application.Services.Orders;
|
||||||
|
|
||||||
@ -397,7 +398,7 @@ internal static class ParcelBillingCalculator
|
|||||||
HasEnabledReceivablePriceItems(priceSnapshot);
|
HasEnabledReceivablePriceItems(priceSnapshot);
|
||||||
|
|
||||||
public static bool HasEnabledReceivablePriceItems(SalesProductPricePublishSnapshotDto priceSnapshot) =>
|
public static bool HasEnabledReceivablePriceItems(SalesProductPricePublishSnapshotDto priceSnapshot) =>
|
||||||
priceSnapshot.Prices.Any(x => x.Status == 1);
|
priceSnapshot.Prices.Any(x => EnableStatusRules.IsEnabled(x.Status));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 收集卖价快照中所有启用价格项的明细分区键(去重)。
|
/// 收集卖价快照中所有启用价格项的明细分区键(去重)。
|
||||||
@ -405,7 +406,7 @@ internal static class ParcelBillingCalculator
|
|||||||
public static IReadOnlyList<string> CollectDistinctDetailZoneKeys(SalesProductPricePublishSnapshotDto priceSnapshot)
|
public static IReadOnlyList<string> CollectDistinctDetailZoneKeys(SalesProductPricePublishSnapshotDto priceSnapshot)
|
||||||
{
|
{
|
||||||
var zones = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
var zones = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||||
foreach (var price in priceSnapshot.Prices.Where(x => x.Status == 1))
|
foreach (var price in priceSnapshot.Prices.Where(x => EnableStatusRules.IsEnabled(x.Status)))
|
||||||
{
|
{
|
||||||
foreach (var detail in price.Details ?? [])
|
foreach (var detail in price.Details ?? [])
|
||||||
{
|
{
|
||||||
@ -434,7 +435,7 @@ internal static class ParcelBillingCalculator
|
|||||||
{
|
{
|
||||||
var cargoLabel = GetCargoAttributeLabel(cargoAttribute);
|
var cargoLabel = GetCargoAttributeLabel(cargoAttribute);
|
||||||
var warehouseLabel = FormatWarehouseLabel(warehouseId, warehouseName);
|
var warehouseLabel = FormatWarehouseLabel(warehouseId, warehouseName);
|
||||||
var enabledPrices = priceSnapshot.Prices.Where(x => x.Status == 1).ToList();
|
var enabledPrices = priceSnapshot.Prices.Where(x => EnableStatusRules.IsEnabled(x.Status)).ToList();
|
||||||
if (enabledPrices.Count == 0)
|
if (enabledPrices.Count == 0)
|
||||||
{
|
{
|
||||||
return "卖价快照中无启用的价格项";
|
return "卖价快照中无启用的价格项";
|
||||||
@ -671,7 +672,7 @@ internal static class ParcelBillingCalculator
|
|||||||
HasEnabledReceivablePriceItems(priceSnapshot);
|
HasEnabledReceivablePriceItems(priceSnapshot);
|
||||||
|
|
||||||
public static bool HasEnabledPayablePriceItems(IReadOnlyList<ServiceChannelPriceListOutput> prices) =>
|
public static bool HasEnabledPayablePriceItems(IReadOnlyList<ServiceChannelPriceListOutput> prices) =>
|
||||||
prices.Any(x => x.Status == 1);
|
prices.Any(x => EnableStatusRules.IsEnabled(x.Status));
|
||||||
|
|
||||||
public static bool HasEnabledForecastPayablePriceItems(IReadOnlyList<ServiceChannelPriceListOutput> prices) =>
|
public static bool HasEnabledForecastPayablePriceItems(IReadOnlyList<ServiceChannelPriceListOutput> prices) =>
|
||||||
HasEnabledPayablePriceItems(prices);
|
HasEnabledPayablePriceItems(prices);
|
||||||
@ -828,7 +829,7 @@ internal static class ParcelBillingCalculator
|
|||||||
string? warehouseName = null)
|
string? warehouseName = null)
|
||||||
{
|
{
|
||||||
var fees = new List<BillingFeeLine>();
|
var fees = new List<BillingFeeLine>();
|
||||||
foreach (var priceItem in priceItems.Where(x => x.Status == 1))
|
foreach (var priceItem in priceItems.Where(x => EnableStatusRules.IsEnabled(x.Status)))
|
||||||
{
|
{
|
||||||
var detail = MatchPriceDetail(
|
var detail = MatchPriceDetail(
|
||||||
priceItem.Details,
|
priceItem.Details,
|
||||||
@ -893,7 +894,7 @@ internal static class ParcelBillingCalculator
|
|||||||
string? warehouseName = null)
|
string? warehouseName = null)
|
||||||
{
|
{
|
||||||
var fees = new List<OrderFee>();
|
var fees = new List<OrderFee>();
|
||||||
foreach (var priceItem in priceItems.Where(x => x.Status == 1))
|
foreach (var priceItem in priceItems.Where(x => EnableStatusRules.IsEnabled(x.Status)))
|
||||||
{
|
{
|
||||||
var detail = MatchPriceDetail(
|
var detail = MatchPriceDetail(
|
||||||
priceItem.Details,
|
priceItem.Details,
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using Oms.Domain.Shared;
|
using Oms.Domain.Shared;
|
||||||
|
using Oms.Domain.Shared.Enums;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
namespace Oms.Domain.ChannelsAggregate.Entities;
|
namespace Oms.Domain.ChannelsAggregate.Entities;
|
||||||
@ -12,7 +13,7 @@ public class SalesProductPublishRecord : OmsAuditedEntity
|
|||||||
|
|
||||||
public string OperatorType { get; set; } = string.Empty;
|
public string OperatorType { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string Status { get; set; } = string.Empty;
|
public EsSnapshotStatus Status { get; set; } = EsSnapshotStatus.Active;
|
||||||
|
|
||||||
public string PublishUser { get; set; } = string.Empty;
|
public string PublishUser { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using Oms.Domain.Shared;
|
using Oms.Domain.Shared;
|
||||||
|
using Oms.Domain.Shared.Enums;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
namespace Oms.Domain.ChannelsAggregate.Entities;
|
namespace Oms.Domain.ChannelsAggregate.Entities;
|
||||||
@ -12,7 +13,7 @@ public class ServiceChannelPublishRecord : OmsAuditedEntity
|
|||||||
|
|
||||||
public string OperatorType { get; set; } = string.Empty;
|
public string OperatorType { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string Status { get; set; } = string.Empty;
|
public EsSnapshotStatus Status { get; set; } = EsSnapshotStatus.Active;
|
||||||
|
|
||||||
public string PublishUser { get; set; } = string.Empty;
|
public string PublishUser { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|||||||
10
src/Oms.Domain/Shared/EnableStatusRules.cs
Normal file
10
src/Oms.Domain/Shared/EnableStatusRules.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using Oms.Domain.Shared.Enums;
|
||||||
|
|
||||||
|
namespace Oms.Domain.Shared;
|
||||||
|
|
||||||
|
public static class EnableStatusRules
|
||||||
|
{
|
||||||
|
public static bool IsEnabled(EnableStatus status) => status == EnableStatus.Enabled;
|
||||||
|
|
||||||
|
public static bool IsEnabled(byte status) => (EnableStatus)status == EnableStatus.Enabled;
|
||||||
|
}
|
||||||
59
src/Oms.Domain/Shared/EnumDisplayNames.cs
Normal file
59
src/Oms.Domain/Shared/EnumDisplayNames.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
using Oms.Domain.CustomersAggregate.Enums;
|
||||||
|
using Oms.Domain.RechargeAggregate.Enums;
|
||||||
|
using Oms.Domain.Shared.Enums;
|
||||||
|
|
||||||
|
namespace Oms.Domain.Shared;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 字节枚举展示名(与 t_dict 中文名称对齐,供 API 出参等使用)。
|
||||||
|
/// </summary>
|
||||||
|
public static class EnumDisplayNames
|
||||||
|
{
|
||||||
|
public static string Of(EsSnapshotStatus status) => status switch
|
||||||
|
{
|
||||||
|
EsSnapshotStatus.Active => "生效",
|
||||||
|
EsSnapshotStatus.Inactive => "失效",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
public static string Of(EnableStatus status) => status switch
|
||||||
|
{
|
||||||
|
EnableStatus.Disabled => "禁用",
|
||||||
|
EnableStatus.Enabled => "启用",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
public static string Of(CustomerStatus status) => status switch
|
||||||
|
{
|
||||||
|
CustomerStatus.Disabled => "禁用",
|
||||||
|
CustomerStatus.Normal => "正常",
|
||||||
|
CustomerStatus.Frozen => "冻结",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
public static string Of(CustomerGroup? group) => group switch
|
||||||
|
{
|
||||||
|
CustomerGroup.Normal => "普通客户",
|
||||||
|
CustomerGroup.Vip1 => "VIP1",
|
||||||
|
CustomerGroup.Vip2 => "VIP2",
|
||||||
|
CustomerGroup.Vip3 => "VIP3",
|
||||||
|
CustomerGroup.Vip4 => "VIP4",
|
||||||
|
CustomerGroup.Vip5 => "VIP5",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
public static string Of(RechargeStatus status) => status switch
|
||||||
|
{
|
||||||
|
RechargeStatus.Pending => "待审核",
|
||||||
|
RechargeStatus.Approved => "审核通过",
|
||||||
|
RechargeStatus.Rejected => "审核驳回",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
public static string Of(PayType payType) => payType switch
|
||||||
|
{
|
||||||
|
PayType.Wechat => "微信",
|
||||||
|
PayType.Alipay => "支付宝",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
}
|
||||||
12
src/Oms.Domain/Shared/Enums/EsSnapshotStatus.cs
Normal file
12
src/Oms.Domain/Shared/Enums/EsSnapshotStatus.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace Oms.Domain.Shared.Enums;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ES/渠道发布快照生效状态(对应字典 es_snapshot_status 的数值落库,dictCode 为 active/inactive 仅作展示)。
|
||||||
|
/// 0=None 未设置;业务值从 1 起。
|
||||||
|
/// </summary>
|
||||||
|
public enum EsSnapshotStatus : byte
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Active = 1,
|
||||||
|
Inactive = 2
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
using Fake.DependencyInjection;
|
using Fake.DependencyInjection;
|
||||||
using Oms.Domain.ChannelsAggregate.Entities;
|
using Oms.Domain.ChannelsAggregate.Entities;
|
||||||
|
using Oms.Domain.Shared.Enums;
|
||||||
using Oms.Domain.ChannelsAggregate.Repositories;
|
using Oms.Domain.ChannelsAggregate.Repositories;
|
||||||
using Oms.Domain.Shared.Enums;
|
using Oms.Domain.Shared.Enums;
|
||||||
using Oms.SqlSugarCore.Repositories;
|
using Oms.SqlSugarCore.Repositories;
|
||||||
@ -227,7 +228,7 @@ public class SalesProductRepository : OmsSqlSugarRepository<SalesProduct>, ISale
|
|||||||
var records = await db.Queryable<SalesProductPublishRecord>()
|
var records = await db.Queryable<SalesProductPublishRecord>()
|
||||||
.Where(x => x.SalesProductId == salesProductId
|
.Where(x => x.SalesProductId == salesProductId
|
||||||
&& x.OperatorType == operatorType
|
&& x.OperatorType == operatorType
|
||||||
&& x.Status == "生效"
|
&& x.Status == EsSnapshotStatus.Active
|
||||||
&& x.PublishTime <= bindTime)
|
&& x.PublishTime <= bindTime)
|
||||||
.OrderBy(x => x.PublishTime, SqlSugar.OrderByType.Desc)
|
.OrderBy(x => x.PublishTime, SqlSugar.OrderByType.Desc)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using Fake.DependencyInjection;
|
using Fake.DependencyInjection;
|
||||||
using Oms.Domain.ChannelsAggregate.Entities;
|
using Oms.Domain.ChannelsAggregate.Entities;
|
||||||
|
using Oms.Domain.Shared.Enums;
|
||||||
using Oms.Domain.ChannelsAggregate.Repositories;
|
using Oms.Domain.ChannelsAggregate.Repositories;
|
||||||
using Oms.Domain.Shared.Enums;
|
using Oms.Domain.Shared.Enums;
|
||||||
using Oms.SqlSugarCore.Repositories;
|
using Oms.SqlSugarCore.Repositories;
|
||||||
@ -189,7 +190,7 @@ public class ServiceChannelRepository : OmsSqlSugarRepository<ServiceChannel>, I
|
|||||||
var records = await db.Queryable<ServiceChannelPublishRecord>()
|
var records = await db.Queryable<ServiceChannelPublishRecord>()
|
||||||
.Where(x => x.ServiceChannelId == serviceChannelId
|
.Where(x => x.ServiceChannelId == serviceChannelId
|
||||||
&& x.OperatorType == operatorType
|
&& x.OperatorType == operatorType
|
||||||
&& x.Status == "生效"
|
&& x.Status == EsSnapshotStatus.Active
|
||||||
&& x.PublishTime <= bindTime)
|
&& x.PublishTime <= bindTime)
|
||||||
.OrderBy(x => x.PublishTime, SqlSugar.OrderByType.Desc)
|
.OrderBy(x => x.PublishTime, SqlSugar.OrderByType.Desc)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user