Compare commits

..

860 Commits

Author SHA1 Message Date
cjy
f5d17f6821 移除无用的模板 2025-12-24 11:10:55 +08:00
cjy
5711e56111 feat: 批量导入账号增加两个平台 2025-12-24 10:55:42 +08:00
cjy
2109c916e8 feat: 作品列表导出增加两个字段 2025-12-23 14:30:58 +08:00
cjy
fcbbdd8bba Merge branch 'feat-cjy-newTwoPlatform' into dev 2025-12-23 14:15:00 +08:00
cjy
4248cc091e feat: 移除没用的map 2025-12-23 14:13:28 +08:00
cjy
cab082a94a Merge branch 'feat-cjy-newTwoPlatform' into dev 2025-12-23 14:09:06 +08:00
cjy
4d13d5c1ab Merge branch 'feat-cjy-newTwoPlatform' into dev
# Conflicts:
#	pkg/model/cast/media.go
#	pkg/service/cast/work.go
2025-12-23 14:03:59 +08:00
cjy
1a460e4dac 更新pb 2025-12-23 10:52:21 +08:00
cjy
3983a27d4d feat: 增加youtube 和 bulesky 发布的特定配置 2025-12-23 10:51:07 +08:00
cjy
a04dae089e feat: 增加两个平台
# Conflicts:
#	pkg/service/cast/work.go
2025-12-23 10:51:07 +08:00
0ce34d54a1 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-23 10:44:39 +08:00
c6568fb76b Merge branch 'feature-userinfo-daiyb' into dev 2025-12-23 10:31:43 +08:00
fe2d1fc250 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-23 09:54:09 +08:00
06fde11152 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 17:02:33 +08:00
3cfc2e46e6 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 16:57:58 +08:00
291eb674f3 Merge branch 'fix-uploadas-daiyb' into dev 2025-12-22 16:22:22 +08:00
15d11999c2 Merge branch 'fix-uploadas-daiyb' into dev 2025-12-22 15:48:21 +08:00
bc42315df6 Merge branch 'fix-uploadas-daiyb' into dev 2025-12-22 15:47:30 +08:00
c1ba416722 Merge branch 'fix-uploadas-daiyb' into dev 2025-12-22 15:26:07 +08:00
2a6f855d27 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 15:05:29 +08:00
5cd2b0e378 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 14:25:57 +08:00
ab8e20f8f3 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 12:00:26 +08:00
4e4a432e9a Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 10:51:37 +08:00
a06f8d7ccc Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-22 10:44:45 +08:00
5f44a81c55 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-22 10:44:44 +08:00
cjy
af825ab37d Merge branch 'feat-cjy-data' into dev 2025-12-22 09:21:12 +08:00
7d6777c332 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-20 18:02:38 +08:00
7b60c31a7f Merge branch 'feature-userinfo-daiyb' into dev 2025-12-20 17:55:06 +08:00
bef316c85b 异步任务列表 2025-12-20 16:23:26 +08:00
e060bd78e3 临时去除黄反 2025-12-20 15:08:33 +08:00
bc3587f3b1 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-19 20:51:12 +08:00
7223c24d5b Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-19 16:00:27 +08:00
32737d322a Merge branch 'feature-userinfo-daiyb' into dev 2025-12-19 15:58:51 +08:00
bx1834938347-prog
60b20b6328 Merge branch 'wwq' into dev 2025-12-19 15:57:11 +08:00
cjy
42f247efe7 Merge branch 'feat-cjy-data' into dev 2025-12-19 15:28:15 +08:00
9cfa4316f0 Merge branch 'fix-approval-time' into dev 2025-12-19 14:27:56 +08:00
45f8f3cd5a Merge branch 'fix-approval-time' into dev 2025-12-19 14:24:56 +08:00
86fc7c1316 Merge branch 'fix-approval-time' into dev 2025-12-19 14:15:29 +08:00
b04753237f Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-19 14:06:24 +08:00
6bbe41429d 更新审批时间 2025-12-19 14:06:23 +08:00
bx1834938347-prog
4a479763ce Merge branch 'wwq' into dev 2025-12-19 13:45:58 +08:00
56c3b9b5e3 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-19 13:45:30 +08:00
c0a820af4b Merge branch 'fix-approval-time' into dev 2025-12-19 13:45:29 +08:00
cjy
9e6acf716d Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/cast/cast.pb.go
#	api/cast/cast.pb.validate.go
2025-12-19 13:36:22 +08:00
8ef7d57791 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-19 10:07:47 +08:00
1239128a52 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-18 21:28:01 +08:00
1a31f0874a Update analysis.go 2025-12-18 21:05:10 +08:00
b80bb34494 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-18 21:01:02 +08:00
f61063e7a0 修改失败类型 2025-12-18 20:40:33 +08:00
5ee42b7137 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-18 20:03:00 +08:00
8e68bbe543 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-18 20:02:59 +08:00
jiaji.H
1e19761356 Updata:增加失败类型 2025-12-18 19:25:21 +08:00
ee749bac65 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-18 17:45:02 +08:00
d122130196 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-18 17:44:57 +08:00
jiaji.H
33d7bde337 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-18 17:36:53 +08:00
jiaji.H
2ebfe14652 Merge branch 'feat-hjj-BundleStratusInfo' into dev 2025-12-18 17:36:30 +08:00
000341d13a Merge branch 'feature-userinfo-daiyb' into dev 2025-12-18 17:36:26 +08:00
jiaji.H
6cd2077886 Updata:增加套餐过期判断 2025-12-18 17:36:09 +08:00
10ba57a049 修改判断余量 是否足够 2025-12-18 17:35:40 +08:00
bx1834938347-prog
682007dc8f Merge branch 'wwq' into dev 2025-12-18 16:41:20 +08:00
cjy
e8daefc672 Merge branch 'feat-cjy-data' into dev 2025-12-18 16:38:32 +08:00
be1af84920 互动管理接口 2025-12-18 16:00:56 +08:00
baf12aff14 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-18 15:59:59 +08:00
bx1834938347-prog
ec394c57f1 Merge branch 'wwq' into dev 2025-12-18 14:14:56 +08:00
bx1834938347-prog
11b278045d Update init.go 2025-12-18 11:46:52 +08:00
bx1834938347-prog
9ea6cbdbd7 Merge branch 'wwq' into dev 2025-12-18 11:46:21 +08:00
bx1834938347-prog
090625935e Merge branch 'wwq' into dev 2025-12-18 11:45:01 +08:00
bx1834938347-prog
ae5f9aea6f Update init.go 2025-12-18 11:44:10 +08:00
bx1834938347-prog
0556ab0109 Merge branch 'wwq' into dev 2025-12-18 11:43:56 +08:00
bx1834938347-prog
60d141d892 feat:解决冲突 2025-12-18 11:32:24 +08:00
cjy
766f1eddd1 Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/cast/cast.pb.go
2025-12-18 10:42:03 +08:00
cjy
5463e7f44c Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/aryshare/ayrshare.pb.go
#	api/aryshare/ayrshare.validator.pb.go
#	api/aryshare/ayrshare_triple.pb.go
#	pkg/cron/task.go
2025-12-17 19:33:21 +08:00
0191ed1219 Update cast_triple.pb.go 2025-12-17 17:05:11 +08:00
fc0484370a Merge branch 'feature-userinfo-daiyb' into dev 2025-12-17 17:05:09 +08:00
jiaji.H
c2b4114bd5 Updata:解决冲突 2025-12-17 16:24:53 +08:00
e2abc91367 Merge branch 'feature-upload-daiyb' into dev 2025-12-17 14:45:26 +08:00
ea4e66a2a3 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-17 14:08:13 +08:00
4e48fb3742 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-17 14:08:12 +08:00
cjy
62572aa23e Merge branch 'feat-cjy-data' into dev 2025-12-17 13:17:00 +08:00
jiaji.H
d53eee5f9e Merge branch 'feat-hjj-AutoManuallyConfirmWorkTask' into dev 2025-12-17 11:48:37 +08:00
cjy
13fa310b57 Merge branch 'feat-cjy-data' into dev 2025-12-17 11:45:41 +08:00
jiaji.H
41ff630b60 Updata:解决冲突 2025-12-17 11:02:58 +08:00
jiaji.H
6817a5bdf3 Merge branch 'feat-hjj-AutoManuallyConfirmWorkTask' into dev 2025-12-17 10:06:54 +08:00
jiaji.H
0eac0276f9 Merge branch 'feat-hjj-AutoManuallyConfirmWorkTask' into dev 2025-12-17 10:01:05 +08:00
jiaji.H
345bf66c43 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-17 09:14:09 +08:00
jiaji.H
eda7b21dcc Updata:解决冲突 2025-12-17 09:14:06 +08:00
8f14755364 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-16 20:28:04 +08:00
8a8e983dd2 修改定时发布机制 2025-12-16 20:28:03 +08:00
cjy
77e42deae0 Merge branch 'feat-cjy-data' into dev 2025-12-16 20:26:43 +08:00
cjy
f954df6bd6 Merge branch 'feat-cjy-data' into dev 2025-12-16 19:45:55 +08:00
cjy
4357edb29f Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/cast/cast.pb.go
2025-12-16 19:40:04 +08:00
cjy
e481f61a53 Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/cast/cast.pb.go
#	api/cast/cast.pb.validate.go
2025-12-16 19:33:48 +08:00
399aa08dd0 添加定时消费队列 2025-12-16 19:02:13 +08:00
43404ae283 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 17:59:38 +08:00
f234a97213 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-16 16:39:08 +08:00
a130bc03c8 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 16:39:07 +08:00
jiaji.H
7687495842 Updata:更新pb文件 2025-12-16 16:15:08 +08:00
1cb27a6589 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 16:11:24 +08:00
34a84bd481 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 15:39:30 +08:00
5a534936f6 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 15:27:58 +08:00
fb851cc393 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-16 15:22:13 +08:00
a4c48a1dba Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 15:22:12 +08:00
jiaji.H
6e5a914152 Updata:解决冲突 2025-12-16 14:44:58 +08:00
77d3f53039 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 14:32:13 +08:00
bd9df0a02b Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 13:49:50 +08:00
094fbb78ca Merge branch 'feature-userinfo-daiyb' into dev 2025-12-16 09:20:46 +08:00
626a4a4ed4 列表查询 2025-12-15 19:19:09 +08:00
4eb7a09df5 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-15 16:35:50 +08:00
90df2b1a9e 合并发布 2025-12-15 16:35:49 +08:00
30c1edd959 Merge branch 'feature-newApi-daiyb' into dev 2025-12-15 16:34:47 +08:00
jiaji.H
d958a9e100 Merge branch 'feat-hjj-CastWork#' into dev 2025-12-15 16:13:13 +08:00
jiaji.H
8fc0336932 Merge branch 'feat-hjj-CastWork#' into dev 2025-12-15 16:09:13 +08:00
jiaji.H
9f808bbcd4 Merge branch 'feat-hjj-CastWork#' into dev 2025-12-15 16:03:30 +08:00
jiaji.H
bd1b57ddb2 Merge branch 'feat-hjj-CastWork#' into dev 2025-12-15 15:57:27 +08:00
jiaji.H
3f81b11945 Merge branch 'feat-hjj-CastWork#' into dev 2025-12-15 15:49:43 +08:00
JNG
cd6806b562 Merge branch 'jng' into dev 2025-12-15 15:47:23 +08:00
JNG
3672dc876a Merge branch 'jng' into dev 2025-12-15 15:44:59 +08:00
jiaji.H
6223a476b1 Merge branch 'feat-hjj-CastWork#' into dev 2025-12-15 15:42:00 +08:00
JNG
80da315d7b Merge branch 'jng-1127' into dev 2025-12-15 12:00:30 +08:00
4195330c0c Merge branch 'feature-newApi-daiyb' into dev 2025-12-12 16:40:49 +08:00
e89e1f35de Update cast.pb.validate.go 2025-12-12 16:38:53 +08:00
64b9753ca1 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-12 16:38:51 +08:00
7cdd27ca03 Merge branch 'feature-newApi-daiyb' into dev 2025-12-12 16:38:28 +08:00
jiaji.H
ad00b442df Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-12 15:35:19 +08:00
jiaji.H
01d54a8f96 Updata:解决冲突 2025-12-12 15:17:22 +08:00
jiaji.H
5bb7dbd802 Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-12 15:09:45 +08:00
jiaji.H
403dd045ef Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-12 14:47:05 +08:00
jiaji.H
db36eaca42 Updata:增加黄反接口 2025-12-12 14:40:25 +08:00
cjy
e399d2ef24 feat: 更新pb
# Conflicts:
#	api/cast/cast.pb.go
#	api/cast/cast.pb.validate.go
2025-12-12 14:11:51 +08:00
3e29816950 Merge branch 'feature-newApi-daiyb' into dev 2025-12-12 14:10:30 +08:00
53b26a3972 Merge branch 'feature-newApi-daiyb' into dev 2025-12-12 13:47:52 +08:00
91c6918e77 Merge branch 'feature-newApi-daiyb' into dev 2025-12-12 13:20:19 +08:00
e7e93ca3b0 修改授权 2025-12-12 11:45:33 +08:00
bx1834938347-prog
48916e945a Merge branch 'wwq' into dev 2025-12-12 09:52:06 +08:00
ce80e5f21e Merge branch 'feature-newApi-daiyb' into dev 2025-12-11 21:17:57 +08:00
32b334afe1 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-11 21:05:57 +08:00
345b417810 合并发布 2025-12-11 21:05:56 +08:00
jiaji.H
cfcb39eb72 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-11 19:12:29 +08:00
d00a71708d Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-11 16:01:12 +08:00
48343298ae Merge branch 'feature-newApi-daiyb' into dev 2025-12-11 16:01:10 +08:00
jiaji.H
0253043903 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-11 15:28:49 +08:00
jiaji.H
27f40676d8 Updata:去除异步 2025-12-11 15:28:48 +08:00
cjy
4e658732da Merge branch 'feat-cjy-data' into dev 2025-12-11 15:00:59 +08:00
6354c95bde Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-11 14:57:27 +08:00
d89404c607 Merge branch 'feature-newApi-daiyb' into dev 2025-12-11 14:57:26 +08:00
cjy
2aa015e5a7 Merge branch 'feat-cjy-data' into dev 2025-12-11 14:42:36 +08:00
bx1834938347-prog
ac9a180948 Merge branch 'wwq' into dev 2025-12-11 14:28:18 +08:00
jiaji.H
292550973e Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-11 13:58:13 +08:00
bb7c80b716 修改同步 2025-12-11 11:18:24 +08:00
jiaji.H
62e66da4d7 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-11 10:29:01 +08:00
cjy
cc0bccc584 Merge branch 'feat-cjy-data' into dev 2025-12-11 10:22:30 +08:00
cjy
00014cd6e5 Merge branch 'feat-cjy-data' into dev 2025-12-10 16:22:19 +08:00
cjy
59697ee6f0 Merge branch 'feat-cjy-data' into dev 2025-12-10 16:18:04 +08:00
cjy
ecce83737b Merge branch 'feat-cjy-data' into dev 2025-12-10 16:09:18 +08:00
jiaji.H
1794da7f35 Updata:解决冲突 2025-12-10 15:24:59 +08:00
jiaji.H
80de4346ad 更新配置文件 2025-12-10 15:16:57 +08:00
jiaji.H
5eda55648f Updata:解决冲突 2025-12-10 15:10:11 +08:00
cjy
6cc472a8f8 Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	pkg/cron/task.go
2025-12-10 14:09:09 +08:00
jiaji.H
4a72b37ae4 Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-10 13:36:50 +08:00
jiaji.H
61a7af83fc Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-10 11:21:52 +08:00
a92dd6961f Merge branch 'feature-newApi-daiyb' into dev 2025-12-10 09:50:19 +08:00
889b524f8f Merge branch 'feature-newApi-daiyb' into dev 2025-12-09 20:44:53 +08:00
77265be8f1 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-09 20:32:20 +08:00
137e4c9789 Merge branch 'feature-newApi-daiyb' into dev 2025-12-09 20:32:19 +08:00
cjy
99db707c85 Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/cast/cast.pb.go
#	api/cast/cast.pb.validate.go
2025-12-09 18:23:59 +08:00
7375df728c Merge branch 'feature-newApi-daiyb' into dev 2025-12-09 17:13:01 +08:00
dac129d12e 合并最新代码 2025-12-09 16:15:18 +08:00
bc33671ac6 更新api发布 2025-12-09 16:09:43 +08:00
cjy
2927a4f179 Merge branch 'feat-cjy-data' into dev 2025-12-09 16:01:22 +08:00
cjy
137829c50a Merge branch 'feat-cjy-data' into dev 2025-12-09 15:58:05 +08:00
bx1834938347-prog
3af150054f Merge branch 'wwq' into dev 2025-12-09 14:56:40 +08:00
jiaji.H
7708e5c9a4 Updata:更新pb文件,修改导出表格格式 2025-12-09 13:36:17 +08:00
cjy
3f170c4091 Merge branch 'feat-cjy-data' into dev 2025-12-09 11:44:50 +08:00
JNG
39235ebc3c 解决冲突 2025-12-09 11:12:33 +08:00
jiaji.H
25df768960 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-09 10:58:56 +08:00
jiaji.H
001bd4337b Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-09 10:04:05 +08:00
bx1834938347-prog
b9b4c16c12 Merge branch 'wwq' into dev 2025-12-09 09:48:40 +08:00
jiaji.H
180a9ab2d5 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-09 09:43:52 +08:00
jiaji.H
07198e000d Updata:更新测试环境错误返回 2025-12-09 09:42:59 +08:00
bx1834938347-prog
43f62ea2c5 Merge branch 'wwq' into dev 2025-12-09 09:34:14 +08:00
jiaji.H
9f55832cae Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-09 09:33:05 +08:00
jiaji.H
0040dd1502 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-09 09:09:26 +08:00
jiaji.H
014a1fe478 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-08 19:55:42 +08:00
jiaji.H
c7546c8372 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-08 19:48:52 +08:00
jiaji.H
b9a24ea0e6 Updata:解决冲突 2025-12-08 19:46:29 +08:00
jiaji.H
100155a9fc Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-08 19:32:15 +08:00
bx1834938347-prog
1efe6848d7 Merge branch 'dev' into wwq 2025-12-08 17:10:29 +08:00
bx1834938347-prog
aa7b228dc5 Merge branch 'wwq' into dev 2025-12-08 16:54:50 +08:00
jiaji.H
ac68f3c4d0 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-08 16:37:25 +08:00
cjy
bfa1716fe1 Merge branch 'feat-cjy-data' into dev 2025-12-08 14:38:49 +08:00
jiaji.H
4eb8d2d055 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-12-08 14:37:06 +08:00
bx1834938347-prog
7c2e68c309 Merge branch 'wwq' into dev 2025-12-08 14:12:58 +08:00
bx1834938347-prog
c1c94d6f13 Merge branch 'wwq' into dev 2025-12-08 11:18:54 +08:00
cjy
6083ed9272 Merge branch 'feat-cjy-data' into dev
# Conflicts:
#	api/cast/cast.pb.go
#	api/cast/cast.pb.validate.go
#	api/cast/cast_triple.pb.go
2025-12-08 09:36:16 +08:00
jiaji.H
9027c81697 Updata:解决冲突 2025-12-08 09:27:57 +08:00
bx1834938347-prog
fb372200bb Merge branch 'wwq' into dev 2025-12-08 09:03:11 +08:00
bx1834938347-prog
fa5cd158dd Merge branch 'wwq' into dev 2025-12-05 19:12:25 +08:00
bx1834938347-prog
f9b4da20f6 Merge branch 'wwq' into dev 2025-12-05 17:06:44 +08:00
3a298a6d3a Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-05 16:41:55 +08:00
df6f0b791d Merge branch 'feature-userinfo-daiyb' into dev 2025-12-05 16:41:54 +08:00
bx1834938347-prog
a18463be54 Merge branch 'wwq' into dev 2025-12-05 16:23:10 +08:00
bx1834938347-prog
e57faa2948 Merge branch 'wwq' into dev 2025-12-05 16:19:38 +08:00
bx1834938347-prog
e8f5dcecc3 Merge branch 'wwq' into dev 2025-12-05 15:47:00 +08:00
bx1834938347-prog
17b91fc579 Merge branch 'wwq' into dev 2025-12-05 15:13:15 +08:00
bx1834938347-prog
06f7246d35 Merge branch 'wwq' into dev 2025-12-05 14:25:03 +08:00
bx1834938347-prog
2d03a13227 Merge branch 'wwq' into dev 2025-12-05 14:17:03 +08:00
bx1834938347-prog
3f55338f1d Merge branch 'wwq' into dev 2025-12-05 10:59:34 +08:00
bx1834938347-prog
de730bf9de Merge branch 'wwq' into dev 2025-12-05 10:52:45 +08:00
bx1834938347-prog
44bdbbf3c2 Merge branch 'wwq' into dev 2025-12-05 10:43:31 +08:00
bx1834938347-prog
2e8dd27aff Merge branch 'wwq' into dev 2025-12-05 10:29:12 +08:00
bx1834938347-prog
0b93a23d4e Merge branch 'wwq' into dev 2025-12-05 10:22:10 +08:00
jiaji.H
bbf81de56e Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-05 09:07:06 +08:00
bx1834938347-prog
9d35de6b11 Merge branch 'wwq' into dev 2025-12-05 09:03:34 +08:00
jiaji.H
60a8ff39a6 Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-04 19:26:27 +08:00
jiaji.H
d509b15973 Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-04 16:01:10 +08:00
bx1834938347-prog
f5a97aee08 Merge branch 'wwq' into dev 2025-12-04 15:44:55 +08:00
8a1cac312e Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-04 15:33:33 +08:00
2c8ee193c3 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-04 15:33:32 +08:00
jiaji.H
9859b1ec0d Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-04 15:33:19 +08:00
bx1834938347-prog
fc4c5d6f93 Merge branch 'wwq' into dev 2025-12-04 15:25:47 +08:00
bx1834938347-prog
d57089a79f Merge branch 'wwq' into dev 2025-12-04 14:59:53 +08:00
0db7945192 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-04 14:33:14 +08:00
3bbcc9f763 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-04 14:33:12 +08:00
bx1834938347-prog
da7e390fe8 Merge branch 'wwq' into dev 2025-12-04 11:20:08 +08:00
50ec31cbb5 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-03 18:35:23 +08:00
ac91a11820 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-03 16:25:34 +08:00
312f73c215 Merge branch 'feature-userinfo-daiyb' into dev 2025-12-03 16:16:12 +08:00
19d95d6efe Merge branch 'feature-userinfo-daiyb' into dev 2025-12-03 14:57:12 +08:00
7eda9a3d0b Merge branch 'feature-userinfo-daiyb' into dev 2025-12-03 13:56:56 +08:00
066c0b2067 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-12-03 13:49:57 +08:00
9b68c2434c Merge branch 'feature-userinfo-daiyb' into dev 2025-12-03 13:49:57 +08:00
jiaji.H
469fac745d Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-01 13:56:08 +08:00
jiaji.H
c5ff922830 Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-01 13:40:58 +08:00
jiaji.H
88ef2fc64f Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-01 13:38:20 +08:00
jiaji.H
f9d15bf2e2 Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-01 13:33:00 +08:00
jiaji.H
615739b8fb Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-01 13:31:04 +08:00
jiaji.H
d7ea21e0ef Merge branch 'feat-hjj-filebrowser#Saas3' into dev 2025-12-01 13:11:48 +08:00
jiaji.H
e6802835da Updata:解决冲突 2025-12-01 12:00:12 +08:00
jiaji.H
6b8b993ceb Updata:解决冲突 2025-12-01 11:46:51 +08:00
cjy
360ff4652f Merge branch 'feat-cjy-taskBench2' into dev 2025-12-01 10:12:31 +08:00
cjy
245281849f Merge branch 'feat-cjy-taskBench2' into dev 2025-11-29 11:06:33 +08:00
cjy
de465b1503 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-28 15:31:41 +08:00
jiaji.H
1a7cd0e135 Merge branch 'feat-hjj-CastWork#' into dev 2025-11-28 14:45:36 +08:00
jiaji.H
e37a2fe3db Merge branch 'feat-hjj-CastWork#' into dev 2025-11-28 14:38:25 +08:00
cjy
554be2058d Merge branch 'feat-cjy-taskBench2' into dev 2025-11-27 20:17:46 +08:00
jiaji.H
47500a2028 Merge branch 'feat-hjj-CastWork#' into dev 2025-11-27 17:59:04 +08:00
a2abf42113 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-27 17:49:57 +08:00
54f42c2b5d Merge branch 'feature-userinfo-daiyb' into dev 2025-11-27 14:16:36 +08:00
9835138f5a Merge branch 'feature-userinfo-daiyb' into dev 2025-11-26 17:45:48 +08:00
634d143e2b Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-26 17:38:14 +08:00
e0b8d5cc6c Merge branch 'feature-userinfo-daiyb' into dev 2025-11-26 17:38:13 +08:00
cjy
e9a455eab8 feat: 增加撤消脚本数 2025-11-26 17:14:55 +08:00
cjy
5c764a9ee3 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-26 16:29:16 +08:00
jiaji.H
1f4f24f9ef Updata:解决冲突 2025-11-26 13:26:15 +08:00
jiaji.H
1ae5d89d29 Merge branch 'feat-hjj-CastWork#' into dev 2025-11-26 11:47:35 +08:00
jiaji.H
4b21bfd759 Merge branch 'feat-hjj-CastWork#' into dev 2025-11-26 11:42:53 +08:00
cjy
b95507f3fd Merge branch 'feat-cjy-taskBench2' into dev 2025-11-25 16:44:21 +08:00
cjy
fa8b4f7fb0 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-25 16:39:42 +08:00
JNG
047fd667ac Merge branch 'jng' into dev 2025-11-25 15:14:34 +08:00
cjy
36c559b5de Merge branch 'feat-cjy-taskBench2' into dev 2025-11-25 15:04:32 +08:00
cjy
be872194a4 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-25 10:28:17 +08:00
f96492dd37 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-24 16:41:52 +08:00
e174adbfe3 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-24 16:11:22 +08:00
6cd77785cf Merge branch 'feature-userinfo-daiyb' into dev 2025-11-24 15:57:29 +08:00
479ae3a3d4 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-24 15:52:21 +08:00
9bbee05199 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-24 15:06:50 +08:00
c7db716f70 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-24 15:06:49 +08:00
jiaji.H
3cec6a41bf Updata:解决冲突 2025-11-24 12:00:53 +08:00
aeda4ecb61 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-24 10:38:29 +08:00
6937b16808 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-21 15:48:54 +08:00
36218b8ba6 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-21 15:48:53 +08:00
cjy
5bd9c6fbac Merge branch 'feat-cjy-taskBench2' into dev 2025-11-21 15:32:58 +08:00
cjy
ebfe9f69e0 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-21 14:45:37 +08:00
acc03e03a6 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-21 14:42:46 +08:00
ede34caddf Merge branch 'feature-userinfo-daiyb' into dev 2025-11-21 14:12:07 +08:00
3af6401b88 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-21 14:10:49 +08:00
d593f9812b Merge branch 'feature-userinfo-daiyb' into dev 2025-11-21 14:07:25 +08:00
4865ce955b Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-20 10:23:17 +08:00
a8166a0cd2 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-20 10:23:15 +08:00
cjy
5585ab8c1c Merge branch 'feat-cjy-taskBench2' into dev 2025-11-19 16:08:28 +08:00
b186705454 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-19 14:47:28 +08:00
8b9b067145 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-18 18:34:06 +08:00
f356e389f5 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-18 18:34:05 +08:00
cjy
d482d7757e Merge branch 'feat-cjy-taskBench2' into dev 2025-11-18 14:13:56 +08:00
d22aaa719e Merge branch 'feature-userinfo-daiyb' into dev 2025-11-18 10:03:54 +08:00
e36caaaff4 Merge branch 'feature-userinfo-daiyb' into dev 2025-11-18 09:35:39 +08:00
a1a3d229c5 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-17 18:16:47 +08:00
5d087d092b Merge branch 'feature-userinfo-daiyb' into dev 2025-11-17 18:16:46 +08:00
cjy
3dbcfe23ea Merge branch 'feat-cjy-taskBench2' into dev 2025-11-17 15:24:14 +08:00
cjy
0bb3edd373 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-17 15:08:15 +08:00
4ea64ebd95 Update accountFiee.pb.go 2025-11-17 13:29:13 +08:00
bf9d22c0a3 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-11-17 13:28:37 +08:00
572e01fa9b 添加脚本 2025-11-17 13:28:11 +08:00
cjy
e74d95b70a Merge branch 'feat-cjy-taskBench2' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
2025-11-17 11:41:22 +08:00
cjy
7c473dd6a5 更新pb 2025-11-17 11:24:26 +08:00
JNG
8bc95908a8 Merge branch 'jng' into dev 2025-11-17 11:12:59 +08:00
jiaji.H
97f01bc40a Merge branch 'feat-hjj-CastWork#' into dev 2025-11-16 18:59:49 +08:00
jiaji.H
023fbfbde5 Updata:解决冲突 2025-11-14 23:59:33 +08:00
f47d9480fd Merge branch 'feature-userinfo-daiyb' into dev 2025-11-14 20:30:48 +08:00
1e61a5d7c4 修改方式 2025-11-14 20:22:37 +08:00
jiaji.H
05a6693156 Merge branch 'feat-hjj-CastWork#' into dev 2025-11-14 15:42:16 +08:00
jiaji.H
7b5d166ffa Merge branch 'feat-hjj-CastWork#' into dev 2025-11-14 15:15:11 +08:00
cjy
0e45102207 Merge branch 'feat-cjy-taskBench2' into dev 2025-11-14 15:02:23 +08:00
cjy
1849d742c1 Merge branch 'feat-cjy-taskBench2' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
#	api/bundle/bundle_triple.pb.go
2025-11-14 10:37:46 +08:00
bx1834938347-prog
dd76259175 Merge branch 'wwq' into dev 2025-11-13 10:28:31 +08:00
lzh
1b4f86d57e Merge branch 'dev-lzh-1029' into dev 2025-11-11 16:26:41 +08:00
lzh
aede8cbe97 Merge branch 'dev-lzh-1029' into dev 2025-11-11 15:55:00 +08:00
lzh
3afabc639b Merge branch 'dev-lzh-1029' into dev 2025-11-11 09:46:20 +08:00
JNG
7009d57f65 Merge branch 'jng' into dev 2025-11-10 19:45:31 +08:00
lzh
ec958a88b3 Merge branch 'dev-lzh-1029' into dev 2025-11-10 15:48:01 +08:00
lzh
e32b2e8b9a Merge branch 'dev-lzh-1029' into dev 2025-11-10 15:09:16 +08:00
lzh
5dfef7b70a Merge branch 'dev-lzh-1029' into dev 2025-11-10 11:14:54 +08:00
lzh
f6bad1d8e1 debug 2025-11-10 10:58:59 +08:00
lzh
4eb64cde93 Merge branch 'dev-lzh-1029' into dev 2025-11-10 10:56:31 +08:00
lzh
4e0becfd5c Merge branch 'dev-lzh-1029' into dev 2025-11-10 10:39:30 +08:00
lzh
616e98fcec Merge branch 'dev-lzh-1029' into dev 2025-11-10 10:34:07 +08:00
lzh
c31f3f8376 Merge branch 'dev-lzh-1029' into dev 2025-11-10 10:29:05 +08:00
lzh
c50b19fd10 Merge branch 'dev-lzh-1029' into dev 2025-11-10 10:22:13 +08:00
lzh
ca296bca49 Merge branch 'dev-lzh-1029' into dev 2025-11-10 10:16:03 +08:00
lzh
c9f032948e Merge branch 'dev-lzh-1029' into dev 2025-11-10 09:38:18 +08:00
lzh
5473324d2d Merge branch 'dev-lzh-1029' into dev 2025-11-07 13:50:32 +08:00
lzh
7b035e00d6 Merge branch 'dev-lzh-1029' into dev 2025-11-07 13:37:36 +08:00
JNG
13c27da618 Merge branch 'jng' into dev 2025-11-06 17:09:25 +08:00
JNG
82ed8b6c94 Merge branch 'jng' into dev 2025-11-06 17:03:40 +08:00
JNG
af03cc8f5b Merge branch 'jng' into dev 2025-11-06 16:29:48 +08:00
lzh
0974d2631e Merge branch 'dev-lzh-1029' into dev 2025-11-06 15:00:00 +08:00
lzh
6dc9f7469e Merge branch 'dev-lzh-1029' into dev 2025-11-05 09:57:21 +08:00
lzh
fb9315a201 Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:44:40 +08:00
lzh
f9ee8101bf Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:39:55 +08:00
lzh
c0ef075cfa Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:33:04 +08:00
lzh
0dfc2b2daf Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:27:22 +08:00
lzh
0c573ce93b Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:16:22 +08:00
lzh
f84bc42bd6 Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:12:39 +08:00
lzh
0ba2a78f73 Merge branch 'dev-lzh-1029' into dev 2025-11-03 16:07:02 +08:00
lzh
ce833dadf5 Merge branch 'dev-lzh-1029' into dev 2025-11-03 15:49:59 +08:00
lzh
6e0721e923 Merge branch 'dev-lzh-1029' into dev 2025-11-03 15:45:14 +08:00
lzh
8d3d21d0ea Merge branch 'dev-lzh-1029' into dev 2025-11-03 14:39:02 +08:00
lzh
3bdf010ed5 Merge branch 'dev-lzh-1029' into dev 2025-11-03 14:26:34 +08:00
lzh
f372b6953a Merge branch 'dev-lzh-1029' into dev 2025-11-03 14:13:04 +08:00
lzh
ae6f033a90 Merge branch 'dev-lzh-1029' into dev 2025-11-03 14:06:19 +08:00
lzh
ef876cb63c Merge branch 'dev-lzh-1029' into dev 2025-11-03 13:56:58 +08:00
lzh
6e475cd1e9 Merge branch 'dev-lzh-1029' into dev 2025-11-03 13:48:24 +08:00
lzh
e76541de23 Merge branch 'dev-lzh-1029' into dev 2025-11-03 13:23:38 +08:00
lzh
31d394627c Merge branch 'dev-lzh-1029' into dev 2025-11-03 13:15:59 +08:00
lzh
4040d22fe5 Merge branch 'dev-lzh-1029' into dev 2025-11-03 11:49:14 +08:00
lzh
5c43a2fa7b Merge branch 'dev-lzh-1029' into dev 2025-11-03 11:15:50 +08:00
lzh
70e60407e9 Merge branch 'dev-lzh-1029' into dev 2025-11-03 09:47:32 +08:00
jiaji.H
5b801a546b Updata:更新pb文件 2025-10-30 11:28:15 +08:00
lzh
9d8d900f74 Merge branch 'main' into dev 2025-10-30 11:02:38 +08:00
90bf6de27d 作品状态 2025-10-28 13:54:15 +08:00
lzh
14e5b3c49c Merge branch 'dev-lzh-0905' into dev 2025-10-24 17:06:48 +08:00
acb845a55f Merge branch 'feature-octTwo-daiyb' into dev 2025-10-24 16:50:34 +08:00
lzh
b0adf39e00 Merge branch 'dev-lzh-0905' into dev 2025-10-24 15:04:59 +08:00
d4646b3fbb Merge branch 'feature-octTwo-daiyb' into dev 2025-10-24 14:59:51 +08:00
517ee67733 Merge branch 'feature-octTwo-daiyb' into dev 2025-10-24 14:37:10 +08:00
3119718387 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-10-23 16:51:37 +08:00
9ef9ba8850 Merge branch 'feature-octTwo-daiyb' into dev 2025-10-23 16:51:36 +08:00
JNG
45769d59f9 Update conf.ini 2025-10-23 15:57:23 +08:00
JNG
a820439b7a Update dubbogo.yaml 2025-10-23 15:38:12 +08:00
JNG
251829bab3 Merge branch 'jng' into dev 2025-10-23 15:30:22 +08:00
cjy
20f8af09cb Merge branch 'feat-cjy-taskBench' into dev 2025-10-23 11:05:54 +08:00
cjy
23394a11b8 Merge branch 'feat-cjy-taskBench' into dev 2025-10-22 18:26:24 +08:00
cjy
e6082f61d9 Merge branch 'feat-cjy-taskBench' into dev 2025-10-21 20:46:17 +08:00
cjy
d7d20dbd0d Merge branch 'feat-cjy-taskBench' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
2025-10-21 20:31:43 +08:00
lzh
36f1e4c609 Merge branch 'dev-lzh-0905' into dev 2025-10-21 15:49:23 +08:00
lzh
cdbb266503 Merge branch 'dev-lzh-0905' into dev 2025-10-21 14:59:43 +08:00
a34636ac80 Merge branch 'feature-octTwo-daiyb' into dev 2025-10-21 14:55:04 +08:00
103986b319 Merge branch 'feature-octTwo-daiyb' into dev 2025-10-21 10:57:36 +08:00
lzh
5a076cd523 Merge branch 'dev-lzh-0905' into dev 2025-10-20 17:11:34 +08:00
lzh
d81c6b7aad Merge branch 'dev-lzh-0905' into dev 2025-10-20 17:02:33 +08:00
JNG
2b7ad29482 解决冲突 2025-10-20 15:21:11 +08:00
lzh
3ac392f9d8 Merge branch 'dev-lzh-0905' into dev 2025-10-20 14:34:15 +08:00
cjy
f0c8044cc8 Merge branch 'feat-cjy-taskBench' into dev 2025-10-20 11:03:29 +08:00
cjy
6dd2a5a62b Merge branch 'feat-cjy-taskBench' into dev 2025-10-20 10:49:21 +08:00
cjy
dca97173bf Merge branch 'feat-cjy-taskBench' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
2025-10-17 16:20:24 +08:00
lzh
b6929b602b Merge branch 'dev-lzh-0905' into dev 2025-10-17 16:00:53 +08:00
lzh
36c32752f9 Merge branch 'dev-lzh-0905' into dev 2025-10-17 15:41:07 +08:00
lzh
afec2dcc61 Merge branch 'dev-lzh-0905' into dev 2025-10-17 15:33:04 +08:00
lzh
3e1334bc3a Merge branch 'dev-lzh-0905' into dev 2025-10-17 15:17:08 +08:00
lzh
0a084828d6 Merge branch 'dev-lzh-0905' into dev 2025-10-17 15:01:17 +08:00
lzh
1623e06e13 Merge branch 'dev-lzh-0905' into dev 2025-10-17 14:50:41 +08:00
lzh
4047d10ed4 Merge branch 'dev-lzh-0905' into dev 2025-10-17 10:33:59 +08:00
lzh
2d44d0ba4d Merge branch 'dev-lzh-0905' into dev 2025-10-17 10:23:44 +08:00
lzh
e35c6365f4 Merge branch 'dev-lzh-0905' into dev 2025-10-16 17:00:04 +08:00
f17c039c1e Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-10-16 10:26:34 +08:00
a1b4472e7f Merge branch 'feature-octTwo-daiyb' into dev 2025-10-16 10:26:34 +08:00
lzh
1e6acd8c8e Merge branch 'dev-lzh-0905' into dev 2025-10-16 09:22:53 +08:00
lzh
cad92c6651 Merge branch 'dev-lzh-0905' into dev 2025-10-15 15:59:01 +08:00
f0ffd00a7d Merge branch 'feature-octTwo-daiyb' into dev 2025-10-11 16:21:30 +08:00
jiaji.H
03efe6030a Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-10-11 10:50:42 +08:00
jiaji.H
6527dbb5a3 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-10-11 10:25:05 +08:00
jiaji.H
625ccc125f Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-10-10 15:41:32 +08:00
lzh
98ce498830 Merge branch 'dev-lzh-1009' into dev 2025-10-10 14:17:00 +08:00
lzh
afdc647139 添加使用类型过滤 2025-10-10 14:15:19 +08:00
jiaji.H
6de56772dd Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-10-10 13:44:10 +08:00
lzh
11eda60e20 Merge branch 'dev-lzh-1009' into dev 2025-10-10 10:33:09 +08:00
10ce40fc64 Merge branch 'feature-costType-daiyb' into dev 2025-10-10 09:11:35 +08:00
lzh
2a030ca4a5 Merge branch 'dev-lzh-1009' into dev 2025-10-09 18:00:23 +08:00
e47c36692a Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-10-09 14:46:05 +08:00
30f653728d 导出 2025-10-09 14:46:04 +08:00
jiaji.H
6aa54dc7af Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-29 11:22:00 +08:00
jiaji.H
4a96a61958 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-29 10:12:22 +08:00
b8409502ee Merge branch 'feature-tiktok-daiyb' into dev 2025-09-28 19:14:03 +08:00
be45de4046 Merge branch 'dev' of http://gitea.tools.fontree.cn:3000/fiee/fonchain-fiee into dev 2025-09-28 17:55:24 +08:00
cc94f9bbe3 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-28 17:55:22 +08:00
jiaji.H
f2d9a913ab Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-28 16:59:33 +08:00
jiaji.H
e969c95b8c Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-28 16:41:11 +08:00
jiaji.H
634a993e16 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-28 16:32:08 +08:00
JNG
9c9879553d Merge branch 'jng-0924' into dev 2025-09-28 15:08:56 +08:00
JNG
c153b9b8eb Merge branch 'jng-0924' into dev 2025-09-28 14:41:31 +08:00
jiaji.H
46521b10ca Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-28 13:54:14 +08:00
jiaji.H
5fcadaf742 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-28 10:28:36 +08:00
866049d95d Merge branch 'feature-tiktok-daiyb' into dev 2025-09-26 15:19:38 +08:00
bf973fa948 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-26 12:28:34 +08:00
jiaji.H
9752b6584f Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-25 17:07:18 +08:00
jiaji.H
1aa4f73bdc Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-09-25 16:42:40 +08:00
jiaji.H
2fdcb9b131 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-25 16:42:16 +08:00
9d43a3c098 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-25 16:41:36 +08:00
2e58f305fd Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-09-25 15:56:40 +08:00
a0eb009b07 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-25 15:56:39 +08:00
jiaji.H
c977c9d435 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-25 15:53:52 +08:00
jiaji.H
5db101dde2 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-25 14:40:22 +08:00
jiaji.H
72c21ba4a0 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-25 13:24:27 +08:00
9a6f83c0ee Merge branch 'feature-tiktok-daiyb' into dev 2025-09-25 11:13:05 +08:00
cd1bee8ac7 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-24 17:16:14 +08:00
7ff98e4fe8 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-09-24 16:49:54 +08:00
2cf68ad47c Merge branch 'feature-tiktok-daiyb' into dev 2025-09-24 16:49:53 +08:00
jiaji.H
6e29a1ed60 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-24 15:58:29 +08:00
JNG
2d524b2a0b Merge branch 'jng' into dev 2025-09-24 15:50:58 +08:00
jiaji.H
4d153bcb37 Merge branch 'feat-hjj-OfficialManage#A161' into dev 2025-09-24 15:28:17 +08:00
18524598d4 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-24 11:58:27 +08:00
7359d9cd57 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-24 11:56:50 +08:00
c573defa3b Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-09-24 11:47:22 +08:00
f3367ccf22 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-24 11:47:21 +08:00
lzh
5a672d72c4 Merge branch 'dev-lzh-0923' into dev 2025-09-24 11:24:31 +08:00
lzh
36a2da8e7c 修改proto文件 2025-09-24 11:24:00 +08:00
lzh
8b0e0edae8 Merge branch 'dev-lzh-0923' into dev 2025-09-23 14:26:39 +08:00
lzh
c4436f9be0 更新proto文科 2025-09-23 14:25:45 +08:00
79ecb8c90d Merge branch 'feature-tiktok-daiyb' into dev 2025-09-22 16:41:54 +08:00
c8d656bb62 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-09-22 16:29:45 +08:00
8b0ac8df10 Merge branch 'feature-tiktok-daiyb' into dev 2025-09-22 16:29:44 +08:00
sxy
e3bc1a992f Merge branch 'feat-sxy-import919' into dev 2025-09-22 15:41:19 +08:00
sxy
971e6f5976 Merge branch 'feat-sxy-import919' into dev 2025-09-22 13:38:00 +08:00
sxy
f9597a2eac Merge branch 'feat-sxy-import919' into dev 2025-09-22 11:48:06 +08:00
sxy
010cf9b126 Merge branch 'feat-sxy-import919' into dev 2025-09-22 11:42:15 +08:00
sxy
3b96a4bef8 Merge branch 'feat-sxy-import919' into dev 2025-09-22 11:40:48 +08:00
sxy
7008642797 Merge branch 'feat-sxy-import919' into dev 2025-09-22 11:29:04 +08:00
46f1a12dee Merge branch 'feature-tiktok-daiyb' into dev 2025-09-22 11:12:26 +08:00
7deff19fca Merge branch 'feature-tiktok-daiyb' into dev 2025-09-22 10:02:54 +08:00
JNG
2784ef0144 Merge branch 'jng' into dev 2025-09-18 09:36:15 +08:00
JNG
6090cf92d6 解决冲突 2025-09-17 16:52:10 +08:00
jiaji.H
b88339488d Merge branch 'feat-hjj-pkManage#A116' into dev 2025-09-17 11:21:20 +08:00
jiaji.H
e527740ba3 Merge branch 'feat-hjj-pkManage#A116' into dev 2025-09-16 13:54:40 +08:00
jiaji.H
14a198ccac Merge branch 'feat-hjj-pkManage#A116' into dev 2025-09-16 13:47:27 +08:00
jiaji.H
94f156981c Merge branch 'feat-hjj-pkManage#A116' into dev 2025-09-15 15:10:21 +08:00
jiaji.H
b3b4e861aa Updata:解决冲突 2025-09-11 15:35:42 +08:00
jiaji.H
17a017616e Merge branch 'feat-hjj-pkManage#A116' into dev 2025-09-11 15:34:23 +08:00
sxy
c6bc85ecaa 修改 2025-09-11 15:06:35 +08:00
gy
9b07b6b973 Merge branch 'gy' of https://gitea-net.fontree.cn/fiee/fonchain-fiee into dev 2025-09-09 18:51:41 +08:00
jiaji.H
93abf25796 feat:解决冲突 2025-09-09 11:05:56 +08:00
cjy
4174a69ad7 Merge branch 'feat-cjy-taskBench' into dev 2025-09-04 18:34:21 +08:00
jiaji.H
0cb5d6e9ef feat:解决冲突 2025-09-04 11:43:50 +08:00
cjy
4a97727775 Merge branch 'feat-cjy-taskBench' into dev 2025-09-03 17:59:00 +08:00
cjy
7af0704d49 Merge branch 'feat-cjy-taskBench' into dev 2025-09-03 16:26:02 +08:00
a5df6f06bf Merge branch 'feature-tiktok-daiyb' into dev 2025-09-03 11:48:58 +08:00
2b98fefa69 Merge branch 'feat-xjj-aschatFunction#A116' into dev 2025-09-01 14:23:03 +08:00
9a9cb3b1f0 Merge branch 'feat-xjj-aschatFunction#A116' into dev 2025-09-01 14:16:32 +08:00
1ff87b20da Merge branch 'feat-xjj-aschatFunction#A116' into dev 2025-09-01 14:02:35 +08:00
6d8af40575 Merge branch 'feat-xjj-aschatFunction#A116' into dev 2025-09-01 13:52:14 +08:00
5f059c1d7c Merge branch 'feat-xjj-aschatFunction#A116' into dev 2025-09-01 11:15:31 +08:00
14956c06de Merge branch 'jng' into dev 2025-08-27 11:29:07 +08:00
a264630b2c Merge branch 'jng' into dev 2025-08-27 10:23:59 +08:00
0488918026 fix: 解决冲突 2025-08-21 14:25:16 +08:00
sxy
4616d066d8 Merge branch 'feat-sxy-import' into dev 2025-08-12 17:02:56 +08:00
69bbc5a090 Merge branch 'jng' into dev 2025-08-12 12:00:21 +08:00
sxy
db0c064828 Merge branch 'feat-sxy-import' into dev 2025-08-12 10:25:15 +08:00
sxy
6773cc62e7 Merge branch 'feat-sxy-import' into dev 2025-08-11 16:58:47 +08:00
sxy
454d40cfd9 Merge branch 'dev' of https://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-08-11 16:42:42 +08:00
sxy
935dc4bc2c Merge branch 'feat-sxy-import' into dev 2025-08-11 16:42:33 +08:00
2151020f1a 解决冲突 2025-08-11 16:29:05 +08:00
sxy
d48b6fae1b Merge branch 'feat-sxy-import' into dev 2025-08-11 16:08:47 +08:00
sxy
0e458dc4e7 Merge branch 'feat-sxy-import' into dev 2025-08-11 15:50:34 +08:00
sxy
a8e2e4dfe2 Merge branch 'feat-sxy-import' into dev 2025-08-11 15:30:09 +08:00
sxy
1a9d6c0ede Merge branch 'feat-sxy-import' into dev 2025-08-11 13:30:25 +08:00
11592d8c90 Merge branch 'feature-multicast-daiyb' into dev 2025-08-07 11:59:37 +08:00
2846cdc1b2 Merge branch 'jng' into dev 2025-07-16 17:54:38 +08:00
sxy
a68ba46e51 Merge branch 'sxy-sec' into dev
"修改symbol"
2025-07-16 10:45:03 +08:00
11bc39be1b Merge branch 'jng' into dev 2025-07-11 09:40:20 +08:00
ac7dd44fd9 Merge branch 'jng' into dev 2025-07-08 16:21:20 +08:00
b33a776f93 解决冲突 2025-07-08 16:14:17 +08:00
866cce5bb6 Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 14:57:25 +08:00
fe6ac1be55 解决冲突 2025-07-08 14:20:38 +08:00
2c2c9499cc Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 13:51:40 +08:00
b2012fbaba Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 13:40:29 +08:00
sxy
bc9d7fe7ba Merge branch 'sxy-sec' into dev
"修改"
2025-07-08 13:03:13 +08:00
8e4a087310 Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 11:59:33 +08:00
e9c46e4a64 Merge remote-tracking branch 'origin/dev' into dev 2025-07-08 11:52:00 +08:00
d55abc66db Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 11:51:18 +08:00
sxy
4177a676b9 Merge branch 'sxy-sec' into dev
"修改sec"
2025-07-08 11:48:49 +08:00
2bc6a4f77c Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 11:18:04 +08:00
d8c083f5b6 Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 10:46:17 +08:00
0f1559f1cf Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 10:23:58 +08:00
d4bc9bae54 Merge branch 'feat-zjy-issue-013' into dev 2025-07-08 09:46:35 +08:00
82e5f92be2 解决冲突 2025-07-07 19:37:04 +08:00
9f03ac444e 合并数据 2025-07-07 15:34:00 +08:00
lzh
dd25bb3f4e Merge branch 'dev-lzh' into dev 2025-07-07 10:48:37 +08:00
lzh
cd9cd0dbd1 更新proto 2025-07-07 10:48:06 +08:00
eda4d7dd91 Merge branch 'jng' into dev 2025-07-03 16:53:33 +08:00
b761411203 Merge branch 'jng' into dev 2025-07-03 16:06:30 +08:00
07309ab587 Merge branch 'jng' into dev 2025-07-03 16:02:28 +08:00
852d2fbed4 Merge branch 'jng' into dev 2025-07-03 15:51:15 +08:00
b458105c4c Merge branch 'jng' into dev 2025-07-02 15:33:47 +08:00
db193ce55a Merge branch 'jng' into dev 2025-07-02 14:02:33 +08:00
lzh
a16f0b6d54 Merge branch 'dev-lzh' into dev 2025-06-26 16:12:58 +08:00
87db2d6ce3 Merge branch 'feature-multicast-daiyb' into dev 2025-06-26 09:21:32 +08:00
lzh
5ae25cabc6 添加日志打印 2025-06-26 09:08:08 +08:00
lzh
e4d6b5de90 Merge branch 'dev-lzh' into dev 2025-06-25 16:52:19 +08:00
afcc29ba80 Merge branch 'jng' into dev 2025-06-25 16:31:32 +08:00
df3c90476b Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-25 15:51:30 +08:00
4cc70d4b2f Merge branch 'chat' into dev 2025-06-25 15:50:03 +08:00
ada34794e3 解决冲突 2025-06-25 15:34:14 +08:00
lzh
ea89bdbe02 Merge branch 'dev-lzh' into dev 2025-06-25 15:24:33 +08:00
0a9d8f628d Merge branch 'feature-multicast-daiyb' into dev 2025-06-25 11:09:30 +08:00
f26492218b Merge branch 'feature-multicast-daiyb' into dev 2025-06-24 18:28:17 +08:00
8f987dff52 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-24 16:38:50 +08:00
0545372341 Merge branch 'feature-multicast-daiyb' into dev 2025-06-24 16:38:41 +08:00
sxy
ac18e084f3 Merge branch 'sxy' into dev 2025-06-24 16:05:03 +08:00
b2133c6d90 解决冲突 2025-06-24 15:54:18 +08:00
749ce934e8 Merge branch 'feature-multicast-daiyb' into dev 2025-06-24 15:44:16 +08:00
lzh
cd726f2987 Merge branch 'dev-lzh' into dev 2025-06-24 15:17:41 +08:00
00a9acdb9b Merge branch 'jng' into dev 2025-06-24 14:39:06 +08:00
sxy
b46400d15c Merge branch 'sxy' into dev 2025-06-24 14:26:53 +08:00
2b5dd8d977 Merge branch 'feature-multicast-daiyb' into dev 2025-06-24 13:56:56 +08:00
e48016fc4c 修改 2025-06-24 13:44:46 +08:00
953eb4b419 Merge branch 'feature-multicast-daiyb' into dev 2025-06-24 13:20:24 +08:00
b4c90f4d18 Merge branch 'jng' into dev 2025-06-24 10:59:42 +08:00
lzh
f8b5df1f42 Merge branch 'dev-lzh' into dev 2025-06-24 09:42:24 +08:00
lzh
1d3f2cd0f7 删除调试信息 2025-06-24 09:41:24 +08:00
lzh
cdf2af27ba 调试 2025-06-23 16:45:59 +08:00
lzh
c60e04454a 调试 2025-06-23 16:40:17 +08:00
lzh
9c97c426d6 删除调试 2025-06-23 16:31:10 +08:00
sxy
4f0fcc77a1 Merge branch 'sxy' into dev 2025-06-23 16:29:00 +08:00
lzh
5291bb489a 调试 2025-06-23 16:27:31 +08:00
lzh
8082f229f4 Merge branch 'dev-lzh' into dev 2025-06-23 16:17:19 +08:00
19baa34ca5 Merge branch 'feat-zjy-issue-008' into dev 2025-06-23 15:54:28 +08:00
d5546933f9 修改 2025-06-23 15:40:00 +08:00
80759ec111 解决冲突 2025-06-23 15:32:57 +08:00
5c92a1fef7 Merge branch 'jng' into dev 2025-06-23 15:15:46 +08:00
lzh
08a12459e6 更新proto 2025-06-23 14:14:18 +08:00
c34cc285bb Merge branch 'feature-multicast-daiyb' into dev 2025-06-20 16:42:04 +08:00
lzh
c0ff047f66 proto 更新 2025-06-20 16:28:21 +08:00
ae33bf910a 修改 2025-06-20 15:52:44 +08:00
sxy
df829bb4d9 Merge branch 'sxy' into dev 2025-06-20 15:30:38 +08:00
sxy
96b04aa609 Merge branch 'sxy' into dev 2025-06-20 14:58:06 +08:00
sxy
74f71fb0b6 Merge branch 'sxy' into dev 2025-06-20 13:12:01 +08:00
9cd32ec899 Merge remote-tracking branch 'origin/dev' into dev 2025-06-20 11:49:11 +08:00
18161e8528 Merge branch 'feat-zjy-issue-008' into dev 2025-06-20 11:48:42 +08:00
sxy
fa898aee00 Merge branch 'sxy' into dev 2025-06-20 11:42:21 +08:00
c56465dd18 Merge branch 'feat-zjy-issue-008' into dev 2025-06-20 11:27:21 +08:00
sxy
2b6c2123c9 Merge branch 'sxy' into dev 2025-06-20 11:15:16 +08:00
c478f4015a Merge remote-tracking branch 'origin/dev' into dev 2025-06-20 11:13:21 +08:00
1334fcaa4c Merge branch 'feature-multicast-daiyb' into dev 2025-06-20 11:12:10 +08:00
f1d81778d0 Merge branch 'feat-zjy-issue-008' into dev 2025-06-20 11:12:00 +08:00
9bb1cbc840 Merge branch 'feat-zjy-issue-008' into dev 2025-06-20 10:24:18 +08:00
lzh
139901467f Merge branch 'dev-lzh' into dev 2025-06-20 09:44:39 +08:00
851fdc5098 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-19 16:43:08 +08:00
8c2cff4973 Update handler.go 2025-06-19 16:42:42 +08:00
sxy
af9c443686 Merge branch 'sxy' into dev 2025-06-19 16:24:11 +08:00
0885aa1ed0 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-19 16:19:27 +08:00
5d8b72b499 fix: 解决冲突 2025-06-19 16:17:32 +08:00
9f7f818e79 修改 2025-06-19 16:05:12 +08:00
60498f8af9 解决冲突 2025-06-19 15:34:17 +08:00
lzh
cf95f2b9fe Merge branch 'dev-lzh' into dev 2025-06-19 15:13:41 +08:00
lzh
f3882fd709 更新proto 2025-06-19 15:11:05 +08:00
lzh
de98e69033 Merge branch 'dev-lzh' into dev 2025-06-19 15:06:08 +08:00
e03bd54b11 fix: 解决冲突 2025-06-19 14:41:13 +08:00
4c842559a7 Update chat.go 2025-06-19 14:14:11 +08:00
ef57eb0e89 Update chat.go 2025-06-19 14:09:37 +08:00
e994c11e29 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-19 14:05:00 +08:00
b1a7e1f2de Update robot.go 2025-06-19 14:04:41 +08:00
d1191753f3 Merge branch 'feat-zjy-issue-008' into dev 2025-06-19 13:57:52 +08:00
1723ba99dd Update robot.go 2025-06-19 13:56:53 +08:00
e66f33b1a9 Update ruler_keywords.go 2025-06-19 13:50:44 +08:00
a6c7544b91 fix: 增加日志 2025-06-19 13:43:07 +08:00
9bb4bec9f8 fix: 覆盖聊天相关代码 2025-06-19 13:23:56 +08:00
0e99dc7a0b Update chatRoom.go 2025-06-19 12:41:11 +08:00
ebaeac28fb Merge branch 'chat' into dev 2025-06-19 12:35:11 +08:00
fe755bbe13 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-19 11:55:04 +08:00
sxy
5c8a7ac056 Merge branch 'sxy' into dev 2025-06-19 11:53:58 +08:00
bc795d3f20 Update handler.go 2025-06-19 11:53:53 +08:00
55b6ae810d debug1 2025-06-19 11:45:55 +08:00
e0b15430be Update ruler_keywords.go 2025-06-19 11:41:31 +08:00
c4a50362f5 Update chat.go 2025-06-19 11:32:57 +08:00
2455067913 Merge branch 'chat' into dev 2025-06-19 11:31:46 +08:00
24b5560c9c Merge branch 'chat' into dev 2025-06-19 11:14:02 +08:00
d2eefbb646 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-19 11:12:52 +08:00
4afa15ee3f Merge branch 'chat' into dev 2025-06-19 11:12:27 +08:00
a093585416 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-19 11:05:29 +08:00
9e1080659a Merge branch 'feature-multicast-daiyb' into dev 2025-06-19 11:05:21 +08:00
c0148238f0 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-19 11:04:32 +08:00
c33833b008 fix: 解决冲突 2025-06-19 11:04:13 +08:00
bacedd206f Merge branch 'jng' into dev 2025-06-19 10:34:02 +08:00
8ad6668748 Merge remote-tracking branch 'origin/dev' into dev 2025-06-19 09:53:44 +08:00
ca70a92538 fix: debug4 2025-06-19 09:52:34 +08:00
789c1dc81c Merge branch 'feat-zjy-issue-008' into dev 2025-06-19 09:52:32 +08:00
49c9232323 debug3 2025-06-19 09:50:41 +08:00
98bd564928 fix: debug2 2025-06-19 09:23:08 +08:00
d8a43a6720 fix: debug 2025-06-19 09:15:10 +08:00
e28cdceb50 Merge branch 'chat' into dev 2025-06-18 20:07:06 +08:00
76a0ea3c01 Merge branch 'chat' into dev 2025-06-18 19:57:58 +08:00
8cd7d57488 Merge branch 'chat' into dev 2025-06-18 19:53:20 +08:00
bfe244450b Merge branch 'chat' into dev 2025-06-18 19:50:02 +08:00
b858a599d0 Merge branch 'chat' into dev 2025-06-18 19:47:58 +08:00
345a93b149 Merge branch 'chat' into dev 2025-06-18 17:52:39 +08:00
b3900e0735 Merge branch 'chat' into dev 2025-06-18 16:58:07 +08:00
3983538606 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-18 16:43:52 +08:00
4664da0d1c Merge branch 'chat' into dev 2025-06-18 16:43:34 +08:00
492fdfeee2 Merge branch 'feat-zjy-issue-008' into dev 2025-06-18 16:28:30 +08:00
e47651247f Merge branch 'chat' into dev 2025-06-18 16:19:53 +08:00
79ec11f0de Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-18 16:12:30 +08:00
97753f0578 fix: 解决冲突 2025-06-18 16:12:10 +08:00
sxy
2b013f5269 Merge branch 'sxy' into dev 2025-06-18 15:51:52 +08:00
244901bf6a Merge branch 'chat' into dev 2025-06-18 15:33:20 +08:00
9b13f753e6 Merge branch 'chat' into dev 2025-06-18 15:27:38 +08:00
50851aa303 Merge branch 'chat' into dev 2025-06-18 15:17:35 +08:00
b89b86be5d Merge branch 'chat' into dev 2025-06-18 14:22:47 +08:00
f1db70cd83 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-18 12:04:56 +08:00
59ba69477b Merge branch 'chat' into dev 2025-06-18 12:04:36 +08:00
sxy
577e4d399c Merge branch 'sxy' into dev 2025-06-18 11:42:22 +08:00
sxy
e4554dd0ad Merge branch 'sxy-sec' into dev 2025-06-17 18:30:56 +08:00
4e9091bd4b Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-17 16:14:55 +08:00
b4960fb7c2 Merge branch 'chat' into dev 2025-06-17 16:14:35 +08:00
b2e9b0c2d1 Merge branch 'jng' into dev 2025-06-17 15:40:00 +08:00
sxy
ec7be8fde0 Merge branch 'sxy-sec' into dev 2025-06-17 14:46:24 +08:00
lzh
cb707c96e1 Merge branch 'dev-lzh' into dev 2025-06-17 14:28:29 +08:00
90504c8c0c Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-17 14:26:41 +08:00
13e19d8650 Merge branch 'chat' into dev 2025-06-17 14:26:26 +08:00
sxy
64f151d87f Merge branch 'sxy-sec' into dev 2025-06-17 14:21:33 +08:00
sxy
d4eebacbda Merge branch 'sxy-sec' into dev 2025-06-17 14:07:50 +08:00
8311d0cc99 Update logging.go 2025-06-17 11:31:53 +08:00
57b2e587e7 Merge branch 'chat' into dev 2025-06-17 11:28:09 +08:00
fad92b5991 Merge branch 'chat' into dev 2025-06-17 11:22:05 +08:00
086fe399e4 fix: 解决冲突 2025-06-17 10:55:54 +08:00
dc8a872e5e Update conf.ini 2025-06-17 10:28:07 +08:00
79a61043e9 Update conf.ini 2025-06-17 10:20:19 +08:00
17b8f61968 Merge branch 'chat' into dev 2025-06-17 10:14:40 +08:00
sxy
b59f4e9395 Merge branch 'sxy-sec' into dev 2025-06-17 10:07:53 +08:00
cc295e64b5 Merge branch 'chat' into dev 2025-06-17 10:06:38 +08:00
268bb183f4 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-17 09:32:23 +08:00
96ed290f62 Merge branch 'chat' into dev 2025-06-17 09:31:58 +08:00
sxy
96db32a381 Merge branch 'sxy' into dev 2025-06-17 09:27:42 +08:00
6d975266a6 Merge branch 'chat' into dev 2025-06-17 09:13:40 +08:00
dded072bad Update chatAutoReplyRulerHandler.go 2025-06-16 19:32:08 +08:00
55a2197ad4 Merge branch 'chat' into dev 2025-06-16 18:29:21 +08:00
47da1435ae Merge branch 'chat' into dev 2025-06-16 17:58:27 +08:00
7c75f0722a Merge branch 'chat' into dev 2025-06-16 16:18:17 +08:00
aecacb623b 解决冲突 2025-06-16 16:11:55 +08:00
0af5d7b5dc Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-16 15:52:58 +08:00
a38cc36e51 Merge branch 'chat' into dev 2025-06-16 15:52:06 +08:00
lzh
2dcdd8fb7f Merge branch 'dev-lzh' into dev 2025-06-16 15:33:04 +08:00
de557a8ac0 Merge branch 'chat' into dev 2025-06-16 15:22:57 +08:00
5a6c8591d2 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-16 15:04:57 +08:00
7fbf4864f1 Merge branch 'chat' into dev 2025-06-16 15:04:32 +08:00
sxy
6d3ec1ac10 Merge branch 'sxy-sec' into dev 2025-06-16 14:32:29 +08:00
sxy
4e44c0ca06 Merge branch 'sxy-sec' into dev 2025-06-16 14:26:18 +08:00
lzh
cfaaf818c8 Merge branch 'dev-lzh' into dev 2025-06-16 14:11:17 +08:00
48a85b000c Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-16 14:04:00 +08:00
4c758f2045 fix: 解决冲突 2025-06-16 14:03:38 +08:00
cebf285f8e Merge branch 'feat-zjy-issue-008' into dev 2025-06-16 13:57:49 +08:00
lzh
16661dfe33 Merge branch 'dev-lzh' into dev 2025-06-16 13:55:55 +08:00
lzh
24c3d1c894 Merge branch 'dev-lzh' into dev 2025-06-16 13:47:32 +08:00
lzh
653fe27066 冲突解决 2025-06-16 13:42:46 +08:00
lzh
bef76dc3f0 添加套餐金额类型 2025-06-16 13:35:46 +08:00
sxy
d0a93eb229 Merge branch 'sxy' into dev 2025-06-16 13:22:53 +08:00
lzh
2d793324f1 解决突出 2025-06-16 13:15:11 +08:00
lzh
909a44682b Merge branch 'dev-lzh' into dev 2025-06-16 13:09:37 +08:00
98b0893b0c Merge branch 'feat-zjy-issue-008' into dev 2025-06-16 13:06:01 +08:00
467b126590 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-16 11:53:08 +08:00
505216a1b3 Merge branch 'feature-multicast-daiyb' into dev 2025-06-16 11:52:48 +08:00
sxy
8247a52343 Merge branch 'sxy-sec' into dev 2025-06-16 11:48:25 +08:00
7dcf40675f Merge branch 'feature-multicast-daiyb' into dev 2025-06-16 11:38:06 +08:00
a5d6e45cd1 Merge branch 'jng' into dev 2025-06-16 11:19:50 +08:00
40c0a9d65f Merge branch 'feature-multicast-daiyb' into dev 2025-06-16 11:06:32 +08:00
lzh
033d9ba023 Merge branch 'dev-lzh' into dev 2025-06-16 10:20:24 +08:00
fe8f3498cd fix: 调整代码,创建支付的时候加入创建对账单。支付成功通知时更新对账单 2025-06-16 10:04:27 +08:00
35712fdbe2 Merge branch 'feat-zjy-issue-008' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
#	api/bundle/bundle_triple.pb.go
2025-06-16 10:03:06 +08:00
248d707026 Merge branch 'chat' into dev 2025-06-16 09:58:57 +08:00
eea71f6e5a Merge branch 'chat' into dev 2025-06-16 09:55:25 +08:00
d543628d86 Merge branch 'chat' into dev 2025-06-16 09:52:18 +08:00
d93c911334 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-16 09:44:33 +08:00
5954f86213 Merge branch 'chat' into dev 2025-06-16 09:44:06 +08:00
lzh
7747672842 Merge branch 'dev-lzh' into dev 2025-06-16 09:35:03 +08:00
sxy
1648689c02 Merge branch 'sxy-sec' into dev 2025-06-16 09:31:40 +08:00
43d3e83593 Merge branch 'chat' into dev 2025-06-16 00:17:17 +08:00
808f7cce3e Update wsMessageHandle.go 2025-06-16 00:16:48 +08:00
f9807d039a Update wsMessageHandle.go 2025-06-16 00:09:44 +08:00
33ce4c7123 Merge branch 'chat' into dev 2025-06-16 00:04:40 +08:00
6bbe1319b8 解决冲突 2025-06-15 23:57:57 +08:00
f3eba25a43 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-15 23:23:57 +08:00
b3c8008b29 解决冲突 2025-06-15 23:23:11 +08:00
49137828da Merge branch 'feat-zjy-issue-008' into dev 2025-06-15 20:57:25 +08:00
1988c49b82 Merge branch 'feature-multicast-daiyb' into dev 2025-06-15 20:46:23 +08:00
3b6e0e6310 Merge branch 'chat' into dev 2025-06-15 20:22:08 +08:00
e0644769f5 Merge branch 'chat' into dev 2025-06-15 20:16:45 +08:00
5fd70717d4 Update common.go 2025-06-15 20:11:53 +08:00
5131c182a5 Merge branch 'chat' into dev 2025-06-15 20:05:42 +08:00
c094790cd3 Update wsMessageHandle.go 2025-06-15 19:59:53 +08:00
01bd9736e0 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-15 19:56:48 +08:00
98c6a72f96 fix: 完成用户进入聊天室直接回复 2025-06-15 19:56:32 +08:00
aa6dca6f1f fix: 处理冲突 2025-06-15 19:22:55 +08:00
ce95cface5 Merge branch 'feat-zjy-issue-008' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
#	pkg/router/bundle.go
#	pkg/service/bundle/bundleProfile.go
2025-06-15 19:22:14 +08:00
13b51cadf8 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-15 18:35:25 +08:00
63620fdda4 fix: 修复domain配置错误的问题 2025-06-15 18:35:08 +08:00
e23f39c6ac fix: detail接口增加addBundle的字段 2025-06-15 18:32:36 +08:00
2276144fc4 Merge branch 'feat-zjy-issue-008' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
2025-06-15 18:31:52 +08:00
c347c7d81d fix: debug 2025-06-15 18:28:21 +08:00
8817680689 Update handler.go 2025-06-15 18:20:48 +08:00
e6920fe595 Update handler.go 2025-06-15 17:18:44 +08:00
21b0c2cc49 Merge branch 'chat' into dev 2025-06-15 17:07:34 +08:00
1979ac7530 Merge branch 'chat' into dev 2025-06-15 16:23:58 +08:00
a295762f37 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-15 16:03:08 +08:00
2151a8e42b Merge branch 'chat' into dev 2025-06-15 16:02:45 +08:00
f60f7c4a6a Merge branch 'jng' into dev 2025-06-15 15:59:46 +08:00
lzh
7e9f25fffe Merge branch 'dev-lzh' into dev 2025-06-15 15:54:04 +08:00
729c9e661c 解决冲突 2025-06-15 15:32:25 +08:00
lzh
aa08c15e2a Merge branch 'dev-lzh' into dev 2025-06-15 15:12:49 +08:00
8ad73a8874 fix: 调整配置文件,只能dev改,master上没有 2025-06-15 15:03:53 +08:00
lzh
c84fb621a9 作品状态判断 2025-06-15 15:00:14 +08:00
lzh
325d14d913 Merge branch 'dev-lzh' into dev 2025-06-15 14:58:36 +08:00
lzh
45a3751914 删除调试日志 2025-06-15 14:56:01 +08:00
1dd8ccf3b7 Merge remote-tracking branch 'origin/dev' into dev 2025-06-15 14:55:25 +08:00
2734e4572f fix: 处理proto冲突 2025-06-15 14:55:09 +08:00
15ddf58f55 Merge branch 'feat-zjy-issue-008' into dev
# Conflicts:
#	api/bundle/bundle.pb.go
#	api/bundle/bundle_triple.pb.go
#	docs/dev/dubbogo.yaml
#	pkg/service/init.go
2025-06-15 14:53:47 +08:00
lzh
4b9e6eb7bd 调试日志打印 2025-06-15 14:51:51 +08:00
lzh
549a557bf2 Merge branch 'dev-lzh' into dev 2025-06-15 14:28:40 +08:00
lzh
966790326e Merge branch 'dev-lzh' into dev 2025-06-15 13:58:15 +08:00
ef18264bf8 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-15 13:33:15 +08:00
426b65537f fix: update 2025-06-15 13:33:00 +08:00
lzh
0d46dd75d8 冲突解决 2025-06-15 12:56:05 +08:00
lzh
3fbc1e6ef4 冲突解决 2025-06-15 12:54:02 +08:00
3a00260038 Update common.go 2025-06-15 12:45:28 +08:00
lzh
26c0056b12 Merge branch 'dev-lzh' into dev 2025-06-15 12:22:38 +08:00
e8645e6515 Merge branch 'feature-multicast-daiyb' into dev 2025-06-15 12:13:04 +08:00
a413806363 Update common.go 2025-06-15 11:45:41 +08:00
f1d411c6bc Update wsMessageHandle.go 2025-06-15 11:37:15 +08:00
71ef73bec6 fix: 调试token 2025-06-15 11:24:49 +08:00
3f43441c4f Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-15 10:21:29 +08:00
c665b2190c Merge branch 'chat' into dev 2025-06-15 10:21:11 +08:00
abc498f656 解决冲突 2025-06-15 10:09:39 +08:00
5cfbfb687d Merge branch 'chat' into dev 2025-06-14 19:58:18 +08:00
0839151de0 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-14 19:54:15 +08:00
5f1b85bbb4 Merge branch 'chat' into dev 2025-06-14 19:53:58 +08:00
64f73ca075 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-14 19:48:08 +08:00
ec631334d6 APP接口 2025-06-14 19:47:36 +08:00
87ebd0be56 Update common.go 2025-06-14 19:38:33 +08:00
342b49ab18 Merge branch 'chat' into dev 2025-06-14 19:31:00 +08:00
0b1c014533 Merge branch 'chat' into dev 2025-06-14 19:15:20 +08:00
2177d33587 Merge branch 'chat' into dev 2025-06-14 18:58:16 +08:00
f199ff7b3d Update common.go 2025-06-14 18:40:59 +08:00
eb5e30be88 Update common.go 2025-06-14 18:26:48 +08:00
e879989ef6 fix: update 2025-06-14 18:12:13 +08:00
c1ba3f348a Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-14 17:41:29 +08:00
8bacafbdfe Merge branch 'chat' into dev 2025-06-14 17:40:41 +08:00
sxy
0f59144fa8 Merge branch 'sxy' into dev 2025-06-14 17:40:19 +08:00
e100345bb8 Merge branch 'chat' into dev 2025-06-14 17:28:00 +08:00
f4ae80f326 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-14 17:20:11 +08:00
25d9db05ef Update accountFiee.proto 2025-06-14 17:18:37 +08:00
bc8d915944 Merge branch 'chat' into dev 2025-06-14 17:18:25 +08:00
sxy
b06f24d06e Merge branch 'sxy' into dev 2025-06-14 17:10:40 +08:00
sxy
9a0a28b633 Merge branch 'sxy' into dev 2025-06-14 17:09:33 +08:00
sxy
dcf041ad9d Merge branch 'sxy' into dev 2025-06-14 17:07:09 +08:00
sxy
623584225d Revert "Merge branch 'sxy' into dev"
This reverts commit 9301c78060, reversing
changes made to fe3f693925.
2025-06-14 16:43:59 +08:00
sxy
9301c78060 Merge branch 'sxy' into dev 2025-06-14 16:41:35 +08:00
fe3f693925 Merge branch 'chat' into dev 2025-06-14 16:32:48 +08:00
cbded7c26a Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-14 16:07:13 +08:00
lzh
8a441851b3 1 2025-06-14 16:04:48 +08:00
d564fd2c59 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-14 15:58:13 +08:00
1a207a8d53 Merge branch 'chat' into dev 2025-06-14 15:57:09 +08:00
lzh
380c7b95ce 1 2025-06-14 15:53:01 +08:00
lzh
9f27882072 Merge branch 'dev-lzh' into dev 2025-06-14 15:43:04 +08:00
b523c46cde 解决冲突 2025-06-14 15:25:09 +08:00
2b212d2903 Merge branch 'chat' into dev 2025-06-14 15:12:15 +08:00
13fc02b8ba Merge branch 'chat' into dev 2025-06-14 15:05:00 +08:00
8f137abf30 Merge branch 'chat' into dev 2025-06-14 14:59:25 +08:00
5706c238a4 Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-14 14:49:31 +08:00
75231bab91 fix: 解决冲突 2025-06-14 14:48:34 +08:00
cef7e50112 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-14 14:45:11 +08:00
8de086333c Merge branch 'feature-multicast-daiyb' into dev 2025-06-14 14:45:04 +08:00
lzh
dbe63508f7 Merge branch 'dev-lzh' into dev 2025-06-14 14:27:18 +08:00
0084f27e1b Merge branch 'feature-multicast-daiyb' into dev 2025-06-14 14:11:43 +08:00
lzh
d1468434b6 Merge branch 'dev-lzh' into dev 2025-06-14 13:54:16 +08:00
lzh
4e89a5830a 添加时间扩展单位 2025-06-14 11:31:30 +08:00
58b0ca77e1 Merge branch 'jng' into dev 2025-06-14 11:29:27 +08:00
lzh
4f9f8e66db 解决冲突 2025-06-14 10:33:53 +08:00
8196e14159 Merge branch 'jng' into dev 2025-06-14 10:23:16 +08:00
lzh
d4e00229fa Merge branch 'dev-lzh' into dev 2025-06-14 09:50:35 +08:00
36dc2dd194 解决冲突 2025-06-13 22:39:14 +08:00
2b30a246c4 修改 2025-06-13 19:57:31 +08:00
ec0ad25aec 解决冲突 2025-06-13 19:29:19 +08:00
829928da9b 添加审批 2025-06-13 19:02:00 +08:00
sxy
fb4afd8441 Merge branch 'sxy' into dev 2025-06-13 16:49:29 +08:00
2e46cfaacd Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-13 15:29:37 +08:00
8570541f76 Merge branch 'chat' into dev 2025-06-13 15:29:12 +08:00
sxy
4cb62a474e Merge branch 'sxy-sec' into dev 2025-06-13 15:00:53 +08:00
sxy
1b1db8e0aa Merge branch 'sxy-sec' into dev 2025-06-13 14:44:43 +08:00
lzh
e0415bb4a2 解决冲突 2025-06-13 14:37:23 +08:00
lzh
d8ef69090d Merge branch 'dev-lzh' into dev 2025-06-13 14:35:27 +08:00
ebe28dc56c 修改 2025-06-13 14:32:41 +08:00
lzh
fd6d763431 添加扩展、余量接口 2025-06-13 14:23:06 +08:00
c22977816b 解决冲突 2025-06-13 14:16:35 +08:00
126360113d Merge branch 'dev' of http://gitea-inner.fontree.cn/fiee/fonchain-fiee into dev 2025-06-13 11:05:18 +08:00
3e80d15355 Merge branch 'chat' into dev 2025-06-13 11:04:47 +08:00
sxy
7ea561bb01 Merge branch 'sxy-sec' into dev 2025-06-13 10:54:13 +08:00
sxy
efdebf8949 Merge branch 'sxy-sec' into dev 2025-06-13 10:49:32 +08:00
0c7db6d312 Merge branch 'chat' into dev 2025-06-13 10:44:36 +08:00
71e504afc5 Merge branch 'chat' into dev 2025-06-13 10:30:23 +08:00
lzh
896145b718 Merge branch 'dev-lzh' into dev 2025-06-12 19:47:06 +08:00
lzh
f381ffa185 Merge branch 'dev-lzh' into dev 2025-06-12 19:42:19 +08:00
637cad4298 fix: 解决go.mod 冲突 2025-06-12 19:38:03 +08:00
lzh
f1100ddfc9 Merge branch 'dev-lzh' into dev 2025-06-12 19:23:49 +08:00
lzh
952d803bf8 Merge branch 'dev-lzh' into dev 2025-06-12 19:01:42 +08:00
9718cd7c67 临时注释 2025-06-12 18:50:28 +08:00
3fb1c12bef 解决冲突 2025-06-12 18:16:31 +08:00
a1679a8a24 解决冲突 2025-06-12 16:40:38 +08:00
lzh
7edf18a252 Merge branch 'dev-lzh' into dev 2025-06-12 14:36:37 +08:00
lzh
08434eca48 Merge branch 'dev-lzh' into dev 2025-06-12 13:46:49 +08:00
sxy
860da58df4 Merge branch 'sxy' into dev 2025-06-12 11:59:37 +08:00
b65f78dc12 Merge branch 'feature-multicast-daiyb' into dev 2025-06-12 11:38:43 +08:00
sxy
7241ff16c9 Merge branch 'sxy' into dev 2025-06-12 10:20:42 +08:00
lzh
4311ce978a Merge branch 'dev-lzh' into dev 2025-06-11 18:16:22 +08:00
lzh
da7b5edb6e Merge branch 'dev-lzh' into dev 2025-06-11 17:51:52 +08:00
2efd3f2b21 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-11 17:03:13 +08:00
df8f611f5a Merge branch 'feature-multicast-daiyb' into dev 2025-06-11 17:02:42 +08:00
lzh
30a2a9d57c Merge branch 'dev-lzh' into dev 2025-06-11 16:56:33 +08:00
lzh
b8355c0e27 删除调试信息 2025-06-11 16:55:46 +08:00
080b475826 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-11 16:52:29 +08:00
e1f4d82f31 Merge branch 'feature-multicast-daiyb' into dev 2025-06-11 16:52:22 +08:00
lzh
949be8efaa 添加调试信息 2025-06-11 16:48:38 +08:00
lzh
5aa145bf1a 添加调试信息 2025-06-11 16:44:37 +08:00
lzh
329098d07b 添加调试信息 2025-06-11 16:41:13 +08:00
sxy
56f2a8d40b Merge branch 'sxy' into dev 2025-06-11 16:24:01 +08:00
7dbef64c91 Merge branch 'dev' of http://172.16.100.91:3000/fiee/fonchain-fiee into dev 2025-06-11 16:11:38 +08:00
53127451c9 Merge branch 'feature-multicast-daiyb' into dev 2025-06-11 16:11:31 +08:00
lzh
3e62057d29 Merge branch 'dev-lzh' into dev 2025-06-11 15:57:28 +08:00
sxy
0ff31f98d3 Merge branch 'sxy' into dev 2025-06-11 15:56:08 +08:00
lzh
382f7fe980 Merge branch 'dev-lzh' into dev 2025-06-11 15:40:22 +08:00
lzh
feefda874a 删除无用依赖 2025-06-11 14:54:08 +08:00
a725fb7d98 解决冲突 2025-06-11 14:34:40 +08:00
lzh
9289953613 Merge branch 'dev-lzh' into dev 2025-06-11 14:14:04 +08:00
sxy
1b4e4e72a9 Merge branch 'sxy' into dev 2025-06-11 11:01:32 +08:00
sxy
7edf15d6a1 "修改输出格式" 2025-06-11 11:00:02 +08:00
7eb9c9cfe7 Merge branch 'feature-multicast-daiyb' into dev 2025-06-11 10:31:47 +08:00
1e9fdf8bb8 1 2025-06-11 10:03:43 +08:00
5d19fb261d 修改字段 2025-06-11 09:55:07 +08:00
69212549c5 合并 2025-06-11 09:22:49 +08:00
fb60eba3e9 合并 2025-06-11 09:19:55 +08:00
1fa862b85d 解决冲突 2025-06-10 16:17:09 +08:00
sxy
8629decdc0 Merge branch 'sxy' into dev 2025-06-10 15:03:04 +08:00
sxy
b9a6923511 修改冲突 2025-06-10 14:52:42 +08:00
sxy
289c5937c5 "套餐修改" 2025-06-10 14:05:57 +08:00
87 changed files with 12333 additions and 33276 deletions

View File

@ -4,7 +4,7 @@
13111111112 测试-陆嘉骅2 视频 17315042007 测试-陆嘉骅2 视频
13196788678 Aa.123456 脚本 13196788678 Aa.123456 脚本

File diff suppressed because it is too large Load Diff

View File

@ -66,9 +66,6 @@ service AccountFiee {
rpc SendNationMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // -- rpc SendNationMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // --
rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}// rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}//
rpc SendNationTemplateMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // -- rpc SendNationTemplateMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // --
rpc GetInviterInfo(InviterInfoRequest) returns(InviterInfoResponse) {} //
rpc GetInviterList(InviterListRequest) returns(InviterListResponse) {} //
rpc WriteOff (WriteOffRequest) returns (RemoveResponse) {} //
rpc CreateUserAndRealName (CreateUserAndRealNameRequest) returns (CreateUserAndRealNameResponse) {}// , rpc CreateUserAndRealName (CreateUserAndRealNameRequest) returns (CreateUserAndRealNameResponse) {}// ,
@ -104,21 +101,7 @@ service AccountFiee {
rpc GetChatAutoReplyRulerDetail ( GetChatAutoReplyRulerByIdRequest )returns( ChatAutoReplyRulerData ){} // rpc GetChatAutoReplyRulerDetail ( GetChatAutoReplyRulerByIdRequest )returns( ChatAutoReplyRulerData ){} //
rpc GetChatAutoReplyRulerList ( GetChatAutoReplyRulerListRequest )returns( GetChatAutoReplyRulerListResp ){} // rpc GetChatAutoReplyRulerList ( GetChatAutoReplyRulerListRequest )returns( GetChatAutoReplyRulerListResp ){} //
} }
message InviterListRequest{
repeated uint64 ids =1;
}
message InviterListResponse{
repeated InviterInfoResponse list = 1;
}
message InviterInfoRequest{
string code = 1;
}
message InviterInfoResponse{
uint64 id = 1;
string code = 2;
string name = 3;
string telNum = 4;
}
message VerifySliderStatusRequest { message VerifySliderStatusRequest {
string nonceStr = 1; string nonceStr = 1;
} }
@ -200,11 +183,6 @@ message UserListInfo{
string idNumber = 21; string idNumber = 21;
string dateOfBirth = 22; string dateOfBirth = 22;
string age = 23; string age = 23;
string email = 24;
string AbroadTelAreaCode = 25;
string AbroadTel = 26;
string inviterName = 27;
string inviterCode = 28;
} }
message UserListRequest{ message UserListRequest{
string domain = 1; string domain = 1;
@ -243,11 +221,6 @@ message UserInfoResponse{
string telAreaCode = 19; string telAreaCode = 19;
string idNumber = 20; string idNumber = 20;
string dateOfBirth = 21; string dateOfBirth = 21;
string email = 22;
string AbroadTelAreaCode = 23;
string AbroadTel = 24;
uint64 inviterId = 25;
} }
message RealNameResponse{ message RealNameResponse{
uint64 id = 1; uint64 id = 1;
@ -527,6 +500,20 @@ message RemoveRequest {
} }
message WriteOffRequest{ message WriteOffRequest{
uint64 id = 1; uint64 id = 1;
string domain = 2;
uint64 userId = 3;
string tel = 4;
string jonNum = 5;
string userName = 6;
string enterDate = 7;
string positionName =8;
uint64 positionId = 9;
string siteName = 10;
uint64 siteId =11;
string authUrl =12;
string type =13;
uint32 status =14;
string submitDate=15;
} }
message WriteOffListRequest{ message WriteOffListRequest{
uint64 page = 1; uint64 page = 1;
@ -554,9 +541,6 @@ message UpdateRequest {
string Domain = 2 [json_name = "domain"]; string Domain = 2 [json_name = "domain"];
string Language = 3 [json_name = "language"]; string Language = 3 [json_name = "language"];
string NickName = 4 [json_name = "nickName"]; string NickName = 4 [json_name = "nickName"];
string Email = 5 [json_name = "email"];
string AbroadTel = 6 [json_name = "abroadTel"];
string AbroadTelAreaCode = 7 [json_name = "abroadTelAreaCode"];
} }
message Operator { message Operator {
@ -648,8 +632,6 @@ message RegistRequest {
string telAreaCode = 5; string telAreaCode = 5;
string language = 6; string language = 6;
string nickName = 7; string nickName = 7;
uint64 inviterID = 8;
string inviterCode = 9;
} }
message LoginRequest { message LoginRequest {
@ -727,7 +709,6 @@ message AccountInfo {
string updatedAt = 41; string updatedAt = 41;
string SecurityCode = 42 [json_name = "securityCode"]; string SecurityCode = 42 [json_name = "securityCode"];
string BlockAddr = 43 [json_name = "blockAddr"]; string BlockAddr = 43 [json_name = "blockAddr"];
bool WriteOff = 44 [json_name = "writeOff"];
} }
message UserInfoV2 { message UserInfoV2 {

View File

@ -17,25 +17,6 @@ var _ = proto.Marshal
var _ = fmt.Errorf var _ = fmt.Errorf
var _ = math.Inf var _ = math.Inf
func (this *InviterListRequest) Validate() error {
return nil
}
func (this *InviterListResponse) 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 *InviterInfoRequest) Validate() error {
return nil
}
func (this *InviterInfoResponse) Validate() error {
return nil
}
func (this *VerifySliderStatusRequest) Validate() error { func (this *VerifySliderStatusRequest) Validate() error {
return nil return nil
} }

View File

@ -70,9 +70,6 @@ type AccountFieeClient interface {
SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment)
VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment) VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment)
SendNationTemplateMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendNationTemplateMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment)
GetInviterInfo(ctx context.Context, in *InviterInfoRequest, opts ...grpc_go.CallOption) (*InviterInfoResponse, common.ErrorWithAttachment)
GetInviterList(ctx context.Context, in *InviterListRequest, opts ...grpc_go.CallOption) (*InviterListResponse, common.ErrorWithAttachment)
WriteOff(ctx context.Context, in *WriteOffRequest, opts ...grpc_go.CallOption) (*RemoveResponse, common.ErrorWithAttachment)
CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment)
// submit info // submit info
SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
@ -151,9 +148,6 @@ type AccountFieeClientImpl struct {
SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error)
VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error)
SendNationTemplateMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationTemplateMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error)
GetInviterInfo func(ctx context.Context, in *InviterInfoRequest) (*InviterInfoResponse, error)
GetInviterList func(ctx context.Context, in *InviterListRequest) (*InviterListResponse, error)
WriteOff func(ctx context.Context, in *WriteOffRequest) (*RemoveResponse, error)
CreateUserAndRealName func(ctx context.Context, in *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) CreateUserAndRealName func(ctx context.Context, in *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error)
SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error) SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error)
CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error) CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error)
@ -442,24 +436,6 @@ func (c *accountFieeClient) SendNationTemplateMsg(ctx context.Context, in *SendN
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendNationTemplateMsg", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendNationTemplateMsg", in, out)
} }
func (c *accountFieeClient) GetInviterInfo(ctx context.Context, in *InviterInfoRequest, opts ...grpc_go.CallOption) (*InviterInfoResponse, common.ErrorWithAttachment) {
out := new(InviterInfoResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetInviterInfo", in, out)
}
func (c *accountFieeClient) GetInviterList(ctx context.Context, in *InviterListRequest, opts ...grpc_go.CallOption) (*InviterListResponse, common.ErrorWithAttachment) {
out := new(InviterListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetInviterList", in, out)
}
func (c *accountFieeClient) WriteOff(ctx context.Context, in *WriteOffRequest, opts ...grpc_go.CallOption) (*RemoveResponse, common.ErrorWithAttachment) {
out := new(RemoveResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/WriteOff", in, out)
}
func (c *accountFieeClient) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) { func (c *accountFieeClient) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) {
out := new(CreateUserAndRealNameResponse) out := new(CreateUserAndRealNameResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -674,9 +650,6 @@ type AccountFieeServer interface {
SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error)
VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error)
SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error)
GetInviterInfo(context.Context, *InviterInfoRequest) (*InviterInfoResponse, error)
GetInviterList(context.Context, *InviterListRequest) (*InviterListResponse, error)
WriteOff(context.Context, *WriteOffRequest) (*RemoveResponse, error)
CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error)
// submit info // submit info
SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error) SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error)
@ -838,15 +811,6 @@ func (UnimplementedAccountFieeServer) VerifySliderStatus(context.Context, *Verif
func (UnimplementedAccountFieeServer) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) { func (UnimplementedAccountFieeServer) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendNationTemplateMsg not implemented") return nil, status.Errorf(codes.Unimplemented, "method SendNationTemplateMsg not implemented")
} }
func (UnimplementedAccountFieeServer) GetInviterInfo(context.Context, *InviterInfoRequest) (*InviterInfoResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetInviterInfo not implemented")
}
func (UnimplementedAccountFieeServer) GetInviterList(context.Context, *InviterListRequest) (*InviterListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetInviterList not implemented")
}
func (UnimplementedAccountFieeServer) WriteOff(context.Context, *WriteOffRequest) (*RemoveResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method WriteOff not implemented")
}
func (UnimplementedAccountFieeServer) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) { func (UnimplementedAccountFieeServer) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateUserAndRealName not implemented") return nil, status.Errorf(codes.Unimplemented, "method CreateUserAndRealName not implemented")
} }
@ -2148,93 +2112,6 @@ func _AccountFiee_SendNationTemplateMsg_Handler(srv interface{}, ctx context.Con
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _AccountFiee_GetInviterInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(InviterInfoRequest)
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("GetInviterInfo", 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 _AccountFiee_GetInviterList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(InviterListRequest)
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("GetInviterList", 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 _AccountFiee_WriteOff_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(WriteOffRequest)
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("WriteOff", 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 _AccountFiee_CreateUserAndRealName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _AccountFiee_CreateUserAndRealName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateUserAndRealNameRequest) in := new(CreateUserAndRealNameRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -3218,18 +3095,6 @@ var AccountFiee_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "SendNationTemplateMsg", MethodName: "SendNationTemplateMsg",
Handler: _AccountFiee_SendNationTemplateMsg_Handler, Handler: _AccountFiee_SendNationTemplateMsg_Handler,
}, },
{
MethodName: "GetInviterInfo",
Handler: _AccountFiee_GetInviterInfo_Handler,
},
{
MethodName: "GetInviterList",
Handler: _AccountFiee_GetInviterList_Handler,
},
{
MethodName: "WriteOff",
Handler: _AccountFiee_WriteOff_Handler,
},
{ {
MethodName: "CreateUserAndRealName", MethodName: "CreateUserAndRealName",
Handler: _AccountFiee_CreateUserAndRealName_Handler, Handler: _AccountFiee_CreateUserAndRealName_Handler,

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"
) )

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"
) )
@ -40,9 +40,6 @@ func (this *QueryTheOrderSnapshotInformationResp) Validate() error {
func (this *ServiceInformation) Validate() error { func (this *ServiceInformation) Validate() error {
return nil return nil
} }
func (this *ReSignTheContractRequest) Validate() error {
return nil
}
func (this *DeleteValueAddServiceRequest) Validate() error { func (this *DeleteValueAddServiceRequest) Validate() error {
return nil return nil
} }
@ -740,9 +737,6 @@ func (this *SetPendingTaskLayoutReq) Validate() error {
func (this *SetPendingTaskLayoutResp) Validate() error { func (this *SetPendingTaskLayoutResp) Validate() error {
return nil return nil
} }
func (this *CreateTaskWorkLogRequest) Validate() error {
return nil
}
func (this *MetricsBusinessReq) Validate() error { func (this *MetricsBusinessReq) Validate() error {
return nil return nil
} }

View File

@ -50,7 +50,6 @@ type BundleClient interface {
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) 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) OnlyAddValueListByOrderNo(ctx context.Context, in *OnlyAddValueListByOrderNoRequest, opts ...grpc_go.CallOption) (*OnlyAddValueListByOrderNoResp, common.ErrorWithAttachment)
ReSignTheContract(ctx context.Context, in *ReSignTheContractRequest, opts ...grpc_go.CallOption) (*CommonResponse, 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)
@ -104,13 +103,6 @@ type BundleClient interface {
BatchAssignTask(ctx context.Context, in *BatchAssignTaskRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment) BatchAssignTask(ctx context.Context, in *BatchAssignTaskRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment)
BatchTerminateTask(ctx context.Context, in *BatchTerminateTaskRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment) BatchTerminateTask(ctx context.Context, in *BatchTerminateTaskRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment)
GetArtistUploadStatsList(ctx context.Context, in *TaskQueryRequest, opts ...grpc_go.CallOption) (*ArtistUploadStatsResponse, common.ErrorWithAttachment) GetArtistUploadStatsList(ctx context.Context, in *TaskQueryRequest, opts ...grpc_go.CallOption) (*ArtistUploadStatsResponse, common.ErrorWithAttachment)
GetPendingTaskLayout(ctx context.Context, in *GetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*GetPendingTaskLayoutResp, common.ErrorWithAttachment)
SetPendingTaskLayout(ctx context.Context, in *SetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*SetPendingTaskLayoutResp, common.ErrorWithAttachment)
GetPendingUploadBreakdown(ctx context.Context, in *PendingUploadBreakdownRequest, opts ...grpc_go.CallOption) (*PendingUploadBreakdownResponse, common.ErrorWithAttachment)
GetPendingAssign(ctx context.Context, in *PendingAssignRequest, opts ...grpc_go.CallOption) (*PendingAssignResponse, common.ErrorWithAttachment)
RevertTaskCompletionByUUIDItem(ctx context.Context, in *RevertTaskCompletionByUUIDItemRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment)
AddHiddenTaskAssignee(ctx context.Context, in *AddHiddenTaskAssigneeRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment)
CreateTaskWorkLog(ctx context.Context, in *CreateTaskWorkLogRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
// 数据指标 // 数据指标
MetricsBusiness(ctx context.Context, in *MetricsBusinessReq, opts ...grpc_go.CallOption) (*MetricsBusinessResp, common.ErrorWithAttachment) MetricsBusiness(ctx context.Context, in *MetricsBusinessReq, opts ...grpc_go.CallOption) (*MetricsBusinessResp, common.ErrorWithAttachment)
MetricsOperatingCreate(ctx context.Context, in *MetricsOperatingCreateReq, opts ...grpc_go.CallOption) (*MetricsOperatingCreateResp, common.ErrorWithAttachment) MetricsOperatingCreate(ctx context.Context, in *MetricsOperatingCreateReq, opts ...grpc_go.CallOption) (*MetricsOperatingCreateResp, common.ErrorWithAttachment)
@ -118,6 +110,12 @@ type BundleClient interface {
MetricsBundlePurchaseExport(ctx context.Context, in *MetricsBundlePurchaseExportReq, opts ...grpc_go.CallOption) (*MetricsBundlePurchaseExportResp, common.ErrorWithAttachment) MetricsBundlePurchaseExport(ctx context.Context, in *MetricsBundlePurchaseExportReq, opts ...grpc_go.CallOption) (*MetricsBundlePurchaseExportResp, common.ErrorWithAttachment)
MetricsArtistAccountExport(ctx context.Context, in *MetricsArtistAccountExportReq, opts ...grpc_go.CallOption) (*MetricsArtistAccountExportResp, common.ErrorWithAttachment) MetricsArtistAccountExport(ctx context.Context, in *MetricsArtistAccountExportReq, opts ...grpc_go.CallOption) (*MetricsArtistAccountExportResp, common.ErrorWithAttachment)
MetricsVideoSubmitExport(ctx context.Context, in *MetricsVideoSubmitExportReq, opts ...grpc_go.CallOption) (*MetricsVideoSubmitExportResp, common.ErrorWithAttachment) MetricsVideoSubmitExport(ctx context.Context, in *MetricsVideoSubmitExportReq, opts ...grpc_go.CallOption) (*MetricsVideoSubmitExportResp, common.ErrorWithAttachment)
GetPendingTaskLayout(ctx context.Context, in *GetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*GetPendingTaskLayoutResp, common.ErrorWithAttachment)
SetPendingTaskLayout(ctx context.Context, in *SetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*SetPendingTaskLayoutResp, common.ErrorWithAttachment)
GetPendingUploadBreakdown(ctx context.Context, in *PendingUploadBreakdownRequest, opts ...grpc_go.CallOption) (*PendingUploadBreakdownResponse, common.ErrorWithAttachment)
GetPendingAssign(ctx context.Context, in *PendingAssignRequest, opts ...grpc_go.CallOption) (*PendingAssignResponse, common.ErrorWithAttachment)
RevertTaskCompletionByUUIDItem(ctx context.Context, in *RevertTaskCompletionByUUIDItemRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment)
AddHiddenTaskAssignee(ctx context.Context, in *AddHiddenTaskAssigneeRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment)
QueryTheOrderSnapshotInformation(ctx context.Context, in *QueryTheOrderSnapshotInformationReq, opts ...grpc_go.CallOption) (*QueryTheOrderSnapshotInformationResp, common.ErrorWithAttachment) QueryTheOrderSnapshotInformation(ctx context.Context, in *QueryTheOrderSnapshotInformationReq, opts ...grpc_go.CallOption) (*QueryTheOrderSnapshotInformationResp, common.ErrorWithAttachment)
} }
@ -148,7 +146,6 @@ type BundleClientImpl struct {
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) OrderListByOrderNo func(ctx context.Context, in *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error)
OnlyAddValueListByOrderNo func(ctx context.Context, in *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) OnlyAddValueListByOrderNo func(ctx context.Context, in *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error)
ReSignTheContract func(ctx context.Context, in *ReSignTheContractRequest) (*CommonResponse, 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)
@ -195,19 +192,18 @@ type BundleClientImpl struct {
BatchAssignTask func(ctx context.Context, in *BatchAssignTaskRequest) (*ComResponse, error) BatchAssignTask func(ctx context.Context, in *BatchAssignTaskRequest) (*ComResponse, error)
BatchTerminateTask func(ctx context.Context, in *BatchTerminateTaskRequest) (*ComResponse, error) BatchTerminateTask func(ctx context.Context, in *BatchTerminateTaskRequest) (*ComResponse, error)
GetArtistUploadStatsList func(ctx context.Context, in *TaskQueryRequest) (*ArtistUploadStatsResponse, error) GetArtistUploadStatsList func(ctx context.Context, in *TaskQueryRequest) (*ArtistUploadStatsResponse, error)
GetPendingTaskLayout func(ctx context.Context, in *GetPendingTaskLayoutReq) (*GetPendingTaskLayoutResp, error)
SetPendingTaskLayout func(ctx context.Context, in *SetPendingTaskLayoutReq) (*SetPendingTaskLayoutResp, error)
GetPendingUploadBreakdown func(ctx context.Context, in *PendingUploadBreakdownRequest) (*PendingUploadBreakdownResponse, error)
GetPendingAssign func(ctx context.Context, in *PendingAssignRequest) (*PendingAssignResponse, error)
RevertTaskCompletionByUUIDItem func(ctx context.Context, in *RevertTaskCompletionByUUIDItemRequest) (*ComResponse, error)
AddHiddenTaskAssignee func(ctx context.Context, in *AddHiddenTaskAssigneeRequest) (*ComResponse, error)
CreateTaskWorkLog func(ctx context.Context, in *CreateTaskWorkLogRequest) (*CommonResponse, error)
MetricsBusiness func(ctx context.Context, in *MetricsBusinessReq) (*MetricsBusinessResp, error) MetricsBusiness func(ctx context.Context, in *MetricsBusinessReq) (*MetricsBusinessResp, error)
MetricsOperatingCreate func(ctx context.Context, in *MetricsOperatingCreateReq) (*MetricsOperatingCreateResp, error) MetricsOperatingCreate func(ctx context.Context, in *MetricsOperatingCreateReq) (*MetricsOperatingCreateResp, error)
MetricsOperatingStatus func(ctx context.Context, in *MetricsOperatingStatusReq) (*MetricsOperatingStatusResp, error) MetricsOperatingStatus func(ctx context.Context, in *MetricsOperatingStatusReq) (*MetricsOperatingStatusResp, error)
MetricsBundlePurchaseExport func(ctx context.Context, in *MetricsBundlePurchaseExportReq) (*MetricsBundlePurchaseExportResp, error) MetricsBundlePurchaseExport func(ctx context.Context, in *MetricsBundlePurchaseExportReq) (*MetricsBundlePurchaseExportResp, error)
MetricsArtistAccountExport func(ctx context.Context, in *MetricsArtistAccountExportReq) (*MetricsArtistAccountExportResp, error) MetricsArtistAccountExport func(ctx context.Context, in *MetricsArtistAccountExportReq) (*MetricsArtistAccountExportResp, error)
MetricsVideoSubmitExport func(ctx context.Context, in *MetricsVideoSubmitExportReq) (*MetricsVideoSubmitExportResp, error) MetricsVideoSubmitExport func(ctx context.Context, in *MetricsVideoSubmitExportReq) (*MetricsVideoSubmitExportResp, error)
GetPendingTaskLayout func(ctx context.Context, in *GetPendingTaskLayoutReq) (*GetPendingTaskLayoutResp, error)
SetPendingTaskLayout func(ctx context.Context, in *SetPendingTaskLayoutReq) (*SetPendingTaskLayoutResp, error)
GetPendingUploadBreakdown func(ctx context.Context, in *PendingUploadBreakdownRequest) (*PendingUploadBreakdownResponse, error)
GetPendingAssign func(ctx context.Context, in *PendingAssignRequest) (*PendingAssignResponse, error)
RevertTaskCompletionByUUIDItem func(ctx context.Context, in *RevertTaskCompletionByUUIDItemRequest) (*ComResponse, error)
AddHiddenTaskAssignee func(ctx context.Context, in *AddHiddenTaskAssigneeRequest) (*ComResponse, error)
QueryTheOrderSnapshotInformation func(ctx context.Context, in *QueryTheOrderSnapshotInformationReq) (*QueryTheOrderSnapshotInformationResp, error) QueryTheOrderSnapshotInformation func(ctx context.Context, in *QueryTheOrderSnapshotInformationReq) (*QueryTheOrderSnapshotInformationResp, error)
} }
@ -355,12 +351,6 @@ func (c *bundleClient) OnlyAddValueListByOrderNo(ctx context.Context, in *OnlyAd
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OnlyAddValueListByOrderNo", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OnlyAddValueListByOrderNo", in, out)
} }
func (c *bundleClient) ReSignTheContract(ctx context.Context, in *ReSignTheContractRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
out := new(CommonResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ReSignTheContract", 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)
@ -637,48 +627,6 @@ func (c *bundleClient) GetArtistUploadStatsList(ctx context.Context, in *TaskQue
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetArtistUploadStatsList", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetArtistUploadStatsList", in, out)
} }
func (c *bundleClient) GetPendingTaskLayout(ctx context.Context, in *GetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*GetPendingTaskLayoutResp, common.ErrorWithAttachment) {
out := new(GetPendingTaskLayoutResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingTaskLayout", in, out)
}
func (c *bundleClient) SetPendingTaskLayout(ctx context.Context, in *SetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*SetPendingTaskLayoutResp, common.ErrorWithAttachment) {
out := new(SetPendingTaskLayoutResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SetPendingTaskLayout", in, out)
}
func (c *bundleClient) GetPendingUploadBreakdown(ctx context.Context, in *PendingUploadBreakdownRequest, opts ...grpc_go.CallOption) (*PendingUploadBreakdownResponse, common.ErrorWithAttachment) {
out := new(PendingUploadBreakdownResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingUploadBreakdown", in, out)
}
func (c *bundleClient) GetPendingAssign(ctx context.Context, in *PendingAssignRequest, opts ...grpc_go.CallOption) (*PendingAssignResponse, common.ErrorWithAttachment) {
out := new(PendingAssignResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingAssign", in, out)
}
func (c *bundleClient) RevertTaskCompletionByUUIDItem(ctx context.Context, in *RevertTaskCompletionByUUIDItemRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment) {
out := new(ComResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/RevertTaskCompletionByUUIDItem", in, out)
}
func (c *bundleClient) AddHiddenTaskAssignee(ctx context.Context, in *AddHiddenTaskAssigneeRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment) {
out := new(ComResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AddHiddenTaskAssignee", in, out)
}
func (c *bundleClient) CreateTaskWorkLog(ctx context.Context, in *CreateTaskWorkLogRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) {
out := new(CommonResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateTaskWorkLog", in, out)
}
func (c *bundleClient) MetricsBusiness(ctx context.Context, in *MetricsBusinessReq, opts ...grpc_go.CallOption) (*MetricsBusinessResp, common.ErrorWithAttachment) { func (c *bundleClient) MetricsBusiness(ctx context.Context, in *MetricsBusinessReq, opts ...grpc_go.CallOption) (*MetricsBusinessResp, common.ErrorWithAttachment) {
out := new(MetricsBusinessResp) out := new(MetricsBusinessResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -715,6 +663,42 @@ func (c *bundleClient) MetricsVideoSubmitExport(ctx context.Context, in *Metrics
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MetricsVideoSubmitExport", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MetricsVideoSubmitExport", in, out)
} }
func (c *bundleClient) GetPendingTaskLayout(ctx context.Context, in *GetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*GetPendingTaskLayoutResp, common.ErrorWithAttachment) {
out := new(GetPendingTaskLayoutResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingTaskLayout", in, out)
}
func (c *bundleClient) SetPendingTaskLayout(ctx context.Context, in *SetPendingTaskLayoutReq, opts ...grpc_go.CallOption) (*SetPendingTaskLayoutResp, common.ErrorWithAttachment) {
out := new(SetPendingTaskLayoutResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SetPendingTaskLayout", in, out)
}
func (c *bundleClient) GetPendingUploadBreakdown(ctx context.Context, in *PendingUploadBreakdownRequest, opts ...grpc_go.CallOption) (*PendingUploadBreakdownResponse, common.ErrorWithAttachment) {
out := new(PendingUploadBreakdownResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingUploadBreakdown", in, out)
}
func (c *bundleClient) GetPendingAssign(ctx context.Context, in *PendingAssignRequest, opts ...grpc_go.CallOption) (*PendingAssignResponse, common.ErrorWithAttachment) {
out := new(PendingAssignResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingAssign", in, out)
}
func (c *bundleClient) RevertTaskCompletionByUUIDItem(ctx context.Context, in *RevertTaskCompletionByUUIDItemRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment) {
out := new(ComResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/RevertTaskCompletionByUUIDItem", in, out)
}
func (c *bundleClient) AddHiddenTaskAssignee(ctx context.Context, in *AddHiddenTaskAssigneeRequest, opts ...grpc_go.CallOption) (*ComResponse, common.ErrorWithAttachment) {
out := new(ComResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AddHiddenTaskAssignee", in, out)
}
func (c *bundleClient) QueryTheOrderSnapshotInformation(ctx context.Context, in *QueryTheOrderSnapshotInformationReq, opts ...grpc_go.CallOption) (*QueryTheOrderSnapshotInformationResp, common.ErrorWithAttachment) { func (c *bundleClient) QueryTheOrderSnapshotInformation(ctx context.Context, in *QueryTheOrderSnapshotInformationReq, opts ...grpc_go.CallOption) (*QueryTheOrderSnapshotInformationResp, common.ErrorWithAttachment) {
out := new(QueryTheOrderSnapshotInformationResp) out := new(QueryTheOrderSnapshotInformationResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -747,7 +731,6 @@ type BundleServer interface {
OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error)
OrderListByOrderNo(context.Context, *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error) OrderListByOrderNo(context.Context, *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error)
OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error)
ReSignTheContract(context.Context, *ReSignTheContractRequest) (*CommonResponse, 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)
@ -801,13 +784,6 @@ type BundleServer interface {
BatchAssignTask(context.Context, *BatchAssignTaskRequest) (*ComResponse, error) BatchAssignTask(context.Context, *BatchAssignTaskRequest) (*ComResponse, error)
BatchTerminateTask(context.Context, *BatchTerminateTaskRequest) (*ComResponse, error) BatchTerminateTask(context.Context, *BatchTerminateTaskRequest) (*ComResponse, error)
GetArtistUploadStatsList(context.Context, *TaskQueryRequest) (*ArtistUploadStatsResponse, error) GetArtistUploadStatsList(context.Context, *TaskQueryRequest) (*ArtistUploadStatsResponse, error)
GetPendingTaskLayout(context.Context, *GetPendingTaskLayoutReq) (*GetPendingTaskLayoutResp, error)
SetPendingTaskLayout(context.Context, *SetPendingTaskLayoutReq) (*SetPendingTaskLayoutResp, error)
GetPendingUploadBreakdown(context.Context, *PendingUploadBreakdownRequest) (*PendingUploadBreakdownResponse, error)
GetPendingAssign(context.Context, *PendingAssignRequest) (*PendingAssignResponse, error)
RevertTaskCompletionByUUIDItem(context.Context, *RevertTaskCompletionByUUIDItemRequest) (*ComResponse, error)
AddHiddenTaskAssignee(context.Context, *AddHiddenTaskAssigneeRequest) (*ComResponse, error)
CreateTaskWorkLog(context.Context, *CreateTaskWorkLogRequest) (*CommonResponse, error)
// 数据指标 // 数据指标
MetricsBusiness(context.Context, *MetricsBusinessReq) (*MetricsBusinessResp, error) MetricsBusiness(context.Context, *MetricsBusinessReq) (*MetricsBusinessResp, error)
MetricsOperatingCreate(context.Context, *MetricsOperatingCreateReq) (*MetricsOperatingCreateResp, error) MetricsOperatingCreate(context.Context, *MetricsOperatingCreateReq) (*MetricsOperatingCreateResp, error)
@ -815,6 +791,12 @@ type BundleServer interface {
MetricsBundlePurchaseExport(context.Context, *MetricsBundlePurchaseExportReq) (*MetricsBundlePurchaseExportResp, error) MetricsBundlePurchaseExport(context.Context, *MetricsBundlePurchaseExportReq) (*MetricsBundlePurchaseExportResp, error)
MetricsArtistAccountExport(context.Context, *MetricsArtistAccountExportReq) (*MetricsArtistAccountExportResp, error) MetricsArtistAccountExport(context.Context, *MetricsArtistAccountExportReq) (*MetricsArtistAccountExportResp, error)
MetricsVideoSubmitExport(context.Context, *MetricsVideoSubmitExportReq) (*MetricsVideoSubmitExportResp, error) MetricsVideoSubmitExport(context.Context, *MetricsVideoSubmitExportReq) (*MetricsVideoSubmitExportResp, error)
GetPendingTaskLayout(context.Context, *GetPendingTaskLayoutReq) (*GetPendingTaskLayoutResp, error)
SetPendingTaskLayout(context.Context, *SetPendingTaskLayoutReq) (*SetPendingTaskLayoutResp, error)
GetPendingUploadBreakdown(context.Context, *PendingUploadBreakdownRequest) (*PendingUploadBreakdownResponse, error)
GetPendingAssign(context.Context, *PendingAssignRequest) (*PendingAssignResponse, error)
RevertTaskCompletionByUUIDItem(context.Context, *RevertTaskCompletionByUUIDItemRequest) (*ComResponse, error)
AddHiddenTaskAssignee(context.Context, *AddHiddenTaskAssigneeRequest) (*ComResponse, error)
QueryTheOrderSnapshotInformation(context.Context, *QueryTheOrderSnapshotInformationReq) (*QueryTheOrderSnapshotInformationResp, error) QueryTheOrderSnapshotInformation(context.Context, *QueryTheOrderSnapshotInformationReq) (*QueryTheOrderSnapshotInformationResp, error)
mustEmbedUnimplementedBundleServer() mustEmbedUnimplementedBundleServer()
} }
@ -890,9 +872,6 @@ func (UnimplementedBundleServer) OrderListByOrderNo(context.Context, *OrderInfoB
func (UnimplementedBundleServer) OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) { func (UnimplementedBundleServer) OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method OnlyAddValueListByOrderNo not implemented") return nil, status.Errorf(codes.Unimplemented, "method OnlyAddValueListByOrderNo not implemented")
} }
func (UnimplementedBundleServer) ReSignTheContract(context.Context, *ReSignTheContractRequest) (*CommonResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReSignTheContract 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")
} }
@ -1031,27 +1010,6 @@ func (UnimplementedBundleServer) BatchTerminateTask(context.Context, *BatchTermi
func (UnimplementedBundleServer) GetArtistUploadStatsList(context.Context, *TaskQueryRequest) (*ArtistUploadStatsResponse, error) { func (UnimplementedBundleServer) GetArtistUploadStatsList(context.Context, *TaskQueryRequest) (*ArtistUploadStatsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetArtistUploadStatsList not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetArtistUploadStatsList not implemented")
} }
func (UnimplementedBundleServer) GetPendingTaskLayout(context.Context, *GetPendingTaskLayoutReq) (*GetPendingTaskLayoutResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPendingTaskLayout not implemented")
}
func (UnimplementedBundleServer) SetPendingTaskLayout(context.Context, *SetPendingTaskLayoutReq) (*SetPendingTaskLayoutResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method SetPendingTaskLayout not implemented")
}
func (UnimplementedBundleServer) GetPendingUploadBreakdown(context.Context, *PendingUploadBreakdownRequest) (*PendingUploadBreakdownResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPendingUploadBreakdown not implemented")
}
func (UnimplementedBundleServer) GetPendingAssign(context.Context, *PendingAssignRequest) (*PendingAssignResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPendingAssign not implemented")
}
func (UnimplementedBundleServer) RevertTaskCompletionByUUIDItem(context.Context, *RevertTaskCompletionByUUIDItemRequest) (*ComResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RevertTaskCompletionByUUIDItem not implemented")
}
func (UnimplementedBundleServer) AddHiddenTaskAssignee(context.Context, *AddHiddenTaskAssigneeRequest) (*ComResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AddHiddenTaskAssignee not implemented")
}
func (UnimplementedBundleServer) CreateTaskWorkLog(context.Context, *CreateTaskWorkLogRequest) (*CommonResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateTaskWorkLog not implemented")
}
func (UnimplementedBundleServer) MetricsBusiness(context.Context, *MetricsBusinessReq) (*MetricsBusinessResp, error) { func (UnimplementedBundleServer) MetricsBusiness(context.Context, *MetricsBusinessReq) (*MetricsBusinessResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method MetricsBusiness not implemented") return nil, status.Errorf(codes.Unimplemented, "method MetricsBusiness not implemented")
} }
@ -1070,6 +1028,24 @@ func (UnimplementedBundleServer) MetricsArtistAccountExport(context.Context, *Me
func (UnimplementedBundleServer) MetricsVideoSubmitExport(context.Context, *MetricsVideoSubmitExportReq) (*MetricsVideoSubmitExportResp, error) { func (UnimplementedBundleServer) MetricsVideoSubmitExport(context.Context, *MetricsVideoSubmitExportReq) (*MetricsVideoSubmitExportResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method MetricsVideoSubmitExport not implemented") return nil, status.Errorf(codes.Unimplemented, "method MetricsVideoSubmitExport not implemented")
} }
func (UnimplementedBundleServer) GetPendingTaskLayout(context.Context, *GetPendingTaskLayoutReq) (*GetPendingTaskLayoutResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPendingTaskLayout not implemented")
}
func (UnimplementedBundleServer) SetPendingTaskLayout(context.Context, *SetPendingTaskLayoutReq) (*SetPendingTaskLayoutResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method SetPendingTaskLayout not implemented")
}
func (UnimplementedBundleServer) GetPendingUploadBreakdown(context.Context, *PendingUploadBreakdownRequest) (*PendingUploadBreakdownResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPendingUploadBreakdown not implemented")
}
func (UnimplementedBundleServer) GetPendingAssign(context.Context, *PendingAssignRequest) (*PendingAssignResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPendingAssign not implemented")
}
func (UnimplementedBundleServer) RevertTaskCompletionByUUIDItem(context.Context, *RevertTaskCompletionByUUIDItemRequest) (*ComResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RevertTaskCompletionByUUIDItem not implemented")
}
func (UnimplementedBundleServer) AddHiddenTaskAssignee(context.Context, *AddHiddenTaskAssigneeRequest) (*ComResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AddHiddenTaskAssignee not implemented")
}
func (UnimplementedBundleServer) QueryTheOrderSnapshotInformation(context.Context, *QueryTheOrderSnapshotInformationReq) (*QueryTheOrderSnapshotInformationResp, error) { func (UnimplementedBundleServer) QueryTheOrderSnapshotInformation(context.Context, *QueryTheOrderSnapshotInformationReq) (*QueryTheOrderSnapshotInformationResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryTheOrderSnapshotInformation not implemented") return nil, status.Errorf(codes.Unimplemented, "method QueryTheOrderSnapshotInformation not implemented")
} }
@ -1739,35 +1715,6 @@ func _Bundle_OnlyAddValueListByOrderNo_Handler(srv interface{}, ctx context.Cont
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_ReSignTheContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(ReSignTheContractRequest)
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("ReSignTheContract", 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 {
@ -3102,209 +3049,6 @@ func _Bundle_GetArtistUploadStatsList_Handler(srv interface{}, ctx context.Conte
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_GetPendingTaskLayout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetPendingTaskLayoutReq)
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("GetPendingTaskLayout", 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_SetPendingTaskLayout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(SetPendingTaskLayoutReq)
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("SetPendingTaskLayout", 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_GetPendingUploadBreakdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(PendingUploadBreakdownRequest)
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("GetPendingUploadBreakdown", 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_GetPendingAssign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(PendingAssignRequest)
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("GetPendingAssign", 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_RevertTaskCompletionByUUIDItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(RevertTaskCompletionByUUIDItemRequest)
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("RevertTaskCompletionByUUIDItem", 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_AddHiddenTaskAssignee_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(AddHiddenTaskAssigneeRequest)
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("AddHiddenTaskAssignee", 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_CreateTaskWorkLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateTaskWorkLogRequest)
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("CreateTaskWorkLog", 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_MetricsBusiness_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _Bundle_MetricsBusiness_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(MetricsBusinessReq) in := new(MetricsBusinessReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -3479,6 +3223,180 @@ func _Bundle_MetricsVideoSubmitExport_Handler(srv interface{}, ctx context.Conte
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Bundle_GetPendingTaskLayout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetPendingTaskLayoutReq)
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("GetPendingTaskLayout", 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_SetPendingTaskLayout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(SetPendingTaskLayoutReq)
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("SetPendingTaskLayout", 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_GetPendingUploadBreakdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(PendingUploadBreakdownRequest)
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("GetPendingUploadBreakdown", 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_GetPendingAssign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(PendingAssignRequest)
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("GetPendingAssign", 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_RevertTaskCompletionByUUIDItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(RevertTaskCompletionByUUIDItemRequest)
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("RevertTaskCompletionByUUIDItem", 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_AddHiddenTaskAssignee_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(AddHiddenTaskAssigneeRequest)
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("AddHiddenTaskAssignee", 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_QueryTheOrderSnapshotInformation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _Bundle_QueryTheOrderSnapshotInformation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTheOrderSnapshotInformationReq) in := new(QueryTheOrderSnapshotInformationReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -3603,10 +3521,6 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "OnlyAddValueListByOrderNo", MethodName: "OnlyAddValueListByOrderNo",
Handler: _Bundle_OnlyAddValueListByOrderNo_Handler, Handler: _Bundle_OnlyAddValueListByOrderNo_Handler,
}, },
{
MethodName: "ReSignTheContract",
Handler: _Bundle_ReSignTheContract_Handler,
},
{ {
MethodName: "CreateValueAddBundle", MethodName: "CreateValueAddBundle",
Handler: _Bundle_CreateValueAddBundle_Handler, Handler: _Bundle_CreateValueAddBundle_Handler,
@ -3791,34 +3705,6 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "GetArtistUploadStatsList", MethodName: "GetArtistUploadStatsList",
Handler: _Bundle_GetArtistUploadStatsList_Handler, Handler: _Bundle_GetArtistUploadStatsList_Handler,
}, },
{
MethodName: "GetPendingTaskLayout",
Handler: _Bundle_GetPendingTaskLayout_Handler,
},
{
MethodName: "SetPendingTaskLayout",
Handler: _Bundle_SetPendingTaskLayout_Handler,
},
{
MethodName: "GetPendingUploadBreakdown",
Handler: _Bundle_GetPendingUploadBreakdown_Handler,
},
{
MethodName: "GetPendingAssign",
Handler: _Bundle_GetPendingAssign_Handler,
},
{
MethodName: "RevertTaskCompletionByUUIDItem",
Handler: _Bundle_RevertTaskCompletionByUUIDItem_Handler,
},
{
MethodName: "AddHiddenTaskAssignee",
Handler: _Bundle_AddHiddenTaskAssignee_Handler,
},
{
MethodName: "CreateTaskWorkLog",
Handler: _Bundle_CreateTaskWorkLog_Handler,
},
{ {
MethodName: "MetricsBusiness", MethodName: "MetricsBusiness",
Handler: _Bundle_MetricsBusiness_Handler, Handler: _Bundle_MetricsBusiness_Handler,
@ -3843,6 +3729,30 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "MetricsVideoSubmitExport", MethodName: "MetricsVideoSubmitExport",
Handler: _Bundle_MetricsVideoSubmitExport_Handler, Handler: _Bundle_MetricsVideoSubmitExport_Handler,
}, },
{
MethodName: "GetPendingTaskLayout",
Handler: _Bundle_GetPendingTaskLayout_Handler,
},
{
MethodName: "SetPendingTaskLayout",
Handler: _Bundle_SetPendingTaskLayout_Handler,
},
{
MethodName: "GetPendingUploadBreakdown",
Handler: _Bundle_GetPendingUploadBreakdown_Handler,
},
{
MethodName: "GetPendingAssign",
Handler: _Bundle_GetPendingAssign_Handler,
},
{
MethodName: "RevertTaskCompletionByUUIDItem",
Handler: _Bundle_RevertTaskCompletionByUUIDItem_Handler,
},
{
MethodName: "AddHiddenTaskAssignee",
Handler: _Bundle_AddHiddenTaskAssignee_Handler,
},
{ {
MethodName: "QueryTheOrderSnapshotInformation", MethodName: "QueryTheOrderSnapshotInformation",
Handler: _Bundle_QueryTheOrderSnapshotInformation_Handler, Handler: _Bundle_QueryTheOrderSnapshotInformation_Handler,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,6 +9,7 @@ package cron
import ( import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl" protoimpl "google.golang.org/protobuf/runtime/protoimpl"
_ "google.golang.org/protobuf/types/known/emptypb"
reflect "reflect" reflect "reflect"
sync "sync" sync "sync"
unsafe "unsafe" unsafe "unsafe"
@ -640,16 +641,6 @@ type ExecutionResult struct {
StatusDescription string `protobuf:"bytes,110,opt,name=status_description,json=statusDescription,proto3" json:"status_description"` // 执行状态描述 StatusDescription string `protobuf:"bytes,110,opt,name=status_description,json=statusDescription,proto3" json:"status_description"` // 执行状态描述
ResultDescription string `protobuf:"bytes,111,opt,name=result_description,json=resultDescription,proto3" json:"result_description"` // 执行结果描述 ResultDescription string `protobuf:"bytes,111,opt,name=result_description,json=resultDescription,proto3" json:"result_description"` // 执行结果描述
ContentTypeDescription string `protobuf:"bytes,115,opt,name=content_type_description,json=contentTypeDescription,proto3" json:"content_type_description"` // 内容类型描述 ContentTypeDescription string `protobuf:"bytes,115,opt,name=content_type_description,json=contentTypeDescription,proto3" json:"content_type_description"` // 内容类型描述
TIKTOKStatusDesc string `protobuf:"bytes,121,opt,name=TIKTOKStatusDesc,proto3" json:"TIKTOKStatusDesc"`
YOUTUBEStatusDesc string `protobuf:"bytes,122,opt,name=YOUTUBEStatusDesc,proto3" json:"YOUTUBEStatusDesc"`
INSStatusDesc string `protobuf:"bytes,123,opt,name=INSStatusDesc,proto3" json:"INSStatusDesc"`
DMStatusDesc string `protobuf:"bytes,124,opt,name=DMStatusDesc,proto3" json:"DMStatusDesc"`
BULESKYStatusDesc string `protobuf:"bytes,125,opt,name=BULESKYStatusDesc,proto3" json:"BULESKYStatusDesc"`
TIKTOKResult string `protobuf:"bytes,131,opt,name=TIKTOKResult,proto3" json:"TIKTOKResult"`
YOUTUBEResult string `protobuf:"bytes,132,opt,name=YOUTUBEResult,proto3" json:"YOUTUBEResult"`
INSResult string `protobuf:"bytes,133,opt,name=INSResult,proto3" json:"INSResult"`
DMResult string `protobuf:"bytes,134,opt,name=DMResult,proto3" json:"DMResult"`
BULESKYResult string `protobuf:"bytes,135,opt,name=BULESKYResult,proto3" json:"BULESKYResult"`
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
} }
@ -803,76 +794,6 @@ func (x *ExecutionResult) GetContentTypeDescription() string {
return "" return ""
} }
func (x *ExecutionResult) GetTIKTOKStatusDesc() string {
if x != nil {
return x.TIKTOKStatusDesc
}
return ""
}
func (x *ExecutionResult) GetYOUTUBEStatusDesc() string {
if x != nil {
return x.YOUTUBEStatusDesc
}
return ""
}
func (x *ExecutionResult) GetINSStatusDesc() string {
if x != nil {
return x.INSStatusDesc
}
return ""
}
func (x *ExecutionResult) GetDMStatusDesc() string {
if x != nil {
return x.DMStatusDesc
}
return ""
}
func (x *ExecutionResult) GetBULESKYStatusDesc() string {
if x != nil {
return x.BULESKYStatusDesc
}
return ""
}
func (x *ExecutionResult) GetTIKTOKResult() string {
if x != nil {
return x.TIKTOKResult
}
return ""
}
func (x *ExecutionResult) GetYOUTUBEResult() string {
if x != nil {
return x.YOUTUBEResult
}
return ""
}
func (x *ExecutionResult) GetINSResult() string {
if x != nil {
return x.INSResult
}
return ""
}
func (x *ExecutionResult) GetDMResult() string {
if x != nil {
return x.DMResult
}
return ""
}
func (x *ExecutionResult) GetBULESKYResult() string {
if x != nil {
return x.BULESKYResult
}
return ""
}
type CreateScheduleTaskRequest struct { type CreateScheduleTaskRequest struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
TaskTitle string `protobuf:"bytes,1,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题 TaskTitle string `protobuf:"bytes,1,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题
@ -1129,7 +1050,7 @@ type UpdateScheduleTaskRequest struct {
ExecuteStartTime string `protobuf:"bytes,8,opt,name=execute_start_time,json=executeStartTime,proto3" json:"execute_start_time"` // 执行开始时间 ExecuteStartTime string `protobuf:"bytes,8,opt,name=execute_start_time,json=executeStartTime,proto3" json:"execute_start_time"` // 执行开始时间
ExecuteEndTime string `protobuf:"bytes,9,opt,name=execute_end_time,json=executeEndTime,proto3" json:"execute_end_time"` // 执行结束时间 ExecuteEndTime string `protobuf:"bytes,9,opt,name=execute_end_time,json=executeEndTime,proto3" json:"execute_end_time"` // 执行结束时间
Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` // 备注 Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` // 备注
TaskDetail *UpdateScheduleTaskRequestTaskDetail `protobuf:"bytes,11,opt,name=task_detail,json=taskDetail,proto3" json:"task_detail"` // 任务详情 TaskDetail *TaskDetailRequest `protobuf:"bytes,11,opt,name=task_detail,json=taskDetail,proto3" json:"task_detail"` // 任务详情
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
} }
@ -1234,97 +1155,13 @@ func (x *UpdateScheduleTaskRequest) GetRemark() string {
return "" return ""
} }
func (x *UpdateScheduleTaskRequest) GetTaskDetail() *UpdateScheduleTaskRequestTaskDetail { func (x *UpdateScheduleTaskRequest) GetTaskDetail() *TaskDetailRequest {
if x != nil { if x != nil {
return x.TaskDetail return x.TaskDetail
} }
return nil return nil
} }
type UpdateScheduleTaskRequestTaskDetail struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id int32 `protobuf:"varint,5,opt,name=id,proto3" json:"id"`
TaskId int32 `protobuf:"varint,6,opt,name=task_id,json=taskId,proto3" json:"task_id"`
ArtistCount int32 `protobuf:"varint,1,opt,name=artist_count,json=artistCount,proto3" json:"artist_count"` // 艺人数量
Artists []*ArtistInfo `protobuf:"bytes,2,rep,name=artists,proto3" json:"artists"` // 艺人信息列表
Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num"` // 任务数量
ContentType int32 `protobuf:"varint,4,opt,name=content_type,json=contentType,proto3" json:"content_type"` // 内容类型
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UpdateScheduleTaskRequestTaskDetail) Reset() {
*x = UpdateScheduleTaskRequestTaskDetail{}
mi := &file_pb_cron_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateScheduleTaskRequestTaskDetail) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateScheduleTaskRequestTaskDetail) ProtoMessage() {}
func (x *UpdateScheduleTaskRequestTaskDetail) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateScheduleTaskRequestTaskDetail.ProtoReflect.Descriptor instead.
func (*UpdateScheduleTaskRequestTaskDetail) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{11}
}
func (x *UpdateScheduleTaskRequestTaskDetail) GetId() int32 {
if x != nil {
return x.Id
}
return 0
}
func (x *UpdateScheduleTaskRequestTaskDetail) GetTaskId() int32 {
if x != nil {
return x.TaskId
}
return 0
}
func (x *UpdateScheduleTaskRequestTaskDetail) GetArtistCount() int32 {
if x != nil {
return x.ArtistCount
}
return 0
}
func (x *UpdateScheduleTaskRequestTaskDetail) GetArtists() []*ArtistInfo {
if x != nil {
return x.Artists
}
return nil
}
func (x *UpdateScheduleTaskRequestTaskDetail) GetNum() int32 {
if x != nil {
return x.Num
}
return 0
}
func (x *UpdateScheduleTaskRequestTaskDetail) GetContentType() int32 {
if x != nil {
return x.ContentType
}
return 0
}
type UpdateScheduleTaskResponse struct { type UpdateScheduleTaskResponse struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应码 Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应码
@ -1336,7 +1173,7 @@ type UpdateScheduleTaskResponse struct {
func (x *UpdateScheduleTaskResponse) Reset() { func (x *UpdateScheduleTaskResponse) Reset() {
*x = UpdateScheduleTaskResponse{} *x = UpdateScheduleTaskResponse{}
mi := &file_pb_cron_proto_msgTypes[12] mi := &file_pb_cron_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1348,7 +1185,7 @@ func (x *UpdateScheduleTaskResponse) String() string {
func (*UpdateScheduleTaskResponse) ProtoMessage() {} func (*UpdateScheduleTaskResponse) ProtoMessage() {}
func (x *UpdateScheduleTaskResponse) ProtoReflect() protoreflect.Message { func (x *UpdateScheduleTaskResponse) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[12] mi := &file_pb_cron_proto_msgTypes[11]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1361,7 +1198,7 @@ func (x *UpdateScheduleTaskResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateScheduleTaskResponse.ProtoReflect.Descriptor instead. // Deprecated: Use UpdateScheduleTaskResponse.ProtoReflect.Descriptor instead.
func (*UpdateScheduleTaskResponse) Descriptor() ([]byte, []int) { func (*UpdateScheduleTaskResponse) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{12} return file_pb_cron_proto_rawDescGZIP(), []int{11}
} }
func (x *UpdateScheduleTaskResponse) GetCode() int32 { func (x *UpdateScheduleTaskResponse) GetCode() int32 {
@ -1395,14 +1232,13 @@ type GetListScheduleTaskRequest struct {
EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束日期 EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束日期
Status int32 `protobuf:"varint,7,opt,name=Status,proto3" json:"Status"` // 任务状态 Status int32 `protobuf:"varint,7,opt,name=Status,proto3" json:"Status"` // 任务状态
ContentType int32 `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3" json:"content_type"` // 内容类型 ContentType int32 `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3" json:"content_type"` // 内容类型
Sorts map[string]string `protobuf:"bytes,9,rep,name=sorts,proto3" json:"sorts" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
} }
func (x *GetListScheduleTaskRequest) Reset() { func (x *GetListScheduleTaskRequest) Reset() {
*x = GetListScheduleTaskRequest{} *x = GetListScheduleTaskRequest{}
mi := &file_pb_cron_proto_msgTypes[13] mi := &file_pb_cron_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1414,7 +1250,7 @@ func (x *GetListScheduleTaskRequest) String() string {
func (*GetListScheduleTaskRequest) ProtoMessage() {} func (*GetListScheduleTaskRequest) ProtoMessage() {}
func (x *GetListScheduleTaskRequest) ProtoReflect() protoreflect.Message { func (x *GetListScheduleTaskRequest) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[13] mi := &file_pb_cron_proto_msgTypes[12]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1427,7 +1263,7 @@ func (x *GetListScheduleTaskRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetListScheduleTaskRequest.ProtoReflect.Descriptor instead. // Deprecated: Use GetListScheduleTaskRequest.ProtoReflect.Descriptor instead.
func (*GetListScheduleTaskRequest) Descriptor() ([]byte, []int) { func (*GetListScheduleTaskRequest) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{13} return file_pb_cron_proto_rawDescGZIP(), []int{12}
} }
func (x *GetListScheduleTaskRequest) GetPage() int32 { func (x *GetListScheduleTaskRequest) GetPage() int32 {
@ -1486,13 +1322,6 @@ func (x *GetListScheduleTaskRequest) GetContentType() int32 {
return 0 return 0
} }
func (x *GetListScheduleTaskRequest) GetSorts() map[string]string {
if x != nil {
return x.Sorts
}
return nil
}
type GetListScheduleTaskResponse struct { type GetListScheduleTaskResponse struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应码 Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应码
@ -1507,7 +1336,7 @@ type GetListScheduleTaskResponse struct {
func (x *GetListScheduleTaskResponse) Reset() { func (x *GetListScheduleTaskResponse) Reset() {
*x = GetListScheduleTaskResponse{} *x = GetListScheduleTaskResponse{}
mi := &file_pb_cron_proto_msgTypes[14] mi := &file_pb_cron_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1519,7 +1348,7 @@ func (x *GetListScheduleTaskResponse) String() string {
func (*GetListScheduleTaskResponse) ProtoMessage() {} func (*GetListScheduleTaskResponse) ProtoMessage() {}
func (x *GetListScheduleTaskResponse) ProtoReflect() protoreflect.Message { func (x *GetListScheduleTaskResponse) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[14] mi := &file_pb_cron_proto_msgTypes[13]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1532,7 +1361,7 @@ func (x *GetListScheduleTaskResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetListScheduleTaskResponse.ProtoReflect.Descriptor instead. // Deprecated: Use GetListScheduleTaskResponse.ProtoReflect.Descriptor instead.
func (*GetListScheduleTaskResponse) Descriptor() ([]byte, []int) { func (*GetListScheduleTaskResponse) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{14} return file_pb_cron_proto_rawDescGZIP(), []int{13}
} }
func (x *GetListScheduleTaskResponse) GetCode() int32 { func (x *GetListScheduleTaskResponse) GetCode() int32 {
@ -1593,7 +1422,7 @@ type GetListExecutionRecordRequest struct {
func (x *GetListExecutionRecordRequest) Reset() { func (x *GetListExecutionRecordRequest) Reset() {
*x = GetListExecutionRecordRequest{} *x = GetListExecutionRecordRequest{}
mi := &file_pb_cron_proto_msgTypes[15] mi := &file_pb_cron_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1605,7 +1434,7 @@ func (x *GetListExecutionRecordRequest) String() string {
func (*GetListExecutionRecordRequest) ProtoMessage() {} func (*GetListExecutionRecordRequest) ProtoMessage() {}
func (x *GetListExecutionRecordRequest) ProtoReflect() protoreflect.Message { func (x *GetListExecutionRecordRequest) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[15] mi := &file_pb_cron_proto_msgTypes[14]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1618,7 +1447,7 @@ func (x *GetListExecutionRecordRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetListExecutionRecordRequest.ProtoReflect.Descriptor instead. // Deprecated: Use GetListExecutionRecordRequest.ProtoReflect.Descriptor instead.
func (*GetListExecutionRecordRequest) Descriptor() ([]byte, []int) { func (*GetListExecutionRecordRequest) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{15} return file_pb_cron_proto_rawDescGZIP(), []int{14}
} }
func (x *GetListExecutionRecordRequest) GetPage() int32 { func (x *GetListExecutionRecordRequest) GetPage() int32 {
@ -1691,7 +1520,7 @@ type GetListExecutionRecordResponse struct {
func (x *GetListExecutionRecordResponse) Reset() { func (x *GetListExecutionRecordResponse) Reset() {
*x = GetListExecutionRecordResponse{} *x = GetListExecutionRecordResponse{}
mi := &file_pb_cron_proto_msgTypes[16] mi := &file_pb_cron_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1703,7 +1532,7 @@ func (x *GetListExecutionRecordResponse) String() string {
func (*GetListExecutionRecordResponse) ProtoMessage() {} func (*GetListExecutionRecordResponse) ProtoMessage() {}
func (x *GetListExecutionRecordResponse) ProtoReflect() protoreflect.Message { func (x *GetListExecutionRecordResponse) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[16] mi := &file_pb_cron_proto_msgTypes[15]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1716,7 +1545,7 @@ func (x *GetListExecutionRecordResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetListExecutionRecordResponse.ProtoReflect.Descriptor instead. // Deprecated: Use GetListExecutionRecordResponse.ProtoReflect.Descriptor instead.
func (*GetListExecutionRecordResponse) Descriptor() ([]byte, []int) { func (*GetListExecutionRecordResponse) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{16} return file_pb_cron_proto_rawDescGZIP(), []int{15}
} }
func (x *GetListExecutionRecordResponse) GetCode() int32 { func (x *GetListExecutionRecordResponse) GetCode() int32 {
@ -1778,7 +1607,7 @@ type GetListExecutionResultRequest struct {
func (x *GetListExecutionResultRequest) Reset() { func (x *GetListExecutionResultRequest) Reset() {
*x = GetListExecutionResultRequest{} *x = GetListExecutionResultRequest{}
mi := &file_pb_cron_proto_msgTypes[17] mi := &file_pb_cron_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1790,7 +1619,7 @@ func (x *GetListExecutionResultRequest) String() string {
func (*GetListExecutionResultRequest) ProtoMessage() {} func (*GetListExecutionResultRequest) ProtoMessage() {}
func (x *GetListExecutionResultRequest) ProtoReflect() protoreflect.Message { func (x *GetListExecutionResultRequest) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[17] mi := &file_pb_cron_proto_msgTypes[16]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1803,7 +1632,7 @@ func (x *GetListExecutionResultRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetListExecutionResultRequest.ProtoReflect.Descriptor instead. // Deprecated: Use GetListExecutionResultRequest.ProtoReflect.Descriptor instead.
func (*GetListExecutionResultRequest) Descriptor() ([]byte, []int) { func (*GetListExecutionResultRequest) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{17} return file_pb_cron_proto_rawDescGZIP(), []int{16}
} }
func (x *GetListExecutionResultRequest) GetPage() int32 { func (x *GetListExecutionResultRequest) GetPage() int32 {
@ -1883,7 +1712,7 @@ type GetListExecutionResultResponse struct {
func (x *GetListExecutionResultResponse) Reset() { func (x *GetListExecutionResultResponse) Reset() {
*x = GetListExecutionResultResponse{} *x = GetListExecutionResultResponse{}
mi := &file_pb_cron_proto_msgTypes[18] mi := &file_pb_cron_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1895,7 +1724,7 @@ func (x *GetListExecutionResultResponse) String() string {
func (*GetListExecutionResultResponse) ProtoMessage() {} func (*GetListExecutionResultResponse) ProtoMessage() {}
func (x *GetListExecutionResultResponse) ProtoReflect() protoreflect.Message { func (x *GetListExecutionResultResponse) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[18] mi := &file_pb_cron_proto_msgTypes[17]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1908,7 +1737,7 @@ func (x *GetListExecutionResultResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetListExecutionResultResponse.ProtoReflect.Descriptor instead. // Deprecated: Use GetListExecutionResultResponse.ProtoReflect.Descriptor instead.
func (*GetListExecutionResultResponse) Descriptor() ([]byte, []int) { func (*GetListExecutionResultResponse) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{18} return file_pb_cron_proto_rawDescGZIP(), []int{17}
} }
func (x *GetListExecutionResultResponse) GetCode() int32 { func (x *GetListExecutionResultResponse) GetCode() int32 {
@ -1963,7 +1792,7 @@ type TaskStatus struct {
func (x *TaskStatus) Reset() { func (x *TaskStatus) Reset() {
*x = TaskStatus{} *x = TaskStatus{}
mi := &file_pb_cron_proto_msgTypes[19] mi := &file_pb_cron_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1975,7 +1804,7 @@ func (x *TaskStatus) String() string {
func (*TaskStatus) ProtoMessage() {} func (*TaskStatus) ProtoMessage() {}
func (x *TaskStatus) ProtoReflect() protoreflect.Message { func (x *TaskStatus) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[19] mi := &file_pb_cron_proto_msgTypes[18]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1988,7 +1817,7 @@ func (x *TaskStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use TaskStatus.ProtoReflect.Descriptor instead. // Deprecated: Use TaskStatus.ProtoReflect.Descriptor instead.
func (*TaskStatus) Descriptor() ([]byte, []int) { func (*TaskStatus) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{19} return file_pb_cron_proto_rawDescGZIP(), []int{18}
} }
func (x *TaskStatus) GetKey() int32 { func (x *TaskStatus) GetKey() int32 {
@ -2016,7 +1845,7 @@ type GetScheduleTaskStatusResponse struct {
func (x *GetScheduleTaskStatusResponse) Reset() { func (x *GetScheduleTaskStatusResponse) Reset() {
*x = GetScheduleTaskStatusResponse{} *x = GetScheduleTaskStatusResponse{}
mi := &file_pb_cron_proto_msgTypes[20] mi := &file_pb_cron_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -2028,7 +1857,7 @@ func (x *GetScheduleTaskStatusResponse) String() string {
func (*GetScheduleTaskStatusResponse) ProtoMessage() {} func (*GetScheduleTaskStatusResponse) ProtoMessage() {}
func (x *GetScheduleTaskStatusResponse) ProtoReflect() protoreflect.Message { func (x *GetScheduleTaskStatusResponse) ProtoReflect() protoreflect.Message {
mi := &file_pb_cron_proto_msgTypes[20] mi := &file_pb_cron_proto_msgTypes[19]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -2041,7 +1870,7 @@ func (x *GetScheduleTaskStatusResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetScheduleTaskStatusResponse.ProtoReflect.Descriptor instead. // Deprecated: Use GetScheduleTaskStatusResponse.ProtoReflect.Descriptor instead.
func (*GetScheduleTaskStatusResponse) Descriptor() ([]byte, []int) { func (*GetScheduleTaskStatusResponse) Descriptor() ([]byte, []int) {
return file_pb_cron_proto_rawDescGZIP(), []int{20} return file_pb_cron_proto_rawDescGZIP(), []int{19}
} }
func (x *GetScheduleTaskStatusResponse) GetCode() int32 { func (x *GetScheduleTaskStatusResponse) GetCode() int32 {
@ -2069,7 +1898,7 @@ var File_pb_cron_proto protoreflect.FileDescriptor
const file_pb_cron_proto_rawDesc = "" + const file_pb_cron_proto_rawDesc = "" +
"\n" + "\n" +
"\rpb/cron.proto\x12\x04cron\"!\n" + "\rpb/cron.proto\x12\x04cron\x1a\x1bgoogle/protobuf/empty.proto\"!\n" +
"\x0fCommonIDRequest\x12\x0e\n" + "\x0fCommonIDRequest\x12\x0e\n" +
"\x02id\x18\x01 \x01(\rR\x02id\">\n" + "\x02id\x18\x01 \x01(\rR\x02id\">\n" +
"\x0eCommonResponse\x12\x12\n" + "\x0eCommonResponse\x12\x12\n" +
@ -2139,7 +1968,7 @@ const file_pb_cron_proto_rawDesc = "" +
"\n" + "\n" +
"task_title\x18\x0e \x01(\tR\ttaskTitle\x12!\n" + "task_title\x18\x0e \x01(\tR\ttaskTitle\x12!\n" +
"\fcontent_type\x18\x0f \x01(\x05R\vcontentType\x12\x0e\n" + "\fcontent_type\x18\x0f \x01(\x05R\vcontentType\x12\x0e\n" +
"\x02id\x18\x10 \x01(\x04R\x02id\"\xc9\a\n" + "\x02id\x18\x10 \x01(\x04R\x02id\"\xc8\x04\n" +
"\x0fExecutionResult\x12!\n" + "\x0fExecutionResult\x12!\n" +
"\fexecution_id\x18\x01 \x01(\x05R\vexecutionId\x12\x17\n" + "\fexecution_id\x18\x01 \x01(\x05R\vexecutionId\x12\x17\n" +
"\atask_id\x18\x02 \x01(\x05R\x06taskId\x12\x1b\n" + "\atask_id\x18\x02 \x01(\x05R\x06taskId\x12\x1b\n" +
@ -2163,17 +1992,7 @@ const file_pb_cron_proto_rawDesc = "" +
"work_title\x18\x10 \x01(\tR\tworkTitle\x12-\n" + "work_title\x18\x10 \x01(\tR\tworkTitle\x12-\n" +
"\x12status_description\x18n \x01(\tR\x11statusDescription\x12-\n" + "\x12status_description\x18n \x01(\tR\x11statusDescription\x12-\n" +
"\x12result_description\x18o \x01(\tR\x11resultDescription\x128\n" + "\x12result_description\x18o \x01(\tR\x11resultDescription\x128\n" +
"\x18content_type_description\x18s \x01(\tR\x16contentTypeDescription\x12*\n" + "\x18content_type_description\x18s \x01(\tR\x16contentTypeDescription\"\x83\x03\n" +
"\x10TIKTOKStatusDesc\x18y \x01(\tR\x10TIKTOKStatusDesc\x12,\n" +
"\x11YOUTUBEStatusDesc\x18z \x01(\tR\x11YOUTUBEStatusDesc\x12$\n" +
"\rINSStatusDesc\x18{ \x01(\tR\rINSStatusDesc\x12\"\n" +
"\fDMStatusDesc\x18| \x01(\tR\fDMStatusDesc\x12,\n" +
"\x11BULESKYStatusDesc\x18} \x01(\tR\x11BULESKYStatusDesc\x12#\n" +
"\fTIKTOKResult\x18\x83\x01 \x01(\tR\fTIKTOKResult\x12%\n" +
"\rYOUTUBEResult\x18\x84\x01 \x01(\tR\rYOUTUBEResult\x12\x1d\n" +
"\tINSResult\x18\x85\x01 \x01(\tR\tINSResult\x12\x1b\n" +
"\bDMResult\x18\x86\x01 \x01(\tR\bDMResult\x12%\n" +
"\rBULESKYResult\x18\x87\x01 \x01(\tR\rBULESKYResult\"\x83\x03\n" +
"\x19CreateScheduleTaskRequest\x12\x1d\n" + "\x19CreateScheduleTaskRequest\x12\x1d\n" +
"\n" + "\n" +
"task_title\x18\x01 \x01(\tR\ttaskTitle\x12 \n" + "task_title\x18\x01 \x01(\tR\ttaskTitle\x12 \n" +
@ -2199,7 +2018,7 @@ const file_pb_cron_proto_rawDesc = "" +
"\x1aCreateScheduleTaskResponse\x12\x12\n" + "\x1aCreateScheduleTaskResponse\x12\x12\n" +
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" +
"\amessage\x18\x02 \x01(\tR\amessage\x12&\n" + "\amessage\x18\x02 \x01(\tR\amessage\x12&\n" +
"\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\xae\x03\n" + "\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\x9c\x03\n" +
"\x19UpdateScheduleTaskRequest\x12\x17\n" + "\x19UpdateScheduleTaskRequest\x12\x17\n" +
"\atask_id\x18\x01 \x01(\x04R\x06taskId\x12\x1d\n" + "\atask_id\x18\x01 \x01(\x04R\x06taskId\x12\x1d\n" +
"\n" + "\n" +
@ -2215,20 +2034,13 @@ const file_pb_cron_proto_rawDesc = "" +
"\x12execute_start_time\x18\b \x01(\tR\x10executeStartTime\x12(\n" + "\x12execute_start_time\x18\b \x01(\tR\x10executeStartTime\x12(\n" +
"\x10execute_end_time\x18\t \x01(\tR\x0eexecuteEndTime\x12\x16\n" + "\x10execute_end_time\x18\t \x01(\tR\x0eexecuteEndTime\x12\x16\n" +
"\x06remark\x18\n" + "\x06remark\x18\n" +
" \x01(\tR\x06remark\x12J\n" + " \x01(\tR\x06remark\x128\n" +
"\vtask_detail\x18\v \x01(\v2).cron.UpdateScheduleTaskRequestTaskDetailR\n" + "\vtask_detail\x18\v \x01(\v2\x17.cron.TaskDetailRequestR\n" +
"taskDetail\"\xd2\x01\n" + "taskDetail\"r\n" +
"#UpdateScheduleTaskRequestTaskDetail\x12\x0e\n" +
"\x02id\x18\x05 \x01(\x05R\x02id\x12\x17\n" +
"\atask_id\x18\x06 \x01(\x05R\x06taskId\x12!\n" +
"\fartist_count\x18\x01 \x01(\x05R\vartistCount\x12*\n" +
"\aartists\x18\x02 \x03(\v2\x10.cron.ArtistInfoR\aartists\x12\x10\n" +
"\x03num\x18\x03 \x01(\x05R\x03num\x12!\n" +
"\fcontent_type\x18\x04 \x01(\x05R\vcontentType\"r\n" +
"\x1aUpdateScheduleTaskResponse\x12\x12\n" + "\x1aUpdateScheduleTaskResponse\x12\x12\n" +
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" +
"\amessage\x18\x02 \x01(\tR\amessage\x12&\n" + "\amessage\x18\x02 \x01(\tR\amessage\x12&\n" +
"\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\xff\x02\n" + "\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\x82\x02\n" +
"\x1aGetListScheduleTaskRequest\x12\x12\n" + "\x1aGetListScheduleTaskRequest\x12\x12\n" +
"\x04page\x18\x01 \x01(\x05R\x04page\x12\x1b\n" + "\x04page\x18\x01 \x01(\x05R\x04page\x12\x1b\n" +
"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" + "\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
@ -2240,12 +2052,7 @@ const file_pb_cron_proto_rawDesc = "" +
"start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" + "start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" +
"\bend_time\x18\x06 \x01(\tR\aendTime\x12\x16\n" + "\bend_time\x18\x06 \x01(\tR\aendTime\x12\x16\n" +
"\x06Status\x18\a \x01(\x05R\x06Status\x12!\n" + "\x06Status\x18\a \x01(\x05R\x06Status\x12!\n" +
"\fcontent_type\x18\b \x01(\x05R\vcontentType\x12A\n" + "\fcontent_type\x18\b \x01(\x05R\vcontentType\"\xb1\x01\n" +
"\x05sorts\x18\t \x03(\v2+.cron.GetListScheduleTaskRequest.SortsEntryR\x05sorts\x1a8\n" +
"\n" +
"SortsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb1\x01\n" +
"\x1bGetListScheduleTaskResponse\x12\x12\n" + "\x1bGetListScheduleTaskResponse\x12\x12\n" +
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" +
"\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" + "\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" +
@ -2313,7 +2120,7 @@ func file_pb_cron_proto_rawDescGZIP() []byte {
return file_pb_cron_proto_rawDescData return file_pb_cron_proto_rawDescData
} }
var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 22) var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_pb_cron_proto_goTypes = []any{ var file_pb_cron_proto_goTypes = []any{
(*CommonIDRequest)(nil), // 0: cron.CommonIDRequest (*CommonIDRequest)(nil), // 0: cron.CommonIDRequest
(*CommonResponse)(nil), // 1: cron.CommonResponse (*CommonResponse)(nil), // 1: cron.CommonResponse
@ -2326,17 +2133,15 @@ var file_pb_cron_proto_goTypes = []any{
(*TaskDetailRequest)(nil), // 8: cron.TaskDetailRequest (*TaskDetailRequest)(nil), // 8: cron.TaskDetailRequest
(*CreateScheduleTaskResponse)(nil), // 9: cron.CreateScheduleTaskResponse (*CreateScheduleTaskResponse)(nil), // 9: cron.CreateScheduleTaskResponse
(*UpdateScheduleTaskRequest)(nil), // 10: cron.UpdateScheduleTaskRequest (*UpdateScheduleTaskRequest)(nil), // 10: cron.UpdateScheduleTaskRequest
(*UpdateScheduleTaskRequestTaskDetail)(nil), // 11: cron.UpdateScheduleTaskRequestTaskDetail (*UpdateScheduleTaskResponse)(nil), // 11: cron.UpdateScheduleTaskResponse
(*UpdateScheduleTaskResponse)(nil), // 12: cron.UpdateScheduleTaskResponse (*GetListScheduleTaskRequest)(nil), // 12: cron.GetListScheduleTaskRequest
(*GetListScheduleTaskRequest)(nil), // 13: cron.GetListScheduleTaskRequest (*GetListScheduleTaskResponse)(nil), // 13: cron.GetListScheduleTaskResponse
(*GetListScheduleTaskResponse)(nil), // 14: cron.GetListScheduleTaskResponse (*GetListExecutionRecordRequest)(nil), // 14: cron.GetListExecutionRecordRequest
(*GetListExecutionRecordRequest)(nil), // 15: cron.GetListExecutionRecordRequest (*GetListExecutionRecordResponse)(nil), // 15: cron.GetListExecutionRecordResponse
(*GetListExecutionRecordResponse)(nil), // 16: cron.GetListExecutionRecordResponse (*GetListExecutionResultRequest)(nil), // 16: cron.GetListExecutionResultRequest
(*GetListExecutionResultRequest)(nil), // 17: cron.GetListExecutionResultRequest (*GetListExecutionResultResponse)(nil), // 17: cron.GetListExecutionResultResponse
(*GetListExecutionResultResponse)(nil), // 18: cron.GetListExecutionResultResponse (*TaskStatus)(nil), // 18: cron.TaskStatus
(*TaskStatus)(nil), // 19: cron.TaskStatus (*GetScheduleTaskStatusResponse)(nil), // 19: cron.GetScheduleTaskStatusResponse
(*GetScheduleTaskStatusResponse)(nil), // 20: cron.GetScheduleTaskStatusResponse
nil, // 21: cron.GetListScheduleTaskRequest.SortsEntry
} }
var file_pb_cron_proto_depIdxs = []int32{ var file_pb_cron_proto_depIdxs = []int32{
3, // 0: cron.ScheduleTask.task_detail:type_name -> cron.TaskDetail 3, // 0: cron.ScheduleTask.task_detail:type_name -> cron.TaskDetail
@ -2346,19 +2151,17 @@ var file_pb_cron_proto_depIdxs = []int32{
8, // 4: cron.CreateScheduleTaskRequest.task_detail:type_name -> cron.TaskDetailRequest 8, // 4: cron.CreateScheduleTaskRequest.task_detail:type_name -> cron.TaskDetailRequest
4, // 5: cron.TaskDetailRequest.artists:type_name -> cron.ArtistInfo 4, // 5: cron.TaskDetailRequest.artists:type_name -> cron.ArtistInfo
2, // 6: cron.CreateScheduleTaskResponse.data:type_name -> cron.ScheduleTask 2, // 6: cron.CreateScheduleTaskResponse.data:type_name -> cron.ScheduleTask
11, // 7: cron.UpdateScheduleTaskRequest.task_detail:type_name -> cron.UpdateScheduleTaskRequestTaskDetail 8, // 7: cron.UpdateScheduleTaskRequest.task_detail:type_name -> cron.TaskDetailRequest
4, // 8: cron.UpdateScheduleTaskRequestTaskDetail.artists:type_name -> cron.ArtistInfo 2, // 8: cron.UpdateScheduleTaskResponse.data:type_name -> cron.ScheduleTask
2, // 9: cron.UpdateScheduleTaskResponse.data:type_name -> cron.ScheduleTask 2, // 9: cron.GetListScheduleTaskResponse.data:type_name -> cron.ScheduleTask
21, // 10: cron.GetListScheduleTaskRequest.sorts:type_name -> cron.GetListScheduleTaskRequest.SortsEntry 5, // 10: cron.GetListExecutionRecordResponse.data:type_name -> cron.ExecutionRecord
2, // 11: cron.GetListScheduleTaskResponse.data:type_name -> cron.ScheduleTask 6, // 11: cron.GetListExecutionResultResponse.data:type_name -> cron.ExecutionResult
5, // 12: cron.GetListExecutionRecordResponse.data:type_name -> cron.ExecutionRecord 18, // 12: cron.GetScheduleTaskStatusResponse.data:type_name -> cron.TaskStatus
6, // 13: cron.GetListExecutionResultResponse.data:type_name -> cron.ExecutionResult 13, // [13:13] is the sub-list for method output_type
19, // 14: cron.GetScheduleTaskStatusResponse.data:type_name -> cron.TaskStatus 13, // [13:13] is the sub-list for method input_type
15, // [15:15] is the sub-list for method output_type 13, // [13:13] is the sub-list for extension type_name
15, // [15:15] is the sub-list for method input_type 13, // [13:13] is the sub-list for extension extendee
15, // [15:15] is the sub-list for extension type_name 0, // [0:13] is the sub-list for field type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
} }
func init() { file_pb_cron_proto_init() } func init() { file_pb_cron_proto_init() }
@ -2372,7 +2175,7 @@ func file_pb_cron_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_cron_proto_rawDesc), len(file_pb_cron_proto_rawDesc)), RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_cron_proto_rawDesc), len(file_pb_cron_proto_rawDesc)),
NumEnums: 0, NumEnums: 0,
NumMessages: 22, NumMessages: 20,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -7,6 +7,7 @@ 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/known/emptypb"
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
) )
@ -96,16 +97,6 @@ func (this *UpdateScheduleTaskRequest) Validate() error {
} }
return nil return nil
} }
func (this *UpdateScheduleTaskRequestTaskDetail) Validate() error {
for _, item := range this.Artists {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Artists", err)
}
}
}
return nil
}
func (this *UpdateScheduleTaskResponse) Validate() error { func (this *UpdateScheduleTaskResponse) Validate() error {
if this.Data != nil { if this.Data != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
@ -115,7 +106,6 @@ func (this *UpdateScheduleTaskResponse) Validate() error {
return nil return nil
} }
func (this *GetListScheduleTaskRequest) Validate() error { func (this *GetListScheduleTaskRequest) Validate() error {
// Validation of proto3 map<> fields is unsupported.
return nil return nil
} }
func (this *GetListScheduleTaskResponse) Validate() error { func (this *GetListScheduleTaskResponse) Validate() error {

File diff suppressed because it is too large Load Diff

View File

@ -9,53 +9,20 @@ service Governance{
rpc List(ListReq) returns (ListResp) {} rpc List(ListReq) returns (ListResp) {}
rpc Delete(DeleteReq) returns (DeleteResp) {} rpc Delete(DeleteReq) returns (DeleteResp) {}
rpc Edit(EditReq) returns (EditResp) {} rpc Edit(EditReq) returns (EditResp) {}
rpc UpdataStatus(UpdataStatusReq) returns (UpdataStatusResp) {}
rpc GetGovernanceInfo(GetGovernanceInfoReq) returns (GetGovernanceInfoResp) {}
rpc Create(CreateReq) returns (CreateResp) {} rpc Create(CreateReq) returns (CreateResp) {}
rpc Display(DisplayReq) returns (DisplayResp) {} rpc Display(DisplayReq) returns (DisplayResp) {}
} }
message LangSetting {
string langType = 1;//
int32 isSetting = 2;//
}
message GovernanceLangData{
string title = 1;//
string attachment = 2;//
string attachmentName = 3;//
int32 isSetting = 4;//
}
message GovernanceLang{
string langType = 1;//
GovernanceLangData data = 2;//
}
message GovernanceInfo{
string uuid = 1;
repeated GovernanceLang dataByLang = 2;//
int32 sort = 3;//
int32 status = 4;//
}
message Item{ message Item{
string uuid = 1; int32 id = 1;
string title = 2; string title = 2;
string attachment = 3; string attachment = 3;
string attachmentName = 4; string attachmentName = 4;
repeated LangSetting langSetting = 5;// int32 sort = 5;
int32 sort = 6; int32 status = 6;
int32 status = 7; int64 updatedAt = 7;
int64 updatedAt = 8; string operator = 8;
string operator = 9; int32 operatorId = 9;
int32 operatorId = 10;
}
message DisplayItem{
string title = 1;
string attachment = 2;
string attachmentName = 3;
} }
message ListReq{ message ListReq{
@ -71,48 +38,34 @@ message ListResp{
} }
message DeleteReq{ message DeleteReq{
string uuid = 1; int32 id = 1;
} }
message DeleteResp{ message DeleteResp{
} }
message EditReq{ message EditReq{
string uuid = 1; uint32 id = 1;
repeated GovernanceLang dataByLang = 2; string title = 2;
int32 sort = 3; string attachment = 3;
string operator = 4; string attachmentName = 4;
int32 operatorId = 5; int32 sort = 5;
int32 status = 6;
string operator = 7;
int32 operatorId = 8;
} }
message EditResp{ message EditResp{
} }
message UpdataStatusReq{
string uuid = 1;
int32 status = 2;
string operator = 3;
int32 operatorId = 4;
}
message UpdataStatusResp{
string msg = 1;
}
message GetGovernanceInfoReq{
string uuid = 1;
}
message GetGovernanceInfoResp{
string msg = 1;
GovernanceInfo data = 2;
}
message CreateReq{ message CreateReq{
string uuid = 1; string title = 1;
repeated GovernanceLang dataByLang = 2; uint32 sort = 2;
uint32 sort = 3; string attachment = 3;
int32 status = 4; string attachmentName = 4;
string operator = 5; int32 status = 5;
int32 operatorId = 6; string operator = 6;
int32 operatorId = 7;
} }
message CreateResp{ message CreateResp{
@ -120,9 +73,9 @@ message CreateResp{
} }
message DisplayReq{ message DisplayReq{
string langType = 1;//
} }
message DisplayResp{ message DisplayResp{
repeated DisplayItem data = 1; repeated Item data = 1;
} }

View File

@ -1,5 +1,5 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT. // Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: api/governance/governance.proto // source: governance.proto
package governance package governance
@ -15,41 +15,7 @@ var _ = proto.Marshal
var _ = fmt.Errorf var _ = fmt.Errorf
var _ = math.Inf var _ = math.Inf
func (this *LangSetting) Validate() error {
return nil
}
func (this *GovernanceLangData) Validate() error {
return nil
}
func (this *GovernanceLang) Validate() error {
if this.Data != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
}
}
return nil
}
func (this *GovernanceInfo) Validate() error {
for _, item := range this.DataByLang {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
}
}
}
return nil
}
func (this *Item) Validate() error { func (this *Item) Validate() error {
for _, item := range this.LangSetting {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
}
}
}
return nil
}
func (this *DisplayItem) Validate() error {
return nil return nil
} }
func (this *ListReq) Validate() error { func (this *ListReq) Validate() error {
@ -72,43 +38,12 @@ func (this *DeleteResp) Validate() error {
return nil return nil
} }
func (this *EditReq) Validate() error { func (this *EditReq) Validate() error {
for _, item := range this.DataByLang {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
}
}
}
return nil return nil
} }
func (this *EditResp) Validate() error { func (this *EditResp) Validate() error {
return nil return nil
} }
func (this *UpdataStatusReq) Validate() error {
return nil
}
func (this *UpdataStatusResp) Validate() error {
return nil
}
func (this *GetGovernanceInfoReq) Validate() error {
return nil
}
func (this *GetGovernanceInfoResp) Validate() error {
if this.Data != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
}
}
return nil
}
func (this *CreateReq) Validate() error { func (this *CreateReq) Validate() error {
for _, item := range this.DataByLang {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
}
}
}
return nil return nil
} }
func (this *CreateResp) Validate() error { func (this *CreateResp) Validate() error {

View File

@ -1,8 +1,8 @@
// 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.5 // - protoc-gen-go-triple v1.0.8
// - protoc v5.26.0 // - protoc v3.20.3
// source: api/governance/governance.proto // source: governance.proto
package governance package governance
@ -31,8 +31,6 @@ type GovernanceClient interface {
List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment) List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment)
Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment)
Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment) Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment)
UpdataStatus(ctx context.Context, in *UpdataStatusReq, opts ...grpc_go.CallOption) (*UpdataStatusResp, common.ErrorWithAttachment)
GetGovernanceInfo(ctx context.Context, in *GetGovernanceInfoReq, opts ...grpc_go.CallOption) (*GetGovernanceInfoResp, common.ErrorWithAttachment)
Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment)
Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment) Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment)
} }
@ -45,8 +43,6 @@ type GovernanceClientImpl struct {
List func(ctx context.Context, in *ListReq) (*ListResp, error) List func(ctx context.Context, in *ListReq) (*ListResp, error)
Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error) Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error)
Edit func(ctx context.Context, in *EditReq) (*EditResp, error) Edit func(ctx context.Context, in *EditReq) (*EditResp, error)
UpdataStatus func(ctx context.Context, in *UpdataStatusReq) (*UpdataStatusResp, error)
GetGovernanceInfo func(ctx context.Context, in *GetGovernanceInfoReq) (*GetGovernanceInfoResp, error)
Create func(ctx context.Context, in *CreateReq) (*CreateResp, error) Create func(ctx context.Context, in *CreateReq) (*CreateResp, error)
Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error) Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error)
} }
@ -81,18 +77,6 @@ func (c *governanceClient) Edit(ctx context.Context, in *EditReq, opts ...grpc_g
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Edit", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Edit", in, out)
} }
func (c *governanceClient) UpdataStatus(ctx context.Context, in *UpdataStatusReq, opts ...grpc_go.CallOption) (*UpdataStatusResp, common.ErrorWithAttachment) {
out := new(UpdataStatusResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdataStatus", in, out)
}
func (c *governanceClient) GetGovernanceInfo(ctx context.Context, in *GetGovernanceInfoReq, opts ...grpc_go.CallOption) (*GetGovernanceInfoResp, common.ErrorWithAttachment) {
out := new(GetGovernanceInfoResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetGovernanceInfo", in, out)
}
func (c *governanceClient) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) { func (c *governanceClient) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) {
out := new(CreateResp) out := new(CreateResp)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -112,8 +96,6 @@ type GovernanceServer interface {
List(context.Context, *ListReq) (*ListResp, error) List(context.Context, *ListReq) (*ListResp, error)
Delete(context.Context, *DeleteReq) (*DeleteResp, error) Delete(context.Context, *DeleteReq) (*DeleteResp, error)
Edit(context.Context, *EditReq) (*EditResp, error) Edit(context.Context, *EditReq) (*EditResp, error)
UpdataStatus(context.Context, *UpdataStatusReq) (*UpdataStatusResp, error)
GetGovernanceInfo(context.Context, *GetGovernanceInfoReq) (*GetGovernanceInfoResp, error)
Create(context.Context, *CreateReq) (*CreateResp, error) Create(context.Context, *CreateReq) (*CreateResp, error)
Display(context.Context, *DisplayReq) (*DisplayResp, error) Display(context.Context, *DisplayReq) (*DisplayResp, error)
mustEmbedUnimplementedGovernanceServer() mustEmbedUnimplementedGovernanceServer()
@ -133,12 +115,6 @@ func (UnimplementedGovernanceServer) Delete(context.Context, *DeleteReq) (*Delet
func (UnimplementedGovernanceServer) Edit(context.Context, *EditReq) (*EditResp, error) { func (UnimplementedGovernanceServer) Edit(context.Context, *EditReq) (*EditResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method Edit not implemented") return nil, status.Errorf(codes.Unimplemented, "method Edit not implemented")
} }
func (UnimplementedGovernanceServer) UpdataStatus(context.Context, *UpdataStatusReq) (*UpdataStatusResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdataStatus not implemented")
}
func (UnimplementedGovernanceServer) GetGovernanceInfo(context.Context, *GetGovernanceInfoReq) (*GetGovernanceInfoResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetGovernanceInfo not implemented")
}
func (UnimplementedGovernanceServer) Create(context.Context, *CreateReq) (*CreateResp, error) { func (UnimplementedGovernanceServer) Create(context.Context, *CreateReq) (*CreateResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
} }
@ -260,64 +236,6 @@ func _Governance_Edit_Handler(srv interface{}, ctx context.Context, dec func(int
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Governance_UpdataStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdataStatusReq)
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("UpdataStatus", 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 _Governance_GetGovernanceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetGovernanceInfoReq)
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("GetGovernanceInfo", 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 _Governance_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _Governance_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateReq) in := new(CreateReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -395,14 +313,6 @@ var Governance_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "Edit", MethodName: "Edit",
Handler: _Governance_Edit_Handler, Handler: _Governance_Edit_Handler,
}, },
{
MethodName: "UpdataStatus",
Handler: _Governance_UpdataStatus_Handler,
},
{
MethodName: "GetGovernanceInfo",
Handler: _Governance_GetGovernanceInfo_Handler,
},
{ {
MethodName: "Create", MethodName: "Create",
Handler: _Governance_Create_Handler, Handler: _Governance_Create_Handler,
@ -413,5 +323,5 @@ var Governance_ServiceDesc = grpc_go.ServiceDesc{
}, },
}, },
Streams: []grpc_go.StreamDesc{}, Streams: []grpc_go.StreamDesc{},
Metadata: "api/governance/governance.proto", Metadata: "governance.proto",
} }

View File

@ -190,9 +190,9 @@ type IsSecFilingExistReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FilingDate string `protobuf:"bytes,1,opt,name=filingDate,proto3" json:"filingDate,omitempty"` FilingDate string `protobuf:"bytes,1,opt,name=filingDate,proto3" json:"filingDate"`
Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form,omitempty"` Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form"`
FinalLink string `protobuf:"bytes,3,opt,name=finalLink,proto3" json:"finalLink,omitempty"` FinalLink string `protobuf:"bytes,3,opt,name=finalLink,proto3" json:"finalLink"`
} }
func (x *IsSecFilingExistReq) Reset() { func (x *IsSecFilingExistReq) Reset() {
@ -253,7 +253,7 @@ type IsSecFilingExistResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Exist bool `protobuf:"varint,1,opt,name=exist,proto3" json:"exist,omitempty"` Exist bool `protobuf:"varint,1,opt,name=exist,proto3" json:"exist"`
} }
func (x *IsSecFilingExistResp) Reset() { func (x *IsSecFilingExistResp) Reset() {
@ -300,8 +300,8 @@ type CommonResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"`
FilingKey string `protobuf:"bytes,2,opt,name=filingKey,json=filing_key,proto3" json:"filingKey,omitempty"` FilingKey string `protobuf:"bytes,2,opt,name=filingKey,json=filing_key,proto3" json:"filingKey"`
} }
func (x *CommonResp) Reset() { func (x *CommonResp) Reset() {
@ -355,22 +355,22 @@ type SecFiling struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Idx int32 `protobuf:"varint,1,opt,name=idx,proto3" json:"idx,omitempty"` Idx int32 `protobuf:"varint,1,opt,name=idx,proto3" json:"idx"`
FilingKey string `protobuf:"bytes,2,opt,name=filingKey,json=filing_key,proto3" json:"filingKey,omitempty"` FilingKey string `protobuf:"bytes,2,opt,name=filingKey,json=filing_key,proto3" json:"filingKey"`
FilingDate string `protobuf:"bytes,3,opt,name=filingDate,json=filing_date,proto3" json:"filingDate,omitempty"` FilingDate string `protobuf:"bytes,3,opt,name=filingDate,json=filing_date,proto3" json:"filingDate"`
Form string `protobuf:"bytes,4,opt,name=form,proto3" json:"form,omitempty"` Form string `protobuf:"bytes,4,opt,name=form,proto3" json:"form"`
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description"`
FormDescription string `protobuf:"bytes,6,opt,name=formDescription,json=form_description,proto3" json:"formDescription,omitempty"` FormDescription string `protobuf:"bytes,6,opt,name=formDescription,json=form_description,proto3" json:"formDescription"`
FileLink string `protobuf:"bytes,7,opt,name=fileLink,json=file_link,proto3" json:"fileLink,omitempty"` FileLink string `protobuf:"bytes,7,opt,name=fileLink,json=file_link,proto3" json:"fileLink"`
DataFiles []*DataFiles `protobuf:"bytes,8,rep,name=dataFiles,json=data_files,proto3" json:"dataFiles,omitempty"` DataFiles []*DataFiles `protobuf:"bytes,8,rep,name=dataFiles,json=data_files,proto3" json:"dataFiles"`
PdfFile string `protobuf:"bytes,9,opt,name=pdfFile,json=pdf_file,proto3" json:"pdfFile,omitempty"` PdfFile string `protobuf:"bytes,9,opt,name=pdfFile,json=pdf_file,proto3" json:"pdfFile"`
WordFile string `protobuf:"bytes,10,opt,name=wordFile,json=word_file,proto3" json:"wordFile,omitempty"` WordFile string `protobuf:"bytes,10,opt,name=wordFile,json=word_file,proto3" json:"wordFile"`
ExcelFile string `protobuf:"bytes,11,opt,name=excelFile,json=excel_file,proto3" json:"excelFile,omitempty"` ExcelFile string `protobuf:"bytes,11,opt,name=excelFile,json=excel_file,proto3" json:"excelFile"`
Status int32 `protobuf:"varint,12,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,12,opt,name=status,proto3" json:"status"`
Operator string `protobuf:"bytes,13,opt,name=operator,proto3" json:"operator,omitempty"` Operator string `protobuf:"bytes,13,opt,name=operator,proto3" json:"operator"`
OperatorId int32 `protobuf:"varint,14,opt,name=operatorId,json=operator_id,proto3" json:"operatorId,omitempty"` OperatorId int32 `protobuf:"varint,14,opt,name=operatorId,json=operator_id,proto3" json:"operatorId"`
CreatedAt string `protobuf:"bytes,15,opt,name=createdAt,json=created_at,proto3" json:"createdAt,omitempty"` CreatedAt string `protobuf:"bytes,15,opt,name=createdAt,json=created_at,proto3" json:"createdAt"`
UpdatedAt string `protobuf:"bytes,16,opt,name=updatedAt,json=updated_at,proto3" json:"updatedAt,omitempty"` UpdatedAt string `protobuf:"bytes,16,opt,name=updatedAt,json=updated_at,proto3" json:"updatedAt"`
} }
func (x *SecFiling) Reset() { func (x *SecFiling) Reset() {
@ -522,8 +522,8 @@ type DataFiles struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description"`
FileUrl string `protobuf:"bytes,2,opt,name=fileUrl,json=file_url,proto3" json:"fileUrl,omitempty"` FileUrl string `protobuf:"bytes,2,opt,name=fileUrl,json=file_url,proto3" json:"fileUrl"`
} }
func (x *DataFiles) Reset() { func (x *DataFiles) Reset() {
@ -577,17 +577,17 @@ type CreateSecFilingReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FilingDate string `protobuf:"bytes,1,opt,name=filingDate,proto3" json:"filingDate,omitempty"` FilingDate string `protobuf:"bytes,1,opt,name=filingDate,proto3" json:"filingDate"`
Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form,omitempty"` Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"`
FormDescription string `protobuf:"bytes,4,opt,name=formDescription,proto3" json:"formDescription,omitempty"` FormDescription string `protobuf:"bytes,4,opt,name=formDescription,proto3" json:"formDescription"`
FileLink string `protobuf:"bytes,5,opt,name=fileLink,proto3" json:"fileLink,omitempty"` FileLink string `protobuf:"bytes,5,opt,name=fileLink,proto3" json:"fileLink"`
DataFiles []*DataFiles `protobuf:"bytes,6,rep,name=dataFiles,proto3" json:"dataFiles,omitempty"` DataFiles []*DataFiles `protobuf:"bytes,6,rep,name=dataFiles,proto3" json:"dataFiles"`
PdfFile string `protobuf:"bytes,7,opt,name=pdfFile,proto3" json:"pdfFile,omitempty"` PdfFile string `protobuf:"bytes,7,opt,name=pdfFile,proto3" json:"pdfFile"`
WordFile string `protobuf:"bytes,8,opt,name=wordFile,proto3" json:"wordFile,omitempty"` WordFile string `protobuf:"bytes,8,opt,name=wordFile,proto3" json:"wordFile"`
ExcelFile string `protobuf:"bytes,9,opt,name=excelFile,proto3" json:"excelFile,omitempty"` ExcelFile string `protobuf:"bytes,9,opt,name=excelFile,proto3" json:"excelFile"`
Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator,omitempty"` Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator"`
OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId,omitempty"` OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId"`
} }
func (x *CreateSecFilingReq) Reset() { func (x *CreateSecFilingReq) Reset() {
@ -704,18 +704,18 @@ type UpdateSecFilingReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey"`
Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form,omitempty"` Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"`
FormDescription string `protobuf:"bytes,4,opt,name=formDescription,proto3" json:"formDescription,omitempty"` FormDescription string `protobuf:"bytes,4,opt,name=formDescription,proto3" json:"formDescription"`
FileLink string `protobuf:"bytes,5,opt,name=fileLink,proto3" json:"fileLink,omitempty"` FileLink string `protobuf:"bytes,5,opt,name=fileLink,proto3" json:"fileLink"`
DataFiles []*DataFiles `protobuf:"bytes,6,rep,name=dataFiles,proto3" json:"dataFiles,omitempty"` DataFiles []*DataFiles `protobuf:"bytes,6,rep,name=dataFiles,proto3" json:"dataFiles"`
PdfFile string `protobuf:"bytes,7,opt,name=pdfFile,proto3" json:"pdfFile,omitempty"` PdfFile string `protobuf:"bytes,7,opt,name=pdfFile,proto3" json:"pdfFile"`
WordFile string `protobuf:"bytes,8,opt,name=wordFile,proto3" json:"wordFile,omitempty"` WordFile string `protobuf:"bytes,8,opt,name=wordFile,proto3" json:"wordFile"`
ExcelFile string `protobuf:"bytes,9,opt,name=excelFile,proto3" json:"excelFile,omitempty"` ExcelFile string `protobuf:"bytes,9,opt,name=excelFile,proto3" json:"excelFile"`
Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator,omitempty"` Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator"`
OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId,omitempty"` OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId"`
FilingDate string `protobuf:"bytes,12,opt,name=filingDate,proto3" json:"filingDate,omitempty"` FilingDate string `protobuf:"bytes,12,opt,name=filingDate,proto3" json:"filingDate"`
} }
func (x *UpdateSecFilingReq) Reset() { func (x *UpdateSecFilingReq) Reset() {
@ -839,7 +839,7 @@ type DetailSecFilingReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey"`
} }
func (x *DetailSecFilingReq) Reset() { func (x *DetailSecFilingReq) Reset() {
@ -886,8 +886,8 @@ type SecFilingDetailResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"`
Data *SecFiling `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` Data *SecFiling `protobuf:"bytes,2,opt,name=data,proto3" json:"data"`
} }
func (x *SecFilingDetailResp) Reset() { func (x *SecFilingDetailResp) Reset() {
@ -941,12 +941,12 @@ type ListSecFilingReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Page uint32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` Page uint32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"`
PageSize uint32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` PageSize uint32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"`
Form string `protobuf:"bytes,3,opt,name=form,proto3" json:"form,omitempty"` Form string `protobuf:"bytes,3,opt,name=form,proto3" json:"form"`
FilingDateBegin string `protobuf:"bytes,4,opt,name=filingDateBegin,proto3" json:"filingDateBegin,omitempty"` FilingDateBegin string `protobuf:"bytes,4,opt,name=filingDateBegin,proto3" json:"filingDateBegin"`
FilingDateEnd string `protobuf:"bytes,5,opt,name=filingDateEnd,proto3" json:"filingDateEnd,omitempty"` FilingDateEnd string `protobuf:"bytes,5,opt,name=filingDateEnd,proto3" json:"filingDateEnd"`
Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"`
} }
func (x *ListSecFilingReq) Reset() { func (x *ListSecFilingReq) Reset() {
@ -1028,9 +1028,9 @@ type SecFilingListResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"`
Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"`
Data []*SecFiling `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` Data []*SecFiling `protobuf:"bytes,3,rep,name=data,proto3" json:"data"`
} }
func (x *SecFilingListResp) Reset() { func (x *SecFilingListResp) Reset() {
@ -1233,9 +1233,9 @@ type DeleteSecFilingReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey"`
Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator"`
OperatorId int32 `protobuf:"varint,3,opt,name=operatorId,proto3" json:"operatorId,omitempty"` OperatorId int32 `protobuf:"varint,3,opt,name=operatorId,proto3" json:"operatorId"`
} }
func (x *DeleteSecFilingReq) Reset() { func (x *DeleteSecFilingReq) Reset() {
@ -1296,10 +1296,10 @@ type UpdateSecFilingStatusReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"`
Operator string `protobuf:"bytes,3,opt,name=operator,proto3" json:"operator,omitempty"` Operator string `protobuf:"bytes,3,opt,name=operator,proto3" json:"operator"`
OperatorId int32 `protobuf:"varint,4,opt,name=operatorId,proto3" json:"operatorId,omitempty"` OperatorId int32 `protobuf:"varint,4,opt,name=operatorId,proto3" json:"operatorId"`
} }
func (x *UpdateSecFilingStatusReq) Reset() { func (x *UpdateSecFilingStatusReq) Reset() {

File diff suppressed because it is too large Load Diff

View File

@ -1,212 +0,0 @@
syntax = "proto3";
package supplier;
option go_package = "./;supplier";
// FiEE供应商微服务
service Supplier {
//curd
rpc GetSupplier(GetSupplierRequest) returns (UpdateSupplierRequest) {}
rpc CreateSupplier(CreateSupplierRequest) returns (CreateSupplierResponse) {}
rpc UpdateSupplier(UpdateSupplierRequest) returns (CreateSupplierResponse) {}
rpc GetSupplierList(GetSupplierListRequest) returns (GetSupplierListResponse) {}
//
rpc CreateOrganizeDictionary(CreateOrganizeDictionaryRequest) returns (CreateOrganizeDictionaryResponse) {}
rpc GetOrganizeDictionaryList(GetOrganizeDictionaryListRequest) returns (GetOrganizeDictionaryListResponse) {}
rpc GetOrganizeDictionaryInfo(CreateOrganizeDictionaryRequest) returns (OrganizeDictionary) {}
//
rpc GetCountryRegionList(GetCountryRegionListRequest) returns (GetCountryRegionListResponse) {}
rpc GetCountryRegionInfo(GetCountryRegionInfoRequest) returns (CountryRegion) {}
//
rpc CreateImportRecord(CreateImportRecordRequest) returns (CreateImportRecordResponse) {}
rpc GetImportRecordInfo(GetImportRecordRequest) returns (GetImportRecordResponse) {}
}
message GetImportRecordRequest{
string uuid = 1;
}
message GetImportRecordResponse{
uint64 successNum = 1;
uint64 failNum = 2;
string deriveUrl = 3;
}
message CreateImportRecordRequest{
repeated string supplierCodes = 1;
uint64 status = 2;
uint64 userId = 3;
string toLeadUrl = 4;
string deriveUrl = 5;
string uuid = 6;
uint64 successNum = 7;
uint64 failNum = 8;
}
message CreateImportRecordResponse{
uint64 id = 1;
}
message GetCountryRegionListResponse{
repeated CountryRegion data = 1;
uint64 page = 2;
uint64 pageSize = 3;
uint64 total = 4;
}
message CountryRegion{
uint64 id = 1;
string nameEN = 2;
string nameCN = 3;
string code = 4;
}
message GetCountryRegionInfoRequest{
string zhAndCode = 1;
}
message GetCountryRegionListRequest{
uint64 page = 1;
uint64 pageSize = 2;
string nameEN = 3;
string nameCN = 4;
string code = 5;
}
message OrganizeDictionary{
uint64 id = 1;
string name = 2;
}
message GetOrganizeDictionaryListResponse{
repeated OrganizeDictionary data = 1;
uint64 page = 2;
uint64 pageSize = 3;
uint64 total = 4;
}
message CreateOrganizeDictionaryRequest{
string name = 1;
}
message CreateOrganizeDictionaryResponse{
uint64 id = 1;
}
message GetOrganizeDictionaryListRequest{
uint64 page = 1;
uint64 pageSize = 2;
string name = 3;
}
message GetSupplierListRequest{
uint64 page = 1;
uint64 pageSize = 2;
uint64 owningEntityId = 3;
string supplierUniqueCode = 4;
string legalName =5;
string localName = 6;
string abbreviationName =7;
uint64 countryOrRegionId = 8;
string companyRegistrationNumber =9;
string supplierType =10;
string approvalStatus = 11;
string approvalDateStart = 12;
string approvalDateEnd = 13;
string lastReviewDateStart = 14;
string lastReviewDateEnd = 15;
string legalEntityType = 16;
string sanctionsCountryScreeningResult = 17;
string keyFinancial = 18;
string companyAddress = 19;
string primaryContact = 20;
string dataOwnerDepartment = 21;
string basicCompanyInformation = 22;
uint64 status = 23;
string updateStart = 24;
string updateEnd = 25;
string connectedParty = 26;
}
message GetSupplierListResponse{
uint64 total = 1;
repeated SupplierInfo data = 2;
uint64 page = 3;
uint64 pageSize = 4;
}
message SupplierInfo{
uint64 id = 1;
uint64 owningEntityId = 2;
string legalName = 3;
string localName = 4;
string abbreviationName = 5;
uint64 countryOrRegionId = 6;
string companyRegistrationNumber = 7;
string supplierType = 8;
string approvalStatus = 9;
string approvalDate = 10;
string lastReviewDate = 11;
string legalEntityType = 12;
string sanctionsCountryScreeningResult = 13;
string keyFinancial = 14;
string companyAddress = 15;
string primaryContact = 16;
string dataOwnerDepartment = 17;
string basicCompanyInformation = 18;
string linkAddress = 19;
string supplementaryText = 20;
repeated attachment attachments = 21;
uint64 status = 22;
string createdAt = 23;
string updatedAt = 24;
string supplierUniqueCode = 25;
string owningEntityName = 26;
string countryOrRegionCode = 27;
string connectedParty = 28;
}
message UpdateSupplierRequest{
uint64 id = 1;
uint64 owningEntityId = 2;
string legalName = 3;
string localName = 4;
string abbreviationName = 5;
uint64 countryOrRegionId = 6;
string companyRegistrationNumber = 7;
string supplierType = 8;
string approvalStatus = 9;
string approvalDate = 10;
string lastReviewDate = 11;
string legalEntityType = 12;
string sanctionsCountryScreeningResult = 13;
string keyFinancial = 14;
string companyAddress = 15;
string primaryContact = 16;
string dataOwnerDepartment = 17;
string basicCompanyInformation = 18;
string linkAddress = 19;
string supplementaryText = 20;
repeated attachment attachments = 21;
uint64 status = 22;
string connectedParty = 23;
}
message CreateSupplierRequest{
uint64 owningEntityId = 1;
string legalName = 2;
string localName = 3;
string abbreviationName = 4;
uint64 countryOrRegionId = 5;
string companyRegistrationNumber = 6;
string supplierType = 7;
string approvalStatus = 8;
string approvalDate = 9;
string lastReviewDate = 10;
string legalEntityType = 11;
string sanctionsCountryScreeningResult = 12;
string keyFinancial = 13;
string companyAddress = 14;
string primaryContact = 15;
string dataOwnerDepartment = 16;
string basicCompanyInformation = 17;
string linkAddress = 18;
string supplementaryText = 19;
repeated attachment attachments = 20;
uint64 status = 21;
string connectedParty = 22;
}
message attachment{
string url = 1;
string type = 2;
string name = 3;
}
message CreateSupplierResponse{
uint64 id = 1;
string supplierCode = 2;
}
message GetSupplierRequest{
uint64 id = 1;
}

View File

@ -1,122 +0,0 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: api/supplier/supplier.proto
package supplier
import (
fmt "fmt"
math "math"
proto "github.com/golang/protobuf/proto"
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
func (this *GetImportRecordRequest) Validate() error {
return nil
}
func (this *GetImportRecordResponse) Validate() error {
return nil
}
func (this *CreateImportRecordRequest) Validate() error {
return nil
}
func (this *CreateImportRecordResponse) Validate() error {
return nil
}
func (this *GetCountryRegionListResponse) Validate() error {
for _, item := range this.Data {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
}
}
}
return nil
}
func (this *CountryRegion) Validate() error {
return nil
}
func (this *GetCountryRegionInfoRequest) Validate() error {
return nil
}
func (this *GetCountryRegionListRequest) Validate() error {
return nil
}
func (this *OrganizeDictionary) Validate() error {
return nil
}
func (this *GetOrganizeDictionaryListResponse) Validate() error {
for _, item := range this.Data {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
}
}
}
return nil
}
func (this *CreateOrganizeDictionaryRequest) Validate() error {
return nil
}
func (this *CreateOrganizeDictionaryResponse) Validate() error {
return nil
}
func (this *GetOrganizeDictionaryListRequest) Validate() error {
return nil
}
func (this *GetSupplierListRequest) Validate() error {
return nil
}
func (this *GetSupplierListResponse) Validate() error {
for _, item := range this.Data {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
}
}
}
return nil
}
func (this *SupplierInfo) Validate() error {
for _, item := range this.Attachments {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err)
}
}
}
return nil
}
func (this *UpdateSupplierRequest) Validate() error {
for _, item := range this.Attachments {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err)
}
}
}
return nil
}
func (this *CreateSupplierRequest) Validate() error {
for _, item := range this.Attachments {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err)
}
}
}
return nil
}
func (this *Attachment) Validate() error {
return nil
}
func (this *CreateSupplierResponse) Validate() error {
return nil
}
func (this *GetSupplierRequest) Validate() error {
return nil
}

View File

@ -1,605 +0,0 @@
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
// versions:
// - protoc-gen-go-triple v1.0.5
// - protoc v6.32.0
// source: api/supplier/supplier.proto
package supplier
import (
context "context"
protocol "dubbo.apache.org/dubbo-go/v3/protocol"
dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation"
grpc_go "github.com/dubbogo/grpc-go"
codes "github.com/dubbogo/grpc-go/codes"
metadata "github.com/dubbogo/grpc-go/metadata"
status "github.com/dubbogo/grpc-go/status"
common "github.com/dubbogo/triple/pkg/common"
constant "github.com/dubbogo/triple/pkg/common/constant"
triple "github.com/dubbogo/triple/pkg/triple"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc_go.SupportPackageIsVersion7
// SupplierClient is the client API for Supplier service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type SupplierClient interface {
// 供应商curd
GetSupplier(ctx context.Context, in *GetSupplierRequest, opts ...grpc_go.CallOption) (*UpdateSupplierRequest, common.ErrorWithAttachment)
CreateSupplier(ctx context.Context, in *CreateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment)
UpdateSupplier(ctx context.Context, in *UpdateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment)
GetSupplierList(ctx context.Context, in *GetSupplierListRequest, opts ...grpc_go.CallOption) (*GetSupplierListResponse, common.ErrorWithAttachment)
// 组织字典
CreateOrganizeDictionary(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*CreateOrganizeDictionaryResponse, common.ErrorWithAttachment)
GetOrganizeDictionaryList(ctx context.Context, in *GetOrganizeDictionaryListRequest, opts ...grpc_go.CallOption) (*GetOrganizeDictionaryListResponse, common.ErrorWithAttachment)
GetOrganizeDictionaryInfo(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*OrganizeDictionary, common.ErrorWithAttachment)
// 国家组织
GetCountryRegionList(ctx context.Context, in *GetCountryRegionListRequest, opts ...grpc_go.CallOption) (*GetCountryRegionListResponse, common.ErrorWithAttachment)
GetCountryRegionInfo(ctx context.Context, in *GetCountryRegionInfoRequest, opts ...grpc_go.CallOption) (*CountryRegion, common.ErrorWithAttachment)
// 导入
CreateImportRecord(ctx context.Context, in *CreateImportRecordRequest, opts ...grpc_go.CallOption) (*CreateImportRecordResponse, common.ErrorWithAttachment)
GetImportRecordInfo(ctx context.Context, in *GetImportRecordRequest, opts ...grpc_go.CallOption) (*GetImportRecordResponse, common.ErrorWithAttachment)
}
type supplierClient struct {
cc *triple.TripleConn
}
type SupplierClientImpl struct {
GetSupplier func(ctx context.Context, in *GetSupplierRequest) (*UpdateSupplierRequest, error)
CreateSupplier func(ctx context.Context, in *CreateSupplierRequest) (*CreateSupplierResponse, error)
UpdateSupplier func(ctx context.Context, in *UpdateSupplierRequest) (*CreateSupplierResponse, error)
GetSupplierList func(ctx context.Context, in *GetSupplierListRequest) (*GetSupplierListResponse, error)
CreateOrganizeDictionary func(ctx context.Context, in *CreateOrganizeDictionaryRequest) (*CreateOrganizeDictionaryResponse, error)
GetOrganizeDictionaryList func(ctx context.Context, in *GetOrganizeDictionaryListRequest) (*GetOrganizeDictionaryListResponse, error)
GetOrganizeDictionaryInfo func(ctx context.Context, in *CreateOrganizeDictionaryRequest) (*OrganizeDictionary, error)
GetCountryRegionList func(ctx context.Context, in *GetCountryRegionListRequest) (*GetCountryRegionListResponse, error)
GetCountryRegionInfo func(ctx context.Context, in *GetCountryRegionInfoRequest) (*CountryRegion, error)
CreateImportRecord func(ctx context.Context, in *CreateImportRecordRequest) (*CreateImportRecordResponse, error)
GetImportRecordInfo func(ctx context.Context, in *GetImportRecordRequest) (*GetImportRecordResponse, error)
}
func (c *SupplierClientImpl) GetDubboStub(cc *triple.TripleConn) SupplierClient {
return NewSupplierClient(cc)
}
func (c *SupplierClientImpl) XXX_InterfaceName() string {
return "supplier.Supplier"
}
func NewSupplierClient(cc *triple.TripleConn) SupplierClient {
return &supplierClient{cc}
}
func (c *supplierClient) GetSupplier(ctx context.Context, in *GetSupplierRequest, opts ...grpc_go.CallOption) (*UpdateSupplierRequest, common.ErrorWithAttachment) {
out := new(UpdateSupplierRequest)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetSupplier", in, out)
}
func (c *supplierClient) CreateSupplier(ctx context.Context, in *CreateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment) {
out := new(CreateSupplierResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateSupplier", in, out)
}
func (c *supplierClient) UpdateSupplier(ctx context.Context, in *UpdateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment) {
out := new(CreateSupplierResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateSupplier", in, out)
}
func (c *supplierClient) GetSupplierList(ctx context.Context, in *GetSupplierListRequest, opts ...grpc_go.CallOption) (*GetSupplierListResponse, common.ErrorWithAttachment) {
out := new(GetSupplierListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetSupplierList", in, out)
}
func (c *supplierClient) CreateOrganizeDictionary(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*CreateOrganizeDictionaryResponse, common.ErrorWithAttachment) {
out := new(CreateOrganizeDictionaryResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateOrganizeDictionary", in, out)
}
func (c *supplierClient) GetOrganizeDictionaryList(ctx context.Context, in *GetOrganizeDictionaryListRequest, opts ...grpc_go.CallOption) (*GetOrganizeDictionaryListResponse, common.ErrorWithAttachment) {
out := new(GetOrganizeDictionaryListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetOrganizeDictionaryList", in, out)
}
func (c *supplierClient) GetOrganizeDictionaryInfo(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*OrganizeDictionary, common.ErrorWithAttachment) {
out := new(OrganizeDictionary)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetOrganizeDictionaryInfo", in, out)
}
func (c *supplierClient) GetCountryRegionList(ctx context.Context, in *GetCountryRegionListRequest, opts ...grpc_go.CallOption) (*GetCountryRegionListResponse, common.ErrorWithAttachment) {
out := new(GetCountryRegionListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetCountryRegionList", in, out)
}
func (c *supplierClient) GetCountryRegionInfo(ctx context.Context, in *GetCountryRegionInfoRequest, opts ...grpc_go.CallOption) (*CountryRegion, common.ErrorWithAttachment) {
out := new(CountryRegion)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetCountryRegionInfo", in, out)
}
func (c *supplierClient) CreateImportRecord(ctx context.Context, in *CreateImportRecordRequest, opts ...grpc_go.CallOption) (*CreateImportRecordResponse, common.ErrorWithAttachment) {
out := new(CreateImportRecordResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateImportRecord", in, out)
}
func (c *supplierClient) GetImportRecordInfo(ctx context.Context, in *GetImportRecordRequest, opts ...grpc_go.CallOption) (*GetImportRecordResponse, common.ErrorWithAttachment) {
out := new(GetImportRecordResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetImportRecordInfo", in, out)
}
// SupplierServer is the server API for Supplier service.
// All implementations must embed UnimplementedSupplierServer
// for forward compatibility
type SupplierServer interface {
// 供应商curd
GetSupplier(context.Context, *GetSupplierRequest) (*UpdateSupplierRequest, error)
CreateSupplier(context.Context, *CreateSupplierRequest) (*CreateSupplierResponse, error)
UpdateSupplier(context.Context, *UpdateSupplierRequest) (*CreateSupplierResponse, error)
GetSupplierList(context.Context, *GetSupplierListRequest) (*GetSupplierListResponse, error)
// 组织字典
CreateOrganizeDictionary(context.Context, *CreateOrganizeDictionaryRequest) (*CreateOrganizeDictionaryResponse, error)
GetOrganizeDictionaryList(context.Context, *GetOrganizeDictionaryListRequest) (*GetOrganizeDictionaryListResponse, error)
GetOrganizeDictionaryInfo(context.Context, *CreateOrganizeDictionaryRequest) (*OrganizeDictionary, error)
// 国家组织
GetCountryRegionList(context.Context, *GetCountryRegionListRequest) (*GetCountryRegionListResponse, error)
GetCountryRegionInfo(context.Context, *GetCountryRegionInfoRequest) (*CountryRegion, error)
// 导入
CreateImportRecord(context.Context, *CreateImportRecordRequest) (*CreateImportRecordResponse, error)
GetImportRecordInfo(context.Context, *GetImportRecordRequest) (*GetImportRecordResponse, error)
mustEmbedUnimplementedSupplierServer()
}
// UnimplementedSupplierServer must be embedded to have forward compatible implementations.
type UnimplementedSupplierServer struct {
proxyImpl protocol.Invoker
}
func (UnimplementedSupplierServer) GetSupplier(context.Context, *GetSupplierRequest) (*UpdateSupplierRequest, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetSupplier not implemented")
}
func (UnimplementedSupplierServer) CreateSupplier(context.Context, *CreateSupplierRequest) (*CreateSupplierResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateSupplier not implemented")
}
func (UnimplementedSupplierServer) UpdateSupplier(context.Context, *UpdateSupplierRequest) (*CreateSupplierResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateSupplier not implemented")
}
func (UnimplementedSupplierServer) GetSupplierList(context.Context, *GetSupplierListRequest) (*GetSupplierListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetSupplierList not implemented")
}
func (UnimplementedSupplierServer) CreateOrganizeDictionary(context.Context, *CreateOrganizeDictionaryRequest) (*CreateOrganizeDictionaryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateOrganizeDictionary not implemented")
}
func (UnimplementedSupplierServer) GetOrganizeDictionaryList(context.Context, *GetOrganizeDictionaryListRequest) (*GetOrganizeDictionaryListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetOrganizeDictionaryList not implemented")
}
func (UnimplementedSupplierServer) GetOrganizeDictionaryInfo(context.Context, *CreateOrganizeDictionaryRequest) (*OrganizeDictionary, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetOrganizeDictionaryInfo not implemented")
}
func (UnimplementedSupplierServer) GetCountryRegionList(context.Context, *GetCountryRegionListRequest) (*GetCountryRegionListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetCountryRegionList not implemented")
}
func (UnimplementedSupplierServer) GetCountryRegionInfo(context.Context, *GetCountryRegionInfoRequest) (*CountryRegion, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetCountryRegionInfo not implemented")
}
func (UnimplementedSupplierServer) CreateImportRecord(context.Context, *CreateImportRecordRequest) (*CreateImportRecordResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateImportRecord not implemented")
}
func (UnimplementedSupplierServer) GetImportRecordInfo(context.Context, *GetImportRecordRequest) (*GetImportRecordResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetImportRecordInfo not implemented")
}
func (s *UnimplementedSupplierServer) XXX_SetProxyImpl(impl protocol.Invoker) {
s.proxyImpl = impl
}
func (s *UnimplementedSupplierServer) XXX_GetProxyImpl() protocol.Invoker {
return s.proxyImpl
}
func (s *UnimplementedSupplierServer) XXX_ServiceDesc() *grpc_go.ServiceDesc {
return &Supplier_ServiceDesc
}
func (s *UnimplementedSupplierServer) XXX_InterfaceName() string {
return "supplier.Supplier"
}
func (UnimplementedSupplierServer) mustEmbedUnimplementedSupplierServer() {}
// UnsafeSupplierServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to SupplierServer will
// result in compilation errors.
type UnsafeSupplierServer interface {
mustEmbedUnimplementedSupplierServer()
}
func RegisterSupplierServer(s grpc_go.ServiceRegistrar, srv SupplierServer) {
s.RegisterService(&Supplier_ServiceDesc, srv)
}
func _Supplier_GetSupplier_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSupplierRequest)
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("GetSupplier", 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 _Supplier_CreateSupplier_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateSupplierRequest)
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("CreateSupplier", 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 _Supplier_UpdateSupplier_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateSupplierRequest)
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("UpdateSupplier", 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 _Supplier_GetSupplierList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSupplierListRequest)
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("GetSupplierList", 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 _Supplier_CreateOrganizeDictionary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateOrganizeDictionaryRequest)
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("CreateOrganizeDictionary", 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 _Supplier_GetOrganizeDictionaryList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetOrganizeDictionaryListRequest)
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("GetOrganizeDictionaryList", 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 _Supplier_GetOrganizeDictionaryInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateOrganizeDictionaryRequest)
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("GetOrganizeDictionaryInfo", 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 _Supplier_GetCountryRegionList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetCountryRegionListRequest)
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("GetCountryRegionList", 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 _Supplier_GetCountryRegionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetCountryRegionInfoRequest)
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("GetCountryRegionInfo", 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 _Supplier_CreateImportRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateImportRecordRequest)
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("CreateImportRecord", 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 _Supplier_GetImportRecordInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(GetImportRecordRequest)
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("GetImportRecordInfo", 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)
}
// Supplier_ServiceDesc is the grpc_go.ServiceDesc for Supplier service.
// It's only intended for direct use with grpc_go.RegisterService,
// and not to be introspected or modified (even as a copy)
var Supplier_ServiceDesc = grpc_go.ServiceDesc{
ServiceName: "supplier.Supplier",
HandlerType: (*SupplierServer)(nil),
Methods: []grpc_go.MethodDesc{
{
MethodName: "GetSupplier",
Handler: _Supplier_GetSupplier_Handler,
},
{
MethodName: "CreateSupplier",
Handler: _Supplier_CreateSupplier_Handler,
},
{
MethodName: "UpdateSupplier",
Handler: _Supplier_UpdateSupplier_Handler,
},
{
MethodName: "GetSupplierList",
Handler: _Supplier_GetSupplierList_Handler,
},
{
MethodName: "CreateOrganizeDictionary",
Handler: _Supplier_CreateOrganizeDictionary_Handler,
},
{
MethodName: "GetOrganizeDictionaryList",
Handler: _Supplier_GetOrganizeDictionaryList_Handler,
},
{
MethodName: "GetOrganizeDictionaryInfo",
Handler: _Supplier_GetOrganizeDictionaryInfo_Handler,
},
{
MethodName: "GetCountryRegionList",
Handler: _Supplier_GetCountryRegionList_Handler,
},
{
MethodName: "GetCountryRegionInfo",
Handler: _Supplier_GetCountryRegionInfo_Handler,
},
{
MethodName: "CreateImportRecord",
Handler: _Supplier_CreateImportRecord_Handler,
},
{
MethodName: "GetImportRecordInfo",
Handler: _Supplier_GetImportRecordInfo_Handler,
},
},
Streams: []grpc_go.StreamDesc{},
Metadata: "api/supplier/supplier.proto",
}

View File

@ -8,7 +8,7 @@ ErpHost = "http://erpapi.test.fontree.cn:8081"
FieeHost = "http://erpapi.test.fontree.cn:8081" FieeHost = "http://erpapi.test.fontree.cn:8081"
AuthRedirectUrl = "http://saas-erp.test.fontree.cn:8081/media_account" AuthRedirectUrl = "http://saas-erp.test.fontree.cn:8081/media_account"
AuthCallback = "https://saas-test.szjixun.cn/api/fiee/media/as-oauth2callback" AuthCallback = "https://saas-test.szjixun.cn/api/fiee/media/as-oauth2callback"
CronOpen = false CronOpen = true
proxyUrl = "http://47.84.75.255:6785" proxyUrl = "http://47.84.75.255:6785"
[bos] [bos]
Ak = "ALTAKxrqOQHnAN525Tb2GX4Bhe" Ak = "ALTAKxrqOQHnAN525Tb2GX4Bhe"

View File

@ -49,14 +49,7 @@ dubbo:
interface: com.fontree.microservices.fiee.SecFiling interface: com.fontree.microservices.fiee.SecFiling
AyrshareClientImpl: AyrshareClientImpl:
protocol: tri protocol: tri
request-timeout: 1800s
interface: com.fontree.microservices.fiee.ayrshare interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
SupplierClientImpl:
protocol: tri
interface: com.fontree.microservices.common.supplier
logger: logger:
zap-config: zap-config:
level: error # 日志级别 level: error # 日志级别

Binary file not shown.

Binary file not shown.

View File

@ -47,13 +47,6 @@ dubbo:
protocol: tri protocol: tri
retries: 0 retries: 0
interface: com.fontree.microservices.fiee.SecFiling interface: com.fontree.microservices.fiee.SecFiling
AyrshareClientImpl:
request-timeout: 1800s
protocol: tri
interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
FileClientImpl: FileClientImpl:
protocol: tri protocol: tri
retries: 0 retries: 0
@ -61,9 +54,12 @@ dubbo:
methods: methods:
- name: SecurityScan - name: SecurityScan
timeout: 120000 timeout: 120000
SupplierClientImpl: AyrshareClientImpl:
protocol: tri protocol: tri
interface: com.fontree.microservices.common.supplier interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
logger: logger:
zap-config: zap-config:
level: error # 日志级别 level: error # 日志级别

View File

@ -49,13 +49,6 @@ dubbo:
protocol: tri protocol: tri
retries: 0 retries: 0
interface: com.fontree.microservices.fiee.SecFiling interface: com.fontree.microservices.fiee.SecFiling
AyrshareClientImpl:
request-timeout: 1800s
protocol: tri
interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
FileClientImpl: FileClientImpl:
protocol: tri protocol: tri
retries: 0 retries: 0
@ -63,9 +56,12 @@ dubbo:
methods: methods:
- name: SecurityScan - name: SecurityScan
timeout: 120000 timeout: 120000
SupplierClientImpl: AyrshareClientImpl:
protocol: tri protocol: tri
interface: com.fontree.microservices.common.supplier interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
logger: logger:
zap-config: zap-config:
level: error # 日志级别 level: error # 日志级别

View File

@ -19,6 +19,7 @@ BosUrl = ".bj.bcebos.com"
BosBaseDir = "fiee" BosBaseDir = "fiee"
BosHttp = "https://" BosHttp = "https://"
BosDomain = "cdns.fontree.cn" BosDomain = "cdns.fontree.cn"
[oss] [oss]
AccessKeyId = "OSS_AK" AccessKeyId = "OSS_AK"
AccessKeySecret = "OSS_SK" AccessKeySecret = "OSS_SK"
@ -29,7 +30,7 @@ CdnHost = "OSS_CDN"
[redis] [redis]
RedisDB = "2" RedisDB = "2"
RedisAddr = "172.16.100.114:6379" RedisAddr = "svc-fontree-redis-service:6379"
RedisPW = "kP6tW4tS3qB2dW4aE6uI5cX2" RedisPW = "kP6tW4tS3qB2dW4aE6uI5cX2"
RedisDBNAme = "2" RedisDBNAme = "2"

View File

@ -4,7 +4,7 @@ dubbo:
protocol: zookeeper protocol: zookeeper
timeout: 3s timeout: 3s
# address: 121.229.45.214:9004 # address: 121.229.45.214:9004
address: 172.16.100.93:2181 address: zookeeper:2181
# address: 127.0.0.1:2181 # address: 127.0.0.1:2181
# address: 114.218.158.24:2181 # address: 114.218.158.24:2181
consumer: consumer:
@ -47,13 +47,6 @@ dubbo:
protocol: tri protocol: tri
retries: 0 retries: 0
interface: com.fontree.microservices.fiee.SecFiling interface: com.fontree.microservices.fiee.SecFiling
AyrshareClientImpl:
request-timeout: 1800s
protocol: tri
interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
FileClientImpl: FileClientImpl:
protocol: tri protocol: tri
retries: 0 retries: 0
@ -61,9 +54,12 @@ dubbo:
methods: methods:
- name: SecurityScan - name: SecurityScan
timeout: 120000 timeout: 120000
SupplierClientImpl: AyrshareClientImpl:
protocol: tri protocol: tri
interface: com.fontree.microservices.common.supplier interface: com.fontree.microservices.fiee.ayrshare
FieeCronClientImpl:
protocol: tri
interface: com.fontree.microservices.fiee.cron
logger: logger:
zap-config: zap-config:
level: error # 日志级别 level: error # 日志级别

View File

@ -244,63 +244,7 @@ var DeDEMessages = map[string]string{
"系统提示:已经发送过,验证码尚可用": "Systemnachricht: Bereits gesendet, Verifizierungscode ist noch verfügbar", "系统提示:已经发送过,验证码尚可用": "Systemnachricht: Bereits gesendet, Verifizierungscode ist noch verfügbar",
"您的手机号当天发送次数过多,请联系管理员通过密码登录": "Ihre Telefonnummer wurde an diesem Tag zu oft gesendet. Bitte wenden Sie sich an den Administrator, um sich über das Passwort anzumelden", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "Ihre Telefonnummer wurde an diesem Tag zu oft gesendet. Bitte wenden Sie sich an den Administrator, um sich über das Passwort anzumelden",
"您的手机号验证码错误,请确认之后注册": "Ihre Telefonnummer Verifizierungscode ist falsch, bitte bestätigen und registrieren", "您的手机号验证码错误,请确认之后注册": "Ihre Telefonnummer Verifizierungscode ist falsch, bitte bestätigen und registrieren",
"手机号不合法": "Telefonnummer ungültig",
"手机号未更改": "Telefonnummer wurde nicht geändert",
"新手机号过期": "Neue Telefonnummer abgelaufen",
"验证码错误": "Verifizierungscode falsch",
"验证码未发送": "Der Verifizierungscode wurde nicht gesendet",
"账号不存在": "Konto existiert nicht",
"已实名": "In echt",
"实名审核中,请勿重复提交": "Während der Echtheitsprüfung bitte nicht wiederholen",
"用户状态异常,无法进行审核": "Der Benutzer ist abnorm und kann nicht geprüft werden. Verfahren",
"验证码已失效": "Der Verifizierungscode ist ungültig",
"服务器错误": "Serverfehler",
"验证失败,请控制拼图对齐缺口": "Überprüfung fehlgeschlagen, bitte Steuerung Puzzle-Ausrichtungslücke",
"滑块验证状态不存在,请退出重试": "Die krümmbestätigung existiert nicht. Bitte beenden sie den vorgang",
"语言不能为空": "Sprache darf nicht leer sein",
"排序参数需为正整数": "Sortierparameter muss eine positive ganze Zahl sein",
"请先创建中文版本套餐": "Bitte erstelle das Chinese Version-Paket",
"增值服务不存在": "Der Werbeangebot existiert nicht",
"所选增值服务币种与套餐币种不一致": "Die ausgewählte Währung des Werbeangebots stimmt nicht mit der Währung des Pakets überein",
"文件转换失败": "Datei-Umwandlung fehlgeschlagen",
"每种增值服务类型只可选择一个": "Jeder Werbeangebotstyp kann nur einmal ausgewählt werden",
"保存套餐与增值服务关联失败": "Fehler beim Speichern des Pakets mit Werbeangebot",
"删除套餐与增值服务关联失败": "Fehler beim Löschen des Pakets mit Werbeangebot",
"查询套餐与增值服务关联失败": "Fehler beim Abrufen des Pakets mit Werbeangebot",
"更新套餐与增值服务关联失败": "Fehler beim Aktualisieren des Pakets mit Werbeangebot",
"查询增值服务失败": "Fehler beim Abrufen des Werbeangebots",
"更新套餐状态失败": "Fehler beim Aktualisieren des Paketstatus",
"查询增值服务详情失败": "Fehler beim Abrufen der Werbeangebotsdetails",
"序列化转换失败": "Fehler beim Serialisieren",
"保存套餐历史记录失败": "Fehler beim Speichern des Pakethistorie",
"原价不能为空": "Der reguläre Preis darf nicht leer sein",
"原价格式转换失败": "Fehler beim Umwandeln des regulären Preises",
"数量参数需为0-99": "Die Anzahlsmusterparameter muss eine positive ganze Zahl sein",
"优惠单价需小于等于原价": "Der Rabattpreis muss kleiner oder gleich dem regulären Preis sein",
"请先创建中文版本增值服务": "Bitte erstelle das Chinese Version-Werbeangebot",
"保存增值服务失败": "Fehler beim Speichern des Werbeangebots",
"保存增值服务历史记录失败": "Fehler beim Speichern des Werbeangebots-Historie",
"更新增值服务失败": "Fehler beim Aktualisieren des Werbeangebots",
"查询增值服务列表失败": "Fehler beim Abrufen der Werbeangebotsliste",
"计算价格失败": "Fehler beim Berechnen des Preises",
"更新成功": "Aktualisierung erfolgreich",
"保存成功": "Speichern erfolgreich",
"优惠单价转换失败": "Rabatt-Einzelpreisumrechnung fehlgeschlagen",
"符号错误": "Symbolfehler",
"条件存在冲突,请重新设置": "Bedingungskonflikt vorhanden, bitte neu konfigurieren",
"币种已修改,已取消关联部分增值服务": "Währung wurde geändert, einige Mehrwertdienste wurden getrennt",
"币种已修改,已取消关联部分套餐": "Währung wurde geändert, einige Pakete wurden getrennt",
"新增增值服务成功": "Mehrwertdienst erfolgreich hinzugefügt",
"状态值无效": "Ungültiger Statuswert",
"套餐已上架,请勿重复操作": "Paket ist bereits veröffentlicht, bitte nicht wiederholen",
"套餐已下架,请勿重复操作": "Paket ist bereits zurückgezogen, bitte nicht wiederholen",
"请先实名": "Bitte, nur der name",
"实名审核中": "Contest läuft",
"实名审核失败": "Die confirmation hat versagt",
"未知实名状态": "Noch nicht registriert",
// Bundle related messages
"创建增值套餐失败": "Fehler beim Erstellen des Mehrwert-Bundles",
"增值套餐列表查询失败": "Fehler beim Abfragen der Mehrwert-Bundle-Liste", "增值套餐列表查询失败": "Fehler beim Abfragen der Mehrwert-Bundle-Liste",
"增值套餐详情查询失败": "Fehler beim Abfragen der Mehrwert-Bundle-Details", "增值套餐详情查询失败": "Fehler beim Abfragen der Mehrwert-Bundle-Details",
"保存增值套餐失败": "Fehler beim Speichern des Mehrwert-Bundles", "保存增值套餐失败": "Fehler beim Speichern des Mehrwert-Bundles",
@ -383,6 +327,61 @@ var DeDEMessages = map[string]string{
"套餐未绑定增值服务": "Bundle nicht an Mehrwertdienst gebunden", "套餐未绑定增值服务": "Bundle nicht an Mehrwertdienst gebunden",
"网络错误": "Netzwerkfehler", "网络错误": "Netzwerkfehler",
"手机号不合法": "Telefonnummer ungültig",
"手机号未更改": "Telefonnummer wurde nicht geändert",
"新手机号过期": "Neue Telefonnummer abgelaufen",
"验证码错误": "Verifizierungscode falsch",
"验证码未发送": "Der Verifizierungscode wurde nicht gesendet",
"账号不存在": "Konto existiert nicht",
"已实名": "In echt",
"实名审核中,请勿重复提交": "Während der Echtheitsprüfung bitte nicht wiederholen",
"用户状态异常,无法进行审核": "Der Benutzer ist abnorm und kann nicht geprüft werden. Verfahren",
"验证码已失效": "Der Verifizierungscode ist ungültig",
"服务器错误": "Serverfehler",
"验证失败,请控制拼图对齐缺口": "Überprüfung fehlgeschlagen, bitte Steuerung Puzzle-Ausrichtungslücke",
"滑块验证状态不存在,请退出重试": "Die krümmbestätigung existiert nicht. Bitte beenden sie den vorgang",
"语言不能为空": "Sprache darf nicht leer sein",
"排序参数需为正整数": "Sortierparameter muss eine positive ganze Zahl sein",
"请先创建中文版本套餐": "Bitte erstelle das Chinese Version-Paket",
"增值服务不存在": "Der Werbeangebot existiert nicht",
"所选增值服务币种与套餐币种不一致": "Die ausgewählte Währung des Werbeangebots stimmt nicht mit der Währung des Pakets überein",
"文件转换失败": "Datei-Umwandlung fehlgeschlagen",
"每种增值服务类型只可选择一个": "Jeder Werbeangebotstyp kann nur einmal ausgewählt werden",
"保存套餐与增值服务关联失败": "Fehler beim Speichern des Pakets mit Werbeangebot",
"删除套餐与增值服务关联失败": "Fehler beim Löschen des Pakets mit Werbeangebot",
"查询套餐与增值服务关联失败": "Fehler beim Abrufen des Pakets mit Werbeangebot",
"更新套餐与增值服务关联失败": "Fehler beim Aktualisieren des Pakets mit Werbeangebot",
"查询增值服务失败": "Fehler beim Abrufen des Werbeangebots",
"更新套餐状态失败": "Fehler beim Aktualisieren des Paketstatus",
"查询增值服务详情失败": "Fehler beim Abrufen der Werbeangebotsdetails",
"序列化转换失败": "Fehler beim Serialisieren",
"保存套餐历史记录失败": "Fehler beim Speichern des Pakethistorie",
"原价不能为空": "Der reguläre Preis darf nicht leer sein",
"原价格式转换失败": "Fehler beim Umwandeln des regulären Preises",
"数量参数需为0-99": "Die Anzahlsmusterparameter muss eine positive ganze Zahl sein",
"优惠单价需小于等于原价": "Der Rabattpreis muss kleiner oder gleich dem regulären Preis sein",
"请先创建中文版本增值服务": "Bitte erstelle das Chinese Version-Werbeangebot",
"保存增值服务失败": "Fehler beim Speichern des Werbeangebots",
"保存增值服务历史记录失败": "Fehler beim Speichern des Werbeangebots-Historie",
"更新增值服务失败": "Fehler beim Aktualisieren des Werbeangebots",
"查询增值服务列表失败": "Fehler beim Abrufen der Werbeangebotsliste",
"计算价格失败": "Fehler beim Berechnen des Preises",
"更新成功": "Aktualisierung erfolgreich",
"保存成功": "Speichern erfolgreich",
"优惠单价转换失败": "Rabatt-Einzelpreisumrechnung fehlgeschlagen",
"符号错误": "Symbolfehler",
"条件存在冲突,请重新设置": "Bedingungskonflikt vorhanden, bitte neu konfigurieren",
"币种已修改,已取消关联部分增值服务": "Währung wurde geändert, einige Mehrwertdienste wurden getrennt",
"币种已修改,已取消关联部分套餐": "Währung wurde geändert, einige Pakete wurden getrennt",
"新增增值服务成功": "Mehrwertdienst erfolgreich hinzugefügt",
"状态值无效": "Ungültiger Statuswert",
"套餐已上架,请勿重复操作": "Paket ist bereits veröffentlicht, bitte nicht wiederholen",
"套餐已下架,请勿重复操作": "Paket ist bereits zurückgezogen, bitte nicht wiederholen",
"请先实名": "Bitte, nur der name",
"实名审核中": "Contest läuft",
"实名审核失败": "Die confirmation hat versagt",
"未知实名状态": "Noch nicht registriert",
// Website report related messages // Website report related messages
"创建官网报告失败": "Fehler beim Erstellen des Website-Berichts", "创建官网报告失败": "Fehler beim Erstellen des Website-Berichts",
"删除官网报告失败": "Fehler beim Löschen des Website-Berichts", "删除官网报告失败": "Fehler beim Löschen des Website-Berichts",
@ -463,7 +462,6 @@ var JaJPMessages = map[string]string{
"请先创建中文版本套餐": "最初に中国語バージョンのパッケージを作成してください", "请先创建中文版本套餐": "最初に中国語バージョンのパッケージを作成してください",
"增值服务不存在": "付加サービスは存在しません", "增值服务不存在": "付加サービスは存在しません",
"所选增值服务币种与套餐币种不一致": "選択した付加サービスの通貨とパッケージの通貨が一致しません", "所选增值服务币种与套餐币种不一致": "選択した付加サービスの通貨とパッケージの通貨が一致しません",
"文件转换失败": "ファイル変換に失敗しました",
"每种增值服务类型只可选择一个": "各種付加サービスタイプは一つしか選択できません", "每种增值服务类型只可选择一个": "各種付加サービスタイプは一つしか選択できません",
"保存套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの保存に失敗しました", "保存套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの保存に失敗しました",
"删除套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの削除に失敗しました", "删除套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの削除に失敗しました",
@ -618,17 +616,6 @@ var ZhTWMessages = map[string]string{
"删除套餐信息失败": "刪除套餐信息失敗", "删除套餐信息失败": "刪除套餐信息失敗",
"删除套餐信息成功": "刪除套餐信息成功", "删除套餐信息成功": "刪除套餐信息成功",
"获取套餐信息失败": "獲取套餐信息失敗", "获取套餐信息失败": "獲取套餐信息失敗",
"创建订单信息失败": "創建訂單信息失敗",
"创建订单信息成功": "創建訂單信息成功",
"更新订单信息失败": "更新訂單信息失敗",
"更新订单信息成功": "更新訂單信息成功",
"获取订单信息失败": "獲取訂單信息失敗",
"获取订单列表失败": "獲取訂單列表失敗",
"缺少套餐UUID": "缺少套餐UUID",
"缺少客户签名信息": "缺少客戶簽名信息",
"插入签名失败": "插入簽名失敗",
"缺少订单号": "缺少訂單號",
"缺少订单信息": "缺少訂單信息",
"非当前用户订单信息不可操作": "非當前用戶訂單信息不可操作", "非当前用户订单信息不可操作": "非當前用戶訂單信息不可操作",
"订单已支付": "訂單已支付", "订单已支付": "訂單已支付",
"您已购买过套餐,无法再次购买": "您已購買過套餐,無法再次購買", "您已购买过套餐,无法再次购买": "您已購買過套餐,無法再次購買",
@ -722,7 +709,6 @@ var ZhTWMessages = map[string]string{
"创建套餐失败": "創建套餐失敗", "创建套餐失败": "創建套餐失敗",
"更新套餐失败": "更新套餐失敗", "更新套餐失败": "更新套餐失敗",
"删除套餐失败": "刪除套餐失敗", "删除套餐失败": "刪除套餐失敗",
"套餐列表查询失败": "套餐列表查詢失敗",
"套餐详情查询失败": "套餐詳情查詢失敗", "套餐详情查询失败": "套餐詳情查詢失敗",
"更新套餐上下架失败": "更新套餐上下架失敗", "更新套餐上下架失败": "更新套餐上下架失敗",
"根据订单号查询增值套餐失败": "根據訂單號查詢增值套餐失敗", "根据订单号查询增值套餐失败": "根據訂單號查詢增值套餐失敗",
@ -794,7 +780,6 @@ var ZhTWMessages = map[string]string{
"未知增值服务": "未知增值服務", "未知增值服务": "未知增值服務",
"套餐未绑定增值服务": "套餐未綁定增值服務", "套餐未绑定增值服务": "套餐未綁定增值服務",
"网络错误": "網絡錯誤", "网络错误": "網絡錯誤",
// Website report related messages // Website report related messages
"创建官网报告失败": "創建官網報告失敗", "创建官网报告失败": "創建官網報告失敗",
"删除官网报告失败": "刪除官網報告失敗", "删除官网报告失败": "刪除官網報告失敗",

View File

@ -5,7 +5,6 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"fonchain-fiee/api/aryshare"
"fonchain-fiee/api/bundle" "fonchain-fiee/api/bundle"
"fonchain-fiee/api/cast" "fonchain-fiee/api/cast"
"fonchain-fiee/pkg/cache" "fonchain-fiee/pkg/cache"
@ -17,7 +16,6 @@ import (
"log" "log"
"math/rand" "math/rand"
"strconv" "strconv"
"strings"
"time" "time"
"github.com/go-redis/redis" "github.com/go-redis/redis"
@ -29,26 +27,21 @@ func InitTasks() error {
cm := GetCronManager() cm := GetCronManager()
err := cm.AddTask("refreshWorkApprovalStatus", "0 */1 * * * *", RefreshWorkApprovalStatusTask) err := cm.AddTask("refreshWorkApprovalStatus", "0 */1 * * * *", RefreshWorkApprovalStatusTask)
err = cm.AddTask("artistAutoConfirm", "0 */1 * * * *", ArtistAutoConfirmTask) err = cm.AddTask("artistAutoConfirm", "0 */1 * * * *", ArtistAutoConfirmTask)
err = cm.AddTask("refreshPublishStatus", "0 */1 * * * *", PublishTask) err = cm.AddTask("refreshPublishStatus", "0 */1 * * * *", RefreshPublishStatusTask)
err = cm.AddTask("scheduledPublish", "0 */10 * * * *", ScheduledPublishTask)
err = cm.AddTask("artistAutoConfirmAnalysis", "0 */1 * * * *", ArtistAutoConfirmAnalysisTask) err = cm.AddTask("artistAutoConfirmAnalysis", "0 */1 * * * *", ArtistAutoConfirmAnalysisTask)
err = cm.AddTask("refreshWorkAnalysisApprovalStatus", "0 */1 * * * *", RefreshWorkAnalysisApprovalStatusTask) err = cm.AddTask("refreshWorkAnalysisApprovalStatus", "0 */1 * * * *", RefreshWorkAnalysisApprovalStatusTask)
err = cm.AddTask("refreshArtistOrder", "0 */30 * * * *", RefreshArtistOrderTask) err = cm.AddTask("scheduledPublish", "0 */1 * * * *", ScheduledPublishTask)
// 每天 00:30 和 12:30 执行 Ayrshare 指标采集任务 // 每天 00:30 和 12:30 执行 Ayrshare 指标采集任务
// err = cm.AddTask("ayrshareMetricsCollector", "0 30 0,12 * * *", AyrshareMetricsCollectorTask) err = cm.AddTask("ayrshareMetricsCollector", "0 30 0,12 * * *", AyrshareMetricsCollectorTask)
err = cm.AddTask("ayrshareMetricsCollector", "0 30 0 * * *", AyrshareMetricsCollectorTask)
if err != nil { if err != nil {
log.Printf("添加定时任务失败: %v", err) log.Printf("添加定时任务失败: %v", err)
} }
// 每2分钟执行一次标签观看次数更新任务
// err = cm.AddTask("updateCastTagWatchCount", "0 */1 * * * *", UpdateCastTagWatchCountTask)
cm.Start() cm.Start()
// 启动队列消费者 // 启动队列消费者
//go WorkPublishQueueConsumer() go WorkPublishQueueConsumer()
// 启动随机间隔的自动确认任务 // 启动随机间隔的自动确认任务
go AutoManuallyConfirmWorkTaskWithRandomInterval() go AutoManuallyConfirmWorkTaskWithRandomInterval()
@ -72,33 +65,32 @@ func RefreshWorkApprovalStatusTask() {
serverCast.RefreshWorkApproval(nil, resp.Data) serverCast.RefreshWorkApproval(nil, resp.Data)
} }
func RefreshWorkAnalysisApprovalStatusTask() {
resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
Page: 1,
StatusList: []uint32{2}, // 状态为2表示待审批
PageSize: 999999,
})
if err != nil {
log.Printf("获取数据分析列表失败: %v", err)
return
}
if resp.Data == nil || len(resp.Data) == 0 {
return
}
serverCast.RefreshWorkAnalysisApproval(nil, resp.Data)
}
// AutoManuallyConfirmWorkTaskWithRandomInterval 以随机间隔3-7分钟执行自动确认任务 // AutoManuallyConfirmWorkTaskWithRandomInterval 以随机间隔3-7分钟执行自动确认任务
func AutoManuallyConfirmWorkTaskWithRandomInterval() { func AutoManuallyConfirmWorkTaskWithRandomInterval() {
for { for {
// 添加 panic 恢复机制
func() {
defer func() {
if r := recover(); r != nil {
zap.L().Error("自动确认任务执行panic",
zap.Any("panic", r),
zap.Stack("stack"))
}
}()
// 执行任务 // 执行任务
zap.L().Debug("开始执行自动确认任务")
AutoManuallyConfirmWorkTask() AutoManuallyConfirmWorkTask()
zap.L().Debug("自动确认任务执行完成")
}()
// 生成3-7分钟之间的随机间隔单位分钟 // 生成3-7分钟之间的随机间隔单位分钟
randomMinutes := rand.Intn(5) + 3 // 3-7分钟 randomMinutes := rand.Intn(5) + 3 // 3-7分钟
randomDuration := time.Duration(randomMinutes) * time.Minute randomDuration := time.Duration(randomMinutes) * time.Minute
log.Printf("自动确认任务等待下次执行,间隔:%d分钟,时长:%s", randomMinutes, randomDuration)
zap.L().Info("自动确认任务等待下次执行",
zap.Int("minutes", randomMinutes),
zap.Duration("duration", randomDuration))
// 等待随机时间 // 等待随机时间
time.Sleep(randomDuration) time.Sleep(randomDuration)
@ -121,7 +113,7 @@ func AutoManuallyConfirmWorkTask() {
artistId, err := strconv.ParseInt(work.ArtistUuid, 10, 64) artistId, err := strconv.ParseInt(work.ArtistUuid, 10, 64)
if err != nil { if err != nil {
zap.L().Error("解析艺术家ID失败", zap.Error(err)) zap.L().Error("解析艺术家ID失败", zap.Error(err))
continue return
} }
if req.ConfirmStatus == 2 { // 驳回完直接结束 if req.ConfirmStatus == 2 { // 驳回完直接结束
_, err := service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ _, err := service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
@ -216,25 +208,9 @@ func AutoManuallyConfirmWorkTask() {
}) })
if err != nil { if err != nil {
log.Printf("更新作品状态失败,作品uuid:"+req.WorkUuid, zap.Error(err)) log.Printf("更新作品状态失败,作品uuid:"+req.WorkUuid, zap.Error(err))
continue
}
}
}
func RefreshWorkAnalysisApprovalStatusTask() {
resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
Page: 1,
StatusList: []uint32{2}, // 状态为2表示待审批
PageSize: 999999,
})
if err != nil {
log.Printf("获取数据分析列表失败: %v", err)
return return
} }
if resp.Data == nil || len(resp.Data) == 0 {
return
} }
serverCast.RefreshWorkAnalysisApproval(nil, resp.Data)
} }
func ArtistAutoConfirmTask() { func ArtistAutoConfirmTask() {
@ -249,7 +225,7 @@ func ArtistAutoConfirmTask() {
return return
} }
if len(workUuids) == 0 { if len(workUuids) == 0 {
zap.L().Info("没有到期的任务") zap.L().Debug("没有到期的任务")
return return
} }
zap.L().Info("发现到期任务", zap.Int("count", len(workUuids))) zap.L().Info("发现到期任务", zap.Int("count", len(workUuids)))
@ -277,278 +253,6 @@ func RefreshPublishStatusTask() {
//zap.L().Info("刷新发布状态成功") //zap.L().Info("刷新发布状态成功")
} }
// PublishTask 定时发布任务从Redis Sorted Set中获取所有workUuid并根据score判断处理
func PublishTask() {
go RefreshPublishStatusTask() // 刷新发布状态
go TaskStatus() // 异步任务状态
}
func ScheduledPublishTask() {
// 加上锁
lockKey := "scheduled_publish:lock"
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), 2*time.Hour)
if !reply.Val() {
zap.L().Warn("定时发布任务正在被其他实例处理")
return
}
defer func() {
cache.RedisClient.Del(lockKey)
}()
// 获取所有数据不限制score范围
opt := redis.ZRangeBy{
Min: "-inf",
Max: "+inf",
}
// 从Redis Sorted Set中获取所有workUuid及其score
workList, err := cache.RedisClient.ZRangeByScoreWithScores(modelCast.ScheduledPublishQueueKey, opt).Result()
if err != nil {
zap.L().Error("获取定时发布任务失败", zap.Error(err))
return
}
if len(workList) == 0 {
zap.L().Info("没有定时发布任务")
return
}
publishCount := 0
expiredCount := 0
const batchSize = 8 // 每批发布8个与PublishWork的workerCount保持一致
zap.L().Info("发现定时发布任务", zap.Int("total_count", len(workList)))
zap.L().Info("发现定时发布任务 列表", zap.Any("workList", workList))
now := float64(time.Now().Unix())
publishBatch := make([]string, 0, batchSize)
// 使用 map 进行去重,防止同一个 work_uuid 被多次添加
publishedUuids := make(map[string]bool)
// 遍历所有数据根据score判断处理
for _, item := range workList {
workUuid := item.Member.(string)
score := item.Score
// 如果score小于当前时间删除但不消费不发布
if score < now {
zap.L().Info("发现过期的定时发布任务,直接删除不发布",
zap.String("work_uuid", workUuid),
zap.Float64("score", score),
zap.Float64("now", now))
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, workUuid).Result()
if delErr != nil {
zap.L().Error("删除过期定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", workUuid))
} else if removed > 0 {
expiredCount++
zap.L().Info("已删除过期定时发布任务", zap.String("work_uuid", workUuid))
}
continue
}
// 先从 Redis 中删除,采用"先删后处理"的策略,防止重复处理
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, workUuid).Result()
if delErr != nil {
zap.L().Error("删除定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", workUuid))
continue // 删除失败则跳过,避免重复处理
}
if removed == 0 {
zap.L().Warn("定时发布任务已被删除,跳过",
zap.String("work_uuid", workUuid))
continue // 已被其他实例删除,跳过
}
// 检查是否已经在当前批次中(去重)
if publishedUuids[workUuid] {
zap.L().Warn("发现重复的定时发布任务,跳过",
zap.String("work_uuid", workUuid))
continue
}
// score大于等于当前时间添加到待发布批次
zap.L().Info("添加到发布批次",
zap.String("work_uuid", workUuid),
zap.Float64("score", score))
publishBatch = append(publishBatch, workUuid)
publishedUuids[workUuid] = true
publishCount++
// 当批次达到指定大小时,批量发布
if len(publishBatch) >= batchSize {
zap.L().Info("批量发布作品", zap.Int("batch_size", len(publishBatch)), zap.Strings("work_uuids", publishBatch))
_ = serverCast.PublishWork(context.Background(), &cast.PublishReq{
WorkUuids: publishBatch,
})
zap.L().Info("批次发布完成", zap.Int("published", len(publishBatch)))
// 清空批次,准备下一批
publishBatch = make([]string, 0, batchSize)
}
}
// 处理剩余的作品(不足一批的)
if len(publishBatch) > 0 {
zap.L().Info("批量发布剩余作品", zap.Int("batch_size", len(publishBatch)), zap.Strings("work_uuids", publishBatch))
_ = serverCast.PublishWork(context.Background(), &cast.PublishReq{
WorkUuids: publishBatch,
})
zap.L().Info("剩余批次发布完成", zap.Int("published", len(publishBatch)))
}
zap.L().Info("定时发布任务处理完成",
zap.Int("published_count", publishCount),
zap.Int("expired_count", expiredCount),
zap.Int("total_count", len(workList)))
}
func TaskStatus() {
var actions []string = []string{"publishBatch1", "publishBatch2"}
for _, action := range actions {
resp, err := service.CastProvider.ListTaskList(context.Background(), &cast.ListTaskListReq{
Action: action,
Status: 1,
Page: 1,
PageSize: 100,
})
if err != nil {
zap.L().Error("获取任务列表失败", zap.Error(err))
return
}
for _, v := range resp.Data {
var extraData modelCast.PublishTaskDto
if v.ExtraData == "" {
continue
}
_ = json.Unmarshal([]byte(v.ExtraData), &extraData)
var allDone = true
for _, workUuid := range extraData.WorkUuids {
infoResp, _err := service.CastProvider.WorkInfo(context.Background(), &cast.WorkInfoReq{WorkUuid: workUuid})
if _err != nil {
zap.L().Error("获取作品信息失败", zap.Error(_err))
allDone = false
break
}
if infoResp.PublishStatus != cast.PublishStatusENUM_PublishMediaStatus_DONE {
allDone = false
break
}
}
var excelUrl string
if allDone {
excelUrl, err = serverCast.PublishTaskExcel(extraData.WorkUuids, true, v.Action)
if err != nil {
zap.L().Error("生成发布任务Excel失败", zap.Error(err))
continue
}
_, err = service.CastProvider.UpsertTaskList(context.Background(), &cast.UpsertTaskListReq{
Uuid: v.Uuid,
Action: v.Action,
Url: excelUrl,
Status: 3,
})
if err != nil {
zap.L().Error("更新任务状态失败", zap.Error(err))
continue
}
zap.L().Info("任务已完成,更新状态为完成", zap.String("task_uuid", v.Uuid), zap.String("excel_url", excelUrl))
}
}
}
}
// WorkPublishQueueConsumer 监听work:publish:queue队列的消费者
func WorkPublishQueueConsumer() {
zap.L().Info("开始监听work:publish:queue队列批量处理模式")
const batchSize = 10
for {
batch := make([]string, 0, batchSize)
result, err := cache.RedisClient.BRPop(0*time.Second, modelCast.WorkPublishQueueKey).Result()
if err != nil {
zap.L().Error("监听work:publish:queue队列失败", zap.Error(err))
time.Sleep(5 * time.Second) // 出错后等待5秒再重试
continue
}
if len(result) < 2 {
zap.L().Warn("队列返回数据格式异常", zap.Any("result", result))
continue
}
workData := result[1] // BRPOP返回[key, value]value在第二个元素
zap.L().Info("从work:publish:queue队列收到第一条数据", zap.String("data", workData))
batch = append(batch, workData)
for len(batch) < batchSize {
// 使用RPOP非阻塞获取如果没有数据立即返回
data, err := cache.RedisClient.RPop(modelCast.WorkPublishQueueKey).Result()
if err == redis.Nil {
// 队列为空,跳出循环
zap.L().Info("队列暂时为空,开始处理当前批次", zap.Int("batch_size", len(batch)))
break
} else if err != nil {
zap.L().Error("从队列获取数据失败", zap.Error(err))
break
}
batch = append(batch, data)
}
zap.L().Info("收集到批次数据,准备批量处理", zap.Int("batch_size", len(batch)))
// 批量处理数据
if err = processBatchWorkPublishQueueData(batch); err != nil {
zap.L().Error("批量处理work:publish:queue队列数据失败",
zap.Error(err),
zap.Int("batch_size", len(batch)))
continue
}
zap.L().Info("成功批量处理work:publish:queue队列数据", zap.Int("batch_size", len(batch)))
}
}
// processBatchWorkPublishQueueData 批量处理从work:publish:queue队列中取出的数据
func processBatchWorkPublishQueueData(batchData []string) error {
// 延时1秒消费
time.Sleep(time.Second * 1)
workUuids := make([]string, 0, len(batchData))
// 解析所有数据提取workUuid
for _, data := range batchData {
var workData map[string]string
if err := json.Unmarshal([]byte(data), &workData); err != nil {
zap.L().Error("解析队列数据失败", zap.String("raw_data", data), zap.Error(err))
continue
}
workUuid := workData["workUuid"]
if workUuid == "" {
zap.L().Error("队列数据中workUuid为空", zap.String("raw_data", data))
continue
}
workUuids = append(workUuids, workUuid)
}
if len(workUuids) == 0 {
zap.L().Warn("批次中没有有效的workUuid")
return errors.New("批次中没有有效的workUuid")
}
zap.L().Info("批量处理发布工作队列数据",
zap.Strings("work_uuids", workUuids),
zap.Int("count", len(workUuids)))
// 批量调用发布工作逻辑
err := serverCast.PublishWork(context.Background(), &cast.PublishReq{
WorkUuids: workUuids,
})
if err != nil {
zap.L().Error("批量发布工作失败",
zap.Strings("work_uuids", workUuids),
zap.Error(err))
return err
}
zap.L().Info("批量发布工作成功",
zap.Strings("work_uuids", workUuids),
zap.Int("count", len(workUuids)))
return nil
}
func ArtistAutoConfirmAnalysisTask() { func ArtistAutoConfirmAnalysisTask() {
now := float64(time.Now().Unix()) now := float64(time.Now().Unix())
opt := redis.ZRangeBy{ opt := redis.ZRangeBy{
@ -570,139 +274,137 @@ func ArtistAutoConfirmAnalysisTask() {
} }
} }
// WorkPublishQueueConsumer 监听work:publish:queue队列的消费者
func WorkPublishQueueConsumer() {
zap.L().Info("开始监听work:publish:queue队列")
for {
result, err := cache.RedisClient.BRPop(0*time.Second, modelCast.WorkPublishQueueKey).Result()
if err != nil {
zap.L().Error("监听work:publish:queue队列失败", zap.Error(err))
time.Sleep(5 * time.Second) // 出错后等待5秒再重试
continue
}
if len(result) < 2 {
zap.L().Warn("队列返回数据格式异常", zap.Any("result", result))
continue
}
workData := result[1] // BRPOP返回[key, value]value在第二个元素
zap.L().Info("从work:publish:queue队列收到数据", zap.String("data", workData))
// 处理队列数据
if err = processWorkPublishQueueData(workData); err != nil {
zap.L().Error("处理work:publish:queue队列数据失败", zap.Error(err), zap.String("data", workData))
continue
}
zap.L().Info("成功处理work:publish:queue队列数据", zap.String("data", workData))
}
}
// processWorkPublishQueueData 处理从work:publish:queue队列中取出的数据
func processWorkPublishQueueData(data string) error {
// 延时1秒消费
time.Sleep(time.Second * 1)
var workData map[string]string
_ = json.Unmarshal([]byte(data), &workData)
workUuid := workData["workUuid"]
if workUuid == "" {
zap.L().Error("队列数据为空", zap.String("raw_data", data))
return errors.New("队列数据为空")
}
zap.L().Info("处理发布工作队列数据", zap.String("work_uuid", workUuid))
// 调用发布工作逻辑
err := serverCast.PublishWork(context.Background(), &cast.PublishReq{
WorkUuids: []string{workUuid},
})
if err != nil {
zap.L().Error("发布工作失败",
zap.String("work_uuid", workUuid),
zap.Error(err))
return err
}
zap.L().Info("发布工作成功", zap.String("work_uuid", workUuid))
return nil
}
// ScheduledPublishTask 定时发布任务从Redis Sorted Set中获取所有workUuid并根据score判断处理
func ScheduledPublishTask() {
// 加上锁
lockKey := "scheduled_publish:lock"
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), 1*time.Hour)
if !reply.Val() {
zap.L().Warn("定时发布任务正在被其他实例处理")
return
}
defer func() {
cache.RedisClient.Del(lockKey)
}()
// 获取所有数据不限制score范围
opt := redis.ZRangeBy{
Min: "-inf",
Max: "+inf",
}
// 从Redis Sorted Set中获取所有workUuid及其score
workList, err := cache.RedisClient.ZRangeByScoreWithScores(modelCast.ScheduledPublishQueueKey, opt).Result()
if err != nil {
zap.L().Error("获取定时发布任务失败", zap.Error(err))
return
}
if len(workList) == 0 {
zap.L().Debug("没有定时发布任务")
return
}
publishCount := 0
expiredCount := 0
zap.L().Info("发现定时发布任务", zap.Int("total_count", len(workList)))
// 遍历所有数据根据score判断处理
for _, item := range workList {
workUuid := item.Member.(string)
score := item.Score
now := float64(time.Now().Unix())
// 如果score小于当前时间删除但不消费不发布
if score < now {
zap.L().Info("发现过期的定时发布任务,直接删除不发布",
zap.String("work_uuid", workUuid),
zap.Float64("score", score),
zap.Float64("now", now))
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, workUuid).Result()
if delErr != nil {
zap.L().Error("删除过期定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", workUuid))
} else if removed > 0 {
expiredCount++
zap.L().Info("已删除过期定时发布任务", zap.String("work_uuid", workUuid))
}
continue
}
// score大于等于当前时间正常发布
zap.L().Info("处理定时发布任务",
zap.String("work_uuid", workUuid),
zap.Float64("score", score))
_ = serverCast.PublishWork(context.Background(), &cast.PublishReq{
WorkUuids: []string{workUuid},
})
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, workUuid).Result()
if delErr != nil {
zap.L().Error("删除定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", workUuid))
} else if removed > 0 {
publishCount++
zap.L().Info("已发布并删除定时发布任务", zap.String("work_uuid", workUuid))
}
}
zap.L().Info("定时发布任务处理完成",
zap.Int("published_count", publishCount),
zap.Int("expired_count", expiredCount),
zap.Int("total_count", len(workList)))
}
// AyrshareMetricsCollectorTask Ayrshare 指标采集定时任务(每天 00:30 和 12:30 执行) // AyrshareMetricsCollectorTask Ayrshare 指标采集定时任务(每天 00:30 和 12:30 执行)
func AyrshareMetricsCollectorTask() { func AyrshareMetricsCollectorTask() {
serverCast.ExecuteAyrshareMetricsCollector() serverCast.ExecuteAyrshareMetricsCollector()
} }
func RefreshArtistOrderTask() {
_, _ = service.CastProvider.Tools(context.Background(), &cast.ToolsReq{Action: "artistOrderInfo"})
}
// UpdateCastTagWatchCountTask 更新标签观看次数的定时任务每5分钟执行一次
func UpdateCastTagWatchCountTask() {
ctx := context.Background()
// 计算两天前的00:00:00
now := time.Now()
twoDaysAgo := now.AddDate(0, 0, -2)
createdAtStart := time.Date(twoDaysAgo.Year(), twoDaysAgo.Month(), twoDaysAgo.Day(), 0, 0, 0, 0, twoDaysAgo.Location())
createdAtEnd := now
// 格式化时间字符串2026-01-01 00:00:00
createdAtStartStr := createdAtStart.Format("2006-01-02 15:04:05")
createdAtEndStr := createdAtEnd.Format("2006-01-02 15:04:05")
// 调用 ListCastTags 接口,筛选 IsWatchCountCalled = 2 的数据
listReq := &cast.ListCastTagsReq{
CreatedAtStart: createdAtStartStr,
CreatedAtEnd: createdAtEndStr,
IsWatchCountCalled: 2, // 2表示未调用
Page: 1,
PageSize: 10,
}
listResp, err := service.CastProvider.ListCastTags(ctx, listReq)
if err != nil {
zap.L().Error("获取标签列表失败", zap.Error(err))
return
}
if listResp.Data == nil || len(listResp.Data) == 0 {
return
}
zap.L().Info("获取到需要更新的标签", zap.Int("count", len(listResp.Data)))
// 获取有效的 profileKey
profileKey, err := serverCast.GetValidProfileKey(ctx, []uint32{1})
if err != nil {
zap.L().Error("获取有效profileKey失败", zap.Error(err))
return
}
// 准备批量更新的数据
updateData := make([]*cast.CastTagInfo, 0, len(listResp.Data))
// 遍历每个标签,调用 RecommendHashtags 接口
for _, tag := range listResp.Data {
if tag.HashTag == "" {
zap.L().Warn("标签HashTag为空跳过", zap.String("uuid", tag.Uuid))
// 即使HashTag为空也要更新IsWatchCountCalled为1
updateData = append(updateData, &cast.CastTagInfo{
Uuid: tag.Uuid,
WatchCount: 1,
IsWatchCountCalled: 1,
})
continue
}
// 调用 RecommendHashtags 接口
recommendReq := &aryshare.RecommendHashtagsRequest{
Keyword: tag.HashTag,
ProfileKey: profileKey,
}
recommendResp, err := service.AyrshareProvider.RecommendHashtags(ctx, recommendReq)
if err != nil {
zap.L().Error("调用RecommendHashtags接口失败",
zap.String("hashTag", tag.HashTag),
zap.String("uuid", tag.Uuid),
zap.Error(err))
// 调用失败时将WatchCount更新为1IsWatchCountCalled更新为1
updateData = append(updateData, &cast.CastTagInfo{
Uuid: tag.Uuid,
WatchCount: 1,
IsWatchCountCalled: 1,
})
continue
}
// 对比返回结果,查找完全一致的标签
var matchedViewCount int64 = 0
if recommendResp.Recommendations != nil {
for _, recommendation := range recommendResp.Recommendations {
// 完全一致匹配(不区分大小写)
if strings.EqualFold(recommendation.Name, tag.HashTag) {
matchedViewCount = recommendation.ViewCount
break
}
}
}
// 根据匹配结果更新WatchCount
var watchCount int32 = 1
if matchedViewCount > 0 {
watchCount = int32(matchedViewCount)
}
// 添加到更新列表
updateData = append(updateData, &cast.CastTagInfo{
Uuid: tag.Uuid,
WatchCount: watchCount,
IsWatchCountCalled: 1,
})
zap.L().Debug("处理标签完成",
zap.String("hashTag", tag.HashTag),
zap.String("uuid", tag.Uuid),
zap.Int64("matchedViewCount", matchedViewCount),
zap.Int32("watchCount", watchCount))
}
// 如果没有需要更新的数据,直接返回
if len(updateData) == 0 {
return
}
// 批量更新标签
batchUpdateReq := &cast.BatchUpdateCastTagsReq{
Data: updateData,
}
_, err = service.CastProvider.BatchUpdateCastTags(ctx, batchUpdateReq)
if err != nil {
zap.L().Error("批量更新标签失败", zap.Error(err), zap.Int("count", len(updateData)))
return
}
}

View File

@ -79,7 +79,7 @@ func (w *Work) ExportExcelWorkList(data []*cast.WorkListResp_Info) (*excelize.Fi
info.Remark, info.Remark,
mediaAccountNames, mediaAccountNames,
managerNames, managerNames,
info.SubmitTime, info.Status1Time,
info.Status4Time, info.Status4Time,
info.Status9Time, info.Status9Time,
info.Status6Time, info.Status6Time,

View File

@ -1,182 +0,0 @@
package logic
import (
"crypto/sha256"
"errors"
"fmt"
"strconv"
"strings"
"time"
"github.com/tealeg/xlsx"
)
type SupplierLogic struct {
OwningEntityName string `json:"owningEntityName"`
LegalName string `json:"legalName"`
LocalName string `json:"localName"`
AbbreviationName string `json:"abbreviationName"`
CountryOrRegionName string `json:"countryOrRegionName"`
CompanyRegistrationNumber string `json:"companyRegistrationNumber"`
SupplierType string `json:"supplierType"`
ApprovalStatus string `json:"approvalStatus"`
ApprovalDate string `json:"approvalDate"`
LastReviewDate string `json:"lastReviewDate"`
LegalEntityType string `json:"legalEntityType"`
SanctionsCountryScreeningResult string `json:"sanctionsCountryScreeningResult"`
KeyFinancial string `json:"keyFinancial"`
CompanyAddress string `json:"companyAddress"`
PrimaryContact string `json:"primaryContact"`
DataOwnerDepartment string `json:"dataOwnerDepartment"`
BasicCompanyInformation string `json:"basicCompanyInformation"`
SupplementaryText string `json:"supplementaryText"`
ConnectedParty string `json:"connectedParty"`
}
type ErrSupplierRes struct {
ID int `json:"id"`
LegalName string `json:"legalName"`
Remark string `json:"remark"`
}
func ImportSupplier(filePath string) ([]*SupplierLogic, error) {
xlFile, err := xlsx.OpenFile(filePath)
if err != nil {
return nil, err
}
//开辟除表头外的行数的数组内存
//遍历sheet
for sheetIndex, sheet := range xlFile.Sheets {
var resourceArr []map[int]string
//遍历每一行
//for rowIndex, row := range sheet.Rows {
for _, row := range sheet.Rows {
//开辟除表头外的行数的数组内存
objMap := make(map[int]string)
//if len(row.Cells) <= 0 || row.Cells[0].String() == "" {
// continue
//}
for cellIndex, cell := range row.Cells {
text := cell.String()
//如果是每一行的第一个单元格
objMap[cellIndex] = text
}
resourceArr = append(resourceArr, objMap)
}
if len(resourceArr) >= 2 {
suppliers, err := getListFromRaw(resourceArr)
if err != nil {
return nil, errors.New(fmt.Sprintf("页码:%d文件读取错误信息%s", sheetIndex+1, err.Error()))
}
if len(suppliers) > 0 {
return suppliers, nil
}
}
break
}
return nil, nil
}
func getListFromRaw(list []map[int]string) ([]*SupplierLogic, error) {
var entrusts []*SupplierLogic
kkMap := map[string]string{
"*使用组织/Owning Entity": "owningEntityName",
"*供应商法定全称/Legal Name": "legalName",
"供应商本地名称(如有)/Local Name (if applicable)": "localName",
"供应商简称(如有)/Abbreviation/Trade Name (if applicable)": "abbreviationName",
"*所在国家或地区/Country or Region": "countryOrRegionName",
"*公司注册编号/Company Registration Number": "companyRegistrationNumber",
"*供应商类型/Supplier Type": "supplierType",
"*准入状态/Approval Status": "approvalStatus",
"准入日期/Approval Date": "approvalDate",
"法律实体形式/Legal Entity Type": "legalEntityType",
"制裁与高风险国家筛查结果/Sanctions & High-Risk Country Screening Result": "sanctionsCountryScreeningResult",
"关键财务与付款信息/Key Financial & Payment Information": "keyFinancial",
"公司地址/Company Address": "companyAddress",
"主要联系人、职位及联系方式/Primary Contact, Position&Details": "primaryContact",
"数据维护部门&人员/Data Owner Department/Personnel": "dataOwnerDepartment",
"公司信息概要/Summary of Basic Company Information": "basicCompanyInformation",
"其他补充信息/Other Supplementary Information": "supplementaryText",
"*是否关联方/Connected party": "connectedParty",
}
keyMap := list[0]
for index, tt := range list {
if index == 0 {
continue
}
temp := &SupplierLogic{}
for i, r := range tt {
t := strings.TrimSpace(r)
if _, ok := keyMap[i]; !ok {
continue
}
keyString := strings.TrimSpace(keyMap[i])
if _, ok := kkMap[keyString]; !ok {
fmt.Println(fmt.Sprintf("行数:%d字段信息(%s)没有匹配,请以模版为准", i, keyString))
continue
}
switch kkMap[keyString] {
case "owningEntityName":
temp.OwningEntityName = t
case "legalName":
temp.LegalName = t
case "localName":
temp.LocalName = t
case "abbreviationName":
temp.AbbreviationName = t
case "countryOrRegionName":
temp.CountryOrRegionName = t
case "companyRegistrationNumber":
temp.CompanyRegistrationNumber = t
case "supplierType":
temp.SupplierType = t
case "approvalStatus":
temp.ApprovalStatus = t
case "approvalDate":
temp.ApprovalDate = ParseExcelDate(t)
//temp.ApprovalDate = t
case "legalEntityType":
temp.LegalEntityType = t
case "sanctionsCountryScreeningResult":
temp.SanctionsCountryScreeningResult = t
case "keyFinancial":
temp.KeyFinancial = t
case "companyAddress":
temp.CompanyAddress = t
case "primaryContact":
temp.PrimaryContact = t
case "dataOwnerDepartment":
temp.DataOwnerDepartment = t
case "basicCompanyInformation":
temp.BasicCompanyInformation = t
case "supplementaryText":
temp.SupplementaryText = t
case "connectedParty":
temp.ConnectedParty = t
}
}
entrusts = append(entrusts, temp)
}
sha256.New()
return entrusts, nil
}
func ParseExcelDate(v string) string {
if v == "" {
return ""
}
// 非数字,直接认为是 yyyy-mm-dd
if _, err := strconv.ParseFloat(v, 64); err != nil {
t, err := time.Parse("2006-01-02", v)
if err != nil {
return ""
}
return t.Format("2006-01-02")
}
// Excel 序列号
f, _ := strconv.ParseFloat(v, 64)
base := time.Date(1899, 12, 30, 0, 0, 0, 0, time.Local)
return base.AddDate(0, 0, int(f)).Format("2006-01-02")
}

View File

@ -69,8 +69,6 @@ func CheckLogin(provider *api.AccountFieeClientImpl) gin.HandlerFunc {
Domain: infoRes.Domain, Domain: infoRes.Domain,
TelNum: jwt.Phone, TelNum: jwt.Phone,
SubscriberNumber: infoRes.SubscriberNumber, SubscriberNumber: infoRes.SubscriberNumber,
IdNumber: infoRes.IdNumber,
InviterID: infoRes.InviterId,
} }
ctx.Set("jwtInfo", loginInfo) ctx.Set("jwtInfo", loginInfo)
@ -163,7 +161,6 @@ func CheckWebLogin(provider *account.AccountClientImpl) gin.HandlerFunc {
Domain: info.Domain, Domain: info.Domain,
ID: info.ID, ID: info.ID,
Name: info.NickName, Name: info.NickName,
//Account: info.Account,
//NickName: info.NickName, //NickName: info.NickName,
//PositionUsers: qres.PositionUsers, //PositionUsers: qres.PositionUsers,
//Extend: infoRes.Info.Extend, //Extend: infoRes.Info.Extend,

View File

@ -1,10 +1,8 @@
package cast package cast
type SendMessageReq struct { type SendMessageReq struct {
MediaAccountUuid string `json:"mediaAccountUuid"` MediaUserID string `json:"mediaUserId"`
Message string `json:"message"` Message string `json:"message"`
RecipientId string `json:"recipientId"`
PlatformID uint32 `json:"platformID"`
} }
type PostCommentReq struct { type PostCommentReq struct {

View File

@ -1,13 +0,0 @@
package cast
type PublishTaskDto struct {
WorkUuids []string
MediaAccountUuids []string
PlatformIds []string
}
var TaskActionName = map[string]string{
"importWorkBatch": "批量导入图文",
"publishBatch1": "批量发布",
"publishBatch2": "多账号同步",
}

View File

@ -13,16 +13,12 @@ const (
) )
const ( const (
AutoConfirmAnalysisQueueKey = "auto_confirm:analysis:queue"
AutoConfirmAnalysisLockKey = "auto_confirm:analysis:lock:%s"
AutoConfirmQueueKey = "auto_confirm:queue" AutoConfirmQueueKey = "auto_confirm:queue"
AutoConfirmLockKey = "auto_confirm:lock:%s" AutoConfirmLockKey = "auto_confirm:lock:%s"
WorkPublishQueueKey = "work:publish:queue" WorkPublishQueueKey = "work:publish:queue"
ScheduledPublishQueueKey = "scheduled:publish:queue" // 定时发布队列 ScheduledPublishQueueKey = "scheduled:publish:queue" // 定时发布队列
AutoConfirmAnalysisQueueKey = "auto_confirm:analysis:queue"
AutoConfirmAnalysisLockKey = "auto_confirm:analysis:lock:%s"
// AyrshareMetricsCollectorLockKey Ayrshare 指标采集任务锁
AyrshareMetricsCollectorLockKey = "ayrshare:metrics:collector:lock"
) )
var WorkCategoryMM = map[int]string{ var WorkCategoryMM = map[int]string{
@ -59,7 +55,7 @@ var WorkStatusMM = map[int]string{
6: "发布成功", 6: "发布成功",
7: "发布失败", 7: "发布失败",
8: "未知", 8: "未知",
9: "验确认", 9: "验确认",
} }
var ConfirmTypeMM = map[int]string{ var ConfirmTypeMM = map[int]string{
1: "艺人确认", 1: "艺人确认",

View File

@ -2,7 +2,6 @@ package login
import ( import (
"errors" "errors"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
@ -28,8 +27,6 @@ type Info struct {
Domain string `json:"domain"` Domain string `json:"domain"`
TelNum string `json:"telNum"` TelNum string `json:"telNum"`
SubscriberNumber string `json:"subscriberNumber"` SubscriberNumber string `json:"subscriberNumber"`
IdNumber string `json:"idNumber"`
InviterID uint64 `json:"inviterId"`
} }
func GetUserInfoFromC(c *gin.Context) Info { func GetUserInfoFromC(c *gin.Context) Info {

View File

@ -10,7 +10,7 @@ import (
) )
func AnalysisRouter(r *gin.RouterGroup) { func AnalysisRouter(r *gin.RouterGroup) {
// r.POST("analysis/trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) r.POST("analysis/trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector)
analysis := r.Group("analysis") analysis := r.Group("analysis")
analysis.Use(middleware.CheckWebLogin(service.AccountProvider)) analysis.Use(middleware.CheckWebLogin(service.AccountProvider))
@ -31,8 +31,7 @@ func AnalysisRouter(r *gin.RouterGroup) {
analysis.POST("artist-metrics-single", serviceCast.ArtistMetricsDailyWindow) // 艺人指标日窗口 analysis.POST("artist-metrics-single", serviceCast.ArtistMetricsDailyWindow) // 艺人指标日窗口
analysis.POST("tobe-confirmed-list", serviceCast.TobeConfirmedList) // 待确认数据列表 analysis.POST("tobe-confirmed-list", serviceCast.TobeConfirmedList) // 待确认数据列表
analysis.POST("update-approval-id", serviceCast.UpdateWorkAnalysisApprovalID) // 更新作品分析审批ID analysis.POST("update-approval-id", serviceCast.UpdateWorkAnalysisApprovalID) // 更新作品分析审批ID
// analysis.POST("trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) // 手动触发 Ayrshare 指标采集任务
analysis.POST("trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) // 手动触发 Ayrshare 指标采集任务
} }

View File

@ -45,8 +45,6 @@ func BundleOrderRouter(r *gin.RouterGroup) {
bundleOrderAppRoute := bundleOrderRoute.Group("app") bundleOrderAppRoute := bundleOrderRoute.Group("app")
{ {
bundleOrderAppRoute.POST("order-signature", bundle.CreateBundleOrderSignature) bundleOrderAppRoute.POST("order-signature", bundle.CreateBundleOrderSignature)
bundleOrderAppRoute.POST("verification-signature", bundle.VerificationSignature) //校验签署
bundleOrderAppRoute.POST("restart-signature", bundle.RestartSignature) //重新签署
//bundleOrderAppRoute.POST("order-add-signature", bundle.CreateBundleOrderAddSignature) //bundleOrderAppRoute.POST("order-add-signature", bundle.CreateBundleOrderAddSignature)
bundleOrderAppRoute.POST("order-del", bundle.DeleteBundleOrder) bundleOrderAppRoute.POST("order-del", bundle.DeleteBundleOrder)
bundleOrderAppRoute.POST("update-pay", bundle.UpdateBundleOrderStatusPaid) bundleOrderAppRoute.POST("update-pay", bundle.UpdateBundleOrderStatusPaid)

View File

@ -1,8 +1,6 @@
package router package router
import ( import (
"fonchain-fiee/pkg/middleware"
"fonchain-fiee/pkg/service"
cronService "fonchain-fiee/pkg/service/cron" cronService "fonchain-fiee/pkg/service/cron"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -10,7 +8,7 @@ import (
func cronRouter(r *gin.RouterGroup) { func cronRouter(r *gin.RouterGroup) {
auth := r.Group("") auth := r.Group("")
auth.Use(middleware.CheckWebLogin(service.AccountProvider)) //auth.Use(middleware.CheckWebLogin(service.AccountProvider))
cron := auth.Group("cron") cron := auth.Group("cron")
{ {
cron.POST("createScheduleTask", cronService.CreateScheduleTask) cron.POST("createScheduleTask", cronService.CreateScheduleTask)
@ -23,7 +21,6 @@ func cronRouter(r *gin.RouterGroup) {
cron.POST("exportExcelExecutionResult", cronService.ExportExcelExecutionResult) cron.POST("exportExcelExecutionResult", cronService.ExportExcelExecutionResult)
cron.POST("getListExecutionRecord", cronService.GetListExecutionRecord) cron.POST("getListExecutionRecord", cronService.GetListExecutionRecord)
cron.POST("getScheduleTaskStatus", cronService.GetScheduleTaskStatus) cron.POST("getScheduleTaskStatus", cronService.GetScheduleTaskStatus)
cron.POST("getImportData", cronService.GetImportData)
} }
} }

View File

@ -62,8 +62,6 @@ func MediaRouter(r *gin.RouterGroup) {
task := auth.Group("task") task := auth.Group("task")
{ {
task.POST("list", serviceCast.TaskList) task.POST("list", serviceCast.TaskList)
task.POST("delete", serviceCast.DeleteTasK)
task.POST("download", serviceCast.DownloadTaskFile)
} }
layout := auth.Group("layout") layout := auth.Group("layout")
@ -81,18 +79,6 @@ func MediaRouter(r *gin.RouterGroup) {
prompt.POST("delete", serviceCast.DeletePrompt) prompt.POST("delete", serviceCast.DeletePrompt)
} }
tag := auth.Group("tag")
{
tag.POST("update", serviceCast.UpdateCastTag)
tag.POST("list", serviceCast.ListCastTags)
tag.POST("import-batch", serviceCast.ImportTagBatch)
tag.POST("recalculate-quote-count", serviceCast.RecalculateCastTagQuoteCount)
// tag.POST("auto-hashtags", serviceCast.AutoHashtags)
// 这两个接口需要关闭ins通过facebook授权
// tag.POST("recommend-hashtags", serviceCast.RecommendHashtags)
// tag.POST("search-hashtags", serviceCast.SearchHashtags)
}
//AI 生图 //AI 生图
aiNoAuth := noAuth.Group("ai") aiNoAuth := noAuth.Group("ai")
{ {

View File

@ -7,7 +7,6 @@ import (
"fonchain-fiee/pkg/service/account" "fonchain-fiee/pkg/service/account"
"fonchain-fiee/pkg/service/asChat" "fonchain-fiee/pkg/service/asChat"
"fonchain-fiee/pkg/service/auth" "fonchain-fiee/pkg/service/auth"
"fonchain-fiee/pkg/service/bundle"
emailAlert "fonchain-fiee/pkg/service/emailAlerts" emailAlert "fonchain-fiee/pkg/service/emailAlerts"
"fonchain-fiee/pkg/service/file" "fonchain-fiee/pkg/service/file"
"fonchain-fiee/pkg/service/governance" "fonchain-fiee/pkg/service/governance"
@ -61,7 +60,6 @@ func NewRouter() *gin.Engine {
SecFilingRouter(privateGroup) SecFilingRouter(privateGroup)
app.MediaAppRouter(privateGroup) app.MediaAppRouter(privateGroup)
cronRouter(privateGroup) cronRouter(privateGroup)
SupplierRouter(privateGroup)
{ {
v1.POST("version", version.Version) //版本号公共 v1.POST("version", version.Version) //版本号公共
} }
@ -74,7 +72,6 @@ func NewRouter() *gin.Engine {
privateGroup.POST("user/check/msg", account.CheckMsg) //校验验证码 privateGroup.POST("user/check/msg", account.CheckMsg) //校验验证码
privateGroup.POST("generate/captcha", account.GenerateCaptcha) //生成滑块验证码 privateGroup.POST("generate/captcha", account.GenerateCaptcha) //生成滑块验证码
privateGroup.POST("validate/captcha", account.ValidateCaptcha) //验证滑块验证码 privateGroup.POST("validate/captcha", account.ValidateCaptcha) //验证滑块验证码
privateGroup.POST("check/register", account.CheckRegister) //校验是否注册
acRoute := privateGroup.Group("/user") acRoute := privateGroup.Group("/user")
acRoute.Use(middleware.CheckLogin(service.AccountFieeProvider)) acRoute.Use(middleware.CheckLogin(service.AccountFieeProvider))
{ {
@ -82,7 +79,6 @@ func NewRouter() *gin.Engine {
acRoute.POST("info", account.UserInfo) //用户详情 acRoute.POST("info", account.UserInfo) //用户详情
acRoute.POST("update", account.UserUpdate) //用户更新 acRoute.POST("update", account.UserUpdate) //用户更新
acRoute.POST("ocr", account.CheckIdOcr) // acRoute.POST("ocr", account.CheckIdOcr) //
acRoute.POST("write/off", account.WriteOff) //
} }
webAcRouter := privateGroup.Group("/user") webAcRouter := privateGroup.Group("/user")
//webAcRouter.Use(middleware.CheckWebLogin(service.AccountProvider)) //webAcRouter.Use(middleware.CheckWebLogin(service.AccountProvider))
@ -90,7 +86,6 @@ func NewRouter() *gin.Engine {
{ {
webAcRouter.POST("list", account.UserList) //用户列表 webAcRouter.POST("list", account.UserList) //用户列表
webAcRouter.POST("approval", account.UserApproval) //实名审核 webAcRouter.POST("approval", account.UserApproval) //实名审核
webAcRouter.POST("admin-update", account.AdminUpdate) //更新用户信息
webAcRouter.POST("excel/download", account.UserExcelDownload) //excel下载 webAcRouter.POST("excel/download", account.UserExcelDownload) //excel下载
} }
} }
@ -185,13 +180,11 @@ func NewRouter() *gin.Engine {
governanceRoute := v1.Group("/governance") governanceRoute := v1.Group("/governance")
governanceRouteLogin := governanceRoute.Group("", middleware.CheckWebLogin(service.AccountProvider)) governanceRouteLogin := governanceRoute.Group("", middleware.CheckWebLogin(service.AccountProvider))
governanceRoute.POST("/display", middleware.Cors(), governance.Display) governanceRoute.GET("/display", middleware.Cors(), governance.Display)
governanceRouteLogin.POST("/list", governance.List) governanceRouteLogin.POST("/list", governance.List)
governanceRouteLogin.POST("", governance.Create) governanceRouteLogin.POST("", governance.Create)
governanceRouteLogin.POST("/edit", governance.Edit) governanceRouteLogin.POST("/edit", governance.Edit)
governanceRouteLogin.POST("/delete", governance.Delete) governanceRouteLogin.POST("/delete", governance.Delete)
governanceRouteLogin.POST("/updataStatus", governance.UpdataStatus)
governanceRouteLogin.POST("/getGovernanceInfo", governance.GetGovernanceInfo)
} }
{ {
@ -285,10 +278,6 @@ func NewRouter() *gin.Engine {
importRoute.GET("generate/photo/test2", imports.Test2) importRoute.GET("generate/photo/test2", imports.Test2)
} }
{
//健康检测
v1.GET("health", bundle.HealthCheck)
}
//静态文件 //静态文件
r.StaticFS("/api/fiee/static", http.Dir("./runtime")) r.StaticFS("/api/fiee/static", http.Dir("./runtime"))
r.NoRoute(func(c *gin.Context) { r.NoRoute(func(c *gin.Context) {

View File

@ -1,35 +0,0 @@
package router
import (
"fonchain-fiee/pkg/middleware"
"fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/service/supplier"
"github.com/gin-gonic/gin"
)
func SupplierRouter(r *gin.RouterGroup) {
supplierRoute := r.Group("supplier/web")
supplierRoute.Use(middleware.CheckWebLogin(service.AccountProvider))
{
supplierRoute.POST("info", supplier.GetSupplier)
supplierRoute.POST("create", supplier.CreateSupplier)
supplierRoute.POST("update", supplier.UpdateSupplier)
supplierRoute.POST("list", supplier.GetSupplierList)
}
{
supplierRoute.POST("dictionary/create", supplier.CreateOrganizeDictionary)
supplierRoute.POST("dictionary/list", supplier.GetOrganizeDictionaryList)
}
{
supplierRoute.POST("country-region/list", supplier.GetCountryRegionList)
}
{
supplierRoute.POST("import/record", supplier.CreateImportRecord)
supplierRoute.POST("import/info", supplier.GetImportRecordInfo)
supplierRoute.POST("export/list", supplier.GetExportList)
}
}

View File

@ -130,37 +130,6 @@ func UserUpdate(c *gin.Context) {
Domain: req.Domain, Domain: req.Domain,
Language: req.Language, Language: req.Language,
NickName: req.NickName, NickName: req.NickName,
Email: req.Email,
AbroadTel: req.AbroadTel,
AbroadTelAreaCode: req.AbroadTelAreaCode,
})
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func AdminUpdate(c *gin.Context) {
var req account.UpdateRequest
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
if req.ID == 0 {
service.Error(c, errors.New("用户ID不能为空"))
return
}
req.Domain = "app"
res, err := service.AccountFieeProvider.Update(c, &account.UpdateRequest{
ID: req.ID,
Domain: req.Domain,
//Language: req.Language,
//NickName: req.NickName,
Email: req.Email,
AbroadTel: req.AbroadTel,
AbroadTelAreaCode: req.AbroadTelAreaCode,
}) })
if err != nil { if err != nil {
service.Error(c, err) service.Error(c, err)
@ -188,26 +157,6 @@ func CheckIdOcr(c *gin.Context) {
return return
} }
func WriteOff(c *gin.Context) {
var req account.WriteOffRequest
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
user := login.GetUserInfoFromC(c)
res, err := service.AccountFieeProvider.WriteOff(c, &account.WriteOffRequest{
Id: user.ID,
})
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
/** /**
* 获取身份证OCR识别结果 * 获取身份证OCR识别结果
* @param realIDImgA string - 身份证图片的URL地址 * @param realIDImgA string - 身份证图片的URL地址
@ -292,11 +241,6 @@ func SendMsg(c *gin.Context) {
} }
req.Project = "fiee" req.Project = "fiee"
req.TelNum = req.Zone + req.TelNum req.TelNum = req.Zone + req.TelNum
//todo 审核使用账号
if req.TelNum == "8618888888888" {
service.Success1(c, "发送成功", &account.SendMsgStatusResponse{})
return
}
if req.Zone != e.ZoneCn && req.Zone != "" { if req.Zone != e.ZoneCn && req.Zone != "" {
// ============================== redis检查ip开始 // ============================== redis检查ip开始
ip := c.ClientIP() ip := c.ClientIP()
@ -341,6 +285,7 @@ func SendMsg(c *gin.Context) {
//cache.RedisClient.Incr(daykey) //cache.RedisClient.Incr(daykey)
//cache.RedisClient.Incr(minutekey) //cache.RedisClient.Incr(minutekey)
// ============================== redis检查ip结束 // ============================== redis检查ip结束
tempReq := &account.SendNationMsgRequest{ tempReq := &account.SendNationMsgRequest{
Domain: req.Domain, Domain: req.Domain,
TelNum: req.TelNum, TelNum: req.TelNum,
@ -464,31 +409,6 @@ func ValidateCaptcha(c *gin.Context) {
service.Success(c, res) service.Success(c, res)
} }
func CheckRegister(c *gin.Context) {
type CheckRegisterRes struct {
IsRegister bool `json:"is_register"`
}
req := account.UserByTelRequest{}
req.Domain = "app"
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
data, err := service.AccountFieeProvider.UserByTel(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
var res CheckRegisterRes
if data.Id == 0 {
res.IsRegister = false
} else {
res.IsRegister = true
}
service.Success(c, res)
return
}
func UserLogout(c *gin.Context) { func UserLogout(c *gin.Context) {
req := account.DecryptJwtRequest{} req := account.DecryptJwtRequest{}
req.Token = c.GetHeader(e.Authorization) req.Token = c.GetHeader(e.Authorization)
@ -508,16 +428,6 @@ func UserRegister(c *gin.Context) {
return return
} }
req.Domain = "app" req.Domain = "app"
if req.InviterCode != "" {
codeRes, err := service.AccountFieeProvider.GetInviterInfo(context.Background(), &account.InviterInfoRequest{
Code: req.InviterCode,
})
if err != nil || codeRes.Id == 0 {
service.Error(c, errors.New("邀请码错误"))
return
}
req.InviterID = codeRes.Id
}
res, err := service.AccountFieeProvider.Register(context.Background(), &req) res, err := service.AccountFieeProvider.Register(context.Background(), &req)
if err != nil { if err != nil {
service.Error(c, err) service.Error(c, err)
@ -533,10 +443,6 @@ func UserRegister(c *gin.Context) {
service.Error(c, err) service.Error(c, err)
return return
} }
if tokenInfo.AccountInfo.WriteOff == true {
service.Error(c, errors.New("此账号已注销,无法登录"))
return
}
res.Token = tokenInfo.Token res.Token = tokenInfo.Token
service.Success(c, res) service.Success(c, res)
return return

View File

@ -134,6 +134,9 @@ func (cr ChatHandler) NewMessage(c *gin.Context) {
service.ErrWithCode(c, code) service.ErrWithCode(c, code)
return return
} }
if request.LocalStamp == 0 {
request.LocalStamp = time.Now().Unix()
}
err := logic.NewMessage(c, &cr.cache, chatUser, request) err := logic.NewMessage(c, &cr.cache, chatUser, request)
if err != nil { if err != nil {
service.Error(c, err) service.Error(c, err)
@ -260,8 +263,9 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
// return // return
// } // }
//} //}
messages := cr.cache.GetChatRecord(request.SessionId) // 启用或禁用缓存
//messages := []*accountFiee.ChatRecordData{} //messages := cr.cache.GetChatRecord(request.SessionId)
messages := []*accountFiee.ChatRecordData{}
var returnDataIdList = make([]int64, 0) var returnDataIdList = make([]int64, 0)
defer func() { defer func() {
//获取最新数据时,重置新消息数量统计 //获取最新数据时,重置新消息数量统计
@ -277,6 +281,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
} }
} }
} }
fmt.Println("defer CoverChatRecord , message len:", len(messages))
err := cr.cache.CoverChatRecord(request.SessionId, messages) err := cr.cache.CoverChatRecord(request.SessionId, messages)
if err != nil { if err != nil {
log.Print("设置消息已读失败", zap.Error(err)) log.Print("设置消息已读失败", zap.Error(err))
@ -302,6 +307,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
return return
} }
messages = recordResp.List messages = recordResp.List
fmt.Println("GetChatRecordList len:", len(messages))
err = cr.cache.CoverChatRecord(request.SessionId, messages) err = cr.cache.CoverChatRecord(request.SessionId, messages)
if err != nil { if err != nil {
log.Print("覆盖聊天记录失败", zap.Error(err)) log.Print("覆盖聊天记录失败", zap.Error(err))
@ -332,7 +338,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
return messages[i].ID > messages[j].ID return messages[i].ID > messages[j].ID
} }
}) })
fmt.Printf("data is %+v\n", messages) //fmt.Printf("data is %+v\n", messages)
total := 0 total := 0
for i, message := range messages { for i, message := range messages {
switch request.Direction { switch request.Direction {
@ -367,8 +373,6 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
resp[i].Message.Media = []dto.MessageMedia{} resp[i].Message.Media = []dto.MessageMedia{}
} }
} }
if accessUser.Role == 1 {
}
service.Success(c, resp) service.Success(c, resp)
} }

View File

@ -42,6 +42,7 @@ func NewMessage(ctx context.Context, cache *chatCache.ChatCache, sender *account
fmt.Println(request.LocalStamp - msgRecord.LocalStamp) fmt.Println(request.LocalStamp - msgRecord.LocalStamp)
if msgRecord.Message.Text == request.Message.Text && request.LocalStamp-msgRecord.LocalStamp < 1 { //秒级 if msgRecord.Message.Text == request.Message.Text && request.LocalStamp-msgRecord.LocalStamp < 1 { //秒级
cacheMap[request.AtUserId] = request cacheMap[request.AtUserId] = request
fmt.Println("\n\n跳过消息发送\n\t跳过消息发送\n\t\t跳过消息发送\n\n")
return nil return nil
} else { } else {
cacheMap[request.AtUserId] = request cacheMap[request.AtUserId] = request

View File

@ -177,10 +177,12 @@ func (r *Robot) Run() {
if hit { if hit {
hasHit = true hasHit = true
if rule.RunTime().IsZero() { if rule.RunTime().IsZero() {
go func() {
err := rule.Run(r.cache) err := rule.Run(r.cache)
if err != nil { if err != nil {
log.Printf("robot 执行任务失败:%v\n", err) log.Printf("robot 执行任务失败:%v\n", err)
} }
}()
} else { } else {
r.RegisterDelayTask(rule) r.RegisterDelayTask(rule)
} }

View File

@ -27,6 +27,12 @@ func NewReplyWhenHitKeywords(title string, keywords []string) IRobotTask {
return &RobotTaskWithKeyworkds{title: title, keywords: keywords} return &RobotTaskWithKeyworkds{title: title, keywords: keywords}
} }
func (r *RobotTaskWithKeyworkds) Hit(event ws.ListenEventData, sender *accountFiee.ChatUserData) (hit bool) { func (r *RobotTaskWithKeyworkds) Hit(event ws.ListenEventData, sender *accountFiee.ChatUserData) (hit bool) {
//fmt.Printf("event.EventType != ws.EventChatMessage:%v\n", event.EventType != ws.EventChatMessage)
//fmt.Printf("event.Msg: %v\n", event.Msg == "")
//fmt.Printf("event.Client == nil: %v\n", event.Client == nil)
//fmt.Printf("event.ChatUser == nil: %v\n", event.ChatUser == nil)
//fmt.Printf("event.ChatUser.Role != 1: %v\n", event.ChatUser.Role != 1)
//fmt.Printf("r.keywords: %+v\n", r.keywords)
if event.EventType != ws.EventChatMessage || event.Msg == "" || event.Client == nil || event.ChatUser == nil { if event.EventType != ws.EventChatMessage || event.Msg == "" || event.Client == nil || event.ChatUser == nil {
return return
} }

View File

@ -11,6 +11,7 @@ import (
"fonchain-fiee/pkg/service/bundle/common" "fonchain-fiee/pkg/service/bundle/common"
"fonchain-fiee/pkg/utils" "fonchain-fiee/pkg/utils"
"io" "io"
"log"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -166,7 +167,7 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
service.Error(c, err) service.Error(c, err)
return return
} }
log.Print("req.ConfirmRemark:", req.ConfirmRemark)
if req.ConfirmStatus == 2 { // 驳回完直接结束 if req.ConfirmStatus == 2 { // 驳回完直接结束
res, err := service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{ res, err := service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM, WorkAction: cast.WorkActionENUM_CONFIRM,
@ -189,6 +190,22 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
service.Error(c, errors.New(common.GetUserBalanceFailed)) service.Error(c, errors.New(common.GetUserBalanceFailed))
return return
} }
//判断套餐是否过期
if balanceInfoRes.BundleStatus == common.BundleExpired {
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 3,
ConfirmFailType: cast.ConfirmFailENUM_ConfirmFailENUM_EXPIRED,
})
if err != nil {
service.Error(c, errors.New(common.UpdateWorkStatusFailed))
return
}
service.Error(c, errors.New("套餐已过期"))
return
}
wordInfoRes, err := service.CastProvider.WorkDetail(c, &cast.WorkDetailReq{ wordInfoRes, err := service.CastProvider.WorkDetail(c, &cast.WorkDetailReq{
WorkUuid: req.WorkUuid, WorkUuid: req.WorkUuid,
@ -197,18 +214,6 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
service.Error(c, errors.New(common.GetWorkDetailFailed)) service.Error(c, errors.New(common.GetWorkDetailFailed))
return return
} }
if balanceInfoRes.BundleStatus == common.BundleExpired {
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 3,
})
service.Error(c, errors.New("套餐已过期"))
return
}
if wordInfoRes.WorkStatus != 4 { if wordInfoRes.WorkStatus != 4 {
service.Error(c, errors.New("作品不是待确认状态")) service.Error(c, errors.New("作品不是待确认状态"))
return return
@ -221,12 +226,17 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
case 1: case 1:
{ {
if balanceInfoRes.ImageExtendConsumptionNumber >= balanceInfoRes.ImageExtendNumber { // 图文余量不足 if balanceInfoRes.ImageExtendConsumptionNumber >= balanceInfoRes.ImageExtendNumber { // 图文余量不足
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{ _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM, WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid, WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark, ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 3, ConfirmStatus: 3,
ConfirmFailType: cast.ConfirmFailENUM_ConfirmFailENUM_NOTENOUGH,
}) })
if err != nil {
service.Error(c, errors.New(common.UpdateWorkStatusFailed))
return
}
service.Error(c, errors.New("图文余量不足")) service.Error(c, errors.New("图文余量不足"))
return return
} }
@ -235,12 +245,17 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
case 2: case 2:
{ {
if balanceInfoRes.VideoExtendConsumptionNumber >= balanceInfoRes.VideoExtendNumber { // 视频余量不足 if balanceInfoRes.VideoExtendConsumptionNumber >= balanceInfoRes.VideoExtendNumber { // 视频余量不足
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{ _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM, WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid, WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark, ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 3, ConfirmStatus: 3,
ConfirmFailType: cast.ConfirmFailENUM_ConfirmFailENUM_NOTENOUGH,
}) })
if err != nil {
service.Error(c, errors.New(common.UpdateWorkStatusFailed))
return
}
service.Error(c, errors.New("视频余量不足")) service.Error(c, errors.New("视频余量不足"))
return return
} }
@ -452,7 +467,6 @@ func writeToExcel(filename string, items []*bundle.BundleBalanceExportItem) erro
"所属月份", "用户编号", "姓名", "手机号", "购买套餐时间", "所属月份", "用户编号", "姓名", "手机号", "购买套餐时间",
"套餐金额", "增值服务金额", "支付金额", "币种", "手续费", "套餐金额", "增值服务金额", "支付金额", "币种", "手续费",
"套餐视频总数", "增值服务视频总数", "套餐视频单价", "增值视频单价", "套餐视频总数", "增值服务视频总数", "套餐视频单价", "增值视频单价",
"当月消耗套餐金额($)", "当月消耗增值金额($)",
"套餐账号总数", "增值账号总数", "套餐账号使用数", "增值账号使用数", "套餐账号总数", "增值账号总数", "套餐账号使用数", "增值账号使用数",
"当前可用套餐视频数", "当前可用增值视频数", "当前已用套餐视频数", "当前已用增值视频数", "当前作废套餐视频数", "当前作废增值视频数", "当月新增可用套餐视频数", "当月新增可用增值视频数", "当月使用套餐视频数", "当月使用增值视频数", "当月作废套餐视频数", "当月作废增值视频数", "当前可用套餐视频数", "当前可用增值视频数", "当前已用套餐视频数", "当前已用增值视频数", "当前作废套餐视频数", "当前作废增值视频数", "当月新增可用套餐视频数", "当月新增可用增值视频数", "当月使用套餐视频数", "当月使用增值视频数", "当月作废套餐视频数", "当月作废增值视频数",
"当前可用套餐图文数", "当前可用增值图文数", "当前已用套餐图文数", "当前已用增值图文数", "当前作废套餐图文数", "当前作废增值图文数", "当月新增可用套餐图文数", "当月新增可用增值图文数", "当月使用套餐图文数", "当月使用增值图文数", "当月作废套餐图文数", "当月作废增值图文数", "当前可用套餐图文数", "当前可用增值图文数", "当前已用套餐图文数", "当前已用增值图文数", "当前作废套餐图文数", "当前作废增值图文数", "当月新增可用套餐图文数", "当月新增可用增值图文数", "当月使用套餐图文数", "当月使用增值图文数", "当月作废套餐图文数", "当月作废增值图文数",
@ -495,76 +509,64 @@ func writeToExcel(filename string, items []*bundle.BundleBalanceExportItem) erro
_ = write(13, fmt.Sprintf("%.2f", it.BundleVideoUnitPrice)) _ = write(13, fmt.Sprintf("%.2f", it.BundleVideoUnitPrice))
_ = write(14, fmt.Sprintf("%.2f", it.IncreaseVideoUnitPrice)) _ = write(14, fmt.Sprintf("%.2f", it.IncreaseVideoUnitPrice))
// 当月视频消耗金额($)
monthlyBundleVideoConsumptionPrice, err := strconv.ParseFloat(it.MonthlyBundleVideoConsumptionPrice, 64)
if err != nil {
return err
}
monthlyIncreaseVideoConsumptionPrice, err := strconv.ParseFloat(it.MonthlyIncreaseVideoConsumptionPrice, 64)
if err != nil {
return err
}
_ = write(15, fmt.Sprintf("%.2f", monthlyBundleVideoConsumptionPrice))
_ = write(16, fmt.Sprintf("%.2f", monthlyIncreaseVideoConsumptionPrice))
// 账号类 // 账号类
_ = write(17, int(it.BundleAccountNumber)) _ = write(15, int(it.BundleAccountNumber))
_ = write(18, int(it.IncreaseAccountNumber)) _ = write(16, int(it.IncreaseAccountNumber))
_ = write(19, int(it.BundleAccountConsumptionNumber)) _ = write(17, int(it.BundleAccountConsumptionNumber))
_ = write(20, int(it.IncreaseAccountConsumptionNumber)) _ = write(18, int(it.IncreaseAccountConsumptionNumber))
// 视频类 // 视频类
_ = write(21, int(it.MonthlyBundleVideoNumber)) _ = write(19, int(it.MonthlyBundleVideoNumber))
_ = write(22, int(it.MonthlyIncreaseVideoNumber)) _ = write(20, int(it.MonthlyIncreaseVideoNumber))
_ = write(23, int(it.BundleVideoConsumptionNumber)) _ = write(21, int(it.BundleVideoConsumptionNumber))
_ = write(24, int(it.IncreaseVideoConsumptionNumber)) _ = write(22, int(it.IncreaseVideoConsumptionNumber))
_ = write(25, int(it.InvalidBundleVideoNumber)) _ = write(23, int(it.InvalidBundleVideoNumber))
_ = write(26, int(it.InvalidIncreaseVideoNumber)) _ = write(24, int(it.InvalidIncreaseVideoNumber))
_ = write(27, int(it.MonthlyNewBundleVideoNumber)) _ = write(25, int(it.MonthlyNewBundleVideoNumber))
_ = write(28, int(it.MonthlyNewIncreaseVideoNumber)) _ = write(26, int(it.MonthlyNewIncreaseVideoNumber))
_ = write(29, int(it.MonthlyBundleVideoConsumptionNumber)) _ = write(27, int(it.MonthlyBundleVideoConsumptionNumber))
_ = write(30, int(it.MonthlyIncreaseVideoConsumptionNumber)) _ = write(28, int(it.MonthlyIncreaseVideoConsumptionNumber))
_ = write(31, int(it.MonthlyInvalidBundleVideoNumber)) _ = write(29, int(it.MonthlyInvalidBundleVideoNumber))
_ = write(32, int(it.MonthlyInvalidIncreaseVideoNumber)) _ = write(30, int(it.MonthlyInvalidIncreaseVideoNumber))
// 图文类 // 图文类
_ = write(33, int(it.MonthlyBundleImageNumber)) _ = write(31, int(it.MonthlyBundleImageNumber))
_ = write(34, int(it.MonthlyIncreaseImageNumber)) _ = write(32, int(it.MonthlyIncreaseImageNumber))
_ = write(35, int(it.BundleImageConsumptionNumber)) _ = write(33, int(it.BundleImageConsumptionNumber))
_ = write(36, int(it.IncreaseImageConsumptionNumber)) _ = write(34, int(it.IncreaseImageConsumptionNumber))
_ = write(37, int(it.InvalidBundleImageNumber)) _ = write(35, int(it.InvalidBundleImageNumber))
_ = write(38, int(it.InvalidIncreaseImageNumber)) _ = write(36, int(it.InvalidIncreaseImageNumber))
_ = write(39, int(it.MonthlyNewBundleImageNumber)) _ = write(37, int(it.MonthlyNewBundleImageNumber))
_ = write(40, int(it.MonthlyNewIncreaseImageNumber)) _ = write(38, int(it.MonthlyNewIncreaseImageNumber))
_ = write(41, int(it.MonthlyBundleImageConsumptionNumber)) _ = write(39, int(it.MonthlyBundleImageConsumptionNumber))
_ = write(42, int(it.MonthlyIncreaseImageConsumptionNumber)) _ = write(40, int(it.MonthlyIncreaseImageConsumptionNumber))
_ = write(43, int(it.MonthlyInvalidBundleImageNumber)) _ = write(41, int(it.MonthlyInvalidBundleImageNumber))
_ = write(44, int(it.MonthlyInvalidIncreaseImageNumber)) _ = write(42, int(it.MonthlyInvalidIncreaseImageNumber))
// 数据分析类 // 数据分析类
_ = write(45, int(it.MonthlyBundleDataAnalysisNumber)) _ = write(43, int(it.MonthlyBundleDataAnalysisNumber))
_ = write(46, int(it.MonthlyIncreaseDataAnalysisNumber)) _ = write(44, int(it.MonthlyIncreaseDataAnalysisNumber))
_ = write(47, int(it.BundleDataAnalysisConsumptionNumber)) _ = write(45, int(it.BundleDataAnalysisConsumptionNumber))
_ = write(48, int(it.IncreaseDataAnalysisConsumptionNumber)) _ = write(46, int(it.IncreaseDataAnalysisConsumptionNumber))
_ = write(49, int(it.InvalidBundleDataAnalysisNumber)) _ = write(47, int(it.InvalidBundleDataAnalysisNumber))
_ = write(50, int(it.InvalidIncreaseDataAnalysisNumber)) _ = write(48, int(it.InvalidIncreaseDataAnalysisNumber))
_ = write(51, int(it.MonthlyNewBundleDataAnalysisNumber)) _ = write(49, int(it.MonthlyNewBundleDataAnalysisNumber))
_ = write(52, int(it.MonthlyNewIncreaseDataAnalysisNumber)) _ = write(50, int(it.MonthlyNewIncreaseDataAnalysisNumber))
_ = write(53, int(it.MonthlyBundleDataAnalysisConsumptionNumber)) _ = write(51, int(it.MonthlyBundleDataAnalysisConsumptionNumber))
_ = write(54, int(it.MonthlyIncreaseDataAnalysisConsumptionNumber)) _ = write(52, int(it.MonthlyIncreaseDataAnalysisConsumptionNumber))
_ = write(55, int(it.MonthlyInvalidBundleDataAnalysisNumber)) _ = write(53, int(it.MonthlyInvalidBundleDataAnalysisNumber))
_ = write(56, int(it.MonthlyInvalidIncreaseDataAnalysisNumber)) _ = write(54, int(it.MonthlyInvalidIncreaseDataAnalysisNumber))
// 手动扩展类 // 手动扩展类
_ = write(57, int(it.MonthlyNewManualAccountNumber)) _ = write(55, int(it.MonthlyNewManualAccountNumber))
_ = write(58, int(it.MonthlyNewManualVideoNumber)) _ = write(56, int(it.MonthlyNewManualVideoNumber))
_ = write(59, int(it.MonthlyNewManualImageNumber)) _ = write(57, int(it.MonthlyNewManualImageNumber))
_ = write(60, int(it.MonthlyNewManualDataAnalysisNumber)) _ = write(58, int(it.MonthlyNewManualDataAnalysisNumber))
_ = write(61, int(it.MonthlyNewDurationNumber)) _ = write(59, int(it.MonthlyNewDurationNumber))
_ = write(62, int(it.MonthlyManualAccountConsumptionNumber)) _ = write(60, int(it.MonthlyManualAccountConsumptionNumber))
_ = write(63, int(it.MonthlyManualVideoConsumptionNumber)) _ = write(61, int(it.MonthlyManualVideoConsumptionNumber))
_ = write(64, int(it.MonthlyManualImageConsumptionNumber)) _ = write(62, int(it.MonthlyManualImageConsumptionNumber))
_ = write(65, int(it.MonthlyManualDataAnalysisConsumptionNumber)) _ = write(63, int(it.MonthlyManualDataAnalysisConsumptionNumber))
} }
@ -584,7 +586,7 @@ func GetAccountBundleBalance(c *gin.Context) {
service.Error(c, err) service.Error(c, err)
return return
} }
req.Month = []string{time.Now().Format("2006-01")} req.Month = time.Now().Format("2006-01")
res, err := service.BundleProvider.GetBundleBalanceList(context.Background(), &req) res, err := service.BundleProvider.GetBundleBalanceList(context.Background(), &req)
if err != nil { if err != nil {
service.Error(c, errors.New(common.GetBundleBalanceListFailed)) service.Error(c, errors.New(common.GetBundleBalanceListFailed))

View File

@ -17,6 +17,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/duke-git/lancet/v2/datetime"
"github.com/shopspring/decimal" "github.com/shopspring/decimal"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -92,30 +93,9 @@ func MetricsBundlePurchaseExport(ctx *gin.Context) {
sumFee := decimal.Zero sumFee := decimal.Zero
for _, i := range data { for _, i := range data {
sumPayment = sumPayment.Add(decimal.NewFromFloat(float64(i.PaymentAmount)))
s := fmt.Sprintf("%.2f", i.PaymentAmount) sumFinal = sumFinal.Add(decimal.NewFromFloat(float64(i.FinalAmount)))
d, err := decimal.NewFromString(s) sumFee = sumFee.Add(decimal.NewFromFloat(float64(i.FeeAmount)))
if err != nil {
service.Error(ctx, errors.New(common.MetricsBundlePurchaseExportFailed))
return
}
sumPayment = sumPayment.Add(d)
s = fmt.Sprintf("%.2f", i.FinalAmount)
d, err = decimal.NewFromString(s)
if err != nil {
service.Error(ctx, errors.New(common.MetricsBundlePurchaseExportFailed))
return
}
sumFinal = sumFinal.Add(d)
s = fmt.Sprintf("%.2f", i.FeeAmount)
d, err = decimal.NewFromString(s)
if err != nil {
service.Error(ctx, errors.New(common.MetricsBundlePurchaseExportFailed))
return
}
sumFee = sumFee.Add(d)
} }
f.SetCellValue(sheet, fmt.Sprintf("A%d", endRow+1), "合计支付金额(美元)") f.SetCellValue(sheet, fmt.Sprintf("A%d", endRow+1), "合计支付金额(美元)")
@ -191,7 +171,7 @@ func MetricsArtistAccountExport(ctx *gin.Context) {
utils.CheckDirPath("./runtime/"+fmt.Sprint(userInfo.ID), true) utils.CheckDirPath("./runtime/"+fmt.Sprint(userInfo.ID), true)
sheet := "Sheet1" sheet := "Sheet1"
f := excelize.NewFile() f := excelize.NewFile()
headers := []string{"序号", "艺人", "用户编号", "DM账号名", "DM账号状态", "Instagram账号名", "Instagram账号状态", "TikTok账号名", "TikTok账号状态", "Bluesky账号名", "Bluesky账号状态", "Youtube账号名", "Youtube账号状态"} headers := []string{"序号", "艺人", "用户编号", "DM账号名", "Instagram账号名", "TikTok账号名"}
for i, h := range headers { for i, h := range headers {
col, _ := excelize.ColumnNumberToName(i + 1) col, _ := excelize.ColumnNumberToName(i + 1)
cell := col + "1" cell := col + "1"
@ -205,10 +185,6 @@ func MetricsArtistAccountExport(ctx *gin.Context) {
} else { } else {
scheme = "http" scheme = "http"
} }
authStatus := map[int32]string{
1: "授权",
2: "未授权",
}
for r, it := range resp.Data { for r, it := range resp.Data {
row := r + 2 row := r + 2
// 逐列写入(注意顺序必须和 headers 一致) // 逐列写入(注意顺序必须和 headers 一致)
@ -220,16 +196,9 @@ func MetricsArtistAccountExport(ctx *gin.Context) {
_ = write(1, r+1) _ = write(1, r+1)
_ = write(2, it.ArtistName) _ = write(2, it.ArtistName)
_ = write(3, it.UserNum) _ = write(3, it.UserNum)
_ = write(4, it.DmNickname) _ = write(4, it.DmAccount)
_ = write(5, authStatus[it.DmAuthStatus]) _ = write(5, it.InstagramAccount)
_ = write(6, it.InstagramNickname) _ = write(6, it.TiktokAccount)
_ = write(7, authStatus[it.InsAuthStatus])
_ = write(8, it.TiktokNickname)
_ = write(9, authStatus[it.TiktokAuthStatus])
_ = write(10, it.BlueskyNickname)
_ = write(11, authStatus[it.BlueskyAuthStatus])
_ = write(12, it.YoutubeNickname)
_ = write(13, authStatus[it.YoutubeAuthStatus])
} }
// 可选:设置列宽,使表格更美观 // 可选:设置列宽,使表格更美观
_ = f.SetColWidth(sheet, "A", "AZ", 18) _ = f.SetColWidth(sheet, "A", "AZ", 18)
@ -256,9 +225,11 @@ func MetricsVideoSubmitExport(ctx *gin.Context) {
return return
} }
newCtx := serviceCast.NewCtxWithUserInfo(ctx) newCtx := serviceCast.NewCtxWithUserInfo(ctx)
if len(req.Month) > 0 { t, err := time.Parse("2006-01", req.Month)
if err == nil {
resp, err = service.CastProvider.WorkList(newCtx, &cast.WorkListReq{ resp, err = service.CastProvider.WorkList(newCtx, &cast.WorkListReq{
SubmitTimeMonths: req.Month, SubmitStartTime: datetime.BeginOfMonth(t).Format(time.DateTime),
SubmitEndTime: datetime.EndOfMonth(t).Format(time.DateTime),
Page: 1, Page: 1,
PageSize: 99999, PageSize: 99999,
}) })

View File

@ -22,8 +22,6 @@ import (
"github.com/gin-gonic/gin/binding" "github.com/gin-gonic/gin/binding"
) )
const ContractUrl = "https://e-cdn.fontree.cn/fonchain-main/prod/file/contract/saas/template-25122501.pdf"
func DeleteBundleOrder(c *gin.Context) { func DeleteBundleOrder(c *gin.Context) {
var req bundle.DeleteValueAddServiceRequest var req bundle.DeleteValueAddServiceRequest
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
@ -241,21 +239,15 @@ func CreateBundleOrderSignature(c *gin.Context) {
} }
// 签合同(金额 + 有效期) // 签合同(金额 + 有效期)
signContract, err := logic.SignContractV2(req.CustomerNum, bundleDetail.Contract, bundleDetail.Price+addTotalPrice, expirationDay, userInfo.Name, userInfo.IdNumber, userInfo.PlaceOfResidence) signContract, err := logic.SignContractV2(req.CustomerNum, bundleDetail.Contract, bundleDetail.Price+addTotalPrice, expirationDay)
if err != nil { if err != nil {
service.Error(c, err) service.Error(c, err)
return return
} }
if userInfo.InviterID != 0 && logic.CheckUserFirstOrder(userInfo.ID) {
req.InviterId = userInfo.InviterID
}
// 组装订单信息 // 组装订单信息
req = logic.BuildOrderRequest(req, userInfo, bundleDetail, addRecords, addTotalPrice, lastContractNo, signContract) req = logic.BuildOrderRequest(req, userInfo, bundleDetail, addRecords, addTotalPrice, lastContractNo, signContract)
// 校验发布平台
if len(req.PlatformIds) == 0 {
req.PlatformIds = []uint32{1, 4, 5}
}
// 创建订单 // 创建订单
res, err := service.BundleProvider.CreateOrderRecord(context.Background(), &req) res, err := service.BundleProvider.CreateOrderRecord(context.Background(), &req)
if err != nil { if err != nil {
@ -265,129 +257,7 @@ func CreateBundleOrderSignature(c *gin.Context) {
service.Success(c, res) service.Success(c, res)
return return
} }
func VerificationSignature(c *gin.Context) {
type VerificationSignature struct {
Signature bool `json:"signature"`
SignatureUrl string `json:"signature_url"`
}
res := VerificationSignature{Signature: false}
userInfo := login.GetUserInfoFromC(c)
// 添加用户信息验证
if userInfo.ID == 0 {
service.Success(c, res)
return
}
req := bundle.OrderRecordsDetailRequest{
CustomerID: strconv.FormatUint(userInfo.ID, 10),
}
records, err := service.BundleProvider.OrderRecordsDetail(c, &req)
if err != nil {
// 添加错误日志但继续返回false业务逻辑
service.Success(c, res)
return
}
// 优化空值判断链
if records == nil || records.OrderRecord == nil {
service.Success(c, res)
return
}
order := records.OrderRecord
customerID, err := strconv.ParseUint(order.CustomerID, 10, 64)
if err != nil || customerID != userInfo.ID {
service.Success(c, res)
return
}
//
//if order.Status != bundleModel.OrderPaid {
// service.Success(c, res)
// return
//}
expirationTime, err := time.Parse("2006-01-02 15:04:05", order.ExpirationTime)
if err != nil {
service.Success(c, res)
return
}
if expirationTime.Before(time.Now()) {
service.Success(c, res)
return
}
if order.ReSignature == 1 {
res.Signature = true
contract := ContractUrl
expirationDate := expirationTime.Format("2006-01-02")
signContract, err := logic.SignContractV2(userInfo.SubNum, contract, 0, expirationDate, userInfo.Name, userInfo.IdNumber, userInfo.PlaceOfResidence)
if err != nil {
service.Error(c, err)
return
}
res.SignatureUrl = signContract
}
service.Success(c, res)
}
func RestartSignature(c *gin.Context) {
userInfo := login.GetUserInfoFromC(c)
req := bundle.OrderRecordsDetailRequest{
CustomerID: strconv.FormatUint(userInfo.ID, 10),
}
records, err := service.BundleProvider.OrderRecordsDetail(c, &req)
if err != nil {
service.Error(c, errors.New("获取订单信息失败"))
return
}
// 优化空值判断链
if records == nil || records.OrderRecord == nil {
service.Error(c, errors.New("获取订单信息失败"))
return
}
order := records.OrderRecord
expirationTime, err := time.Parse("2006-01-02 15:04:05", order.ExpirationTime)
if err != nil {
service.Error(c, errors.New("获取订单过期日期错误"))
return
}
if expirationTime.Before(time.Now()) {
service.Error(c, errors.New("订单已过期"))
return
}
expirationDate := expirationTime.Format("2006-01-02")
if order.ReSignature == 2 {
service.Error(c, errors.New("订单无需重新签署"))
return
}
// 获取最后一次合同编号
lastContractNo, err := logic.GetLastContractNo()
if err != nil {
service.Error(c, err)
return
}
contract := ContractUrl
signContract, err := logic.SignContractV2(userInfo.SubNum, contract, 0, expirationDate, userInfo.Name, userInfo.IdNumber, userInfo.PlaceOfResidence)
if err != nil {
service.Error(c, err)
return
}
res, err := service.BundleProvider.ReSignTheContract(c, &bundle.ReSignTheContractRequest{
OrderNo: records.OrderRecord.OrderNo,
ContractNo: lastContractNo,
SignContract: signContract,
})
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func UpdateBundleOrderStatusPaid(c *gin.Context) { func UpdateBundleOrderStatusPaid(c *gin.Context) {
var req bundle.OrderRecord var req bundle.OrderRecord
@ -520,6 +390,7 @@ func OrderRecordsListV2(c *gin.Context) {
for id := range userIdSet { for id := range userIdSet {
userIds = append(userIds, id) userIds = append(userIds, id)
} }
userListResp, err := service.AccountFieeProvider.UserList(context.Background(), &accountFiee.UserListRequest{ userListResp, err := service.AccountFieeProvider.UserList(context.Background(), &accountFiee.UserListRequest{
Ids: userIds, Ids: userIds,
Domain: "app", Domain: "app",
@ -541,10 +412,6 @@ func OrderRecordsListV2(c *gin.Context) {
item.CustomerName = u.Name item.CustomerName = u.Name
item.TelNum = u.TelNum item.TelNum = u.TelNum
item.SubNum = u.SubNum item.SubNum = u.SubNum
if item.InviterId != 0 {
item.InviterCode = u.InviterCode
item.InviterName = u.InviterName
}
} }
} }
} }
@ -627,10 +494,6 @@ func OrderRecordsListDownload(c *gin.Context) {
item.CustomerName = u.Name item.CustomerName = u.Name
item.TelNum = u.TelNum item.TelNum = u.TelNum
item.SubNum = u.SubNum item.SubNum = u.SubNum
if item.InviterId != 0 {
item.InviterCode = u.InviterCode
item.InviterName = u.InviterName
}
} }
} }
} }
@ -655,7 +518,7 @@ func exportExcel(orderList []*bundle.OrderBundleRecordInfo) (*excelize.File, err
headers := []string{ headers := []string{
"套餐订单号", "套餐类型", "套餐付款状态", "艺人手机号", "用户编号", "艺人", "套餐订单创建时间", "套餐支付时间", "套餐金额", "套餐订单号", "套餐类型", "套餐付款状态", "艺人手机号", "用户编号", "艺人", "套餐订单创建时间", "套餐支付时间", "套餐金额",
"增值服务订单号", "增值税服务金额", "支付金额", "币种", "手续费", "增值订单创建时间", "增值付款状态", "邀请码", "邀请码所属人", "增值服务订单号", "增值税服务金额", "支付金额", "币种", "手续费", "增值订单创建时间", "增值付款状态",
} }
for i, h := range headers { for i, h := range headers {
cell := fmt.Sprintf("%s%d", string(rune('A'+i)), 1) cell := fmt.Sprintf("%s%d", string(rune('A'+i)), 1)
@ -689,8 +552,6 @@ func exportExcel(orderList []*bundle.OrderBundleRecordInfo) (*excelize.File, err
f.SetCellValue(sheetName, fmt.Sprintf("G%d", rowIndex), bundleInfo.BundleCreateAt) f.SetCellValue(sheetName, fmt.Sprintf("G%d", rowIndex), bundleInfo.BundleCreateAt)
f.SetCellValue(sheetName, fmt.Sprintf("H%d", rowIndex), bundleInfo.PayTime) f.SetCellValue(sheetName, fmt.Sprintf("H%d", rowIndex), bundleInfo.PayTime)
f.SetCellValue(sheetName, fmt.Sprintf("I%d", rowIndex), bundleInfo.Amount) f.SetCellValue(sheetName, fmt.Sprintf("I%d", rowIndex), bundleInfo.Amount)
f.SetCellValue(sheetName, fmt.Sprintf("Q%d", rowIndex), bundleInfo.InviterCode)
f.SetCellValue(sheetName, fmt.Sprintf("R%d", rowIndex), bundleInfo.InviterName)
if addCount > 0 { if addCount > 0 {
for i, add := range bundleInfo.AddBundleInfo { for i, add := range bundleInfo.AddBundleInfo {

View File

@ -99,15 +99,13 @@ const (
BundleUnBindingAddService = "套餐未绑定增值服务" BundleUnBindingAddService = "套餐未绑定增值服务"
) )
// 发布 //发布
const ( const (
UpdateWorkStatusFailed = "更新作品状态失败" UpdateWorkStatusFailed = "更新作品状态失败"
GetWorkDetailFailed = "获取作品详情失败" GetWorkDetailFailed = "获取作品详情失败"
) )
//用户套餐状态 //余量
// 余量
const ( const (
BundleExtendFailed = "套餐扩展失败" BundleExtendFailed = "套餐扩展失败"
BundleExtendRecordsListFailed = "套餐扩展记录列表查询失败" BundleExtendRecordsListFailed = "套餐扩展记录列表查询失败"
@ -124,13 +122,12 @@ const (
InsufficientBalance = "余量不足" InsufficientBalance = "余量不足"
) )
//用户套餐状态
const ( const (
BundleExpired = 1 //已过期 BundleExpired = 1
BundleNotExpired = 0 //未过期 BundleNotExpired = 0
) )
// 数据指标 //数据指标
const ( const (
MetricsBusinessFailed = "业务概览查询失败" MetricsBusinessFailed = "业务概览查询失败"
MetricsOperatingFailed = "运营数据查询失败" MetricsOperatingFailed = "运营数据查询失败"
@ -141,7 +138,7 @@ const (
BalanceMetricsExportFailed = "服务使用明细数据导出失败" BalanceMetricsExportFailed = "服务使用明细数据导出失败"
) )
// 素材库 //素材库
const ( const (
FileListFailed = "素材库列表查询失败" FileListFailed = "素材库列表查询失败"
FileUsageFailed = "素材库使用情况查询失败" FileUsageFailed = "素材库使用情况查询失败"
@ -159,7 +156,7 @@ const (
ERROR_OPEN_FILE = "打开文件错误" ERROR_OPEN_FILE = "打开文件错误"
) )
// 官网 //官网
const ( const (
CreateSecFilingFailed = "创建官方信息失败" CreateSecFilingFailed = "创建官方信息失败"
UpdateSecFilingFailed = "更新官方信息失败" UpdateSecFilingFailed = "更新官方信息失败"

View File

@ -1,180 +0,0 @@
package bundle
import (
"context"
"fonchain-fiee/api/bundle"
"fonchain-fiee/api/cast"
"fonchain-fiee/api/files"
"fonchain-fiee/api/governance"
"fonchain-fiee/api/order"
"fonchain-fiee/api/payment"
"fonchain-fiee/pkg/cache"
"fonchain-fiee/pkg/service"
"net/http"
"time"
"github.com/gin-gonic/gin"
)
// HealthCheck 健康检测接口
func HealthCheck(c *gin.Context) {
healthStatus := gin.H{
"status": "ok",
"timestamp": time.Now().Unix(),
"checks": make(map[string]interface{}),
}
// 检查 Redis 连接
redisStatus := "ok"
redisErr := ""
if cache.RedisClient != nil {
_, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
_, err := cache.RedisClient.Ping().Result()
if err != nil {
redisStatus = "failed"
redisErr = err.Error()
}
} else {
redisStatus = "failed"
redisErr = "Redis client is nil"
}
healthStatus["checks"].(map[string]interface{})["redis"] = gin.H{
"status": redisStatus,
"error": redisErr,
}
// 检查微服务连接(调用一个简单的服务方法)
serviceStatus := "ok"
serviceErr := ""
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
// 调用 BundleProvider 的简单方法进行健康检测
_, err := service.BundleProvider.GetBundleBalanceByUserId(ctx, &bundle.GetBundleBalanceByUserIdReq{
UserId: 0, // 使用一个不存在的用户ID只检测服务连通性
})
if err != nil {
// 检查是否是超时或连接错误
if ctx.Err() == context.DeadlineExceeded {
serviceStatus = "Bundle Service timeout"
serviceErr = "Service timeout"
} else {
// 其他错误(如业务错误)认为服务是可用的
serviceStatus = "ok"
serviceErr = ""
}
}
healthStatus["checks"].(map[string]interface{})["bundleService"] = gin.H{
"status": serviceStatus,
"error": serviceErr,
}
//调用 OrderProvider 的简单方法进行健康检测
_, err = service.OrderProvider.GetOrder(ctx, &order.CommonRequest{
ID: 0,
Domain: "",
SeriesUid: "", // 使用一个不存在的订单ID只检测服务连通性
})
if err != nil {
if ctx.Err() == context.DeadlineExceeded {
serviceStatus = "Order Service timeout"
serviceErr = "Service timeout"
} else {
// 其他错误(如业务错误)认为服务是可用的
serviceStatus = "ok"
serviceErr = ""
}
}
healthStatus["checks"].(map[string]interface{})["orderService"] = gin.H{
"status": serviceStatus,
"error": serviceErr,
}
//调用 FilesProvider 的简单方法进行健康检测
_, err = service.FilesProvider.List(ctx, &files.FileListReq{
Path: "/",
UserSpacePath: "/fiee",
Page: 1,
PageSize: 50,
})
if err != nil {
if ctx.Err() == context.DeadlineExceeded {
serviceStatus = "Filesbrowser Service timeout"
serviceErr = "Service timeout"
} else {
// 其他错误(如业务错误)认为服务是可用的
serviceStatus = "ok"
serviceErr = ""
}
}
healthStatus["checks"].(map[string]interface{})["filesbrowserService"] = gin.H{
"status": serviceStatus,
"error": serviceErr,
}
//调用 PaymentProvider 的简单方法进行健康检测
_, err = service.PaymentProvider.QueryPayByOutTradeNo(ctx, &payment.PayQueryRequest{
PayType: "2",
OutTradeNo: "1234567890",
})
if err != nil {
if ctx.Err() == context.DeadlineExceeded {
serviceStatus = "Payment Service timeout"
serviceErr = "Service timeout"
} else {
// 其他错误(如业务错误)认为服务是可用的
serviceStatus = "ok"
serviceErr = ""
}
}
healthStatus["checks"].(map[string]interface{})["paymentService"] = gin.H{
"status": serviceStatus,
"error": serviceErr,
}
//调用 CastProvider 的简单方法进行健康检测
_, err = service.CastProvider.WorkList(ctx, &cast.WorkListReq{
Page: 1,
PageSize: 10,
})
if err != nil {
if ctx.Err() == context.DeadlineExceeded {
serviceStatus = "Cast Service timeout"
serviceErr = "Service timeout"
} else {
// 其他错误(如业务错误)认为服务是可用的
serviceStatus = "ok"
serviceErr = ""
}
}
healthStatus["checks"].(map[string]interface{})["castService"] = gin.H{
"status": serviceStatus,
"error": serviceErr,
}
//调用 GovernanceProvider 的简单方法进行健康检测
_, err = service.GovernanceProvider.List(ctx, &governance.ListReq{
Page: 1,
PageSize: 10,
})
if err != nil {
if ctx.Err() == context.DeadlineExceeded {
serviceStatus = "Document Service timeout"
serviceErr = "Service timeout"
} else {
// 其他错误(如业务错误)认为服务是可用的
serviceStatus = "ok"
serviceErr = ""
}
}
healthStatus["checks"].(map[string]interface{})["documentService"] = gin.H{
"status": serviceStatus,
"error": serviceErr,
}
// 如果所有检查都通过,返回 200否则返回 503
httpStatus := http.StatusOK
if redisStatus != "ok" || serviceStatus != "ok" {
httpStatus = http.StatusServiceUnavailable
healthStatus["status"] = "degraded"
}
c.JSON(httpStatus, healthStatus)
}

View File

@ -63,24 +63,6 @@ func CheckUserOrder(userID uint64) error {
return nil return nil
} }
// 校验用户是否首次购买
func CheckUserFirstOrder(userID uint64) bool {
req := bundle.OrderRecordsDetailRequest{
CustomerID: strconv.FormatUint(userID, 10),
Status: 2,
}
records, _ := service.BundleProvider.OrderRecordsDetail(context.Background(), &req)
// 用户没有任何订单记录
if records.OrderRecord == nil {
return true
}
// 检查订单是否属于该用户
if records.OrderRecord.CustomerID != strconv.FormatUint(userID, 10) {
return true
}
return false
}
// 获取最后一次合同编号 // 获取最后一次合同编号
func GetLastContractNo() (string, error) { func GetLastContractNo() (string, error) {
records, err := service.BundleProvider.OrderRecordsList(context.Background(), &bundle.OrderRecordsRequest{ records, err := service.BundleProvider.OrderRecordsList(context.Background(), &bundle.OrderRecordsRequest{
@ -112,7 +94,6 @@ func BuildServiceRecords(req *bundle.OrderCreateRecord, bundleDetail *bundle.Bun
expirationDay string expirationDay string
addUidService = make(map[string]bool) addUidService = make(map[string]bool)
bundleUidService = make(map[string]bool) bundleUidService = make(map[string]bool)
foundExpiration = false
) )
// 分类权益 // 分类权益
@ -168,15 +149,12 @@ func BuildServiceRecords(req *bundle.OrderCreateRecord, bundleDetail *bundle.Bun
addRecords = append(addRecords, buildAddRecord(addService, uid, 0, num, 1)) addRecords = append(addRecords, buildAddRecord(addService, uid, 0, num, 1))
// 计算到期时间 // 计算到期时间
if !foundExpiration && addService.ServiceType == 5 { if addService.ServiceType == 5 {
expirationDay = calculateExpirationDate(time.Now(), num, addService.Unit) expirationDay = calculateExpirationDate(time.Now(), num, addService.Unit)
foundExpiration = true } else {
}
}
// 如果没有找到服务类型为5的使用默认值
if !foundExpiration {
expirationDay = time.Now().AddDate(0, 0, 7).Format("2006-01-02") expirationDay = time.Now().AddDate(0, 0, 7).Format("2006-01-02")
} }
}
return addRecords, addTotalPrice, expirationDay, nil return addRecords, addTotalPrice, expirationDay, nil
} }

View File

@ -8,13 +8,14 @@ import (
"fonchain-fiee/pkg/service/upload" "fonchain-fiee/pkg/service/upload"
"log" "log"
"os" "os"
"strconv"
"time" "time"
"github.com/signintech/gopdf" "github.com/signintech/gopdf"
"go.uber.org/zap" "go.uber.org/zap"
) )
func SignContractV2(customerNum, contract string, price float32, expirationDate string, nickName string, idCard string, address string) (outputUrl string, err error) { func SignContractV2(customerNum, contract string, price float32, expirationDate string) (outputUrl string, err error) {
filePath := model.MediaPath + customerNum + time.Now().Format("20060102150405") + ".pdf" filePath := model.MediaPath + customerNum + time.Now().Format("20060102150405") + ".pdf"
downloadFileErr := DownloadFile(filePath, contract) downloadFileErr := DownloadFile(filePath, contract)
if downloadFileErr != nil { if downloadFileErr != nil {
@ -31,7 +32,7 @@ func SignContractV2(customerNum, contract string, price float32, expirationDate
return outputUrl, errors.New(common.ErrorInsertSignature) return outputUrl, errors.New(common.ErrorInsertSignature)
}*/ }*/
signErr := InsertSignatureV2(filePath, signFile, price, expirationDate, nickName, idCard, address) signErr := InsertSignatureV2(filePath, signFile, price, expirationDate)
if signErr != nil { if signErr != nil {
zap.L().Error("insert signature error: ", zap.Error(signErr)) zap.L().Error("insert signature error: ", zap.Error(signErr))
return outputUrl, errors.New(common.ErrorInsertSignature) return outputUrl, errors.New(common.ErrorInsertSignature)
@ -46,7 +47,7 @@ func SignContractV2(customerNum, contract string, price float32, expirationDate
return outputUrl, nil return outputUrl, nil
} }
func InsertSignatureV2(templatePath, outputPath string, price float32, expirationDate string, nickName string, idCard string, address string) error { func InsertSignatureV2(templatePath, outputPath string, price float32, expirationDate string) error {
fmt.Println("================================templatePath:", templatePath) fmt.Println("================================templatePath:", templatePath)
fmt.Println("================================outputPath:", outputPath) fmt.Println("================================outputPath:", outputPath)
fmt.Println("================================price:", price) fmt.Println("================================price:", price)
@ -64,9 +65,9 @@ func InsertSignatureV2(templatePath, outputPath string, price float32, expiratio
totalPages := pdf.GetNumberOfPages() totalPages := pdf.GetNumberOfPages()
fmt.Printf("模板文件的总页数: %d\n", totalPages) fmt.Printf("模板文件的总页数: %d\n", totalPages)
onePage := 1 pricePage := 3
sixPage := 6
tenPage := 10 limitTimePage := 4
tffErr := pdf.AddTTFFont("simfang", "./data/simfang.ttf") tffErr := pdf.AddTTFFont("simfang", "./data/simfang.ttf")
if tffErr != nil { if tffErr != nil {
@ -81,54 +82,42 @@ func InsertSignatureV2(templatePath, outputPath string, price float32, expiratio
log.Fatalf("设置字体失败: %v", err) log.Fatalf("设置字体失败: %v", err)
} }
// 填 金额
pdf.SetPage(pricePage)
pdf.SetX(383)
pdf.SetY(351)
pdf.Cell(nil, strconv.FormatFloat(float64(price), 'f', 2, 64))
pdf.SetX(345)
pdf.SetY(383)
pdf.Cell(nil, strconv.FormatFloat(float64(price), 'f', 2, 64))
// 写 有效期
pdf.SetPage(limitTimePage)
// 英文格式的时间 // 英文格式的时间
parsedTime, err := time.Parse("2006-01-02", expirationDate) parsedTime, err := time.Parse("2006-01-02", expirationDate)
if err != nil { if err != nil {
fmt.Println("时间解析错误: %v", err) panic("日期格式错误!")
fmt.Println(expirationDate)
return errors.New("时间解析错误")
} }
year := parsedTime.Format("2006") // "2006" year := parsedTime.Format("2006") // "2006"
month := parsedTime.Format("01") // "01" month := parsedTime.Format("01") // "01"
day := parsedTime.Format("02") // "02" day := parsedTime.Format("02") // "02"
// 填 第一页 日期-姓名-身份证号 pdf.SetX(160)
pdf.SetPage(onePage) pdf.SetY(387)
pdf.SetX(232) pdf.Cell(nil, expirationDate)
pdf.SetY(152)
pdf.Cell(nil, year)
pdf.SetX(279)
pdf.SetY(152)
pdf.Cell(nil, month)
pdf.SetX(313)
pdf.SetY(152)
pdf.Cell(nil, day)
pdf.SetX(370)
pdf.SetY(152)
pdf.Cell(nil, nickName)
pdf.SetX(175)
pdf.SetY(170)
pdf.Cell(nil, idCard)
//pdf.Cell(nil, strconv.FormatFloat(float64(price), 'f', 2, 64))
// 写 第六页 日期 pdf.SetX(330)
pdf.SetPage(sixPage) pdf.SetY(403)
pdf.SetX(343)
pdf.SetY(138)
pdf.Cell(nil, year) pdf.Cell(nil, year)
pdf.SetX(401)
pdf.SetY(138) pdf.SetX(396)
pdf.SetY(403)
pdf.Cell(nil, month) pdf.Cell(nil, month)
pdf.SetX(447)
pdf.SetY(138) pdf.SetX(443)
pdf.SetY(403)
pdf.Cell(nil, day) pdf.Cell(nil, day)
// 写 第十页 地址 姓名 邮件
pdf.SetPage(tenPage)
pdf.SetX(195)
pdf.SetY(253)
pdf.Cell(nil, address)
pdf.SetX(215)
pdf.SetY(270)
pdf.Cell(nil, nickName)
// 生成新的 PDF // 生成新的 PDF
if err = pdf.WritePdf(outputPath); err != nil { if err = pdf.WritePdf(outputPath); err != nil {
//zap.L().Error("WritePdf err", zap.Error(err)) //zap.L().Error("WritePdf err", zap.Error(err))

View File

@ -253,16 +253,14 @@ func AutoCreateUserAndOrder(c *gin.Context) {
reportUuid := "" reportUuid := ""
accountUuid := "" accountUuid := ""
durationUuid := "" durationUuid := ""
bundleVideoUuid := ""
if config.AppConfig.System.AppMode == "prod" { if config.AppConfig.System.AppMode == "prod" {
BundleName = "全球尊享版" BundleName = "全球尊享版"
BundleUuid = "ac4c99c2951c2fcdbf417928d321554d" BundleUuid = "ac4c99c2951c2fcdbf417928d321554d"
videoUuid = "355aae784d77280197c92ff56733459d" // 增值视频 videoUuid = "a29a1fa2862b2cdda1377b19066c8eb7"
textAndImagesUuid = "41a7753d210d22f8972dc273ff1360c4" // 套餐图文 textAndImagesUuid = "dfba176a40ae2d23aa4ef9b30b646bc8"
reportUuid = "069497de55852c24a3b0f702c1250900" // 套餐数据 reportUuid = "1727557a85c92957a3e3332d18c713aa"
accountUuid = "1e04078d2a8824d18be1c281bc3167a8" // 套餐账号 accountUuid = "e1cc219e4f682b3d8cb85929e540a0de"
durationUuid = "e3ad8f15aa022b12afe47170c9051db9" // 套餐时长 durationUuid = "f002449ac57a2e71b0673da938c0354e"
bundleVideoUuid = "fdbef018707e2a8ebc82a22e257abaff" // 套餐视频
} else { } else {
BundleName = "测试导入全球尊享版" BundleName = "测试导入全球尊享版"
BundleUuid = "5e84f86cb7f92a4ab785271e4a383aa5" BundleUuid = "5e84f86cb7f92a4ab785271e4a383aa5"
@ -277,7 +275,6 @@ func AutoCreateUserAndOrder(c *gin.Context) {
var TotalPrice float32 var TotalPrice float32
var expirationDay string var expirationDay string
numMap := make(map[string]int32) numMap := make(map[string]int32)
numMap["1500.00"] = 0
numMap["3150.00"] = 3 numMap["3150.00"] = 3
numMap["4200.00"] = 5 numMap["4200.00"] = 5
numMap["5600.00"] = 8 numMap["5600.00"] = 8
@ -290,7 +287,6 @@ func AutoCreateUserAndOrder(c *gin.Context) {
numMap["18300.00"] = 40 numMap["18300.00"] = 40
numMap["26700.00"] = 60 numMap["26700.00"] = 60
incrMap := make(map[string]float32) incrMap := make(map[string]float32)
incrMap["1500.00"] = 0
incrMap["3150.00"] = 1650 incrMap["3150.00"] = 1650
incrMap["4200.00"] = 2700 incrMap["4200.00"] = 2700
incrMap["5600.00"] = 4100 incrMap["5600.00"] = 4100
@ -309,21 +305,7 @@ func AutoCreateUserAndOrder(c *gin.Context) {
f64, err := strconv.ParseFloat(unfinishInfo.OrderPayAmount, 32) f64, err := strconv.ParseFloat(unfinishInfo.OrderPayAmount, 32)
TotalPrice = float32(f64) TotalPrice = float32(f64)
addRecords = append(addRecords, addRecords = append(addRecords,
&bundle.OrderCreateAddRecord{ // 套餐视频 &bundle.OrderCreateAddRecord{
ServiceType: 1,
ValueUid: bundleVideoUuid,
CurrencyType: 2, //美元
Amount: 0, //增值服务金额
Num: 24,
Unit: "个",
Source: 1,
PaymentStatus: 1,
HandlingFee: unfinishInfo.OrderFeeAmount,
EquityType: 1,
QuotaType: 2,
QuotaValue: 2,
},
&bundle.OrderCreateAddRecord{ //视频增值
ServiceType: 1, ServiceType: 1,
ValueUid: videoUuid, ValueUid: videoUuid,
CurrencyType: 2, //美元 CurrencyType: 2, //美元
@ -333,8 +315,6 @@ func AutoCreateUserAndOrder(c *gin.Context) {
Source: 1, Source: 1,
PaymentStatus: 1, PaymentStatus: 1,
HandlingFee: unfinishInfo.OrderFeeAmount, HandlingFee: unfinishInfo.OrderFeeAmount,
EquityType: 2,
QuotaType: 1,
}, &bundle.OrderCreateAddRecord{ //图文 }, &bundle.OrderCreateAddRecord{ //图文
ServiceType: 2, ServiceType: 2,
ValueUid: textAndImagesUuid, ValueUid: textAndImagesUuid,
@ -345,9 +325,6 @@ func AutoCreateUserAndOrder(c *gin.Context) {
Source: 1, Source: 1,
PaymentStatus: 1, PaymentStatus: 1,
HandlingFee: unfinishInfo.OrderFeeAmount, HandlingFee: unfinishInfo.OrderFeeAmount,
EquityType: 1,
QuotaType: 2,
QuotaValue: 10,
}, &bundle.OrderCreateAddRecord{ //数据报表 }, &bundle.OrderCreateAddRecord{ //数据报表
ServiceType: 3, ServiceType: 3,
ValueUid: reportUuid, ValueUid: reportUuid,
@ -358,40 +335,32 @@ func AutoCreateUserAndOrder(c *gin.Context) {
Source: 1, Source: 1,
PaymentStatus: 1, PaymentStatus: 1,
HandlingFee: unfinishInfo.OrderFeeAmount, HandlingFee: unfinishInfo.OrderFeeAmount,
EquityType: 1,
QuotaType: 2,
QuotaValue: 1,
}, &bundle.OrderCreateAddRecord{ //账号数 }, &bundle.OrderCreateAddRecord{ //账号数
ServiceType: 4, ServiceType: 4,
ValueUid: accountUuid, ValueUid: accountUuid,
CurrencyType: 2, //美元 CurrencyType: 2, //美元
Amount: 0, //增值服务金额 Amount: 0, //增值服务金额
Num: 5, Num: 3,
Unit: "个", Unit: "个",
Source: 1, Source: 1,
PaymentStatus: 1, PaymentStatus: 1,
HandlingFee: unfinishInfo.OrderFeeAmount, HandlingFee: unfinishInfo.OrderFeeAmount,
EquityType: 1,
QuotaType: 1,
}, &bundle.OrderCreateAddRecord{ //可用时长 }, &bundle.OrderCreateAddRecord{ //可用时长
ServiceType: 5, ServiceType: 5,
ValueUid: durationUuid, ValueUid: durationUuid,
CurrencyType: 2, //美元 CurrencyType: 2, //美元
Amount: 0, //增值服务金额 Amount: 0, //增值服务金额
Num: 1, Num: 10,
Unit: "年", Unit: "年",
Source: 1, Source: 1,
PaymentStatus: 1, PaymentStatus: 1,
HandlingFee: unfinishInfo.OrderFeeAmount, HandlingFee: unfinishInfo.OrderFeeAmount,
EquityType: 1,
QuotaType: 1,
}, },
) )
// 当前 未将 签名 写入合同中 todo 金额和有效时间待修改 // 当前 未将 签名 写入合同中 todo 金额和有效时间待修改
contract := ContractUrl contract := "https://e-cdn.fontree.cn/fonchain-main/prod/file/saas/contract/template-25032801.pdf"
expirationDay = t.AddDate(1, 0, 0).Format("2006-01-02") expirationDay = t.AddDate(1, 0, 0).Format("2006-01-02")
signContract, signContractErr := logic.SignContractV2(userReq.UserNum, contract, TotalPrice, expirationDay)
signContract, signContractErr := logic.SignContractV2(userReq.UserNum, contract, TotalPrice, expirationDay, unfinishInfo.UserName, unfinishInfo.CardNum, unfinishInfo.PlaceOfResidence)
if signContractErr != nil { if signContractErr != nil {
service.Error(c, signContractErr) service.Error(c, signContractErr)
return return
@ -418,7 +387,6 @@ func AutoCreateUserAndOrder(c *gin.Context) {
orderReq.OrderNo = unfinishInfo.OrderNo orderReq.OrderNo = unfinishInfo.OrderNo
//expirationTime := t.AddDate(10, 0, 0).Format("2006-01-02 15:04:05") //expirationTime := t.AddDate(10, 0, 0).Format("2006-01-02 15:04:05")
//orderReq.ExpirationTime = expirationTime //orderReq.ExpirationTime = expirationTime
orderReq.PlatformIds = []uint32{1, 4, 5}
_, err = service.BundleProvider.CreateOrderRecord(context.Background(), &orderReq) _, err = service.BundleProvider.CreateOrderRecord(context.Background(), &orderReq)
if err != nil { if err != nil {
service.Error(c, err) service.Error(c, err)

File diff suppressed because it is too large Load Diff

View File

@ -61,7 +61,7 @@ func UploadMediaByURL(ctx context.Context, fileURL, fileName, description string
if fileURL == "" { if fileURL == "" {
return nil, errors.New("文件URL不能为空") return nil, errors.New("文件URL不能为空")
} }
/*ok, err := VerifyMediaURL(ctx, fileURL) // 检测文件是否OK 关闭遇到了检测OK 发布不OK的 不相信API了 ok, err := VerifyMediaURL(ctx, fileURL)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -73,11 +73,11 @@ func UploadMediaByURL(ctx context.Context, fileURL, fileName, description string
Description: "", Description: "",
IsAs: false, IsAs: false,
}, nil }, nil
}*/ }
// 下载文件到临时目录 // 下载文件到临时目录
tempFile, fileSize, err := downloadFile(ctx, fileURL) tempFile, fileSize, err := downloadFile(ctx, fileURL)
if err != nil { if err != nil {
return nil, fmt.Errorf("下载文件失败") return nil, fmt.Errorf("下载文件失败: %v", err)
} }
defer os.Remove(tempFile) // 清理临时文件 defer os.Remove(tempFile) // 清理临时文件
@ -87,34 +87,14 @@ func UploadMediaByURL(ctx context.Context, fileURL, fileName, description string
if fileName == "" { if fileName == "" {
fileName = filepath.Base(fileURL) fileName = filepath.Base(fileURL)
} }
var result *UploadMediaResponse
// 根据文件大小选择上传方式 // 根据文件大小选择上传方式
if fileSize < maxSmallFileSize { if fileSize < maxSmallFileSize {
zap.L().Info("使用小文件上传方式", zap.Int64("fileSize", fileSize)) zap.L().Info("使用小文件上传方式", zap.Int64("fileSize", fileSize))
result, err = uploadSmallMedia(ctx, tempFile, apiKey, fileName, description) return uploadSmallMedia(ctx, tempFile, apiKey, fileName, description)
} else { }
zap.L().Info("使用大文件上传方式", zap.Int64("fileSize", fileSize)) zap.L().Info("使用大文件上传方式", zap.Int64("fileSize", fileSize))
result, err = uploadLargeMedia(ctx, tempFile, apiKey, fileName, description) return uploadLargeMedia(ctx, tempFile, apiKey, fileName, description)
}
if err != nil {
return nil, err
}
// 上传后等待并验证 URL 是否可访问
maxRetries := 5
var ok bool
for i := 0; i < maxRetries; i++ {
time.Sleep(2 * time.Second)
ok, err = VerifyMediaURL(ctx, result.URL)
if err == nil && ok {
zap.L().Info("媒体URL验证成功", zap.String("url", result.URL), zap.Int("retry", i))
return result, nil
}
zap.L().Warn("媒体URL验证失败重试中",
zap.String("url", result.URL),
zap.Int("retry", i+1),
zap.Int("maxRetries", maxRetries))
}
return nil, fmt.Errorf("媒体URL验证失败")
} }
// downloadFile 下载文件到临时目录 // downloadFile 下载文件到临时目录
@ -132,7 +112,7 @@ func downloadFile(ctx context.Context, fileURL string) (string, int64, error) {
defer resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
return "", 0, fmt.Errorf("下载文件失败") return "", 0, fmt.Errorf("下载文件失败HTTP状态码: %d", resp.StatusCode)
} }
// 创建临时文件 // 创建临时文件
@ -156,7 +136,7 @@ func downloadFile(ctx context.Context, fileURL string) (string, int64, error) {
func uploadSmallMedia(ctx context.Context, filePath, apiKey, fileName, description string) (*UploadMediaResponse, error) { func uploadSmallMedia(ctx context.Context, filePath, apiKey, fileName, description string) (*UploadMediaResponse, error) {
file, err := os.Open(filePath) file, err := os.Open(filePath)
if err != nil { if err != nil {
return nil, fmt.Errorf("打开文件失败") return nil, fmt.Errorf("打开文件失败: %v", err)
} }
defer file.Close() defer file.Close()
@ -198,23 +178,23 @@ func uploadSmallMedia(ctx context.Context, filePath, apiKey, fileName, descripti
client := &http.Client{Timeout: 10 * time.Minute} client := &http.Client{Timeout: 10 * time.Minute}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return nil, fmt.Errorf("请求失败") return nil, fmt.Errorf("请求失败: %v", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
respBody, err := io.ReadAll(resp.Body) respBody, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return nil, fmt.Errorf("读取响应失败") return nil, fmt.Errorf("读取响应失败: %v", err)
} }
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
zap.L().Error("上传小文件失败", zap.Int("statusCode", resp.StatusCode), zap.String("response", string(respBody))) zap.L().Error("上传小文件失败", zap.Int("statusCode", resp.StatusCode), zap.String("response", string(respBody)))
return nil, fmt.Errorf("上传失败") return nil, fmt.Errorf("上传失败: HTTP %d, %s", resp.StatusCode, string(respBody))
} }
var result UploadMediaResponse var result UploadMediaResponse
if err := json.Unmarshal(respBody, &result); err != nil { if err := json.Unmarshal(respBody, &result); err != nil {
return nil, fmt.Errorf("解析响应失败") return nil, fmt.Errorf("解析响应失败: %v", err)
} }
zap.L().Info("小文件上传成功", zap.Any("response", result)) zap.L().Info("小文件上传成功", zap.Any("response", result))
@ -232,7 +212,7 @@ func uploadLargeMedia(ctx context.Context, filePath, apiKey, fileName, descripti
// Step 1: 获取上传URL // Step 1: 获取上传URL
uploadURLResp, err := getUploadURL(ctx, apiKey, fileName, ext) uploadURLResp, err := getUploadURL(ctx, apiKey, fileName, ext)
if err != nil { if err != nil {
return nil, fmt.Errorf("获取上传URL失败") return nil, fmt.Errorf("获取上传URL失败: %v", err)
} }
zap.L().Info("获取上传URL成功", zap.Any("uploadURLResp", uploadURLResp)) zap.L().Info("获取上传URL成功", zap.Any("uploadURLResp", uploadURLResp))
@ -240,14 +220,14 @@ func uploadLargeMedia(ctx context.Context, filePath, apiKey, fileName, descripti
// Step 2: 上传文件到presigned URL // Step 2: 上传文件到presigned URL
file, err := os.Open(filePath) file, err := os.Open(filePath)
if err != nil { if err != nil {
return nil, fmt.Errorf("打开文件失败") return nil, fmt.Errorf("打开文件失败: %v", err)
} }
defer file.Close() defer file.Close()
// 获取文件大小 // 获取文件大小
fileInfo, err := file.Stat() fileInfo, err := file.Stat()
if err != nil { if err != nil {
return nil, fmt.Errorf("获取文件信息失败") return nil, fmt.Errorf("获取文件信息失败: %v", err)
} }
fileSize := fileInfo.Size() fileSize := fileInfo.Size()
@ -262,14 +242,14 @@ func uploadLargeMedia(ctx context.Context, filePath, apiKey, fileName, descripti
client := &http.Client{Timeout: 30 * time.Minute} client := &http.Client{Timeout: 30 * time.Minute}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return nil, fmt.Errorf("上传文件失败") return nil, fmt.Errorf("上传文件失败: %v", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
respBody, _ := io.ReadAll(resp.Body) respBody, _ := io.ReadAll(resp.Body)
zap.L().Error("上传大文件失败", zap.Int("statusCode", resp.StatusCode), zap.String("response", string(respBody))) zap.L().Error("上传大文件失败", zap.Int("statusCode", resp.StatusCode), zap.String("response", string(respBody)))
return nil, fmt.Errorf("上传失败") return nil, fmt.Errorf("上传失败: HTTP %d", resp.StatusCode)
} }
zap.L().Info("大文件上传成功") zap.L().Info("大文件上传成功")
@ -310,12 +290,12 @@ func getUploadURL(ctx context.Context, apiKey, fileName, contentType string) (*U
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
zap.L().Error("获取上传URL失败", zap.Int("statusCode", resp.StatusCode), zap.String("response", string(respBody))) zap.L().Error("获取上传URL失败", zap.Int("statusCode", resp.StatusCode), zap.String("response", string(respBody)))
return nil, fmt.Errorf("获取上传URL失败了") return nil, fmt.Errorf("获取上传URL失败: HTTP %d, %s", resp.StatusCode, string(respBody))
} }
var result UploadURLResponse var result UploadURLResponse
if err := json.Unmarshal(respBody, &result); err != nil { if err := json.Unmarshal(respBody, &result); err != nil {
return nil, fmt.Errorf("解析响应失败") return nil, fmt.Errorf("解析响应失败: %v", err)
} }
return &result, nil return &result, nil
@ -353,23 +333,19 @@ func SendMessage(ctx *gin.Context) {
service.Error(ctx, err) service.Error(ctx, err)
return return
} }
if req.RecipientId == "" { mediaUserInfo, err := GetMediaInfo(req.MediaUserID)
service.Error(ctx, errors.New("请选择接收者"))
return
}
mediaUserInfo, err := GetMediaInfo(req.MediaAccountUuid)
if err != nil { if err != nil {
service.Error(ctx, err) service.Error(ctx, err)
return return
} }
var platformName = modelCast.PlatformNameKv[req.PlatformID] var platformName = modelCast.PlatformNameKv[mediaUserInfo.PlatformID]
if platformName != "facebook" && platformName != "instagram" && platformName != "twitter" { if platformName != "facebook" && platformName != "instagram" && platformName != "twitter" {
service.Error(ctx, errors.New("不支持的媒体")) service.Error(ctx, errors.New("不支持的媒体"))
return return
} }
sendResp, err := service.AyrshareProvider.SendMessage(context.Background(), &aryshare.SendMessageRequest{ sendResp, err := service.AyrshareProvider.SendMessage(context.Background(), &aryshare.SendMessageRequest{
Platform: platformName, Platform: platformName,
RecipientId: req.RecipientId, RecipientId: mediaUserInfo.AsInfo.AsID,
Message: req.Message, Message: req.Message,
MediaUrls: []string{}, MediaUrls: []string{},
ProfileKey: mediaUserInfo.AsInfo.ProfileKey, ProfileKey: mediaUserInfo.AsInfo.ProfileKey,
@ -394,7 +370,7 @@ func GetMessage(ctx *gin.Context) {
service.Error(ctx, err) service.Error(ctx, err)
return return
} }
mediaUserInfo, err := GetMediaInfo(req.MediaAccountUuid) mediaUserInfo, err := GetMediaInfo(req.MediaUserID)
if err != nil { if err != nil {
service.Error(ctx, err) service.Error(ctx, err)
return return
@ -450,16 +426,15 @@ func PostComment(ctx *gin.Context) {
service.Error(ctx, err) service.Error(ctx, err)
return return
} }
commentReq := &aryshare.PostCommentRequest{
commentResp, err := service.AyrshareProvider.PostComment(context.Background(), &aryshare.PostCommentRequest{
Id: req.PublishMediaID, Id: req.PublishMediaID,
Comment: req.Comment, Comment: req.Comment,
Platforms: []string{modelCast.PlatformNameKv[uint32(req.PlatformID)]}, Platforms: []string{modelCast.PlatformNameKv[uint32(req.PlatformID)]},
SearchPlatformId: false, SearchPlatformId: true,
MediaUrls: nil, MediaUrls: nil,
ProfileKey: artistInfo.ProfileKey, ProfileKey: artistInfo.ProfileKey,
} })
zap.L().Info("发布评论", zap.Any("commentReq", commentReq))
commentResp, err := service.AyrshareProvider.PostComment(context.Background(), commentReq)
if err != nil { if err != nil {
zap.L().Error("发布评论异常", zap.Error(err), zap.Any("artistInfo", artistInfo)) zap.L().Error("发布评论异常", zap.Error(err), zap.Any("artistInfo", artistInfo))
service.Error(ctx, errors.New("发布评论异常")) service.Error(ctx, errors.New("发布评论异常"))

View File

@ -1,40 +0,0 @@
package cast
import (
"context"
"fonchain-fiee/api/cast"
"fonchain-fiee/pkg/service"
)
func CheckImage(workUuid string) error {
detailResp, err := service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{WorkUuid: workUuid})
if err != nil {
return err
}
if detailResp.CoverUrl == "" {
return nil
}
if detailResp.WorkCategory == 1 {
return nil
}
resourceResp, err := service.CastProvider.WorkResource(context.Background(), &cast.WorkResourceReq{WorkUuid: workUuid})
if err != nil {
return err
}
if detailResp.CoverUrl == resourceResp.OldCoverUrl {
return nil
}
mediaUrls, err := ProcessImg([]string{detailResp.CoverUrl})
if err != nil {
return err
}
if len(mediaUrls) > 0 {
_, _ = service.CastProvider.UpdateWorkResource(context.Background(), &cast.UpdateWorkResourceReq{
Uuid: "",
WorkUuid: detailResp.WorkUuid,
OldCoverUrl: detailResp.CoverUrl,
NewCoverUrl: mediaUrls[0],
})
}
return nil
}

View File

@ -44,32 +44,24 @@ func MediaUserList(ctx *gin.Context) {
service.Error(ctx, err) service.Error(ctx, err)
return return
} }
if req.NeedStats {
var statResp *bundle.ArtistUploadStatsResponse var statResp *bundle.ArtistUploadStatsResponse
zap.L().Info("MediaUserList 1") if req.NeedStats {
//取出艺人num
var artistSubNums []string
for _, v := range resp.Data { for _, v := range resp.Data {
artistSubNums = append(artistSubNums, v.ArtistSubNum)
}
statResp, err = service.BundleProvider.GetArtistUploadStatsList(context.Background(), &bundle.TaskQueryRequest{ statResp, err = service.BundleProvider.GetArtistUploadStatsList(context.Background(), &bundle.TaskQueryRequest{
Keyword: "", Keyword: v.ArtistPhone,
Page: 0, Page: 0,
PageSize: 0, PageSize: 0,
SortBy: "", SortBy: "",
SortType: "", SortType: "",
LastTaskAssignee: "", LastTaskAssignee: "",
SubNums: artistSubNums, SubNums: nil,
}) })
zap.L().Info("MediaUserList 2")
if err != nil { if err != nil {
service.Error(ctx, err) service.Error(ctx, errors.New("查询艺人数据错误"))
return return
} }
for _, v := range resp.Data { if statResp != nil && len(statResp.Items) > 0 {
for _, vv := range statResp.Items { info := statResp.Items[0]
if v.ArtistSubNum == vv.SubNum {
info := vv
// "pendingVideoCount": 10, // 待上传视频数 "uploadedVideoCount": 25, // 已上传视频数 "releasedVideoTotal": 35, // 已释放视频总数 // "pendingVideoCount": 10, // 待上传视频数 "uploadedVideoCount": 25, // 已上传视频数 "releasedVideoTotal": 35, // 已释放视频总数
//"pendingPostCount": 14, // 待上传图文数 "uploadedPostCount": 21, // 已上传图文数 "releasedPostTotal": 35, // 已释放图文总数 //"pendingPostCount": 14, // 待上传图文数 "uploadedPostCount": 21, // 已上传图文数 "releasedPostTotal": 35, // 已释放图文总数
v.PendingVideoCount = info.PendingVideoCount v.PendingVideoCount = info.PendingVideoCount
@ -81,8 +73,6 @@ func MediaUserList(ctx *gin.Context) {
} }
} }
} }
}
zap.L().Info("MediaUserList 3")
go func() { go func() {
for _, v := range resp.Data { for _, v := range resp.Data {
_ = SyncAsAuth(v.ArtistUuid) _ = SyncAsAuth(v.ArtistUuid)
@ -169,7 +159,7 @@ func UpdateMediaAccount(ctx *gin.Context) {
} }
if userResp != nil && len(userResp.Data) > 0 { if userResp != nil && len(userResp.Data) > 0 {
for _, v := range userResp.Data { for _, v := range userResp.Data {
if v.PlatformID == uint32(req.PlatformID) && v.Expired == 1 { if v.PlatformID == uint32(req.PlatformID) {
service.Error(ctx, errors.New("账号已存在")) service.Error(ctx, errors.New("账号已存在"))
return return
} }
@ -258,10 +248,6 @@ func OAuthAccount(ctx *gin.Context) {
service.Error(ctx, errors.New("未找到该账号")) service.Error(ctx, errors.New("未找到该账号"))
return return
} }
if mediaResp.Data[0].Expired != 1 {
service.Error(ctx, errors.New("账号已过期"))
return
}
if err = SyncAsAuth(mediaResp.Data[0].ArtistUuid); err != nil { if err = SyncAsAuth(mediaResp.Data[0].ArtistUuid); err != nil {
service.Error(ctx, err) service.Error(ctx, err)
return return
@ -329,7 +315,6 @@ func OAuth2Callback(ctx *gin.Context) {
service.Error(ctx, errors.New(e.GetMsg(e.InvalidParams))) service.Error(ctx, errors.New(e.GetMsg(e.InvalidParams)))
return return
} }
req.State = state
zap.L().Info("OAuth2Callback", zap.Any("req", req), zap.Any("code", code), zap.Any("state", state)) zap.L().Info("OAuth2Callback", zap.Any("req", req), zap.Any("code", code), zap.Any("state", state))
_, err := service.CastProvider.OAuthCodeToToken(ctx, req) _, err := service.CastProvider.OAuthCodeToToken(ctx, req)
if err != nil { if err != nil {
@ -375,7 +360,6 @@ func AsOAuth2Callback(ctx *gin.Context) {
func SyncAsAuth(artistUuid string) error { func SyncAsAuth(artistUuid string) error {
resp, err := service.CastProvider.GetArtist(context.Background(), &cast.GetArtistReq{ArtistUuid: artistUuid}) resp, err := service.CastProvider.GetArtist(context.Background(), &cast.GetArtistReq{ArtistUuid: artistUuid})
if err != nil { if err != nil {
zap.L().Error("SyncAsAuth error", zap.Error(err))
return errors.New("获取艺人信息错误") return errors.New("获取艺人信息错误")
} }
if resp == nil || resp.ArtistInfo == nil || resp.ArtistInfo.ProfileKey == "" { if resp == nil || resp.ArtistInfo == nil || resp.ArtistInfo.ProfileKey == "" {
@ -386,7 +370,6 @@ func SyncAsAuth(artistUuid string) error {
InstagramDetails: true, InstagramDetails: true,
}) })
if err != nil { if err != nil {
zap.L().Error("SyncAsAuth error", zap.Error(err))
return errors.New("获取艺人绑定信息错误") return errors.New("获取艺人绑定信息错误")
} }
authReq := &cast.UpdateOAuthReq{Data: make([]*cast.UpdateOAuthReq_Info, 0)} authReq := &cast.UpdateOAuthReq{Data: make([]*cast.UpdateOAuthReq_Info, 0)}
@ -413,14 +396,10 @@ func SyncAsAuth(artistUuid string) error {
if platformIDENUM == cast.PlatformIDENUM_UNKNOWN { if platformIDENUM == cast.PlatformIDENUM_UNKNOWN {
continue continue
} }
asID := v.Id
if platformIDENUM == cast.PlatformIDENUM_BULESKY && asID == "" {
asID = v.Username
}
authReq.Data = append(authReq.Data, &cast.UpdateOAuthReq_Info{ authReq.Data = append(authReq.Data, &cast.UpdateOAuthReq_Info{
ArtistUuid: artistUuid, ArtistUuid: artistUuid,
PlatformID: platformIDENUM, PlatformID: platformIDENUM,
AsID: asID, AsID: v.Id,
PlatformUserName: v.Username, PlatformUserName: v.Username,
AutInfo: string(asInfoB), AutInfo: string(asInfoB),
}) })
@ -661,7 +640,6 @@ func ImportMediaAccount(ctx *gin.Context) {
excelSetRemark(excelData, line, fmt.Sprintf("%s:%s", blueskyName, err.Error())) excelSetRemark(excelData, line, fmt.Sprintf("%s:%s", blueskyName, err.Error()))
} }
} }
_ = CheckAsProfile(subInfoResp)
} }
// 保存Excel文件到磁盘 // 保存Excel文件到磁盘
resultPath := fmt.Sprintf("./runtime/media/%s", fileName) resultPath := fmt.Sprintf("./runtime/media/%s", fileName)

View File

@ -1,440 +0,0 @@
package cast
import (
"context"
"errors"
"fmt"
"fonchain-fiee/api/aryshare"
"fonchain-fiee/api/cast"
"fonchain-fiee/cmd/config"
"fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/utils"
"math/rand"
"path/filepath"
"strings"
"time"
"github.com/gin-gonic/gin"
"github.com/xuri/excelize/v2"
"go.uber.org/zap"
"google.golang.org/protobuf/types/known/emptypb"
)
// UpdateCastTag 更新话题标签
func UpdateCastTag(ctx *gin.Context) {
var req *cast.UpdateCastTagReq
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
newCtx := NewCtxWithUserInfo(ctx)
resp, err := service.CastProvider.UpdateCastTag(newCtx, req)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
// ListCastTags 获取话题标签列表
func ListCastTags(ctx *gin.Context) {
var req *cast.ListCastTagsReq
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
newCtx := NewCtxWithUserInfo(ctx)
resp, err := service.CastProvider.ListCastTags(newCtx, req)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
// ImportTagBatch 批量导入话题标签
func ImportTagBatch(ctx *gin.Context) {
// 接收form表单的Excel保存到本地进行解析
excelFile, err := ctx.FormFile("file")
if err != nil {
service.Error(ctx, err)
return
}
tempDir := "./runtime/tag"
_, err = utils.CheckDirPath(tempDir, true)
fileName := time.Now().Format("20060102150405") + "_in_tag.xlsx"
excelPath := filepath.Join(tempDir, fileName)
if err = ctx.SaveUploadedFile(excelFile, excelPath); err != nil {
service.Error(ctx, err)
return
}
// 读取Excel中的数据
excelData, err := excelize.OpenFile(excelPath)
if err != nil {
service.Error(ctx, err)
return
}
defer excelData.Close()
// 解析Excel中的数据
rows, err := excelData.GetRows("Sheet1")
if err != nil {
service.Error(ctx, err)
return
}
req := cast.UpdateCastTagBatchReq{
Data: make([]*cast.CastTagInfo, 0),
}
userInfo := login.GetUserInfoFromC(ctx)
for line, row := range rows {
if line == 0 {
continue
}
temp := cast.CastTagInfo{
CreatorUuid: fmt.Sprint(userInfo.ID),
CreatorName: userInfo.Name,
Source: 1, // 固定来源:人工导入
Status: 1, // 固定状态:有效
}
// 解析Excel列A-话题标签B-备注
if len(row) > 0 {
temp.HashTag = strings.TrimSpace(row[0])
}
if len(row) > 1 {
temp.Remark = strings.TrimSpace(row[1])
}
zap.L().Info("ImportTagBatch row", zap.Int("line", line), zap.Strings("row", row))
// 验证必填字段:话题标签不能为空
if utils.CleanString(temp.HashTag) == "" {
temp.Remark = "必填项未填"
req.Data = append(req.Data, &temp)
continue
}
req.Data = append(req.Data, &temp)
}
newCtx := NewCtxWithUserInfo(ctx)
resp, _err := service.CastProvider.UpdateCastTagBatch(newCtx, &req)
if _err != nil {
service.Error(ctx, _err)
return
}
// 打开模板 写入resp 返回的数据
templatePath := "./data/话题标签导入模板.xlsx"
template, err := excelize.OpenFile(templatePath)
if err != nil {
service.Error(ctx, err)
return
}
defer template.Close()
var urlResult string
if resp.FailCount != 0 {
rowIndex := 2 // 从第2行开始写入第1行是表头
for _, v := range resp.Data {
if v.Success {
continue
}
// 写入失败的数据到Excel模板只写入话题标签和备注两列
template.SetCellValue("Sheet1", fmt.Sprintf("A%d", rowIndex), v.HashTag)
template.SetCellValue("Sheet1", fmt.Sprintf("B%d", rowIndex), v.Remark)
rowIndex++
}
resultFilename := strings.Replace(fileName, "_in_tag.xlsx", "_out_tag.xlsx", -1)
resultPath := fmt.Sprintf("./runtime/tag/%s", resultFilename)
if err = template.SaveAs(resultPath); err != nil {
service.Error(ctx, err)
return
}
urlHost := config.AppConfig.System.FieeHost
urlResult = fmt.Sprintf("%s/api/fiee/static/tag/%s", urlHost, resultFilename)
}
service.Success(ctx, map[string]interface{}{
"successCount": resp.SuccessCount,
"failCount": resp.FailCount,
"resultUrl": urlResult,
})
return
}
// RecalculateCastTagQuoteCount 重新计算话题标签引用数量
func RecalculateCastTagQuoteCount(ctx *gin.Context) {
newCtx := NewCtxWithUserInfo(ctx)
// 创建空的请求对象
req := &emptypb.Empty{}
resp, err := service.CastProvider.RecalculateCastTagQuoteCount(newCtx, req)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
// findNewTags 对比两次标签,找出新增的标签
func findNewTags(beforeTags, afterTags []string) []string {
// 将 beforeTags 转换为 map方便查找
beforeMap := make(map[string]bool)
for _, tag := range beforeTags {
cleanTag := strings.TrimSpace(tag)
if cleanTag != "" {
beforeMap[cleanTag] = true
}
}
// 找出 afterTags 中不在 beforeTags 中的标签
newTags := make([]string, 0)
for _, tag := range afterTags {
cleanTag := strings.TrimSpace(tag)
if cleanTag != "" && !beforeMap[cleanTag] {
newTags = append(newTags, cleanTag)
}
}
return newTags
}
func GetValidProfileKey(ctx context.Context, platformIDs []uint32) (string, error) {
if len(platformIDs) == 0 {
platformIDs = []uint32{1, 2, 3, 5}
}
profileKeys, err := service.CastProvider.GetArtistAyrShareInfoByPlatformIDs(ctx, &cast.GetArtistAyrShareInfoByPlatformIDsReq{
PlatformIDs: platformIDs,
Page: 1,
PageSize: 20,
})
if err != nil {
zap.L().Error("GetArtistAyrShareInfoByPlatformIDs failed", zap.Error(err))
return "", errors.New("获取有效profileKey失败")
}
if len(profileKeys.Data) == 0 {
return "", errors.New("当前没有有效的profileKey")
}
// 过滤出所有非空的 profileKey
validProfileKeys := make([]string, 0)
for _, item := range profileKeys.Data {
if item.ProfileKey != "" {
validProfileKeys = append(validProfileKeys, item.ProfileKey)
}
}
if len(validProfileKeys) == 0 {
return "", errors.New("profileKey为空")
}
// 从有效的 profileKey 中随机选择一个
randIndex := rand.Intn(len(validProfileKeys))
return validProfileKeys[randIndex], nil
}
// SaveTagsToDatabase 将标签保存到数据库
func SaveTagsToDatabase(ctx *gin.Context, tags []string, source uint32) error {
if len(tags) == 0 {
return nil
}
// 获取用户信息
userInfo := login.GetUserInfoFromC(ctx)
newCtx := NewCtxWithUserInfo(ctx)
// 构建批量导入请求
req := cast.UpdateCastTagBatchReq{
Data: make([]*cast.CastTagInfo, 0, len(tags)),
}
for _, tag := range tags {
tagInfo := &cast.CastTagInfo{
HashTag: tag,
CreatorUuid: fmt.Sprint(userInfo.ID),
CreatorName: userInfo.Name,
Source: source, // 4: 自动标签(从内容中自动提取)
Status: 1, // 1: 有效
}
req.Data = append(req.Data, tagInfo)
}
// 调用批量导入接口
_, err := service.CastProvider.UpdateCastTagBatch(newCtx, &req)
if err != nil {
err = errors.New("标签保存到数据库失败")
zap.L().Error("SaveTagsToDatabase UpdateCastTagBatch failed", zap.Error(err))
return err
}
zap.L().Info("SaveTagsToDatabase success", zap.Int("tagCount", len(tags)), zap.Strings("tags", tags), zap.Uint32("source", source))
return nil
}
func GenerateAutoHashtags(ctx context.Context, post string, max int32, position, language string) (*aryshare.AutoHashtagsResponse, []string, bool, error) {
// 验证帖子内容
if post == "" {
return nil, nil, false, errors.New("帖子内容不能为空")
}
// post 的长度不能超过1000个字符
if len(post) > 1000 {
return nil, nil, false, errors.New("自动生成标签的帖子内容不能超过1000个字符")
}
// 提取生成前的标签
beforeTags := utils.ExtractTags(post)
zap.L().Info("GenerateAutoHashtags beforeTags", zap.Strings("beforeTags", beforeTags))
// 如果标签数量已经达到或超过5个不需要生成
if len(beforeTags) >= 5 {
return nil, nil, false, nil
}
// 设置默认值
if position == "" {
position = "end"
}
if language == "" {
language = "zh"
}
// 如果 max 为0则根据现有标签数自动计算确保总数为5
if max == 0 {
max = int32(5 - len(beforeTags))
}
// 如果此时 max 小于等于0则直接返回
if max <= 0 {
return nil, nil, false, nil
}
profileKey, err := GetValidProfileKey(ctx, []uint32{1, 2, 3, 5})
if err != nil {
return nil, nil, false, err
}
// 构建请求
req := &aryshare.AutoHashtagsRequest{
Post: post,
Max: max,
Position: position,
Language: language,
ProfileKey: profileKey,
}
// 调用 Ayrshare 的 AutoHashtags 接口
resp, err := service.AyrshareProvider.AutoHashtags(ctx, req)
if err != nil {
zap.L().Error("AutoHashtags failed", zap.Error(err))
return nil, nil, false, errors.New("自动生成标签失败")
}
if resp.Post == "" {
return nil, nil, false, errors.New("自动生成标签返回的帖子内容为空")
}
// 去掉自动标签返回的帖子内容多余的引号
resp.Post = utils.CleanAutoHashtagsQuote(resp.Post)
// 提取生成后的标签
afterTags := utils.ExtractTags(resp.Post)
zap.L().Info("GenerateAutoHashtags afterTags", zap.Strings("afterTags", afterTags))
// 对比两次标签,找出新增的标签
newTags := findNewTags(beforeTags, afterTags)
return resp, newTags, true, nil
}
// AutoHashtags 自动生成标签
func AutoHashtags(ctx *gin.Context) {
var req *aryshare.AutoHashtagsRequest
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
// 调用核心逻辑生成标签
resp, newTags, needMore, err := GenerateAutoHashtags(
context.Background(),
req.Post,
req.Max,
req.Position,
req.Language,
)
if err != nil {
service.Error(ctx, err)
return
}
// 如果标签已满5个直接返回
if !needMore {
service.Success(ctx, map[string]interface{}{
"message": "当前帖子的标签已经有5个了",
})
return
}
// 保存新增的标签到数据库Source 设置为 4自动标签
if len(newTags) > 0 {
if err = SaveTagsToDatabase(ctx, newTags, 4); err != nil {
zap.L().Error("SaveTagsToDatabase failed", zap.Error(err), zap.Strings("newTags", newTags))
err = errors.New("标签保存到数据库失败")
service.Error(ctx, err)
return
}
}
service.Success(ctx, resp)
return
}
// RecommendHashtags 推荐标签
func RecommendHashtags(ctx *gin.Context) {
var req *aryshare.RecommendHashtagsRequest
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
profileKey, err := GetValidProfileKey(context.Background(), []uint32{1})
if err != nil {
service.Error(ctx, err)
return
}
req.ProfileKey = profileKey
resp, err := service.AyrshareProvider.RecommendHashtags(context.Background(), req)
if err != nil {
fmt.Println("err", err)
zap.L().Error("RecommendHashtags failed", zap.Error(err))
err = errors.New("推荐标签失败")
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
// SearchHashtags 搜索标签
func SearchHashtags(ctx *gin.Context) {
var req *aryshare.SearchHashtagsRequest
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
profileKey, err := GetValidProfileKey(context.Background(), []uint32{3})
if err != nil {
service.Error(ctx, err)
return
}
req.ProfileKey = profileKey
resp, err := service.AyrshareProvider.SearchHashtags(context.Background(), req)
if err != nil {
fmt.Println("err", err)
err = errors.New("获取热门话题标签失败")
zap.L().Error("SearchHashtags failed", zap.Error(err))
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}

View File

@ -2,23 +2,12 @@ package cast
import ( import (
"context" "context"
"encoding/json"
"errors"
"fmt" "fmt"
"fonchain-fiee/cmd/config"
"fonchain-fiee/pkg/service/upload"
"os"
"strings"
"time"
"fonchain-fiee/api/cast" "fonchain-fiee/api/cast"
modelCast "fonchain-fiee/pkg/model/cast"
"fonchain-fiee/pkg/model/login" "fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/xuri/excelize/v2"
"go.uber.org/zap"
) )
func TaskList(ctx *gin.Context) { func TaskList(ctx *gin.Context) {
@ -37,164 +26,3 @@ func TaskList(ctx *gin.Context) {
} }
service.Success(ctx, resp) service.Success(ctx, resp)
} }
func DeleteTasK(ctx *gin.Context) {
var req *cast.DeleteTaskListReq
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
//loginInfo := login.GetUserInfoFromC(ctx)
//req.OperatorID = fmt.Sprint(loginInfo.ID)
resp, err := service.CastProvider.DeleteTaskList(context.Background(), req)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
}
func DownloadTaskFile(ctx *gin.Context) {
var req *cast.GetTaskListReq
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
resp, err := service.CastProvider.GetTaskList(context.Background(), req)
if err != nil {
service.Error(ctx, err)
return
}
if resp == nil || resp.Data == nil {
service.Error(ctx, errors.New("没有此任务"))
return
}
var taskInfo modelCast.PublishTaskDto
if resp.Data.ExtraData != "" {
_ = json.Unmarshal([]byte(resp.Data.ExtraData), &taskInfo)
}
exportUrl, err := PublishTaskExcel(taskInfo.WorkUuids, false, resp.Data.Action)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, gin.H{
"url": exportUrl,
})
}
func PublishTaskExcel(workUuids []string, uploadOss bool, action string) (string, error) {
// 创建Excel文件
f := excelize.NewFile()
sheetName := "Sheet1"
f.SetSheetName("Sheet1", sheetName)
// 设置表头
headers := []interface{}{
"艺人编号", "艺人姓名", "内容类型", "内容标题",
"执行结果", "TIKTOK", "YOUTUBE", "INS", "DM", "BULESKY",
}
sw, err := f.NewStreamWriter(sheetName)
if err != nil {
return "", err
}
if err = sw.SetRow("A1", headers); err != nil {
return "", err
}
// 遍历所有作品,收集数据
rowIndex := 2
for _, workUuid := range workUuids {
var workResp *cast.WorkDetailResp
workResp, err = service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{WorkUuid: workUuid})
if err != nil {
continue // 如果某个作品获取失败,跳过继续处理其他作品
}
// 内容类型
contentType := ""
if workResp.WorkCategory == 1 {
contentType = "图文"
} else if workResp.WorkCategory == 2 {
contentType = "视频"
}
// 执行结果
executionResult := modelCast.WorkStatusMM[int(workResp.WorkStatus)]
tiktokStatus := ""
youtubeStatus := ""
insStatus := ""
dmStatus := ""
blueskyStatus := ""
// 获取平台信息和艺人姓名
artistName := ""
var infoResp *cast.WorkInfoResp
infoResp, err = service.CastProvider.WorkInfo(context.Background(), &cast.WorkInfoReq{WorkUuid: workUuid})
if err == nil && infoResp != nil {
artistName = infoResp.ArtistName
if infoResp.PlatformInfoData != nil {
for _, platform := range infoResp.PlatformInfoData {
statusText := modelCast.PlatformPublishStatusMM[platform.PublishMediaStatus]
switch cast.PlatformIDENUM(platform.PlatformID) {
case cast.PlatformIDENUM_TIKTOK:
tiktokStatus = statusText
case cast.PlatformIDENUM_YOUTUBE:
youtubeStatus = statusText
case cast.PlatformIDENUM_INS:
insStatus = statusText
case cast.PlatformIDENUM_DM:
dmStatus = statusText
case cast.PlatformIDENUM_BULESKY:
blueskyStatus = statusText
}
}
}
}
row := []interface{}{
workResp.ArtistSubNum,
artistName,
contentType,
workResp.Title,
executionResult,
tiktokStatus,
youtubeStatus,
insStatus,
dmStatus,
blueskyStatus,
}
cell, _ := excelize.CoordinatesToCellName(1, rowIndex)
if err = sw.SetRow(cell, row); err != nil {
continue
}
rowIndex++
}
if err = sw.Flush(); err != nil {
zap.L().Error("PublishTaskExcel Flush err", zap.Error(err))
return "", errors.New("生成Excel文件失败")
}
tempDir := "./runtime/task"
if _, err = os.Stat(tempDir); os.IsNotExist(err) {
if err = os.MkdirAll(tempDir, 0755); err != nil {
return "", err
}
}
TaskActionName, ok := modelCast.TaskActionName[action]
if !ok {
TaskActionName = "未知任务"
}
filename := fmt.Sprintf("%s_%s.xlsx", TaskActionName, time.Now().Format("20060102150405"))
filePath := tempDir + "/" + filename
var exportUrl string = fmt.Sprintf("%s/api/fiee/static/%s", config.AppConfig.System.FieeHost, strings.Replace(filePath, "./runtime/", "", 1))
if err = f.SaveAs(filePath); err != nil {
zap.L().Error("PublishTaskExcel SaveAs err", zap.Error(err))
return "", errors.New("保存Excel文件失败")
}
if uploadOss {
// 上传到阿里云
exportUrl, err = upload.PutBos(filePath, "excel", true)
if err != nil {
return "", err
}
}
return exportUrl, nil
}

View File

@ -2,13 +2,11 @@ package cast
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"fonchain-fiee/api/aryshare" "fonchain-fiee/api/aryshare"
"fonchain-fiee/api/cast" "fonchain-fiee/api/cast"
"fonchain-fiee/cmd/config" "fonchain-fiee/cmd/config"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/service/check"
"fonchain-fiee/pkg/utils" "fonchain-fiee/pkg/utils"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -16,17 +14,6 @@ import (
func Test(ctx *gin.Context) { func Test(ctx *gin.Context) {
action := ctx.PostForm("action") action := ctx.PostForm("action")
if action == "" {
workUuid := ctx.PostForm("workUuid")
err := CheckImage(workUuid)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, nil)
return
}
if action == "getPost" { if action == "getPost" {
id := ctx.PostForm("id") id := ctx.PostForm("id")
profileKey := ctx.PostForm("profileKey") profileKey := ctx.PostForm("profileKey")
@ -81,6 +68,19 @@ func Test(ctx *gin.Context) {
return return
} }
if action == "" {
profileKey := ctx.PostForm("profileKey")
resp, err := service.AyrshareProvider.GetUser(context.Background(), &aryshare.GetUserRequest{
ProfileKey: profileKey,
InstagramDetails: true,
})
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
if action == "getProfile" { if action == "getProfile" {
//profileKey := ctx.PostForm("profileKey") //profileKey := ctx.PostForm("profileKey")
resp, err := service.AyrshareProvider.GetProfiles(context.Background(), &aryshare.GetProfilesRequest{ resp, err := service.AyrshareProvider.GetProfiles(context.Background(), &aryshare.GetProfilesRequest{
@ -127,52 +127,6 @@ func Test(ctx *gin.Context) {
service.CastProvider.Tools(context.Background(), &cast.ToolsReq{Action: action}) service.CastProvider.Tools(context.Background(), &cast.ToolsReq{Action: action})
return return
} }
if action == "SecurityText" {
val := ctx.PostForm("val")
ok, err := check.SecurityFile(val)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("标题鉴定未通过"))
return
}
service.Success(ctx, "ok")
}
if action == "SecurityFile" {
val := ctx.PostForm("val")
ok, err := check.SecurityFile(val)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("标题鉴定未通过"))
return
}
service.Success(ctx, "ok")
}
if action == "SyncAsAuth" {
artistUuid := ctx.PostForm("artistUuid")
err := SyncAsAuth(artistUuid)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, "ok")
}
if action == "RefreshWorkList" {
resp, err := service.CastProvider.RefreshWorkList(context.Background(), &cast.RefreshWorkListReq{PublishStatus: 1})
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
service.Success(ctx, "unknow") service.Success(ctx, "unknow")
return return

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,6 @@ import (
pkgSecurity "fonchain-fiee/pkg/security" pkgSecurity "fonchain-fiee/pkg/security"
"github.com/fonchain/utils/security" "github.com/fonchain/utils/security"
"go.uber.org/zap"
) )
// ImageCheckUrlValid 图片黄疸检测 true 是通过 // ImageCheckUrlValid 图片黄疸检测 true 是通过
@ -56,6 +55,7 @@ func ImageCheckByte(file *multipart.FileHeader) (bool, error) {
} }
func SecurityFile(textVal string) (bool, error) { func SecurityFile(textVal string) (bool, error) {
//FIXME
return true, nil return true, nil
if textVal == "" { if textVal == "" {
return true, nil return true, nil
@ -80,15 +80,13 @@ func SecurityFile(textVal string) (bool, error) {
return true, nil return true, nil
} }
func SecurityText(textVal string) (bool, error) { func SecurityText(textVal string) (bool, error) {
return true, nil
aliConfig, err := pkgSecurity.GetGlobalConfig("./data/alibabacloud.env") aliConfig, err := pkgSecurity.GetGlobalConfig("./data/alibabacloud.env")
if err != nil { if err != nil {
return false, err return false, err
} }
err = aliConfig.GetSTSToken() err = aliConfig.GetSTSToken()
if err != nil { if err != nil {
zap.L().Error("获取凭证失败", zap.Error(err)) return false, errors.New("获取图片失败")
return false, errors.New("获取凭证失败")
} }
if err = handleTextScan(aliConfig, textVal); err != nil { if err = handleTextScan(aliConfig, textVal); err != nil {
return false, err return false, err
@ -104,7 +102,6 @@ func securityScan(fileInfo *modelSecurity.FileInfo) (err error) {
} }
err = aliConfig.GetSTSToken() err = aliConfig.GetSTSToken()
if err != nil { if err != nil {
zap.L().Error("获取凭证失败", zap.Error(err))
return errors.New("获取凭证失败") return errors.New("获取凭证失败")
} }
switch fileInfo.FileType { switch fileInfo.FileType {
@ -157,8 +154,7 @@ func handleVideoScan(config *security.Config, fileInfo *modelSecurity.FileInfo)
} }
if v.Results.RiskLevel != nil { if v.Results.RiskLevel != nil {
lv := v.Results.RiskLevel lv := v.Results.RiskLevel
//if *lv == "none" { if *lv == "none" {
if *lv != "high" {
return nil return nil
} }
return errors.New("图片违规") return errors.New("图片违规")
@ -197,8 +193,7 @@ func handleImageScan(config *security.Config, fileInfo *modelSecurity.FileInfo)
fileInfo.SecurityStatus = *v2.RiskLevel fileInfo.SecurityStatus = *v2.RiskLevel
if v2.RiskLevel != nil { if v2.RiskLevel != nil {
lv := v2.RiskLevel lv := v2.RiskLevel
//if *lv == "none" { if *lv == "none" {
if *lv != "high" {
return nil return nil
} }
return errors.New("图片违规") return errors.New("图片违规")

View File

@ -4,19 +4,13 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
account "fonchain-fiee/api/accountFiee"
"fonchain-fiee/api/cron" "fonchain-fiee/api/cron"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/utils" "fonchain-fiee/pkg/utils"
"log"
"os"
"path/filepath"
"strings"
"time" "time"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding" "github.com/gin-gonic/gin/binding"
"github.com/xuri/excelize/v2"
"google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/emptypb"
) )
@ -118,36 +112,20 @@ func ExportExcelExecutionResult(c *gin.Context) {
service.Error(c, errors.New("网络超时,请重试")) service.Error(c, errors.New("网络超时,请重试"))
return return
} }
userListRes, err := service.AccountFieeProvider.UserList(context.Background(), &account.UserListRequest{
Domain: "app",
})
if err != nil {
service.Error(c, errors.New("用户查询失败"))
return
}
idFindSubName := make(map[uint64]string)
for _, v := range userListRes.UserList {
idFindSubName[v.Id] = v.SubNum
}
titleList := []string{ titleList := []string{
"任务标题", "艺人编号", "艺人姓名", "内容类型", "内容标题", "执行结果", "原因", "TIKTOK", "YOUTUBE", "INS", "DM", "BULESKY", "任务标题", "艺人编号", "艺人姓名", "内容类型", "内容标题", "执行结果", "原因",
} }
var dataList []interface{} var dataList []interface{}
for _, task := range res.Data { for _, task := range res.Data {
data := []interface{}{ data := []interface{}{
task.TaskTitle, task.TaskTitle,
idFindSubName[uint64(task.ArtistId)], task.ArtistId,
task.ArtistName, task.ArtistName,
task.ContentTypeDescription, task.ContentTypeDescription,
task.WorkTitle, task.WorkTitle,
task.ResultDescription, task.ResultDescription,
task.ResultDesc, task.ResultDesc,
task.TIKTOKStatusDesc,
task.YOUTUBEStatusDesc,
task.INSStatusDesc,
task.DMStatusDesc,
task.BULESKYStatusDesc,
} }
dataList = append(dataList, &data) dataList = append(dataList, &data)
} }
@ -227,160 +205,3 @@ func GetScheduleTaskStatus(c *gin.Context) {
} }
service.Success(c, res) service.Success(c, res)
} }
func GetImportData(c *gin.Context) {
defer func() {
if r := recover(); r != nil {
service.Error(c, errors.New("操作失败"))
}
}()
// 导入excel
excelFile, err := c.FormFile("excel")
if err != nil {
service.Error(c, errors.New("缺少excel文件"))
return
}
// 创建临时文件
tempDir := "tmp"
if err = os.MkdirAll(tempDir, 0755); err != nil {
service.Error(c, errors.New("创建临时目录失败"))
return
}
defer os.RemoveAll(tempDir)
// 保存excel
excelPath := filepath.Join(tempDir, "excel.xlsx")
if err = c.SaveUploadedFile(excelFile, excelPath); err != nil {
service.Error(c, errors.New("保存excel文件失败"))
return
}
// 读取excel
readExcelResult, err := readExcel(excelPath)
if err != nil {
service.Error(c, fmt.Errorf("读取excel失败: %v", err))
return
}
if len(readExcelResult) == 0 {
service.Error(c, errors.New("请检查excel文件"))
return
}
//去重操作
set := make(map[string]struct{})
var uniqueExcelData []excelData
for _, data := range readExcelResult {
if _, exists := set[data.SubName]; !exists {
set[data.SubName] = struct{}{}
uniqueExcelData = append(uniqueExcelData, data)
}
}
res, err := service.AccountFieeProvider.UserList(context.Background(), &account.UserListRequest{
Domain: "app",
})
if err != nil {
service.Error(c, errors.New("用户查询失败"))
return
}
//检查subname是否正确是否存在
subNames := make(map[string]struct{}, len(res.UserList))
for _, v := range res.UserList {
subNames[v.SubNum] = struct{}{}
}
for _, v := range uniqueExcelData {
if _, ok := subNames[v.SubName]; !ok {
service.Error(c, errors.New(fmt.Sprintf("第 %d 行数据错误,请检查数据!", v.Line)))
return
}
}
//检查subname和name是否匹配
subNameFindExcelData := make(map[string]excelData, len(uniqueExcelData))
for _, v := range uniqueExcelData {
subNameFindExcelData[v.SubName] = v
}
subNameFindID := make(map[string]uint64, len(uniqueExcelData))
result := make([]excelDataResult, 0, len(uniqueExcelData))
for _, v := range res.UserList {
subNameFindID[v.SubNum] = v.Id
if subNameFindExcelData[v.SubNum].Name != v.Name && subNameFindExcelData[v.SubNum].Name != "" {
fmt.Println(subNameFindExcelData[v.SubNum], v.Name)
service.Error(c, errors.New(fmt.Sprintf("第 %d 行数据错误,请检查数据!", subNameFindExcelData[v.SubNum].Line)))
return
}
}
for _, v := range uniqueExcelData {
result = append(result, excelDataResult{
Id: subNameFindID[v.SubName],
Name: v.Name,
})
}
service.Success(c, result)
return
}
type excelData struct {
Line uint `json:"line"`
SubName string `json:"subName"`
Name string `json:"name"`
}
type excelDataResult struct {
Id uint64 `json:"id"`
Name string `json:"name"`
}
func readExcel(excelPath string) ([]excelData, error) {
//打开excel
f, err := excelize.OpenFile(excelPath)
if err != nil {
return nil, err
}
defer f.Close()
//读取第一页
sheetName := f.GetSheetName(0)
if sheetName == "" {
return nil, errors.New("excel文件中没有工作表")
}
//读取数据
rows, err := f.GetRows(sheetName)
if err != nil {
return nil, fmt.Errorf("读取工作表失败: %v", err)
}
if len(rows) <= 1 {
return nil, errors.New("excel文件没有数据行只有表头或为空")
}
var result []excelData
for i := 1; i < len(rows); i++ { // 从第2行开始跳过表头
row := rows[i]
if len(row) == 0 {
continue
}
subName := getCellValue(f, sheetName, i, 0)
name := getCellValue(f, sheetName, i, 1)
data := excelData{
Line: uint(i + 1),
SubName: subName,
Name: name,
}
result = append(result, data)
}
return result, nil
}
func getCellValue(f *excelize.File, sheetName string, rowIndex, colIndex int) string {
colName, _ := excelize.ColumnNumberToName(colIndex + 1)
cell := fmt.Sprintf("%s%d", colName, rowIndex+1)
value, err := f.GetCellValue(sheetName, cell)
if err != nil {
log.Printf("读取单元格 %s 失败: %v", cell, err)
return ""
}
return strings.TrimSpace(value)
}

View File

@ -4,7 +4,6 @@ import (
"bytes" "bytes"
"context" "context"
"errors" "errors"
"fmt"
"fonchain-fiee/api/files" "fonchain-fiee/api/files"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/service/bundle/common" "fonchain-fiee/pkg/service/bundle/common"
@ -103,15 +102,6 @@ func Create(ctx *gin.Context) {
} }
func Delete(ctx *gin.Context) { func Delete(ctx *gin.Context) {
path := ctx.DefaultQuery("path", "/")
nowYear := time.Now().Year()
nowMonth := time.Now().Month()
nowYearPath := fmt.Sprintf("/fiee/video/%d", nowYear)
nowMonthPath := fmt.Sprintf("/fiee/video/%d/%d-%d", nowYear, nowYear, nowMonth)
if path == nowYearPath || path == nowMonthPath || path == "/fiee" || path == "/fiee/video" || path == "/fiee/video/old" {
service.Error(ctx, errors.New("无法删除该目录"))
return
}
resp, err := service.FilesProvider.Delete(ctx, &files.DeleteReq{ resp, err := service.FilesProvider.Delete(ctx, &files.DeleteReq{
Path: ctx.DefaultQuery("path", "/"), Path: ctx.DefaultQuery("path", "/"),
UserSpacePath: getUserSpacePath(ctx), UserSpacePath: getUserSpacePath(ctx),

View File

@ -47,12 +47,7 @@ func Delete(ctx *gin.Context) {
} }
func Display(ctx *gin.Context) { func Display(ctx *gin.Context) {
var req governance.DisplayReq resp, err := service.GovernanceProvider.Display(ctx, &governance.DisplayReq{})
if err := ctx.ShouldBindJSON(&req); err != nil {
service.Error(ctx, err)
return
}
resp, err := service.GovernanceProvider.Display(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.DisplayGovernanceFailed)) service.Error(ctx, errors.New(common.DisplayGovernanceFailed))
return return
@ -90,34 +85,3 @@ func Edit(ctx *gin.Context) {
} }
service.Success(ctx, resp) service.Success(ctx, resp)
} }
func UpdataStatus(ctx *gin.Context) {
var req governance.UpdataStatusReq
if err := ctx.ShouldBindJSON(&req); err != nil {
service.Error(ctx, err)
return
}
user := login.GetUserInfoFromC(ctx)
req.Operator = user.Name
req.OperatorId = int32(user.ID)
resp, err := service.GovernanceProvider.UpdataStatus(ctx, &req)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
}
func GetGovernanceInfo(ctx *gin.Context) {
var req governance.GetGovernanceInfoReq
if err := ctx.ShouldBindJSON(&req); err != nil {
service.Error(ctx, err)
return
}
resp, err := service.GovernanceProvider.GetGovernanceInfo(ctx, &req)
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
}

View File

@ -30,8 +30,6 @@ type excelData struct {
SubNum string //用户编号 必须字段 SubNum string //用户编号 必须字段
TikTok string TikTok string
Instagram string Instagram string
YouTube string
BlueSky string
Youtube string Youtube string
Desc string //艺人简介 Desc string //艺人简介
TitleRequire string //标题要求 必须字段 TitleRequire string //标题要求 必须字段
@ -180,30 +178,27 @@ func readExcel(excelPath string) ([]excelData, error) {
if subNum == "" { if subNum == "" {
return nil, fmt.Errorf("第%d行应该有编号", i+1) return nil, fmt.Errorf("第%d行应该有编号", i+1)
} }
blueSky := getCellValue(f, sheetName, i, 2) tikTok := getCellValue(f, sheetName, i, 2)
if blueSky == "" {
return nil, fmt.Errorf("第%d行应该有bluesky账号昵称", i+1)
}
tikTok := getCellValue(f, sheetName, i, 3)
if tikTok == "" { if tikTok == "" {
return nil, fmt.Errorf("第%d行应该有tiktok账号昵称", i+1) return nil, fmt.Errorf("第%d行应该有tiktok账号昵称", i+1)
} }
instagram := getCellValue(f, sheetName, i, 4) instagram := getCellValue(f, sheetName, i, 3)
if instagram == "" {
desc := getCellValue(f, sheetName, i, 5) return nil, fmt.Errorf("第%d行应该有ins账号昵称", i+1)
}
titleRequire := getCellValue(f, sheetName, i, 6) desc := getCellValue(f, sheetName, i, 4)
titleRequire := getCellValue(f, sheetName, i, 5)
if titleRequire == "" { if titleRequire == "" {
return nil, fmt.Errorf("第%d行应该有标题要求", i+1) return nil, fmt.Errorf("第%d行应该有标题要求", i+1)
} }
contentRequire := getCellValue(f, sheetName, i, 7) contentRequire := getCellValue(f, sheetName, i, 6)
if contentRequire == "" { if contentRequire == "" {
return nil, fmt.Errorf("第%d行应该有内容要求", i+1) return nil, fmt.Errorf("第%d行应该有内容要求", i+1)
} }
photoRequire := getCellValue(f, sheetName, i, 8) photoRequire := getCellValue(f, sheetName, i, 7)
photoUrl := getCellValue(f, sheetName, i, 9) photoUrl := getCellValue(f, sheetName, i, 8)
photoNumStr := getCellValue(f, sheetName, i, 10) photoNumStr := getCellValue(f, sheetName, i, 9)
photoDpi := getCellValue(f, sheetName, i, 11) photoDpi := getCellValue(f, sheetName, i, 10)
var num int var num int
if photoUrl == "" { //如果没有关联画作,数量必须有,需求必须有 if photoUrl == "" { //如果没有关联画作,数量必须有,需求必须有
//需求必须有 //需求必须有
@ -225,7 +220,6 @@ func readExcel(excelPath string) ([]excelData, error) {
data := excelData{ data := excelData{
ArtistName: artistName, ArtistName: artistName,
SubNum: subNum, SubNum: subNum,
BlueSky: blueSky,
TikTok: tikTok, TikTok: tikTok,
Instagram: instagram, Instagram: instagram,
Desc: desc, Desc: desc,

View File

@ -1,7 +1,6 @@
package imports package imports
import ( import (
"bytes"
"context" "context"
"errors" "errors"
"fmt" "fmt"
@ -9,9 +8,6 @@ import (
apiCast "fonchain-fiee/api/cast" apiCast "fonchain-fiee/api/cast"
"fonchain-fiee/pkg/config" "fonchain-fiee/pkg/config"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"image"
"image/draw"
"image/jpeg"
"io" "io"
"log" "log"
"math/rand" "math/rand"
@ -297,7 +293,6 @@ func (p *BatchProcessor) submitTask(req *excelData) error {
if !tiktokFound { if !tiktokFound {
return fmt.Errorf("未找到匹配的TikTok账号: %s", req.TikTok) return fmt.Errorf("未找到匹配的TikTok账号: %s", req.TikTok)
} }
if req.Instagram != "" {
// 获取 Instagram 自媒体账号 // 获取 Instagram 自媒体账号
accountListIns, err := service.CastProvider.MediaUserList(context.Background(), &apiCast.MediaUserListReq{ accountListIns, err := service.CastProvider.MediaUserList(context.Background(), &apiCast.MediaUserListReq{
ArtistVal: req.ArtistName, ArtistVal: req.ArtistName,
@ -312,6 +307,7 @@ func (p *BatchProcessor) submitTask(req *excelData) error {
if accountListIns == nil || len(accountListIns.Data) == 0 { if accountListIns == nil || len(accountListIns.Data) == 0 {
return fmt.Errorf("ins自媒体账号数量为0") return fmt.Errorf("ins自媒体账号数量为0")
} }
// 查找 Instagram 账号 // 查找 Instagram 账号
insFound := false insFound := false
for _, user := range accountListIns.Data { for _, user := range accountListIns.Data {
@ -326,35 +322,6 @@ func (p *BatchProcessor) submitTask(req *excelData) error {
return fmt.Errorf("未找到匹配的Instagram账号: %s", req.Instagram) return fmt.Errorf("未找到匹配的Instagram账号: %s", req.Instagram)
} }
}
// 获取 Bluesky 自媒体账号
accountListBlueSky, err := service.CastProvider.MediaUserList(context.Background(), &apiCast.MediaUserListReq{
ArtistVal: req.ArtistName,
PlatformID: 5, // Bluesky platform ID
Page: 1,
PageSize: 10,
ArtistUuid: strconv.FormatUint(list.UserList[0].Id, 10),
})
if err != nil {
return fmt.Errorf("获取 Bluesky 账号失败: %s", err.Error())
}
if accountListBlueSky == nil || len(accountListBlueSky.Data) == 0 {
return fmt.Errorf("bluesky自媒体账号数量为0")
}
// 查找 Bluesky 账号
blueSkyFound := false
for _, user := range accountListBlueSky.Data {
if user.PlatformUserName == req.BlueSky {
req.MediaAccountNames = append(req.MediaAccountNames, user.PlatformUserName)
req.MediaAccountUuids = append(req.MediaAccountUuids, user.MediaAccountUuid)
blueSkyFound = true
break
}
}
if !blueSkyFound {
return fmt.Errorf("未找到匹配的Bluesky账号: %s", req.BlueSky)
}
switch { switch {
case req.PhotoUrl == "": // 如果没有提供照片 URL生成标题和内容 case req.PhotoUrl == "": // 如果没有提供照片 URL生成标题和内容
// 生成标题和内容 // 生成标题和内容
@ -576,17 +543,21 @@ func downloadAndUploadToBucket(imageURL string) (string, error) {
return "", fmt.Errorf("创建临时目录失败: %v", err) return "", fmt.Errorf("创建临时目录失败: %v", err)
} }
defer os.RemoveAll(tempDir) // 程序结束时清理整个目录 defer os.RemoveAll(tempDir) // 程序结束时清理整个目录
// 生成唯一文件名
rand.Seed(time.Now().UnixNano()) rand.Seed(time.Now().UnixNano())
timestamp := time.Now().Unix() fileName := fmt.Sprintf("%d%04d.jpg", time.Now().Unix(), rand.Intn(10000))
randomNum := rand.Intn(10000)
fileName := fmt.Sprintf("%d%04d.jpg", timestamp, randomNum)
// 构建文件路径 // 构建文件路径
imgPath := filepath.Join(tempDir, fileName) imgPath := filepath.Join(tempDir, fileName)
// 下载图片 // 创建文件
file, err := os.Create(imgPath)
if err != nil {
return "", fmt.Errorf("创建文件失败: %v", err)
}
defer file.Close()
log.Printf("文件创建在: %s", imgPath)
// 下载图片到文件
resp, err := http.Get(imageURL) resp, err := http.Get(imageURL)
if err != nil { if err != nil {
return "", fmt.Errorf("下载图片失败: %v", err) return "", fmt.Errorf("下载图片失败: %v", err)
@ -597,62 +568,50 @@ func downloadAndUploadToBucket(imageURL string) (string, error) {
return "", fmt.Errorf("下载失败,状态码: %d", resp.StatusCode) return "", fmt.Errorf("下载失败,状态码: %d", resp.StatusCode)
} }
// 读取图片数据 // 复制到文件
imgData, err := io.ReadAll(resp.Body) _, err = io.Copy(file, resp.Body)
if err != nil { if err != nil {
return "", fmt.Errorf("读取图片数据失败: %v", err) return "", fmt.Errorf("保存文件失败: %v", err)
} }
// 检测图片格式并转换为JPG file.Sync()
jpgData, err := convertToJPG(imgData)
fileBytes, err := os.ReadFile(imgPath)
if err != nil { if err != nil {
return "", fmt.Errorf("转换图片格式失败: %v", err) return "", fmt.Errorf("读取本地文件失败: %v", err)
} }
// 保存转换后的JPG文件
if err := os.WriteFile(imgPath, jpgData, 0644); err != nil {
return "", fmt.Errorf("保存JPG文件失败: %v", err)
}
// 上传到对象存储
BOSClient, err := objstorage.NewOSS( BOSClient, err := objstorage.NewOSS(
os.Getenv(config.ConfigData.Oss.AccessKeyId), os.Getenv(config.ConfigData.Oss.AccessKeyId),
os.Getenv(config.ConfigData.Oss.AccessKeySecret), os.Getenv(config.ConfigData.Oss.AccessKeySecret),
os.Getenv(config.ConfigData.Oss.Endpoint), os.Getenv(config.ConfigData.Oss.Endpoint),
) )
if err != nil {
return "", fmt.Errorf("创建OSS客户端失败: %v", err)
}
if BOSClient == nil { if BOSClient == nil {
return "", fmt.Errorf("OSS客户端为空") return "", fmt.Errorf("上传文件失败: %v", err)
} }
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), fileName, fileBytes)
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), fileName, jpgData)
if err != nil { if err != nil {
return "", fmt.Errorf("上传文件失败: %v", err) return "", fmt.Errorf("上传文件失败: %v", err)
} }
//if BOSClient == nil {
// 返回CDN URL
url := fmt.Sprintf("%s/%s", os.Getenv(config.ConfigData.Oss.CdnHost), fileName) url := fmt.Sprintf("%s/%s", os.Getenv(config.ConfigData.Oss.CdnHost), fileName)
//上传到桶
//BOSClient, err := objstorage.NewOSS(
// config.ConfigData.Oss.AccessKeyId,
// config.ConfigData.Oss.AccessKeySecret,
// config.ConfigData.Oss.Endpoint,
//)
//if BOSClient == nil {
// return "", fmt.Errorf("上传文件失败: %v", err)
//}
//_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, fileName, fileBytes)
//if err != nil {
// return "", fmt.Errorf("上传文件失败: %v", err)
//}
//url := fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, fileName)
return url, nil return url, nil
} }
//上传到桶
//BOSClient, err := objstorage.NewOSS(
// config.ConfigData.Oss.AccessKeyId,
// config.ConfigData.Oss.AccessKeySecret,
// config.ConfigData.Oss.Endpoint,
//)
//if BOSClient == nil {
// return "", fmt.Errorf("上传文件失败: %v", err)
//}
//_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, fileName, fileBytes)
//if err != nil {
// return "", fmt.Errorf("上传文件失败: %v", err)
//}
//url := fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, fileName)
func (p *BatchProcessor) generateTitleAndContent(req *excelData) (string, string, error) { func (p *BatchProcessor) generateTitleAndContent(req *excelData) (string, string, error) {
if req.PhotoUrl != "" { if req.PhotoUrl != "" {
title, content, err := NewAiGenerator().GenerateTitleAndContentFromImage( title, content, err := NewAiGenerator().GenerateTitleAndContentFromImage(
@ -692,7 +651,7 @@ func (p *BatchProcessor) generateImage(req *excelData) (string, error) {
prompt += "\n要求不能出现:低质量、残缺、人物正脸、多余的手指、乱码字符和文字、比例不良,场景以国内场景为主" prompt += "\n要求不能出现:低质量、残缺、人物正脸、多余的手指、乱码字符和文字、比例不良,场景以国内场景为主"
if req.PhotoDpi == "" { if req.PhotoDpi == "" {
req.PhotoDpi = "1024*1024" req.PhotoDpi = "720*1280"
} }
result, err := NewAiGenerator().TextToImage( result, err := NewAiGenerator().TextToImage(
@ -706,33 +665,6 @@ func (p *BatchProcessor) generateImage(req *excelData) (string, error) {
return result.Output.TaskID, nil return result.Output.TaskID, nil
} }
// convertToJPG 将图片数据转换为JPG格式
func convertToJPG(imgData []byte) ([]byte, error) {
// 使用标准库解码
img, format, err := image.Decode(bytes.NewReader(imgData))
if err != nil {
return nil, fmt.Errorf("解码图片失败: %v", err)
}
log.Printf("检测到图片格式: %s, 尺寸: %dx%d", format, img.Bounds().Dx(), img.Bounds().Dy())
// 创建新的RGBA图片
bounds := img.Bounds()
rgba := image.NewRGBA(bounds)
// 绘制到RGBA
draw.Draw(rgba, bounds, img, bounds.Min, draw.Src)
// 编码为JPG
var buf bytes.Buffer
opts := &jpeg.Options{Quality: 90} // 设置质量为90%
if err := jpeg.Encode(&buf, rgba, opts); err != nil {
return nil, fmt.Errorf("编码JPG失败: %v", err)
}
return buf.Bytes(), nil
}
//func (p *BatchProcessor) StartPolling() { //func (p *BatchProcessor) StartPolling() {
// go func() { // go func() {
// ticker := time.NewTicker(p.pollInterval) // 1秒间隔 // ticker := time.NewTicker(p.pollInterval) // 1秒间隔

View File

@ -58,7 +58,6 @@ func publishImage(req publishImageReq) (err error) {
//---------------------------------------------------发布 //---------------------------------------------------发布
_, err = service.CastProvider.UpdateWorkImage(context.Background(), &apiCast.UpdateWorkImageReq{ _, err = service.CastProvider.UpdateWorkImage(context.Background(), &apiCast.UpdateWorkImageReq{
ArtistSubNum: list.UserList[0].SubNum,
Title: req.Title, Title: req.Title,
Content: req.Content, Content: req.Content,
Images: req.GeneratePhotoUrl, Images: req.GeneratePhotoUrl,

View File

@ -17,7 +17,6 @@ import (
"fonchain-fiee/api/pressreleases" "fonchain-fiee/api/pressreleases"
"fonchain-fiee/api/reports" "fonchain-fiee/api/reports"
"fonchain-fiee/api/secFilings" "fonchain-fiee/api/secFilings"
"fonchain-fiee/api/supplier"
pkConfig "fonchain-fiee/pkg/config" pkConfig "fonchain-fiee/pkg/config"
"os" "os"
@ -37,12 +36,11 @@ var CastProvider = new(cast.CastClientImpl)
var GovernanceProvider = new(governance.GovernanceClientImpl) var GovernanceProvider = new(governance.GovernanceClientImpl)
var PressReleasesProvider = new(pressreleases.PressReleasesClientImpl) var PressReleasesProvider = new(pressreleases.PressReleasesClientImpl)
var SecFilingProvider = new(secFilings.SecFilingsClientImpl) var SecFilingProvider = new(secFilings.SecFilingsClientImpl)
var AyrshareProvider = new(aryshare.AyrshareClientImpl)
var CronProvider = new(cron.CronClientImpl)
var SupplierProvider = new(supplier.SupplierClientImpl)
var ReportsProvider = new(reports.ReportsClientImpl) var ReportsProvider = new(reports.ReportsClientImpl)
var EmailAlertsProvider = new(emailAlerts.EmailAlertsClientImpl) var EmailAlertsProvider = new(emailAlerts.EmailAlertsClientImpl)
var MembersProvider = new(members.MembersClientImpl) var MembersProvider = new(members.MembersClientImpl)
var AyrshareProvider = new(aryshare.AyrshareClientImpl)
var CronProvider = new(cron.CronClientImpl)
func init() { func init() {
config.SetConsumerService(BundleProvider) config.SetConsumerService(BundleProvider)
@ -55,12 +53,11 @@ func init() {
config.SetConsumerService(GovernanceProvider) config.SetConsumerService(GovernanceProvider)
config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(PressReleasesProvider)
config.SetConsumerService(SecFilingProvider) config.SetConsumerService(SecFilingProvider)
config.SetConsumerService(AyrshareProvider)
config.SetConsumerService(CronProvider)
config.SetConsumerService(SupplierProvider)
config.SetConsumerService(ReportsProvider) config.SetConsumerService(ReportsProvider)
config.SetConsumerService(EmailAlertsProvider) config.SetConsumerService(EmailAlertsProvider)
config.SetConsumerService(MembersProvider) config.SetConsumerService(MembersProvider)
config.SetConsumerService(AyrshareProvider)
config.SetConsumerService(CronProvider)
if err := config.Load(); err != nil { if err := config.Load(); err != nil {
panic(err) panic(err)

View File

@ -8,7 +8,6 @@ import (
"fonchain-fiee/api/pressreleases" "fonchain-fiee/api/pressreleases"
"fonchain-fiee/pkg/model/login" "fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/service/bundle/common"
) )
func Create(ctx *gin.Context) { func Create(ctx *gin.Context) {
@ -22,7 +21,7 @@ func Create(ctx *gin.Context) {
req.OperatorId = int32(user.ID) req.OperatorId = int32(user.ID)
resp, err := service.PressReleasesProvider.Create(ctx, &req) resp, err := service.PressReleasesProvider.Create(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.CreatePressReleasesFailed)) service.Error(ctx, err)
return return
} }
service.Success(ctx, resp) service.Success(ctx, resp)
@ -36,7 +35,7 @@ func Delete(ctx *gin.Context) {
} }
resp, err := service.PressReleasesProvider.Delete(ctx, &req) resp, err := service.PressReleasesProvider.Delete(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.DisplayPressReleasesFailed)) service.Error(ctx, err)
return return
} }
service.Success(ctx, resp) service.Success(ctx, resp)
@ -48,13 +47,9 @@ func Display(ctx *gin.Context) {
service.Error(ctx, err) service.Error(ctx, err)
return return
} }
if req.LangType == "" {
service.Error(ctx, errors.New("语言类型为空"))
return
}
resp, err := service.PressReleasesProvider.Display(ctx, &req) resp, err := service.PressReleasesProvider.Display(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.ListPressReleasesFailed)) service.Error(ctx, err)
return return
} }
service.Success(ctx, resp) service.Success(ctx, resp)
@ -96,7 +91,7 @@ func List(ctx *gin.Context) {
} }
resp, err := service.PressReleasesProvider.List(ctx, &req) resp, err := service.PressReleasesProvider.List(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.EditPressReleasesFailed)) service.Error(ctx, err)
return return
} }
service.Success(ctx, resp) service.Success(ctx, resp)
@ -113,7 +108,7 @@ func Edit(ctx *gin.Context) {
req.OperatorId = int32(user.ID) req.OperatorId = int32(user.ID)
resp, err := service.PressReleasesProvider.Edit(ctx, &req) resp, err := service.PressReleasesProvider.Edit(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.EditPressReleasesFailed)) service.Error(ctx, err)
return return
} }
service.Success(ctx, resp) service.Success(ctx, resp)
@ -135,7 +130,7 @@ func Get(ctx *gin.Context) {
req.LangType = langType req.LangType = langType
resp, err := service.PressReleasesProvider.Get(ctx, &req) resp, err := service.PressReleasesProvider.Get(ctx, &req)
if err != nil { if err != nil {
service.Error(ctx, errors.New(common.GetPressReleasesFailed)) service.Error(ctx, err)
return return
} }
service.Success(ctx, resp) service.Success(ctx, resp)

View File

@ -1,394 +0,0 @@
package supplier
import (
"errors"
"fmt"
"fonchain-fiee/api/supplier"
"fonchain-fiee/pkg/logic"
"fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/service/upload"
"fonchain-fiee/pkg/utils"
"fonchain-fiee/pkg/utils/excel"
"os"
"time"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/google/uuid"
)
func GetSupplier(c *gin.Context) {
req := &supplier.GetSupplierRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.GetSupplier(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func CreateSupplier(c *gin.Context) {
req := &supplier.CreateSupplierRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.CreateSupplier(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func UpdateSupplier(c *gin.Context) {
req := &supplier.UpdateSupplierRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
info, err := service.SupplierProvider.GetSupplier(c, &supplier.GetSupplierRequest{Id: req.Id})
if err != nil {
service.Error(c, err)
return
}
if info.Status == 3 {
service.Error(c, errors.New("审核中不可修改")) //todo 修改:审核中并且存在审核人 不可修改
return
}
if req.Status != 1 && req.Status != 2 {
service.Error(c, errors.New("审批状态错误")) //todo 只允许前端暂存或提交审核申请
}
res, err := service.SupplierProvider.UpdateSupplier(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func GetSupplierList(c *gin.Context) {
req := &supplier.GetSupplierListRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.GetSupplierList(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func CreateOrganizeDictionary(c *gin.Context) {
req := &supplier.CreateOrganizeDictionaryRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.CreateOrganizeDictionary(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func GetOrganizeDictionaryList(c *gin.Context) {
req := &supplier.GetOrganizeDictionaryListRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.GetOrganizeDictionaryList(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func GetCountryRegionList(c *gin.Context) {
req := &supplier.GetCountryRegionListRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.GetCountryRegionList(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func CreateImportRecord(c *gin.Context) {
file, err := c.FormFile("file")
if err != nil {
service.Error(c, err)
}
safeFilename := fmt.Sprintf("%d", time.Now().Unix()) + "_" + file.Filename
userInfo := login.GetUserInfoFromC(c)
fileDir := fmt.Sprintf("/fiee/supplier/%s/%s_%s", time.Now().Format("2006-01-02"), userInfo.Name, safeFilename)
// 保存上传的文件到本地
if err = c.SaveUploadedFile(file, safeFilename); err != nil {
service.Error(c, err)
return
}
defer func() {
if err := os.Remove(safeFilename); err != nil {
// 处理删除文件失败的情况
fmt.Println("Failed to delete file:", err)
}
}()
inputUrl, err := upload.PutBosWithName(safeFilename, false, fileDir)
if err != nil {
service.Error(c, err)
return
}
supplierList, err := logic.ImportSupplier(safeFilename)
if err != nil {
service.Error(c, err)
return
}
if len(supplierList) == 0 {
service.Error(c, errors.New("导入数据为空"))
return
}
uuid, _ := uuid.NewUUID()
var SuccessNum uint64
var SupplierCodes []string
var ErrSupplierRes []*logic.ErrSupplierRes
for idx, i := range supplierList {
rowNum := idx + 1
if i.OwningEntityName == "" || i.LegalName == "" || i.CountryOrRegionName == "" || i.CompanyRegistrationNumber == "" || i.SupplierType == "" || i.ApprovalStatus == "" || i.ConnectedParty == "" {
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
ID: rowNum,
LegalName: i.LegalName,
Remark: "必填项存在空值",
})
continue
}
OwningEntityRes, _ := service.SupplierProvider.GetOrganizeDictionaryInfo(c, &supplier.CreateOrganizeDictionaryRequest{Name: i.OwningEntityName})
if OwningEntityRes == nil || OwningEntityRes.Id == 0 {
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
ID: rowNum,
LegalName: i.LegalName,
Remark: "所属组织不存在",
})
continue
}
countryRegionRes, _ := service.SupplierProvider.GetCountryRegionInfo(c, &supplier.GetCountryRegionInfoRequest{ZhAndCode: i.CountryOrRegionName})
if countryRegionRes == nil || countryRegionRes.Id == 0 {
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
ID: rowNum,
LegalName: i.LegalName,
Remark: "所属国家或地区不存在",
})
continue
}
var LastReviewDate string
if i.ApprovalDate != "" {
t, err := time.Parse("2006-01-02", i.ApprovalDate)
if err != nil {
LastReviewDate = ""
i.ApprovalDate = ""
} else {
LastReviewDate = t.AddDate(1, 0, 0).Format("2006-01-02")
}
}
createRes, err := service.SupplierProvider.CreateSupplier(c, &supplier.CreateSupplierRequest{
OwningEntityId: OwningEntityRes.Id,
LegalName: i.LegalName,
LocalName: i.LocalName,
AbbreviationName: i.AbbreviationName,
CountryOrRegionId: countryRegionRes.Id,
CompanyRegistrationNumber: i.CompanyRegistrationNumber,
SupplierType: i.SupplierType,
ApprovalStatus: i.ApprovalStatus,
ApprovalDate: i.ApprovalDate,
LastReviewDate: LastReviewDate,
LegalEntityType: i.LegalEntityType,
SanctionsCountryScreeningResult: i.SanctionsCountryScreeningResult,
KeyFinancial: i.KeyFinancial,
CompanyAddress: i.CompanyAddress,
PrimaryContact: i.PrimaryContact,
DataOwnerDepartment: i.DataOwnerDepartment,
BasicCompanyInformation: i.BasicCompanyInformation,
SupplementaryText: i.SupplementaryText,
Status: 1,
ConnectedParty: i.ConnectedParty,
})
if err != nil {
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
ID: rowNum,
LegalName: i.LegalName,
Remark: err.Error(),
})
continue
} else {
SupplierCodes = append(SupplierCodes, createRes.SupplierCode)
SuccessNum++
}
}
status := 2
outUrl := ""
if len(ErrSupplierRes) == 0 {
status = 1
} else {
var sheet1Columns = []string{"行数", "供应商法定全称", "错误信息"}
var sheet1 = excel.NewSheet("Sheet1", ErrSupplierRes, sheet1Columns)
ex, err := excel.NewExcelCreatorFromTemplate("./mistake.xlsx", "./supplier/excel/", "", sheet1)
ex.UseOption(excel.OptionFileNameSuffixWithUnixTime)
path, _, err := ex.WriteToFile()
outUrl, err = upload.PutBos(path, "", false)
if err != nil {
service.Error(c, err)
return
}
defer func() {
os.RemoveAll("./supplier")
}()
}
req := &supplier.CreateImportRecordRequest{
SupplierCodes: SupplierCodes,
Status: uint64(status),
UserId: userInfo.ID,
ToLeadUrl: inputUrl,
DeriveUrl: outUrl,
Uuid: uuid.String(),
SuccessNum: SuccessNum,
FailNum: uint64(len(ErrSupplierRes)),
}
_, err = service.SupplierProvider.CreateImportRecord(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, req)
return
}
func GetImportRecordInfo(c *gin.Context) {
req := &supplier.GetImportRecordRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
res, err := service.SupplierProvider.GetImportRecordInfo(c, req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
return
}
func GetExportList(c *gin.Context) {
req := &supplier.GetSupplierListRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
infoRes, err := service.SupplierProvider.GetSupplierList(c, req)
if err != nil {
service.Error(c, err)
return
}
// 定义标题列表
titleList := []string{
"状态/State", "使用组织/Owning Entity", "供应商唯一编码/SupplierUnique Code", "供应商法定全称(英文)/LegalName (English)", "供应商本地名称(如有)/LocalName (if applicable)",
"所在国家或地区/Country or Region", "公司注册编号/Company RegistrationNumber", "供应商类型/Supplier Type", "*是否关联方/Connected party", "准入状态/Approval Status", "准入日期/ApprovalDate",
"法律实体形式/Legal Entity Type", "制裁与高风险国家筛查结果/Sanctions & High-RiskCountry Screening Result", "关键财务与付款信息/Key Financial & Payment Information",
"公司地址/Company Address", "主要联系人、职位及联系方式/Primary Contact,Position&Details", "数据维护部门&人员/Data Owner Department/Personnel", "最后更新日期/Last Updated Date",
"公司信息概要/Summary of Basic Company Information",
}
// 定义数据结构
type DataInfo struct {
Status string
OwningEntity string
SupplierUniqueCode string
LegalName string
LocalName string
CountryOrRegion string
CompanyRegistrationNumber string
SupplierType string
ConnectedParty string
ApprovalStatus string
ApprovalDate string
LegalEntityType string
SanctionsCountryScreeningResult string
KeyFinancial string
CompanyAddress string
PrimaryContact string
DataOwnerDepartment string
UpdatedAt string
BasicCompanyInformation string
}
// 创建员工ID到DataInfo的映射
dataMap := make(map[string]*DataInfo)
statusMap := map[uint64]string{
1: "草稿",
2: "审核中",
3: "已驳回",
4: "已成功",
}
for _, info := range infoRes.Data {
dataMap[info.SupplierUniqueCode] = &DataInfo{
Status: statusMap[info.Status],
OwningEntity: info.OwningEntityName,
SupplierUniqueCode: info.SupplierUniqueCode,
LegalName: info.LegalName,
LocalName: info.LocalName,
CountryOrRegion: info.CountryOrRegionCode,
CompanyRegistrationNumber: info.CompanyRegistrationNumber,
SupplierType: info.SupplierType,
ConnectedParty: info.ConnectedParty,
ApprovalStatus: info.ApprovalStatus,
ApprovalDate: info.ApprovalDate,
LegalEntityType: info.LegalEntityType,
SanctionsCountryScreeningResult: info.SanctionsCountryScreeningResult,
KeyFinancial: info.KeyFinancial,
CompanyAddress: info.CompanyAddress,
PrimaryContact: info.PrimaryContact,
DataOwnerDepartment: info.DataOwnerDepartment,
UpdatedAt: info.UpdatedAt,
BasicCompanyInformation: info.BasicCompanyInformation,
}
}
// 生成最终数据列表
var dataList []interface{}
for _, data := range dataMap {
dataList = append(dataList, &[]any{
data.Status, data.OwningEntity, data.SupplierUniqueCode, data.LegalName, data.LocalName,
data.CountryOrRegion, data.CompanyRegistrationNumber, data.SupplierType, data.ConnectedParty, data.ApprovalStatus, data.ApprovalDate,
data.LegalEntityType, data.SanctionsCountryScreeningResult, data.KeyFinancial, data.CompanyAddress, data.PrimaryContact,
data.DataOwnerDepartment, data.UpdatedAt, data.BasicCompanyInformation,
})
}
// 生成Excel文件
content, err := utils.ToExcelByType(titleList, dataList, "slice", "")
if err != nil {
service.Error(c, err)
return
}
// 返回Excel文件
utils.ResponseXls(c, content, "供应商库")
return
}

View File

@ -10,6 +10,7 @@ import (
"fonchain-fiee/api/cast" "fonchain-fiee/api/cast"
"fonchain-fiee/cmd/config" "fonchain-fiee/cmd/config"
"fonchain-fiee/pkg/e" "fonchain-fiee/pkg/e"
modelCast "fonchain-fiee/pkg/model/cast"
"fonchain-fiee/pkg/model/login" "fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
castService "fonchain-fiee/pkg/service/cast" castService "fonchain-fiee/pkg/service/cast"
@ -376,11 +377,6 @@ func UpdateWorkImageWithTaskUUID(ctx *gin.Context) {
service.Error(ctx, errors.New("任务已中止,不能上传图文")) service.Error(ctx, errors.New("任务已中止,不能上传图文"))
return return
} }
resp, err := castService.UpdateWorkImageCore(ctx, req.UpdateWorkImageReq)
if err != nil {
service.Error(ctx, err)
return
}
if config.AppConfig.System.AppMode != "dev" { if config.AppConfig.System.AppMode != "dev" {
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
@ -398,6 +394,21 @@ func UpdateWorkImageWithTaskUUID(ctx *gin.Context) {
TelAreaCode: "86", TelAreaCode: "86",
} }
} }
req.ArtistName = infoResp.Name
req.ArtistPhone = infoResp.TelNum
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
if _, err = castService.CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeImageValue); err != nil {
service.Error(ctx, err)
return
}
newCtx := castService.NewCtxWithUserInfo(ctx)
req.Source = 1
resp, err := service.CastProvider.UpdateWorkImage(newCtx, req.UpdateWorkImageReq)
if err != nil {
service.Error(ctx, err)
return
}
// EmployeeName 和 EmployeeNum 从 toekn 里面拿 // EmployeeName 和 EmployeeNum 从 toekn 里面拿
userInfo := login.GetUserInfoFromC(ctx) userInfo := login.GetUserInfoFromC(ctx)
// 调用员工实际任务状态更新 // 调用员工实际任务状态更新
@ -414,32 +425,6 @@ func UpdateWorkImageWithTaskUUID(ctx *gin.Context) {
return return
} }
zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1)) zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1))
// 记录任务工作日志,如果失败不影响主流程
logReq := &bundle.CreateTaskWorkLogRequest{
AssignRecordsUUID: req.AssignRecordsUUID,
WorkUUID: resp.WorkUuid,
Title: req.Title,
ArtistUUID: req.ArtistUuid,
SubNum: infoResp.SubNum,
TelNum: infoResp.TelNum,
ArtistName: infoResp.Name,
OperationType: 3, // 3:完成任务
TaskType: 2, // 2:图片
TaskCount: 1,
OperatorName: userInfo.Name,
OperatorNum: userInfo.TelNum,
}
// 记录请求参数
zap.L().Info("CreateTaskWorkLog request", zap.Any("req", logReq))
logResp, err := service.BundleProvider.CreateTaskWorkLog(context.Background(), logReq)
if err != nil {
// 记录错误但不影响主流程
zap.L().Error("CreateTaskWorkLog failed", zap.Error(err), zap.Any("req", logReq))
} else {
zap.L().Info("CreateTaskWorkLog success", zap.Any("resp", logResp))
}
service.Success(ctx, resp) service.Success(ctx, resp)
return return
} }
@ -464,11 +449,6 @@ func UpdateWorkVideoWithUUID(ctx *gin.Context) {
service.Error(ctx, errors.New("任务已中止,不能上传视频")) service.Error(ctx, errors.New("任务已中止,不能上传视频"))
return return
} }
resp, err := castService.UpdateWorkVideoCore(ctx, req.UpdateWorkVideoReq)
if err != nil {
service.Error(ctx, err)
return
}
if config.AppConfig.System.AppMode != "dev" { if config.AppConfig.System.AppMode != "dev" {
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
@ -486,6 +466,21 @@ func UpdateWorkVideoWithUUID(ctx *gin.Context) {
TelAreaCode: "86", TelAreaCode: "86",
} }
} }
artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
if _, err = castService.CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeVideoValue); err != nil {
service.Error(ctx, err)
return
}
req.ArtistName = infoResp.Name
req.ArtistPhone = infoResp.TelNum
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
newCtx := castService.NewCtxWithUserInfo(ctx)
req.Source = 1
resp, err := service.CastProvider.UpdateWorkVideo(newCtx, req.UpdateWorkVideoReq)
if err != nil {
service.Error(ctx, err)
return
}
// EmployeeName 和 EmployeeNum 从 toekn 里面拿 // EmployeeName 和 EmployeeNum 从 toekn 里面拿
userInfo := login.GetUserInfoFromC(ctx) userInfo := login.GetUserInfoFromC(ctx)
// 调用员工实际任务状态更新 // 调用员工实际任务状态更新
@ -502,32 +497,6 @@ func UpdateWorkVideoWithUUID(ctx *gin.Context) {
return return
} }
zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1)) zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1))
// 记录任务工作日志,如果失败不影响主流程
logReq := &bundle.CreateTaskWorkLogRequest{
AssignRecordsUUID: req.AssignRecordsUUID,
WorkUUID: resp.WorkUuid,
Title: req.Title,
ArtistUUID: req.ArtistUuid,
SubNum: infoResp.SubNum,
TelNum: infoResp.TelNum,
ArtistName: infoResp.Name,
OperationType: 3, // 3:完成任务
TaskType: 1, // 1:视频
TaskCount: 1,
OperatorName: userInfo.Name,
OperatorNum: userInfo.TelNum,
}
// 记录请求参数
zap.L().Info("CreateTaskWorkLog request", zap.Any("req", logReq))
logResp, err := service.BundleProvider.CreateTaskWorkLog(context.Background(), logReq)
if err != nil {
// 记录错误但不影响主流程
zap.L().Error("CreateTaskWorkLog failed", zap.Error(err), zap.Any("req", logReq))
} else {
zap.L().Info("CreateTaskWorkLog success", zap.Any("resp", logResp))
}
service.Success(ctx, resp) service.Success(ctx, resp)
return return
} }
@ -707,32 +676,6 @@ func UpdateVideoScriptWithUUID(ctx *gin.Context) {
return return
} }
zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1)) zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1))
// 记录任务工作日志,如果失败不影响主流程
logReq := &bundle.CreateTaskWorkLogRequest{
AssignRecordsUUID: req.AssignRecordsUUID,
WorkUUID: resp.Uuid,
Title: req.Title,
ArtistUUID: req.ArtistUuid,
SubNum: infoResp.SubNum,
TelNum: infoResp.TelNum,
ArtistName: infoResp.Name,
OperationType: 3, // 3:完成任务
TaskType: 1, // 1:视频(脚本属于视频类型)
TaskCount: 1,
OperatorName: userInfo.Name,
OperatorNum: userInfo.TelNum,
}
// 记录请求参数
zap.L().Info("CreateTaskWorkLog request", zap.Any("req", logReq))
logResp, err := service.BundleProvider.CreateTaskWorkLog(context.Background(), logReq)
if err != nil {
// 记录错误但不影响主流程
zap.L().Error("CreateTaskWorkLog failed", zap.Error(err), zap.Any("req", logReq))
} else {
zap.L().Info("CreateTaskWorkLog success", zap.Any("resp", logResp))
}
service.Success(ctx, resp) service.Success(ctx, resp)
return return
} }

View File

@ -12,15 +12,14 @@ import (
"fonchain-fiee/pkg/model" "fonchain-fiee/pkg/model"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
"fonchain-fiee/pkg/utils" "fonchain-fiee/pkg/utils"
"io"
cmdConf "fonchain-fiee/cmd/config"
"github.com/disintegration/imaging" "github.com/disintegration/imaging"
"github.com/fonchain_enterprise/utils/objstorage" "github.com/fonchain_enterprise/utils/objstorage"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
uuid "github.com/satori/go.uuid" uuid "github.com/satori/go.uuid"
"io"
ffmpeg "github.com/u2takey/ffmpeg-go"
"go.uber.org/zap"
"io/ioutil" "io/ioutil"
"mime/multipart" "mime/multipart"
"net/url" "net/url"
@ -29,9 +28,6 @@ import (
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings" "strings"
ffmpeg "github.com/u2takey/ffmpeg-go"
"go.uber.org/zap"
) )
const ( const (
@ -220,7 +216,7 @@ func quickBos(file *multipart.FileHeader, mediaType string, mask string, source
return return
} }
} }
var objectName string = fmt.Sprintf("%s/%s/%s", config.ConfigData.Oss.BaseDir, cmdConf.AppConfig.System.AppMode, filePath) var objectName string = fmt.Sprintf("%s/%s/%s", config.ConfigData.Oss.BaseDir, config.Env, filePath)
BOSClient, _ := objstorage.NewOSS(os.Getenv(config.ConfigData.Oss.AccessKeyId), os.Getenv(config.ConfigData.Oss.AccessKeySecret), os.Getenv(config.ConfigData.Oss.Endpoint)) BOSClient, _ := objstorage.NewOSS(os.Getenv(config.ConfigData.Oss.AccessKeyId), os.Getenv(config.ConfigData.Oss.AccessKeySecret), os.Getenv(config.ConfigData.Oss.Endpoint))
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), objectName, fileBytes) _, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), objectName, fileBytes)
if err != nil { if err != nil {
@ -294,7 +290,7 @@ func PutBos(filePath string, mediaType string, needRemove bool) (url string, err
} }
} }
filePath = strings.Replace(filePath, model.MediaPath, "", 1) filePath = strings.Replace(filePath, model.MediaPath, "", 1)
var objectName string = fmt.Sprintf("%s/%s%s", config.ConfigData.Oss.BaseDir, cmdConf.AppConfig.System.AppMode, filePath) var objectName string = fmt.Sprintf("%s/%s%s", config.ConfigData.Oss.BaseDir, config.Env, filePath)
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), objectName, fileBytes) _, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), objectName, fileBytes)
if err != nil { if err != nil {
fmt.Println("=== PutBos PutObject err ", err) fmt.Println("=== PutBos PutObject err ", err)
@ -351,30 +347,3 @@ func getEnvDir(cloudStoreSubPath string) (ep string) {
ep, _ = url.JoinPath("fiee", cloudStoreSubPath) ep, _ = url.JoinPath("fiee", cloudStoreSubPath)
return ep return ep
} }
func PutBosWithName(filePath string, needRemove bool, ossPath string) (url string, err error) {
BOSClient, err := objstorage.NewOSS(os.Getenv(config.ConfigData.Oss.AccessKeyId), os.Getenv(config.ConfigData.Oss.AccessKeySecret), os.Getenv(config.ConfigData.Oss.Endpoint))
//BOSClient, err := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint)
if err != nil {
//logger.Errorf("PutBosWithName err1 ", err)
err = errors.New(e.GetMsg(e.ErrorUploadBos))
return
}
if ossPath == "" {
ossPath = filePath[1:]
}
var objectName string = fmt.Sprintf("%s/%s%s", config.ConfigData.Oss.BaseDir, cmdConf.AppConfig.System.AppMode, ossPath)
_, err = BOSClient.PutObject(os.Getenv(config.ConfigData.Oss.BucketName), objectName, filePath)
//_, err = BOSClient.PutObject(config.ConfigData.Oss.BucketName, objectName, filePath)
if err != nil {
//logger.Errorf("PutBosWithName err2 ", err)
err = errors.New(e.GetMsg(e.ErrorUploadBos))
return
}
//删除本地文件
if needRemove {
_ = os.Remove(filePath)
}
url = fmt.Sprintf("%s/%s", os.Getenv(config.ConfigData.Oss.CdnHost), objectName)
//url = fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, objectName)
return
}

View File

@ -1,381 +0,0 @@
// Package excel -----------------------------
// @file : templateInter.go
// @author : JJXu
// @contact : wavingbear@163.com
// @time : 2022/7/23 15:34
// -------------------------------------------
package excel
import (
"bytes"
"errors"
"fmt"
"io"
"log"
"os"
"path/filepath"
"reflect"
"sync"
"github.com/tealeg/xlsx"
"github.com/xuri/excelize/v2"
)
var (
ErrSheetNotExist = errors.New("sheet does not exist")
ErrSheetDataFormatNotSupport = errors.New("sheet data format not support")
//ErrSheetNameNotInTemplate = errors.New("sheet name not in emailTemplate")
)
// ======================================================================================================================
//
// Sheet define
type HeaderRow struct {
RowNum int //行号
Values []string
}
// 抽象工作簿
type Sheet interface {
GetData() any //数据支持struct、[]struct、[]*struct三种类型
SheetName() string //表名称
SheetHeaders() []string //表头名称,没有则跳过插入表头的步骤
GetJsonFiledList() []string //指定字段的排列顺序,默认按照结构体中的顺序排列(表头与数据没有关联,使用这个指定字段插入顺序)
}
// 实例化工作簿,使用模板生成excel的话用这个
func NewTemplateSheet(sheetName string, datas any) Sheet {
return &newSheetDefine{
Datas: datas,
Name: sheetName,
}
}
// 实例化工作簿不通过模板生成excel的话用这个
func NewSheet(sheetName string, datas any, headers []string, jsonFiledList ...[]string) Sheet {
st := &newSheetDefine{
Datas: datas,
Name: sheetName,
Headers: headers,
}
if jsonFiledList != nil {
st.JsonFiledList = jsonFiledList[0]
}
return st
}
// 定义一个能够通用的工作簿结构此结构必须遵循Sheet接口规范
type newSheetDefine struct {
Datas any
Name string
Headers []string
JsonFiledList []string
}
func (s *newSheetDefine) GetData() any {
return s.Datas
}
func (s *newSheetDefine) SheetName() string {
return s.Name
}
func (s *newSheetDefine) SheetHeaders() []string {
return s.Headers
}
func (s *newSheetDefine) GetJsonFiledList() []string {
return s.JsonFiledList
}
//======================================================================================================================
// Sheet define
// WriteToExcel 通过模板文件写入数据并另存为
// param fileName : 文件名
// param filesSuffix : 文件后缀名生成函数
// param fileRoot : 导出目录
// param templatePath : 模板文件路径
// param sheets : Sheet类型的数据类型为[]Sheet
// return path : 文件路径
// return exfileName : 导出后的文件名
// return err
func WriteToExcel(fileName string, fileRoot string, templatePath string, sheets ...Sheet) (path string, exFileName string, err error) {
var exc *Excel
exc, err = NewExcelCreatorFromTemplate(fileName, fileRoot, templatePath, sheets...)
if err != nil {
return
}
exc.UseOption(OptionFileNameSuffixWithUnixTime)
return exc.WriteToFile()
}
// ReadDataFromExcel 从excel文件读取数据
func ReadDataFromExcel(filepath string, sheetName string, handler func(rowIndex int, rows []string)) error {
ex := Excel{OriginFilePath: filepath}
return ex.ReadSheetData(sheetName, handler)
}
// ReadDataFromBytes 从io口读取数据用户http上传的附件
func ReadDataFromBytes(file io.Reader, sheetName string, handler func(rowIndex int, row []string)) error {
exce, err := excelize.OpenReader(file)
if err != nil {
return err
}
var ex = Excel{ex: exce}
return ex.ReadSheetData(sheetName, handler)
}
// 读取模板并创建工作表生成器
func NewExcelCreatorFromTemplate(fileName string, fileRoot string, templatePath string, sheets ...Sheet) (exc *Excel, err error) {
exc = &Excel{
SaveRoot: fileRoot,
SaveName: fileName,
OriginFilePath: templatePath,
rwLock: sync.RWMutex{},
}
if sheets != nil {
err = exc.AddSheets(sheets...)
if err != nil {
return
}
}
return exc, nil
}
// 新建文件并创建工作表生成器
func NewExcelCreatorWithNewFile(fileName string, fileRoot string, sheets ...Sheet) (exc *Excel, err error) {
return NewExcelCreatorFromTemplate(fileName, fileRoot, "", sheets...)
}
type Excel struct {
ex *excelize.File
SaveRoot string
SaveName string
OriginFilePath string
Sheets map[string]Sheet
rwLock sync.RWMutex
Opts []Option
After []Option
}
// UseOption 使用可选项
func (s *Excel) UseOption(opts ...Option) {
if opts != nil {
s.Opts = append(s.Opts, opts...)
}
}
func (s *Excel) AfterAddData(after ...Option) {
if after != nil {
s.After = append(s.After, after...)
}
}
// 添加工作簿
// 注意如果添加相同的工作簿,之前的会被覆盖
func (s *Excel) AddSheets(sheets ...Sheet) (err error) {
if s.Sheets == nil {
s.Sheets = make(map[string]Sheet, 0)
}
for _, sheet := range sheets {
var sheetName = sheet.SheetName()
s.Sheets[sheetName] = sheet
}
return
}
// 删除工作簿
func (s *Excel) DeleteSheets(sheetName string) error {
if s.Sheets == nil {
return nil
} else if s.Sheets[sheetName] != nil {
delete(s.Sheets, sheetName)
} else {
return ErrSheetNotExist
}
return nil
}
// 读取工作簿
func (s *Excel) ReadSheetData(sheetName string, handler func(rowIndex int, row []string)) (err error) {
if s.ex == nil {
s.ex, err = excelize.OpenFile(s.OriginFilePath)
if err != nil {
return
}
}
datas, err := s.ex.GetRows(sheetName)
for i, row := range datas {
handler(i, row)
}
return nil
}
// 写入到文件
func (s *Excel) WriteToFile() (path string, fileName string, err error) {
if s.ex == nil {
if s.OriginFilePath == "" {
s.ex = excelize.NewFile()
} else {
s.ex, err = excelize.OpenFile(s.OriginFilePath)
if err != nil {
return
}
}
}
if s.Opts != nil {
for _, opt := range s.Opts {
opt(s)
}
}
//插入数据
for sheetName, st := range s.Sheets {
//添加表头,没有定义则不插入
if st.SheetHeaders() != nil {
for i, c := range st.SheetHeaders() {
err = s.ex.SetCellValue(sheetName, GetCellIndex(1, i+1), c)
if err != nil {
fmt.Println(err.Error())
return
}
}
headerStyleID, errs := s.ex.NewStyle(NewDefaultHeaderStyle())
if errs != nil {
fmt.Println(errs)
err = errs
return
}
//表头设置为默认样式,边框加粗、字体加粗
if err = s.ex.SetCellStyle(st.SheetName(), "A1", GetCellIndex(1, len(st.SheetHeaders())), headerStyleID); err != nil {
return
}
}
//添加数据
var firstRow = s.getFirstEmptyRowIndex(s.ex, sheetName)
var SheetData = reflect.ValueOf(st.GetData())
var SheetType = reflect.TypeOf(st.GetData())
writerFunc, exists := writerMap[SheetData.Kind()]
if exists {
err = writerFunc(s, st, SheetData, SheetType, firstRow)
} else {
return "", "", ErrSheetDataFormatNotSupport
}
}
if s.After != nil {
for _, after := range s.After {
after(s)
}
}
//检测并生成目录
_ = os.MkdirAll(s.SaveRoot, os.ModePerm)
//保存
path = filepath.ToSlash(filepath.Join(s.SaveRoot, s.SaveName))
fileName = s.SaveName
s.rwLock.Lock()
if err = s.ex.SaveAs(path); err != nil {
log.Println(fmt.Sprintf("save file error :%v", err))
s.rwLock.Unlock()
return
}
s.rwLock.Unlock()
return
}
// getJsonFieldList 获取json字段列表
func (s *Excel) getJsonFieldList(sheetType reflect.Type) (tagList []string) {
t := sheetType.Elem()
if t.Kind() == reflect.Ptr {
t = t.Elem()
if t.Kind() != reflect.Struct {
return
}
}
for i := 0; i < t.NumField(); i++ {
var tag = t.Field(i).Tag.Get("json")
if tag != "" {
tagList = append(tagList, tag)
}
}
return
}
// dataToMap 数据转字典
func (s *Excel) dataToMap(sheet reflect.Value, sheetType reflect.Type) (dataMap map[string]any) {
dataMap = make(map[string]any)
t := sheetType.Elem()
//指针类型结构体拿真实的对象
if t.Kind() == reflect.Ptr {
t = t.Elem()
sheet = sheet.Elem()
}
for i := 0; i < t.NumField(); i++ {
var tag = t.Field(i).Tag.Get("json")
if tag != "" {
dataMap[t.Field(i).Tag.Get("json")] = sheet.Field(i).Interface()
}
}
return dataMap
}
// getFirstEmptyRowIndex 获取首个空行的索引位置
func (s *Excel) getFirstEmptyRowIndex(ex *excelize.File, sheetName string) (index int) {
rows, err := ex.GetRows(sheetName)
if err != nil {
return 1
}
return len(rows)
}
func ToExcel(titleList []string, dataList []interface{}) (content io.ReadSeeker) {
// 生成一个新的文件
file := xlsx.NewFile()
// 添加sheet页
sheet, _ := file.AddSheet("Sheet1")
// 插入表头
titleRow := sheet.AddRow()
for _, v := range titleList {
cell := titleRow.AddCell()
cell.Value = v
}
// 插入内容
for _, v := range dataList {
row := sheet.AddRow()
row.WriteStruct(v, -1)
}
var buffer bytes.Buffer
_ = file.Write(&buffer)
file.Save("1.xlsx")
content = bytes.NewReader(buffer.Bytes())
return
}
// 自动设置单元格宽度
func (s *Excel) autoResetCellWidth(sheetObj Sheet) {
// 获取最大字符宽度
maxWidths := make(map[int]int)
var sheetData = reflect.ValueOf(sheetObj.GetData())
var rowLen = 1
var columnLen = len(sheetObj.GetJsonFiledList())
if sheetData.Kind() == reflect.Slice {
rowLen = sheetData.Len()
}
limitWidth := 90
for col := 1; col <= columnLen; col++ {
var maxWidth int
for row := 0; row < rowLen; row++ {
value, _ := s.ex.GetCellValue(sheetObj.SheetName(), GetCellIndex(row+1, col))
width := len(value)
if width > limitWidth {
width = limitWidth
}
if width > maxWidth {
maxWidth = width
}
}
maxWidths[col] = maxWidth
}
// 设置列宽度
for col, width := range maxWidths {
colChar := GetColumnIndex(col)
s.ex.SetColWidth(sheetObj.SheetName(), colChar, colChar, float64(width+2))
}
}

View File

@ -1,52 +0,0 @@
// Package excel -----------------------------
// @file : options.go
// @author : JJXu
// @contact : wavingBear@163.com
// @time : 2022/12/19 12:41:40
// -------------------------------------------
package excel
import (
"fmt"
"path/filepath"
"strings"
"time"
)
type Option func(excel *Excel)
// func AddSaveFileSuffixWithUnixTime(excel *Excel) {
// excel.SaveName
// fmt.Sprintf("%v", time.Now().Unix())
// }
//
// 时间戳作为文件后缀
func OptionFileNameSuffixWithUnixTime(excel *Excel) {
ext := filepath.Ext(excel.SaveName)
name := strings.Split(excel.SaveName, ext)[0]
excel.SaveName = fmt.Sprintf("%s_%v%s", name, time.Now().Unix(), ext)
}
// 为第一行添加表头
func AfterAddHeader1(sheet Sheet, text string) func(excel *Excel) {
return func(excel *Excel) {
err := excel.ex.InsertRows(sheet.SheetName(), 1, 1)
if err != nil {
panic(err)
}
err = excel.ex.SetCellValue(sheet.SheetName(), GetCellIndex(1, 1), text)
if err != nil {
panic(err)
}
headerStyleID, errs := excel.ex.NewStyle(NewHeaderOneStyle())
if errs != nil {
fmt.Println(errs)
err = errs
return
}
//表头设置为默认样式,边框加粗、字体加粗
_ = excel.ex.SetCellStyle(sheet.SheetName(), "A1", GetCellIndex(1, len(sheet.SheetHeaders())), headerStyleID)
_ = excel.ex.MergeCell(sheet.SheetName(), "A1", GetCellIndex(1, len(sheet.SheetHeaders())))
}
}

View File

@ -1,54 +0,0 @@
// Package excel -----------------------------
// @file : style.go
// @author : JJXu
// @contact : wavingbear@163.com
// @time : 2023/9/1 13:50
// -------------------------------------------
package excel
import (
"github.com/xuri/excelize/v2"
)
func NewDefaultHeaderStyle() *excelize.Style {
return &excelize.Style{
Border: []excelize.Border{
{Type: "left", Color: "000000", Style: 2},
{Type: "top", Color: "000000", Style: 2},
{Type: "bottom", Color: "000000", Style: 2},
{Type: "right", Color: "000000", Style: 2},
},
Font: &excelize.Font{Bold: true, Size: 12},
Alignment: &excelize.Alignment{
Horizontal: "center",
},
}
}
func NewDefaultDataStyle() *excelize.Style {
return &excelize.Style{
Border: []excelize.Border{
{Type: "left", Color: "000000", Style: 1},
{Type: "bottom", Color: "000000", Style: 1},
{Type: "right", Color: "000000", Style: 1},
},
Font: &excelize.Font{Size: 12},
Alignment: &excelize.Alignment{
Horizontal: "left",
},
}
}
func NewHeaderOneStyle() *excelize.Style {
return &excelize.Style{
Border: []excelize.Border{
{Type: "left", Color: "000000", Style: 2},
{Type: "top", Color: "000000", Style: 2},
{Type: "bottom", Color: "000000", Style: 2},
{Type: "right", Color: "000000", Style: 2},
},
Font: &excelize.Font{Bold: true, Size: 14},
Alignment: &excelize.Alignment{
Horizontal: "center",
},
}
}

View File

@ -1,41 +0,0 @@
// Package utils -----------------------------
// @file : excelHelper.go
// @author : JJXu
// @contact : wavingbear@163.com
// @time : 2022/6/9 13:41
// -------------------------------------------
package excel
import (
"fmt"
"strconv"
)
// 行列坐标值转换为excel的坐标。注意row和columnCount的初始值都是1
func GetCellIndex(row int, columnCount int) string {
var column = GetColumnIndex(columnCount)
return fmt.Sprintf("%s%d", column, row)
}
// 获取excel的列索引
var columnIndices = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
func GetColumnIndex(num int) string {
num--
var column = columnIndices[num%26]
for num = num / 26; num > 0; num = num / 26 {
column = columnIndices[(num-1)%26] + column
num--
}
return column
}
func Int[T int | uint | uint8 | uint32 | uint64 | int32 | int64](value string) T {
v, _ := strconv.Atoi(value)
return T(v)
}
func Float[T float64 | float32](value string) T {
v, _ := strconv.ParseFloat(value, 64)
return T(v)
}

View File

@ -1,81 +0,0 @@
// Package excel -----------------------------
// @file : writer.go
// @author : JJXu
// @contact : wavingbear@163.com
// @time : 2023/9/1 14:11
// -------------------------------------------
package excel
import (
"errors"
"fmt"
"reflect"
)
var writerMap = map[reflect.Kind]func(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetType reflect.Type, firstRow int) error{
reflect.Slice: sliceWriter,
reflect.Struct: structWriter,
}
func RegisterWriter(dataKind reflect.Kind, function func(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetType reflect.Type, firstRow int) error) error {
if _, exists := writerMap[dataKind]; exists {
return errors.New(fmt.Sprintf("dataKind: %v has existed", dataKind))
}
writerMap[dataKind] = function
return nil
}
func sliceWriter(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetDataType reflect.Type, firstRow int) error {
var cellNameList = sheetObj.GetJsonFiledList()
if cellNameList == nil {
cellNameList = exc.getJsonFieldList(SheetDataType)
}
var rowLen = SheetData.Len()
for i := 0; i < rowLen; i++ {
var dataMap = exc.dataToMap(SheetData.Index(i), SheetDataType)
for column, v := range cellNameList {
var axis = GetCellIndex(i+firstRow+1, column+1)
err := exc.ex.SetCellValue(sheetObj.SheetName(), axis, dataMap[v])
if err != nil {
return err
}
}
}
//设置数据格式
dataStyleID, errs := exc.ex.NewStyle(NewDefaultDataStyle())
if errs != nil {
return errs
}
if err := exc.ex.SetCellStyle(sheetObj.SheetName(), GetCellIndex(firstRow+1, 1), GetCellIndex(rowLen+1, len(sheetObj.SheetHeaders())), dataStyleID); err != nil {
return err
}
//设置默认列宽
//exc.ex.SetColWidth(sheetObj.SheetName(), GetColumnIndex(1), GetColumnIndex(len(sheetObj.SheetHeaders())), 12.0)
exc.autoResetCellWidth(sheetObj)
return nil
}
func structWriter(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetType reflect.Type, firstRow int) error {
var cellNameList = exc.getJsonFieldList(SheetType)
var dataMap = exc.dataToMap(SheetData, SheetType)
for column, v := range cellNameList {
var axis = GetCellIndex(firstRow+1, column+1)
err := exc.ex.SetCellValue(sheetObj.SheetName(), axis, dataMap[v])
if err != nil {
fmt.Println(err.Error())
return err
}
}
//设置数据格式
dataStyleID, err := exc.ex.NewStyle(NewDefaultDataStyle())
if err != nil {
return err
}
if err = exc.ex.SetCellStyle(sheetObj.SheetName(), GetCellIndex(firstRow, 1), GetCellIndex(firstRow+1, len(sheetObj.SheetHeaders())), dataStyleID); err != nil {
return err
}
//设置默认列宽
//exc.ex.SetColWidth(sheetObj.SheetName(), GetColumnIndex(1), GetColumnIndex(len(sheetObj.SheetHeaders())), 12.0)
exc.autoResetCellWidth(sheetObj)
return nil
}

View File

@ -1,555 +0,0 @@
package img
import (
"bytes"
"context"
"crypto/sha256"
"encoding/hex"
"errors"
"fmt"
"image"
"image/color"
"image/gif"
"image/jpeg"
"image/png"
"io"
"net/http"
"net/url"
"os"
"path/filepath"
"strings"
"time"
"github.com/disintegration/imaging"
)
// ResizeMode controls how the source image is mapped to the target WxH.
//
// - ResizeModeFit: contain (keep aspect), no cropping; resulting image may be smaller than WxH
// - ResizeModeFill: cover + crop (center crop) to exactly WxH
// - ResizeModePad: keep aspect + pad (letterbox) to exactly WxH (no crop, no stretch)
//
// If you only pass a single dimension (e.g. W>0, H=0), Fit will keep aspect.
// Fill/Pad requires both W and H.
//
// Note: GIF input will be processed as a single frame (first frame).
// If you need animated GIF support, we can extend this later.
type ResizeMode string
const (
ResizeModeFit ResizeMode = "fit"
ResizeModeFill ResizeMode = "fill"
// ResizeModePad keeps aspect ratio (no crop, no stretch) and pads to exactly WxH.
// Typical use: 16:9 -> 1024x1024 with white/black bars.
ResizeModePad ResizeMode = "pad"
)
type Options struct {
TargetWidth int
TargetHeight int
MaxSizeMB float64
Mode ResizeMode
// PadColor is used only when Mode == ResizeModePad.
// Default: white.
PadColor color.Color
// OutputDir is where the processed image will be written.
// Default: ./runtime/tmp/images/processed
OutputDir string
// Timeout controls total download time.
// Default: 30s.
Timeout time.Duration
// MaxDownloadMB caps download size to protect memory/disk.
// Default: max( maxSizeMB*6, 30MB ).
MaxDownloadMB float64
// MinQuality is the minimum JPEG quality to try (1-100).
// Default: 10. If compression still can't meet MaxSizeMB, returns error.
MinQuality int
// MaxRetries controls how many quality adjustments to attempt.
// Default: 15.
MaxRetries int
// AllowResolutionReduction allows reducing resolution further if compression fails.
// Default: false.
AllowResolutionReduction bool
// ForceJPEG forces output to JPEG format even if input is PNG/GIF/etc.
// If image has alpha channel, it will be flattened to white background.
// Default: false.
ForceJPEG bool
}
// ProcessFromURL downloads an image from imgURL, resizes it, compresses it to <= MaxSizeMB,
// and returns the local output path.
//
// Contract:
// - imgURL: http/https
// - TargetWidth/TargetHeight: pixels, >=0
// - MaxSizeMB: >0
// - returns: absolute or relative file path (depending on OutputDir), and error
func ProcessFromURL(imgURL string, opt Options) (string, error) {
if strings.TrimSpace(imgURL) == "" {
return "", errors.New("imgURL is empty")
}
u, err := url.Parse(imgURL)
if err != nil || (u.Scheme != "http" && u.Scheme != "https") {
return "", errors.New("imgURL must be http/https")
}
if opt.MaxSizeMB <= 0 {
return "", errors.New("MaxSizeMB must be > 0")
}
if opt.TargetWidth < 0 || opt.TargetHeight < 0 {
return "", errors.New("TargetWidth/TargetHeight must be >= 0")
}
if opt.TargetWidth == 0 && opt.TargetHeight == 0 {
return "", errors.New("TargetWidth and TargetHeight cannot both be 0")
}
if opt.Mode == "" {
opt.Mode = ResizeModeFit
}
if opt.Mode != ResizeModeFit && opt.Mode != ResizeModeFill && opt.Mode != ResizeModePad {
return "", errors.New("invalid resize Mode")
}
if (opt.Mode == ResizeModeFill || opt.Mode == ResizeModePad) && (opt.TargetWidth == 0 || opt.TargetHeight == 0) {
return "", errors.New("fill/pad mode requires both TargetWidth and TargetHeight")
}
if opt.Timeout <= 0 {
opt.Timeout = 30 * time.Second
}
if opt.OutputDir == "" {
opt.OutputDir = filepath.FromSlash("./runtime/tmp/images/processed")
}
if opt.MaxDownloadMB <= 0 {
opt.MaxDownloadMB = opt.MaxSizeMB * 6
if opt.MaxDownloadMB < 30 {
opt.MaxDownloadMB = 30
}
if opt.MaxDownloadMB > 200 {
opt.MaxDownloadMB = 200
}
}
if opt.MinQuality <= 0 {
opt.MinQuality = 10
}
if opt.MinQuality > 100 {
opt.MinQuality = 100
}
if opt.MaxRetries <= 0 {
opt.MaxRetries = 15
}
// Ensure output dir exists.
if err := os.MkdirAll(opt.OutputDir, os.ModePerm); err != nil {
return "", err
}
ctx, cancel := context.WithTimeout(context.Background(), opt.Timeout)
defer cancel()
data, contentType, err := downloadWithLimit(ctx, imgURL, int64(opt.MaxDownloadMB*1024*1024))
if err != nil {
return "", err
}
img, fmtName, err := decodeImage(data, contentType)
if err != nil {
return "", err
}
// Check if image already meets requirements
if alreadyMeetsRequirements(img, data, opt) {
return "", nil
}
img = applyResize(img, opt)
// Determine output format
outExt := ".jpg"
outFormat := "jpeg"
if opt.ForceJPEG {
// Force JPEG output, flatten alpha if needed
outFormat = "jpeg"
outExt = ".jpg"
if imageHasAlpha(img) {
img = flattenToWhite(img)
}
} else {
// Auto-detect: if image has alpha, output PNG; otherwise JPEG
hasAlpha := imageHasAlpha(img)
if hasAlpha {
outExt = ".png"
outFormat = "png"
}
}
// Create a stable file name based on url + options + content signature.
h := sha256.New()
h.Write([]byte(imgURL))
h.Write([]byte(fmt.Sprintf("|%d|%d|%f|%s|%s", opt.TargetWidth, opt.TargetHeight, opt.MaxSizeMB, opt.Mode, outFormat)))
h.Write(data[:minInt(len(data), 1024)])
name := hex.EncodeToString(h.Sum(nil))[:32] + outExt
outPath := filepath.Join(opt.OutputDir, name)
maxBytes := int64(opt.MaxSizeMB * 1024 * 1024)
encoded, err := encodeUnderSize(img, outFormat, maxBytes, opt.MinQuality, opt.MaxRetries)
if err != nil {
// Fallback: if PNG can't fit, try JPEG (dropping alpha with white background).
if outFormat == "png" {
flattened := flattenToWhite(img)
encoded, err = encodeUnderSize(flattened, "jpeg", maxBytes, opt.MinQuality, opt.MaxRetries)
if err == nil {
outPath = strings.TrimSuffix(outPath, filepath.Ext(outPath)) + ".jpg"
} else {
// If AllowResolutionReduction is true, try reducing resolution
if opt.AllowResolutionReduction {
return tryWithReducedResolution(img, opt, outPath, maxBytes)
}
return "", err
}
} else {
// If AllowResolutionReduction is true, try reducing resolution
if opt.AllowResolutionReduction {
return tryWithReducedResolution(img, opt, outPath, maxBytes)
}
return "", err
}
}
tmpPath := outPath + ".tmp"
if err := os.WriteFile(tmpPath, encoded, 0o644); err != nil {
return "", err
}
if err := os.Rename(tmpPath, outPath); err != nil {
_ = os.Remove(tmpPath)
return "", err
}
_ = fmtName // reserved for future behavior
return outPath, nil
}
func downloadWithLimit(ctx context.Context, imgURL string, maxBytes int64) ([]byte, string, error) {
req, err := http.NewRequestWithContext(ctx, http.MethodGet, imgURL, nil)
if err != nil {
return nil, "", err
}
// Reasonable defaults; could be overridden later.
req.Header.Set("User-Agent", "fonchain-tools/1.0")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, "", err
}
defer func() { _ = resp.Body.Close() }()
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
return nil, "", fmt.Errorf("download failed: %s", resp.Status)
}
if resp.ContentLength > 0 && resp.ContentLength > maxBytes {
return nil, "", fmt.Errorf("remote file too large: %d > %d", resp.ContentLength, maxBytes)
}
lr := &io.LimitedReader{R: resp.Body, N: maxBytes + 1}
b, err := io.ReadAll(lr)
if err != nil {
return nil, "", err
}
if int64(len(b)) > maxBytes {
return nil, "", fmt.Errorf("download exceeded limit: %d > %d", len(b), maxBytes)
}
return b, resp.Header.Get("Content-Type"), nil
}
func decodeImage(data []byte, contentType string) (image.Image, string, error) {
// Register gif (jpeg/png already registered) for Decode.
_ = gif.GIF{}
reader := bytes.NewReader(data)
img, fmtName, err := image.Decode(reader)
if err == nil {
return img, fmtName, nil
}
// Some servers set odd content-type; try simple sniff.
_ = contentType
return nil, "", fmt.Errorf("decode image failed: %w", err)
}
func applyResize(img image.Image, opt Options) image.Image {
w := opt.TargetWidth
h := opt.TargetHeight
srcW := img.Bounds().Dx()
srcH := img.Bounds().Dy()
if srcW <= 0 || srcH <= 0 {
return img
}
switch opt.Mode {
case ResizeModeFill:
return imaging.Fill(img, w, h, imaging.Center, imaging.Lanczos)
case ResizeModeFit:
// If only one dimension is provided, keep aspect.
if w == 0 {
w = int(float64(srcW) * (float64(h) / float64(srcH)))
if w < 1 {
w = 1
}
}
if h == 0 {
h = int(float64(srcH) * (float64(w) / float64(srcW)))
if h < 1 {
h = 1
}
}
// imaging.Fit ensures the result fits within w,h without cropping.
return imaging.Fit(img, w, h, imaging.Lanczos)
case ResizeModePad:
bg := opt.PadColor
if bg == nil {
bg = color.White
}
// First, fit within WxH (no crop).
fitted := imaging.Fit(img, w, h, imaging.Lanczos)
// Then, paste centered onto WxH canvas.
canvas := imaging.New(w, h, bg)
x := (w - fitted.Bounds().Dx()) / 2
y := (h - fitted.Bounds().Dy()) / 2
return imaging.Paste(canvas, fitted, image.Pt(x, y))
default:
return img
}
}
func encodeUnderSize(img image.Image, format string, maxBytes int64, minQuality, maxRetries int) ([]byte, error) {
if maxBytes <= 0 {
return nil, errors.New("maxBytes must be > 0")
}
switch format {
case "jpeg":
// Binary search quality.
lo, hi := minQuality, 92
var best []byte
iterations := 0
maxIterations := maxInt(8, maxRetries/2)
for i := 0; i < maxIterations && lo <= hi; i++ {
iterations++
q := (lo + hi) / 2
b, err := encodeJPEG(img, q)
if err != nil {
return nil, err
}
if int64(len(b)) <= maxBytes {
best = b
lo = q + 1
} else {
hi = q - 1
}
}
if best != nil {
return best, nil
}
// Try more aggressive qualities from minQuality down to 1
qualities := []int{}
for q := minQuality; q >= 1; q -= 5 {
qualities = append(qualities, q)
}
// Ensure we try the lowest qualities
if minQuality > 3 {
qualities = append(qualities, 3, 1)
}
var lastSize int64
for _, q := range qualities {
if iterations >= maxRetries {
break
}
iterations++
b, err := encodeJPEG(img, q)
if err != nil {
return nil, err
}
lastSize = int64(len(b))
if lastSize <= maxBytes {
return b, nil
}
}
sizeMB := float64(lastSize) / (1024 * 1024)
targetMB := float64(maxBytes) / (1024 * 1024)
return nil, fmt.Errorf("cannot compress to %.2fMB (best: %.2fMB at quality %d after %d attempts). Consider increasing MaxSizeMB or enabling AllowResolutionReduction",
targetMB, sizeMB, minQuality, iterations)
case "png":
// PNG size depends heavily on content; try best compression.
b, err := encodePNG(img, png.BestCompression)
if err != nil {
return nil, err
}
if int64(len(b)) <= maxBytes {
return b, nil
}
sizeMB := float64(len(b)) / (1024 * 1024)
targetMB := float64(maxBytes) / (1024 * 1024)
return nil, fmt.Errorf("PNG cannot compress to %.2fMB (got %.2fMB). Consider using JPEG format or enabling AllowResolutionReduction",
targetMB, sizeMB)
default:
return nil, errors.New("unsupported output format")
}
}
func encodeJPEG(img image.Image, quality int) ([]byte, error) {
var buf bytes.Buffer
// Use 4:2:0 subsampling (default) for smaller size.
err := jpeg.Encode(&buf, img, &jpeg.Options{Quality: quality})
if err != nil {
return nil, err
}
return buf.Bytes(), nil
}
func encodePNG(img image.Image, level png.CompressionLevel) ([]byte, error) {
var buf bytes.Buffer
enc := png.Encoder{CompressionLevel: level}
if err := enc.Encode(&buf, img); err != nil {
return nil, err
}
return buf.Bytes(), nil
}
func imageHasAlpha(img image.Image) bool {
switch img.(type) {
case *image.NRGBA, *image.NRGBA64, *image.RGBA, *image.RGBA64, *image.Alpha, *image.Alpha16, *image.Paletted:
// Need to inspect pixels if we want exactness; but this is good enough and stable.
return true
default:
return false
}
}
func flattenToWhite(img image.Image) image.Image {
b := img.Bounds()
dst := image.NewRGBA(b)
// Fill with white.
for y := b.Min.Y; y < b.Max.Y; y++ {
for x := b.Min.X; x < b.Max.X; x++ {
dst.Set(x, y, image.White)
}
}
// Draw original image over white background.
return imaging.Overlay(dst, img, image.Pt(0, 0), 1.0)
}
func minInt(a, b int) int {
if a < b {
return a
}
return b
}
func maxInt(a, b int) int {
if a > b {
return a
}
return b
}
// alreadyMeetsRequirements checks if the image already satisfies the size and dimension requirements
func alreadyMeetsRequirements(img image.Image, data []byte, opt Options) bool {
// Check file size
maxBytes := int64(opt.MaxSizeMB * 1024 * 1024)
if int64(len(data)) > maxBytes {
return false
}
// Check dimensions based on mode
srcW := img.Bounds().Dx()
srcH := img.Bounds().Dy()
targetW := opt.TargetWidth
targetH := opt.TargetHeight
switch opt.Mode {
case ResizeModeFit:
// For fit mode, check if image is already within or equal to target dimensions
if targetW > 0 && srcW > targetW {
return false
}
if targetH > 0 && srcH > targetH {
return false
}
// If only one dimension is specified, check aspect ratio compatibility
if targetW > 0 && targetH == 0 && srcW <= targetW {
return true
}
if targetH > 0 && targetW == 0 && srcH <= targetH {
return true
}
if targetW > 0 && targetH > 0 && srcW <= targetW && srcH <= targetH {
return true
}
return false
case ResizeModeFill, ResizeModePad:
// For fill/pad mode, image must be exactly the target dimensions
if srcW != targetW || srcH != targetH {
return false
}
return true
default:
return false
}
}
// tryWithReducedResolution attempts to compress by progressively reducing resolution
func tryWithReducedResolution(img image.Image, opt Options, outPath string, maxBytes int64) (string, error) {
bounds := img.Bounds()
w := bounds.Dx()
h := bounds.Dy()
// Try reducing resolution in steps: 90%, 80%, 70%, 60%, 50%
reductions := []float64{0.9, 0.8, 0.7, 0.6, 0.5}
for _, factor := range reductions {
newW := int(float64(w) * factor)
newH := int(float64(h) * factor)
if newW < 100 || newH < 100 {
break // Don't reduce too much
}
resized := imaging.Resize(img, newW, newH, imaging.Lanczos)
// Try to encode with reduced resolution
encoded, err := encodeUnderSize(resized, "jpeg", maxBytes, opt.MinQuality, opt.MaxRetries/2)
if err == nil {
// Success! Save it
tmpPath := outPath + ".tmp"
if err := os.WriteFile(tmpPath, encoded, 0o644); err != nil {
return "", err
}
if err := os.Rename(tmpPath, outPath); err != nil {
_ = os.Remove(tmpPath)
return "", err
}
return outPath, nil
}
}
targetMB := float64(maxBytes) / (1024 * 1024)
return "", fmt.Errorf("cannot compress to %.2fMB even after reducing resolution to 50%%. Original size too large", targetMB)
}

View File

@ -1,9 +1,6 @@
package utils package utils
import ( import "strings"
"regexp"
"strings"
)
// CleanString 移除所有空白字符 // CleanString 移除所有空白字符
func CleanString(s string) string { func CleanString(s string) string {
@ -21,33 +18,3 @@ func TruncateString(s string, maxLen int) string {
} }
return string(runes[:maxLen]) return string(runes[:maxLen])
} }
// ExtractTags 从文本中提取标签,标签以 # 开头,后面不能直接跟空格
func ExtractTags(s string) []string {
if len(s) == 0 {
return []string{}
}
re := regexp.MustCompile(`#[^\s#\p{P}]+`)
matches := re.FindAllString(s, -1)
tags := make([]string, 0, len(matches))
for _, match := range matches {
// 去掉开头的 #,只保留标签内容
tag := match[1:]
if len(tag) > 0 {
tags = append(tags, tag)
}
}
return tags
}
// 去掉自动标签里面多余的引号
func CleanAutoHashtagsQuote(input string) string {
if input == "" {
return ""
}
cleaned := strings.ReplaceAll(input, "\\\"", "")
cleaned = strings.ReplaceAll(cleaned, "\"", "")
return cleaned
}