Compare commits
11 Commits
cde19e180a
...
562769f9c0
| Author | SHA1 | Date | |
|---|---|---|---|
| 562769f9c0 | |||
| 3f674bd17a | |||
| 52839e17cc | |||
| 1555739fcd | |||
| ea780302e3 | |||
|
|
ce643990d8 | ||
|
|
7afa85b941 | ||
|
|
257dc16c94 | ||
|
|
5987f02e4e | ||
|
|
525cf97121 | ||
| 5dc7ab49d5 |
@@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
description:
|
|
||||||
globs:
|
|
||||||
alwaysApply: false
|
|
||||||
---
|
|
||||||
---
|
|
||||||
description:
|
|
||||||
globs:
|
|
||||||
alwaysApply: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Your rule content
|
|
||||||
#角色
|
|
||||||
你是一名精通开发的高级工程师,拥有10年以上的应用开发经验,熟悉*等开发工具和技术栈。
|
|
||||||
你的任务是帮助用户设计和开发易用且易于推护的 *** 应用。始终遵循最佳实践,并坚持干净代码和健壮架构的原则。
|
|
||||||
|
|
||||||
#目标
|
|
||||||
你的目标是以用户容易理解的方式帮助他们完成“应用的设计和开发工作,确保应用功能完善、性能优异、用户体验良好。
|
|
||||||
|
|
||||||
#要求
|
|
||||||
在理解用户需求、设计UI、编写代码、解决问题和项目选代优化时,你应该始终遵循以下原则:
|
|
||||||
|
|
||||||
|
|
||||||
##需求理解
|
|
||||||
-充分理解用户需求,站在用户角度思考,分析需求是否存在缺漏,并与用户讨论完善需求;
|
|
||||||
-选择最简单的解决方案来满足用户需求,避免过度设计。
|
|
||||||
##UI和样式设计
|
|
||||||
-使用现代UI框架进行样式设计(例如***,这里可以根据不同开发项目仔纽展开,比如使用哪些视觉规范或者UI框架,没有的话也可以不用过多展开);
|
|
||||||
-在不同平台上实现一致的设计和响应式模式
|
|
||||||
##代码编写
|
|
||||||
技术选型:根据项目需求选择合适的技术栈(例如***,这里需要仔细展开,比如介招某个技术栈用在什么地方,以及要遵循什么最佳实践)
|
|
||||||
代码结构:强调代码的清晰性、模块化、可维护性,遵循最佳实践(如DRY原则、最小权限原则、响应式设计等)
|
|
||||||
-代码安全性:在编写代码时,始终考虑安全性,避免引入漏洞,确保用户输入的安全处理
|
|
||||||
-性能优化:优化代码的性能,减少资源占用,提升加载速度,确保项目的高效运行
|
|
||||||
-测试与文档:编写单元测试,确保代码的健壮性,并提供清晰的中文注释和文档。方便后续阅读和维护
|
|
||||||
##问题解决
|
|
||||||
-全面阅读相关代码,理解***应用的工作原理
|
|
||||||
-根据用户的反馈分析问题的原因,提出解决问题的思路
|
|
||||||
-确保每次代码变更不会破坏现有功能,且尽可能保持最小的改动
|
|
||||||
##迭代优化
|
|
||||||
与用户保持密切沟通,根据反读调整功能和设计,确保应用符合用户需求
|
|
||||||
在不确定需求时,主动询问用户以澄清需求或技术细节
|
|
||||||
##方法论
|
|
||||||
-系统2思维:以分析严谨的方式解决问题。将需求分解为更小、可管理的部分,并在实施前仔细考虑每一步
|
|
||||||
思维树:评估多种可能的解决方案及其后果。使用结构化的方法探索不同的路径。并选择最优的解决方案
|
|
||||||
-选代改进:在最终确定代码之前,考虑改进、边缘情况和优化。通过潜在增强的迭代,确保最终解决方案是健壮的
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
**添加规则文件可帮助模型精准理解你的编码偏好,如框架、代码风格等**
|
|
||||||
**规则文件只对当前工程生效,单文件限制10000字符。如果无需将该文件提交到远程 Git 仓库,请将其添加到 .gitignore**
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
51
sql/mysql/member.sql
Normal file
51
sql/mysql/member.sql
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
-- 会员用户表 (tz_member_user)
|
||||||
|
CREATE TABLE `tz_member_user` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||||||
|
`mobile` varchar(11) NOT NULL COMMENT '手机',
|
||||||
|
`password` varchar(128) NOT NULL COMMENT '加密后的密码',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '帐号状态 (枚举 CommonStatusEnum)',
|
||||||
|
`register_ip` varchar(32) DEFAULT NULL COMMENT '注册 IP',
|
||||||
|
`register_terminal` tinyint(4) DEFAULT NULL COMMENT '注册终端 (枚举 TerminalEnum)',
|
||||||
|
`login_ip` varchar(32) DEFAULT NULL COMMENT '最后登录IP',
|
||||||
|
`login_date` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||||||
|
`nickname` varchar(64) DEFAULT NULL COMMENT '用户昵称',
|
||||||
|
`avatar` varchar(512) DEFAULT NULL COMMENT '用户头像',
|
||||||
|
`name` varchar(64) DEFAULT NULL COMMENT '真实名字',
|
||||||
|
`sex` tinyint(4) DEFAULT NULL COMMENT '性别 (枚举 SexEnum)',
|
||||||
|
`birthday` datetime DEFAULT NULL COMMENT '出生日期',
|
||||||
|
`area_id` int(11) DEFAULT NULL COMMENT '所在地 (关联 Area.id 字段)',
|
||||||
|
`mark` varchar(512) DEFAULT NULL COMMENT '用户备注',
|
||||||
|
`point` int(11) DEFAULT NULL COMMENT '积分',
|
||||||
|
`tag_ids` varchar(512) DEFAULT NULL COMMENT '会员标签列表,以逗号分隔',
|
||||||
|
`level_id` bigint(20) DEFAULT NULL COMMENT '会员级别编号 (关联 MemberLevelDO.id 字段)',
|
||||||
|
`experience` int(11) DEFAULT NULL COMMENT '会员经验',
|
||||||
|
`group_id` bigint(20) DEFAULT NULL COMMENT '用户分组编号 (关联 MemberGroupDO.id 字段)',
|
||||||
|
`tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_mobile` (`mobile`),
|
||||||
|
KEY `idx_level_id` (`level_id`),
|
||||||
|
KEY `idx_group_id` (`group_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员用户表';
|
||||||
|
|
||||||
|
-- 用户收件地址表 (tz_member_address)
|
||||||
|
CREATE TABLE `tz_member_address` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '用户编号',
|
||||||
|
`name` varchar(64) NOT NULL COMMENT '收件人名称',
|
||||||
|
`mobile` varchar(11) NOT NULL COMMENT '手机号',
|
||||||
|
`area_id` bigint(20) NOT NULL COMMENT '地区编号',
|
||||||
|
`detail_address` varchar(512) NOT NULL COMMENT '收件详细地址',
|
||||||
|
`default_status` tinyint(1) DEFAULT NULL COMMENT '是否默认 (true - 默认收件地址)',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_user_id` (`user_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户收件地址表';
|
||||||
266
sql/mysql/order.sql
Normal file
266
sql/mysql/order.sql
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
-- 基础实体表结构 (BaseDO) 不单独建表,字段会被继承到其他表中
|
||||||
|
|
||||||
|
-- 交易订单表 (trade_order)
|
||||||
|
CREATE TABLE `tz_trade_order`
|
||||||
|
(
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单编号,主键自增',
|
||||||
|
`order_num` varchar(64) NOT NULL COMMENT '订单流水号',
|
||||||
|
`order_type` tinyint(4) NOT NULL COMMENT '订单类型 (枚举 TradeOrderTypeEnum)',
|
||||||
|
`order_terminal` tinyint(4) NOT NULL COMMENT '订单来源 (枚举 TerminalEnum)',
|
||||||
|
`order_status` tinyint(4) NOT NULL COMMENT '订单状态 (枚举 TradeOrderStatusEnum)',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '用户编号',
|
||||||
|
`user_ip` varchar(64) DEFAULT NULL COMMENT '用户IP',
|
||||||
|
`user_remark` varchar(512) DEFAULT NULL COMMENT '用户备注',
|
||||||
|
`finish_time` datetime DEFAULT NULL COMMENT '订单完成时间',
|
||||||
|
`cancel_time` datetime DEFAULT NULL COMMENT '订单取消时间',
|
||||||
|
`cancel_type` tinyint(4) DEFAULT NULL COMMENT '取消类型 (枚举 TradeOrderCancelTypeEnum)',
|
||||||
|
`merchant_remark` varchar(512) DEFAULT NULL COMMENT '商家备注',
|
||||||
|
`comment_status` tinyint(1) DEFAULT NULL COMMENT '是否评价 (true-已评价, false-未评价)',
|
||||||
|
`total_price` int(11) NOT NULL COMMENT '商品原价,单位:分',
|
||||||
|
`discount_price` int(11) NOT NULL COMMENT '优惠金额,单位:分',
|
||||||
|
`delivery_price` int(11) NOT NULL COMMENT '运费金额,单位:分',
|
||||||
|
`adjust_price` int(11) NOT NULL COMMENT '订单调价,单位:分',
|
||||||
|
`pay_price` int(11) NOT NULL COMMENT '应付金额(总),单位:分',
|
||||||
|
`pay_order_id` bigint(20) DEFAULT NULL COMMENT '支付订单编号',
|
||||||
|
`pay_status` tinyint(1) NOT NULL COMMENT '是否已支付 (true-已支付, false-未支付)',
|
||||||
|
`pay_time` datetime DEFAULT NULL COMMENT '付款时间',
|
||||||
|
`pay_channel_code` varchar(64) DEFAULT NULL COMMENT '支付渠道',
|
||||||
|
`delivery_type` tinyint(4) NOT NULL COMMENT '配送方式 (枚举 DeliveryTypeEnum)',
|
||||||
|
`logistics_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '发货物流公司编号',
|
||||||
|
`logistics_no` varchar(64) DEFAULT '' COMMENT '发货物流单号',
|
||||||
|
`delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
|
||||||
|
`receive_time` datetime DEFAULT NULL COMMENT '收货时间',
|
||||||
|
`receiver_name` varchar(64) NOT NULL COMMENT '收件人名称',
|
||||||
|
`receiver_mobile` varchar(20) NOT NULL COMMENT '收件人手机',
|
||||||
|
`receiver_area_id` int(11) NOT NULL COMMENT '收件人地区编号',
|
||||||
|
`receiver_detail_address` varchar(512) NOT NULL COMMENT '收件人详细地址',
|
||||||
|
`pick_up_store_id` bigint(20) DEFAULT NULL COMMENT '自提门店编号',
|
||||||
|
`pick_up_verify_code` varchar(64) DEFAULT NULL COMMENT '自提核销码',
|
||||||
|
`refund_status` tinyint(4) NOT NULL COMMENT '退款状态 (枚举 TradeOrderRefundStatusEnum)',
|
||||||
|
`refund_price` int(11) NOT NULL COMMENT '退款金额,单位:分',
|
||||||
|
`after_sale_id` bigint(20) DEFAULT NULL COMMENT '售后单编号',
|
||||||
|
`after_sale_status` tinyint(4) NOT NULL COMMENT '售后状态 (枚举 TradeOrderItemAfterSaleStatusEnum)',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_order_num` (`order_num`),
|
||||||
|
KEY `idx_user_id` (`user_id`),
|
||||||
|
KEY `idx_status` (`order_status`),
|
||||||
|
KEY `idx_pay_status` (`pay_status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单表';
|
||||||
|
|
||||||
|
-- 交易订单项表 (trade_order_item)
|
||||||
|
CREATE TABLE `tz_trade_order_item`
|
||||||
|
(
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '用户编号',
|
||||||
|
`order_id` bigint(20) NOT NULL COMMENT '订单编号',
|
||||||
|
`cart_id` bigint(20) DEFAULT NULL COMMENT '购物车项编号',
|
||||||
|
`prod_id` bigint(20) NOT NULL COMMENT '商品 SPU 编号',
|
||||||
|
`prod_name` varchar(256) NOT NULL COMMENT '商品 SPU 名称',
|
||||||
|
`sku_id` bigint(20) NOT NULL COMMENT '商品 SKU 编号',
|
||||||
|
`properties` json DEFAULT NULL COMMENT '属性数组',
|
||||||
|
`pic_url` varchar(512) NOT NULL COMMENT '商品图片',
|
||||||
|
`count` int(11) NOT NULL COMMENT '购买数量',
|
||||||
|
`price` int(11) NOT NULL COMMENT '商品原价(单),单位:分',
|
||||||
|
`discount_price` int(11) NOT NULL COMMENT '优惠金额(总),单位:分',
|
||||||
|
`delivery_price` int(11) NOT NULL COMMENT '运费金额(总),单位:分',
|
||||||
|
`adjust_price` int(11) NOT NULL COMMENT '订单调价(总),单位:分',
|
||||||
|
`pay_price` int(11) NOT NULL COMMENT '应付金额(总),单位:分',
|
||||||
|
`serve_ext_info` json DEFAULT NULL COMMENT '扩展服务信息,存储额外的服务相关数据',
|
||||||
|
`price_ext_info` json DEFAULT NULL COMMENT '附加费信息',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_order_id` (`order_id`),
|
||||||
|
KEY `idx_sku_id` (`sku_id`),
|
||||||
|
KEY `idx_user_id` (`user_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单项表';
|
||||||
|
|
||||||
|
-- 订单日志表 (trade_order_log)
|
||||||
|
CREATE TABLE `tz_trade_order_log`
|
||||||
|
(
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '用户编号',
|
||||||
|
`user_type` tinyint(4) NOT NULL COMMENT '用户类型 (枚举 UserTypeEnum)',
|
||||||
|
`order_id` bigint(20) NOT NULL COMMENT '订单号',
|
||||||
|
`before_status` int(11) DEFAULT NULL COMMENT '操作前状态',
|
||||||
|
`after_status` int(11) DEFAULT NULL COMMENT '操作后状态',
|
||||||
|
`operate_type` tinyint(4) NOT NULL COMMENT '操作类型 (枚举 TradeOrderOperateTypeEnum)',
|
||||||
|
`content` varchar(1024) NOT NULL COMMENT '订单日志信息',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_order_id` (`order_id`),
|
||||||
|
KEY `idx_user_id` (`user_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单日志表';
|
||||||
|
|
||||||
|
-- 售后订单表 (tz_trade_after_sale)
|
||||||
|
CREATE TABLE `tz_trade_after_sale` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '售后编号,主键自增',
|
||||||
|
`no` varchar(64) NOT NULL COMMENT '售后单号',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '退款状态 (枚举 AfterSaleStatusEnum)',
|
||||||
|
`way` tinyint(4) NOT NULL COMMENT '售后方式 (枚举 AfterSaleWayEnum)',
|
||||||
|
`type` tinyint(4) NOT NULL COMMENT '售后类型 (枚举 AfterSaleTypeEnum)',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '用户编号',
|
||||||
|
`apply_reason` varchar(256) NOT NULL COMMENT '申请原因',
|
||||||
|
`apply_description` varchar(512) DEFAULT NULL COMMENT '补充描述',
|
||||||
|
`apply_pic_urls` json DEFAULT NULL COMMENT '补充凭证图片',
|
||||||
|
`order_id` bigint(20) NOT NULL COMMENT '交易订单编号',
|
||||||
|
`order_no` varchar(64) NOT NULL COMMENT '订单流水号',
|
||||||
|
`order_item_id` bigint(20) NOT NULL COMMENT '交易订单项编号',
|
||||||
|
`prod_id` bigint(20) NOT NULL COMMENT '商品 SPU 编号',
|
||||||
|
`prod_name` varchar(256) NOT NULL COMMENT '商品 SPU 名称',
|
||||||
|
`sku_id` bigint(20) NOT NULL COMMENT '商品 SKU 编号',
|
||||||
|
`properties` json DEFAULT NULL COMMENT '属性数组',
|
||||||
|
`pic_url` varchar(512) DEFAULT NULL COMMENT '商品图片',
|
||||||
|
`count` int(11) NOT NULL COMMENT '退货商品数量',
|
||||||
|
`audit_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||||
|
`audit_user_id` bigint(20) DEFAULT NULL COMMENT '审批人',
|
||||||
|
`audit_reason` varchar(512) DEFAULT NULL COMMENT '审批备注',
|
||||||
|
`refund_price` int(11) NOT NULL COMMENT '退款金额,单位:分',
|
||||||
|
`pay_refund_id` bigint(20) DEFAULT NULL COMMENT '支付退款编号',
|
||||||
|
`refund_time` datetime DEFAULT NULL COMMENT '退款时间',
|
||||||
|
`logistics_id` bigint(20) DEFAULT NULL COMMENT '退货物流公司编号',
|
||||||
|
`logistics_no` varchar(64) DEFAULT NULL COMMENT '退货物流单号',
|
||||||
|
`delivery_time` datetime DEFAULT NULL COMMENT '退货时间',
|
||||||
|
`receive_time` datetime DEFAULT NULL COMMENT '收货时间',
|
||||||
|
`receive_reason` varchar(512) DEFAULT NULL COMMENT '收货备注',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_no` (`no`),
|
||||||
|
KEY `idx_user_id` (`user_id`),
|
||||||
|
KEY `idx_order_id` (`order_id`),
|
||||||
|
KEY `idx_order_item_id` (`order_item_id`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='售后订单表';
|
||||||
|
|
||||||
|
-- 交易售后日志表 (tz_trade_after_sale_log)
|
||||||
|
CREATE TABLE `tz_trade_after_sale_log` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '用户编号',
|
||||||
|
`user_type` tinyint(4) NOT NULL COMMENT '用户类型 (枚举 UserTypeEnum)',
|
||||||
|
`after_sale_id` bigint(20) NOT NULL COMMENT '售后编号',
|
||||||
|
`before_status` tinyint(4) DEFAULT NULL COMMENT '操作前状态',
|
||||||
|
`after_status` tinyint(4) DEFAULT NULL COMMENT '操作后状态',
|
||||||
|
`operate_type` tinyint(4) NOT NULL COMMENT '操作类型 (枚举 AfterSaleOperateTypeEnum)',
|
||||||
|
`content` varchar(512) NOT NULL COMMENT '操作明细',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_after_sale_id` (`after_sale_id`),
|
||||||
|
KEY `idx_user_id` (`user_id`),
|
||||||
|
KEY `idx_operate_type` (`operate_type`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易售后日志表';
|
||||||
|
|
||||||
|
|
||||||
|
-- 快递公司表 (trade_delivery_express)
|
||||||
|
CREATE TABLE `tz_trade_delivery_express` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增',
|
||||||
|
`code` varchar(64) NOT NULL COMMENT '快递公司 code',
|
||||||
|
`name` varchar(128) NOT NULL COMMENT '快递公司名称',
|
||||||
|
`logo` varchar(512) DEFAULT NULL COMMENT '快递公司 logo',
|
||||||
|
`sort` int(11) DEFAULT NULL COMMENT '排序',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '状态 (枚举 CommonStatusEnum)',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_code` (`code`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递公司表';
|
||||||
|
|
||||||
|
-- 快递运费模板表 (trade_delivery_express_template)
|
||||||
|
CREATE TABLE `tz_trade_delivery_express_template` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增',
|
||||||
|
`name` varchar(128) NOT NULL COMMENT '模板名称',
|
||||||
|
`charge_mode` tinyint(4) NOT NULL COMMENT '配送计费方式 (枚举 DeliveryExpressChargeModeEnum)',
|
||||||
|
`sort` int(11) DEFAULT NULL COMMENT '排序',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递运费模板表';
|
||||||
|
|
||||||
|
-- 快递运费模板计费配置表 (trade_delivery_express_template_charge)
|
||||||
|
CREATE TABLE `tz_trade_delivery_express_template_charge` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增',
|
||||||
|
`template_id` bigint(20) NOT NULL COMMENT '配送模板编号',
|
||||||
|
`area_ids` varchar(512) NOT NULL COMMENT '配送区域编号列表',
|
||||||
|
`charge_mode` tinyint(4) NOT NULL COMMENT '配送计费方式',
|
||||||
|
`start_count` double NOT NULL COMMENT '首件数量(件数,重量,或体积)',
|
||||||
|
`start_price` int(11) NOT NULL COMMENT '起步价,单位:分',
|
||||||
|
`extra_count` double NOT NULL COMMENT '续件数量(件, 重量,或体积)',
|
||||||
|
`extra_price` int(11) NOT NULL COMMENT '额外价,单位:分',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_template_id` (`template_id`),
|
||||||
|
CONSTRAINT `fk_express_template_charge_template_id` FOREIGN KEY (`template_id`) REFERENCES `tz_trade_delivery_express_template` (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递运费模板计费配置表';
|
||||||
|
|
||||||
|
-- 快递运费模板包邮配置表 (trade_delivery_express_template_free)
|
||||||
|
CREATE TABLE `tz_trade_delivery_express_template_free` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`template_id` bigint(20) NOT NULL COMMENT '配送模板编号',
|
||||||
|
`area_ids` varchar(512) NOT NULL COMMENT '配送区域编号列表',
|
||||||
|
`free_price` int(11) DEFAULT NULL COMMENT '包邮金额,单位:分',
|
||||||
|
`free_count` int(11) DEFAULT NULL COMMENT '包邮件数',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_template_id` (`template_id`),
|
||||||
|
CONSTRAINT `fk_express_template_free_template_id` FOREIGN KEY (`template_id`) REFERENCES `tz_trade_delivery_express_template` (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递运费模板包邮配置表';
|
||||||
|
|
||||||
|
-- 自提门店表 (trade_delivery_pick_up_store)
|
||||||
|
CREATE TABLE `tz_trade_delivery_pick_up_store` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`name` varchar(128) NOT NULL COMMENT '门店名称',
|
||||||
|
`introduction` varchar(512) DEFAULT NULL COMMENT '门店简介',
|
||||||
|
`phone` varchar(20) NOT NULL COMMENT '门店手机',
|
||||||
|
`area_id` int(11) NOT NULL COMMENT '区域编号',
|
||||||
|
`detail_address` varchar(512) NOT NULL COMMENT '门店详细地址',
|
||||||
|
`logo` varchar(512) DEFAULT NULL COMMENT '门店 logo',
|
||||||
|
`opening_time` time NOT NULL COMMENT '营业开始时间',
|
||||||
|
`closing_time` time NOT NULL COMMENT '营业结束时间',
|
||||||
|
`latitude` double DEFAULT NULL COMMENT '纬度',
|
||||||
|
`longitude` double DEFAULT NULL COMMENT '经度',
|
||||||
|
`verify_user_ids` varchar(512) DEFAULT NULL COMMENT '核销员工用户编号数组',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '门店状态 (枚举 CommonStatusEnum)',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_area_id` (`area_id`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自提门店表';
|
||||||
|
|
||||||
|
|
||||||
211
sql/mysql/pay.sql
Normal file
211
sql/mysql/pay.sql
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
-- 支付应用表 (tz_pay_app)
|
||||||
|
CREATE TABLE `tz_pay_app` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应用编号,数据库自增',
|
||||||
|
`app_key` varchar(64) NOT NULL COMMENT '应用标识',
|
||||||
|
`name` varchar(128) NOT NULL COMMENT '应用名',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '状态 (枚举 CommonStatusEnum)',
|
||||||
|
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
|
||||||
|
`order_notify_url` varchar(512) DEFAULT NULL COMMENT '支付结果的回调地址',
|
||||||
|
`refund_notify_url` varchar(512) DEFAULT NULL COMMENT '退款结果的回调地址',
|
||||||
|
`transfer_notify_url` varchar(512) DEFAULT NULL COMMENT '转账结果的回调地址',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_app_key` (`app_key`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付应用表';
|
||||||
|
|
||||||
|
-- 支付渠道表 (tz_pay_channel)
|
||||||
|
CREATE TABLE `tz_pay_channel` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '渠道编号,数据库自增',
|
||||||
|
`code` varchar(32) NOT NULL COMMENT '渠道编码 (枚举 PayChannelEnum)',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '状态 (枚举 CommonStatusEnum)',
|
||||||
|
`fee_rate` double DEFAULT NULL COMMENT '渠道费率,单位:百分比',
|
||||||
|
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
|
||||||
|
`app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)',
|
||||||
|
`config` json DEFAULT NULL COMMENT '支付渠道配置',
|
||||||
|
`tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_code_app_id` (`code`,`app_id`),
|
||||||
|
KEY `idx_app_id` (`app_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付渠道表';
|
||||||
|
|
||||||
|
-- 支付通知日志表 (tz_pay_notify_log)
|
||||||
|
CREATE TABLE `tz_pay_notify_log` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志编号,自增',
|
||||||
|
`task_id` bigint(20) NOT NULL COMMENT '通知任务编号 (关联 tz_pay_notify_task.id)',
|
||||||
|
`notify_times` int(11) NOT NULL COMMENT '第几次被通知',
|
||||||
|
`response` varchar(1024) DEFAULT NULL COMMENT 'HTTP 响应结果',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '支付通知状态 (枚举 PayNotifyStatusEnum)',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_task_id` (`task_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付通知日志表';
|
||||||
|
|
||||||
|
-- 支付通知任务表 (tz_pay_notify_task)
|
||||||
|
CREATE TABLE `tz_pay_notify_task` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增',
|
||||||
|
`app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)',
|
||||||
|
`type` tinyint(4) NOT NULL COMMENT '通知类型 (枚举 PayNotifyTypeEnum)',
|
||||||
|
`data_id` bigint(20) NOT NULL COMMENT '数据编号',
|
||||||
|
`merchant_order_id` varchar(64) DEFAULT NULL COMMENT '商户订单编号',
|
||||||
|
`merchant_transfer_id` varchar(64) DEFAULT NULL COMMENT '商户转账单编号',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '通知状态 (枚举 PayNotifyStatusEnum)',
|
||||||
|
`next_notify_time` datetime DEFAULT NULL COMMENT '下一次通知时间',
|
||||||
|
`last_execute_time` datetime DEFAULT NULL COMMENT '最后一次执行时间',
|
||||||
|
`notify_times` int(11) DEFAULT NULL COMMENT '当前通知次数',
|
||||||
|
`max_notify_times` int(11) DEFAULT NULL COMMENT '最大可通知次数',
|
||||||
|
`notify_url` varchar(512) NOT NULL COMMENT '通知地址',
|
||||||
|
`tenant_id` bigint(20) NOT NULL COMMENT '租户ID',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_app_id` (`app_id`),
|
||||||
|
KEY `idx_type_data_id` (`type`,`data_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付通知任务表';
|
||||||
|
|
||||||
|
-- 支付订单表 (tz_pay_order)
|
||||||
|
CREATE TABLE `tz_pay_order` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单编号,数据库自增',
|
||||||
|
`app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)',
|
||||||
|
`channel_id` bigint(20) NOT NULL COMMENT '渠道编号 (关联 tz_pay_channel.id)',
|
||||||
|
`channel_code` varchar(32) NOT NULL COMMENT '渠道编码 (枚举 PayChannelEnum)',
|
||||||
|
`merchant_order_id` varchar(64) NOT NULL COMMENT '商户订单编号',
|
||||||
|
`subject` varchar(256) NOT NULL COMMENT '商品标题',
|
||||||
|
`body` varchar(512) DEFAULT NULL COMMENT '商品描述信息',
|
||||||
|
`notify_url` varchar(512) DEFAULT NULL COMMENT '异步通知地址',
|
||||||
|
`price` int(11) NOT NULL COMMENT '支付金额,单位:分',
|
||||||
|
`channel_fee_rate` double DEFAULT NULL COMMENT '渠道手续费,单位:百分比',
|
||||||
|
`channel_fee_price` int(11) DEFAULT NULL COMMENT '渠道手续金额,单位:分',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '支付状态 (枚举 PayOrderStatusEnum)',
|
||||||
|
`user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP',
|
||||||
|
`expire_time` datetime DEFAULT NULL COMMENT '订单失效时间',
|
||||||
|
`success_time` datetime DEFAULT NULL COMMENT '订单支付成功时间',
|
||||||
|
`extension_id` bigint(20) DEFAULT NULL COMMENT '支付成功的订单拓展单编号 (关联 tz_pay_order_extension.id)',
|
||||||
|
`no` varchar(64) DEFAULT NULL COMMENT '支付成功的外部订单号 (关联 tz_pay_order_extension.no)',
|
||||||
|
`refund_price` int(11) DEFAULT NULL COMMENT '退款总金额,单位:分',
|
||||||
|
`channel_user_id` varchar(128) DEFAULT NULL COMMENT '渠道用户编号',
|
||||||
|
`channel_order_no` varchar(128) DEFAULT NULL COMMENT '渠道订单号',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_merchant_order_id_app_id` (`merchant_order_id`,`app_id`),
|
||||||
|
KEY `idx_app_id` (`app_id`),
|
||||||
|
KEY `idx_channel_id` (`channel_id`),
|
||||||
|
KEY `idx_status` (`status`),
|
||||||
|
KEY `idx_extension_id` (`extension_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付订单表';
|
||||||
|
|
||||||
|
-- 支付订单扩展表 (tz_pay_order_extension)
|
||||||
|
CREATE TABLE `tz_pay_order_extension` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单拓展编号,数据库自增',
|
||||||
|
`no` varchar(64) NOT NULL COMMENT '外部订单号',
|
||||||
|
`order_id` bigint(20) NOT NULL COMMENT '订单号 (关联 tz_pay_order.id)',
|
||||||
|
`channel_id` bigint(20) NOT NULL COMMENT '渠道编号 (关联 tz_pay_channel.id)',
|
||||||
|
`channel_code` varchar(32) NOT NULL COMMENT '渠道编码',
|
||||||
|
`user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '支付状态 (枚举 PayOrderStatusEnum)',
|
||||||
|
`channel_extras` json DEFAULT NULL COMMENT '支付渠道的额外参数',
|
||||||
|
`channel_error_code` varchar(64) DEFAULT NULL COMMENT '调用渠道的错误码',
|
||||||
|
`channel_error_msg` varchar(512) DEFAULT NULL COMMENT '调用渠道报错时,错误信息',
|
||||||
|
`channel_notify_data` text DEFAULT NULL COMMENT '支付渠道的同步/异步通知的内容',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_no` (`no`),
|
||||||
|
KEY `idx_order_id` (`order_id`),
|
||||||
|
KEY `idx_channel_id` (`channel_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付订单扩展表';
|
||||||
|
|
||||||
|
-- 支付退款单表 (tz_pay_refund)
|
||||||
|
CREATE TABLE `tz_pay_refund` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '退款单编号,数据库自增',
|
||||||
|
`no` varchar(64) NOT NULL COMMENT '外部退款号',
|
||||||
|
`app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)',
|
||||||
|
`channel_id` bigint(20) NOT NULL COMMENT '渠道编号 (关联 tz_pay_channel.id)',
|
||||||
|
`channel_code` varchar(32) NOT NULL COMMENT '渠道编码 (枚举 PayChannelEnum)',
|
||||||
|
`order_id` bigint(20) NOT NULL COMMENT '订单编号 (关联 tz_pay_order.id)',
|
||||||
|
`order_no` varchar(64) NOT NULL COMMENT '支付订单编号',
|
||||||
|
`merchant_order_id` varchar(64) NOT NULL COMMENT '商户订单编号',
|
||||||
|
`merchant_refund_id` varchar(64) NOT NULL COMMENT '商户退款订单号',
|
||||||
|
`notify_url` varchar(512) DEFAULT NULL COMMENT '异步通知地址',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '退款状态 (枚举 PayRefundStatusEnum)',
|
||||||
|
`pay_price` int(11) NOT NULL COMMENT '支付金额,单位:分',
|
||||||
|
`refund_price` int(11) NOT NULL COMMENT '退款金额,单位:分',
|
||||||
|
`reason` varchar(512) DEFAULT NULL COMMENT '退款原因',
|
||||||
|
`user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP',
|
||||||
|
`channel_order_no` varchar(128) DEFAULT NULL COMMENT '渠道订单号',
|
||||||
|
`channel_refund_no` varchar(128) DEFAULT NULL COMMENT '渠道退款单号',
|
||||||
|
`success_time` datetime DEFAULT NULL COMMENT '退款成功时间',
|
||||||
|
`channel_error_code` varchar(64) DEFAULT NULL COMMENT '调用渠道的错误码',
|
||||||
|
`channel_error_msg` varchar(512) DEFAULT NULL COMMENT '调用渠道的错误提示',
|
||||||
|
`channel_notify_data` text DEFAULT NULL COMMENT '支付渠道的同步/异步通知的内容',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_no` (`no`),
|
||||||
|
UNIQUE KEY `uk_merchant_refund_id_app_id` (`merchant_refund_id`,`app_id`),
|
||||||
|
KEY `idx_app_id` (`app_id`),
|
||||||
|
KEY `idx_channel_id` (`channel_id`),
|
||||||
|
KEY `idx_order_id` (`order_id`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付退款单表';
|
||||||
|
|
||||||
|
-- 转账单表 (tz_pay_transfer)
|
||||||
|
CREATE TABLE `tz_pay_transfer` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||||
|
`no` varchar(64) NOT NULL COMMENT '转账单号',
|
||||||
|
`app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)',
|
||||||
|
`channel_id` bigint(20) NOT NULL COMMENT '转账渠道编号 (关联 tz_pay_channel.id)',
|
||||||
|
`channel_code` varchar(32) NOT NULL COMMENT '转账渠道编码 (枚举 PayChannelEnum)',
|
||||||
|
`merchant_transfer_id` varchar(64) NOT NULL COMMENT '商户转账单编号',
|
||||||
|
`type` tinyint(4) NOT NULL COMMENT '类型 (枚举 PayTransferTypeEnum)',
|
||||||
|
`subject` varchar(256) NOT NULL COMMENT '转账标题',
|
||||||
|
`price` int(11) NOT NULL COMMENT '转账金额,单位:分',
|
||||||
|
`user_name` varchar(64) DEFAULT NULL COMMENT '收款人姓名',
|
||||||
|
`status` tinyint(4) NOT NULL COMMENT '转账状态 (枚举 PayTransferStatusRespEnum)',
|
||||||
|
`success_time` datetime DEFAULT NULL COMMENT '订单转账成功时间',
|
||||||
|
`alipay_logon_id` varchar(128) DEFAULT NULL COMMENT '支付宝登录号',
|
||||||
|
`openid` varchar(128) DEFAULT NULL COMMENT '微信 openId',
|
||||||
|
`notify_url` varchar(512) DEFAULT NULL COMMENT '异步通知地址',
|
||||||
|
`user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP',
|
||||||
|
`channel_extras` json DEFAULT NULL COMMENT '渠道的额外参数',
|
||||||
|
`channel_transfer_no` varchar(128) DEFAULT NULL COMMENT '渠道转账单号',
|
||||||
|
`channel_error_code` varchar(64) DEFAULT NULL COMMENT '调用渠道的错误码',
|
||||||
|
`channel_error_msg` varchar(512) DEFAULT NULL COMMENT '调用渠道的错误提示',
|
||||||
|
`channel_notify_data` text DEFAULT NULL COMMENT '渠道的同步/异步通知的内容',
|
||||||
|
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime NOT NULL COMMENT '最后更新时间',
|
||||||
|
`creator` varchar(64) NOT NULL COMMENT '创建者',
|
||||||
|
`updater` varchar(64) NOT NULL COMMENT '更新者',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_no` (`no`),
|
||||||
|
UNIQUE KEY `uk_merchant_transfer_id_app_id` (`merchant_transfer_id`,`app_id`),
|
||||||
|
KEY `idx_app_id` (`app_id`),
|
||||||
|
KEY `idx_channel_id` (`channel_id`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='转账单表';
|
||||||
@@ -151,6 +151,42 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-trade-api</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-module-trade</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-pay-api</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-sdk-payment</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-member-api</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-module-pay</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-sdk-payment</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Spring 核心 -->
|
<!-- Spring 核心 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<!-- 用于生成自定义的 Spring @ConfigurationProperties 配置类的说明文件 -->
|
<!-- 用于生成自定义的 Spring @ConfigurationProperties 配置类的说明文件 -->
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
<module>tashow-infra-api</module>
|
<module>tashow-infra-api</module>
|
||||||
<module>tashow-system-api</module>
|
<module>tashow-system-api</module>
|
||||||
<module>tashow-product-api</module>
|
<module>tashow-product-api</module>
|
||||||
|
<module>tashow-trade-api</module>
|
||||||
|
<module>tashow-pay-api</module>
|
||||||
|
<module>tashow-member-api</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
40
tashow-feign/tashow-member-api/pom.xml
Normal file
40
tashow-feign/tashow-member-api/pom.xml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-feign</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>tashow-member-api</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>${project.artifactId}</name>
|
||||||
|
<description>
|
||||||
|
member 模块 API,暴露给其它模块调用
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-common</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 参数校验 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- RPC 远程调用相关 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.tashow.cloud.memberapi.api.address;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.CommonResult;
|
||||||
|
import com.tashow.cloud.memberapi.api.address.dto.MemberAddressRespDTO;
|
||||||
|
import com.tashow.cloud.memberapi.enums.ApiConstants;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 用户收件地址
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
|
public interface MemberAddressApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/address";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得用户收件地址
|
||||||
|
* @param id 收件地址编号
|
||||||
|
* @param userId 用户编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get")
|
||||||
|
CommonResult<MemberAddressRespDTO> getAddress(@RequestParam("id") Long id,
|
||||||
|
@RequestParam("userId") Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得用户默认收件地址
|
||||||
|
* @param userId 用户编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get-default")
|
||||||
|
CommonResult<MemberAddressRespDTO> getDefaultAddress(@RequestParam("userId") Long userId);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.tashow.cloud.memberapi.api.address.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 用户收件地址 Response DTO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MemberAddressRespDTO {
|
||||||
|
|
||||||
|
//编号
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
//用户编号
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
//收件人名称
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
//手机号
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
//地区编号
|
||||||
|
private Integer areaId;
|
||||||
|
|
||||||
|
//收件详细地址
|
||||||
|
private String detailAddress;
|
||||||
|
|
||||||
|
//是否默认
|
||||||
|
private Boolean defaultStatus;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* member API 包,定义暴露给其它模块的 API
|
||||||
|
*/
|
||||||
|
package com.tashow.cloud.memberapi.api;
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
package com.tashow.cloud.memberapi.api.user;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.CommonResult;
|
||||||
|
import com.tashow.cloud.memberapi.api.user.dto.MemberUserRespDTO;
|
||||||
|
import com.tashow.cloud.memberapi.enums.ApiConstants;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static com.tashow.cloud.common.util.collection.CollectionUtils.convertMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 会员用户
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
||||||
|
public interface MemberUserApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/user";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得会员用户 Map
|
||||||
|
*
|
||||||
|
* @param ids 用户编号的数组
|
||||||
|
* @return 会员用户 Map
|
||||||
|
*/
|
||||||
|
default Map<Long, MemberUserRespDTO> getUserMap(Collection<Long> ids) {
|
||||||
|
List<MemberUserRespDTO> list = getUserList(ids).getCheckedData();
|
||||||
|
return convertMap(list, MemberUserRespDTO::getId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得会员用户信息
|
||||||
|
* @param id 编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get")
|
||||||
|
CommonResult<MemberUserRespDTO> getUser(@RequestParam("id") Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得会员用户信息们
|
||||||
|
* @param ids 用户编号的数组
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/list")
|
||||||
|
CommonResult<List<MemberUserRespDTO>> getUserList(@RequestParam("ids") Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基于用户昵称,模糊匹配用户列表
|
||||||
|
* @param nickname 用户昵称,模糊匹配
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/list-by-nickname")
|
||||||
|
CommonResult<List<MemberUserRespDTO>> getUserListByNickname(@RequestParam("nickname") String nickname);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基于手机号,精准匹配用户
|
||||||
|
* @param mobile 基于手机号,精准匹配用户
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get-by-mobile")
|
||||||
|
CommonResult<MemberUserRespDTO> getUserByMobile(@RequestParam("mobile") String mobile);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验用户是否存在
|
||||||
|
* @param id 用户编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/valid")
|
||||||
|
CommonResult<Boolean> validateUser(@RequestParam("id") Long id);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.tashow.cloud.memberapi.api.user.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 用户信息 Response DTO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MemberUserRespDTO {
|
||||||
|
|
||||||
|
//用户编号
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
//昵称
|
||||||
|
private String nickname;
|
||||||
|
|
||||||
|
//帐号状态
|
||||||
|
private Integer status; // 参见 CommonStatusEnum 枚举
|
||||||
|
|
||||||
|
//用户头像
|
||||||
|
private String avatar;
|
||||||
|
|
||||||
|
//手机号
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
//创建时间
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.tashow.cloud.memberapi.enums;
|
||||||
|
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.enums.RpcConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API 相关的枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public class ApiConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务名
|
||||||
|
*
|
||||||
|
* 注意,需要保证和 spring.application.name 保持一致
|
||||||
|
*/
|
||||||
|
public static final String NAME = "member-server";
|
||||||
|
|
||||||
|
public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/member";
|
||||||
|
|
||||||
|
public static final String VERSION = "1.0.0";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.tashow.cloud.memberapi.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Member 字典类型的枚举类
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
public interface DictTypeConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员经验记录 - 业务类型
|
||||||
|
*/
|
||||||
|
String MEMBER_EXPERIENCE_BIZ_TYPE = "member_experience_biz_type";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package com.tashow.cloud.memberapi.enums;
|
||||||
|
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.exception.ErrorCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Member 错误码枚举类
|
||||||
|
* <p>
|
||||||
|
* member 系统,使用 1-004-000-000 段
|
||||||
|
*/
|
||||||
|
public interface ErrorCodeConstants {
|
||||||
|
|
||||||
|
// ========== 用户相关 1-004-001-000 ============
|
||||||
|
ErrorCode USER_NOT_EXISTS = new ErrorCode(1_004_001_000, "用户不存在");
|
||||||
|
ErrorCode USER_MOBILE_NOT_EXISTS = new ErrorCode(1_004_001_001, "手机号未注册用户");
|
||||||
|
ErrorCode USER_MOBILE_USED = new ErrorCode(1_004_001_002, "修改手机失败,该手机号({})已经被使用");
|
||||||
|
ErrorCode USER_POINT_NOT_ENOUGH = new ErrorCode(1_004_001_003, "用户积分余额不足");
|
||||||
|
|
||||||
|
// ========== AUTH 模块 1-004-003-000 ==========
|
||||||
|
ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_004_003_000, "登录失败,账号密码不正确");
|
||||||
|
ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1_004_003_001, "登录失败,账号被禁用");
|
||||||
|
ErrorCode AUTH_SOCIAL_USER_NOT_FOUND = new ErrorCode(1_004_003_005, "登录失败,解析不到三方登录信息");
|
||||||
|
ErrorCode AUTH_MOBILE_USED = new ErrorCode(1_004_003_007, "手机号已经被使用");
|
||||||
|
|
||||||
|
// ========== 用户收件地址 1-004-004-000 ==========
|
||||||
|
ErrorCode ADDRESS_NOT_EXISTS = new ErrorCode(1_004_004_000, "用户收件地址不存在");
|
||||||
|
|
||||||
|
//========== 用户标签 1-004-006-000 ==========
|
||||||
|
ErrorCode TAG_NOT_EXISTS = new ErrorCode(1_004_006_000, "用户标签不存在");
|
||||||
|
ErrorCode TAG_NAME_EXISTS = new ErrorCode(1_004_006_001, "用户标签已经存在");
|
||||||
|
ErrorCode TAG_HAS_USER = new ErrorCode(1_004_006_002, "用户标签下存在用户,无法删除");
|
||||||
|
|
||||||
|
//========== 积分配置 1-004-007-000 ==========
|
||||||
|
|
||||||
|
//========== 积分记录 1-004-008-000 ==========
|
||||||
|
ErrorCode POINT_RECORD_BIZ_NOT_SUPPORT = new ErrorCode(1_004_008_000, "用户积分记录业务类型不支持");
|
||||||
|
|
||||||
|
//========== 签到配置 1-004-009-000 ==========
|
||||||
|
ErrorCode SIGN_IN_CONFIG_NOT_EXISTS = new ErrorCode(1_004_009_000, "签到天数规则不存在");
|
||||||
|
ErrorCode SIGN_IN_CONFIG_EXISTS = new ErrorCode(1_004_009_001, "签到天数规则已存在");
|
||||||
|
|
||||||
|
//========== 签到配置 1-004-010-000 ==========
|
||||||
|
ErrorCode SIGN_IN_RECORD_TODAY_EXISTS = new ErrorCode(1_004_010_000, "今日已签到,请勿重复签到");
|
||||||
|
|
||||||
|
//========== 用户等级 1-004-011-000 ==========
|
||||||
|
ErrorCode LEVEL_NOT_EXISTS = new ErrorCode(1_004_011_000, "用户等级不存在");
|
||||||
|
ErrorCode LEVEL_NAME_EXISTS = new ErrorCode(1_004_011_001, "用户等级名称[{}]已被使用");
|
||||||
|
ErrorCode LEVEL_VALUE_EXISTS = new ErrorCode(1_004_011_002, "用户等级值[{}]已被[{}]使用");
|
||||||
|
ErrorCode LEVEL_EXPERIENCE_MIN = new ErrorCode(1_004_011_003, "升级经验必须大于上一个等级[{}]设置的升级经验[{}]");
|
||||||
|
ErrorCode LEVEL_EXPERIENCE_MAX = new ErrorCode(1_004_011_004, "升级经验必须小于下一个等级[{}]设置的升级经验[{}]");
|
||||||
|
ErrorCode LEVEL_HAS_USER = new ErrorCode(1_004_011_005, "用户等级下存在用户,无法删除");
|
||||||
|
|
||||||
|
ErrorCode EXPERIENCE_BIZ_NOT_SUPPORT = new ErrorCode(1_004_011_201, "用户经验业务类型不支持");
|
||||||
|
|
||||||
|
//========== 用户分组 1-004-012-000 ==========
|
||||||
|
ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_004_012_000, "用户分组不存在");
|
||||||
|
ErrorCode GROUP_HAS_USER = new ErrorCode(1_004_012_001, "用户分组下存在用户,无法删除");
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package com.tashow.cloud.memberapi.enums;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.EnumUtil;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员经验 - 业务类型
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum MemberExperienceBizTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理员调整、邀请新用户、下单、退单、签到、抽奖
|
||||||
|
*/
|
||||||
|
ADMIN(0, "管理员调整", "管理员调整获得 {} 经验", true),
|
||||||
|
INVITE_REGISTER(1, "邀新奖励", "邀请好友获得 {} 经验", true),
|
||||||
|
SIGN_IN(4, "签到奖励", "签到获得 {} 经验", true),
|
||||||
|
LOTTERY(5, "抽奖奖励", "抽奖获得 {} 经验", true),
|
||||||
|
ORDER_GIVE(11, "下单奖励", "下单获得 {} 经验", true),
|
||||||
|
ORDER_GIVE_CANCEL(12, "下单奖励(整单取消)", "取消订单获得 {} 经验", false), // ORDER_GIVE 的取消
|
||||||
|
ORDER_GIVE_CANCEL_ITEM(13, "下单奖励(单个退款)", "退款订单获得 {} 经验", false), // ORDER_GIVE 的取消
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务类型
|
||||||
|
*/
|
||||||
|
private final int type;
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
private final String title;
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
private final String description;
|
||||||
|
/**
|
||||||
|
* 是否为扣减积分
|
||||||
|
*/
|
||||||
|
private final boolean add;
|
||||||
|
|
||||||
|
public static MemberExperienceBizTypeEnum getByType(Integer type) {
|
||||||
|
return EnumUtil.getBy(MemberExperienceBizTypeEnum.class,
|
||||||
|
e -> Objects.equals(type, e.getType()));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package com.tashow.cloud.memberapi.enums.point;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.EnumUtil;
|
||||||
|
import com.tashow.cloud.common.core.ArrayValuable;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员积分的业务类型枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum MemberPointBizTypeEnum implements ArrayValuable<Integer> {
|
||||||
|
|
||||||
|
SIGN(1, "签到", "签到获得 {} 积分", true),
|
||||||
|
ADMIN(2, "管理员修改", "管理员修改 {} 积分", true),
|
||||||
|
|
||||||
|
ORDER_USE(11, "订单积分抵扣", "下单使用 {} 积分", false), // 下单时,扣减积分
|
||||||
|
ORDER_USE_CANCEL(12, "订单积分抵扣(整单取消)", "订单取消,退还 {} 积分", true), // ORDER_USE 的取消
|
||||||
|
ORDER_USE_CANCEL_ITEM(13, "订单积分抵扣(单个退款)", "订单退款,退还 {} 积分", true), // ORDER_USE 的取消
|
||||||
|
|
||||||
|
ORDER_GIVE(21, "订单积分奖励", "下单获得 {} 积分", true), // 支付订单时,赠送积分
|
||||||
|
ORDER_GIVE_CANCEL(22, "订单积分奖励(整单取消)", "订单取消,退还 {} 积分", false), // ORDER_GIVE 的取消
|
||||||
|
ORDER_GIVE_CANCEL_ITEM(23, "订单积分奖励(单个退款)", "订单退款,扣除赠送的 {} 积分", false) // ORDER_GIVE 的取消
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private final Integer type;
|
||||||
|
/**
|
||||||
|
* 名字
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
private final String description;
|
||||||
|
/**
|
||||||
|
* 是否为扣减积分
|
||||||
|
*/
|
||||||
|
private final boolean add;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer[] array() {
|
||||||
|
return new Integer[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MemberPointBizTypeEnum getByType(Integer type) {
|
||||||
|
return EnumUtil.getBy(MemberPointBizTypeEnum.class,
|
||||||
|
e -> Objects.equals(type, e.getType()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* 消息队列的消息
|
||||||
|
*/
|
||||||
|
package com.tashow.cloud.memberapi.message;
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.tashow.cloud.memberapi.message.user;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员用户创建消息
|
||||||
|
*
|
||||||
|
* @author owen
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MemberUserCreateMessage {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "用户编号不能为空")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
}
|
||||||
44
tashow-feign/tashow-pay-api/pom.xml
Normal file
44
tashow-feign/tashow-pay-api/pom.xml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-feign</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>tashow-pay-api</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>${project.artifactId}</name>
|
||||||
|
<description>
|
||||||
|
pay 模块 API,暴露给其它模块调用
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-common</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 参数校验 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- RPC 远程调用相关 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-sdk-payment</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.notify.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付单的通知 Request DTO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PayOrderNotifyReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户订单编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户订单号不能为空")
|
||||||
|
private String merchantOrderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付订单编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "支付订单编号不能为空")
|
||||||
|
private Long payOrderId;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.notify.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款单的通知 Request DTO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PayRefundNotifyReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户退款单编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户退款单编号不能为空")
|
||||||
|
private String merchantOrderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付退款编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "支付退款编号不能为空")
|
||||||
|
private Long payRefundId;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.notify.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账单的通知 Request DTO
|
||||||
|
*
|
||||||
|
* @author jason
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayTransferNotifyReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户转账单号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户转账单号不能为空")
|
||||||
|
private String merchantTransferId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账订单编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "转账订单编号不能为空")
|
||||||
|
private Long payTransferId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.order;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.CommonResult;
|
||||||
|
import com.tashow.cloud.payapi.api.order.dto.PayOrderCreateReqDTO;
|
||||||
|
import com.tashow.cloud.payapi.enums.ApiConstants;
|
||||||
|
import com.tashow.cloud.sdk.payment.dto.order.PayOrderRespDTO;
|
||||||
|
import jakarta.annotation.security.PermitAll;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 支付单
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME) //
|
||||||
|
public interface PayOrderApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/order";
|
||||||
|
|
||||||
|
/*创建支付单*/
|
||||||
|
@PostMapping(PREFIX + "/create")
|
||||||
|
CommonResult<Long> createOrder(@Valid @RequestBody PayOrderCreateReqDTO reqDTO);
|
||||||
|
|
||||||
|
/*获得支付单*/
|
||||||
|
@GetMapping(PREFIX + "/get")
|
||||||
|
@PermitAll
|
||||||
|
CommonResult<PayOrderRespDTO> getOrder(@RequestParam("id") Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新支付订单价格
|
||||||
|
* @param id 支付单编号
|
||||||
|
* @param payPrice 支付单价格
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PutMapping(PREFIX + "/update-price")
|
||||||
|
CommonResult<Boolean> updatePayOrderPrice(@RequestParam("id") Long id ,//支付单编号
|
||||||
|
@RequestParam("payPrice") Integer payPrice);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.order.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.DecimalMin;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付单创建 Request DTO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayOrderCreateReqDTO implements Serializable {
|
||||||
|
|
||||||
|
public static final int SUBJECT_MAX_LENGTH = 32;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用标识
|
||||||
|
*/
|
||||||
|
@NotNull(message = "应用标识不能为空")
|
||||||
|
private String appKey;
|
||||||
|
/**
|
||||||
|
* 用户 IP
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "用户 IP 不能为空")
|
||||||
|
private String userIp;
|
||||||
|
|
||||||
|
// ========== 商户相关字段 ==========
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户订单编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户订单编号不能为空")
|
||||||
|
private String merchantOrderId;
|
||||||
|
/**
|
||||||
|
* 商品标题
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商品标题不能为空")
|
||||||
|
@Length(max = SUBJECT_MAX_LENGTH, message = "商品标题不能超过 32")
|
||||||
|
private String subject;
|
||||||
|
/**
|
||||||
|
* 商品描述
|
||||||
|
*/
|
||||||
|
@Length(max = 128, message = "商品描述信息长度不能超过128")
|
||||||
|
private String body;
|
||||||
|
|
||||||
|
// ========== 订单相关字段 ==========
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付金额,单位:分
|
||||||
|
*/
|
||||||
|
@NotNull(message = "支付金额不能为空")
|
||||||
|
@DecimalMin(value = "0", inclusive = false, message = "支付金额必须大于零")
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付过期时间
|
||||||
|
*/
|
||||||
|
@NotNull(message = "支付过期时间不能为空")
|
||||||
|
private LocalDateTime expireTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.order.dto;
|
||||||
|
|
||||||
|
import com.tashow.cloud.payapi.enums.order.PayOrderStatusEnum;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付单信息 Response DTO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayOrderRespDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单编号,数据库自增
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 渠道编码
|
||||||
|
*
|
||||||
|
* 枚举 PayChannelEnum
|
||||||
|
*/
|
||||||
|
private String channelCode;
|
||||||
|
|
||||||
|
// ========== 商户相关字段 ==========
|
||||||
|
/**
|
||||||
|
* 商户订单编号
|
||||||
|
* 例如说,内部系统 A 的订单号。需要保证每个 PayMerchantDO 唯一
|
||||||
|
*/
|
||||||
|
private String merchantOrderId;
|
||||||
|
|
||||||
|
// ========== 订单相关字段 ==========
|
||||||
|
/**
|
||||||
|
* 支付金额,单位:分
|
||||||
|
*/
|
||||||
|
private Integer price;
|
||||||
|
/**
|
||||||
|
* 支付状态
|
||||||
|
*
|
||||||
|
* 枚举 {@link PayOrderStatusEnum}
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
// ========== 渠道相关字段 ==========
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.refund;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.CommonResult;
|
||||||
|
import com.tashow.cloud.payapi.api.refund.dto.PayRefundCreateReqDTO;
|
||||||
|
import com.tashow.cloud.payapi.api.refund.dto.PayRefundRespDTO;
|
||||||
|
import com.tashow.cloud.payapi.enums.ApiConstants;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 退款单
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
||||||
|
public interface PayRefundApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/refund";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建退款单
|
||||||
|
* @param reqDTO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping(PREFIX + "/create")
|
||||||
|
CommonResult<Long> createRefund(@Valid @RequestBody PayRefundCreateReqDTO reqDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得退款单
|
||||||
|
* @param id 退款单编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get")
|
||||||
|
CommonResult<PayRefundRespDTO> getRefund(@RequestParam("id") Long id);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.refund.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.Min;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款单创建 Request DTO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayRefundCreateReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用标识
|
||||||
|
*/
|
||||||
|
@NotNull(message = "应用标识不能为空")
|
||||||
|
private String appKey;
|
||||||
|
/**
|
||||||
|
* 用户 IP
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "用户 IP 不能为空")
|
||||||
|
private String userIp;
|
||||||
|
|
||||||
|
// ========== 商户相关字段 ==========
|
||||||
|
/**
|
||||||
|
* 商户订单编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户订单编号不能为空")
|
||||||
|
private String merchantOrderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户退款编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户退款编号不能为空")
|
||||||
|
private String merchantRefundId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款描述
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "退款描述不能为空")
|
||||||
|
@Length(max = 128, message = "退款描述长度不能超过 128")
|
||||||
|
private String reason;
|
||||||
|
|
||||||
|
// ========== 订单相关字段 ==========
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款金额,单位:分
|
||||||
|
*/
|
||||||
|
@NotNull(message = "退款金额不能为空")
|
||||||
|
@Min(value = 1, message = "退款金额必须大于零")
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.refund.dto;
|
||||||
|
|
||||||
|
import com.tashow.cloud.payapi.enums.refund.PayRefundStatusEnum;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款单信息 Response DTO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayRefundRespDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款单编号
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
// ========== 退款相关字段 ==========
|
||||||
|
/**
|
||||||
|
* 退款状态
|
||||||
|
*
|
||||||
|
* 枚举 {@link PayRefundStatusEnum}
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
/**
|
||||||
|
* 退款金额,单位:分
|
||||||
|
*/
|
||||||
|
private Integer refundPrice;
|
||||||
|
|
||||||
|
// ========== 商户相关字段 ==========
|
||||||
|
/**
|
||||||
|
* 商户订单编号
|
||||||
|
*/
|
||||||
|
private String merchantOrderId;
|
||||||
|
/**
|
||||||
|
* 退款成功时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime successTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.transfer;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.CommonResult;
|
||||||
|
import com.tashow.cloud.payapi.api.transfer.dto.PayTransferCreateReqDTO;
|
||||||
|
import com.tashow.cloud.payapi.enums.ApiConstants;
|
||||||
|
import com.tashow.cloud.sdk.payment.dto.transfer.PayTransferRespDTO;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 转账单
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
||||||
|
public interface PayTransferApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/transfer";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建转账单
|
||||||
|
* @param reqDTO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping(PREFIX + "/create")
|
||||||
|
CommonResult<Long> createTransfer(@Valid @RequestBody PayTransferCreateReqDTO reqDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得转账单
|
||||||
|
* @param id 转账单编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(PREFIX + "/get")
|
||||||
|
CommonResult<PayTransferRespDTO> getTransfer(@RequestParam("id") Long id);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.transfer.dto;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.validation.InEnum;
|
||||||
|
import com.tashow.cloud.sdk.payment.enums.transfer.PayTransferTypeEnum;
|
||||||
|
import jakarta.validation.constraints.Min;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账单创建 Request DTO
|
||||||
|
*
|
||||||
|
* @author jason
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayTransferCreateReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用标识
|
||||||
|
*/
|
||||||
|
@NotNull(message = "应用标识不能为空")
|
||||||
|
private String appKey;
|
||||||
|
|
||||||
|
@NotEmpty(message = "转账渠道不能为空")
|
||||||
|
private String channelCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账渠道的额外参数
|
||||||
|
*/
|
||||||
|
private Map<String, String> channelExtras;
|
||||||
|
|
||||||
|
@NotEmpty(message = "用户 IP 不能为空")
|
||||||
|
private String userIp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
@NotNull(message = "转账类型不能为空")
|
||||||
|
@InEnum(PayTransferTypeEnum.class)
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户转账单编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "商户转账单编号能为空")
|
||||||
|
private String merchantTransferId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账金额,单位:分
|
||||||
|
*/
|
||||||
|
@Min(value = 1, message = "转账金额必须大于零")
|
||||||
|
@NotNull(message = "转账金额不能为空")
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账标题
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "转账标题不能为空")
|
||||||
|
private String subject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收款人姓名
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "收款人姓名不能为空", groups = {PayTransferTypeEnum.Alipay.class})
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@NotBlank(message = "支付宝登录号不能为空", groups = {PayTransferTypeEnum.Alipay.class})
|
||||||
|
private String alipayLogonId;
|
||||||
|
|
||||||
|
// ========== 微信转账相关字段 ==========
|
||||||
|
@NotBlank(message = "微信 openId 不能为空", groups = {PayTransferTypeEnum.WxPay.class})
|
||||||
|
private String openid;
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.transfer.dto;
|
||||||
|
|
||||||
|
import com.tashow.cloud.payapi.enums.transfer.PayTransferStatusEnum;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PayTransferRespDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账单号
|
||||||
|
*/
|
||||||
|
private String no;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账金额,单位:分
|
||||||
|
*/
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账状态
|
||||||
|
*
|
||||||
|
* 枚举 {@link PayTransferStatusEnum}
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.wallet;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.CommonResult;
|
||||||
|
import com.tashow.cloud.payapi.api.wallet.dto.PayWalletAddBalanceReqDTO;
|
||||||
|
import com.tashow.cloud.payapi.enums.ApiConstants;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RPC 服务 - 钱包
|
||||||
|
*/
|
||||||
|
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
||||||
|
public interface PayWalletApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/wallet";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加钱包余额
|
||||||
|
* @param reqDTO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping(PREFIX + "/add-balance")
|
||||||
|
CommonResult<Boolean> addWalletBalance(@Valid @RequestBody PayWalletAddBalanceReqDTO reqDTO);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package com.tashow.cloud.payapi.api.wallet.dto;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.enums.UserTypeEnum;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 钱包余额增加 Request DTO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PayWalletAddBalanceReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户编号
|
||||||
|
*
|
||||||
|
* 关联 MemberUserDO 的 id 属性,或者 AdminUserDO 的 id 属性
|
||||||
|
*/
|
||||||
|
@NotNull(message = "用户编号不能为空")
|
||||||
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 用户类型
|
||||||
|
*
|
||||||
|
* 关联 {@link UserTypeEnum}
|
||||||
|
*/
|
||||||
|
@NotNull(message = "用户类型不能为空")
|
||||||
|
private Integer userType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联业务分类
|
||||||
|
*/
|
||||||
|
@NotNull(message = "关联业务分类不能为空")
|
||||||
|
private Integer bizType;
|
||||||
|
/**
|
||||||
|
* 关联业务编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "关联业务编号不能为空")
|
||||||
|
private String bizId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易金额,单位分
|
||||||
|
*
|
||||||
|
* 正值表示余额增加,负值表示余额减少
|
||||||
|
*/
|
||||||
|
@NotNull(message = "交易金额不能为空")
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums;
|
||||||
|
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.enums.RpcConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API 相关的枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public class ApiConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务名
|
||||||
|
*
|
||||||
|
* 注意,需要保证和 spring.application.name 保持一致
|
||||||
|
*/
|
||||||
|
public static final String NAME = "pay-server";
|
||||||
|
|
||||||
|
public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/pay";
|
||||||
|
|
||||||
|
public static final String VERSION = "1.0.0";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pay 字典类型的枚举类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public interface DictTypeConstants {
|
||||||
|
|
||||||
|
String CHANNEL_CODE = "pay_channel_code"; // 支付渠道编码
|
||||||
|
|
||||||
|
String ORDER_STATUS = "pay_order_status"; // 支付渠道
|
||||||
|
|
||||||
|
String REFUND_STATUS = "pay_order_status"; // 退款状态
|
||||||
|
|
||||||
|
String NOTIFY_STATUS = "pay_notify_status"; // 回调状态
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums;
|
||||||
|
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.exception.ErrorCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pay 错误码 Core 枚举类
|
||||||
|
*
|
||||||
|
* pay 系统,使用 1-007-000-000 段
|
||||||
|
*/
|
||||||
|
public interface ErrorCodeConstants {
|
||||||
|
|
||||||
|
// ========== APP 模块 1-007-000-000 ==========
|
||||||
|
ErrorCode APP_NOT_FOUND = new ErrorCode(1_007_000_000, "App 不存在");
|
||||||
|
ErrorCode APP_IS_DISABLE = new ErrorCode(1_007_000_002, "App 已经被禁用");
|
||||||
|
ErrorCode APP_EXIST_ORDER_CANT_DELETE = new ErrorCode(1_007_000_003, "支付应用存在支付订单,无法删除");
|
||||||
|
ErrorCode APP_EXIST_REFUND_CANT_DELETE = new ErrorCode(1_007_000_004, "支付应用存在退款订单,无法删除");
|
||||||
|
ErrorCode APP_KEY_EXISTS = new ErrorCode(1_007_000_005, "支付应用标识已经存在");
|
||||||
|
|
||||||
|
// ========== CHANNEL 模块 1-007-001-000 ==========
|
||||||
|
ErrorCode CHANNEL_NOT_FOUND = new ErrorCode(1_007_001_000, "支付渠道的配置不存在");
|
||||||
|
ErrorCode CHANNEL_IS_DISABLE = new ErrorCode(1_007_001_001, "支付渠道已经禁用");
|
||||||
|
ErrorCode CHANNEL_EXIST_SAME_CHANNEL_ERROR = new ErrorCode(1_007_001_004, "已存在相同的渠道");
|
||||||
|
|
||||||
|
// ========== ORDER 模块 1-007-002-000 ==========
|
||||||
|
ErrorCode PAY_ORDER_NOT_FOUND = new ErrorCode(1_007_002_000, "支付订单不存在");
|
||||||
|
ErrorCode PAY_ORDER_STATUS_IS_NOT_WAITING = new ErrorCode(1_007_002_001, "支付订单不处于待支付");
|
||||||
|
ErrorCode PAY_ORDER_STATUS_IS_SUCCESS = new ErrorCode(1_007_002_002, "订单已支付,请刷新页面");
|
||||||
|
ErrorCode PAY_ORDER_IS_EXPIRED = new ErrorCode(1_007_002_003, "支付订单已经过期");
|
||||||
|
ErrorCode PAY_ORDER_SUBMIT_CHANNEL_ERROR = new ErrorCode(1_007_002_004, "发起支付报错,错误码:{},错误提示:{}");
|
||||||
|
ErrorCode PAY_ORDER_REFUND_FAIL_STATUS_ERROR = new ErrorCode(1_007_002_005, "支付订单退款失败,原因:状态不是已支付或已退款");
|
||||||
|
|
||||||
|
// ========== ORDER 模块(拓展单) 1-007-003-000 ==========
|
||||||
|
ErrorCode PAY_ORDER_EXTENSION_NOT_FOUND = new ErrorCode(1_007_003_000, "支付交易拓展单不存在");
|
||||||
|
ErrorCode PAY_ORDER_EXTENSION_STATUS_IS_NOT_WAITING = new ErrorCode(1_007_003_001, "支付交易拓展单不处于待支付");
|
||||||
|
ErrorCode PAY_ORDER_EXTENSION_IS_PAID = new ErrorCode(1_007_003_002, "订单已支付,请等待支付结果");
|
||||||
|
|
||||||
|
// ========== 支付模块(退款) 1-007-006-000 ==========
|
||||||
|
ErrorCode REFUND_PRICE_EXCEED = new ErrorCode(1_007_006_000, "退款金额超过订单可退款金额");
|
||||||
|
ErrorCode REFUND_HAS_REFUNDING = new ErrorCode(1_007_006_002, "已经有退款在处理中");
|
||||||
|
ErrorCode REFUND_EXISTS = new ErrorCode(1_007_006_003, "已经存在退款单");
|
||||||
|
ErrorCode REFUND_NOT_FOUND = new ErrorCode(1_007_006_004, "支付退款单不存在");
|
||||||
|
ErrorCode REFUND_STATUS_IS_NOT_WAITING = new ErrorCode(1_007_006_005, "支付退款单不处于待退款");
|
||||||
|
|
||||||
|
// ========== 钱包模块 1-007-007-000 ==========
|
||||||
|
ErrorCode WALLET_NOT_FOUND = new ErrorCode(1_007_007_000, "用户钱包不存在");
|
||||||
|
ErrorCode WALLET_BALANCE_NOT_ENOUGH = new ErrorCode(1_007_007_001, "钱包余额不足");
|
||||||
|
ErrorCode WALLET_TRANSACTION_NOT_FOUND = new ErrorCode(1_007_007_002, "未找到对应的钱包交易");
|
||||||
|
ErrorCode WALLET_REFUND_EXIST = new ErrorCode(1_007_007_003, "已经存在钱包退款");
|
||||||
|
ErrorCode WALLET_FREEZE_PRICE_NOT_ENOUGH = new ErrorCode(1_007_007_004, "钱包冻结余额不足");
|
||||||
|
|
||||||
|
// ========== 钱包充值模块 1-007-008-000 ==========
|
||||||
|
ErrorCode WALLET_RECHARGE_NOT_FOUND = new ErrorCode(1_007_008_000, "钱包充值记录不存在");
|
||||||
|
ErrorCode WALLET_RECHARGE_UPDATE_PAID_STATUS_NOT_UNPAID = new ErrorCode(1_007_008_001, "钱包充值更新支付状态失败,钱包充值记录不是【未支付】状态");
|
||||||
|
ErrorCode WALLET_RECHARGE_UPDATE_PAID_PAY_ORDER_ID_ERROR = new ErrorCode(1_007_008_002, "钱包充值更新支付状态失败,支付单编号不匹配");
|
||||||
|
ErrorCode WALLET_RECHARGE_UPDATE_PAID_PAY_ORDER_STATUS_NOT_SUCCESS = new ErrorCode(1_007_008_003, "钱包充值更新支付状态失败,支付单状态不是【支付成功】状态");
|
||||||
|
ErrorCode WALLET_RECHARGE_UPDATE_PAID_PAY_PRICE_NOT_MATCH = new ErrorCode(1_007_008_004, "钱包充值更新支付状态失败,支付单金额不匹配");
|
||||||
|
ErrorCode WALLET_RECHARGE_REFUND_FAIL_NOT_PAID = new ErrorCode(1_007_008_005, "钱包发起退款失败,钱包充值订单未支付");
|
||||||
|
ErrorCode WALLET_RECHARGE_REFUND_FAIL_REFUNDED = new ErrorCode(1_007_008_006, "钱包发起退款失败,钱包充值订单已退款");
|
||||||
|
ErrorCode WALLET_RECHARGE_REFUND_BALANCE_NOT_ENOUGH = new ErrorCode(1_007_008_007, "钱包发起退款失败,钱包余额不足");
|
||||||
|
ErrorCode WALLET_RECHARGE_REFUND_FAIL_REFUND_ORDER_ID_ERROR = new ErrorCode(1_007_008_008, "钱包退款更新失败,钱包退款单编号不匹配");
|
||||||
|
ErrorCode WALLET_RECHARGE_REFUND_FAIL_REFUND_NOT_FOUND = new ErrorCode(1_007_008_009, "钱包退款更新失败,退款订单不存在");
|
||||||
|
ErrorCode WALLET_RECHARGE_REFUND_FAIL_REFUND_PRICE_NOT_MATCH = new ErrorCode(1_007_008_010, "钱包退款更新失败,退款单金额不匹配");
|
||||||
|
ErrorCode WALLET_RECHARGE_PACKAGE_NOT_FOUND = new ErrorCode(1_007_008_011, "钱包充值套餐不存在");
|
||||||
|
ErrorCode WALLET_RECHARGE_PACKAGE_IS_DISABLE = new ErrorCode(1_007_008_012, "钱包充值套餐已禁用");
|
||||||
|
ErrorCode WALLET_RECHARGE_PACKAGE_NAME_EXISTS = new ErrorCode(1_007_008_013, "钱包充值套餐名称已存在");
|
||||||
|
|
||||||
|
// ========== 转账模块 1-007-009-000 ==========
|
||||||
|
ErrorCode PAY_TRANSFER_SUBMIT_CHANNEL_ERROR = new ErrorCode(1_007_009_000, "发起转账报错,错误码:{},错误提示:{}");
|
||||||
|
ErrorCode PAY_TRANSFER_NOT_FOUND = new ErrorCode(1_007_009_001, "转账单不存在");
|
||||||
|
ErrorCode PAY_SAME_MERCHANT_TRANSFER_TYPE_NOT_MATCH = new ErrorCode(1_007_009_002, "两次相同转账请求的类型不匹配");
|
||||||
|
ErrorCode PAY_SAME_MERCHANT_TRANSFER_PRICE_NOT_MATCH = new ErrorCode(1_007_009_003, "两次相同转账请求的金额不匹配");
|
||||||
|
ErrorCode PAY_MERCHANT_TRANSFER_EXISTS = new ErrorCode(1_007_009_004, "该笔业务的转账已经发起,请查询转账订单相关状态");
|
||||||
|
ErrorCode PAY_TRANSFER_STATUS_IS_NOT_WAITING = new ErrorCode(1_007_009_005, "转账单不处于待转账");
|
||||||
|
ErrorCode PAY_TRANSFER_STATUS_IS_NOT_PENDING = new ErrorCode(1_007_009_006, "转账单不处于待转账或转账中");
|
||||||
|
|
||||||
|
// ========== 示例订单 1-007-900-000 ==========
|
||||||
|
ErrorCode DEMO_ORDER_NOT_FOUND = new ErrorCode(1_007_900_000, "示例订单不存在");
|
||||||
|
ErrorCode DEMO_ORDER_UPDATE_PAID_STATUS_NOT_UNPAID = new ErrorCode(1_007_900_001, "示例订单更新支付状态失败,订单不是【未支付】状态");
|
||||||
|
ErrorCode DEMO_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_ID_ERROR = new ErrorCode(1_007_900_002, "示例订单更新支付状态失败,支付单编号不匹配");
|
||||||
|
ErrorCode DEMO_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_STATUS_NOT_SUCCESS = new ErrorCode(1_007_900_003, "示例订单更新支付状态失败,支付单状态不是【支付成功】状态");
|
||||||
|
ErrorCode DEMO_ORDER_UPDATE_PAID_FAIL_PAY_PRICE_NOT_MATCH = new ErrorCode(1_007_900_004, "示例订单更新支付状态失败,支付单金额不匹配");
|
||||||
|
ErrorCode DEMO_ORDER_REFUND_FAIL_NOT_PAID = new ErrorCode(1_007_900_005, "发起退款失败,示例订单未支付");
|
||||||
|
ErrorCode DEMO_ORDER_REFUND_FAIL_REFUNDED = new ErrorCode(1_007_900_006, "发起退款失败,示例订单已退款");
|
||||||
|
ErrorCode DEMO_ORDER_REFUND_FAIL_REFUND_NOT_FOUND = new ErrorCode(1_007_900_007, "发起退款失败,退款订单不存在");
|
||||||
|
ErrorCode DEMO_ORDER_REFUND_FAIL_REFUND_NOT_SUCCESS = new ErrorCode(1_007_900_008, "发起退款失败,退款订单未退款成功");
|
||||||
|
ErrorCode DEMO_ORDER_REFUND_FAIL_REFUND_ORDER_ID_ERROR = new ErrorCode(1_007_900_009, "发起退款失败,退款单编号不匹配");
|
||||||
|
ErrorCode DEMO_ORDER_REFUND_FAIL_REFUND_PRICE_NOT_MATCH = new ErrorCode(1_007_900_010, "发起退款失败,退款单金额不匹配");
|
||||||
|
|
||||||
|
// ========== 示例转账订单 1-007-901-001 ==========
|
||||||
|
ErrorCode DEMO_TRANSFER_NOT_FOUND = new ErrorCode(1_007_901_001, "示例转账单不存在");
|
||||||
|
ErrorCode DEMO_TRANSFER_FAIL_TRANSFER_ID_ERROR = new ErrorCode(1_007_901_002, "转账失败,转账单编号不匹配");
|
||||||
|
ErrorCode DEMO_TRANSFER_FAIL_PRICE_NOT_MATCH = new ErrorCode(1_007_901_003, "转账失败,转账单金额不匹配");
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通知模板枚举类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
public interface MessageTemplateConstants {
|
||||||
|
|
||||||
|
// ======================= 小程序订阅消息 =======================
|
||||||
|
|
||||||
|
String WXA_WALLET_RECHARGER_PAID = "充值成功通知";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums.notify;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付通知状态枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum PayNotifyStatusEnum {
|
||||||
|
|
||||||
|
WAITING(0, "等待通知"),
|
||||||
|
SUCCESS(10, "通知成功"),
|
||||||
|
FAILURE(20, "通知失败"), // 多次尝试,彻底失败
|
||||||
|
REQUEST_SUCCESS(21, "请求成功,但是结果失败"),
|
||||||
|
REQUEST_FAILURE(22, "请求失败"),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private final Integer status;
|
||||||
|
/**
|
||||||
|
* 名字
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums.notify;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付通知类型
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum PayNotifyTypeEnum {
|
||||||
|
|
||||||
|
ORDER(1, "支付单"),
|
||||||
|
REFUND(2, "退款单"),
|
||||||
|
TRANSFER(3, "转账单")
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private final Integer type;
|
||||||
|
/**
|
||||||
|
* 名字
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums.order;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.core.ArrayValuable;
|
||||||
|
import com.tashow.cloud.common.util.object.ObjectUtils;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付订单的状态枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum PayOrderStatusEnum implements ArrayValuable<Integer> {
|
||||||
|
|
||||||
|
WAITING(0, "未支付"),
|
||||||
|
SUCCESS(10, "支付成功"),
|
||||||
|
REFUND(20, "已退款"),
|
||||||
|
CLOSED(30, "支付关闭"), // 注意:全部退款后,还是 REFUND 状态
|
||||||
|
;
|
||||||
|
|
||||||
|
private final Integer status;
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer[] array() {
|
||||||
|
return new Integer[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否等待支付
|
||||||
|
*
|
||||||
|
* @param status 状态
|
||||||
|
* @return 是否等待支付
|
||||||
|
*/
|
||||||
|
public static boolean isWaiting(Integer status) {
|
||||||
|
return Objects.equals(status, WAITING.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否支付成功
|
||||||
|
*
|
||||||
|
* @param status 状态
|
||||||
|
* @return 是否支付成功
|
||||||
|
*/
|
||||||
|
public static boolean isSuccess(Integer status) {
|
||||||
|
return Objects.equals(status, SUCCESS.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否支付成功或者已退款
|
||||||
|
*
|
||||||
|
* @param status 状态
|
||||||
|
* @return 是否支付成功或者已退款
|
||||||
|
*/
|
||||||
|
public static boolean isSuccessOrRefund(Integer status) {
|
||||||
|
return ObjectUtils.equalsAny(status,
|
||||||
|
SUCCESS.getStatus(), REFUND.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否支付关闭
|
||||||
|
*
|
||||||
|
* @param status 状态
|
||||||
|
* @return 是否支付关闭
|
||||||
|
*/
|
||||||
|
public static boolean isClosed(Integer status) {
|
||||||
|
return Objects.equals(status, CLOSED.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums.refund;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 渠道的退款状态枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum PayRefundStatusEnum {
|
||||||
|
|
||||||
|
WAITING(0, "未退款"),
|
||||||
|
SUCCESS(10, "退款成功"),
|
||||||
|
FAILURE(20, "退款失败");
|
||||||
|
|
||||||
|
private final Integer status;
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public static boolean isSuccess(Integer status) {
|
||||||
|
return Objects.equals(status, SUCCESS.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isFailure(Integer status) {
|
||||||
|
return Objects.equals(status, FAILURE.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums.transfer;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jason
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum PayTransferStatusEnum {
|
||||||
|
|
||||||
|
WAITING(0, "等待转账"),
|
||||||
|
/**
|
||||||
|
* TODO 转账到银行卡. 会有T+0 T+1 到账的请情况。 还未实现
|
||||||
|
*/
|
||||||
|
IN_PROGRESS(10, "转账进行中"),
|
||||||
|
|
||||||
|
SUCCESS(20, "转账成功"),
|
||||||
|
/**
|
||||||
|
* 转账关闭 (失败,或者其它情况) // TODO 改成 转账失败状态
|
||||||
|
*/
|
||||||
|
CLOSED(30, "转账关闭");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private final Integer status;
|
||||||
|
/**
|
||||||
|
* 状态名
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public static boolean isSuccess(Integer status) {
|
||||||
|
return Objects.equals(status, SUCCESS.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isClosed(Integer status) {
|
||||||
|
return Objects.equals(status, CLOSED.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isWaiting(Integer status) {
|
||||||
|
return Objects.equals(status, WAITING.getStatus());
|
||||||
|
}
|
||||||
|
public static boolean isInProgress(Integer status) {
|
||||||
|
return Objects.equals(status, IN_PROGRESS.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否处于待转账或者转账中的状态
|
||||||
|
* @param status 状态
|
||||||
|
*/
|
||||||
|
public static boolean isPendingStatus(Integer status) {
|
||||||
|
return Objects.equals(status, WAITING.getStatus()) || Objects.equals(status, IN_PROGRESS.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.tashow.cloud.payapi.enums.transfer;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
|
import com.tashow.cloud.common.core.ArrayValuable;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转账类型枚举
|
||||||
|
*
|
||||||
|
* @author jason
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum PayTransferTypeEnum implements ArrayValuable<Integer> {
|
||||||
|
|
||||||
|
ALIPAY_BALANCE(1, "支付宝余额"),
|
||||||
|
WX_BALANCE(2, "微信余额"),
|
||||||
|
BANK_CARD(3, "银行卡"),
|
||||||
|
WALLET_BALANCE(4, "钱包余额");
|
||||||
|
|
||||||
|
public interface WxPay {
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Alipay {
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Integer type;
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public static final Integer[] ARRAYS = Arrays.stream(values()).map(PayTransferTypeEnum::getType).toArray(Integer[]::new);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer[] array() {
|
||||||
|
return ARRAYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PayTransferTypeEnum typeOf(Integer type) {
|
||||||
|
return ArrayUtil.firstMatch(item -> item.getType().equals(type), values());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -40,6 +40,46 @@
|
|||||||
<artifactId>mybatis</artifactId>
|
<artifactId>mybatis</artifactId>
|
||||||
<version>3.5.13</version> <!-- 推荐使用最新稳定版本 -->
|
<version>3.5.13</version> <!-- 推荐使用最新稳定版本 -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.swagger</groupId>
|
||||||
|
<artifactId>swagger-models</artifactId>
|
||||||
|
<version>1.6.2</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Swagger Core -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.swagger.core.v3</groupId>
|
||||||
|
<artifactId>swagger-core</artifactId>
|
||||||
|
<version>2.2.20</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Swagger Models -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.swagger.core.v3</groupId>
|
||||||
|
<artifactId>swagger-models</artifactId>
|
||||||
|
<version>2.2.20</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- EasyExcel 核心库 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>easyexcel</artifactId>
|
||||||
|
<version>4.0.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mybatis</groupId>
|
||||||
|
<artifactId>mybatis</artifactId>
|
||||||
|
<version>3.5.9</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.baomidou</groupId>
|
||||||
|
<artifactId>mybatis-plus-annotation</artifactId>
|
||||||
|
<version>3.5.9</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tashow.cloud</groupId>
|
||||||
|
<artifactId>tashow-data-mybatis</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.tashow.cloud.productapi.api.product;
|
||||||
|
|
||||||
|
import com.tashow.cloud.productapi.api.product.dto.CategoryDO;
|
||||||
|
import com.tashow.cloud.productapi.api.product.dto.CategoryDto;
|
||||||
|
import com.tashow.cloud.productapi.enums.ApiConstants;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
||||||
|
/** RPC 服务 - 参数配置 */
|
||||||
|
public interface CategoryApi {
|
||||||
|
|
||||||
|
String PREFIX = ApiConstants.PREFIX + "/category";
|
||||||
|
|
||||||
|
/** 根据参数键查询参数值 */
|
||||||
|
@GetMapping(PREFIX + "/categoryList")
|
||||||
|
List<CategoryDO> categoryList(@RequestParam(value = "grade", required = false) Integer grade,
|
||||||
|
@RequestParam(value = "categoryId", required = false) Long categoryId,
|
||||||
|
@RequestParam(value = "categoryName", required = false) String categoryName,
|
||||||
|
@RequestParam(value = "status", required = false) Integer status);
|
||||||
|
}
|
||||||
@@ -1,11 +1,14 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品类目 DO
|
* 产品类目 DO
|
||||||
@@ -35,6 +38,12 @@ public class CategoryDO extends BaseDO {
|
|||||||
* 父节点
|
* 父节点
|
||||||
*/
|
*/
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父节名称
|
||||||
|
*/
|
||||||
|
private String parentName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品类目名称
|
* 产品类目名称
|
||||||
*/
|
*/
|
||||||
@@ -54,11 +63,12 @@ public class CategoryDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 标签
|
* 标签
|
||||||
*/
|
*/
|
||||||
private String tag;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> tag;
|
||||||
/**
|
/**
|
||||||
* 排序
|
* 排序
|
||||||
*/
|
*/
|
||||||
private Integer seq;
|
private Integer sort;
|
||||||
/**
|
/**
|
||||||
* 默认是1,表示正常状态,0为下线状态
|
* 默认是1,表示正常状态,0为下线状态
|
||||||
*/
|
*/
|
||||||
@@ -68,4 +78,6 @@ public class CategoryDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer grade;
|
private Integer grade;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品类目 DO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
|
||||||
|
public class CategoryDto {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类目ID
|
||||||
|
*/
|
||||||
|
private Long categoryId;
|
||||||
|
/**
|
||||||
|
* 店铺ID
|
||||||
|
*/
|
||||||
|
private Long shopId;
|
||||||
|
/**
|
||||||
|
* 父节点
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父节名称
|
||||||
|
*/
|
||||||
|
private String parentName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品类目名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
/**
|
||||||
|
* 类目图标
|
||||||
|
*/
|
||||||
|
private String icon;
|
||||||
|
/**
|
||||||
|
* 类目的显示图片
|
||||||
|
*/
|
||||||
|
private String pic;
|
||||||
|
/**
|
||||||
|
* 类目描述
|
||||||
|
*/
|
||||||
|
private String description;
|
||||||
|
/**
|
||||||
|
* 标签
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> tag;
|
||||||
|
/**
|
||||||
|
* 排序
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
/**
|
||||||
|
* 默认是1,表示正常状态,0为下线状态
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
/**
|
||||||
|
* 分类层级 1、2、3级
|
||||||
|
*/
|
||||||
|
private Integer grade;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 特殊日期附加费用规则 DO
|
* 特殊日期附加费用规则 DO
|
||||||
@@ -41,13 +44,15 @@ public class ProdAdditionalFeeDatesDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer dateType;
|
private Integer dateType;
|
||||||
/**
|
/**
|
||||||
* 自定义日期时间段(JSON格式存储)
|
* 自定义日期时间段
|
||||||
*/
|
*/
|
||||||
private String customTimeSlots;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> customTimeSlots;
|
||||||
/**
|
/**
|
||||||
* 指定日期(JSON格式存储)
|
* 指定日期
|
||||||
*/
|
*/
|
||||||
private String specificDates;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> specificDates;
|
||||||
/**
|
/**
|
||||||
* 收费方式0:''固定金额'':1:''基准价上浮
|
* 收费方式0:''固定金额'':1:''基准价上浮
|
||||||
*/
|
*/
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 特殊时段附加费用规则 DO
|
* 特殊时段附加费用规则 DO
|
||||||
*
|
*
|
||||||
@@ -38,9 +40,10 @@ public class ProdAdditionalFeePeriodsDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private String name;
|
private String name;
|
||||||
/**
|
/**
|
||||||
* 特殊时段设置(JSON格式存储)
|
* 特殊时段设置
|
||||||
*/
|
*/
|
||||||
private String specialTimeSlots;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> specialTimeSlots;
|
||||||
/**
|
/**
|
||||||
* 收费方式0:'固定金额',1:'基准价上浮'
|
* 收费方式0:'固定金额',1:'基准价上浮'
|
||||||
*/
|
*/
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import lombok.*;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import java.util.*;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品 DO
|
* 商品 DO
|
||||||
@@ -110,9 +112,15 @@ public class ProdDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
/**
|
/**
|
||||||
* 商品分类
|
* 商品分类id
|
||||||
*/
|
*/
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品分类名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 销量
|
* 销量
|
||||||
*/
|
*/
|
||||||
@@ -162,4 +170,9 @@ public class ProdDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer top;
|
private Integer top;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
private Date deleteTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,14 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品紧急响应服务设置 DO
|
* 商品紧急响应服务设置 DO
|
||||||
@@ -32,17 +35,20 @@ public class ProdEmergencyResponseDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Long prodId;
|
private Long prodId;
|
||||||
/**
|
/**
|
||||||
* 可响应时间段(JSON格式存储)
|
* 可响应时间段
|
||||||
*/
|
*/
|
||||||
private String responseTimeSlots;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> responseTimeSlots;
|
||||||
/**
|
/**
|
||||||
* 黑名自定义日期(JSON格式存储)
|
* 黑名自定义日期
|
||||||
*/
|
*/
|
||||||
private String blacklistedDates;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> blacklistedDates;
|
||||||
/**
|
/**
|
||||||
* 黑名单指定日期(JSON格式存储)
|
* 黑名单指定日期
|
||||||
*/
|
*/
|
||||||
private String blackAppointDates;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> blackAppointDates;
|
||||||
/**
|
/**
|
||||||
* 法定节假日是否开启0:关闭1开启
|
* 法定节假日是否开启0:关闭1开启
|
||||||
*/
|
*/
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 紧急响应时间区间设置 DO
|
* 紧急响应时间区间设置 DO
|
||||||
*
|
*
|
||||||
@@ -33,6 +32,11 @@ public class ProdEmergencyResponseIntervalsDO extends BaseDO {
|
|||||||
* 关联的紧急响应服务配置ID
|
* 关联的紧急响应服务配置ID
|
||||||
*/
|
*/
|
||||||
private Long configId;
|
private Long configId;
|
||||||
|
/**
|
||||||
|
* 商品ID
|
||||||
|
*/
|
||||||
|
private Long prodId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 响应模式名称
|
* 响应模式名称
|
||||||
*/
|
*/
|
||||||
@@ -40,7 +44,7 @@ public class ProdEmergencyResponseIntervalsDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 响应时间(小时)
|
* 响应时间(小时)
|
||||||
*/
|
*/
|
||||||
private Integer responseHours;
|
private BigDecimal responseHours;
|
||||||
/**
|
/**
|
||||||
* 收费模式0:固定收费 1:浮动收费
|
* 收费模式0:固定收费 1:浮动收费
|
||||||
*/
|
*/
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.*;
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属性规则 DO
|
* 属性规则 DO
|
||||||
*
|
*
|
||||||
@@ -1,10 +1,15 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.tashow.cloud.productapi.api.product.dto.ProdPropValueDO;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 商品属性 DO
|
* 商品属性 DO
|
||||||
*
|
*
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属性规则 DO
|
* 属性规则 DO
|
||||||
@@ -59,4 +62,8 @@ public class ProdPropValueDO {
|
|||||||
@TableField(exist=false)
|
@TableField(exist=false)
|
||||||
private Integer isExist;
|
private Integer isExist;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
private Date deleteTime;
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,15 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.tashow.cloud.productapi.api.product.vo.prodreservationconfig.TimeBookVO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品预约配置 DO
|
* 商品预约配置 DO
|
||||||
@@ -32,9 +36,10 @@ public class ProdReservationConfigDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Long prodId;
|
private Long prodId;
|
||||||
/**
|
/**
|
||||||
* 预约时段设置(JSON格式存储)
|
* 预约时段设置
|
||||||
*/
|
*/
|
||||||
private String reservationTimeSlots;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> reservationTimeSlots;
|
||||||
/**
|
/**
|
||||||
* 需提前多少小时预约
|
* 需提前多少小时预约
|
||||||
*/
|
*/
|
||||||
@@ -47,6 +52,12 @@ public class ProdReservationConfigDO extends BaseDO {
|
|||||||
* 是否允许更改预约时间 1可以 0不可以
|
* 是否允许更改预约时间 1可以 0不可以
|
||||||
*/
|
*/
|
||||||
private Integer allowChange;
|
private Integer allowChange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 时间段
|
||||||
|
*/
|
||||||
|
private Integer timeSlot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更改预约时间的时间规则(如服务开始前1小时可更改)
|
* 更改预约时间的时间规则(如服务开始前1小时可更改)
|
||||||
*/
|
*/
|
||||||
@@ -56,9 +67,10 @@ public class ProdReservationConfigDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer maxChangeTimes;
|
private Integer maxChangeTimes;
|
||||||
/**
|
/**
|
||||||
* 黑名自定义日期(JSON格式存储)
|
* 黑名自定义日期
|
||||||
*/
|
*/
|
||||||
private String blacklistedDates;
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> blacklistedDates;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* '是否开启黑名单自定义0关1开'
|
* '是否开启黑名单自定义0关1开'
|
||||||
@@ -71,9 +83,11 @@ public class ProdReservationConfigDO extends BaseDO {
|
|||||||
private Integer isBlackAppoint;
|
private Integer isBlackAppoint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 黑名单指定日期(JSON格式存储)
|
* 黑名单指定日期
|
||||||
*/
|
*/
|
||||||
private String blackAppointDates;
|
//private String blackAppointDates;
|
||||||
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> blackAppointDates;
|
||||||
/**
|
/**
|
||||||
* 法定节假日是否开启0:关闭1开启
|
* 法定节假日是否开启0:关闭1开启
|
||||||
*/
|
*/
|
||||||
@@ -83,4 +97,22 @@ public class ProdReservationConfigDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer blackWeekend;
|
private Integer blackWeekend;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预约时间区间设置
|
||||||
|
*/
|
||||||
|
@TableField(exist=false)
|
||||||
|
private TimeBookVO timeBook;
|
||||||
|
|
||||||
|
public TimeBookVO getTimeBook() {
|
||||||
|
if (this.timeBook == null) {
|
||||||
|
this.timeBook = new TimeBookVO();
|
||||||
|
this.timeBook.setTimeSlot(this.timeSlot);
|
||||||
|
this.timeBook.setReservationTimeSlots(this.reservationTimeSlots);
|
||||||
|
}
|
||||||
|
return this.timeBook;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimeBook(TimeBookVO timeBook) {
|
||||||
|
this.timeBook = timeBook;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 商品与服务区域关联 DO
|
* 商品与服务区域关联 DO
|
||||||
*
|
*
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 服务区域 DO
|
* 服务区域 DO
|
||||||
*
|
*
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 超区规则 DO
|
* 超区规则 DO
|
||||||
*
|
*
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 商品和标签管理 DO
|
* 商品和标签管理 DO
|
||||||
*
|
*
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 体重区间价格 DO
|
* 体重区间价格 DO
|
||||||
*
|
*
|
||||||
@@ -41,7 +41,7 @@ public class ProdWeightRangePricesDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
/**
|
/**
|
||||||
* 是否启用该规则0否1是
|
* 是否收费0否1是
|
||||||
*/
|
*/
|
||||||
private Integer isEnabled;
|
private Integer isEnabled;
|
||||||
|
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 商品接单上限设置 DO
|
* 商品接单上限设置 DO
|
||||||
*
|
*
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 店铺信息 DO
|
* 店铺信息 DO
|
||||||
*
|
*
|
||||||
@@ -1,17 +1,14 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 单品SKU DO
|
* 单品SKU DO
|
||||||
*
|
*
|
||||||
@@ -90,9 +87,21 @@ public class SkuDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private String overview;
|
private String overview;
|
||||||
/**
|
/**
|
||||||
* 库存(-1代表无限库存)
|
* 库存
|
||||||
*/
|
*/
|
||||||
private Integer stocks;
|
private Integer stocks;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总库存是0 无线库存是1
|
||||||
|
*/
|
||||||
|
private Integer stocksFlg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 锁定库存数
|
||||||
|
*/
|
||||||
|
@TableField(exist=false)
|
||||||
|
private Integer stocksLockNum;
|
||||||
/**
|
/**
|
||||||
* 预警库存
|
* 预警库存
|
||||||
*/
|
*/
|
||||||
@@ -166,5 +175,5 @@ public class SkuDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 删除时间
|
* 删除时间
|
||||||
*/
|
*/
|
||||||
private LocalDateTime delete_time;
|
private Date deleteTime;
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 服务交付方式 DO
|
* 服务交付方式 DO
|
||||||
*
|
*
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 服务详情 DO
|
* 服务详情 DO
|
||||||
*
|
*
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 服务物料详情 DO
|
* 服务物料详情 DO
|
||||||
*
|
*
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 服务遗体运输 DO
|
* 服务遗体运输 DO
|
||||||
*
|
*
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.tashow.cloud.product.dto;
|
package com.tashow.cloud.productapi.api.product.dto;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
/**
|
/**
|
||||||
* 商品SKU扩展服务表单 DO
|
* 商品SKU扩展服务表单 DO
|
||||||
*
|
*
|
||||||
@@ -1,11 +1,14 @@
|
|||||||
package com.tashow.cloud.product.vo.category;
|
package com.tashow.cloud.productapi.api.product.vo;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import com.tashow.cloud.common.pojo.PageParam;
|
import com.tashow.cloud.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
@@ -34,10 +37,10 @@ public class CategoryPageReqVO extends PageParam {
|
|||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@Schema(description = "标签")
|
@Schema(description = "标签")
|
||||||
private String tag;
|
private List<String> tag;
|
||||||
|
|
||||||
@Schema(description = "排序")
|
@Schema(description = "排序")
|
||||||
private Integer seq;
|
private Integer sort;
|
||||||
|
|
||||||
@Schema(description = "默认是1,表示正常状态,0为下线状态", example = "1")
|
@Schema(description = "默认是1,表示正常状态,0为下线状态", example = "1")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
package com.tashow.cloud.product.vo.category;
|
package com.tashow.cloud.productapi.api.product.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.Data;
|
||||||
import java.util.*;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import com.alibaba.excel.annotation.*;
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 产品类目 Response VO")
|
@Schema(description = "管理后台 - 产品类目 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -42,11 +43,11 @@ public class CategoryRespVO {
|
|||||||
|
|
||||||
@Schema(description = "标签")
|
@Schema(description = "标签")
|
||||||
@ExcelProperty("标签")
|
@ExcelProperty("标签")
|
||||||
private String tag;
|
private List<String> tag;
|
||||||
|
|
||||||
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("排序")
|
@ExcelProperty("排序")
|
||||||
private Integer seq;
|
private Integer sort;
|
||||||
|
|
||||||
@Schema(description = "默认是1,表示正常状态,0为下线状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "默认是1,表示正常状态,0为下线状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@ExcelProperty("默认是1,表示正常状态,0为下线状态")
|
@ExcelProperty("默认是1,表示正常状态,0为下线状态")
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.tashow.cloud.product.vo.category;
|
package com.tashow.cloud.productapi.api.product.vo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import java.util.*;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.*;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 产品类目新增/修改 Request VO")
|
@Schema(description = "管理后台 - 产品类目新增/修改 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -16,11 +18,16 @@ public class CategorySaveReqVO {
|
|||||||
private Long shopId;
|
private Long shopId;
|
||||||
|
|
||||||
@Schema(description = "父节点", requiredMode = Schema.RequiredMode.REQUIRED, example = "16509")
|
@Schema(description = "父节点", requiredMode = Schema.RequiredMode.REQUIRED, example = "16509")
|
||||||
@NotNull(message = "父节点不能为空")
|
//@NotNull(message = "父节点不能为空")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父节名称
|
||||||
|
*/
|
||||||
|
private String parentName;
|
||||||
|
|
||||||
@Schema(description = "产品类目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
|
@Schema(description = "产品类目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
|
||||||
@NotEmpty(message = "产品类目名称不能为空")
|
//@NotEmpty(message = "产品类目名称不能为空")
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
@Schema(description = "类目图标")
|
@Schema(description = "类目图标")
|
||||||
@@ -33,16 +40,16 @@ public class CategorySaveReqVO {
|
|||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@Schema(description = "标签")
|
@Schema(description = "标签")
|
||||||
private String tag;
|
private List<String> tag;
|
||||||
|
|
||||||
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
private Integer seq;
|
private Integer sort;
|
||||||
|
|
||||||
@Schema(description = "默认是1,表示正常状态,0为下线状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "默认是1,表示正常状态,0为下线状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
@Schema(description = "分类层级 1级 2级 3级", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "分类层级 1级 2级 3级", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "分类层级不能为空")
|
//@NotNull(message = "分类层级不能为空")
|
||||||
private Integer grade;
|
private Integer grade;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.tashow.cloud.productapi.api.product.dto.*;
|
||||||
|
import com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse.ProdEmergencyInfoVO;
|
||||||
|
import com.tashow.cloud.productapi.api.product.vo.prodserviceareas.ProdServiceAreasInfoVO;
|
||||||
|
import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Schema(description = "商品服务配置 VO")
|
||||||
|
@Data
|
||||||
|
public class ProdListVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品ID
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long prodId;
|
||||||
|
/**
|
||||||
|
* 商品名称
|
||||||
|
*/
|
||||||
|
private String prodName;
|
||||||
|
/**
|
||||||
|
* 分类名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺id
|
||||||
|
*/
|
||||||
|
private Long shopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺id
|
||||||
|
*/
|
||||||
|
private String shopName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认是1,正常状态(出售中), 0:下架(仓库中) 2:待审核
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否置灰0否1是
|
||||||
|
*/
|
||||||
|
private Integer isProhibit;
|
||||||
|
/**
|
||||||
|
* 服务区域地址名称集合
|
||||||
|
*/
|
||||||
|
private List<String> areaNameList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 紧急服务最快响应时间(小时)
|
||||||
|
*/
|
||||||
|
private BigDecimal responseHours;
|
||||||
|
/**
|
||||||
|
* 服务时段
|
||||||
|
*/
|
||||||
|
private BigDecimal reservationTimeSlots;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 还剩多少天
|
||||||
|
*/
|
||||||
|
private Long remainingDays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审核备注
|
||||||
|
*/
|
||||||
|
private String processNotes;
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date deleteTime;
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 商品分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ProdPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "商品名称", example = "赵六")
|
||||||
|
private String prodName;
|
||||||
|
|
||||||
|
@Schema(description = "店铺id", example = "10843")
|
||||||
|
private Long shopId;
|
||||||
|
|
||||||
|
@Schema(description = "默认是1,正常状态(出售中), 0:下架(仓库中) 2:待审核", example = "2")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "商品分类", example = "14895")
|
||||||
|
private Long categoryId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品分类名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
//@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private String[] createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
|
import com.tashow.cloud.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Schema(description = "商品回收站分页查询")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ProdRecycleBinVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "商品名称", example = "18784")
|
||||||
|
private String prodName;
|
||||||
|
|
||||||
|
@Schema(description = "删除时间")
|
||||||
|
//@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private String[] deleteTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.tashow.cloud.product.vo.prod;
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
@@ -84,6 +84,11 @@ public class ProdRespVO {
|
|||||||
@ExcelProperty("商品分类")
|
@ExcelProperty("商品分类")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品分类名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
@Schema(description = "销量")
|
@Schema(description = "销量")
|
||||||
@ExcelProperty("销量")
|
@ExcelProperty("销量")
|
||||||
private Integer soldNum;
|
private Integer soldNum;
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Schema(description = "商品服务配置 VO")
|
||||||
|
@Data
|
||||||
|
public class ProdRestoreListVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品ID
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long prodId;
|
||||||
|
/**
|
||||||
|
* 商品名称
|
||||||
|
*/
|
||||||
|
private String prodName;
|
||||||
|
/**
|
||||||
|
* 分类名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺id
|
||||||
|
*/
|
||||||
|
private Long shopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺id
|
||||||
|
*/
|
||||||
|
private String shopName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务区域地址名称集合
|
||||||
|
*/
|
||||||
|
private List<String> areaNameList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 紧急服务最快响应时间(小时)
|
||||||
|
*/
|
||||||
|
private BigDecimal responseHours;
|
||||||
|
/**
|
||||||
|
* 服务时段
|
||||||
|
*/
|
||||||
|
private BigDecimal reservationTimeSlots;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 还剩多少天
|
||||||
|
*/
|
||||||
|
private Long remainingDays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date deleteTime;
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,13 +1,11 @@
|
|||||||
package com.tashow.cloud.product.vo.prod;
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
import com.tashow.cloud.productapi.api.product.dto.SkuDO;
|
||||||
import com.tashow.cloud.product.dto.SkuDO;
|
import com.tashow.cloud.productapi.api.product.vo.prodprop.ProdPropSaveReqVO;
|
||||||
import com.tashow.cloud.product.vo.prodprop.ProdPropSaveReqVO;
|
|
||||||
//import com.tashow.cloud.productapi.general.StringListTypeHandler;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.ibatis.type.TypeHandler;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 商品新增/修改 Request VO")
|
@Schema(description = "管理后台 - 商品新增/修改 Request VO")
|
||||||
@@ -17,8 +15,8 @@ public class ProdSaveReqVO {
|
|||||||
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943")
|
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943")
|
||||||
private Long prodId;
|
private Long prodId;
|
||||||
|
|
||||||
@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
|
//@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
|
||||||
@NotEmpty(message = "商品名称不能为空")
|
//@NotEmpty(message = "商品名称不能为空")
|
||||||
private String prodName;
|
private String prodName;
|
||||||
|
|
||||||
@Schema(description = "商品简称")
|
@Schema(description = "商品简称")
|
||||||
@@ -33,6 +31,11 @@ public class ProdSaveReqVO {
|
|||||||
@Schema(description = "关键词")
|
@Schema(description = "关键词")
|
||||||
private String keyword;
|
private String keyword;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品分类名称
|
||||||
|
*/
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
@Schema(description = "店铺id", example = "10843")
|
@Schema(description = "店铺id", example = "10843")
|
||||||
private Long shopId;
|
private Long shopId;
|
||||||
|
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
package com.tashow.cloud.product.vo.prod;
|
package com.tashow.cloud.productapi.api.product.vo.prod;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse.ProdEmergencyInfoVO;
|
||||||
import com.tashow.cloud.product.dto.*;
|
import com.tashow.cloud.productapi.api.product.vo.prodserviceareas.ProdServiceAreasInfoVO;
|
||||||
import com.tashow.cloud.product.vo.prodemergencyresponse.ProdEmergencyInfoVO;
|
import com.tashow.cloud.productapi.api.product.dto.*;
|
||||||
import com.tashow.cloud.product.vo.prodserviceareas.ProdServiceAreasInfoVO;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "商品服务配置 VO")
|
@Schema(description = "商品服务配置 VO")
|
||||||
@@ -18,6 +17,22 @@ public class ProdServiceVO {
|
|||||||
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943")
|
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943")
|
||||||
private Long prodId;
|
private Long prodId;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
@Schema(description = "修改时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
|
@Schema(description = "新建人")
|
||||||
|
private String creator;
|
||||||
|
|
||||||
|
@Schema(description = "修改人")
|
||||||
|
private String updater;
|
||||||
|
|
||||||
|
@Schema(description = "分类名称")
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
@Schema(description = "是否开启服务区域配置0关1开")
|
@Schema(description = "是否开启服务区域配置0关1开")
|
||||||
private Integer regionSwitch;
|
private Integer regionSwitch;
|
||||||
@@ -1,14 +1,12 @@
|
|||||||
package com.tashow.cloud.product.vo.prodadditionalfeedates;
|
package com.tashow.cloud.productapi.api.product.vo.prodadditionalfeedates;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import com.tashow.cloud.common.pojo.PageParam;
|
import com.tashow.cloud.common.pojo.PageParam;
|
||||||
import java.math.BigDecimal;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import lombok.Data;
|
||||||
import java.time.LocalDateTime;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 特殊日期附加费用规则分页 Request VO")
|
@Schema(description = "管理后台 - 特殊日期附加费用规则分页 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.tashow.cloud.product.vo.prodadditionalfeedates;
|
package com.tashow.cloud.productapi.api.product.vo.prodadditionalfeedates;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.Data;
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.alibaba.excel.annotation.*;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 特殊日期附加费用规则 Response VO")
|
@Schema(description = "管理后台 - 特殊日期附加费用规则 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.tashow.cloud.product.vo.prodadditionalfeedates;
|
package com.tashow.cloud.productapi.api.product.vo.prodadditionalfeedates;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import java.util.*;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.*;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 特殊日期附加费用规则新增/修改 Request VO")
|
@Schema(description = "管理后台 - 特殊日期附加费用规则新增/修改 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -1,14 +1,12 @@
|
|||||||
package com.tashow.cloud.product.vo.prodadditionalfeeperiods;
|
package com.tashow.cloud.productapi.api.product.vo.prodadditionalfeeperiods;
|
||||||
|
|
||||||
import lombok.*;
|
|
||||||
import java.util.*;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import com.tashow.cloud.common.pojo.PageParam;
|
import com.tashow.cloud.common.pojo.PageParam;
|
||||||
import java.math.BigDecimal;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import lombok.Data;
|
||||||
import java.time.LocalDateTime;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 特殊时段附加费用规则分页 Request VO")
|
@Schema(description = "管理后台 - 特殊时段附加费用规则分页 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.tashow.cloud.product.vo.prodadditionalfeeperiods;
|
package com.tashow.cloud.productapi.api.product.vo.prodadditionalfeeperiods;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.Data;
|
||||||
import java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import java.util.List;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.alibaba.excel.annotation.*;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 特殊时段附加费用规则 Response VO")
|
@Schema(description = "管理后台 - 特殊时段附加费用规则 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -27,7 +27,7 @@ public class ProdAdditionalFeePeriodsRespVO {
|
|||||||
|
|
||||||
@Schema(description = "特殊时段设置(JSON格式存储)", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "特殊时段设置(JSON格式存储)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("特殊时段设置(JSON格式存储)")
|
@ExcelProperty("特殊时段设置(JSON格式存储)")
|
||||||
private String specialTimeSlots;
|
private List<String> specialTimeSlots;
|
||||||
|
|
||||||
@Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("收费方式0:'固定金额',1:'基准价上浮'")
|
@ExcelProperty("收费方式0:'固定金额',1:'基准价上浮'")
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.tashow.cloud.product.vo.prodadditionalfeeperiods;
|
package com.tashow.cloud.productapi.api.product.vo.prodadditionalfeeperiods;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import java.util.*;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.*;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import java.util.List;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 特殊时段附加费用规则新增/修改 Request VO")
|
@Schema(description = "管理后台 - 特殊时段附加费用规则新增/修改 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@@ -25,7 +25,7 @@ public class ProdAdditionalFeePeriodsSaveReqVO {
|
|||||||
|
|
||||||
@Schema(description = "特殊时段设置(JSON格式存储)", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "特殊时段设置(JSON格式存储)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotEmpty(message = "特殊时段设置(JSON格式存储)不能为空")
|
@NotEmpty(message = "特殊时段设置(JSON格式存储)不能为空")
|
||||||
private String specialTimeSlots;
|
private List<String> specialTimeSlots;
|
||||||
|
|
||||||
@Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "收费方式0:'固定金额',1:'基准价上浮'不能为空")
|
@NotNull(message = "收费方式0:'固定金额',1:'基准价上浮'不能为空")
|
||||||
@@ -1,14 +1,10 @@
|
|||||||
package com.tashow.cloud.product.vo.prodemergencyresponse;
|
package com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.tashow.cloud.productapi.api.product.dto.ProdEmergencyResponseIntervalsDO;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.tashow.cloud.product.dto.ProdEmergencyResponseDO;
|
|
||||||
import com.tashow.cloud.product.dto.ProdEmergencyResponseIntervalsDO;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 商品紧急响应服务设置 Response VO")
|
@Schema(description = "管理后台 - 商品紧急响应服务设置 Response VO")
|
||||||
@@ -26,17 +22,17 @@ public class ProdEmergencyInfoVO {
|
|||||||
*/
|
*/
|
||||||
private Long prodId;
|
private Long prodId;
|
||||||
/**
|
/**
|
||||||
* 可响应时间段(JSON格式存储)
|
* 可响应时间段
|
||||||
*/
|
*/
|
||||||
private String responseTimeSlots;
|
private List<String> responseTimeSlots;
|
||||||
/**
|
/**
|
||||||
* 黑名自定义日期(JSON格式存储)
|
* 黑名自定义日期
|
||||||
*/
|
*/
|
||||||
private String blacklistedDates;
|
private List<String> blacklistedDates;
|
||||||
/**
|
/**
|
||||||
* 黑名单指定日期(JSON格式存储)
|
* 黑名单指定日期
|
||||||
*/
|
*/
|
||||||
private String blackAppointDates;
|
private List<String> blackAppointDates;
|
||||||
/**
|
/**
|
||||||
* 法定节假日是否开启0:关闭1开启
|
* 法定节假日是否开启0:关闭1开启
|
||||||
*/
|
*/
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user