Compare commits

...

79 Commits

Author SHA1 Message Date
lzh
4ec5bb8915 "修正字段命名大小写不一致问题" 2025-06-27 15:29:53 +08:00
lzh
335a61d6e7 "添加过期时间降序排序并优化查询字段" 2025-06-27 14:44:42 +08:00
lzh
b06d06c8e2 添加用户ID分组查询条件 2025-06-27 14:37:28 +08:00
lzh
1f1fbed3a8 "修改数据库表名从 fiee_bundle 到 micro_bundle" 2025-06-27 11:32:17 +08:00
sxy
9c3c441eda 修改冲突&&合并代码 2025-06-26 17:34:03 +08:00
sxy
8fe858aa03 Merge branch 'main' of https://gitea-inner.fontree.cn/fiee/micro-bundle 2025-06-26 17:33:08 +08:00
f3e29cb7e8 解决冲突 2025-06-26 17:32:53 +08:00
sxy
ae4bbe29c0 Merge branch 'sxy' 2025-06-26 17:31:25 +08:00
lzh
bfc409ed70 Merge branch 'dev-lzh' 2025-06-26 17:18:58 +08:00
sxy
a01be125e6 修改冲突 2025-06-26 17:10:29 +08:00
7c0027f624 修改 2025-06-26 13:53:16 +08:00
397dd56761 修改 2025-06-26 13:40:03 +08:00
26eb0df464 修改 2025-06-25 16:57:57 +08:00
b9313b9ba2 添加状态筛选 2025-06-25 15:29:37 +08:00
sxy
9c9e9c0663 修改返回数据校验 2025-06-25 13:36:33 +08:00
sxy
668b7eb06e 修改信息-服务类型 2025-06-24 16:00:45 +08:00
sxy
56c17a709f 修改信息 2025-06-24 15:53:10 +08:00
sxy
eca1a2329e 增加语言表获取接口 2025-06-24 14:24:38 +08:00
sxy
3c1984be81 增加语言表获取接口 2025-06-24 14:22:31 +08:00
f02601e5e8 修改 2025-06-24 13:41:10 +08:00
sxy
52d9baf2e6 修改上下架校验 2025-06-23 16:25:03 +08:00
sxy
ed0f0c9584 修改套餐逻辑 2025-06-23 15:23:49 +08:00
sxy
d0dfb7ff96 修改增值服务价格模式下的节省金额 2025-06-20 16:26:17 +08:00
5753c952f4 修改 2025-06-20 15:45:58 +08:00
sxy
a6d315a283 修改增值服务保存逻辑-1 2025-06-20 15:34:55 +08:00
sxy
952caaaf91 修改增值服务保存逻辑 2025-06-20 15:26:35 +08:00
sxy
bff2938313 修改返回信息 2025-06-20 14:58:32 +08:00
sxy
97c4bda203 修改价格模式-1 2025-06-20 14:33:57 +08:00
sxy
14415f07f5 修改价格模式 2025-06-20 14:31:55 +08:00
sxy
3bc6a5caa0 修改imgoption 2025-06-20 14:16:45 +08:00
53a407cc1c 修改 2025-06-20 13:23:47 +08:00
sxy
d95dccf7c0 修改bug 2025-06-20 13:05:32 +08:00
sxy
bcdb764522 修改bug 2025-06-20 11:42:41 +08:00
sxy
33073667e8 修改上下架 2025-06-19 16:44:38 +08:00
sxy
ac14519c91 修改 2025-06-19 16:18:41 +08:00
sxy
bdc9706125 修改 2025-06-19 16:16:23 +08:00
sxy
734c0b2c1f 修改 2025-06-19 16:12:03 +08:00
sxy
75aad32c7e Revert "修改h5套餐列表"
This reverts commit e081b5f23b.
2025-06-19 16:11:22 +08:00
sxy
51e3d24f23 Revert "修改h5套餐列表"
This reverts commit 0057fa5856.
2025-06-19 16:11:06 +08:00
sxy
fec7641edb 修改h5套餐列表-1 2025-06-19 16:04:00 +08:00
sxy
0057fa5856 修改h5套餐列表 2025-06-19 15:59:54 +08:00
sxy
e081b5f23b 修改h5套餐列表 2025-06-19 15:58:11 +08:00
sxy
e7727141d8 修改h5套餐列表 2025-06-19 15:52:24 +08:00
sxy
5086802f1b 修改h5套餐列表 2025-06-19 15:46:29 +08:00
sxy
fdf2d5a09b 修改h5列表 2025-06-19 15:44:55 +08:00
c537e1e50c 修改 2025-06-19 15:26:08 +08:00
sxy
53fdc7c4b6 修改套餐同步更新 2025-06-19 14:22:57 +08:00
sxy
eac7c759f6 修改错误信息返回 2025-06-19 11:46:53 +08:00
sxy
000de78286 修改错误信息返回 2025-06-19 11:43:54 +08:00
sxy
90928cf5c8 修改查询-1 2025-06-18 16:18:31 +08:00
sxy
3cce79adab 修改查询 2025-06-18 16:03:14 +08:00
sxy
6107e35aca 修改 2025-06-18 15:49:21 +08:00
sxy
4c027c4a08 修改 2025-06-18 11:42:39 +08:00
sxy
379cc1b1e7 增加clor-1 2025-06-17 09:26:09 +08:00
sxy
0c5ffdcc90 增加clor 2025-06-17 09:24:18 +08:00
38f03838a5 fix: 根据orderNo只查询增值服务接口的source写错了 2025-06-16 13:25:22 +08:00
sxy
8793f023c9 增加批量获取增值服务-1 2025-06-16 13:20:54 +08:00
sxy
9bffde4a62 增加批量获取增值服务 2025-06-16 13:13:27 +08:00
sxy
8b2e7c541e 修改验证 2025-06-16 11:54:04 +08:00
8fe2ea816f fix: 调整order-detail接口,可以根据token直接捞到子订单 2025-06-16 11:08:16 +08:00
fb413f80bc fix: 新增接口,根据对账单流水号更新对账单支付状态和支付时间。创建对账单根据对账单流水号去重 2025-06-16 09:52:20 +08:00
cb21e13c4e fix: 新增接口,根据orderNo,仅查询它单独购买的增值服务 2025-06-15 19:15:30 +08:00
5205119945 fix: 处理bug 2025-06-15 18:49:06 +08:00
50b4009043 fix: detail接口增加addBundle的字段 2025-06-15 18:29:01 +08:00
55bbe63158 Merge branch 'jng' into feat-zjy-issue-008 2025-06-15 17:57:33 +08:00
f3eb2eef59 修改 2025-06-15 15:58:49 +08:00
681589cf4d 解决冲突 2025-06-15 13:20:43 +08:00
d4b8be90ea 修改 2025-06-15 13:20:14 +08:00
427b5ce862 fix: 漏了 2025-06-15 13:01:55 +08:00
9c7d3f1435 fix: listV2查询增加两个字段CheckoutSessionId和CustomerID,UpdateOrderRecordByOrderNO方法能够改checkSessionId和checkSessionUrl 2025-06-15 13:00:21 +08:00
b72b7e17ec 修改 2025-06-15 10:08:40 +08:00
sxy
ed66051786 修改条件限制 2025-06-14 17:28:19 +08:00
sxy
c4ef0b5f96 修改返回节省金额 2025-06-14 17:21:26 +08:00
sxy
f042ca7891 修改返回时间 2025-06-14 17:18:51 +08:00
sxy
497bdf894d 修改chongtu-1 2025-06-14 17:00:46 +08:00
sxy
c79569b421 修改chongtu 2025-06-14 17:00:26 +08:00
sxy
abb53ac651 修改符号 2025-06-14 16:59:41 +08:00
1f0a6c2082 111 2025-06-14 15:09:15 +08:00
jhc
868c51ddcf 修改 2025-06-06 18:37:50 +08:00
21 changed files with 5158 additions and 2291 deletions

View File

@ -1314,3 +1314,56 @@
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-03-29T11:31:52.521+0800","caller":"zookeeper/listener.go:179","message":"[ZkEventListener][listenServiceNodeEvent]Get a EventNodeDeleted event for path {/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F192.168.88.77%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DBundleDetail%2CBundleList%2CCreateBundle%2CCreateOrderRecord%2CCreateValueAddBundle%2CDeleteBundle%2COrderRecordsDetail%2COrderRecordsList%2CUpdateBundle%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CValueAddBundleDetail%2CValueAddBundleList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D93332%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1743219110%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"} {"level":"\u001b[34mINFO\u001b[0m","time":"2025-03-29T11:31:52.521+0800","caller":"zookeeper/listener.go:179","message":"[ZkEventListener][listenServiceNodeEvent]Get a EventNodeDeleted event for path {/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F192.168.88.77%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DBundleDetail%2CBundleList%2CCreateBundle%2CCreateOrderRecord%2CCreateValueAddBundle%2CDeleteBundle%2COrderRecordsDetail%2COrderRecordsList%2CUpdateBundle%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CValueAddBundleDetail%2CValueAddBundleList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D93332%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1743219110%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-03-29T11:31:52.521+0800","caller":"zookeeper/listener.go:338","message":"listenDirEvent->listenSelf(zk path{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F192.168.88.77%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DBundleDetail%2CBundleList%2CCreateBundle%2CCreateOrderRecord%2CCreateValueAddBundle%2CDeleteBundle%2COrderRecordsDetail%2COrderRecordsList%2CUpdateBundle%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CValueAddBundleDetail%2CValueAddBundleList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D93332%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1743219110%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}) goroutine exit now"} {"level":"\u001b[33mWARN\u001b[0m","time":"2025-03-29T11:31:52.521+0800","caller":"zookeeper/listener.go:338","message":"listenDirEvent->listenSelf(zk path{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F192.168.88.77%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DBundleDetail%2CBundleList%2CCreateBundle%2CCreateOrderRecord%2CCreateValueAddBundle%2CDeleteBundle%2COrderRecordsDetail%2COrderRecordsList%2CUpdateBundle%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CValueAddBundleDetail%2CValueAddBundleList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D93332%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1743219110%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}) goroutine exit now"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-03-29T11:31:52.522+0800","caller":"zookeeper/listener.go:244","message":"delete oldNode{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F192.168.88.77%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DBundleDetail%2CBundleList%2CCreateBundle%2CCreateOrderRecord%2CCreateValueAddBundle%2CDeleteBundle%2COrderRecordsDetail%2COrderRecordsList%2CUpdateBundle%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CValueAddBundleDetail%2CValueAddBundleList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D93332%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1743219110%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"} {"level":"\u001b[33mWARN\u001b[0m","time":"2025-03-29T11:31:52.522+0800","caller":"zookeeper/listener.go:244","message":"delete oldNode{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F192.168.88.77%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DBundleDetail%2CBundleList%2CCreateBundle%2CCreateOrderRecord%2CCreateValueAddBundle%2CDeleteBundle%2COrderRecordsDetail%2COrderRecordsList%2CUpdateBundle%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CValueAddBundleDetail%2CValueAddBundleList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D93332%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1743219110%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.300+0800","caller":"config/root_config.go:129","message":"[Config Center] Config center doesn't start"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.302+0800","caller":"dubbo3/dubbo3_protocol.go:81","message":"[Triple Protocol] Export service: tri://:20201/grpc.reflection.v1alpha.ServerReflection?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=XXX_serverReflectionServer&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=grpc.reflection.v1alpha.ServerReflection&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=32300&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=tracing&side=provider&timestamp=1750930370&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&warmup="}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.304+0800","caller":"dubbo3/dubbo3_protocol.go:81","message":"[Triple Protocol] Export service: tri://:20201/com.fontree.microservices.fiee.bundle?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=BundleProvider&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=com.fontree.microservices.fiee.bundle&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=32300&registry=zookeeper&registry.role=3&release=dubbo-golang-3.0.0&retries=0&serialization=&service.filter=tps%2Ctracing&side=provider&timestamp=1750930370&tps.limit.interval=1000&tps.limit.rate=30&tps.limit.rejected.handler=DefaultValueHandler&tps.limit.strategy=fixedWindow&tps.limiter=method-service&warmup=100"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.304+0800","caller":"zookeeper/registry.go:67","message":"[Zookeeper Registry] New zookeeper registry with url map[host:127.0.0.1 port:2181 protocol:zookeeper registry:zookeeper registry.group: registry.label:true registry.namespace: registry.preferred:false registry.role:3 registry.timeout:10s registry.ttl:10s registry.weight:0 registry.zone: remote-client-name:dubbo.registries-zookeeper-127.0.0.1:2181 simplified:false]"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.304+0800","caller":"zookeeper/client.go:53","message":"[Zookeeper Client] New zookeeper client with name = 127.0.0.1:2181, zkAddress = 127.0.0.1:2181, timeout = 5s"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.377+0800","caller":"zookeeper/registry.go:217","message":"[Zookeeper Registry] Registry instance with root = /dubbo/com.fontree.microservices.fiee.bundle/providers, node = tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D32300%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930370%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.393+0800","caller":"zookeeper/listener.go:392","message":"[Zookeeper Listener] listen dubbo path{/dubbo/com.fontree.microservices.fiee.bundle/providers}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.395+0800","caller":"dubbo/dubbo_protocol.go:83","message":"[DUBBO Protocol] Export service: dubbo://:53003/org.apache.dubbo.metadata.MetadataService?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=MetadataService&cluster=&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&group=dubbo.io&interface=org.apache.dubbo.metadata.MetadataService&loadbalance=&message_size=0&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=32300&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=echo%2Cmetrics%2Ctoken%2Caccesslog%2Ctps%2Cgeneric_service%2Cexecute%2Cpshutdown&side=provider&timestamp=1750930370&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&version=1.0.0&warmup="}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:50.395+0800","caller":"configurable/exporter.go:77","message":"[Metadata Service] The MetadataService exports urls : [dubbo://:53003/org.apache.dubbo.metadata.MetadataService?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=MetadataService&cluster=&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&group=dubbo.io&interface=org.apache.dubbo.metadata.MetadataService&loadbalance=&message_size=0&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=32300&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=echo%2Cmetrics%2Ctoken%2Caccesslog%2Ctps%2Cgeneric_service%2Cexecute%2Cpshutdown&side=provider&timestamp=1750930370&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&version=1.0.0&warmup=] "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:53.212+0800","caller":"config/graceful_shutdown.go:81","message":"get signal interrupt, applicationConfig will shutdown."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:53.212+0800","caller":"config/graceful_shutdown.go:121","message":"Graceful shutdown --- Destroy all registriesConfig. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:53.218+0800","caller":"config/graceful_shutdown.go:162","message":"Graceful shutdown --- Keep waiting and accept new requests for a short time. "}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:32:53.218+0800","caller":"zookeeper/listener.go:153","message":"get a zookeeper keyEventCh{type:EventNodeDeleted, server:, path:/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D32300%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930370%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100, state:3-zookeeper connected, err:%!s(<nil>)}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:53.218+0800","caller":"zookeeper/listener.go:179","message":"[ZkEventListener][listenServiceNodeEvent]Get a EventNodeDeleted event for path {/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D32300%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930370%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:32:53.218+0800","caller":"zookeeper/listener.go:338","message":"listenDirEvent->listenSelf(zk path{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D32300%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930370%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}) goroutine exit now"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:32:53.219+0800","caller":"zookeeper/listener.go:244","message":"delete oldNode{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D32300%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930370%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"config/graceful_shutdown.go:193","message":"Graceful shutdown --- Keep waiting until sending/accepting requests finish or timeout. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"config/graceful_shutdown.go:129","message":"Graceful shutdown --- Destroy protocols. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"config/graceful_shutdown.go:144","message":"Graceful shutdown --- First destroy provider's protocols. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"protocol/protocol.go:139","message":"Exporter unexport."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"protocol/invoker.go:91","message":"Destroy invoker: tri://:20201/grpc.reflection.v1alpha.ServerReflection?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=XXX_serverReflectionServer&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=grpc.reflection.v1alpha.ServerReflection&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=32300&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=tracing&side=provider&timestamp=1750930370&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&warmup="}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"protocol/protocol.go:139","message":"Exporter unexport."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.218+0800","caller":"protocol/invoker.go:91","message":"Destroy invoker: tri://:20201/com.fontree.microservices.fiee.bundle?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=BundleProvider&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=com.fontree.microservices.fiee.bundle&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=32300&registry=zookeeper&registry.role=3&release=dubbo-golang-3.0.0&retries=0&serialization=&service.filter=tps%2Ctracing&side=provider&timestamp=1750930370&tps.limit.interval=1000&tps.limit.rate=30&tps.limit.rejected.handler=DefaultValueHandler&tps.limit.strategy=fixedWindow&tps.limiter=method-service&warmup=100"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.219+0800","caller":"config/graceful_shutdown.go:155","message":"Graceful shutdown --- Second Destroy consumer's protocols. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:32:56.219+0800","caller":"config/graceful_shutdown.go:113","message":"Graceful shutdown --- Execute the custom callbacks."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.831+0800","caller":"config/root_config.go:129","message":"[Config Center] Config center doesn't start"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.832+0800","caller":"dubbo3/dubbo3_protocol.go:81","message":"[Triple Protocol] Export service: tri://:20201/grpc.reflection.v1alpha.ServerReflection?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=XXX_serverReflectionServer&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=grpc.reflection.v1alpha.ServerReflection&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=46056&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=tracing&side=provider&timestamp=1750930414&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&warmup="}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.833+0800","caller":"dubbo3/dubbo3_protocol.go:81","message":"[Triple Protocol] Export service: tri://:20201/com.fontree.microservices.fiee.bundle?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=BundleProvider&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=com.fontree.microservices.fiee.bundle&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=46056&registry=zookeeper&registry.role=3&release=dubbo-golang-3.0.0&retries=0&serialization=&service.filter=tps%2Ctracing&side=provider&timestamp=1750930414&tps.limit.interval=1000&tps.limit.rate=30&tps.limit.rejected.handler=DefaultValueHandler&tps.limit.strategy=fixedWindow&tps.limiter=method-service&warmup=100"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.833+0800","caller":"zookeeper/registry.go:67","message":"[Zookeeper Registry] New zookeeper registry with url map[host:127.0.0.1 port:2181 protocol:zookeeper registry:zookeeper registry.group: registry.label:true registry.namespace: registry.preferred:false registry.role:3 registry.timeout:10s registry.ttl:10s registry.weight:0 registry.zone: remote-client-name:dubbo.registries-zookeeper-127.0.0.1:2181 simplified:false]"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.833+0800","caller":"zookeeper/client.go:53","message":"[Zookeeper Client] New zookeeper client with name = 127.0.0.1:2181, zkAddress = 127.0.0.1:2181, timeout = 5s"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.865+0800","caller":"zookeeper/registry.go:217","message":"[Zookeeper Registry] Registry instance with root = /dubbo/com.fontree.microservices.fiee.bundle/providers, node = tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.881+0800","caller":"zookeeper/listener.go:392","message":"[Zookeeper Listener] listen dubbo path{/dubbo/com.fontree.microservices.fiee.bundle/providers}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.882+0800","caller":"dubbo/dubbo_protocol.go:83","message":"[DUBBO Protocol] Export service: dubbo://:53298/org.apache.dubbo.metadata.MetadataService?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=MetadataService&cluster=&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&group=dubbo.io&interface=org.apache.dubbo.metadata.MetadataService&loadbalance=&message_size=0&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=46056&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=echo%2Cmetrics%2Ctoken%2Caccesslog%2Ctps%2Cgeneric_service%2Cexecute%2Cpshutdown&side=provider&timestamp=1750930414&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&version=1.0.0&warmup="}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:34.882+0800","caller":"configurable/exporter.go:77","message":"[Metadata Service] The MetadataService exports urls : [dubbo://:53298/org.apache.dubbo.metadata.MetadataService?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=MetadataService&cluster=&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&group=dubbo.io&interface=org.apache.dubbo.metadata.MetadataService&loadbalance=&message_size=0&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=46056&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=echo%2Cmetrics%2Ctoken%2Caccesslog%2Ctps%2Cgeneric_service%2Cexecute%2Cpshutdown&side=provider&timestamp=1750930414&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&version=1.0.0&warmup=] "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:46.757+0800","caller":"config/graceful_shutdown.go:81","message":"get signal interrupt, applicationConfig will shutdown."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:46.757+0800","caller":"config/graceful_shutdown.go:121","message":"Graceful shutdown --- Destroy all registriesConfig. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:46.761+0800","caller":"config/graceful_shutdown.go:162","message":"Graceful shutdown --- Keep waiting and accept new requests for a short time. "}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:33:46.761+0800","caller":"zookeeper/listener.go:153","message":"get a zookeeper keyEventCh{type:EventNodeDeleted, server:, path:/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100, state:3-zookeeper connected, err:%!s(<nil>)}"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:33:46.761+0800","caller":"zookeeper/listener.go:153","message":"get a zookeeper keyEventCh{type:EventNodeDeleted, server:, path:/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100, state:3-zookeeper connected, err:%!s(<nil>)}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:46.761+0800","caller":"zookeeper/listener.go:179","message":"[ZkEventListener][listenServiceNodeEvent]Get a EventNodeDeleted event for path {/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:46.761+0800","caller":"zookeeper/listener.go:179","message":"[ZkEventListener][listenServiceNodeEvent]Get a EventNodeDeleted event for path {/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:33:46.761+0800","caller":"zookeeper/listener.go:226","message":"delete zkNode{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:33:46.762+0800","caller":"zookeeper/listener.go:338","message":"listenDirEvent->listenSelf(zk path{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}) goroutine exit now"}
{"level":"\u001b[33mWARN\u001b[0m","time":"2025-06-26T17:33:46.762+0800","caller":"zookeeper/listener.go:244","message":"delete oldNode{/dubbo/com.fontree.microservices.fiee.bundle/providers/tri%3A%2F%2F172.23.64.1%3A20201%2Fcom.fontree.microservices.fiee.bundle%3Fanyhost%3Dtrue%26application%3Ddubbo.io%26bean.name%3DBundleProvider%26cluster%3Dfailover%26export%3Dtrue%26interface%3Dcom.fontree.microservices.fiee.bundle%26loadbalance%3Drandom%26message_size%3D4%26metadata-type%3Dlocal%26methods%3DAddBundleBalance%2CBatchGetValueAddServiceLang%2CBundleDetail%2CBundleDetailV2%2CBundleExtend%2CBundleExtendRecordsList%2CBundleLangDetailV2%2CBundleList%2CBundleListH5V2%2CBundleListV2%2CCalculatePrice%2CConfirmWork%2CCreateBundle%2CCreateBundleBalance%2CCreateOrderAddRecord%2CCreateOrderRecord%2CCreateReconciliation%2CCreateValueAddBundle%2CDeleteBundle%2CDeleteValueAddService%2CGetBundleBalanceByUserId%2CGetBundleBalanceList%2CGetImageWorkDetail%2CGetReconciliationList%2CGetUsedRecordList%2CGetVedioWorkDetail%2CHandShelf%2COnlyAddValueListByOrderNo%2COrderListByOrderNo%2COrderRecordsDetail%2COrderRecordsList%2COrderRecordsListV2%2CPackagePriceAndTime%2CSaveBundle%2CSaveValueAddService%2CToBeComfirmedWorks%2CUpdateBundle%2CUpdateFinancialConfirmationStatus%2CUpdateOrderRecord%2CUpdateOrderRecordByOrderNo%2CUpdateReconciliation%2CUpdateReconciliationStatusBySerialNumber%2CValueAddBundleDetail%2CValueAddBundleList%2CValueAddServiceDetail%2CValueAddServiceLangByUuidAndLanguage%2CValueAddServiceList%26module%3Dsample%26name%3Ddubbo.io%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26pid%3D46056%26registry%3Dzookeeper%26registry.role%3D3%26release%3Ddubbo-golang-3.0.0%26retries%3D0%26service.filter%3Dtps%2Ctracing%26side%3Dprovider%26timestamp%3D1750930414%26tps.limit.interval%3D1000%26tps.limit.rate%3D30%26tps.limit.rejected.handler%3DDefaultValueHandler%26tps.limit.strategy%3DfixedWindow%26tps.limiter%3Dmethod-service%26warmup%3D100}"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"config/graceful_shutdown.go:193","message":"Graceful shutdown --- Keep waiting until sending/accepting requests finish or timeout. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"config/graceful_shutdown.go:129","message":"Graceful shutdown --- Destroy protocols. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"config/graceful_shutdown.go:144","message":"Graceful shutdown --- First destroy provider's protocols. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"protocol/protocol.go:139","message":"Exporter unexport."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"protocol/invoker.go:91","message":"Destroy invoker: tri://:20201/com.fontree.microservices.fiee.bundle?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=BundleProvider&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=com.fontree.microservices.fiee.bundle&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=46056&registry=zookeeper&registry.role=3&release=dubbo-golang-3.0.0&retries=0&serialization=&service.filter=tps%2Ctracing&side=provider&timestamp=1750930414&tps.limit.interval=1000&tps.limit.rate=30&tps.limit.rejected.handler=DefaultValueHandler&tps.limit.strategy=fixedWindow&tps.limiter=method-service&warmup=100"}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"protocol/protocol.go:139","message":"Exporter unexport."}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"protocol/invoker.go:91","message":"Destroy invoker: tri://:20201/grpc.reflection.v1alpha.ServerReflection?accesslog=&app.version=&application=dubbo.io&auth=&bean.name=XXX_serverReflectionServer&cluster=failover&config.tracing=&environment=&execute.limit=&execute.limit.rejected.handler=&export=true&interface=grpc.reflection.v1alpha.ServerReflection&loadbalance=random&message_size=4&metadata-type=local&module=sample&name=dubbo.io&organization=dubbo-go&owner=dubbo-go&param.sign=&pid=46056&registry.role=3&release=dubbo-golang-3.0.0&retries=&serialization=&service.filter=tracing&side=provider&timestamp=1750930414&tps.limit.interval=&tps.limit.rate=&tps.limit.rejected.handler=&tps.limit.strategy=&tps.limiter=&warmup="}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"config/graceful_shutdown.go:155","message":"Graceful shutdown --- Second Destroy consumer's protocols. "}
{"level":"\u001b[34mINFO\u001b[0m","time":"2025-06-26T17:33:49.762+0800","caller":"config/graceful_shutdown.go:113","message":"Graceful shutdown --- Execute the custom callbacks."}

View File

@ -88,3 +88,32 @@ func (b *BundleProvider) CreateOrderAddRecord(_ context.Context, req *bundle.Ord
func (b *BundleProvider) OrderRecordsListV2(_ context.Context, req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRecordsResponseV2, err error) { func (b *BundleProvider) OrderRecordsListV2(_ context.Context, req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRecordsResponseV2, err error) {
return logic.OrderRecordsListV2(req) return logic.OrderRecordsListV2(req)
} }
func (b *BundleProvider) OrderListByOrderNo(_ context.Context, req *bundle.OrderInfoByOrderNoRequest) (res *bundle.OrderInfoByOrderNoResp, err error) {
return logic.OrderListByOrderNo(req)
}
// 对账单
func (b *BundleProvider) GetReconciliationList(_ context.Context, req *bundle.GetReconciliationListReq) (res *bundle.GetReconciliationListResp, err error) {
return logic.GetReconciliationList(req)
}
func (b *BundleProvider) CreateReconciliation(_ context.Context, req *bundle.ReconciliationInfo) (res *bundle.CommonResponse, err error) {
return logic.CreateReconciliation(req)
}
func (b *BundleProvider) UpdateReconciliation(_ context.Context, req *bundle.ReconciliationInfo) (res *bundle.CommonResponse, err error) {
return logic.UpdateReconciliation(req)
}
func (b *BundleProvider) OnlyAddValueListByOrderNo(_ context.Context, req *bundle.OnlyAddValueListByOrderNoRequest) (res *bundle.OnlyAddValueListByOrderNoResp, err error) {
return logic.OnlyAddValueListByOrderNo(req)
}
func (b *BundleProvider) UpdateReconciliationStatusBySerialNumber(_ context.Context, req *bundle.UpdateStatusAndPayTimeBySerialNumber) (res *bundle.CommonResponse, err error) {
return logic.UpdateReconciliationStatusBySerialNumber(req)
}
// 删除订单
func (b *BundleProvider) DeleteValueAddService(_ context.Context, req *bundle.DeleteValueAddServiceRequest) (res *bundle.CommonResponse, err error) {
return logic.DeleteValueAddService(req)
}

View File

@ -22,6 +22,9 @@ func (b *BundleProvider) BundleListV2(_ context.Context, req *bundle.BundleListR
func (b *BundleProvider) BundleDetailV2(_ context.Context, req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) { func (b *BundleProvider) BundleDetailV2(_ context.Context, req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) {
return logic.BundleDetailV2(req) return logic.BundleDetailV2(req)
} }
func (b *BundleProvider) BundleLangDetailV2(_ context.Context, req *bundle.BundleDetailRequest) (res *bundle.BundleProfileLang, err error) {
return logic.BundleLangDetailV2(req)
}
// ***************************************************新增值服务*********************** // ***************************************************新增值服务***********************
func (b *BundleProvider) SaveValueAddService(_ context.Context, req *bundle.ValueAddServiceLang) (res *bundle.SaveResponse, err error) { func (b *BundleProvider) SaveValueAddService(_ context.Context, req *bundle.ValueAddServiceLang) (res *bundle.SaveResponse, err error) {
@ -39,3 +42,12 @@ func (b *BundleProvider) ValueAddServiceLangByUuidAndLanguage(_ context.Context,
func (b *BundleProvider) CalculatePrice(ctx context.Context, req *bundle.CalculatePriceRequest) (res *bundle.CalculatePriceResponse, err error) { func (b *BundleProvider) CalculatePrice(ctx context.Context, req *bundle.CalculatePriceRequest) (res *bundle.CalculatePriceResponse, err error) {
return logic.CalculatePrice(req) return logic.CalculatePrice(req)
} }
func (b *BundleProvider) BatchGetValueAddServiceLang(ctx context.Context, req *bundle.BatchGetValueAddServiceLangRequest) (res *bundle.BatchGetValueAddServiceLangResponse, err error) {
return logic.BatchGetValueAddServiceLang(req)
}
// 增加h5套餐列表
func (b *BundleProvider) BundleListH5V2(_ context.Context, req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
return logic.BundleListH5V2(req)
}

View File

@ -136,7 +136,6 @@ func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse
bundles := make([]*model.BundleProfile, 0) bundles := make([]*model.BundleProfile, 0)
query := app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Preload("BundleProfileLang") query := app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Preload("BundleProfileLang")
//query = query.Where("shelf_status = ?", 1) //上架的
if req.Name != "" { if req.Name != "" {
query = query.Where("name like ?", "%"+req.Name+"%") query = query.Where("name like ?", "%"+req.Name+"%")
@ -161,7 +160,7 @@ func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse
if err = query.Preload("BundleToValueAddService").Find(&bundles).Error; err != nil { if err = query.Preload("BundleToValueAddService").Find(&bundles).Error; err != nil {
return res, commonErr.ReturnError(err, msg.ErrorGetBundleList, "获取套餐列表失败: ") return res, commonErr.ReturnError(err, msg.ErrorGetBundleList, "获取套餐列表失败: ")
} }
if bundles != nil && len(bundles) > 0 { if len(bundles) > 0 {
for _, bundleProfile := range bundles { for _, bundleProfile := range bundles {
selectValueAddService := make([]*bundle.SelectValueAddService, 0) selectValueAddService := make([]*bundle.SelectValueAddService, 0)
if bundleProfile.BundleToValueAddService != nil { if bundleProfile.BundleToValueAddService != nil {
@ -173,7 +172,7 @@ func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse
} }
} }
bundleProfileLang := []*bundle.BundleProfileLang{} bundleProfileLang := []*bundle.BundleProfileLang{}
if bundleProfile.BundleProfileLang != nil && len(bundleProfile.BundleProfileLang) > 0 { if len(bundleProfile.BundleProfileLang) > 0 {
for _, lang := range bundleProfile.BundleProfileLang { for _, lang := range bundleProfile.BundleProfileLang {
bpl := &bundle.BundleProfileLang{ bpl := &bundle.BundleProfileLang{
Uuid: lang.UUID, Uuid: lang.UUID,
@ -207,6 +206,7 @@ func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse
SelectValueAddService: selectValueAddService, SelectValueAddService: selectValueAddService,
BundleProfileLang: bundleProfileLang, BundleProfileLang: bundleProfileLang,
ShelfStatus: int64(bundleProfile.ShelfStatus), ShelfStatus: int64(bundleProfile.ShelfStatus),
FontColor: bundleProfile.FontColor,
}) })
} }
} }
@ -237,6 +237,7 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *model.BundleProfile,
func HandShelf(uuid string, shelfStatus int64) (res *bundle.CommonResponse, err error) { func HandShelf(uuid string, shelfStatus int64) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse) res = new(bundle.CommonResponse)
err = app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("uuid = ?", uuid).Update("shelf_status", shelfStatus).Error err = app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("uuid = ?", uuid).Update("shelf_status", shelfStatus).Error
if err != nil { if err != nil {
res.Msg = "套餐上下架操作失败" res.Msg = "套餐上下架操作失败"
return res, err return res, err
@ -247,7 +248,8 @@ func HandShelf(uuid string, shelfStatus int64) (res *bundle.CommonResponse, err
// 通过uuid和language查询套餐语言表 // 通过uuid和language查询套餐语言表
func BundleDetailByUuidAndLanguage(uuid string, language string) (bundleProfileLang *model.BundleProfileLang, err error) { func BundleDetailByUuidAndLanguage(uuid string, language string) (bundleProfileLang *model.BundleProfileLang, err error) {
err = app.ModuleClients.BundleDB.Where("uuid = ? AND language = ?", uuid, language).First(&bundleProfileLang).Error err = app.ModuleClients.BundleDB.Where("uuid = ? AND language = ? AND deleted_at = 0", uuid, language).First(&bundleProfileLang).Error
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -274,12 +276,23 @@ func TxCreateBundleLang(tx *gorm.DB, req *model.BundleProfileLang) (err error) {
func TxUpdateBundle(tx *gorm.DB, uuid string, columns map[string]interface{}) (err error) { func TxUpdateBundle(tx *gorm.DB, uuid string, columns map[string]interface{}) (err error) {
err = tx.Model(&model.BundleProfile{}).Where("uuid =?", uuid).Updates(columns).Error err = tx.Model(&model.BundleProfile{}).Where("uuid =?", uuid).Updates(columns).Error
if err != nil { if err != nil {
return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ") return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败")
}
return
}
func TxUpdateBundles(tx *gorm.DB, uuids []string, columns map[string]interface{}) (err error) {
if len(uuids) == 0 {
return nil
}
err = tx.Model(&model.BundleProfile{}).Where("uuid IN (?)", uuids).Updates(columns).Error
if err != nil {
return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败")
} }
return return
} }
func TxUpdateBundleLang(tx *gorm.DB, uuid string, language string, columns map[string]interface{}) (err error) { func TxUpdateBundleLang(tx *gorm.DB, uuid string, language string, columns map[string]interface{}) (err error) {
err = tx.Model(&model.BundleProfileLang{}).Where("uuid =? and language=?", uuid, language).Updates(columns).Error err = tx.Model(&model.BundleProfileLang{}).Where("uuid =? and language=? and deleted_at = 0", uuid, language).Updates(columns).Error
if err != nil { if err != nil {
return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ") return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ")
} }
@ -288,13 +301,24 @@ func TxUpdateBundleLang(tx *gorm.DB, uuid string, language string, columns map[s
func CreateBundleToValueAddService(tx *gorm.DB, records []*model.BundleToValueAddService) error { func CreateBundleToValueAddService(tx *gorm.DB, records []*model.BundleToValueAddService) error {
return tx.Model(&model.BundleToValueAddService{}).Create(&records).Error return tx.Model(&model.BundleToValueAddService{}).Create(&records).Error
} }
func UpdateBundleToValueAddService(tx *gorm.DB, records []*model.BundleToValueAddService) error {
columns := make(map[string]interface{})
for _, record := range records {
columns["is_display"] = record.IsDisplay
err := tx.Model(&model.BundleToValueAddService{}).Where("bundle_uuid = ? AND value_uid = ? AND deleted_at = 0", record.BundleUuid, record.ValueUid).Updates(columns).Error
if err != nil {
return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ")
}
}
return nil
}
func DeleteBundleToValueAddService(tx *gorm.DB, bundleUuid, valueUid string) error { func DeleteBundleToValueAddService(tx *gorm.DB, bundleUuid, valueUid string) error {
return tx.Where("bundle_uuid = ? AND value_uid = ?", bundleUuid, valueUid).Delete(&model.BundleToValueAddService{}).Error return tx.Where("bundle_uuid = ? AND value_uid = ? AND deleted_at = 0", bundleUuid, valueUid).Delete(&model.BundleToValueAddService{}).Error
} }
func GetValueAddServiceUuidsByBundleUuid(bundleUuid string) ([]string, error) { func GetValueAddServiceUuidsByBundleUuid(bundleUuid string) ([]string, error) {
var uuids []string var uuids []string
err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).Where("bundle_uuid = ?", bundleUuid).Pluck("value_uid", &uuids).Error err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).Where("bundle_uuid = ? and deleted_at = 0", bundleUuid).Pluck("value_uid", &uuids).Error
return uuids, err return uuids, err
} }
@ -302,7 +326,7 @@ func GetValueAddServiceUuidsByBundleUuid(bundleUuid string) ([]string, error) {
func GetBundleToValueAddServiceByBundleUuid(bundleUuid string) ([]*model.BundleToValueAddService, error) { func GetBundleToValueAddServiceByBundleUuid(bundleUuid string) ([]*model.BundleToValueAddService, error) {
var result []*model.BundleToValueAddService var result []*model.BundleToValueAddService
err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}). err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).
Where("bundle_uuid = ?", bundleUuid). Where("bundle_uuid = ? and deleted_at = 0", bundleUuid).
Find(&result).Error Find(&result).Error
return result, err return result, err
} }
@ -310,8 +334,11 @@ func GetBundleToValueAddServiceByBundleUuid(bundleUuid string) ([]*model.BundleT
func GetBundleLangsByUuid(uuid string) ([]*model.BundleProfileLang, error) { func GetBundleLangsByUuid(uuid string) ([]*model.BundleProfileLang, error) {
var result []*model.BundleProfileLang var result []*model.BundleProfileLang
err := app.ModuleClients.BundleDB.Model(&model.BundleProfileLang{}). err := app.ModuleClients.BundleDB.Model(&model.BundleProfileLang{}).
Where("uuid =?", uuid). Where("uuid =? and deleted_at = 0", uuid).
Find(&result).Error Find(&result).Error
if err != nil {
return nil, err
}
return result, err return result, err
} }
func GetBundleDetailByUuid(uuid string) (*model.BundleProfile, error) { func GetBundleDetailByUuid(uuid string) (*model.BundleProfile, error) {
@ -326,3 +353,95 @@ func GetBundleDetailByUuid(uuid string) (*model.BundleProfile, error) {
func CreateBunldeHistory(tx *gorm.DB, req *model.BundleProfileHistory) error { func CreateBunldeHistory(tx *gorm.DB, req *model.BundleProfileHistory) error {
return tx.Model(&model.BundleProfileHistory{}).Create(req).Error return tx.Model(&model.BundleProfileHistory{}).Create(req).Error
} }
func BundleListH5V2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
res = new(bundle.BundleListResponse)
res.Bundles = make([]*bundle.BundleProfile, 0)
bundles := make([]*model.BundleProfile, 0)
query := app.ModuleClients.BundleDB.Model(&model.BundleProfile{}).Where("shelf_status = ?", 1).Preload("BundleProfileLang")
//query = query.Where("shelf_status = ?", 1) //上架的
if req.Name != "" {
query = query.Where("name like ?", "%"+req.Name+"%")
}
if req.Content != "" {
query = query.Where("content like ?", "%"+req.Content+"%")
}
if req.Language != "" {
query = query.Where("language like ?", req.Language)
}
count := *query
// 排序sort 升序,相同 sort 按 created_at 倒序
query = query.Order("sort ASC").Order("created_at DESC")
if req.PageSize != 0 && req.Page != 0 {
query = query.Limit(int(req.PageSize)).Offset(int(req.Page-1) * int(req.PageSize))
}
if err = query.Preload("BundleToValueAddService").Find(&bundles).Error; err != nil {
return res, commonErr.ReturnError(err, msg.ErrorGetBundleList, "获取套餐列表失败: ")
}
if len(bundles) > 0 {
for _, bundleProfile := range bundles {
selectValueAddService := make([]*bundle.SelectValueAddService, 0)
if bundleProfile.BundleToValueAddService != nil {
for _, v := range bundleProfile.BundleToValueAddService {
selectValueAddService = append(selectValueAddService, &bundle.SelectValueAddService{
ValueAddUuid: v.ValueUid,
IsDisplay: v.IsDisplay,
})
}
}
bundleProfileLang := []*bundle.BundleProfileLang{}
if len(bundleProfile.BundleProfileLang) > 0 {
for _, lang := range bundleProfile.BundleProfileLang {
bpl := &bundle.BundleProfileLang{
Uuid: lang.UUID,
Name: lang.Name,
Price: lang.Price,
PriceType: lang.PriceType,
Content: lang.Content,
Language: lang.Language,
CreatedAt: time.Unix(lang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
UpdatedAt: time.Unix(int64(lang.UpdatedAt), 0).Format("2006-01-02 15:04:05"),
}
bundleProfileLang = append(bundleProfileLang, bpl)
}
}
res.Bundles = append(res.Bundles, &bundle.BundleProfile{
Uuid: bundleProfile.UUID,
Name: bundleProfile.Name,
Content: bundleProfile.Content,
Price: bundleProfile.Price,
PriceType: bundleProfile.PriceType,
Contract: bundleProfile.Contract,
Language: bundleProfile.Language,
CreatedAt: bundleProfile.CreatedAt.Format("2006-01-02 15:04:05"),
UpdatedAt: bundleProfile.UpdatedAt.Format("2006-01-02 15:04:05"),
CompanySign: bundleProfile.CompanySign,
ContractDuration: int64(bundleProfile.ContractDuration),
Sort: bundleProfile.Sort,
ImgOption: int32(bundleProfile.ImgOption),
BgImg1: bundleProfile.BgImg1,
BgImg2: bundleProfile.BgImg2,
SelectValueAddService: selectValueAddService,
BundleProfileLang: bundleProfileLang,
ShelfStatus: int64(bundleProfile.ShelfStatus),
FontColor: bundleProfile.FontColor,
})
}
}
var total int64
count.Count(&total)
res.Total = int32(total)
return
}

View File

@ -54,7 +54,7 @@ func AddBundleExtendRecord(data model.BundleExtensionRecords) error {
} }
func GetBundleExtendRecordList(req *bundle.BundleExtendRecordsListRequest) (data []model.BundleExtendRecordItemPo, total int64, err error) { func GetBundleExtendRecordList(req *bundle.BundleExtendRecordsListRequest) (data []model.BundleExtendRecordItemPo, total int64, err error) {
session := app.ModuleClients.BundleDB.Table("fiee_bundle.bundle_extension_records AS ber"). session := app.ModuleClients.BundleDB.Table("micro_bundle.bundle_extension_records AS ber").
Select(` Select(`
ber.*, ber.*,
rn.name as user_name, rn.name as user_name,
@ -112,9 +112,10 @@ func GetBundleBalanceList(req *bundle.GetBundleBalanceListReq) (data []model.Bun
u.tel_num as user_phone_number, u.id as user_id`). u.tel_num as user_phone_number, u.id as user_id`).
Joins("LEFT JOIN `micro-account`.real_name rn ON u.real_name_id = rn.id"). Joins("LEFT JOIN `micro-account`.real_name rn ON u.real_name_id = rn.id").
Joins("LEFT JOIN (?) as bor ON bor.customer_id = u.id", subQuery). Joins("LEFT JOIN (?) as bor ON bor.customer_id = u.id", subQuery).
Joins("LEFT JOIN fiee_bundle.bundle_balance bb ON u.id = bb.user_id AND bb.order_uuid = bor.uuid"). Joins("LEFT JOIN micro_bundle.bundle_balance bb ON u.id = bb.user_id AND bb.order_uuid = bor.uuid").
Where("rn.name IS NOT NULL"). Where("rn.name IS NOT NULL").
Where("u.deleted_at = 0") Where("u.deleted_at = 0").
Order("bor.expiration_time desc")
if req.UserName != "" { if req.UserName != "" {
if utils.IsPhoneNumber(req.UserName) { if utils.IsPhoneNumber(req.UserName) {
session = session.Where("u.tel_num = ?", req.UserName) session = session.Where("u.tel_num = ?", req.UserName)
@ -152,7 +153,7 @@ func GetBundleBalanceList(req *bundle.GetBundleBalanceListReq) (data []model.Bun
} }
func GetBundleBalanceByUserId(req *bundle.GetBundleBalanceByUserIdReq) (data model.UserBundleBalancePo, err error) { func GetBundleBalanceByUserId(req *bundle.GetBundleBalanceByUserIdReq) (data model.UserBundleBalancePo, err error) {
err = app.ModuleClients.BundleDB.Table("fiee_bundle.bundle_balance AS bb"). err = app.ModuleClients.BundleDB.Table("micro_bundle.bundle_balance AS bb").
Select("bb.*,bor.uuid AS order_uuid, bor.bundle_name AS bundle_name, bor.status AS bundle_status, bor.pay_time AS pay_time, bor.expiration_time AS expired_time,bor.amount AS payment_amount,bor.amount_type AS payment_type"). Select("bb.*,bor.uuid AS order_uuid, bor.bundle_name AS bundle_name, bor.status AS bundle_status, bor.pay_time AS pay_time, bor.expiration_time AS expired_time,bor.amount AS payment_amount,bor.amount_type AS payment_type").
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid"). Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
Joins("LEFT JOIN `micro-account`.`user` u ON u.id = bb.user_id"). Joins("LEFT JOIN `micro-account`.`user` u ON u.id = bb.user_id").
@ -166,7 +167,7 @@ func GetBundleBalanceByUserId(req *bundle.GetBundleBalanceByUserIdReq) (data mod
} }
var additionalInfo model.UserBundleBalancePo var additionalInfo model.UserBundleBalancePo
err = app.ModuleClients.BundleDB.Model(&model.BundleExtensionRecords{}). err = app.ModuleClients.BundleDB.Model(&model.BundleExtensionRecords{}).
Select("user_id, SUM(account_additional) as account_additional, SUM(images_additional) as image_additional, SUM(video_additional) as video_additional, SUM(data_additional) as data_additional"). Select("SUM(account_additional) as account_additional, SUM(images_additional) as image_additional, SUM(video_additional) as video_additional, SUM(data_additional) as data_additional").
Where("type = 1"). // 手动扩展 Where("type = 1"). // 手动扩展
Where("user_id = ?", req.UserId). Where("user_id = ?", req.UserId).
Where("created_at > ?", data.PayTime). // 判断扩展是否生效 Where("created_at > ?", data.PayTime). // 判断扩展是否生效

View File

@ -2,6 +2,10 @@ package dao
import ( import (
"encoding/json" "encoding/json"
"errors"
"fmt"
"github.com/jinzhu/copier"
"gorm.io/gorm"
"micro-bundle/internal/model" "micro-bundle/internal/model"
"micro-bundle/pb/bundle" "micro-bundle/pb/bundle"
"micro-bundle/pkg/app" "micro-bundle/pkg/app"
@ -104,6 +108,10 @@ func UpdateOrderRecordByOrderNO(orderRecord *model.BundleOrderRecords) (res *bun
PaymentStatus: int(orderRecord.Status), PaymentStatus: int(orderRecord.Status),
PaymentTime: orderRecord.PayTime, PaymentTime: orderRecord.PayTime,
} }
if orderRecord.CheckoutSessionId != "" {
valueAdd.CheckoutSessionId = orderRecord.CheckoutSessionId
valueAdd.CheckoutSessionUrl = orderRecord.CheckoutSessionUrl
}
err = app.ModuleClients.BundleDB.Model(&model.BundleOrderValueAdd{}). err = app.ModuleClients.BundleDB.Model(&model.BundleOrderValueAdd{}).
Where("order_no = ?", orderRecord.OrderNo). Where("order_no = ?", orderRecord.OrderNo).
Updates(valueAdd).Error Updates(valueAdd).Error
@ -265,12 +273,33 @@ func OrderRecordDetail(req *bundle.OrderRecordsDetailRequest) (res *bundle.Order
if req.BundleUUID != "" { if req.BundleUUID != "" {
query = query.Where("bundle_uuid = ?", req.BundleUUID) query = query.Where("bundle_uuid = ?", req.BundleUUID)
} }
err = query.Order("expiration_time desc").First(&orderRecord).Error if req.Status != 0 {
query = query.Where("status = ?", req.Status)
}
err = query.Order("created_at desc").First(&orderRecord).Error
if err != nil { if err != nil {
return res, commonErr.ReturnError(err, msg.ErrorGetOrderInfo, "获取订单信息失败: ") return res, commonErr.ReturnError(err, msg.ErrorGetOrderInfo, "获取订单信息失败: ")
} }
//_ = copier.CopyWithOption(&res, orderRecord, copier.Option{DeepCopy: true}) //_ = copier.CopyWithOption(&res, orderRecord, copier.Option{DeepCopy: true})
addBundles := make([]model.BundleOrderValueAdd, 0)
addInfos := make([]*bundle.AddInfo, 0)
if req.OrderNo == "" {
req.OrderNo = orderRecord.OrderNo
err = app.ModuleClients.BundleDB.Model(model.BundleOrderValueAdd{}).Where("deleted_at is null and source = 1 and order_no = ?", req.OrderNo).Find(&addBundles).Error
if err != nil {
return res, commonErr.ReturnError(err, "增值订单信息", "获取增值订单信息失败: ")
}
for _, addBundle := range addBundles {
addInfo := &bundle.AddInfo{
OrderNo: addBundle.OrderNo,
Num: addBundle.Num,
ValueAddUUID: addBundle.ValueAddUUID,
}
addInfos = append(addInfos, addInfo)
}
}
res = &bundle.OrderRecord{ res = &bundle.OrderRecord{
Uuid: orderRecord.UUID, Uuid: orderRecord.UUID,
OrderNo: orderRecord.OrderNo, OrderNo: orderRecord.OrderNo,
@ -295,6 +324,8 @@ func OrderRecordDetail(req *bundle.OrderRecordsDetailRequest) (res *bundle.Order
TotalAmount: orderRecord.TotalAmount, TotalAmount: orderRecord.TotalAmount,
ExpirationTime: orderRecord.ExpirationTime, ExpirationTime: orderRecord.ExpirationTime,
} }
res.AddInfos = make([]*bundle.AddInfo, 0)
res.AddInfos = addInfos
return return
} }
func PackagePriceAndTime(orderRecord *bundle.OrderRecord) (res *bundle.PackagePriceAndTimeResponse, err error) { func PackagePriceAndTime(orderRecord *bundle.OrderRecord) (res *bundle.PackagePriceAndTimeResponse, err error) {
@ -407,13 +438,13 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
modelObj = modelObj.Where("bundle_order_records.status = ?", req.PayStatus) modelObj = modelObj.Where("bundle_order_records.status = ?", req.PayStatus)
} }
if req.AddPayStatus != 0 { if req.AddPayStatus != 0 {
modelObj = modelObj.Where("exists (select 1 from bundle_order_value_add where bundle_order_value_add.order_no = bundle_order_records.order_no and bundle_order_value_add.payment_status = ?)", req.AddPayStatus) modelObj = modelObj.Where("exists (select 1 from bundle_order_value_add where bundle_order_value_add.order_uuid = bundle_order_records.uuid and bundle_order_value_add.payment_status = ?)", req.AddPayStatus)
} }
if req.OrderNo != "" { if req.OrderNo != "" {
modelObj = modelObj.Where("bundle_order_records.order_no = ?", req.OrderNo) modelObj = modelObj.Where("bundle_order_records.order_no = ?", req.OrderNo)
} }
if req.OrderAddNo != "" { if req.OrderAddNo != "" {
modelObj = modelObj.Where("exists (select 1 from bundle_order_value_add where bundle_order_value_add.order_no = bundle_order_records.order_no and bundle_order_value_add.order_no = ?)", req.OrderAddNo) modelObj = modelObj.Where("exists (select 1 from bundle_order_value_add where bundle_order_value_add.order_uuid = bundle_order_records.uuid and bundle_order_value_add.order_no = ?)", req.OrderAddNo)
} }
if req.BundleCreateAtStart != "" && req.BundleCreateAtEnd != "" { if req.BundleCreateAtStart != "" && req.BundleCreateAtEnd != "" {
modelObj = modelObj.Where("bundle_order_records.created_at between ? and ?", req.BundleCreateAtStart, req.BundleCreateAtEnd) modelObj = modelObj.Where("bundle_order_records.created_at between ? and ?", req.BundleCreateAtStart, req.BundleCreateAtEnd)
@ -436,6 +467,7 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
} }
for _, record := range records { for _, record := range records {
customerID, _ := strconv.ParseInt(record.CustomerID, 10, 64) customerID, _ := strconv.ParseInt(record.CustomerID, 10, 64)
orderItem := &bundle.OrderBundleRecordInfo{ orderItem := &bundle.OrderBundleRecordInfo{
OrderNo: record.OrderNo, OrderNo: record.OrderNo,
BundleName: record.BundleName, BundleName: record.BundleName,
@ -447,40 +479,40 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
CustomerId: customerID, CustomerId: customerID,
} }
// 构建子订单 map按 orderAddNo 聚合 // 聚合子订单
addMap := make(map[string]*bundle.OrderAddBundleRecordInfo) addMap := make(map[string]*bundle.OrderAddBundleRecordInfo)
for _, sub := range record.BundleOrderValueAdd { for _, sub := range record.BundleOrderValueAdd {
orderAddNo := sub.OrderNo orderAddNo := sub.OrderNo
amount := float32(sub.Amount)
// SettlementAmount 规则
settlementAmount := float32(sub.Amount)
if sub.OrderNo == record.OrderNo {
settlementAmount = record.TotalAmount
}
if existing, ok := addMap[orderAddNo]; ok { if existing, ok := addMap[orderAddNo]; ok {
existing.Amount += float32(sub.Amount) existing.Amount += amount
existing.SettlementAmount += settlementAmount
} else { } else {
addMap[orderAddNo] = &bundle.OrderAddBundleRecordInfo{ addMap[orderAddNo] = &bundle.OrderAddBundleRecordInfo{
OrderAddNo: orderAddNo, OrderAddNo: orderAddNo,
Amount: float32(sub.Amount), Amount: amount,
SettlementAmount: settlementAmount,
CurrencyType: int32(sub.CurrencyType), CurrencyType: int32(sub.CurrencyType),
//HandlingFee: float32(sub.HandlingFee),
//ExchangeRate: float32(sub.ExchangeRate),
OrderAddCreateAt: sub.CreatedAt.Format("2006-01-02 15:04:05"), OrderAddCreateAt: sub.CreatedAt.Format("2006-01-02 15:04:05"),
AddPayStatus: int32(sub.PaymentStatus), AddPayStatus: int32(sub.PaymentStatus),
Contract: sub.SignContract, Contract: sub.SignContract,
Snapshot: sub.Snapshot, Snapshot: sub.Snapshot,
CheckoutSessionId: sub.CheckoutSessionId,
CustomerID: sub.CustomerID,
} }
} }
} }
// 将聚合后的子订单添加到主订单返回结构中 // 设置 SettlementAmount 并追加到主订单中
for _, v := range addMap { for orderAddNo, addInfo := range addMap {
orderItem.AddBundleInfo = append(orderItem.AddBundleInfo, v) if orderAddNo == record.OrderNo {
addInfo.SettlementAmount = record.TotalAmount
} else {
addInfo.SettlementAmount = addInfo.Amount
} }
orderItem.AddBundleInfo = append(orderItem.AddBundleInfo, addInfo)
}
res.BundleInfo = append(res.BundleInfo, orderItem) res.BundleInfo = append(res.BundleInfo, orderItem)
} }
res.Total = int32(count) res.Total = int32(count)
@ -488,3 +520,243 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
res.PageSize = req.PageSize res.PageSize = req.PageSize
return res, nil return res, nil
} }
func OrderListByOrderNo(req *bundle.OrderInfoByOrderNoRequest) (*bundle.OrderInfoByOrderNoResp, error) {
if req == nil || req.OrderNo == "" {
return nil, errors.New("invalid request")
}
var addOrder []*model.BundleOrderValueAdd
if err := app.ModuleClients.BundleDB.Model(&model.BundleOrderValueAdd{}).
Where("order_no = ?", req.OrderNo).
Find(&addOrder).Error; err != nil {
return nil, err
}
if len(addOrder) == 0 {
return &bundle.OrderInfoByOrderNoResp{}, nil
}
//订单类型 1:套餐 2:单独购买
userID, err := strconv.ParseInt(addOrder[0].CustomerID, 10, 64)
if err != nil {
return nil, err
}
res := &bundle.OrderInfoByOrderNoResp{
Type: int32(addOrder[0].Source),
UserId: uint64(userID),
OrderUUID: addOrder[0].OrderUUID,
UserName: addOrder[0].CustomerName,
}
for _, item := range addOrder {
switch item.ServiceType {
case 1:
res.VideoNumber += item.Num // 使用 += 而不是直接赋值
case 2:
res.ImageNumber += item.Num
case 3:
res.DataNumber += item.Num
case 4:
res.AccountNumber += item.Num
case 5:
res.Duration += item.Num
res.Unit = item.Unit // 如果有多个duration记录最后一个unit会覆盖前面的
}
}
return res, nil
}
// 对账单
func GetReconciliationList(req *bundle.GetReconciliationListReq) (*bundle.GetReconciliationListResp, error) {
var records []*model.Reconciliation
res := &bundle.GetReconciliationListResp{
Page: req.Page,
PageSize: req.PageSize,
}
modelObj := app.ModuleClients.BundleDB.Model(&model.Reconciliation{})
if len(req.UserIDS) != 0 {
modelObj = modelObj.Where("user_id in (?)", req.UserIDS)
}
if req.UserName != "" {
modelObj = modelObj.Where("user_name like ?", "%"+req.UserName+"%")
}
if req.BundleName != "" {
modelObj = modelObj.Where("bundle_name like ?", "%"+req.BundleName+"%")
}
if req.PayStatus != 0 {
modelObj = modelObj.Where("pay_status = ?", req.PayStatus)
}
if req.PayChannel != 0 {
modelObj = modelObj.Where("pay_channel = ?", req.PayChannel)
}
if req.BundleOrderOn != "" {
modelObj = modelObj.Where("bundle_order_on like ?", "%"+req.BundleOrderOn+"%")
}
if req.BundleAddOrderOn != "" {
modelObj = modelObj.Where("bundle_add_order_on like ?", "%"+req.BundleAddOrderOn+"%")
}
if req.CreatedStart != "" && req.CreatedEnd != "" {
modelObj = modelObj.Where("created_at between ? and ?", req.CreatedStart, req.CreatedEnd)
}
if req.PayTimeStart != "" && req.PayTimeEnd != "" {
modelObj = modelObj.Where("pay_time between ? and ?", req.PayTimeStart, req.PayTimeEnd)
}
if req.SerialNumber != "" {
modelObj = modelObj.Where("serial_number like ?", "%"+req.SerialNumber+"%")
}
if err := modelObj.Count(&res.Total).Error; err != nil {
return nil, fmt.Errorf("查询总数失败: %v", err)
}
// 无数据时提前返回
if res.Total == 0 {
return res, nil
}
offset := (req.Page - 1) * req.PageSize
if err := modelObj.Offset(int(offset)).Limit(int(req.PageSize)).Order("created_at desc").Find(&records).Error; err != nil {
return nil, fmt.Errorf("查询记录失败: %v", err)
}
// 转换结果
if err := copier.Copy(&res.List, records); err != nil {
return nil, fmt.Errorf("数据转换失败: %v", err)
}
return res, nil
}
func CreateReconciliation(req *bundle.ReconciliationInfo) (res *bundle.CommonResponse, err error) {
if req.SerialNumber != "" {
var existing model.Reconciliation
err = app.ModuleClients.BundleDB.Where("serial_number = ?", req.SerialNumber).First(&existing).Error
if err == nil {
// 说明这笔流水存在对账单
return &bundle.CommonResponse{Msg: "创建对账单成功"}, nil
}
}
record := &model.Reconciliation{
BundleOrderOn: req.BundleOrderOn,
BundleAddOrderOn: req.BundleAddOrderOn,
UserID: req.UserID,
UserName: req.UserName,
UserTel: req.UserTel,
BundleName: req.BundleName,
PayAmount: req.PayAmount,
CurrencyType: int(req.CurrencyType),
PayChannel: int(req.PayChannel),
PayTime: req.PayTime,
PayStatus: int(req.PayStatus),
SerialNumber: req.SerialNumber,
CreationTime: time.Now().Format("2006-01-02 15:04:05"),
}
// 创建记录
if err := app.ModuleClients.BundleDB.Create(record).Error; err != nil {
return nil, fmt.Errorf("创建对账单失败: %v", err)
}
// 返回成功响应
return &bundle.CommonResponse{Msg: "创建对账单成功"}, nil
}
func UpdateReconciliation(req *bundle.ReconciliationInfo) (res *bundle.CommonResponse, err error) {
var existing model.Reconciliation
if err := app.ModuleClients.BundleDB.Where("id = ?", req.ID).First(&existing).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("对账单记录不存在")
}
return nil, fmt.Errorf("查询对账单失败: %v", err)
}
updates := model.Reconciliation{
BundleOrderOn: req.BundleOrderOn,
BundleAddOrderOn: req.BundleAddOrderOn,
UserName: req.UserName,
UserTel: req.UserTel,
BundleName: req.BundleName,
PayAmount: req.PayAmount,
CurrencyType: int(req.CurrencyType),
PayChannel: int(req.PayChannel),
PayTime: req.PayTime,
PayStatus: int(req.PayStatus),
SerialNumber: req.SerialNumber,
}
if err := app.ModuleClients.BundleDB.Model(&existing).Updates(updates).Error; err != nil {
return nil, fmt.Errorf("更新对账单失败: %v", err)
}
// 返回成功响应
return &bundle.CommonResponse{Msg: "更新成功"}, nil
}
func OnlyAddValueListByOrderNo(req *bundle.OnlyAddValueListByOrderNoRequest) (res *bundle.OnlyAddValueListByOrderNoResp, err error) {
response := new(bundle.OnlyAddValueListByOrderNoResp)
response.AddBundleInfos = make([]*bundle.AddBundleInfo, 0)
addBundles := make([]model.BundleOrderValueAdd, 0)
err = app.ModuleClients.BundleDB.Model(model.BundleOrderValueAdd{}).Where("deleted_at is null and source = 2 and order_no = ?", req.OrderNo).Find(&addBundles).Error
if err != nil {
return res, commonErr.ReturnError(err, "增值订单信息", "获取增值订单信息失败: ")
}
for _, addBundle := range addBundles {
response.AddBundleInfos = append(response.AddBundleInfos, &bundle.AddBundleInfo{
CheckOutSessionId: addBundle.CheckoutSessionId,
Amount: float32(addBundle.Amount),
OrderNo: addBundle.OrderNo,
PaymentStatus: int32(addBundle.PaymentStatus),
CustomerID: addBundle.CustomerID,
})
}
// 返回成功响应
return response, nil
}
func UpdateReconciliationStatusBySerialNumber(req *bundle.UpdateStatusAndPayTimeBySerialNumber) (res *bundle.CommonResponse, err error) {
var existing model.Reconciliation
if err := app.ModuleClients.BundleDB.Where("serial_number = ?", req.SerialNumber).First(&existing).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("对账单记录不存在")
}
return nil, fmt.Errorf("查询对账单失败: %v", err)
}
updates := model.Reconciliation{
PayTime: req.PayTime,
PayStatus: int(req.PaymentStatus),
SerialNumber: req.SerialNumber,
}
if err := app.ModuleClients.BundleDB.Model(&existing).Updates(updates).Error; err != nil {
return nil, fmt.Errorf("更新对账单失败: %v", err)
}
// 返回成功响应
return &bundle.CommonResponse{Msg: "更新成功"}, nil
}
func DeleteValueAddService(req *bundle.DeleteValueAddServiceRequest) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
var paidServices []*model.BundleOrderValueAdd
if err = app.ModuleClients.BundleDB.Model(&model.BundleOrderValueAdd{}).
Where("order_no = ? AND payment_status = 2 and customer_id = ?", req.OrderNo, req.UserID).
Find(&paidServices).Error; err != nil {
res.Msg = msg.ErrorUpdateOrderInfo
return res, commonErr.ReturnError(err, msg.ErrorUpdateOrderInfo, "查询增值服务支付状态失败: ")
}
if len(paidServices) > 0 {
res.Msg = "订单已支付,无法删除"
return res, nil
}
if err = app.ModuleClients.BundleDB.Where("order_no = ?", req.OrderNo).
Delete(&model.BundleOrderValueAdd{}).Error; err != nil {
res.Msg = msg.ErrorDeleteOrderInfo
return res, commonErr.ReturnError(err, msg.ErrorDeleteOrderInfo, "删除增值服务失败: ")
}
var order model.BundleOrderRecords
if err = app.ModuleClients.BundleDB.Model(&model.BundleOrderRecords{}).
Where("order_no = ? and customer_id = ?", req.OrderNo, req.UserID).
First(&order).Error; err != nil {
if !errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
} else if order.PayType == 2 {
res.Msg = "订单已支付,无法删除"
return res, nil
}
if err = app.ModuleClients.BundleDB.Where("order_no = ?", order.OrderNo).
Delete(&model.BundleOrderRecords{}).Error; err != nil {
res.Msg = msg.ErrorDeleteOrderInfo
return res, commonErr.ReturnError(err, msg.ErrorDeleteOrderInfo, "删除套餐订单服务失败: ")
}
res.Msg = msg.SuccessDeletedOrderInfo
return res, nil
}

View File

@ -97,15 +97,15 @@ func CreateValueAddServiceLang(tx *gorm.DB, req *model.ValueAddServiceLang) (err
// 增值套餐主表更新 // 增值套餐主表更新
func UpdateValueAddService(tx *gorm.DB, columns map[string]interface{}) (err error) { func UpdateValueAddService(tx *gorm.DB, columns map[string]interface{}) (err error) {
err = tx.Model(&model.ValueAddService{}).Where("uuid = ?", columns["uuid"]).Updates(columns).Error err = tx.Model(&model.ValueAddService{}).Where("uuid = ? and deleted_at = 0", columns["uuid"]).Updates(columns).Error
if err != nil { if err != nil {
return return
} }
return return
} }
func UpdateValueAddServiceLang(tx *gorm.DB, columns map[string]interface{}) (err error) { func UpdateValueAddServiceLang(tx *gorm.DB, columns map[string]interface{}) (err error) {
err = tx.Model(&model.ValueAddServiceLang{}).Where("uuid =?", columns["uuid"]). err = tx.Model(&model.ValueAddServiceLang{}).Where("uuid =? and deleted_at = 0", columns["uuid"]).
Where("language", columns["language"]).Updates(columns).Error Where("language = ?", columns["language"]).Updates(columns).Error
if err != nil { if err != nil {
return return
} }
@ -115,6 +115,7 @@ func UpdateValueAddServiceLang(tx *gorm.DB, columns map[string]interface{}) (err
// 增值套餐列表 // 增值套餐列表
func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res []*model.ValueAddService, total int64, err error) { func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res []*model.ValueAddService, total int64, err error) {
query := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}). query := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}).
Where("deleted_at = 0").
Preload("ValueAddServiceLang", func(db *gorm.DB) *gorm.DB { Preload("ValueAddServiceLang", func(db *gorm.DB) *gorm.DB {
return db.Select("uuid,service_name,service_type,price_mode,original_price,unit,language,price_type,options,created_at,updated_at") return db.Select("uuid,service_name,service_type,price_mode,original_price,unit,language,price_type,options,created_at,updated_at")
}) })
@ -134,7 +135,7 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res []*model.V
// 增值套餐详情 // 增值套餐详情
func ValueAddServiceDetail(uuid string) (valueAddServiceDetail *model.ValueAddService, err error) { func ValueAddServiceDetail(uuid string) (valueAddServiceDetail *model.ValueAddService, err error) {
var data model.ValueAddService var data model.ValueAddService
err = app.ModuleClients.BundleDB.Where("uuid = ?", uuid).Preload("ValueAddServiceLang").First(&data).Error err = app.ModuleClients.BundleDB.Where("uuid = ? and deleted_at = 0", uuid).Preload("ValueAddServiceLang").First(&data).Error
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -143,7 +144,8 @@ func ValueAddServiceDetail(uuid string) (valueAddServiceDetail *model.ValueAddSe
// 通过uuid和language查询增值套餐 // 通过uuid和language查询增值套餐
func ValueAddServiceDetailByUuidAndLanguage(uuid string, language string) (valueAddServiceLang *model.ValueAddServiceLang, err error) { func ValueAddServiceDetailByUuidAndLanguage(uuid string, language string) (valueAddServiceLang *model.ValueAddServiceLang, err error) {
err = app.ModuleClients.BundleDB.Where("uuid = ? AND language = ?", uuid, language).First(&valueAddServiceLang).Error err = app.ModuleClients.BundleDB.Where("uuid = ? AND language = ? and deleted_at = 0", uuid, language).First(&valueAddServiceLang).Error
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -154,7 +156,7 @@ func ValueAddServiceDetailByUuidAndLanguage(uuid string, language string) (value
func GetBundleToValueAddServiceByValueUid(valueUid string) ([]model.BundleToValueAddService, error) { func GetBundleToValueAddServiceByValueUid(valueUid string) ([]model.BundleToValueAddService, error) {
var rels []model.BundleToValueAddService var rels []model.BundleToValueAddService
err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}). err := app.ModuleClients.BundleDB.Model(&model.BundleToValueAddService{}).
Where("value_uid = ?", valueUid). Where("value_uid = ? and deleted_at = 0", valueUid).
Find(&rels).Error Find(&rels).Error
return rels, err return rels, err
} }
@ -187,3 +189,17 @@ func BatchValueAddServiceDetailTx(tx *gorm.DB, uids []string) (map[string]*model
} }
return resultMap, nil return resultMap, nil
} }
func BatchGetValueAddServiceLang(uuids []string, language string) (map[string]*model.ValueAddServiceLang, error) {
var results []*model.ValueAddServiceLang
err := app.ModuleClients.BundleDB.Model(&model.ValueAddServiceLang{}).
Where("uuid IN ? AND language = ? AND deleted_at = 0", uuids, language).
Find(&results).Error
if err != nil {
return nil, fmt.Errorf("批量查询增值服务语言失败: %w", err)
}
resultMap := make(map[string]*model.ValueAddServiceLang, len(results))
for _, detail := range results {
resultMap[detail.UUID] = detail
}
return resultMap, nil
}

View File

@ -3,14 +3,13 @@ package logic
import ( import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"micro-bundle/internal/dao" "micro-bundle/internal/dao"
"micro-bundle/pb/bundle"
"micro-bundle/pkg/app" "micro-bundle/pkg/app"
"micro-bundle/pkg/msg" "micro-bundle/pkg/msg"
"time" "time"
"micro-bundle/internal/model" "micro-bundle/internal/model"
"micro-bundle/pb/bundle"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
"github.com/jinzhu/copier" "github.com/jinzhu/copier"
@ -60,7 +59,7 @@ func BundleDetail(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResp
func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error) { func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error) {
res = &bundle.SaveResponse{} res = &bundle.SaveResponse{}
if req.Language == "" { if req.Language == "" {
return res, errors.New("语言参数不能为空") return res, errors.New("语言不能为空")
} }
if req.Sort <= 0 { if req.Sort <= 0 {
return res, errors.New("排序参数需为正整数") return res, errors.New("排序参数需为正整数")
@ -76,6 +75,7 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
BgImg1: req.BgImg1, BgImg1: req.BgImg1,
BgImg2: req.BgImg2, BgImg2: req.BgImg2,
ShelfStatus: 2, //默认初始状态为2-下架 ShelfStatus: 2, //默认初始状态为2-下架
FontColor: req.FontColor,
} }
bundleLang := &model.BundleProfileLang{ bundleLang := &model.BundleProfileLang{
Name: req.Name, Name: req.Name,
@ -87,50 +87,32 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
if req.Uuid == "" && req.Language != msg.ZH_CN { if req.Uuid == "" && req.Language != msg.ZH_CN {
return res, errors.New("请先创建中文版本套餐") return res, errors.New("请先创建中文版本套餐")
} }
var existValueService = make(map[string]string) // var existValueService = make(map[string]string)
if req.Uuid != "" { // if req.Uuid != "" {
valueService, existErr := dao.GetValueAddServiceUuidsByBundleUuid(req.Uuid) // valueService, existErr := dao.GetValueAddServiceUuidsByBundleUuid(req.Uuid)
if existErr != nil { // if existErr != nil {
return res, existErr // return res, errors.New("查询增值服务失败")
} // }
if valueService != nil && len(valueService) > 0 { // if valueService != nil && len(valueService) > 0 {
for _, v := range valueService { // for _, v := range valueService {
existValueService[v] = v // existValueService[v] = v
} // }
} // }
} // }
var cancelValueAddService = make(map[string]string)
selectService := make([]*model.BundleToValueAddService, 0) selectService := make([]*model.BundleToValueAddService, 0)
var selectValueAddServiceCount = make(map[int]struct{}) var selectValueAddServiceCount = make(map[int]struct{}) //增值服务类型数量
if req.Language == msg.ZH_CN && req.SelectValueAddService != nil && len(req.SelectValueAddService) > 0 { if req.Language == msg.ZH_CN && req.SelectValueAddService != nil && len(req.SelectValueAddService) > 0 {
for _, v := range req.SelectValueAddService { for _, v := range req.SelectValueAddService {
detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueAddUuid, req.Language) detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueAddUuid, req.Language)
if checkErr != nil { if checkErr != nil {
if checkErr == gorm.ErrRecordNotFound { if checkErr == gorm.ErrRecordNotFound {
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s版不存在,请先创建对应增值套餐", v.ServiceName, req.Language)) return res, errors.New("增值服务不存在")
} else { } else {
return res, checkErr return res, errors.New("查询增值服务失败")
}
}
if detail.PriceType != req.PriceType {
if req.Uuid == "" {
//中文套餐创建时,币种不一致直接返回错误
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
} else {
//更新时,判断是否已存在,存在则取消关联
_, ok := existValueService[v.ValueAddUuid]
if ok {
cancelValueAddService[v.ValueAddUuid] = detail.ServiceName
continue
} else {
//币种不一致,新加币种时返回错误
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
}
} }
} }
if _, exists := selectValueAddServiceCount[int(detail.ServiceType)]; exists { if _, exists := selectValueAddServiceCount[int(detail.ServiceType)]; exists {
return res, errors.New(fmt.Sprintf("所选增值服务[%s]类型存在多个", detail.ServiceName)) return res, errors.New("每种增值服务类型只可选择一个")
} }
selectValueAddServiceCount[int(detail.ServiceType)] = struct{}{} selectValueAddServiceCount[int(detail.ServiceType)] = struct{}{}
selectService = append(selectService, &model.BundleToValueAddService{ selectService = append(selectService, &model.BundleToValueAddService{
@ -150,9 +132,6 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
_, err = dao.BundleDetailByUuidAndLanguage(req.Uuid, req.Language) _, err = dao.BundleDetailByUuidAndLanguage(req.Uuid, req.Language)
if err != nil { if err != nil {
if err == gorm.ErrRecordNotFound { if err == gorm.ErrRecordNotFound {
// if req.Uuid != "" {
// return res, errors.New("套餐不存在")
// }
if req.Language != msg.ZH_CN { if req.Language != msg.ZH_CN {
_, err = dao.BundleDetailByUuidAndLanguage(req.Uuid, msg.ZH_CN) _, err = dao.BundleDetailByUuidAndLanguage(req.Uuid, msg.ZH_CN)
if err != nil { if err != nil {
@ -160,14 +139,14 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
res.Msg = "请先创建中文版本套餐" res.Msg = "请先创建中文版本套餐"
return res, errors.New("请先创建中文版本套餐") return res, errors.New("请先创建中文版本套餐")
} else { } else {
return res, err return res, errors.New("获取套餐信息失败")
} }
} }
} }
if req.Language == msg.ZH_CN { if req.Language == msg.ZH_CN {
bundleProfile.UUID = utils.GetUUID() bundleProfile.UUID = utils.GetUUID()
if err = dao.TxCreateBundle(tx, bundleProfile); err != nil { if err = dao.TxCreateBundle(tx, bundleProfile); err != nil {
return res, errors.New("保存中文语言套餐失败: " + err.Error()) return res, errors.New("创建套餐信息失败")
} }
bundleLang.UUID = bundleProfile.UUID bundleLang.UUID = bundleProfile.UUID
res.Uuid = bundleProfile.UUID res.Uuid = bundleProfile.UUID
@ -177,39 +156,29 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
} }
if len(selectService) > 0 { if len(selectService) > 0 {
if err = dao.CreateBundleToValueAddService(tx, selectService); err != nil { if err = dao.CreateBundleToValueAddService(tx, selectService); err != nil {
return res, errors.New("保存套餐与增值服务关联失败: " + err.Error()) return res, errors.New("保存套餐与增值服务关联失败")
} }
} }
} else {
bundleLang.UUID = req.Uuid
res.Uuid = req.Uuid
valueUuid, err1 := dao.GetValueAddServiceUuidsByBundleUuid(bundleLang.UUID)
if err1 != nil {
return res, err1
}
count := 0
if valueUuid != nil && len(valueUuid) > 0 {
for _, v := range valueUuid {
//可以改成批量获取
valueDetail, err2 := dao.ValueAddServiceDetailByUuidAndLanguage(v, req.Language)
if err2 != nil {
return res, err2
}
if valueDetail.PriceType != req.PriceType {
if err = tx.Where("bundle_uuid =? AND value_uid =?", bundleLang.UUID, v).Delete(&model.BundleToValueAddService{}).Error; err != nil {
return res, errors.New("删除套餐与增值服务关联失败: " + err.Error())
}
count++
}
}
}
res.CancelNum = int64(count)
}
if err = dao.TxCreateBundleLang(tx, bundleLang); err != nil { if err = dao.TxCreateBundleLang(tx, bundleLang); err != nil {
return res, errors.New("保存语言套餐失败: " + err.Error()) return res, errors.New("创建套餐信息失败")
} }
res.Msg = "保存成功" }
return res, nil langList := []string{msg.ZH_TW, msg.EN, msg.DE_DE, msg.JA_JP}
for _, lang := range langList {
otherLang := &model.BundleProfileLang{
UUID: bundleLang.UUID,
Name: bundleLang.Name,
Content: bundleLang.Content,
Price: bundleLang.Price,
PriceType: bundleLang.PriceType,
}
otherLang.Language = lang
if err = dao.TxCreateBundleLang(tx, otherLang); err != nil {
return res, errors.New("创建套餐信息失败")
}
}
res.Msg = "创建套餐信息成功"
return
} else { } else {
return return
} }
@ -219,20 +188,7 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
if saveErr := saveBundleHistory(tx, req.Uuid, "", 0); saveErr != nil { if saveErr := saveBundleHistory(tx, req.Uuid, "", 0); saveErr != nil {
return res, saveErr return res, saveErr
} }
if req.Language == msg.ZH_CN { if req.Language == msg.ZH_CN {
if len(cancelValueAddService) > 0 {
cancel := "以下增值服务:"
for _, v := range cancelValueAddService {
cancel += fmt.Sprintf("[%s]%s", v, req.Language)
if err = tx.Where("bundle_uuid = ? AND value_uid = ?", req.Uuid, v).Delete(&model.BundleToValueAddService{}).Error; err != nil {
return res, errors.New("删除套餐与增值服务关联失败: " + err.Error())
}
}
cancel += "版币种与套餐币种不一致"
res.Msg = "保存cn成功 " + cancel
}
res.CancelNum = int64(len(cancelValueAddService))
updateBundle := map[string]interface{}{ updateBundle := map[string]interface{}{
"name": req.Name, "name": req.Name,
"sort": req.Sort, "sort": req.Sort,
@ -242,47 +198,15 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
"img_option": req.ImgOption, "img_option": req.ImgOption,
"bg_img1": req.BgImg1, "bg_img1": req.BgImg1,
"bg_img2": req.BgImg2, "bg_img2": req.BgImg2,
"font_color": req.FontColor,
} }
if err = dao.TxUpdateBundle(tx, req.Uuid, updateBundle); err != nil { if err = dao.TxUpdateBundle(tx, req.Uuid, updateBundle); err != nil {
return res, err return res, errors.New("更新套餐信息失败")
} }
//更新中间表函数 //更新中间表函数
if err = diffUpdateBundleToValueAddService(tx, req.Uuid, selectService); err != nil { if err = diffUpdateBundleToValueAddService(tx, req.Uuid, selectService); err != nil {
tx.Rollback() tx.Rollback()
return res, err return res, errors.New("更新套餐与增值服务关联失败")
}
} else {
//更新其他语言时 先获取所有关联增值服务,判断币种是否一致,不一致则取消关联
valueAddService, err := dao.GetBundleToValueAddServiceByBundleUuid(req.Uuid)
if err != nil {
return res, err
}
cancelValueService := make(map[string]string)
for _, v := range valueAddService {
detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueUid, req.Language)
if checkErr != nil {
if checkErr == gorm.ErrRecordNotFound {
continue
} else {
return res, checkErr
}
}
if detail.PriceType != req.PriceType {
cancelValueService[v.ValueUid] = detail.ServiceName
continue
}
}
if int64(len(cancelValueService)) > 0 {
cancel := "以下增值服务:"
for k, v := range cancelValueService {
cancel += fmt.Sprintf("[%s]%s", v, req.Language)
if err = tx.Where("bundle_uuid = ? AND value_uid = ?", req.Uuid, k).Delete(&model.BundleToValueAddService{}).Error; err != nil {
return res, errors.New("删除套餐与增值服务关联失败: " + err.Error())
}
}
cancel += "版币种与套餐币种不一致,已取消相关关联"
res.Msg = "保存成功 " + cancel
res.CancelNum = int64(len(cancelValueService))
} }
} }
updateBundleLang := map[string]interface{}{ updateBundleLang := map[string]interface{}{
@ -292,21 +216,21 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
"price_type": req.PriceType, "price_type": req.PriceType,
} }
if err = dao.TxUpdateBundleLang(tx, req.Uuid, req.Language, updateBundleLang); err != nil { if err = dao.TxUpdateBundleLang(tx, req.Uuid, req.Language, updateBundleLang); err != nil {
return res, err return res, errors.New("更新套餐信息失败")
} }
res.Uuid = req.Uuid res.Uuid = req.Uuid
if res.Msg == "" {
res.Msg = "保存成功" res.Msg = "保存成功"
} }
}
return res, nil return res, nil
} }
func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) { func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
res = new(bundle.BundleListResponse) res = new(bundle.BundleListResponse)
res, err = dao.BundleListV2(req) res, err = dao.BundleListV2(req)
return if err != nil {
return res, errors.New("获取套餐列表失败")
}
return res, nil
} }
func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) { func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) {
res = new(bundle.BundleDetailResponseV2) res = new(bundle.BundleDetailResponseV2)
@ -314,14 +238,11 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailRe
bundleProfileLangs := make([]*bundle.BundleProfileLang, 0) bundleProfileLangs := make([]*bundle.BundleProfileLang, 0)
selectValueAddServices := make([]*bundle.SelectValueAddService, 0) //已选增值服务 selectValueAddServices := make([]*bundle.SelectValueAddService, 0) //已选增值服务
if req.Uuid == "" { if req.Uuid == "" {
return res, errors.New("uuid不能为空") return res, errors.New("缺少套餐UUID")
} }
// if req.Language == "" {
// return res, errors.New("language不能为空")
// }
detail, err := dao.BundleDetailV2(req) detail, err := dao.BundleDetailV2(req)
if err != nil { if err != nil {
res.Msg = err.Error() return res, errors.New("获取套餐信息失败")
} }
if detail != nil { if detail != nil {
bundleProfile.Uuid = detail.UUID bundleProfile.Uuid = detail.UUID
@ -332,21 +253,28 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailRe
bundleProfile.ImgOption = int32(detail.ImgOption) bundleProfile.ImgOption = int32(detail.ImgOption)
bundleProfile.BgImg1 = detail.BgImg1 bundleProfile.BgImg1 = detail.BgImg1
bundleProfile.BgImg2 = detail.BgImg2 bundleProfile.BgImg2 = detail.BgImg2
bundleProfile.FontColor = detail.FontColor
bundleProfile.Sort = detail.Sort bundleProfile.Sort = detail.Sort
bundleProfile.ShelfStatus = detail.ShelfStatus bundleProfile.ShelfStatus = detail.ShelfStatus
bundleProfile.CreatedAt = detail.CreatedAt.Format("2006-01-02 15:04:05") bundleProfile.CreatedAt = detail.CreatedAt.Format("2006-01-02 15:04:05")
bundleProfile.UpdatedAt = detail.UpdatedAt.Format("2006-01-02 15:04:05") bundleProfile.UpdatedAt = detail.UpdatedAt.Format("2006-01-02 15:04:05")
bundleProfile.Contract = detail.Contract bundleProfile.Contract = detail.Contract
if detail.BundleToValueAddService != nil && len(detail.BundleToValueAddService) > 0 { if len(detail.BundleToValueAddService) > 0 {
for _, valueAddService := range detail.BundleToValueAddService { for _, valueAddService := range detail.BundleToValueAddService {
valueAddDetail, err := dao.ValueAddServiceDetailByUuidAndLanguage(valueAddService.ValueUid, req.Language)
if err != nil {
return res, errors.New("查询增值服务失败")
}
selectValueAddService := &bundle.SelectValueAddService{ selectValueAddService := &bundle.SelectValueAddService{
ValueAddUuid: valueAddService.ValueUid, ValueAddUuid: valueAddService.ValueUid,
IsDisplay: valueAddService.IsDisplay, IsDisplay: valueAddService.IsDisplay,
ServiceName: valueAddDetail.ServiceName,
ServiceType: valueAddDetail.ServiceType,
} }
selectValueAddServices = append(selectValueAddServices, selectValueAddService) selectValueAddServices = append(selectValueAddServices, selectValueAddService)
} }
} }
if detail.BundleProfileLang != nil && len(detail.BundleProfileLang) > 0 { if len(detail.BundleProfileLang) > 0 {
for _, lang := range detail.BundleProfileLang { for _, lang := range detail.BundleProfileLang {
bundleProfileLang := &bundle.BundleProfileLang{ bundleProfileLang := &bundle.BundleProfileLang{
Uuid: lang.UUID, Uuid: lang.UUID,
@ -355,65 +283,141 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailRe
PriceType: lang.PriceType, PriceType: lang.PriceType,
Content: lang.Content, Content: lang.Content,
Language: lang.Language, Language: lang.Language,
ImgOption: int32(detail.ImgOption),
BgImg1: detail.BgImg1,
BgImg2: detail.BgImg2,
FontColor: detail.FontColor,
Sort: detail.Sort,
ShelfStatus: detail.ShelfStatus,
CreatedAt: time.Unix(lang.CreatedAt, 0).Format("2006-01-02 15:04:05"), CreatedAt: time.Unix(lang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
UpdatedAt: time.Unix(int64(lang.UpdatedAt), 0).Format("2006-01-02 15:04:05"), UpdatedAt: time.Unix(int64(lang.UpdatedAt), 0).Format("2006-01-02 15:04:05"),
} }
// 通过中间表拼接增值服务数据
// if detail.BundleToValueAddService != nil && len(detail.BundleToValueAddService) > 0 {
// for _, valueAddService := range detail.BundleToValueAddService {
// valueAddDeatilData, err := dao.ValueAddServiceDetailByUuidAndLanguage(valueAddService.ValueUid, bundleProfileLang.Language)
// if err != nil {
// return res, err
// }
//if valueAddService.IsDisplay{}
// ValueAddServiceLang := &bundle.ValueAddServiceLang{
// Uuid: valueAddDeatilData.UUID,
// ServiceName: valueAddDeatilData.ServiceName,
// ServiceType: int32(valueAddDeatilData.ServiceType),
// PriceMode: int32(valueAddDeatilData.PriceMode),
// PriceType: int64(valueAddDeatilData.PriceType),
// OriginalPrice: fmt.Sprintf("%.2f", float32(valueAddDeatilData.OriginalPrice)),
// Unit: string(valueAddDeatilData.Unit),
// Language: valueAddDeatilData.Language,
// CreatedAt: time.Unix(valueAddDeatilData.CreatedAt, 0).Format("2006-01-02 15:04:05"),
// UpdatedAt: time.Unix(valueAddDeatilData.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
// }
//bundleProfileLang.ValueAddServiceLang = append(bundleProfileLang.ValueAddServiceLang, ValueAddServiceLang)
// selectValueAddService = append(selectValueAddService, &bundle.SelectValueAddService{
// ValueAddUuid: valueAddService.ValueUid,
// ServiceName: valueAddDeatilData.ServiceName,
// IsDisplay: valueAddService.IsDisplay,
// })
// }
// }
bundleProfileLangs = append(bundleProfileLangs, bundleProfileLang) bundleProfileLangs = append(bundleProfileLangs, bundleProfileLang)
} }
} }
} }
if selectValueAddServices != nil && len(selectValueAddServices) > 0 { if len(selectValueAddServices) > 0 {
bundleProfile.SelectValueAddService = selectValueAddServices bundleProfile.SelectValueAddService = selectValueAddServices
} }
bundleProfile.BundleProfileLang = bundleProfileLangs bundleProfile.BundleProfileLang = bundleProfileLangs
res.Bundle = bundleProfile res.Bundle = bundleProfile
return return
} }
func HandleShelf(req *bundle.HandShelfRequest) (res *bundle.CommonResponse, err error) { func BundleLangDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleProfileLang, err error) {
res = new(bundle.CommonResponse) res = new(bundle.BundleProfileLang)
if req.Uuid == "" { if req.Uuid == "" {
return res, errors.New("uuid不能为空") return res, errors.New("缺少套餐UUID")
}
if req.Language == "" {
return res, errors.New("language不能为空")
}
detail, err := dao.BundleDetailV2(req)
if err != nil {
return res, errors.New("获取套餐信息失败")
}
lang, err := dao.BundleDetailByUuidAndLanguage(req.Uuid, req.Language)
if err != nil {
return res, errors.New("获取套餐信息失败")
}
if detail != nil {
res.Uuid = detail.UUID
res.ImgOption = int32(detail.ImgOption)
res.BgImg1 = detail.BgImg1
res.BgImg2 = detail.BgImg2
res.FontColor = detail.FontColor
res.Sort = detail.Sort
res.ShelfStatus = detail.ShelfStatus
res.Contract = detail.Contract
}
if lang != nil {
res.Name = lang.Name
res.Price = lang.Price
res.PriceType = lang.PriceType
res.Content = lang.Content
res.Language = lang.Language
res.CreatedAt = time.Unix(lang.CreatedAt, 0).Format("2006-01-02 15:04:05")
res.UpdatedAt = time.Unix(int64(lang.UpdatedAt), 0).Format("2006-01-02 15:04:05")
}
return
}
func HandleShelf(req *bundle.HandShelfRequest) (*bundle.CommonResponse, error) {
res := new(bundle.CommonResponse)
if req.Uuid == "" {
return res, errors.New("缺少套餐UUID")
} }
if req.ShelfStatus != 1 && req.ShelfStatus != 2 { if req.ShelfStatus != 1 && req.ShelfStatus != 2 {
return res, errors.New("Invalid shelf status") return res, errors.New("状态值无效")
}
detail, err := dao.GetBundleDetailByUuid(req.Uuid)
if err != nil {
return res, errors.New("获取套餐信息失败")
}
if detail.ShelfStatus == req.ShelfStatus {
switch detail.ShelfStatus {
case 1:
return res, errors.New("套餐已上架,请勿重复操作")
case 2:
return res, errors.New("套餐已下架,请勿重复操作")
}
}
bundleDetailLangs, err := dao.GetBundleLangsByUuid(req.Uuid)
if err != nil {
return res, errors.New("获取套餐信息失败")
}
var langToPriceType = make(map[string]int64)
for _, bundleLang := range bundleDetailLangs {
langToPriceType[bundleLang.Language] = bundleLang.PriceType
}
tx := app.ModuleClients.BundleDB.Begin()
defer func() {
if err != nil {
tx.Rollback()
} else {
tx.Commit()
}
}()
if req.ShelfStatus == 1 {
valueAddUuids, err := dao.GetValueAddServiceUuidsByBundleUuid(req.Uuid)
if err != nil {
return res, errors.New("查询增值服务失败")
}
//判断时长类型是否存在
isExist := false
for _, valueUid := range valueAddUuids {
detail, err := dao.ValueAddServiceDetail(valueUid)
if err != nil {
return res, errors.New("查询增值服务失败")
}
if detail.ServiceType == 5 {
isExist = true
break
}
}
if !isExist {
return res, errors.New("缺失可用时长服务类型")
}
//校验币种
valueAddServices, er := dao.BatchValueAddServiceDetailTx(tx, valueAddUuids)
if er != nil {
return res, errors.New("查询增值服务详情失败")
}
for _, valueAddService := range valueAddServices {
if len(valueAddService.ValueAddServiceLang) > 0 {
for _, lang := range valueAddService.ValueAddServiceLang {
if langToPriceType[lang.Language] != lang.PriceType {
return res, errors.New("所选增值服务币种与套餐币种不一致")
}
}
}
}
} }
res, err = dao.HandShelf(req.Uuid, req.ShelfStatus) res, err = dao.HandShelf(req.Uuid, req.ShelfStatus)
if err != nil { if err != nil {
res.Msg = err.Error() return res, errors.New("更新套餐状态失败")
return res, err
} }
res.Msg = "更新成功"
res.Msg = "Operation success"
return res, nil return res, nil
} }
@ -421,7 +425,7 @@ func HandleShelf(req *bundle.HandShelfRequest) (res *bundle.CommonResponse, err
func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectService []*model.BundleToValueAddService) error { func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectService []*model.BundleToValueAddService) error {
oldUuids, err := dao.GetValueAddServiceUuidsByBundleUuid(bundleUuid) oldUuids, err := dao.GetValueAddServiceUuidsByBundleUuid(bundleUuid)
if err != nil { if err != nil {
return errors.New("查询套餐与增值服务关联失败: " + err.Error()) return errors.New("查询套餐与增值服务关联失败")
} }
newUuids := make(map[string]*model.BundleToValueAddService) newUuids := make(map[string]*model.BundleToValueAddService)
for _, s := range selectService { for _, s := range selectService {
@ -433,14 +437,18 @@ func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectSer
} }
// 需要新增的 // 需要新增的
toAdd := make([]*model.BundleToValueAddService, 0) toAdd := make([]*model.BundleToValueAddService, 0)
toDel := make([]string, 0)
toUpdate := make([]*model.BundleToValueAddService, 0)
for uid, s := range newUuids { for uid, s := range newUuids {
if _, exist := oldSet[uid]; !exist { if _, exist := oldSet[uid]; !exist {
s.BundleUuid = bundleUuid s.BundleUuid = bundleUuid
toAdd = append(toAdd, s) toAdd = append(toAdd, s)
} else {
s.BundleUuid = bundleUuid
toUpdate = append(toUpdate, s)
} }
} }
// 需要删除的 // 需要删除的
toDel := make([]string, 0)
for _, uid := range oldUuids { for _, uid := range oldUuids {
if _, exist := newUuids[uid]; !exist { if _, exist := newUuids[uid]; !exist {
toDel = append(toDel, uid) toDel = append(toDel, uid)
@ -448,12 +456,23 @@ func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectSer
} }
if len(toDel) > 0 { if len(toDel) > 0 {
if err = tx.Where("bundle_uuid = ? AND value_uid IN ?", bundleUuid, toDel).Delete(&model.BundleToValueAddService{}).Error; err != nil { if err = tx.Where("bundle_uuid = ? AND value_uid IN ?", bundleUuid, toDel).Delete(&model.BundleToValueAddService{}).Error; err != nil {
return errors.New("删除套餐与增值服务关联失败: " + err.Error()) return errors.New("删除套餐与增值服务关联失败")
} }
} }
if len(toAdd) > 0 { if len(toAdd) > 0 {
if err = dao.CreateBundleToValueAddService(tx, toAdd); err != nil { if err = dao.CreateBundleToValueAddService(tx, toAdd); err != nil {
return errors.New("保存套餐与增值服务关联失败: " + err.Error()) return errors.New("保存套餐与增值服务关联失败")
}
}
if len(toUpdate) > 0 {
updates := make(map[string]interface{})
var uids []string
for _, record := range toUpdate {
uids = append(uids, record.ValueUid)
updates["is_display"] = record.IsDisplay
}
if err = dao.UpdateBundleToValueAddService(tx, toUpdate); err != nil {
return errors.New("保存套餐与增值服务关联失败")
} }
} }
return nil return nil
@ -462,27 +481,27 @@ func saveBundleHistory(tx *gorm.DB, bundleUuid string, operator string, operator
// 保存历史记录 // 保存历史记录
data, err := dao.GetBundleDetailByUuid(bundleUuid) data, err := dao.GetBundleDetailByUuid(bundleUuid)
if err != nil { if err != nil {
return errors.New("查询套餐详情失败: " + err.Error()) return errors.New("获取套餐信息失败")
} }
bundleToValueAddService := data.BundleToValueAddService bundleToValueAddService := data.BundleToValueAddService
data.BundleToValueAddService = nil data.BundleToValueAddService = nil
var valueUuid []string var valueUuid []string
if bundleToValueAddService != nil && len(bundleToValueAddService) > 0 { if len(bundleToValueAddService) > 0 {
for _, v := range bundleToValueAddService { for _, v := range bundleToValueAddService {
valueUuid = append(valueUuid, v.ValueUid) valueUuid = append(valueUuid, v.ValueUid)
} }
} }
valueData, err := dao.BatchValueAddServiceDetailTx(tx, valueUuid) valueData, err := dao.BatchValueAddServiceDetailTx(tx, valueUuid)
if err != nil { if err != nil {
return errors.New("查询增值服务详情失败: " + err.Error()) return errors.New("查询增值服务详情失败")
} }
j, err := json.Marshal(data) j, err := json.Marshal(data)
if err != nil { if err != nil {
return errors.New("套餐json转换失败: " + err.Error()) return errors.New("序列化转换失败")
} }
vJ, err := json.Marshal(valueData) vJ, err := json.Marshal(valueData)
if err != nil { if err != nil {
return errors.New("增值服务json转换失败: " + err.Error()) return errors.New("序列化转换失败")
} }
history := &model.BundleProfileHistory{ history := &model.BundleProfileHistory{
Uuid: bundleUuid, Uuid: bundleUuid,
@ -492,7 +511,17 @@ func saveBundleHistory(tx *gorm.DB, bundleUuid string, operator string, operator
OperatorId: operatorId, OperatorId: operatorId,
} }
if err := tx.Create(history).Error; err != nil { if err := tx.Create(history).Error; err != nil {
return errors.New("保存套餐历史记录失败: " + err.Error()) return errors.New("保存套餐历史记录失败")
} }
return nil return nil
} }
// 增加h5套餐列表
func BundleListH5V2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse, err error) {
res = new(bundle.BundleListResponse)
res, err = dao.BundleListH5V2(req)
if err != nil {
return res, errors.New("获取套餐列表失败")
}
return res, nil
}

View File

@ -126,3 +126,38 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
res, err = dao.OrderRecordsListV2(req) res, err = dao.OrderRecordsListV2(req)
return return
} }
func OrderListByOrderNo(req *bundle.OrderInfoByOrderNoRequest) (res *bundle.OrderInfoByOrderNoResp, err error) {
res = new(bundle.OrderInfoByOrderNoResp)
res, err = dao.OrderListByOrderNo(req)
return
}
func GetReconciliationList(req *bundle.GetReconciliationListReq) (res *bundle.GetReconciliationListResp, err error) {
res = new(bundle.GetReconciliationListResp)
res, err = dao.GetReconciliationList(req)
return
}
func CreateReconciliation(req *bundle.ReconciliationInfo) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
res, err = dao.CreateReconciliation(req)
return
}
func UpdateReconciliation(req *bundle.ReconciliationInfo) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
res, err = dao.UpdateReconciliation(req)
return
}
func OnlyAddValueListByOrderNo(req *bundle.OnlyAddValueListByOrderNoRequest) (res *bundle.OnlyAddValueListByOrderNoResp, err error) {
res = new(bundle.OnlyAddValueListByOrderNoResp)
res, err = dao.OnlyAddValueListByOrderNo(req)
return
}
func UpdateReconciliationStatusBySerialNumber(req *bundle.UpdateStatusAndPayTimeBySerialNumber) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
res, err = dao.UpdateReconciliationStatusBySerialNumber(req)
return
}
func DeleteValueAddService(req *bundle.DeleteValueAddServiceRequest) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
res, err = dao.DeleteValueAddService(req)
return
}

View File

@ -147,14 +147,31 @@ func ValueAddBundleDetail(req *bundle.ValueAddBundleDetailRequest) (res *bundle.
func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveResponse, err error) { func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveResponse, err error) {
res = &bundle.SaveResponse{} res = &bundle.SaveResponse{}
if in.Language == "" { if in.Language == "" {
return res, errors.New("语言参数不能为空") return res, errors.New("语言不能为空")
} }
var options model.PriceOptions var options model.PriceOptions
var originalPrice float64
if in.PriceMode == 1 {
if in.OriginalPrice == "" {
return res, errors.New("原价不能为空")
}
originalPrice, err = strconv.ParseFloat(in.OriginalPrice, 32)
if err != nil {
return res, errors.New("原价格式转换失败")
}
}
index := 1 index := 1
for _, option := range in.Options { for _, option := range in.Options {
price, parseErr := strconv.ParseFloat(option.Price, 32) price, parseErr1 := strconv.ParseFloat(option.Price, 32)
if parseErr != nil { if parseErr1 != nil {
return res, parseErr fmt.Println("优惠单价转换失败: ", parseErr1)
return res, errors.New("优惠单价转换失败")
}
if option.Num < 0 || option.Num > 99 {
return res, errors.New("数量参数需为0-99")
}
if in.PriceMode == 1 && price > originalPrice {
return res, errors.New("优惠单价需小于等于原价")
} }
options = append(options, &model.PriceOption{ options = append(options, &model.PriceOption{
Id: int32(index), Id: int32(index),
@ -172,10 +189,6 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
ServiceName: in.ServiceName, ServiceName: in.ServiceName,
ServiceType: in.ServiceType, ServiceType: in.ServiceType,
} }
originalPrice, err := strconv.ParseFloat(in.OriginalPrice, 32)
if err != nil {
return res, err
}
valueAddServiceLang := &model.ValueAddServiceLang{ valueAddServiceLang := &model.ValueAddServiceLang{
ServiceName: in.ServiceName, ServiceName: in.ServiceName,
ServiceType: in.ServiceType, ServiceType: in.ServiceType,
@ -187,7 +200,7 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
Options: options, Options: options,
} }
if in.Uuid == "" && in.Language != msg.ZH_CN { if in.Uuid == "" && in.Language != msg.ZH_CN {
return res, errors.New("请先新增简体中文套餐,再添加其他语言版本") return res, errors.New("请先创建中文版本增值服务")
} }
tx := app.ModuleClients.BundleDB.Begin() tx := app.ModuleClients.BundleDB.Begin()
defer func() { defer func() {
@ -205,7 +218,7 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
_, err = dao.ValueAddServiceDetailByUuidAndLanguage(in.Uuid, msg.ZH_CN) _, err = dao.ValueAddServiceDetailByUuidAndLanguage(in.Uuid, msg.ZH_CN)
if err != nil { if err != nil {
if err != gorm.ErrRecordNotFound { if err != gorm.ErrRecordNotFound {
return res, errors.New("请先创建中文套餐") return res, errors.New("请先创建中文版本增值服务")
} else { } else {
// // 新语言补充只要UUID存在即可直接插入新语言 // // 新语言补充只要UUID存在即可直接插入新语言
// if in.Uuid != "" { // if in.Uuid != "" {
@ -225,15 +238,15 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
valueAddService.UUID = utils.GetUUID() valueAddService.UUID = utils.GetUUID()
err = dao.CreateValueAddService(tx, valueAddService) err = dao.CreateValueAddService(tx, valueAddService)
if err != nil { if err != nil {
return res, errors.New("保存中文语言套餐失败: " + err.Error()) return res, errors.New("保存增值服务失败")
} }
valueAddServiceLang.UUID = valueAddService.UUID valueAddServiceLang.UUID = valueAddService.UUID
res.Uuid = valueAddService.UUID res.Uuid = valueAddService.UUID
if err = dao.CreateValueAddServiceLang(tx, valueAddServiceLang); err != nil { if err = dao.CreateValueAddServiceLang(tx, valueAddServiceLang); err != nil {
return res, errors.New("保存语言套餐失败: " + err.Error()) return res, errors.New("保存增值服务失败")
} }
} }
langList := []string{msg.ZH_TW, msg.EN, msg.DE_DE, msg.JS_JP} langList := []string{msg.ZH_TW, msg.EN, msg.DE_DE, msg.JA_JP}
for _, lang := range langList { for _, lang := range langList {
otherLang := model.ValueAddServiceLang{ otherLang := model.ValueAddServiceLang{
UUID: valueAddServiceLang.UUID, UUID: valueAddServiceLang.UUID,
@ -249,18 +262,18 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
} }
otherLang.Language = lang otherLang.Language = lang
if err = dao.CreateValueAddServiceLang(tx, &otherLang); err != nil { if err = dao.CreateValueAddServiceLang(tx, &otherLang); err != nil {
return res, errors.New(fmt.Sprintf("保存%s语言套餐失败: ", lang) + err.Error()) return res, errors.New("保存增值服务失败")
} }
} }
res.Msg = "保存成功" res.Msg = "新增增值服务成功"
return return
} else { } else {
return return
} }
} else { } else {
// 已存在,进行更新 // 已存在,进行更新
if err := saveValueAddServiceHistory(tx, in.Uuid); err != nil { if err = saveValueAddServiceHistory(tx, in.Uuid); err != nil {
return res, err return res, errors.New("保存增值服务历史记录失败")
} }
//中文状态下,更新主表和语言表 //中文状态下,更新主表和语言表
if in.Language == msg.ZH_CN { if in.Language == msg.ZH_CN {
@ -270,17 +283,7 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
"service_type": in.ServiceType, "service_type": in.ServiceType,
} }
if err = dao.UpdateValueAddService(tx, updateService); err != nil { if err = dao.UpdateValueAddService(tx, updateService); err != nil {
return res, err return res, errors.New("更新增值服务失败")
}
}
// 查找所有与该增值服务关联的套餐,若币种不一致则取消关联并统计
var cancelNum int64 = 0
bundleToValueAddList, _ := dao.GetBundleToValueAddServiceByValueUid(in.Uuid)
for _, rel := range bundleToValueAddList {
bundleProfile, _ := dao.BundleDetailByUuidAndLanguage(rel.BundleUuid, in.Language)
if bundleProfile != nil && bundleProfile.PriceType != in.PriceType {
dao.DeleteBundleToValueAddService(tx, rel.BundleUuid, in.Uuid)
cancelNum++
} }
} }
//更新语言表 //更新语言表
@ -296,11 +299,26 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
"language": in.Language, "language": in.Language,
} }
if err := dao.UpdateValueAddServiceLang(tx, updateLangService); err != nil { if err := dao.UpdateValueAddServiceLang(tx, updateLangService); err != nil {
return res, err return res, errors.New("更新增值服务失败")
}
data, err := dao.GetBundleToValueAddServiceByValueUid(in.Uuid)
if err != nil {
return res, errors.New("获取套餐信息失败")
}
bundleUuids := []string{}
if len(data) > 0 {
for _, bundle := range data {
bundleUuids = append(bundleUuids, bundle.BundleUuid)
}
}
columns := map[string]interface{}{
"updated_at": time.Now(),
}
if err = dao.TxUpdateBundles(tx, bundleUuids, columns); err != nil {
return res, errors.New("更新套餐信息失败")
} }
res.Uuid = in.Uuid res.Uuid = in.Uuid
res.Msg = "保存成功" res.Msg = "保存成功"
res.CancelNum = cancelNum
} }
return return
} }
@ -310,8 +328,7 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.Va
res = &bundle.ValueAddServiceListResponse{} res = &bundle.ValueAddServiceListResponse{}
list, total, err := dao.ValueAddServiceList(req) list, total, err := dao.ValueAddServiceList(req)
if err != nil { if err != nil {
res.Msg = msg.ErrorValueAddServiceList return res, errors.New("查询增值服务列表失败")
return res, err
} }
for _, valueAddService := range list { for _, valueAddService := range list {
serviceInfo := &bundle.ValueAddService{ serviceInfo := &bundle.ValueAddService{
@ -332,19 +349,22 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.Va
CreatedAt: time.Unix(serviceLang.CreatedAt, 0).Format("2006-01-02 15:04:05"), CreatedAt: time.Unix(serviceLang.CreatedAt, 0).Format("2006-01-02 15:04:05"),
UpdatedAt: time.Unix(serviceLang.UpdatedAt, 0).Format("2006-01-02 15:04:05"), UpdatedAt: time.Unix(serviceLang.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
} }
if serviceLang.Options != nil && len(serviceLang.Options) > 0 { if len(serviceLang.Options) > 0 {
var options []*bundle.ValueAddPriceOptions var options []*bundle.ValueAddPriceOptions
for _, option := range serviceLang.Options { for _, option := range serviceLang.Options {
var saveAmount decimal.Decimal var saveAmount decimal.Decimal
if serviceLang.PriceMode == 1 { switch serviceLang.PriceMode {
case 1:
original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice)) original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice))
price := decimal.NewFromFloat(float64(option.Price)) price := decimal.NewFromFloat(float64(option.Price))
num := decimal.NewFromInt(int64(option.Num)) num := decimal.NewFromInt(int64(option.Num))
saveAmount = original.Sub(price).Mul(num) saveAmount = original.Sub(price).Mul(num)
} else if serviceLang.PriceMode == 2 { case 2:
original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice)) //original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice))
price := decimal.NewFromFloat(float64(option.Price)) //price := decimal.NewFromFloat(float64(option.Price))
saveAmount = original.Sub(price) saveAmount = decimal.NewFromInt(int64(0))
default:
return nil, errors.New("无效的价格模式")
} }
options = append(options, &bundle.ValueAddPriceOptions{ options = append(options, &bundle.ValueAddPriceOptions{
Id: int64(option.Id), Id: int64(option.Id),
@ -361,7 +381,6 @@ func ValueAddServiceList(req *bundle.ValueAddServiceListRequest) (res *bundle.Va
res.ValueAddServiceList = append(res.ValueAddServiceList, serviceInfo) res.ValueAddServiceList = append(res.ValueAddServiceList, serviceInfo)
} }
res.Total = int32(total) res.Total = int32(total)
res.Msg = msg.SuccessValueAddServiceList
return return
} }
@ -373,7 +392,7 @@ func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundl
serviceLangs := []*bundle.ValueAddServiceLang{} serviceLangs := []*bundle.ValueAddServiceLang{}
if req.Uuid == "" { if req.Uuid == "" {
res.Msg = msg.ErrorValueAddServiceInfo res.Msg = msg.ErrorValueAddServiceInfo
return res, errors.New("uuid不能为空") return res, errors.New("缺少套餐UUID")
} }
// if req.Language == "" { // if req.Language == "" {
// res.Msg = msg.ErrorValueAddServiceInfo // res.Msg = msg.ErrorValueAddServiceInfo
@ -381,8 +400,7 @@ func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundl
// } // }
detail, err := dao.ValueAddServiceDetail(req.Uuid) detail, err := dao.ValueAddServiceDetail(req.Uuid)
if err != nil { if err != nil {
res.Msg = msg.ErrorValueAddServiceInfo return res, errors.New("查询增值服务详情失败")
return res, err
} }
if detail != nil && len(detail.ValueAddServiceLang) > 0 { if detail != nil && len(detail.ValueAddServiceLang) > 0 {
valueAddService.Uuid = detail.UUID valueAddService.Uuid = detail.UUID
@ -390,18 +408,21 @@ func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundl
valueAddService.ServiceType = detail.ServiceType valueAddService.ServiceType = detail.ServiceType
for _, serviceLang := range detail.ValueAddServiceLang { for _, serviceLang := range detail.ValueAddServiceLang {
langOptions := []*bundle.ValueAddPriceOptions{} langOptions := []*bundle.ValueAddPriceOptions{}
if serviceLang.Options != nil && len(serviceLang.Options) > 0 { if len(serviceLang.Options) > 0 {
for _, opt := range serviceLang.Options { for _, opt := range serviceLang.Options {
var saveAmount decimal.Decimal var saveAmount decimal.Decimal
if serviceLang.PriceMode == 1 { switch serviceLang.PriceMode {
case 1:
original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice)) original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice))
price := decimal.NewFromFloat(float64(opt.Price)) price := decimal.NewFromFloat(float64(opt.Price))
num := decimal.NewFromInt(int64(opt.Num)) num := decimal.NewFromInt(int64(opt.Num))
saveAmount = original.Sub(price).Mul(num) saveAmount = original.Sub(price).Mul(num)
} else if serviceLang.PriceMode == 2 { case 2:
original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice)) //original := decimal.NewFromFloat(float64(serviceLang.OriginalPrice))
price := decimal.NewFromFloat(float64(opt.Price)) //price := decimal.NewFromFloat(float64(opt.Price))
saveAmount = original.Sub(price) saveAmount = decimal.NewFromInt(int64(0))
default:
return nil, errors.New("无效的价格模式")
} }
langOptions = append(langOptions, &bundle.ValueAddPriceOptions{ langOptions = append(langOptions, &bundle.ValueAddPriceOptions{
Id: int64(opt.Id), Id: int64(opt.Id),
@ -429,9 +450,7 @@ func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundl
} }
} }
valueAddService.ServiceLang = serviceLangs valueAddService.ServiceLang = serviceLangs
res.ValueAddService = valueAddService res.ValueAddService = valueAddService
res.Msg = msg.SuccessValueAddServiceInfo
return return
} }
@ -439,11 +458,11 @@ func saveValueAddServiceHistory(tx *gorm.DB, uuid string) (err error) {
// 保存历史记录 // 保存历史记录
data, err := dao.GetValueAddServiceDetailByUuid(tx, uuid) data, err := dao.GetValueAddServiceDetailByUuid(tx, uuid)
if err != nil { if err != nil {
return errors.New("查询增值服务详情失败: " + err.Error()) return errors.New("查询增值服务详情失败")
} }
j, err := json.Marshal(data) j, err := json.Marshal(data)
if err != nil { if err != nil {
return errors.New("json转换失败: " + err.Error()) return errors.New("序列化转换失败")
} }
history := &model.ValueAddServiceHistory{ history := &model.ValueAddServiceHistory{
Uuid: uuid, Uuid: uuid,
@ -452,33 +471,48 @@ func saveValueAddServiceHistory(tx *gorm.DB, uuid string) (err error) {
//OperatorId: operatorId, //OperatorId: operatorId,
} }
if err := tx.Create(history).Error; err != nil { if err := tx.Create(history).Error; err != nil {
return errors.New("保存增值服务历史记录失败: " + err.Error()) return errors.New("保存增值服务历史记录失败")
} }
return nil return nil
} }
func ValueAddServiceDetailByUuidAndLanguage(req *bundle.ValueAddServiceDetailRequest) (res *bundle.ValueAddServiceLang, err error) { func ValueAddServiceDetailByUuidAndLanguage(req *bundle.ValueAddServiceDetailRequest) (res *bundle.ValueAddServiceLang, err error) {
res = &bundle.ValueAddServiceLang{} res = &bundle.ValueAddServiceLang{}
if req.Uuid == "" { if req.Uuid == "" {
return res, errors.New("uuid不能为空") return res, errors.New("缺少套餐UUID")
} }
if req.Language == "" { if req.Language == "" {
return res, errors.New("语言选项不能为空") return res, errors.New("语言不能为空")
} }
detail, err := dao.ValueAddServiceDetailByUuidAndLanguage(req.Uuid, req.Language) detail, err := dao.ValueAddServiceDetailByUuidAndLanguage(req.Uuid, req.Language)
if err != nil { if err != nil {
return res, err return res, errors.New("查询增值服务详情失败")
} }
if detail == nil { if detail == nil {
return res, errors.New("增值服务不存在") return res, errors.New("增值服务不存在")
} }
langOptions := []*bundle.ValueAddPriceOptions{} langOptions := []*bundle.ValueAddPriceOptions{}
if detail.Options != nil && len(detail.Options) > 0 { if len(detail.Options) > 0 {
for _, opt := range detail.Options { for _, opt := range detail.Options {
var saveAmount decimal.Decimal
switch detail.PriceMode {
case 1:
original := decimal.NewFromFloat(float64(detail.OriginalPrice))
price := decimal.NewFromFloat(float64(opt.Price))
num := decimal.NewFromInt(int64(opt.Num))
saveAmount = original.Sub(price).Mul(num)
case 2:
//original := decimal.NewFromFloat(float64(detail.OriginalPrice))
//price := decimal.NewFromFloat(float64(opt.Price))
saveAmount = decimal.NewFromInt(int64(0))
default:
return nil, errors.New("无效的价格模式")
}
langOptions = append(langOptions, &bundle.ValueAddPriceOptions{ langOptions = append(langOptions, &bundle.ValueAddPriceOptions{
Id: int64(opt.Id), Id: int64(opt.Id),
Num: opt.Num, Num: opt.Num,
Symbol: opt.Symbol, Symbol: opt.Symbol,
Price: fmt.Sprintf("%.2f", opt.Price), Price: fmt.Sprintf("%.2f", opt.Price),
SaveAmount: saveAmount.StringFixed(2),
}) })
} }
} }
@ -492,20 +526,22 @@ func ValueAddServiceDetailByUuidAndLanguage(req *bundle.ValueAddServiceDetailReq
Unit: detail.Unit, Unit: detail.Unit,
PriceType: int64(detail.PriceType), PriceType: int64(detail.PriceType),
Options: langOptions, Options: langOptions,
CreatedAt: time.Unix(detail.CreatedAt, 0).Format("2006-01-02 15:04:05"),
UpdatedAt: time.Unix(detail.UpdatedAt, 0).Format("2006-01-02 15:04:05"),
} }
return return
} }
func CalculatePrice(req *bundle.CalculatePriceRequest) (res *bundle.CalculatePriceResponse, err error) { func CalculatePrice(req *bundle.CalculatePriceRequest) (res *bundle.CalculatePriceResponse, err error) {
res = &bundle.CalculatePriceResponse{} res = &bundle.CalculatePriceResponse{}
if req.Uuid == "" { if req.Uuid == "" {
return res, errors.New("uuid不能为空") return res, errors.New("缺少套餐UUID")
} }
if req.Language == "" { if req.Language == "" {
return res, errors.New("语言选项不能为空") return res, errors.New("语言不能为空")
} }
detail, err := dao.ValueAddServiceDetailByUuidAndLanguage(req.Uuid, req.Language) detail, err := dao.ValueAddServiceDetailByUuidAndLanguage(req.Uuid, req.Language)
if err != nil { if err != nil {
return res, err return res, errors.New("查询增值服务详情失败")
} }
if detail == nil { if detail == nil {
return res, errors.New("增值服务不存在") return res, errors.New("增值服务不存在")
@ -523,8 +559,61 @@ func CalculatePrice(req *bundle.CalculatePriceRequest) (res *bundle.CalculatePri
// } // }
price, err := detail.Options.CalculatePrice(detail.PriceMode, req.Num) price, err := detail.Options.CalculatePrice(detail.PriceMode, req.Num)
if err != nil { if err != nil {
return res, err return res, errors.New("计算价格失败")
} }
res.Price = price res.Price = price
return return
} }
func BatchGetValueAddServiceLang(req *bundle.BatchGetValueAddServiceLangRequest) (res *bundle.BatchGetValueAddServiceLangResponse, err error) {
res = &bundle.BatchGetValueAddServiceLangResponse{}
if len(req.Uuids) == 0 {
return res, errors.New("缺少套餐UUID")
}
if req.Language == "" {
return res, errors.New("语言不能为空")
}
detail, err := dao.BatchGetValueAddServiceLang(req.Uuids, req.Language)
if err != nil {
return res, errors.New("查询增值服务详情失败")
}
for _, v := range detail {
langOptions := []*bundle.ValueAddPriceOptions{}
if len(v.Options) > 0 {
for _, opt := range v.Options {
var saveAmount decimal.Decimal
switch v.PriceMode {
case 1:
original := decimal.NewFromFloat(float64(v.OriginalPrice))
price := decimal.NewFromFloat(float64(opt.Price))
num := decimal.NewFromInt(int64(opt.Num))
saveAmount = original.Sub(price).Mul(num)
case 2:
//original := decimal.NewFromFloat(float64(v.OriginalPrice))
//price := decimal.NewFromFloat(float64(opt.Price))
saveAmount = decimal.NewFromInt(int64(0))
default:
return nil, errors.New("无效的价格模式")
}
langOptions = append(langOptions, &bundle.ValueAddPriceOptions{
Id: int64(opt.Id),
Num: opt.Num,
Symbol: opt.Symbol,
Price: fmt.Sprintf("%.2f", opt.Price),
SaveAmount: saveAmount.StringFixed(2),
})
}
}
res.ValueAddServiceLangList = append(res.ValueAddServiceLangList, &bundle.ValueAddServiceLang{
Uuid: v.UUID,
ServiceName: v.ServiceName,
ServiceType: v.ServiceType,
Language: v.Language,
PriceMode: v.PriceMode,
OriginalPrice: fmt.Sprintf("%.2f", v.OriginalPrice),
Unit: v.Unit,
PriceType: int64(v.PriceType),
Options: langOptions,
})
}
return
}

View File

@ -23,7 +23,8 @@ type BundleProfile struct {
Sort int64 `json:"sort" gorm:"column:sort;type:int;comment:套餐排序"` //数字越小越靠前,同大小后创建优先 Sort int64 `json:"sort" gorm:"column:sort;type:int;comment:套餐排序"` //数字越小越靠前,同大小后创建优先
ShelfStatus int64 `json:"shelfStatus" gorm:"column:shelf_status;type:int;default:2;comment:上架状态 1:上架 2:下架"` ShelfStatus int64 `json:"shelfStatus" gorm:"column:shelf_status;type:int;default:2;comment:上架状态 1:上架 2:下架"`
ImgOption int8 `json:"imgOption" gorm:"column:img_option;type:int;default:1;comment:图片选择 1:背景图1 2 3"` ImgOption int8 `json:"imgOption" gorm:"column:img_option;type:int;default:0;comment:图片选择 1:背景图1 2 3"`
FontColor string `json:"fontColor" gorm:"column:font_color;type:varchar(32);comment:字体颜色"`
BgImg1 string `json:"bgImg1" gorm:"column:bg_img1;type:varchar(1024);comment:背景图-首页"` BgImg1 string `json:"bgImg1" gorm:"column:bg_img1;type:varchar(1024);comment:背景图-首页"`
BgImg2 string `json:"bgImg2" gorm:"column:bg_img2;type:varchar(1024);comment:背景图-我的"` BgImg2 string `json:"bgImg2" gorm:"column:bg_img2;type:varchar(1024);comment:背景图-我的"`
BundleToValueAddService []BundleToValueAddService `gorm:"foreignKey:BundleUuid;references:UUID" json:"bundleToValueAddService"` BundleToValueAddService []BundleToValueAddService `gorm:"foreignKey:BundleUuid;references:UUID" json:"bundleToValueAddService"`
@ -36,7 +37,7 @@ type BundleProfileLang struct {
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"` Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐类型 1:人民币 2:美元"` PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐类型 1:人民币 2:美元"`
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"` Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE js-JP(中繁英德日)"` Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE ja-JP(中繁英德日)"`
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"` CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"` UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
DeletedAt soft_delete.DeletedAt DeletedAt soft_delete.DeletedAt

View File

@ -63,6 +63,8 @@ type BundleOrderValueAdd struct {
Signature string `json:"signature" gorm:"column:signature;type:text;comment:签字"` Signature string `json:"signature" gorm:"column:signature;type:text;comment:签字"`
SignedTime string `json:"signedTime" gorm:"column:signed_time;type:varchar(1024);comment:签约时间(北京时间)"` SignedTime string `json:"signedTime" gorm:"column:signed_time;type:varchar(1024);comment:签约时间(北京时间)"`
Snapshot string `gorm:"column:snapshot;comment:快照" json:"snapshot"` //订单快照 Snapshot string `gorm:"column:snapshot;comment:快照" json:"snapshot"` //订单快照
CheckoutSessionId string `json:"checkoutSessionId" gorm:"column:checkout_session_id;type:varchar(1024);default:null;comment:checkoutSessionId"`
CheckoutSessionUrl string `json:"checkoutSessionUrl" gorm:"column:checkout_session_url;type:varchar(1024);default:null;comment:checkoutSessionUrl"`
} }
// 财务确认状态 // 财务确认状态

View File

@ -13,7 +13,7 @@ type CostLog struct {
WorkCategory uint8 `gorm:"column:work_category;type:tinyint(1);NOT NULL;default:1;comment: 1 图文 2 视频" json:"workCategory"` WorkCategory uint8 `gorm:"column:work_category;type:tinyint(1);NOT NULL;default:1;comment: 1 图文 2 视频" json:"workCategory"`
BundleUuid string `gorm:"column:bundle_uuid;type:varchar(50);NOT NULL;index:idx_bundle_uuid;default:'';comment:套餐ID uuid" json:"bundleUuid"` BundleUuid string `gorm:"column:bundle_uuid;type:varchar(50);NOT NULL;index:idx_bundle_uuid;default:'';comment:套餐ID uuid" json:"bundleUuid"`
BundleName string `gorm:"column:bundle_name;type:varchar(50);NOT NULL;default:'';comment:套餐名称" json:"bundleName"` BundleName string `gorm:"column:bundle_name;type:varchar(50);NOT NULL;default:'';comment:套餐名称" json:"bundleName"`
PlatformIDs string `gorm:"column:platform_ids;type:json;NOT NULL;comment:发布平台ID集合" json:"platformIDs"` PlatformIds string `gorm:"column:platform_ids;type:json;NOT NULL;comment:发布平台ID集合" json:"platformIDs"`
MediaNames string `gorm:"column:media_names;type:varchar(600);NOT NULL;default:'';comment:自媒体账号名称集合" json:"mediaNames"` MediaNames string `gorm:"column:media_names;type:varchar(600);NOT NULL;default:'';comment:自媒体账号名称集合" json:"mediaNames"`
MediaAccIDs string `gorm:"column:media_acc_ids;type:varchar(600);NOT NULL;default:'';comment:自媒体账号ID集合" json:"mediaAccIDs"` MediaAccIDs string `gorm:"column:media_acc_ids;type:varchar(600);NOT NULL;default:'';comment:自媒体账号ID集合" json:"mediaAccIDs"`
WorkTitle string `gorm:"column:work_title;type:varchar(50);NOT NULL;" json:"workTitle"` WorkTitle string `gorm:"column:work_title;type:varchar(50);NOT NULL;" json:"workTitle"`

View File

@ -0,0 +1,20 @@
package model
import "gorm.io/gorm"
type Reconciliation struct {
gorm.Model
BundleOrderOn string `gorm:"column:bundle_order_on;comment:套餐交易编号" json:"bundleOrderOn"`
BundleAddOrderOn string `gorm:"column:bundle_add_order_on;comment:增值套餐交易编号" json:"bundleAddOrderOn"`
UserID uint64 `gorm:"column:user_id;comment:艺人id" json:"userId"`
UserName string `gorm:"column:user_name;comment:艺人" json:"userName"`
UserTel string `gorm:"column:user_tel;comment:艺人手机号" json:"userTel"`
BundleName string `gorm:"column:bundle_name;comment:套餐名称" json:"bundleName"`
PayAmount float32 `gorm:"column:pay_amount;comment:支付金额" json:"payAmount"`
CurrencyType int `gorm:"column:currency_type;comment:币种1:人民币 2美元" json:"currencyType"`
PayChannel int `gorm:"column:pay_channel;comment:支付渠道" json:"payChannel"`
PayTime string `gorm:"column:pay_time;comment:支付渠道" json:"payTime"`
PayStatus int `gorm:"column:pay_status;comment:支付状态" json:"payStatus"`
SerialNumber string `gorm:"column:serial_number;comment:流水号" json:"serialNumber"`
CreationTime string `gorm:"column:creation_time;comment:创建时间" json:"creationTime"`
}

View File

@ -53,7 +53,7 @@ type ValueAddServiceLang struct {
OriginalPrice float32 `json:"originalPrice" gorm:"column:original_price;type:decimal(12,2);comment:原单价"` OriginalPrice float32 `json:"originalPrice" gorm:"column:original_price;type:decimal(12,2);comment:原单价"`
TotalPrice float32 `json:"totalPrice" gorm:"column:total_price;type:decimal(12,2);comment:增值服务总价"` TotalPrice float32 `json:"totalPrice" gorm:"column:total_price;type:decimal(12,2);comment:增值服务总价"`
Unit string `json:"unit" gorm:"column:unit;type:varchar(50);comment:单位 1:个 2:条 3:天 4:月 5:年"` Unit string `json:"unit" gorm:"column:unit;type:varchar(50);comment:单位 1:个 2:条 3:天 4:月 5:年"`
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE js-JP(中繁英德日)"` Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE ja-JP(中繁英德日)"`
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:币种 1:人民币 2:美元 3:日元 4:欧元"` PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:币种 1:人民币 2:美元 3:日元 4:欧元"`
Options PriceOptions `gorm:"column:options;type:json" json:"options"` Options PriceOptions `gorm:"column:options;type:json" json:"options"`
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"` CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
@ -76,7 +76,7 @@ type PriceOptions []*PriceOption
type PriceOption struct { type PriceOption struct {
Id int32 `json:"id"` Id int32 `json:"id"`
Num int32 `json:"num"` Num int32 `json:"num"`
Symbol string `json:"symbol"` // 符号> < = <= => Symbol string `json:"symbol"` // 符号> < = >= <=
Price float32 `json:"price"` // 价格(根据priceMode决定是单价还是总价) Price float32 `json:"price"` // 价格(根据priceMode决定是单价还是总价)
} }
@ -100,7 +100,7 @@ func ValidateOptions(options PriceOptions) (bool, error) {
cover := make(map[int]struct{}) cover := make(map[int]struct{})
for _, opt := range options { for _, opt := range options {
if opt.Num < 0 || opt.Num > 100 { if opt.Num < 0 || opt.Num > 100 {
return false, errors.New("数字范围错误") return false, errors.New("数量参数需为0-99")
} }
if _, ok := symbolSet[opt.Symbol]; !ok { if _, ok := symbolSet[opt.Symbol]; !ok {
@ -130,7 +130,7 @@ func ValidateOptions(options PriceOptions) (bool, error) {
} }
for _, n := range nums { for _, n := range nums {
if _, exist := cover[n]; exist { if _, exist := cover[n]; exist {
return false, errors.New("逻辑存在冲突,请重新设置") return false, errors.New("条件存在冲突,请重新设置")
} }
cover[n] = struct{}{} cover[n] = struct{}{}
@ -166,7 +166,7 @@ func (options PriceOptions) CalculatePrice(priceMode, target int32) (float32, er
} }
if match { if match {
switch priceMode { switch priceMode { //1 单价模式
case 1: case 1:
return float32(target) * opt.Price, nil return float32(target) * opt.Price, nil
case 2: case 2:

View File

@ -17,6 +17,10 @@ service Bundle {
rpc BundleListV2(BundleListRequest) returns(BundleListResponse) {} rpc BundleListV2(BundleListRequest) returns(BundleListResponse) {}
rpc BundleDetailV2(BundleDetailRequest) returns(BundleDetailResponseV2) {} rpc BundleDetailV2(BundleDetailRequest) returns(BundleDetailResponseV2) {}
rpc BundleListH5V2(BundleListRequest) returns(BundleListResponse) {}
rpc BundleLangDetailV2(BundleDetailRequest) returns(BundleProfileLang) {}
rpc BundleList(BundleListRequest) returns (BundleListResponse) {} rpc BundleList(BundleListRequest) returns (BundleListResponse) {}
@ -31,6 +35,8 @@ service Bundle {
rpc CreateOrderAddRecord(OrderAddRecord) returns (CommonResponse) {} rpc CreateOrderAddRecord(OrderAddRecord) returns (CommonResponse) {}
rpc PackagePriceAndTime(OrderRecord) returns (PackagePriceAndTimeResponse) {}// rpc PackagePriceAndTime(OrderRecord) returns (PackagePriceAndTimeResponse) {}//
rpc OrderRecordsListV2(OrderRecordsRequestV2) returns (OrderRecordsResponseV2) {} rpc OrderRecordsListV2(OrderRecordsRequestV2) returns (OrderRecordsResponseV2) {}
rpc OrderListByOrderNo(OrderInfoByOrderNoRequest) returns (OrderInfoByOrderNoResp) {}
rpc OnlyAddValueListByOrderNo(OnlyAddValueListByOrderNoRequest) returns (OnlyAddValueListByOrderNoResp) {} // orderNo只查增值服务
// //
rpc CreateValueAddBundle(CreateValueAddBundleRequest) returns (CreateValueAddBundleResponse) {} rpc CreateValueAddBundle(CreateValueAddBundleRequest) returns (CreateValueAddBundleResponse) {}
@ -43,7 +49,8 @@ service Bundle {
rpc ValueAddServiceDetail(ValueAddServiceDetailRequest) returns (ValueAddServiceDetailResponse) {} rpc ValueAddServiceDetail(ValueAddServiceDetailRequest) returns (ValueAddServiceDetailResponse) {}
rpc ValueAddServiceLangByUuidAndLanguage(ValueAddServiceDetailRequest)returns (ValueAddServiceLang) {} rpc ValueAddServiceLangByUuidAndLanguage(ValueAddServiceDetailRequest)returns (ValueAddServiceLang) {}
rpc CalculatePrice(CalculatePriceRequest) returns (CalculatePriceResponse) {} rpc CalculatePrice(CalculatePriceRequest) returns (CalculatePriceResponse) {}
rpc BatchGetValueAddServiceLang(BatchGetValueAddServiceLangRequest) returns (BatchGetValueAddServiceLangResponse) {}
rpc DeleteValueAddService(DeleteValueAddServiceRequest) returns (CommonResponse) {}
// //
@ -52,7 +59,7 @@ service Bundle {
rpc GetBundleBalanceList(GetBundleBalanceListReq) returns (GetBundleBalanceListResp) {} // rpc GetBundleBalanceList(GetBundleBalanceListReq) returns (GetBundleBalanceListResp) {} //
rpc GetBundleBalanceByUserId(GetBundleBalanceByUserIdReq) returns (GetBundleBalanceByUserIdResp) {} // rpc GetBundleBalanceByUserId(GetBundleBalanceByUserIdReq) returns (GetBundleBalanceByUserIdResp) {} //
rpc CreateBundleBalance(CreateBundleBalanceReq) returns (CreateBundleBalanceResp) {} // rpc CreateBundleBalance(CreateBundleBalanceReq) returns (CreateBundleBalanceResp) {} //
rpc AddBundleBalance(AddBundleBalanceReq) returns (AddBundleBalanceResp) {} // rpc AddBundleBalance(AddBundleBalanceReq) returns (AddBundleBalanceResp) {} //
// 使 // 使
rpc GetUsedRecordList(GetUsedRecordListReq) returns (GetUsedRecordListResp) {} // 使 rpc GetUsedRecordList(GetUsedRecordListReq) returns (GetUsedRecordListResp) {} // 使
@ -62,9 +69,69 @@ service Bundle {
rpc ToBeComfirmedWorks(ToBeComfirmedWorksReq) returns (ToBeComfirmedWorksResp) {} // rpc ToBeComfirmedWorks(ToBeComfirmedWorksReq) returns (ToBeComfirmedWorksResp) {} //
rpc ConfirmWork(ConfirmWorkReq) returns (ConfirmWorkResp) {} // rpc ConfirmWork(ConfirmWorkReq) returns (ConfirmWorkResp) {} //
// //
rpc GetReconciliationList(GetReconciliationListReq) returns (GetReconciliationListResp) {} //
rpc CreateReconciliation(ReconciliationInfo) returns (CommonResponse) {} //
rpc UpdateReconciliation(ReconciliationInfo) returns (CommonResponse) {} //
rpc UpdateReconciliationStatusBySerialNumber(UpdateStatusAndPayTimeBySerialNumber) returns (CommonResponse) {} //
}
message DeleteValueAddServiceRequest{
string orderNo = 1;
uint64 userID = 2;
}
message GetReconciliationListReq{
string userName = 1;
string bundleName = 2;
int32 payStatus = 3;
int32 payChannel = 4;
string bundleOrderOn = 5;
string createdStart = 6;
string createdEnd = 7;
string payTimeStart = 8;
string payTimeEnd = 9;
string serialNumber = 10;
int32 page = 11;
int32 pageSize = 12;
repeated uint64 userIDS = 13;
string bundleAddOrderOn = 14;
}
message GetReconciliationListResp{
repeated ReconciliationInfo list = 1;
int64 total = 2;
int32 page = 3;
int32 pageSize = 4;
}
message ReconciliationInfo{
uint64 ID = 1;
string bundleOrderOn = 2;
string bundleAddOrderOn = 3;
string CreationTime = 4;
string userName = 5;
string userTel = 6;
string bundleName = 7;
float payAmount = 8;
int32 currencyType = 9;
int32 payChannel = 10;
string payTime = 11;
int32 payStatus = 12;
string serialNumber = 13;
uint64 userID = 14;
}
message OrderInfoByOrderNoRequest{
string orderNo = 1;
}
message OrderInfoByOrderNoResp{
int32 type = 1;
uint64 userId = 2;
string orderUUID = 3;
int32 accountNumber = 4;
int32 videoNumber = 5;
int32 imageNumber = 6;
int32 dataNumber = 7;
int32 duration = 8;
string unit = 9;
string userName = 10;
} }
message OrderCreateRecord{ message OrderCreateRecord{
string bundleUuid = 1 [json_name = "bundleUuid"]; string bundleUuid = 1 [json_name = "bundleUuid"];
@ -142,6 +209,8 @@ message OrderAddBundleRecordInfo{
int32 addPayStatus = 8; int32 addPayStatus = 8;
string contract = 9; string contract = 9;
string snapshot = 10; string snapshot = 10;
string CheckoutSessionId = 11;
string CustomerID = 12;
} }
message PackagePriceAndTimeResponse{ message PackagePriceAndTimeResponse{
float price = 1 [json_name = "price"]; float price = 1 [json_name = "price"];
@ -174,6 +243,7 @@ message BundleProfile {
repeated SelectValueAddService selectValueAddService = 17 [json_name = "SelectValueAddService"]; repeated SelectValueAddService selectValueAddService = 17 [json_name = "SelectValueAddService"];
repeated BundleProfileLang bundleProfileLang = 18 [json_name = "bundleProfileLang"]; repeated BundleProfileLang bundleProfileLang = 18 [json_name = "bundleProfileLang"];
int32 imgOption = 19 [json_name = "imgOption"]; int32 imgOption = 19 [json_name = "imgOption"];
string fontColor = 20 [json_name = "fontColor"];
} }
message BundleProfileLang { message BundleProfileLang {
string uuid = 1 [json_name = "uuid"]; string uuid = 1 [json_name = "uuid"];
@ -184,9 +254,15 @@ message BundleProfileLang {
string language = 6 [json_name = "language"]; string language = 6 [json_name = "language"];
string createdAt = 7 [json_name = "createdAt"]; string createdAt = 7 [json_name = "createdAt"];
string updatedAt = 8 [json_name = "updatedAt"]; string updatedAt = 8 [json_name = "updatedAt"];
//string bgImg1 = 9 [json_name = "bgImg1"]; string contract = 9 [json_name = "contract"];
//string bgImg2 = 10 [json_name = "bgImg2"]; string companySign = 10 [json_name = "companySign"];
// int64 sort = 11 [json_name = "sort"]; int64 contractDuration = 11 [json_name = "contractDuration"];
string fontColor = 12 [json_name = "fontColor"];
int64 sort = 13 [json_name = "sort"];
string bgImg1 = 14 [json_name = "bgImg1"];
string bgImg2 = 15 [json_name = "bgImg2"];
int64 shelfStatus = 16 [json_name = "shelfStatus"]; // 1 2
int32 imgOption = 17 [json_name = "imgOption"];
//repeated ValueAddServiceLang valueAddServiceLang = 12 [json_name = "ValueAddServiceLang"]; //repeated ValueAddServiceLang valueAddServiceLang = 12 [json_name = "ValueAddServiceLang"];
} }
message SaveResponse { message SaveResponse {
@ -198,6 +274,8 @@ message SelectValueAddService {
string valueAddUuid = 1 [json_name = "valueAddUuid"]; string valueAddUuid = 1 [json_name = "valueAddUuid"];
string serviceName= 2 [json_name = "serviceName"]; string serviceName= 2 [json_name = "serviceName"];
bool isDisplay = 3 [json_name = "isDisplay"]; bool isDisplay = 3 [json_name = "isDisplay"];
int32 serviceType = 4 [json_name = "serviceType"];
} }
message DelBundleRequest { message DelBundleRequest {
string uuid = 1 [json_name = "uuid"]; string uuid = 1 [json_name = "uuid"];
@ -271,7 +349,14 @@ message OrderRecord {
repeated PriceOptionsInfo priceOptionsInfo = 36 [json_name = "priceOptionsInfo"]; repeated PriceOptionsInfo priceOptionsInfo = 36 [json_name = "priceOptionsInfo"];
string expirationTime = 37 [json_name = "expirationTime"]; string expirationTime = 37 [json_name = "expirationTime"];
string snapshot = 38 [json_name = "snapshot"]; string snapshot = 38 [json_name = "snapshot"];
repeated AddInfo addInfos = 39 [json_name = "addInfos"];
} }
message AddInfo{
string orderNo = 1 [json_name = "orderNo"];
int32 num = 2 [json_name = "num"];
string valueAddUUID = 3 [json_name = "valueAddUUID"];
}
message OrderAddRecord{ message OrderAddRecord{
string bundleUuid = 1 [json_name = "bundleUuid"]; string bundleUuid = 1 [json_name = "bundleUuid"];
repeated AddPriceOptionsInfo addPriceOptionsList = 2 [json_name = "addPriceOptionsList"]; repeated AddPriceOptionsInfo addPriceOptionsList = 2 [json_name = "addPriceOptionsList"];
@ -331,6 +416,7 @@ message OrderRecordsDetailRequest {
string orderNo = 2 [json_name = "orderNo"]; string orderNo = 2 [json_name = "orderNo"];
string customerID = 3 [json_name = "customerID"]; string customerID = 3 [json_name = "customerID"];
string bundleUUID = 4 [json_name = "bundleUUID"]; string bundleUUID = 4 [json_name = "bundleUUID"];
uint64 status = 5 [json_name = "status"];
} }
message OrderRecordsDetailResponse { message OrderRecordsDetailResponse {
@ -457,6 +543,14 @@ message CalculatePriceResponse{
string msg = 1; string msg = 1;
float price = 2; float price = 2;
} }
message BatchGetValueAddServiceLangRequest{
repeated string uuids = 1;
string language = 2;
}
message BatchGetValueAddServiceLangResponse{
string msg = 1;
repeated ValueAddServiceLang valueAddServiceLangList = 2;
}
//*********************************-over****************************************** //*********************************-over******************************************
message BundleExtendRequest{ message BundleExtendRequest{
@ -705,6 +799,28 @@ message GetBundleBalanceByUserIdResp{
int32 expansionPacksNumber = 21; int32 expansionPacksNumber = 21;
} }
message OnlyAddValueListByOrderNoRequest{
string orderNo = 1;
}
message OnlyAddValueListByOrderNoResp{
repeated AddBundleInfo AddBundleInfos = 1;
}
message AddBundleInfo {
string customerID = 1;
float amount = 2;
string checkOutSessionId = 3;
string orderNo = 4;
int32 paymentStatus = 5;
}
message UpdateStatusAndPayTimeBySerialNumber {
string serialNumber = 1;
string payTime = 2;
int32 paymentStatus = 3;
}
message ConfirmWorkReq{ message ConfirmWorkReq{
string workUuid = 1; string workUuid = 1;
} }

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@ import (
fmt "fmt" fmt "fmt"
math "math" math "math"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
_ "google.golang.org/protobuf/types/descriptorpb"
_ "github.com/mwitkow/go-proto-validators" _ "github.com/mwitkow/go-proto-validators"
_ "google.golang.org/protobuf/types/descriptorpb"
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
) )
@ -17,6 +17,31 @@ var _ = proto.Marshal
var _ = fmt.Errorf var _ = fmt.Errorf
var _ = math.Inf var _ = math.Inf
func (this *DeleteValueAddServiceRequest) Validate() error {
return nil
}
func (this *GetReconciliationListReq) Validate() error {
return nil
}
func (this *GetReconciliationListResp) Validate() error {
for _, item := range this.List {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("List", err)
}
}
}
return nil
}
func (this *ReconciliationInfo) Validate() error {
return nil
}
func (this *OrderInfoByOrderNoRequest) Validate() error {
return nil
}
func (this *OrderInfoByOrderNoResp) Validate() error {
return nil
}
func (this *OrderCreateRecord) Validate() error { func (this *OrderCreateRecord) Validate() error {
for _, item := range this.AddRecords { for _, item := range this.AddRecords {
if item != nil { if item != nil {
@ -134,6 +159,16 @@ func (this *OrderRecord) Validate() error {
} }
} }
} }
for _, item := range this.AddInfos {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("AddInfos", err)
}
}
}
return nil
}
func (this *AddInfo) Validate() error {
return nil return nil
} }
func (this *OrderAddRecord) Validate() error { func (this *OrderAddRecord) Validate() error {
@ -271,6 +306,19 @@ func (this *CalculatePriceRequest) Validate() error {
func (this *CalculatePriceResponse) Validate() error { func (this *CalculatePriceResponse) Validate() error {
return nil return nil
} }
func (this *BatchGetValueAddServiceLangRequest) Validate() error {
return nil
}
func (this *BatchGetValueAddServiceLangResponse) Validate() error {
for _, item := range this.ValueAddServiceLangList {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("ValueAddServiceLangList", err)
}
}
}
return nil
}
func (this *BundleExtendRequest) Validate() error { func (this *BundleExtendRequest) Validate() error {
return nil return nil
} }
@ -374,6 +422,25 @@ func (this *GetBundleBalanceByUserIdReq) Validate() error {
func (this *GetBundleBalanceByUserIdResp) Validate() error { func (this *GetBundleBalanceByUserIdResp) Validate() error {
return nil return nil
} }
func (this *OnlyAddValueListByOrderNoRequest) Validate() error {
return nil
}
func (this *OnlyAddValueListByOrderNoResp) Validate() error {
for _, item := range this.AddBundleInfos {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("AddBundleInfos", err)
}
}
}
return nil
}
func (this *AddBundleInfo) Validate() error {
return nil
}
func (this *UpdateStatusAndPayTimeBySerialNumber) Validate() error {
return nil
}
func (this *ConfirmWorkReq) Validate() error { func (this *ConfirmWorkReq) Validate() error {
return nil return nil
} }

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-triple. DO NOT EDIT. // Code generated by protoc-gen-go-triple. DO NOT EDIT.
// versions: // versions:
// - protoc-gen-go-triple v1.0.8 // - protoc-gen-go-triple v1.0.8
// - protoc v3.20.3 // - protoc v4.24.0--rc1
// source: pb/bundle.proto // source: pb/bundle.proto
package bundle package bundle
@ -35,6 +35,8 @@ type BundleClient interface {
SaveBundle(ctx context.Context, in *BundleProfile, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment) SaveBundle(ctx context.Context, in *BundleProfile, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment)
BundleListV2(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) BundleListV2(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment)
BundleDetailV2(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponseV2, common.ErrorWithAttachment) BundleDetailV2(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponseV2, common.ErrorWithAttachment)
BundleListH5V2(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment)
BundleLangDetailV2(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleProfileLang, common.ErrorWithAttachment)
BundleList(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) BundleList(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment)
BundleDetail(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponse, common.ErrorWithAttachment) BundleDetail(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleDetailResponse, common.ErrorWithAttachment)
CreateOrderRecord(ctx context.Context, in *OrderCreateRecord, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) CreateOrderRecord(ctx context.Context, in *OrderCreateRecord, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
@ -46,6 +48,8 @@ type BundleClient interface {
CreateOrderAddRecord(ctx context.Context, in *OrderAddRecord, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) CreateOrderAddRecord(ctx context.Context, in *OrderAddRecord, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
PackagePriceAndTime(ctx context.Context, in *OrderRecord, opts ...grpc_go.CallOption) (*PackagePriceAndTimeResponse, common.ErrorWithAttachment) PackagePriceAndTime(ctx context.Context, in *OrderRecord, opts ...grpc_go.CallOption) (*PackagePriceAndTimeResponse, common.ErrorWithAttachment)
OrderRecordsListV2(ctx context.Context, in *OrderRecordsRequestV2, opts ...grpc_go.CallOption) (*OrderRecordsResponseV2, common.ErrorWithAttachment) OrderRecordsListV2(ctx context.Context, in *OrderRecordsRequestV2, opts ...grpc_go.CallOption) (*OrderRecordsResponseV2, common.ErrorWithAttachment)
OrderListByOrderNo(ctx context.Context, in *OrderInfoByOrderNoRequest, opts ...grpc_go.CallOption) (*OrderInfoByOrderNoResp, common.ErrorWithAttachment)
OnlyAddValueListByOrderNo(ctx context.Context, in *OnlyAddValueListByOrderNoRequest, opts ...grpc_go.CallOption) (*OnlyAddValueListByOrderNoResp, common.ErrorWithAttachment)
//增值套餐 //增值套餐
CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment)
ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment) ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment)
@ -56,6 +60,8 @@ type BundleClient interface {
ValueAddServiceDetail(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceDetailResponse, common.ErrorWithAttachment) ValueAddServiceDetail(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceDetailResponse, common.ErrorWithAttachment)
ValueAddServiceLangByUuidAndLanguage(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceLang, common.ErrorWithAttachment) ValueAddServiceLangByUuidAndLanguage(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceLang, common.ErrorWithAttachment)
CalculatePrice(ctx context.Context, in *CalculatePriceRequest, opts ...grpc_go.CallOption) (*CalculatePriceResponse, common.ErrorWithAttachment) CalculatePrice(ctx context.Context, in *CalculatePriceRequest, opts ...grpc_go.CallOption) (*CalculatePriceResponse, common.ErrorWithAttachment)
BatchGetValueAddServiceLang(ctx context.Context, in *BatchGetValueAddServiceLangRequest, opts ...grpc_go.CallOption) (*BatchGetValueAddServiceLangResponse, common.ErrorWithAttachment)
DeleteValueAddService(ctx context.Context, in *DeleteValueAddServiceRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
// 余量管理 // 余量管理
BundleExtend(ctx context.Context, in *BundleExtendRequest, opts ...grpc_go.CallOption) (*BundleExtendResponse, common.ErrorWithAttachment) BundleExtend(ctx context.Context, in *BundleExtendRequest, opts ...grpc_go.CallOption) (*BundleExtendResponse, common.ErrorWithAttachment)
BundleExtendRecordsList(ctx context.Context, in *BundleExtendRecordsListRequest, opts ...grpc_go.CallOption) (*BundleExtendRecordsListResponse, common.ErrorWithAttachment) BundleExtendRecordsList(ctx context.Context, in *BundleExtendRecordsListRequest, opts ...grpc_go.CallOption) (*BundleExtendRecordsListResponse, common.ErrorWithAttachment)
@ -69,6 +75,11 @@ type BundleClient interface {
GetVedioWorkDetail(ctx context.Context, in *GetVedioWorkDetailReq, opts ...grpc_go.CallOption) (*GetVedioeWorkDetailResp, common.ErrorWithAttachment) GetVedioWorkDetail(ctx context.Context, in *GetVedioWorkDetailReq, opts ...grpc_go.CallOption) (*GetVedioeWorkDetailResp, common.ErrorWithAttachment)
ToBeComfirmedWorks(ctx context.Context, in *ToBeComfirmedWorksReq, opts ...grpc_go.CallOption) (*ToBeComfirmedWorksResp, common.ErrorWithAttachment) ToBeComfirmedWorks(ctx context.Context, in *ToBeComfirmedWorksReq, opts ...grpc_go.CallOption) (*ToBeComfirmedWorksResp, common.ErrorWithAttachment)
ConfirmWork(ctx context.Context, in *ConfirmWorkReq, opts ...grpc_go.CallOption) (*ConfirmWorkResp, common.ErrorWithAttachment) ConfirmWork(ctx context.Context, in *ConfirmWorkReq, opts ...grpc_go.CallOption) (*ConfirmWorkResp, common.ErrorWithAttachment)
//对账单
GetReconciliationList(ctx context.Context, in *GetReconciliationListReq, opts ...grpc_go.CallOption) (*GetReconciliationListResp, common.ErrorWithAttachment)
CreateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
UpdateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
UpdateReconciliationStatusBySerialNumber(ctx context.Context, in *UpdateStatusAndPayTimeBySerialNumber, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
} }
type bundleClient struct { type bundleClient struct {
@ -83,6 +94,8 @@ type BundleClientImpl struct {
SaveBundle func(ctx context.Context, in *BundleProfile) (*SaveResponse, error) SaveBundle func(ctx context.Context, in *BundleProfile) (*SaveResponse, error)
BundleListV2 func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error) BundleListV2 func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error)
BundleDetailV2 func(ctx context.Context, in *BundleDetailRequest) (*BundleDetailResponseV2, error) BundleDetailV2 func(ctx context.Context, in *BundleDetailRequest) (*BundleDetailResponseV2, error)
BundleListH5V2 func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error)
BundleLangDetailV2 func(ctx context.Context, in *BundleDetailRequest) (*BundleProfileLang, error)
BundleList func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error) BundleList func(ctx context.Context, in *BundleListRequest) (*BundleListResponse, error)
BundleDetail func(ctx context.Context, in *BundleDetailRequest) (*BundleDetailResponse, error) BundleDetail func(ctx context.Context, in *BundleDetailRequest) (*BundleDetailResponse, error)
CreateOrderRecord func(ctx context.Context, in *OrderCreateRecord) (*CommonResponse, error) CreateOrderRecord func(ctx context.Context, in *OrderCreateRecord) (*CommonResponse, error)
@ -94,6 +107,8 @@ type BundleClientImpl struct {
CreateOrderAddRecord func(ctx context.Context, in *OrderAddRecord) (*CommonResponse, error) CreateOrderAddRecord func(ctx context.Context, in *OrderAddRecord) (*CommonResponse, error)
PackagePriceAndTime func(ctx context.Context, in *OrderRecord) (*PackagePriceAndTimeResponse, error) PackagePriceAndTime func(ctx context.Context, in *OrderRecord) (*PackagePriceAndTimeResponse, error)
OrderRecordsListV2 func(ctx context.Context, in *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) OrderRecordsListV2 func(ctx context.Context, in *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error)
OrderListByOrderNo func(ctx context.Context, in *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error)
OnlyAddValueListByOrderNo func(ctx context.Context, in *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error)
CreateValueAddBundle func(ctx context.Context, in *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) CreateValueAddBundle func(ctx context.Context, in *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error)
ValueAddBundleList func(ctx context.Context, in *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) ValueAddBundleList func(ctx context.Context, in *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error)
ValueAddBundleDetail func(ctx context.Context, in *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) ValueAddBundleDetail func(ctx context.Context, in *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error)
@ -102,6 +117,8 @@ type BundleClientImpl struct {
ValueAddServiceDetail func(ctx context.Context, in *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error) ValueAddServiceDetail func(ctx context.Context, in *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error)
ValueAddServiceLangByUuidAndLanguage func(ctx context.Context, in *ValueAddServiceDetailRequest) (*ValueAddServiceLang, error) ValueAddServiceLangByUuidAndLanguage func(ctx context.Context, in *ValueAddServiceDetailRequest) (*ValueAddServiceLang, error)
CalculatePrice func(ctx context.Context, in *CalculatePriceRequest) (*CalculatePriceResponse, error) CalculatePrice func(ctx context.Context, in *CalculatePriceRequest) (*CalculatePriceResponse, error)
BatchGetValueAddServiceLang func(ctx context.Context, in *BatchGetValueAddServiceLangRequest) (*BatchGetValueAddServiceLangResponse, error)
DeleteValueAddService func(ctx context.Context, in *DeleteValueAddServiceRequest) (*CommonResponse, error)
BundleExtend func(ctx context.Context, in *BundleExtendRequest) (*BundleExtendResponse, error) BundleExtend func(ctx context.Context, in *BundleExtendRequest) (*BundleExtendResponse, error)
BundleExtendRecordsList func(ctx context.Context, in *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error) BundleExtendRecordsList func(ctx context.Context, in *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error)
GetBundleBalanceList func(ctx context.Context, in *GetBundleBalanceListReq) (*GetBundleBalanceListResp, error) GetBundleBalanceList func(ctx context.Context, in *GetBundleBalanceListReq) (*GetBundleBalanceListResp, error)
@ -113,6 +130,10 @@ type BundleClientImpl struct {
GetVedioWorkDetail func(ctx context.Context, in *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error) GetVedioWorkDetail func(ctx context.Context, in *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error)
ToBeComfirmedWorks func(ctx context.Context, in *ToBeComfirmedWorksReq) (*ToBeComfirmedWorksResp, error) ToBeComfirmedWorks func(ctx context.Context, in *ToBeComfirmedWorksReq) (*ToBeComfirmedWorksResp, error)
ConfirmWork func(ctx context.Context, in *ConfirmWorkReq) (*ConfirmWorkResp, error) ConfirmWork func(ctx context.Context, in *ConfirmWorkReq) (*ConfirmWorkResp, error)
GetReconciliationList func(ctx context.Context, in *GetReconciliationListReq) (*GetReconciliationListResp, error)
CreateReconciliation func(ctx context.Context, in *ReconciliationInfo) (*CommonResponse, error)
UpdateReconciliation func(ctx context.Context, in *ReconciliationInfo) (*CommonResponse, error)
UpdateReconciliationStatusBySerialNumber func(ctx context.Context, in *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error)
} }
func (c *BundleClientImpl) GetDubboStub(cc *triple.TripleConn) BundleClient { func (c *BundleClientImpl) GetDubboStub(cc *triple.TripleConn) BundleClient {
@ -169,6 +190,18 @@ func (c *bundleClient) BundleDetailV2(ctx context.Context, in *BundleDetailReque
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleDetailV2", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleDetailV2", in, out)
} }
func (c *bundleClient) BundleListH5V2(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) {
out := new(BundleListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleListH5V2", in, out)
}
func (c *bundleClient) BundleLangDetailV2(ctx context.Context, in *BundleDetailRequest, opts ...grpc_go.CallOption) (*BundleProfileLang, common.ErrorWithAttachment) {
out := new(BundleProfileLang)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleLangDetailV2", in, out)
}
func (c *bundleClient) BundleList(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) { func (c *bundleClient) BundleList(ctx context.Context, in *BundleListRequest, opts ...grpc_go.CallOption) (*BundleListResponse, common.ErrorWithAttachment) {
out := new(BundleListResponse) out := new(BundleListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -235,6 +268,18 @@ func (c *bundleClient) OrderRecordsListV2(ctx context.Context, in *OrderRecordsR
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OrderRecordsListV2", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OrderRecordsListV2", in, out)
} }
func (c *bundleClient) OrderListByOrderNo(ctx context.Context, in *OrderInfoByOrderNoRequest, opts ...grpc_go.CallOption) (*OrderInfoByOrderNoResp, common.ErrorWithAttachment) {
out := new(OrderInfoByOrderNoResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OrderListByOrderNo", in, out)
}
func (c *bundleClient) OnlyAddValueListByOrderNo(ctx context.Context, in *OnlyAddValueListByOrderNoRequest, opts ...grpc_go.CallOption) (*OnlyAddValueListByOrderNoResp, common.ErrorWithAttachment) {
out := new(OnlyAddValueListByOrderNoResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OnlyAddValueListByOrderNo", in, out)
}
func (c *bundleClient) CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) { func (c *bundleClient) CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) {
out := new(CreateValueAddBundleResponse) out := new(CreateValueAddBundleResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -283,6 +328,18 @@ func (c *bundleClient) CalculatePrice(ctx context.Context, in *CalculatePriceReq
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CalculatePrice", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CalculatePrice", in, out)
} }
func (c *bundleClient) BatchGetValueAddServiceLang(ctx context.Context, in *BatchGetValueAddServiceLangRequest, opts ...grpc_go.CallOption) (*BatchGetValueAddServiceLangResponse, common.ErrorWithAttachment) {
out := new(BatchGetValueAddServiceLangResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BatchGetValueAddServiceLang", in, out)
}
func (c *bundleClient) DeleteValueAddService(ctx context.Context, in *DeleteValueAddServiceRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
out := new(CommonResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteValueAddService", in, out)
}
func (c *bundleClient) BundleExtend(ctx context.Context, in *BundleExtendRequest, opts ...grpc_go.CallOption) (*BundleExtendResponse, common.ErrorWithAttachment) { func (c *bundleClient) BundleExtend(ctx context.Context, in *BundleExtendRequest, opts ...grpc_go.CallOption) (*BundleExtendResponse, common.ErrorWithAttachment) {
out := new(BundleExtendResponse) out := new(BundleExtendResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -349,6 +406,30 @@ func (c *bundleClient) ConfirmWork(ctx context.Context, in *ConfirmWorkReq, opts
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ConfirmWork", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ConfirmWork", in, out)
} }
func (c *bundleClient) GetReconciliationList(ctx context.Context, in *GetReconciliationListReq, opts ...grpc_go.CallOption) (*GetReconciliationListResp, common.ErrorWithAttachment) {
out := new(GetReconciliationListResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetReconciliationList", in, out)
}
func (c *bundleClient) CreateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
out := new(CommonResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateReconciliation", in, out)
}
func (c *bundleClient) UpdateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
out := new(CommonResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateReconciliation", in, out)
}
func (c *bundleClient) UpdateReconciliationStatusBySerialNumber(ctx context.Context, in *UpdateStatusAndPayTimeBySerialNumber, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
out := new(CommonResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateReconciliationStatusBySerialNumber", in, out)
}
// BundleServer is the server API for Bundle service. // BundleServer is the server API for Bundle service.
// All implementations must embed UnimplementedBundleServer // All implementations must embed UnimplementedBundleServer
// for forward compatibility // for forward compatibility
@ -360,6 +441,8 @@ type BundleServer interface {
SaveBundle(context.Context, *BundleProfile) (*SaveResponse, error) SaveBundle(context.Context, *BundleProfile) (*SaveResponse, error)
BundleListV2(context.Context, *BundleListRequest) (*BundleListResponse, error) BundleListV2(context.Context, *BundleListRequest) (*BundleListResponse, error)
BundleDetailV2(context.Context, *BundleDetailRequest) (*BundleDetailResponseV2, error) BundleDetailV2(context.Context, *BundleDetailRequest) (*BundleDetailResponseV2, error)
BundleListH5V2(context.Context, *BundleListRequest) (*BundleListResponse, error)
BundleLangDetailV2(context.Context, *BundleDetailRequest) (*BundleProfileLang, error)
BundleList(context.Context, *BundleListRequest) (*BundleListResponse, error) BundleList(context.Context, *BundleListRequest) (*BundleListResponse, error)
BundleDetail(context.Context, *BundleDetailRequest) (*BundleDetailResponse, error) BundleDetail(context.Context, *BundleDetailRequest) (*BundleDetailResponse, error)
CreateOrderRecord(context.Context, *OrderCreateRecord) (*CommonResponse, error) CreateOrderRecord(context.Context, *OrderCreateRecord) (*CommonResponse, error)
@ -371,6 +454,8 @@ type BundleServer interface {
CreateOrderAddRecord(context.Context, *OrderAddRecord) (*CommonResponse, error) CreateOrderAddRecord(context.Context, *OrderAddRecord) (*CommonResponse, error)
PackagePriceAndTime(context.Context, *OrderRecord) (*PackagePriceAndTimeResponse, error) PackagePriceAndTime(context.Context, *OrderRecord) (*PackagePriceAndTimeResponse, error)
OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error)
OrderListByOrderNo(context.Context, *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error)
OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error)
//增值套餐 //增值套餐
CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error)
ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error)
@ -381,6 +466,8 @@ type BundleServer interface {
ValueAddServiceDetail(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error) ValueAddServiceDetail(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error)
ValueAddServiceLangByUuidAndLanguage(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceLang, error) ValueAddServiceLangByUuidAndLanguage(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceLang, error)
CalculatePrice(context.Context, *CalculatePriceRequest) (*CalculatePriceResponse, error) CalculatePrice(context.Context, *CalculatePriceRequest) (*CalculatePriceResponse, error)
BatchGetValueAddServiceLang(context.Context, *BatchGetValueAddServiceLangRequest) (*BatchGetValueAddServiceLangResponse, error)
DeleteValueAddService(context.Context, *DeleteValueAddServiceRequest) (*CommonResponse, error)
// 余量管理 // 余量管理
BundleExtend(context.Context, *BundleExtendRequest) (*BundleExtendResponse, error) BundleExtend(context.Context, *BundleExtendRequest) (*BundleExtendResponse, error)
BundleExtendRecordsList(context.Context, *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error) BundleExtendRecordsList(context.Context, *BundleExtendRecordsListRequest) (*BundleExtendRecordsListResponse, error)
@ -394,6 +481,11 @@ type BundleServer interface {
GetVedioWorkDetail(context.Context, *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error) GetVedioWorkDetail(context.Context, *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error)
ToBeComfirmedWorks(context.Context, *ToBeComfirmedWorksReq) (*ToBeComfirmedWorksResp, error) ToBeComfirmedWorks(context.Context, *ToBeComfirmedWorksReq) (*ToBeComfirmedWorksResp, error)
ConfirmWork(context.Context, *ConfirmWorkReq) (*ConfirmWorkResp, error) ConfirmWork(context.Context, *ConfirmWorkReq) (*ConfirmWorkResp, error)
//对账单
GetReconciliationList(context.Context, *GetReconciliationListReq) (*GetReconciliationListResp, error)
CreateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error)
UpdateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error)
UpdateReconciliationStatusBySerialNumber(context.Context, *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error)
mustEmbedUnimplementedBundleServer() mustEmbedUnimplementedBundleServer()
} }
@ -423,6 +515,12 @@ func (UnimplementedBundleServer) BundleListV2(context.Context, *BundleListReques
func (UnimplementedBundleServer) BundleDetailV2(context.Context, *BundleDetailRequest) (*BundleDetailResponseV2, error) { func (UnimplementedBundleServer) BundleDetailV2(context.Context, *BundleDetailRequest) (*BundleDetailResponseV2, error) {
return nil, status.Errorf(codes.Unimplemented, "method BundleDetailV2 not implemented") return nil, status.Errorf(codes.Unimplemented, "method BundleDetailV2 not implemented")
} }
func (UnimplementedBundleServer) BundleListH5V2(context.Context, *BundleListRequest) (*BundleListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BundleListH5V2 not implemented")
}
func (UnimplementedBundleServer) BundleLangDetailV2(context.Context, *BundleDetailRequest) (*BundleProfileLang, error) {
return nil, status.Errorf(codes.Unimplemented, "method BundleLangDetailV2 not implemented")
}
func (UnimplementedBundleServer) BundleList(context.Context, *BundleListRequest) (*BundleListResponse, error) { func (UnimplementedBundleServer) BundleList(context.Context, *BundleListRequest) (*BundleListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BundleList not implemented") return nil, status.Errorf(codes.Unimplemented, "method BundleList not implemented")
} }
@ -456,6 +554,12 @@ func (UnimplementedBundleServer) PackagePriceAndTime(context.Context, *OrderReco
func (UnimplementedBundleServer) OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) { func (UnimplementedBundleServer) OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) {
return nil, status.Errorf(codes.Unimplemented, "method OrderRecordsListV2 not implemented") return nil, status.Errorf(codes.Unimplemented, "method OrderRecordsListV2 not implemented")
} }
func (UnimplementedBundleServer) OrderListByOrderNo(context.Context, *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method OrderListByOrderNo not implemented")
}
func (UnimplementedBundleServer) OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method OnlyAddValueListByOrderNo not implemented")
}
func (UnimplementedBundleServer) CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) { func (UnimplementedBundleServer) CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateValueAddBundle not implemented") return nil, status.Errorf(codes.Unimplemented, "method CreateValueAddBundle not implemented")
} }
@ -480,6 +584,12 @@ func (UnimplementedBundleServer) ValueAddServiceLangByUuidAndLanguage(context.Co
func (UnimplementedBundleServer) CalculatePrice(context.Context, *CalculatePriceRequest) (*CalculatePriceResponse, error) { func (UnimplementedBundleServer) CalculatePrice(context.Context, *CalculatePriceRequest) (*CalculatePriceResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CalculatePrice not implemented") return nil, status.Errorf(codes.Unimplemented, "method CalculatePrice not implemented")
} }
func (UnimplementedBundleServer) BatchGetValueAddServiceLang(context.Context, *BatchGetValueAddServiceLangRequest) (*BatchGetValueAddServiceLangResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BatchGetValueAddServiceLang not implemented")
}
func (UnimplementedBundleServer) DeleteValueAddService(context.Context, *DeleteValueAddServiceRequest) (*CommonResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteValueAddService not implemented")
}
func (UnimplementedBundleServer) BundleExtend(context.Context, *BundleExtendRequest) (*BundleExtendResponse, error) { func (UnimplementedBundleServer) BundleExtend(context.Context, *BundleExtendRequest) (*BundleExtendResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BundleExtend not implemented") return nil, status.Errorf(codes.Unimplemented, "method BundleExtend not implemented")
} }
@ -513,6 +623,18 @@ func (UnimplementedBundleServer) ToBeComfirmedWorks(context.Context, *ToBeComfir
func (UnimplementedBundleServer) ConfirmWork(context.Context, *ConfirmWorkReq) (*ConfirmWorkResp, error) { func (UnimplementedBundleServer) ConfirmWork(context.Context, *ConfirmWorkReq) (*ConfirmWorkResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method ConfirmWork not implemented") return nil, status.Errorf(codes.Unimplemented, "method ConfirmWork not implemented")
} }
func (UnimplementedBundleServer) GetReconciliationList(context.Context, *GetReconciliationListReq) (*GetReconciliationListResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetReconciliationList not implemented")
}
func (UnimplementedBundleServer) CreateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateReconciliation not implemented")
}
func (UnimplementedBundleServer) UpdateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateReconciliation not implemented")
}
func (UnimplementedBundleServer) UpdateReconciliationStatusBySerialNumber(context.Context, *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateReconciliationStatusBySerialNumber not implemented")
}
func (s *UnimplementedBundleServer) XXX_SetProxyImpl(impl protocol.Invoker) { func (s *UnimplementedBundleServer) XXX_SetProxyImpl(impl protocol.Invoker) {
s.proxyImpl = impl s.proxyImpl = impl
} }
@ -744,6 +866,64 @@ func _Bundle_BundleDetailV2_Handler(srv interface{}, ctx context.Context, dec fu
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_BundleListH5V2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(BundleListRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("BundleListH5V2", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_BundleLangDetailV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(BundleDetailRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("BundleLangDetailV2", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_BundleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _Bundle_BundleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(BundleListRequest) in := new(BundleListRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -1063,6 +1243,64 @@ func _Bundle_OrderRecordsListV2_Handler(srv interface{}, ctx context.Context, de
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_OrderListByOrderNo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(OrderInfoByOrderNoRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("OrderListByOrderNo", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_OnlyAddValueListByOrderNo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(OnlyAddValueListByOrderNoRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("OnlyAddValueListByOrderNo", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_CreateValueAddBundle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _Bundle_CreateValueAddBundle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateValueAddBundleRequest) in := new(CreateValueAddBundleRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -1295,6 +1533,64 @@ func _Bundle_CalculatePrice_Handler(srv interface{}, ctx context.Context, dec fu
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_BatchGetValueAddServiceLang_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(BatchGetValueAddServiceLangRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("BatchGetValueAddServiceLang", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_DeleteValueAddService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteValueAddServiceRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("DeleteValueAddService", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_BundleExtend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _Bundle_BundleExtend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(BundleExtendRequest) in := new(BundleExtendRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -1614,6 +1910,122 @@ func _Bundle_ConfirmWork_Handler(srv interface{}, ctx context.Context, dec func(
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_GetReconciliationList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetReconciliationListReq)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("GetReconciliationList", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_CreateReconciliation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(ReconciliationInfo)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("CreateReconciliation", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_UpdateReconciliation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(ReconciliationInfo)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("UpdateReconciliation", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _Bundle_UpdateReconciliationStatusBySerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateStatusAndPayTimeBySerialNumber)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("UpdateReconciliationStatusBySerialNumber", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
// Bundle_ServiceDesc is the grpc_go.ServiceDesc for Bundle service. // Bundle_ServiceDesc is the grpc_go.ServiceDesc for Bundle service.
// It's only intended for direct use with grpc_go.RegisterService, // It's only intended for direct use with grpc_go.RegisterService,
// and not to be introspected or modified (even as a copy) // and not to be introspected or modified (even as a copy)
@ -1649,6 +2061,14 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "BundleDetailV2", MethodName: "BundleDetailV2",
Handler: _Bundle_BundleDetailV2_Handler, Handler: _Bundle_BundleDetailV2_Handler,
}, },
{
MethodName: "BundleListH5V2",
Handler: _Bundle_BundleListH5V2_Handler,
},
{
MethodName: "BundleLangDetailV2",
Handler: _Bundle_BundleLangDetailV2_Handler,
},
{ {
MethodName: "BundleList", MethodName: "BundleList",
Handler: _Bundle_BundleList_Handler, Handler: _Bundle_BundleList_Handler,
@ -1693,6 +2113,14 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "OrderRecordsListV2", MethodName: "OrderRecordsListV2",
Handler: _Bundle_OrderRecordsListV2_Handler, Handler: _Bundle_OrderRecordsListV2_Handler,
}, },
{
MethodName: "OrderListByOrderNo",
Handler: _Bundle_OrderListByOrderNo_Handler,
},
{
MethodName: "OnlyAddValueListByOrderNo",
Handler: _Bundle_OnlyAddValueListByOrderNo_Handler,
},
{ {
MethodName: "CreateValueAddBundle", MethodName: "CreateValueAddBundle",
Handler: _Bundle_CreateValueAddBundle_Handler, Handler: _Bundle_CreateValueAddBundle_Handler,
@ -1725,6 +2153,14 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "CalculatePrice", MethodName: "CalculatePrice",
Handler: _Bundle_CalculatePrice_Handler, Handler: _Bundle_CalculatePrice_Handler,
}, },
{
MethodName: "BatchGetValueAddServiceLang",
Handler: _Bundle_BatchGetValueAddServiceLang_Handler,
},
{
MethodName: "DeleteValueAddService",
Handler: _Bundle_DeleteValueAddService_Handler,
},
{ {
MethodName: "BundleExtend", MethodName: "BundleExtend",
Handler: _Bundle_BundleExtend_Handler, Handler: _Bundle_BundleExtend_Handler,
@ -1769,6 +2205,22 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "ConfirmWork", MethodName: "ConfirmWork",
Handler: _Bundle_ConfirmWork_Handler, Handler: _Bundle_ConfirmWork_Handler,
}, },
{
MethodName: "GetReconciliationList",
Handler: _Bundle_GetReconciliationList_Handler,
},
{
MethodName: "CreateReconciliation",
Handler: _Bundle_CreateReconciliation_Handler,
},
{
MethodName: "UpdateReconciliation",
Handler: _Bundle_UpdateReconciliation_Handler,
},
{
MethodName: "UpdateReconciliationStatusBySerialNumber",
Handler: _Bundle_UpdateReconciliationStatusBySerialNumber_Handler,
},
}, },
Streams: []grpc_go.StreamDesc{}, Streams: []grpc_go.StreamDesc{},
Metadata: "pb/bundle.proto", Metadata: "pb/bundle.proto",

View File

@ -54,6 +54,7 @@ func loadMysqlConn(conn string) *gorm.DB {
&model.BundleOrderValueAdd{}, &model.BundleOrderValueAdd{},
&model.BundleExtensionRecords{}, &model.BundleExtensionRecords{},
&model.BundleBalance{}, &model.BundleBalance{},
&model.Reconciliation{},
) )
if err != nil { if err != nil {

View File

@ -15,7 +15,7 @@ const (
ZH_TW = "zh-TW" //繁体中文 ZH_TW = "zh-TW" //繁体中文
EN = "EN" //英文 EN = "EN" //英文
DE_DE = "de-DE" //德语 DE_DE = "de-DE" //德语
JS_JP = "js-JP" //日语 JA_JP = "ja-JP" //日语
) )
const ( const (
@ -52,7 +52,9 @@ const (
SuccessCreateOrderInfo = "创建订单信息成功" SuccessCreateOrderInfo = "创建订单信息成功"
ErrorUpdateOrderInfo = "更新订单信息失败" ErrorUpdateOrderInfo = "更新订单信息失败"
ErrorDeleteOrderInfo = "删除增值服务失败"
SuccessUpdateOrderInfo = "更新订单信息成功" SuccessUpdateOrderInfo = "更新订单信息成功"
SuccessDeletedOrderInfo = "删除订单信息成功"
ErrorGetOrderInfo = "获取订单信息失败" ErrorGetOrderInfo = "获取订单信息失败"