-- EasyCode source store tables
-- Import after sql/db.sql when upgrading an existing database.

delete from sys_dict_data where dict_type = 'source_project_category';
delete from sys_dict_type where dict_type = 'source_project_category';
insert into sys_dict_type values(null, '源码分类', 'source_project_category', '0', 'admin', sysdate(), '', null, '源码库分类列表');
insert into sys_dict_data values(null, 1, '企业管理系统', 'enterprise', 'source_project_category', '', 'primary', 'Y', '0', 'admin', sysdate(), '', null, '源码分类-企业管理系统');
insert into sys_dict_data values(null, 2, '商城系统', 'mall', 'source_project_category', '', 'success', 'N', '0', 'admin', sysdate(), '', null, '源码分类-商城系统');
insert into sys_dict_data values(null, 3, 'OA 办公', 'office', 'source_project_category', '', 'info', 'N', '0', 'admin', sysdate(), '', null, '源码分类-OA 办公');
insert into sys_dict_data values(null, 4, '低代码平台', 'lowcode', 'source_project_category', '', 'warning', 'N', '0', 'admin', sysdate(), '', null, '源码分类-低代码平台');
insert into sys_dict_data values(null, 5, '微服务脚手架', 'microservice', 'source_project_category', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '源码分类-微服务脚手架');

drop table if exists source_purchase;
drop table if exists source_project;

create table source_project (
  project_id           bigint(20)      not null auto_increment comment '源码项目ID',
  slug                 varchar(100)    not null comment '前台访问标识',
  project_name         varchar(120)    not null comment '项目名称',
  category             varchar(50)     default '' comment '分类',
  cover_text           varchar(30)     default '' comment '封面标识',
  summary              varchar(500)    default '' comment '项目摘要',
  description_md       longtext        comment 'Markdown项目描述',
  price                bigint(20)      default 0 comment '价格，单位分',
  view_count           bigint(20)      default 0 comment '浏览量',
  tags                 longtext        comment '技术标签JSON',
  modules              longtext        comment '功能模块JSON',
  scenes               longtext        comment '适用场景JSON',
  resource_name        varchar(200)    default '' comment '源码资源名称',
  resource_url         varchar(500)    default '' comment '源码资源地址',
  resource_version     varchar(50)     default '' comment '源码资源版本',
  resource_size        varchar(50)     default '' comment '源码资源大小',
  sort                 int             default 0 comment '排序',
  status               char(1)         default '0' comment '状态（0上架 1下架）',
  del_flag             char(1)         default '0' comment '删除标志（0存在 2删除）',
  create_by            varchar(64)     default '' comment '创建者',
  create_time          datetime        default null comment '创建时间',
  update_by            varchar(64)     default '' comment '更新者',
  update_time          datetime        default null comment '更新时间',
  remark               varchar(500)    default null comment '备注',
  primary key (project_id),
  unique key uk_source_project_slug (slug),
  key idx_source_project_category (category),
  key idx_source_project_status (status, del_flag)
) engine=innodb auto_increment=100 default charset=utf8mb4 comment='源码库项目表';

create table source_purchase (
  purchase_id          bigint(20)      not null auto_increment comment '购买记录ID',
  project_id           bigint(20)      not null comment '源码项目ID',
  user_id              bigint(20)      not null comment '前台用户ID',
  order_no             varchar(64)     not null comment '订单号',
  amount               bigint(20)      default 0 comment '金额，单位分',
  pay_status           char(1)         default '0' comment '支付状态（0待支付 1已支付 2已取消）',
  resource_status      char(1)         default '0' comment '资源状态（0未发放 1已发放）',
  purchase_time        datetime        default null comment '购买时间',
  create_by            varchar(64)     default '' comment '创建者',
  create_time          datetime        default null comment '创建时间',
  update_by            varchar(64)     default '' comment '更新者',
  update_time          datetime        default null comment '更新时间',
  remark               varchar(500)    default null comment '备注',
  primary key (purchase_id),
  unique key uk_source_purchase_order_no (order_no),
  key idx_source_purchase_user (user_id),
  key idx_source_purchase_project (project_id),
  constraint fk_source_purchase_project foreign key (project_id) references source_project(project_id),
  constraint fk_source_purchase_user foreign key (user_id) references front_user(user_id)
) engine=innodb auto_increment=100 default charset=utf8mb4 comment='源码购买记录表';

insert into source_project
(project_id, slug, project_name, category, cover_text, summary, description_md, price, view_count, tags, modules, scenes, resource_name, resource_url, resource_version, resource_size, sort, status, del_flag, create_by, create_time, update_by, update_time, remark)
values
(100, 'dms-platform', '商用车 DMS 管理系统', 'enterprise', 'DMS', '覆盖经销商、维修工单、索赔、配件库存、服务活动和结算的商用车售后管理源码。',
'# 商用车 DMS 管理系统\n\n这套源码面向商用车售后服务场景，提供经销商、车辆档案、维修工单、索赔流程、配件库存和结算对账等核心能力。\n\n## 核心功能\n\n- 经销商档案、服务站和维修技师管理\n- 车辆档案、保养提醒和维修历史追踪\n- 维修工单、派工、完工质检和费用结算\n- 配件入库、出库、调拨和库存预警\n- 索赔申请、审核、结算和统计报表', 39900, 2860,
'["Spring Boot","Vue2","MySQL"]', '["经销商管理","维修工单","配件库存","索赔结算","服务活动"]', '["汽车后市场","商用车售后","经销商协同"]', '', '', '1.0.0', '', 1, '0', '0', 'admin', sysdate(), 'admin', sysdate(), null),
(101, 'mall-order-system', '商城订单管理系统', 'mall', 'MALL', '包含商品、订单、支付、库存、优惠券、会员和后台统计模块的商城管理源码。',
'# 商城订单管理系统\n\n项目提供从商品上架到订单履约的完整后台管理能力，适合作为中小型商城或订单中台的启动源码。\n\n## 功能模块\n\n- 商品分类、SKU、库存和上下架\n- 购物车、订单、支付记录和售后单\n- 优惠券、满减活动和会员等级\n- 后台统计看板和经营数据导出', 29900, 1980,
'["Spring Cloud","Redis","Vue3"]', '["商品中心","订单中心","支付记录","会员体系","营销活动"]', '["电商后台","订单运营","会员营销"]', '', '', '1.0.0', '', 2, '0', '0', 'admin', sysdate(), 'admin', sysdate(), null),
(102, 'oa-approval-suite', 'OA 办公审批系统', 'office', 'OA', '集成用户、角色、菜单、审批流、请假、报销、公告和文件管理的办公源码。',
'# OA 办公审批系统\n\n这是一套偏企业内网办公的基础源码，重点覆盖审批、公告、文件与权限管理。\n\n## 亮点\n\n- 可配置审批节点和审批人\n- 请假、报销、外出等常见办公流程\n- 公告通知、附件上传和文件归档\n- 角色、菜单、按钮级权限控制', 26800, 1750,
'["Sa-Token","Element UI","工作流"]', '["审批流程","请假报销","公告通知","文件管理","权限菜单"]', '["企业内网","行政审批","协同办公"]', '', '', '1.0.0', '', 3, '0', '0', 'admin', sysdate(), 'admin', sysdate(), null),
(103, 'erp-warehouse', 'ERP 仓储管理系统', 'enterprise', 'ERP', '提供采购、销售、入库、出库、盘点、供应商和库存报表模块的仓储源码。',
'# ERP 仓储管理系统\n\n源码聚焦进销存和仓储管理，适合小型供应链、仓库和贸易公司快速搭建业务后台。\n\n## 模块清单\n\n- 采购订单、采购入库和供应商档案\n- 销售订单、销售出库和客户档案\n- 库存流水、库存盘点和预警规则\n- Excel 导入导出与库存报表', 19900, 1320,
'["ERP","MyBatis-Plus","Excel"]', '["采购入库","销售出库","库存盘点","供应商管理","报表导出"]', '["仓储管理","进销存","供应链后台"]', '', '', '1.0.0', '', 4, '0', '0', 'admin', sysdate(), 'admin', sysdate(), null),
(104, 'lowcode-form-platform', '低代码表单平台', 'lowcode', 'FORM', '支持动态表单、拖拽布局、字段配置、数据字典和在线设计的低代码源码。',
'# 低代码表单平台\n\n项目用于构建配置化表单和数据采集页面，包含设计器、字段配置、预览和提交数据管理。\n\n## 能力范围\n\n- 拖拽式表单组件编排\n- 字段属性、校验规则和选项配置\n- 字典数据联动\n- 表单预览与数据提交记录', 49900, 980,
'["Vue3","Element Plus","拖拽设计"]', '["表单设计器","字段配置","动态校验","数据字典","表单预览"]', '["低代码平台","动态表单","配置化后台"]', '', '', '1.0.0', '', 5, '0', '0', 'admin', sysdate(), 'admin', sysdate(), null),
(105, 'microservice-auth-starter', '微服务权限脚手架', 'microservice', 'MS', '集成网关、认证中心、系统服务、日志服务、文件服务和监控基础能力的脚手架源码。',
'# 微服务权限脚手架\n\n这套源码适合从单体后台升级到微服务架构的团队，预置认证、网关、系统权限和基础监控能力。\n\n## 服务组成\n\n- Gateway 网关统一鉴权和路由\n- Auth 认证中心\n- System 系统权限服务\n- Log 操作日志服务\n- File 文件服务', 59900, 2560,
'["Spring Cloud","Nacos","Gateway"]', '["网关服务","认证中心","系统服务","日志中心","文件服务"]', '["微服务基础架构","权限平台","多服务治理"]', '', '', '1.0.0', '', 6, '0', '0', 'admin', sysdate(), 'admin', sysdate(), null);
