From 150ce674ad52d08f87d1be7de84b9708c55fd101 Mon Sep 17 00:00:00 2001 From: Sean Du Date: Mon, 26 Jan 2026 08:09:55 +0800 Subject: [PATCH] Implement more endpoints & overhaul [2/n] Drop LevelDB and move all the things to SQLite. Implemented endpoints: /api /api /live/continue /live/partyList /unit/favoriteAccessory (WIP) /unit/sale Signed-off-by: Sean Du --- README.md | 2 - assets/.gitignore | 1 + assets/main.db | Bin 4317184 -> 5480448 bytes assets/serverdata/accessoryTab.json | 185 +++++++ assets/serverdata/love.json | 2 +- assets/serverdata/partylist.json | 215 -------- go.mod | 4 +- go.sum | 4 +- internal/constant/constant.go | 17 + internal/constant/errorcode.go | 7 + internal/handler/album/seriesall.go | 12 +- internal/handler/announce/checkstate.go | 6 +- internal/handler/api/album/all.go | 8 +- internal/handler/api/award/info.go | 12 +- internal/handler/api/background/info.go | 12 +- internal/handler/api/banner/list.go | 8 +- internal/handler/api/challenge/info.go | 4 +- internal/handler/api/costume/list.go | 8 +- internal/handler/api/eventscenario/status.go | 14 +- internal/handler/api/exchange/owningpoint.go | 10 +- internal/handler/api/live/schedule.go | 40 +- internal/handler/api/live/status.go | 16 +- internal/handler/api/liveicon/info.go | 6 +- internal/handler/api/livese/info.go | 6 +- internal/handler/api/login/topinfo.go | 8 +- internal/handler/api/login/topinfoonce.go | 8 +- internal/handler/api/marathon/info.go | 4 +- .../handler/api/multiunit/scenariostatus.go | 12 +- internal/handler/api/museum/info.go | 10 +- .../handler/api/navigation/specialcutin.go | 6 +- internal/handler/api/notice/marquee.go | 6 +- internal/handler/api/payment/productlist.go | 16 +- internal/handler/api/profile/cardranking.go | 4 +- internal/handler/api/profile/info.go | 94 ++-- internal/handler/api/profile/livecnt.go | 6 +- internal/handler/api/scenario/status.go | 10 +- internal/handler/api/subscenario/status.go | 10 +- internal/handler/api/unit/accessoryall.go | 10 +- .../handler/api/unit/accessorymaterialall.go | 17 + internal/handler/api/unit/accessorytab.go | 20 + internal/handler/api/unit/all.go | 48 +- internal/handler/api/unit/deckinfo.go | 16 +- .../handler/api/unit/removableskillinfo.go | 20 +- internal/handler/api/unit/supporterall.go | 8 +- internal/handler/api/unit/unit.go | 4 + internal/handler/api/user/getnavi.go | 8 +- internal/handler/api/user/info.go | 35 +- internal/handler/award/set.go | 8 +- internal/handler/background/set.go | 8 +- internal/handler/download/additional.go | 10 +- internal/handler/download/batch.go | 10 +- internal/handler/download/event.go | 4 +- internal/handler/download/update.go | 10 +- internal/handler/download/url.go | 8 +- internal/handler/event/list.go | 10 +- internal/handler/gdpr/get.go | 6 +- internal/handler/ghome/account/active.go | 6 +- internal/handler/ghome/account/initialize.go | 6 +- internal/handler/ghome/account/login.go | 110 ++-- internal/handler/ghome/account/loginauto.go | 22 +- internal/handler/ghome/account/reportrole.go | 4 +- internal/handler/ghome/basic/getcode.go | 4 +- .../handler/ghome/basic/getproductlist.go | 6 +- internal/handler/ghome/basic/handshake.go | 16 +- internal/handler/ghome/basic/loginarea.go | 6 +- internal/handler/ghome/basic/publickey.go | 6 +- internal/handler/ghome/guest/status.go | 6 +- internal/handler/ghome/misc/agreement.go | 6 +- internal/handler/ghome/misc/integration.go | 6 +- internal/handler/lbonus/execute.go | 38 +- internal/handler/live/continue.go | 30 ++ internal/handler/live/gameover.go | 9 +- internal/handler/live/partylist.go | 82 ++- internal/handler/live/play.go | 299 +++++------ internal/handler/live/precisescore.go | 257 ++++++--- internal/handler/live/reward.go | 181 +++---- internal/handler/login/authkey.go | 20 +- internal/handler/login/login.go | 18 +- internal/handler/multiunit/scenariostartup.go | 8 +- internal/handler/museum/info.go | 10 +- internal/handler/notice/friendgreeting.go | 6 +- internal/handler/notice/friendvariety.go | 6 +- .../handler/notice/usergreetinghistory.go | 6 +- internal/handler/payment/productlist.go | 6 +- internal/handler/personalnotice/get.go | 6 +- internal/handler/profile/register.go | 8 +- internal/handler/scenario/startup.go | 8 +- internal/handler/subscenario/startup.go | 8 +- internal/handler/tos/check.go | 6 +- internal/handler/unit/deck.go | 73 +-- internal/handler/unit/deckname.go | 6 +- internal/handler/unit/favorite.go | 21 +- internal/handler/unit/favoriteaccessory.go | 33 ++ .../handler/unit/removableskillequipment.go | 8 +- internal/handler/unit/sale.go | 99 ++++ internal/handler/unit/setdisplayrank.go | 21 +- internal/handler/unit/wearaccessory.go | 8 +- internal/handler/user/changename.go | 4 +- internal/handler/user/changenavi.go | 4 +- internal/handler/user/setnotificationtoken.go | 4 +- internal/handler/user/userinfo.go | 36 +- internal/handler/webui/login.go | 12 +- internal/handler/webui/upload.go | 86 +-- internal/model/accessory/accessory.go | 11 + internal/model/ghome/devicekey.go | 7 + internal/model/login/authkey.go | 9 + internal/model/unit/commonunitdata.go | 70 +++ internal/model/unit/unitm.go | 38 ++ internal/model/user/useraccessorywear.go | 2 +- internal/model/user/userdeck.go | 2 +- internal/model/user/userdeckunit.go | 11 +- internal/model/user/userkey.go | 2 +- internal/model/user/userlivegoal.go | 11 + internal/model/user/userliveinprogress.go | 7 + internal/model/user/userliverecord.go | 144 +++++ internal/model/user/userpref.go | 2 +- internal/model/user/users.go | 2 +- internal/model/user/userunit.go | 2 +- internal/model/user/userunitdata.go | 11 + internal/model/user/userunitskillequip.go | 2 +- internal/schema/album/seriesall.go | 2 +- internal/schema/announce/checkstate.go | 2 +- internal/schema/api/album/all.go | 2 +- internal/schema/api/api.go | 2 +- internal/schema/api/award/info.go | 2 +- internal/schema/api/background/info.go | 2 +- internal/schema/api/banner/list.go | 2 +- internal/schema/api/challenge/info.go | 2 +- internal/schema/api/costume/list.go | 2 +- internal/schema/api/eventscenario/status.go | 2 +- internal/schema/api/exchange/owningpoint.go | 2 +- internal/schema/api/live/schedule.go | 2 +- internal/schema/api/live/status.go | 2 +- internal/schema/api/liveicon/info.go | 2 +- internal/schema/api/livese/info.go | 2 +- internal/schema/api/login/topinfo.go | 2 +- internal/schema/api/login/topinfoonce.go | 2 +- internal/schema/api/marathon/info.go | 2 +- .../schema/api/multiunit/scenariostatus.go | 2 +- internal/schema/api/museum/info.go | 2 +- .../schema/api/navigation/specialcutin.go | 2 +- internal/schema/api/notice/marquee.go | 2 +- internal/schema/api/payment/productlist.go | 4 +- internal/schema/api/profile/cardranking.go | 11 +- internal/schema/api/profile/info.go | 2 +- internal/schema/api/profile/livecnt.go | 2 +- internal/schema/api/scenario/status.go | 2 +- internal/schema/api/subscenario/status.go | 2 +- internal/schema/api/unit/accessoryall.go | 2 +- .../schema/api/unit/accessorymaterialall.go | 17 + internal/schema/api/unit/accessorytab.go | 22 + internal/schema/api/unit/all.go | 2 +- internal/schema/api/unit/deckinfo.go | 4 +- .../schema/api/unit/removableskillinfo.go | 2 +- internal/schema/api/unit/supporterall.go | 2 +- internal/schema/api/user/getnavi.go | 2 +- internal/schema/api/user/info.go | 46 +- internal/schema/award/set.go | 2 +- internal/schema/background/set.go | 2 +- internal/schema/download/additional.go | 2 +- internal/schema/download/batch.go | 2 +- internal/schema/download/event.go | 2 +- internal/schema/download/update.go | 2 +- internal/schema/download/url.go | 2 +- internal/schema/event/list.go | 2 +- internal/schema/gdpr/get.go | 2 +- internal/schema/ghome/account.go | 2 +- internal/schema/ghome/basic.go | 2 +- internal/schema/ghome/guest.go | 2 +- internal/schema/ghome/misc.go | 2 +- internal/schema/lbonus/execute.go | 2 +- internal/schema/live/continue.go | 13 + internal/schema/live/gameover.go | 2 +- internal/schema/live/partylist.go | 55 ++ internal/schema/live/play.go | 10 +- internal/schema/live/precisescore.go | 30 +- internal/schema/live/reward.go | 94 +--- internal/schema/login/authkey.go | 2 +- internal/schema/login/login.go | 2 +- internal/schema/multiunit/scenariostartup.go | 2 +- internal/schema/museum/info.go | 2 +- internal/schema/notice/friendgreeting.go | 2 +- internal/schema/notice/friendvariety.go | 2 +- internal/schema/notice/usergreetinghistory.go | 2 +- internal/schema/payment/productlist.go | 18 +- internal/schema/personalnotice/get.go | 2 +- internal/schema/profile/register.go | 2 +- internal/schema/scenario/startup.go | 2 +- internal/schema/subscenario/startup.go | 2 +- internal/schema/tos/check.go | 2 +- internal/schema/unit/deck.go | 2 +- internal/schema/unit/deckname.go | 2 +- internal/schema/unit/favorite.go | 12 +- .../schema/unit/removableskillequipment.go | 2 +- internal/schema/unit/sale.go | 48 ++ internal/schema/unit/setdisplayrank.go | 12 +- internal/schema/unit/wearaccessory.go | 2 +- internal/schema/user/changename.go | 2 +- internal/schema/user/changenavi.go | 2 +- internal/schema/user/setnotificationtoken.go | 2 +- internal/schema/user/userinfo.go | 47 +- internal/schema/webui/webui.go | 2 +- internal/session/accessory.go | 53 ++ internal/session/deck.go | 32 ++ internal/session/ghome.go | 39 ++ internal/session/live.go | 215 ++++++++ internal/session/login.go | 21 + internal/session/session.go | 26 +- internal/session/unit.go | 67 +++ internal/session/userdata.go | 132 +++++ internal/startup/database.go | 230 +++++++- internal/startup/startup.go | 4 +- internal/startup/userdata.go | 142 ----- main.go | 5 +- pkg/db/db.go | 16 - pkg/db/leveldb.go | 58 -- pkg/tools/tools.go | 497 ------------------ pkg/utils/utils.go | 24 +- 218 files changed, 2993 insertions(+), 2160 deletions(-) create mode 100644 assets/serverdata/accessoryTab.json delete mode 100644 assets/serverdata/partylist.json create mode 100644 internal/constant/constant.go create mode 100644 internal/constant/errorcode.go create mode 100644 internal/handler/api/unit/accessorymaterialall.go create mode 100644 internal/handler/api/unit/accessorytab.go create mode 100644 internal/handler/live/continue.go create mode 100644 internal/handler/unit/favoriteaccessory.go create mode 100644 internal/handler/unit/sale.go create mode 100644 internal/model/accessory/accessory.go create mode 100644 internal/model/ghome/devicekey.go create mode 100644 internal/model/login/authkey.go create mode 100644 internal/model/unit/commonunitdata.go create mode 100644 internal/model/unit/unitm.go create mode 100644 internal/model/user/userlivegoal.go create mode 100644 internal/model/user/userliveinprogress.go create mode 100644 internal/model/user/userliverecord.go create mode 100644 internal/model/user/userunitdata.go create mode 100644 internal/schema/api/unit/accessorymaterialall.go create mode 100644 internal/schema/api/unit/accessorytab.go create mode 100644 internal/schema/live/continue.go create mode 100644 internal/schema/live/partylist.go create mode 100644 internal/schema/unit/sale.go create mode 100644 internal/session/accessory.go create mode 100644 internal/session/deck.go create mode 100644 internal/session/ghome.go create mode 100644 internal/session/live.go create mode 100644 internal/session/login.go create mode 100644 internal/session/unit.go create mode 100644 internal/session/userdata.go delete mode 100644 internal/startup/userdata.go delete mode 100644 pkg/db/leveldb.go delete mode 100644 pkg/tools/tools.go diff --git a/README.md b/README.md index dafa58c..038e557 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,4 @@ LoveLive! 学园偶像祭 自用私服。 - 虹原翼 (yazawa@niconi.co.ni) @ [LLSIF 查卡器 ](https://card.niconi.co.ni/) 的技术支持。 - tungnotpunk @ LL Hax 在 iOS 客户端修改方面的支持。 - - reversing-sifas (https://github.com/Francesco149/reversing-sifas) 项目的灵感和技术细节。 - - LLAS WiKi (https://wiki.loveliv.es/) 提供的全量 AS Live Stage 信息。 - 其他可能一时没想起来的大佬们和项目。 diff --git a/assets/.gitignore b/assets/.gitignore index 1e4c958..d634ecb 100644 --- a/assets/.gitignore +++ b/assets/.gitignore @@ -1 +1,2 @@ data.db +load.db diff --git a/assets/main.db b/assets/main.db index 51c2d11ee02ea0a8f97aa419f690b2124e9810c1..64752b3fa6d5ce8ae345f6130d5490005e120d87 100644 GIT binary patch delta 1385430 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�N+K`f&X^-V3(eiAFr&BnGzJ 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

    W3TaK*L#~PW>=r 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

      y()lDa?8aoX1mP)>T|q(yX8`>j3sUL$iXw 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℞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

      IFB8bwC6*7Bqi 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%0DY0(0*Vf?YP4;T&qH&{5^TN2n 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

      t>tuJz7YaO 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 diff --git a/assets/serverdata/accessoryTab.json b/assets/serverdata/accessoryTab.json new file mode 100644 index 0000000..6c790c1 --- /dev/null +++ b/assets/serverdata/accessoryTab.json @@ -0,0 +1,185 @@ +{ + "result": { + "tab_list": [ + { + "tab_name": "μ’s", + "asset_list": [ + { + "unit_type_id": 1, + "asset_path": "assets/image/accessory/list/list_1.png" + }, + { + "unit_type_id": 2, + "asset_path": "assets/image/accessory/list/list_2.png" + }, + { + "unit_type_id": 3, + "asset_path": "assets/image/accessory/list/list_3.png" + }, + { + "unit_type_id": 4, + "asset_path": "assets/image/accessory/list/list_4.png" + }, + { + "unit_type_id": 5, + "asset_path": "assets/image/accessory/list/list_5.png" + }, + { + "unit_type_id": 6, + "asset_path": "assets/image/accessory/list/list_6.png" + }, + { + "unit_type_id": 7, + "asset_path": "assets/image/accessory/list/list_7.png" + }, + { + "unit_type_id": 8, + "asset_path": "assets/image/accessory/list/list_8.png" + }, + { + "unit_type_id": 9, + "asset_path": "assets/image/accessory/list/list_9.png" + } + ] + }, + { + "tab_name": "Aqours", + "asset_list": [ + { + "unit_type_id": 101, + "asset_path": "assets/image/accessory/list/list_10.png" + }, + { + "unit_type_id": 102, + "asset_path": "assets/image/accessory/list/list_11.png" + }, + { + "unit_type_id": 103, + "asset_path": "assets/image/accessory/list/list_12.png" + }, + { + "unit_type_id": 104, + "asset_path": "assets/image/accessory/list/list_13.png" + }, + { + "unit_type_id": 105, + "asset_path": "assets/image/accessory/list/list_14.png" + }, + { + "unit_type_id": 106, + "asset_path": "assets/image/accessory/list/list_15.png" + }, + { + "unit_type_id": 107, + "asset_path": "assets/image/accessory/list/list_16.png" + }, + { + "unit_type_id": 108, + "asset_path": "assets/image/accessory/list/list_17.png" + }, + { + "unit_type_id": 109, + "asset_path": "assets/image/accessory/list/list_18.png" + } + ] + }, + { + "tab_name": "虹咲", + "asset_list": [ + { + "unit_type_id": 201, + "asset_path": "assets/image/accessory/list/list_24.png" + }, + { + "unit_type_id": 202, + "asset_path": "assets/image/accessory/list/list_25.png" + }, + { + "unit_type_id": 203, + "asset_path": "assets/image/accessory/list/list_26.png" + }, + { + "unit_type_id": 204, + "asset_path": "assets/image/accessory/list/list_27.png" + }, + { + "unit_type_id": 205, + "asset_path": "assets/image/accessory/list/list_28.png" + }, + { + "unit_type_id": 206, + "asset_path": "assets/image/accessory/list/list_29.png" + }, + { + "unit_type_id": 207, + "asset_path": "assets/image/accessory/list/list_30.png" + }, + { + "unit_type_id": 208, + "asset_path": "assets/image/accessory/list/list_31.png" + }, + { + "unit_type_id": 209, + "asset_path": "assets/image/accessory/list/list_32.png" + }, + { + "unit_type_id": 212, + "asset_path": "assets/image/accessory/list/list_33.png" + }, + { + "unit_type_id": 213, + "asset_path": "assets/image/accessory/list/list_34.png" + }, + { + "unit_type_id": 214, + "asset_path": "assets/image/accessory/list/list_35.png" + } + ] + }, + { + "tab_name": "Liella!", + "asset_list": [ + { + "unit_type_id": 301, + "asset_path": "assets/image/accessory/list/list_19.png" + }, + { + "unit_type_id": 302, + "asset_path": "assets/image/accessory/list/list_20.png" + }, + { + "unit_type_id": 303, + "asset_path": "assets/image/accessory/list/list_21.png" + }, + { + "unit_type_id": 304, + "asset_path": "assets/image/accessory/list/list_22.png" + }, + { + "unit_type_id": 305, + "asset_path": "assets/image/accessory/list/list_23.png" + }, + { + "unit_type_id": 306, + "asset_path": "assets/image/accessory/list/list_36.png" + }, + { + "unit_type_id": 307, + "asset_path": "assets/image/accessory/list/list_37.png" + }, + { + "unit_type_id": 308, + "asset_path": "assets/image/accessory/list/list_38.png" + }, + { + "unit_type_id": 309, + "asset_path": "assets/image/accessory/list/list_39.png" + } + ] + } + ] + }, + "status": 200, + "commandNum": false, + "timeStamp": 1679237529 +} diff --git a/assets/serverdata/love.json b/assets/serverdata/love.json index 946cebf..bf85ff4 100644 --- a/assets/serverdata/love.json +++ b/assets/serverdata/love.json @@ -14495,4 +14495,4 @@ "rank": 2416, "sign_flag": false } -] \ No newline at end of file +] diff --git a/assets/serverdata/partylist.json b/assets/serverdata/partylist.json deleted file mode 100644 index 4a0ffa9..0000000 --- a/assets/serverdata/partylist.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "response_data": { - "party_list": [ - { - "user_info": { - "user_id": 5762285, - "name": "SDS Nico", - "level": 21 - }, - "center_unit_info": { - "unit_owning_user_id": 1000880096808, - "unit_id": 4001, - "exp": 79700, - "next_exp": 0, - "level": 100, - "level_limit_id": 1, - "max_level": 100, - "rank": 2, - "max_rank": 2, - "love": 1000, - "max_love": 1000, - "unit_skill_level": 8, - "max_hp": 4, - "favorite_flag": false, - "display_rank": 2, - "unit_skill_exp": 29900, - "unit_removable_skill_capacity": 8, - "attribute": 2, - "smile": 7210, - "cute": 7870, - "cool": 7430, - "is_love_max": true, - "is_level_max": true, - "is_rank_max": true, - "is_signed": true, - "is_skill_level_max": true, - "setting_award_id": 121, - "removable_skill_ids": [] - }, - "setting_award_id": 121, - "available_social_point": 10, - "friend_status": 1 - }, - { - "user_info": { - "user_id": 5400659, - "name": "\u9ed1\u6850-", - "level": 37 - }, - "center_unit_info": { - "unit_owning_user_id": 1001193273786, - "unit_id": 13, - "exp": 0, - "next_exp": 6, - "level": 1, - "level_limit_id": 0, - "max_level": 30, - "rank": 1, - "max_rank": 2, - "love": 25, - "max_love": 25, - "unit_skill_level": 1, - "max_hp": 2, - "favorite_flag": false, - "display_rank": 1, - "unit_skill_exp": 0, - "unit_removable_skill_capacity": 0, - "attribute": 1, - "smile": 1520, - "cute": 550, - "cool": 308, - "is_love_max": false, - "is_level_max": false, - "is_rank_max": false, - "is_signed": false, - "is_skill_level_max": true, - "setting_award_id": 17, - "removable_skill_ids": [] - }, - "setting_award_id": 17, - "available_social_point": 10, - "friend_status": 1 - }, - { - "user_info": { - "user_id": 7663163, - "name": "\u82b1\u82b1\u82b1\u6912", - "level": 30 - }, - "center_unit_info": { - "unit_owning_user_id": 1002061904425, - "unit_id": 1131, - "exp": 8400, - "next_exp": 8659, - "level": 18, - "level_limit_id": 1, - "max_level": 100, - "rank": 2, - "max_rank": 2, - "love": 1000, - "max_love": 1000, - "unit_skill_level": 1, - "max_hp": 5, - "favorite_flag": true, - "display_rank": 2, - "unit_skill_exp": 0, - "unit_removable_skill_capacity": 4, - "attribute": 3, - "smile": 3195, - "cute": 2925, - "cool": 4085, - "is_love_max": true, - "is_level_max": false, - "is_rank_max": true, - "is_signed": false, - "is_skill_level_max": false, - "setting_award_id": 17, - "removable_skill_ids": [] - }, - "setting_award_id": 17, - "available_social_point": 5, - "friend_status": 0 - }, - { - "user_info": { - "user_id": 7663313, - "name": "\u67f3\u4e95\u4e0e\u5b50", - "level": 34 - }, - "center_unit_info": { - "unit_owning_user_id": 1002062097329, - "unit_id": 1372, - "exp": 79700, - "next_exp": 0, - "level": 100, - "level_limit_id": 1, - "max_level": 100, - "rank": 2, - "max_rank": 2, - "love": 1000, - "max_love": 1000, - "unit_skill_level": 1, - "max_hp": 6, - "favorite_flag": true, - "display_rank": 2, - "unit_skill_exp": 0, - "unit_removable_skill_capacity": 4, - "attribute": 1, - "smile": 5370, - "cute": 4080, - "cool": 4500, - "is_love_max": true, - "is_level_max": true, - "is_rank_max": true, - "is_signed": false, - "is_skill_level_max": false, - "setting_award_id": 17, - "removable_skill_ids": [ - 3, - 2, - 1 - ] - }, - "setting_award_id": 17, - "available_social_point": 5, - "friend_status": 0 - }, - { - "user_info": { - "user_id": 7663527, - "name": "\u6211\u63a8\u5c06\u519b", - "level": 15 - }, - "center_unit_info": { - "unit_owning_user_id": 1002062228744, - "unit_id": 1912, - "exp": 0, - "next_exp": 201, - "level": 1, - "level_limit_id": 1, - "max_level": 100, - "rank": 2, - "max_rank": 2, - "love": 444, - "max_love": 1000, - "unit_skill_level": 1, - "max_hp": 5, - "favorite_flag": false, - "display_rank": 2, - "unit_skill_exp": 0, - "unit_removable_skill_capacity": 4, - "attribute": 1, - "smile": 3870, - "cute": 3090, - "cool": 2470, - "is_love_max": false, - "is_level_max": false, - "is_rank_max": true, - "is_signed": false, - "is_skill_level_max": false, - "setting_award_id": 1, - "removable_skill_ids": [] - }, - "setting_award_id": 1, - "available_social_point": 5, - "friend_status": 0 - } - ], - "training_energy": 999, - "training_energy_max": 999, - "server_timestamp": 1679802984 - }, - "release_info": [], - "status_code": 200 -} \ No newline at end of file diff --git a/go.mod b/go.mod index 64e0857..474d02e 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/bytedance/sonic/loader v0.5.0 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/gabriel-vasile/mimetype v1.4.12 // indirect + github.com/gabriel-vasile/mimetype v1.4.13 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/uuid v1.6.0 // indirect @@ -55,7 +55,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect - github.com/syndtr/goleveldb v1.0.0 + github.com/syndtr/goleveldb v1.0.0 // indirect github.com/ugorji/go/codec v1.3.1 // indirect golang.org/x/crypto v0.47.0 // indirect golang.org/x/net v0.49.0 // indirect diff --git a/go.sum b/go.sum index 88d8a3a..a668ebc 100644 --- a/go.sum +++ b/go.sum @@ -16,8 +16,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw= -github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= +github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/gin-contrib/sessions v1.0.4 h1:ha6CNdpYiTOK/hTp05miJLbpTSNfOnFg5Jm2kbcqy8U= github.com/gin-contrib/sessions v1.0.4/go.mod h1:ccmkrb2z6iU2osiAHZG3x3J4suJK+OU27oqzlWOqQgs= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= diff --git a/internal/constant/constant.go b/internal/constant/constant.go new file mode 100644 index 0000000..ed5e571 --- /dev/null +++ b/internal/constant/constant.go @@ -0,0 +1,17 @@ +package constant + +type LiveGoalType int + +const ( + LiveGoalTypeScore LiveGoalType = iota + 1 + LiveGoalTypeCombo + LiveGoalTypeClear +) + +type PreciseScoreUpdateType int + +const ( + PreciseScoreUpdateTypePerfect PreciseScoreUpdateType = iota + 1 + PreciseScoreUpdateTypeScore + PreciseScoreUpdateTypeAlways +) diff --git a/internal/constant/errorcode.go b/internal/constant/errorcode.go new file mode 100644 index 0000000..92638c6 --- /dev/null +++ b/internal/constant/errorcode.go @@ -0,0 +1,7 @@ +package constant + +type ErrorCode int + +const ( + ErrorCodeLivePreciseListNotFound ErrorCode = 3421 +) diff --git a/internal/handler/album/seriesall.go b/internal/handler/album/seriesall.go index 9f2ece9..a3626ed 100644 --- a/internal/handler/album/seriesall.go +++ b/internal/handler/album/seriesall.go @@ -3,7 +3,7 @@ package album import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/album" + albumschema "honoka-chan/internal/schema/album" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -19,7 +19,7 @@ func seriesAll(ctx *gin.Context) { return } - albumSeriesAllRes := []album.SeriesAllData{} + albumSeriesAllRes := []albumschema.SeriesAllData{} for _, id := range albumID { var unitList []struct { UnitId int `xorm:"unit_id"` @@ -30,9 +30,9 @@ func seriesAll(ctx *gin.Context) { return } - albumSeriesAll := []album.UnitList{} + albumSeriesAll := []albumschema.UnitList{} for _, unit := range unitList { - albumSeries := album.UnitList{ + albumSeries := albumschema.UnitList{ UnitID: unit.UnitId, RankMaxFlag: true, LoveMaxFlag: true, @@ -72,13 +72,13 @@ func seriesAll(ctx *gin.Context) { albumSeriesAll = append(albumSeriesAll, albumSeries) } - albumSeriesAllRes = append(albumSeriesAllRes, album.SeriesAllData{ + albumSeriesAllRes = append(albumSeriesAllRes, albumschema.SeriesAllData{ SeriesID: id, UnitList: albumSeriesAll, }) } - ss.Respond(album.SeriesAllResp{ + ss.Respond(albumschema.SeriesAllResp{ ResponseData: albumSeriesAllRes, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/announce/checkstate.go b/internal/handler/announce/checkstate.go index be2999c..6eea194 100644 --- a/internal/handler/announce/checkstate.go +++ b/internal/handler/announce/checkstate.go @@ -3,7 +3,7 @@ package announce import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/announce" + announceschema "honoka-chan/internal/schema/announce" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func checkState(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(announce.CheckStateDataResp{ - ResponseData: announce.CheckStateData{ + ss.Respond(announceschema.CheckStateDataResp{ + ResponseData: announceschema.CheckStateData{ HasUnreadAnnounce: false, ServerTimestamp: time.Now().Unix(), }, diff --git a/internal/handler/api/album/all.go b/internal/handler/api/album/all.go index 4ddfbd0..4fe53c3 100644 --- a/internal/handler/api/album/all.go +++ b/internal/handler/api/album/all.go @@ -1,7 +1,7 @@ package album import ( - "honoka-chan/internal/schema/api/album" + albumapischema "honoka-chan/internal/schema/api/album" "honoka-chan/internal/session" "time" @@ -11,7 +11,7 @@ import ( func albumAll(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - albumLists := []album.UnitList{} + albumLists := []albumapischema.UnitList{} var unitList []struct { UnitId int `xorm:"unit_id"` Rarity int `xorm:"rarity"` @@ -22,7 +22,7 @@ func albumAll(ctx *gin.Context) (res any, err error) { } for _, unit := range unitList { - albumList := album.UnitList{ + albumList := albumapischema.UnitList{ RankMaxFlag: true, LoveMaxFlag: true, RankLevelMaxFlag: true, @@ -59,7 +59,7 @@ func albumAll(ctx *gin.Context) (res any, err error) { albumLists = append(albumLists, albumList) } - res = album.AllResp{ + res = albumapischema.AllResp{ Result: albumLists, Status: 200, CommandNum: false, diff --git a/internal/handler/api/award/info.go b/internal/handler/api/award/info.go index c68c27b..a43cf4c 100644 --- a/internal/handler/api/award/info.go +++ b/internal/handler/api/award/info.go @@ -1,7 +1,7 @@ package award import ( - "honoka-chan/internal/schema/api/award" + awardapischema "honoka-chan/internal/schema/api/award" "honoka-chan/internal/session" "time" @@ -23,21 +23,21 @@ func awardInfo(ctx *gin.Context) (res any, err error) { return } - awardsList := []award.Info{} + awardsList := []awardapischema.Info{} for _, id := range awardList { isSet := false if id == awardID { isSet = true } - awardsList = append(awardsList, award.Info{ + awardsList = append(awardsList, awardapischema.Info{ AwardID: id, IsSet: isSet, - InsertDate: time.Now().Format("2006-01-02 03:04:05"), + InsertDate: "2023-03-20 03:58:55", }) } - res = award.InfoResp{ - Result: award.InfoData{ + res = awardapischema.InfoResp{ + Result: awardapischema.InfoData{ AwardInfo: awardsList, }, Status: 200, diff --git a/internal/handler/api/background/info.go b/internal/handler/api/background/info.go index 453a603..470e9ad 100644 --- a/internal/handler/api/background/info.go +++ b/internal/handler/api/background/info.go @@ -1,7 +1,7 @@ package background import ( - "honoka-chan/internal/schema/api/background" + backgroundapischema "honoka-chan/internal/schema/api/background" "honoka-chan/internal/session" "time" @@ -23,21 +23,21 @@ func backgroundInfo(ctx *gin.Context) (res any, err error) { return } - backgroundsList := []background.Info{} + backgroundsList := []backgroundapischema.Info{} for _, id := range backgroundList { isSet := false if id == backgroundID { isSet = true } - backgroundsList = append(backgroundsList, background.Info{ + backgroundsList = append(backgroundsList, backgroundapischema.Info{ BackgroundID: id, IsSet: isSet, - InsertDate: time.Now().Format("2006-01-02 03:04:05"), + InsertDate: "2023-03-20 03:58:55", }) } - res = background.InfoResp{ - Result: background.InfoData{ + res = backgroundapischema.InfoResp{ + Result: backgroundapischema.InfoData{ BackgroundInfo: backgroundsList, }, Status: 200, diff --git a/internal/handler/api/banner/list.go b/internal/handler/api/banner/list.go index 80c8f60..e181fd8 100644 --- a/internal/handler/api/banner/list.go +++ b/internal/handler/api/banner/list.go @@ -1,15 +1,15 @@ package banner import ( - "honoka-chan/internal/schema/api/banner" + bannerapischema "honoka-chan/internal/schema/api/banner" "time" ) func bannerList() (res any, err error) { - res = banner.ListResp{ - Result: banner.ListData{ + res = bannerapischema.ListResp{ + Result: bannerapischema.ListData{ TimeLimit: "2037-12-31 23:59:59", - BannerList: []banner.BannerList{ + BannerList: []bannerapischema.BannerList{ { BannerType: 1, TargetID: 1743, diff --git a/internal/handler/api/challenge/info.go b/internal/handler/api/challenge/info.go index 94ebe05..d214195 100644 --- a/internal/handler/api/challenge/info.go +++ b/internal/handler/api/challenge/info.go @@ -1,12 +1,12 @@ package challenge import ( - "honoka-chan/internal/schema/api/challenge" + challengeapischema "honoka-chan/internal/schema/api/challenge" "time" ) func challengeInfo() (res any, err error) { - res = challenge.InfoResp{ + res = challengeapischema.InfoResp{ Result: []any{}, Status: 200, CommandNum: false, diff --git a/internal/handler/api/costume/list.go b/internal/handler/api/costume/list.go index 7a2f99d..40f9dbc 100644 --- a/internal/handler/api/costume/list.go +++ b/internal/handler/api/costume/list.go @@ -1,14 +1,14 @@ package costume import ( - "honoka-chan/internal/schema/api/costume" + costumeapischema "honoka-chan/internal/schema/api/costume" "time" ) func costumeList() (res any, err error) { - res = costume.ListResp{ - Result: costume.ListData{ - CostumeList: []costume.CostumeList{}, + res = costumeapischema.ListResp{ + Result: costumeapischema.ListData{ + CostumeList: []costumeapischema.CostumeList{}, }, Status: 200, CommandNum: false, diff --git a/internal/handler/api/eventscenario/status.go b/internal/handler/api/eventscenario/status.go index d1f313e..7b0ed91 100644 --- a/internal/handler/api/eventscenario/status.go +++ b/internal/handler/api/eventscenario/status.go @@ -2,7 +2,7 @@ package eventscenario import ( "fmt" - "honoka-chan/internal/schema/api/eventscenario" + eventscenarioapischema "honoka-chan/internal/schema/api/eventscenario" "honoka-chan/internal/session" "strings" "time" @@ -14,7 +14,7 @@ func eventScenarioStatus(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) var eventID []int - eventsList := []eventscenario.EventScenarioList{} + eventsList := []eventscenarioapischema.EventScenarioList{} err = ss.MainEng.Table("event_scenario_m").Cols("event_id").GroupBy("event_id").OrderBy("event_id DESC").Find(&eventID) if ss.CheckErr(err) { return @@ -27,7 +27,7 @@ func eventScenarioStatus(ctx *gin.Context) (res any, err error) { ChapterAsset string `xorm:"chapter_asset"` OpenDate string `xorm:"open_date"` } - chapsList := []eventscenario.ChapterList{} + chapsList := []eventscenarioapischema.ChapterList{} err = ss.MainEng.Table("event_scenario_m").Where("event_id = ?", id).Cols("event_scenario_id,chapter,chapter_asset,open_date"). OrderBy("chapter DESC").Find(&eventRes) if ss.CheckErr(err) { @@ -35,7 +35,7 @@ func eventScenarioStatus(ctx *gin.Context) (res any, err error) { } for _, res := range eventRes { - chapList := eventscenario.ChapterList{ + chapList := eventscenarioapischema.ChapterList{ EventScenarioID: res.EventScenarioId, Chapter: res.Chapter, ChapterAsset: res.ChapterAsset, @@ -49,7 +49,7 @@ func eventScenarioStatus(ctx *gin.Context) (res any, err error) { chapsList = append(chapsList, chapList) } - event := eventscenario.EventScenarioList{ + event := eventscenarioapischema.EventScenarioList{ EventID: id, OpenDate: strings.ReplaceAll(eventRes[0].OpenDate, "/", "-"), ChapterList: chapsList, @@ -67,8 +67,8 @@ func eventScenarioStatus(ctx *gin.Context) (res any, err error) { eventsList = append(eventsList, event) } - res = eventscenario.StatusResp{ - Result: eventscenario.StatusData{ + res = eventscenarioapischema.StatusResp{ + Result: eventscenarioapischema.StatusData{ EventScenarioList: eventsList, }, Status: 200, diff --git a/internal/handler/api/exchange/owningpoint.go b/internal/handler/api/exchange/owningpoint.go index d17077e..6e92c5a 100644 --- a/internal/handler/api/exchange/owningpoint.go +++ b/internal/handler/api/exchange/owningpoint.go @@ -1,7 +1,7 @@ package exchange import ( - "honoka-chan/internal/schema/api/exchange" + exchangeapischema "honoka-chan/internal/schema/api/exchange" "honoka-chan/internal/session" "time" @@ -12,20 +12,20 @@ func owningPoint(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) var exchangeID []int - exPointsList := []exchange.ExchangePointList{} + exPointsList := []exchangeapischema.ExchangePointList{} err = ss.MainEng.Table("exchange_point_m").Cols("exchange_point_id").OrderBy("exchange_point_id ASC").Find(&exchangeID) if ss.CheckErr(err) { return } for _, id := range exchangeID { - exPointsList = append(exPointsList, exchange.ExchangePointList{ + exPointsList = append(exPointsList, exchangeapischema.ExchangePointList{ Rarity: id, ExchangePoint: 9999, }) } - res = exchange.OwningPointResp{ - Result: exchange.OwningPointData{ + res = exchangeapischema.OwningPointResp{ + Result: exchangeapischema.OwningPointData{ ExchangePointList: exPointsList, }, Status: 200, diff --git a/internal/handler/api/live/schedule.go b/internal/handler/api/live/schedule.go index 7ef5e6f..0cace96 100644 --- a/internal/handler/api/live/schedule.go +++ b/internal/handler/api/live/schedule.go @@ -1,7 +1,7 @@ package live import ( - "honoka-chan/internal/schema/api/live" + liveapischema "honoka-chan/internal/schema/api/live" "honoka-chan/internal/session" "time" @@ -11,42 +11,32 @@ import ( func liveSchedule(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - var liveDifficultyID []int - specialLives := []live.SpecialLiveStatusList{} - err = ss.MainEng.Table("special_live_m").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveDifficultyID) + var liveID []int + err = ss.MainEng.Table("special_live_m"). + Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveID) if ss.CheckErr(err) { return } - for _, id := range liveDifficultyID { - specialLive := live.SpecialLiveStatusList{ - LiveDifficultyID: id, - Status: 1, - HiScore: 0, - HiComboCount: 0, - ClearCnt: 0, - AchievedGoalIDList: []int{}, - } - specialLives = append(specialLives, specialLive) - } - livesList := []live.LiveList{} - for _, v := range specialLives { - livesList = append(livesList, live.LiveList{ - LiveDifficultyID: v.LiveDifficultyID, + liveList := []liveapischema.LiveList{} + for _, id := range liveID { + liveList = append(liveList, liveapischema.LiveList{ + LiveDifficultyID: id, StartDate: "2023-01-01 00:00:00", EndDate: "2037-01-01 00:00:00", IsRandom: false, }) } - res = live.ScheduleResp{ - Result: live.ScheduleData{ + + res = liveapischema.ScheduleResp{ + Result: liveapischema.ScheduleData{ EventList: []any{}, - LiveList: livesList, + LiveList: liveList, LimitedBonusList: []any{}, - LimitedBonusCommonList: []live.LimitedBonusCommonList{}, // 特效道具 - RandomLiveList: []live.RandomLiveList{}, // 随机歌曲 + LimitedBonusCommonList: []liveapischema.LimitedBonusCommonList{}, + RandomLiveList: []liveapischema.RandomLiveList{}, FreeLiveList: []any{}, - TrainingLiveList: []live.TrainingLiveList{}, // 挑战歌曲 + TrainingLiveList: []liveapischema.TrainingLiveList{}, }, Status: 200, CommandNum: false, diff --git a/internal/handler/api/live/status.go b/internal/handler/api/live/status.go index 1531833..59c37b1 100644 --- a/internal/handler/api/live/status.go +++ b/internal/handler/api/live/status.go @@ -1,7 +1,7 @@ package live import ( - "honoka-chan/internal/schema/api/live" + liveapischema "honoka-chan/internal/schema/api/live" "honoka-chan/internal/session" "time" @@ -12,13 +12,13 @@ func liveStatus(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) var liveDifficultyID []int - normalLives := []live.NormalLiveStatusList{} + normalLives := []liveapischema.NormalLiveStatusList{} err = ss.MainEng.Table("normal_live_m").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveDifficultyID) if ss.CheckErr(err) { return } for _, id := range liveDifficultyID { - normalLive := live.NormalLiveStatusList{ + normalLive := liveapischema.NormalLiveStatusList{ LiveDifficultyID: id, Status: 1, HiScore: 0, @@ -29,13 +29,13 @@ func liveStatus(ctx *gin.Context) (res any, err error) { normalLives = append(normalLives, normalLive) } - specialLives := []live.SpecialLiveStatusList{} + specialLives := []liveapischema.SpecialLiveStatusList{} err = ss.MainEng.Table("special_live_m").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveDifficultyID) if ss.CheckErr(err) { return } for _, id := range liveDifficultyID { - specialLive := live.SpecialLiveStatusList{ + specialLive := liveapischema.SpecialLiveStatusList{ LiveDifficultyID: id, Status: 1, HiScore: 0, @@ -46,11 +46,11 @@ func liveStatus(ctx *gin.Context) (res any, err error) { specialLives = append(specialLives, specialLive) } - res = live.StatusResp{ - Result: live.StatusData{ + res = liveapischema.StatusResp{ + Result: liveapischema.StatusData{ NormalLiveStatusList: normalLives, SpecialLiveStatusList: specialLives, - TrainingLiveStatusList: []live.TrainingLiveStatusList{}, + TrainingLiveStatusList: []liveapischema.TrainingLiveStatusList{}, MarathonLiveStatusList: []any{}, FreeLiveStatusList: []any{}, CanResumeLive: false, diff --git a/internal/handler/api/liveicon/info.go b/internal/handler/api/liveicon/info.go index 6d2a2de..6138c2c 100644 --- a/internal/handler/api/liveicon/info.go +++ b/internal/handler/api/liveicon/info.go @@ -1,13 +1,13 @@ package liveicon import ( - "honoka-chan/internal/schema/api/liveicon" + liveiconapischema "honoka-chan/internal/schema/api/liveicon" "time" ) func liveIconInfo() (res any, err error) { - res = liveicon.InfoResp{ - Result: liveicon.InfoData{ + res = liveiconapischema.InfoResp{ + Result: liveiconapischema.InfoData{ LiveNotesIconList: []int{1, 2, 3}, }, Status: 200, diff --git a/internal/handler/api/livese/info.go b/internal/handler/api/livese/info.go index 9b8ad46..c2e2fc6 100644 --- a/internal/handler/api/livese/info.go +++ b/internal/handler/api/livese/info.go @@ -1,13 +1,13 @@ package livese import ( - "honoka-chan/internal/schema/api/livese" + liveseapischema "honoka-chan/internal/schema/api/livese" "time" ) func LiveSeInfo() (res any, err error) { - res = livese.InfoResp{ - Result: livese.InfoData{ + res = liveseapischema.InfoResp{ + Result: liveseapischema.InfoData{ LiveSeList: []int{1, 2, 3}, }, Status: 200, diff --git a/internal/handler/api/login/topinfo.go b/internal/handler/api/login/topinfo.go index 48f6ba7..bfb9ede 100644 --- a/internal/handler/api/login/topinfo.go +++ b/internal/handler/api/login/topinfo.go @@ -1,13 +1,13 @@ package login import ( - "honoka-chan/internal/schema/api/login" + loginapischema "honoka-chan/internal/schema/api/login" "time" ) func loginTopInfo() (res any, err error) { - res = login.TopInfoResp{ - Result: login.TopInfoData{ + res = loginapischema.TopInfoResp{ + Result: loginapischema.TopInfoData{ FriendActionCnt: 0, FriendGreetCnt: 0, FriendVarietyCnt: 0, @@ -21,7 +21,7 @@ func loginTopInfo() (res any, err error) { FriendsApprovalWaitCnt: 0, FriendsRequestCnt: 0, IsTodayBirthday: false, - LicenseInfo: login.LicenseInfo{ + LicenseInfo: loginapischema.LicenseInfo{ LicenseList: []any{}, LicensedInfo: []any{}, ExpiredInfo: []any{}, diff --git a/internal/handler/api/login/topinfoonce.go b/internal/handler/api/login/topinfoonce.go index 73f9578..f336a8b 100644 --- a/internal/handler/api/login/topinfoonce.go +++ b/internal/handler/api/login/topinfoonce.go @@ -1,19 +1,19 @@ package login import ( - "honoka-chan/internal/schema/api/login" + loginapischema "honoka-chan/internal/schema/api/login" "time" ) func loginTopInfoOnce() (res any, err error) { - res = login.TopInfoOnceResp{ - Result: login.TopInfoOnceData{ + res = loginapischema.TopInfoOnceResp{ + Result: loginapischema.TopInfoOnceData{ NewAchievementCnt: 0, UnaccomplishedAchievementCnt: 0, LiveDailyRewardExist: false, TrainingEnergy: 10, TrainingEnergyMax: 10, - Notification: login.Notification{ + Notification: loginapischema.Notification{ Push: false, Lp: false, UpdateInfo: false, diff --git a/internal/handler/api/marathon/info.go b/internal/handler/api/marathon/info.go index 55a1859..2fdab8c 100644 --- a/internal/handler/api/marathon/info.go +++ b/internal/handler/api/marathon/info.go @@ -1,12 +1,12 @@ package marathon import ( - "honoka-chan/internal/schema/api/marathon" + marathonapischema "honoka-chan/internal/schema/api/marathon" "time" ) func marathonInfo() (res any, err error) { - res = marathon.InfoResp{ + res = marathonapischema.InfoResp{ Result: []any{}, Status: 200, CommandNum: false, diff --git a/internal/handler/api/multiunit/scenariostatus.go b/internal/handler/api/multiunit/scenariostatus.go index 2af2205..fea27d0 100644 --- a/internal/handler/api/multiunit/scenariostatus.go +++ b/internal/handler/api/multiunit/scenariostatus.go @@ -1,7 +1,7 @@ package multiunit import ( - "honoka-chan/internal/schema/api/multiunit" + multiunitapischema "honoka-chan/internal/schema/api/multiunit" "honoka-chan/internal/session" "strings" "time" @@ -13,7 +13,7 @@ func MultiUnitScenarioStatus(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) var statusID []int - multiUnitsList := []multiunit.StatusList{} + multiUnitsList := []multiunitapischema.StatusList{} err = ss.MainEng.Table("multi_unit_scenario_m").Cols("multi_unit_id").GroupBy("multi_unit_id").OrderBy("multi_unit_id ASC").Find(&statusID) if ss.CheckErr(err) { return @@ -34,12 +34,12 @@ func MultiUnitScenarioStatus(ctx *gin.Context) (res any, err error) { return } - multiUnitsList = append(multiUnitsList, multiunit.StatusList{ + multiUnitsList = append(multiUnitsList, multiunitapischema.StatusList{ MultiUnitID: id, Status: 2, MultiUnitScenarioBtnAsset: multiRes.MultiUnitScenarioBtnAsset, OpenDate: strings.ReplaceAll(multiRes.OpenDate, "/", "-"), - ChapterList: []multiunit.ChapterList{ + ChapterList: []multiunitapischema.ChapterList{ { MultiUnitScenarioID: multiRes.MultiUnitScenarioId, Chapter: multiRes.Chapter, @@ -48,8 +48,8 @@ func MultiUnitScenarioStatus(ctx *gin.Context) (res any, err error) { }, }) } - res = multiunit.StatusResp{ - Result: multiunit.StatusData{ + res = multiunitapischema.StatusResp{ + Result: multiunitapischema.StatusData{ MultiUnitScenarioStatusList: multiUnitsList, UnlockedMultiUnitScenarioIds: []any{}, }, diff --git a/internal/handler/api/museum/info.go b/internal/handler/api/museum/info.go index ea4746d..4d99bee 100644 --- a/internal/handler/api/museum/info.go +++ b/internal/handler/api/museum/info.go @@ -1,7 +1,7 @@ package museum import ( - "honoka-chan/internal/schema/api/museum" + museumapischema "honoka-chan/internal/schema/api/museum" "honoka-chan/internal/session" "time" @@ -31,10 +31,10 @@ func museumInfo(ctx *gin.Context) (res any, err error) { coolBuff += res.CoolBuff museumID = append(museumID, res.MuseumContentsId) } - res = museum.InfoResp{ - Result: museum.InfoData{ - MuseumInfo: museum.Info{ - Parameter: museum.Parameter{ + res = museumapischema.InfoResp{ + Result: museumapischema.InfoData{ + MuseumInfo: museumapischema.Info{ + Parameter: museumapischema.Parameter{ Smile: smileBuff, Pure: pureBuff, Cool: coolBuff, diff --git a/internal/handler/api/navigation/specialcutin.go b/internal/handler/api/navigation/specialcutin.go index 2834177..998524f 100644 --- a/internal/handler/api/navigation/specialcutin.go +++ b/internal/handler/api/navigation/specialcutin.go @@ -1,13 +1,13 @@ package navigation import ( - "honoka-chan/internal/schema/api/navigation" + navigationapischema "honoka-chan/internal/schema/api/navigation" "time" ) func SpecialCutin() (res any, err error) { - res = navigation.SpecialCutinResp{ - Result: navigation.SpecialCutinData{ + res = navigationapischema.SpecialCutinResp{ + Result: navigationapischema.SpecialCutinData{ SpecialCutinList: []any{}, }, Status: 200, diff --git a/internal/handler/api/notice/marquee.go b/internal/handler/api/notice/marquee.go index a037ba1..16aa61e 100644 --- a/internal/handler/api/notice/marquee.go +++ b/internal/handler/api/notice/marquee.go @@ -1,13 +1,13 @@ package notice import ( - "honoka-chan/internal/schema/api/notice" + noticeapischema "honoka-chan/internal/schema/api/notice" "time" ) func noticeMarquee() (res any, err error) { - res = notice.MarqueeResp{ - Result: notice.MarqueeData{ + res = noticeapischema.MarqueeResp{ + Result: noticeapischema.MarqueeData{ ItemCount: 0, MarqueeList: []any{}, }, diff --git a/internal/handler/api/payment/productlist.go b/internal/handler/api/payment/productlist.go index 3b6a400..a2e6fe5 100644 --- a/internal/handler/api/payment/productlist.go +++ b/internal/handler/api/payment/productlist.go @@ -1,25 +1,25 @@ package payment import ( - "honoka-chan/internal/schema/api/payment" + paymentapischema "honoka-chan/internal/schema/api/payment" "time" ) func productList() (res any, err error) { - res = payment.ProductListResp{ - Result: payment.ProductListData{ - RestrictionInfo: payment.RestrictionInfo{ + res = paymentapischema.ProductListResp{ + Result: paymentapischema.ProductListData{ + RestrictionInfo: paymentapischema.RestrictionInfo{ Restricted: false, }, - UnderAgeInfo: payment.UnderAgeInfo{ + UnderAgeInfo: paymentapischema.UnderAgeInfo{ BirthSet: false, HasLimit: false, LimitAmount: nil, MonthUsed: 0, }, - SnsProductList: []payment.SnsProduct{}, - ProductList: []payment.Product{}, - SubscriptionList: []payment.Subscription{}, + SnsProductList: []paymentapischema.SnsProduct{}, + ProductList: []paymentapischema.Product{}, + SubscriptionList: []paymentapischema.Subscription{}, ShowPointShop: false, }, Status: 200, diff --git a/internal/handler/api/profile/cardranking.go b/internal/handler/api/profile/cardranking.go index 4b88bb3..53e9c19 100644 --- a/internal/handler/api/profile/cardranking.go +++ b/internal/handler/api/profile/cardranking.go @@ -2,7 +2,7 @@ package profile import ( "encoding/json" - "honoka-chan/internal/schema/api/profile" + profileapischema "honoka-chan/internal/schema/api/profile" honokautils "honoka-chan/pkg/utils" "time" ) @@ -15,7 +15,7 @@ func cardRanking() (res any, err error) { return nil, err } - res = profile.CardRankingResp{ + res = profileapischema.CardRankingResp{ Result: result, Status: 200, CommandNum: false, diff --git a/internal/handler/api/profile/info.go b/internal/handler/api/profile/info.go index a11812b..065abe4 100644 --- a/internal/handler/api/profile/info.go +++ b/internal/handler/api/profile/info.go @@ -1,8 +1,9 @@ package profile import ( - "honoka-chan/internal/model/user" - "honoka-chan/internal/schema/api/profile" + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" + profileapischema "honoka-chan/internal/schema/api/profile" "honoka-chan/internal/session" "time" @@ -12,57 +13,25 @@ import ( func profileInfo(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - pref := user.UserPref{} + pref := usermodel.UserPref{} _, err = ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Get(&pref) if err != nil { return nil, err } - commonUnit, err := ss.MainEng.Table("common_unit_m").Count() + unitCount, err := ss.UserEng.Table(new(usermodel.UserUnitData)). + Where("user_id = ?", ss.UserID).Count() if err != nil { return nil, err } - userUnit, err := ss.UserEng.Table("user_unit").Where("user_id = ?", ss.UserID).Count() + unitData := unitmodel.UnitDataMap{} + _, err = ss.GetBasicUnitInfo(). + Where("a.unit_owning_user_id = ?", pref.UnitOwningUserID).Get(&unitData) if err != nil { return nil, err } - unitData := profile.UnitData{} - exists, err := ss.MainEng.Table("common_unit_m").Where("unit_owning_user_id = ?", pref.UnitOwningUserID).Get(&unitData) - if err != nil { - return nil, err - } - - isCommon := true - if !exists { - _, err = ss.UserEng.Table("user_unit"). - Where("unit_owning_user_id = ? AND user_id = ?", pref.UnitOwningUserID, ss.UserID).Get(&unitData) - if err != nil { - return nil, err - } - isCommon = false - } - - var attrId, maxHp, baseSmile, basePure, baseCool int - var smileMax, pureMax, coolMax int - if isCommon { - // 公共卡片仅为100级属性 - _, err = ss.MainEng.Table("unit_m").Where("unit_id = ?", unitData.UnitID). - Cols("attribute_id,hp_max,smile_max,pure_max,cool_max").Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool) - if err != nil { - return nil, err - } - - // 偷懒起见不计算饰品、宝石、回忆画廊等属性加成 - smileMax = baseSmile - pureMax = basePure - coolMax = baseCool - // } else { - // // 用户卡片需要根据等级计算属性 - // // TODO - } - var accessoryOwningId, accessoryId, exp int _, err = ss.UserEng.Table("user_accessory_wear").Where("unit_owning_user_id = ? AND user_id = ?", pref.UnitOwningUserID, ss.UserID). Cols("accessory_owning_user_id").Get(&accessoryOwningId) @@ -74,7 +43,7 @@ func profileInfo(ctx *gin.Context) (res any, err error) { if err != nil { return nil, err } - accessoryInfo := profile.AccessoryInfo{ + accessoryInfo := profileapischema.AccessoryInfo{ AccessoryOwningUserID: accessoryOwningId, AccessoryID: accessoryId, Exp: exp, @@ -92,9 +61,9 @@ func profileInfo(ctx *gin.Context) (res any, err error) { return nil, err } - res = profile.InfoResp{ - Result: profile.InfoData{ - UserInfo: profile.UserInfo{ + res = profileapischema.InfoResp{ + Result: profileapischema.InfoData{ + UserInfo: profileapischema.UserInfo{ UserID: pref.UserID, Name: pref.UserName, Level: pref.UserLevel, @@ -102,16 +71,17 @@ func profileInfo(ctx *gin.Context) (res any, err error) { UnitMax: 5000, EnergyMax: 417, FriendMax: 99, - UnitCnt: int(commonUnit + userUnit), + UnitCnt: int(unitCount), InviteCode: pref.InviteCode, ElapsedTimeFromLogin: "14\u5c0f\u65f6\u524d", Introduction: pref.UserDesc, }, - CenterUnitInfo: profile.CenterUnitInfo{ + // TODO: 区分队伍中心卡片和看板卡片 + CenterUnitInfo: profileapischema.CenterUnitInfo{ UnitOwningUserID: unitData.UnitOwningUserID, UnitID: unitData.UnitID, Exp: unitData.Exp, - NextExp: unitData.NextExp, + NextExp: 0, Level: unitData.Level, LevelLimitID: unitData.LevelLimitID, MaxLevel: unitData.MaxLevel, @@ -125,10 +95,10 @@ func profileInfo(ctx *gin.Context) (res any, err error) { DisplayRank: unitData.DisplayRank, UnitSkillExp: unitData.UnitSkillExp, UnitRemovableSkillCapacity: unitData.UnitRemovableSkillCapacity, - Attribute: attrId, - Smile: baseSmile, - Cute: basePure, - Cool: baseCool, + Attribute: unitData.Attribute, + Smile: unitData.Smile, + Cute: unitData.Cute, + Cool: unitData.Cool, IsLoveMax: unitData.IsLoveMax, IsLevelMax: unitData.IsLevelMax, IsRankMax: unitData.IsRankMax, @@ -137,17 +107,17 @@ func profileInfo(ctx *gin.Context) (res any, err error) { SettingAwardID: pref.AwardID, RemovableSkillIds: removeSkillIds, AccessoryInfo: accessoryInfo, - Costume: profile.Costume{}, - TotalSmile: smileMax, - TotalCute: pureMax, - TotalCool: coolMax, - TotalHp: maxHp, + Costume: profileapischema.Costume{}, + TotalSmile: unitData.Smile, // TODO: 加成计算 + TotalCute: unitData.Cute, // 同上 + TotalCool: unitData.Cool, // 同上 + TotalHp: unitData.MaxHp, }, - NaviUnitInfo: profile.NaviUnitInfo{ + NaviUnitInfo: profileapischema.NaviUnitInfo{ UnitOwningUserID: unitData.UnitOwningUserID, UnitID: unitData.UnitID, Exp: unitData.Exp, - NextExp: unitData.NextExp, + NextExp: 0, Level: unitData.Level, MaxLevel: unitData.MaxLevel, LevelLimitID: unitData.LevelLimitID, @@ -168,10 +138,10 @@ func profileInfo(ctx *gin.Context) (res any, err error) { IsSkillLevelMax: unitData.IsSkillLevelMax, IsRemovableSkillCapacityMax: unitData.IsRemovableSkillCapacityMax, InsertDate: "2016-10-11 10:33:03", - TotalSmile: smileMax, - TotalCute: pureMax, - TotalCool: coolMax, - TotalHp: maxHp, + TotalSmile: unitData.Smile, // TODO: 加成计算 + TotalCute: unitData.Cute, // 同上 + TotalCool: unitData.Cool, // 同上 + TotalHp: unitData.MaxHp, RemovableSkillIds: removeSkillIds, }, IsAlliance: false, diff --git a/internal/handler/api/profile/livecnt.go b/internal/handler/api/profile/livecnt.go index 357bba6..6eb0cfe 100644 --- a/internal/handler/api/profile/livecnt.go +++ b/internal/handler/api/profile/livecnt.go @@ -1,13 +1,13 @@ package profile import ( - "honoka-chan/internal/schema/api/profile" + profileapischema "honoka-chan/internal/schema/api/profile" "time" ) func liveCnt() (res any, err error) { - res = profile.LiveCntResp{ - Result: []profile.LiveCntData{ + res = profileapischema.LiveCntResp{ + Result: []profileapischema.LiveCntData{ { Difficulty: 1, ClearCnt: 315, diff --git a/internal/handler/api/scenario/status.go b/internal/handler/api/scenario/status.go index c821475..6ea1b73 100644 --- a/internal/handler/api/scenario/status.go +++ b/internal/handler/api/scenario/status.go @@ -1,7 +1,7 @@ package scenario import ( - "honoka-chan/internal/schema/api/scenario" + scenarioapischema "honoka-chan/internal/schema/api/scenario" "honoka-chan/internal/session" "time" @@ -12,20 +12,20 @@ func scenarioStatus(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) var scenarioID []int - scenarioLists := []scenario.StatusList{} + scenarioLists := []scenarioapischema.StatusList{} err = ss.MainEng.Table("scenario_m").Cols("scenario_id").OrderBy("scenario_id ASC").Find(&scenarioID) if ss.CheckErr(err) { return } for _, id := range scenarioID { - scenarioLists = append(scenarioLists, scenario.StatusList{ + scenarioLists = append(scenarioLists, scenarioapischema.StatusList{ ScenarioID: id, Status: 2, }) } - res = scenario.StatusResp{ - Result: scenario.StatusData{ + res = scenarioapischema.StatusResp{ + Result: scenarioapischema.StatusData{ ScenarioStatusList: scenarioLists, }, Status: 200, diff --git a/internal/handler/api/subscenario/status.go b/internal/handler/api/subscenario/status.go index 8d28fa2..1da7bc4 100644 --- a/internal/handler/api/subscenario/status.go +++ b/internal/handler/api/subscenario/status.go @@ -1,7 +1,7 @@ package subscenario import ( - "honoka-chan/internal/schema/api/subscenario" + subscenarioapischema "honoka-chan/internal/schema/api/subscenario" "honoka-chan/internal/session" "time" @@ -12,20 +12,20 @@ func subscenarioStatus(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) var subScenarioID []int - subScenarioLists := []subscenario.StatusList{} + subScenarioLists := []subscenarioapischema.StatusList{} err = ss.MainEng.Table("subscenario_m").Cols("subscenario_id").OrderBy("subscenario_id ASC").Find(&subScenarioID) if ss.CheckErr(err) { return } for _, id := range subScenarioID { - subScenarioLists = append(subScenarioLists, subscenario.StatusList{ + subScenarioLists = append(subScenarioLists, subscenarioapischema.StatusList{ SubscenarioID: id, Status: 2, }) } - res = subscenario.StatusResp{ - Result: subscenario.StatusData{ + res = subscenarioapischema.StatusResp{ + Result: subscenarioapischema.StatusData{ SubscenarioStatusList: subScenarioLists, UnlockedSubscenarioIds: []any{}, }, diff --git a/internal/handler/api/unit/accessoryall.go b/internal/handler/api/unit/accessoryall.go index 29395f0..a6e2489 100644 --- a/internal/handler/api/unit/accessoryall.go +++ b/internal/handler/api/unit/accessoryall.go @@ -1,7 +1,7 @@ package unit import ( - "honoka-chan/internal/schema/api/unit" + unitapischema "honoka-chan/internal/schema/api/unit" "honoka-chan/internal/session" "time" @@ -11,7 +11,7 @@ import ( func unitAccessoryAll(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - accessoryList := []unit.AccessoryList{} + accessoryList := []unitapischema.AccessoryList{} err = ss.MainEng.Table("common_accessory_m").Find(&accessoryList) if ss.CheckErr(err) { return @@ -23,13 +23,13 @@ func unitAccessoryAll(ctx *gin.Context) (res any, err error) { accessoryList[k].RankUpCount = 4 accessoryList[k].FavoriteFlag = true } - wearingInfo := []unit.WearingInfo{} + wearingInfo := []unitapischema.WearingInfo{} err = ss.UserEng.Table("user_accessory_wear").Where("user_id = ?", ss.UserID).Find(&wearingInfo) if ss.CheckErr(err) { return } - res = unit.AccessoryAllResp{ - Result: unit.AccessoryAllData{ + res = unitapischema.AccessoryAllResp{ + Result: unitapischema.AccessoryAllData{ AccessoryList: accessoryList, WearingInfo: wearingInfo, EspecialCreateFlag: false, diff --git a/internal/handler/api/unit/accessorymaterialall.go b/internal/handler/api/unit/accessorymaterialall.go new file mode 100644 index 0000000..474215f --- /dev/null +++ b/internal/handler/api/unit/accessorymaterialall.go @@ -0,0 +1,17 @@ +package unit + +import ( + unitapischema "honoka-chan/internal/schema/api/unit" + "time" +) + +func unitAccessoryMaterialAll() (res any, err error) { + res = unitapischema.AccessoryMaterialAllResp{ + Result: unitapischema.AccessoryMaterialAllData{}, + Status: 200, + CommandNum: false, + TimeStamp: time.Now().Unix(), + } + + return res, err +} diff --git a/internal/handler/api/unit/accessorytab.go b/internal/handler/api/unit/accessorytab.go new file mode 100644 index 0000000..30d9c67 --- /dev/null +++ b/internal/handler/api/unit/accessorytab.go @@ -0,0 +1,20 @@ +package unit + +import ( + "encoding/json" + unitapischema "honoka-chan/internal/schema/api/unit" + honokautils "honoka-chan/pkg/utils" + "time" +) + +func unitAccessoryTab() (res any, err error) { + data := honokautils.ReadAllText("assets/serverdata/accessoryTab.json") + resp := unitapischema.AccessoryTabResp{} + err = json.Unmarshal([]byte(data), &resp) + if err != nil { + return nil, err + } + resp.TimeStamp = time.Now().Unix() + + return resp, err +} diff --git a/internal/handler/api/unit/all.go b/internal/handler/api/unit/all.go index 4649331..dba7dd4 100644 --- a/internal/handler/api/unit/all.go +++ b/internal/handler/api/unit/all.go @@ -1,7 +1,8 @@ package unit import ( - "honoka-chan/internal/schema/api/unit" + unitmodel "honoka-chan/internal/model/unit" + unitapischema "honoka-chan/internal/schema/api/unit" "honoka-chan/internal/session" "time" @@ -11,23 +12,48 @@ import ( func unitAll(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - unitsData := []unit.Active{} - err = ss.MainEng.Table("common_unit_m").Find(&unitsData) + unitMap := []unitmodel.UnitDataMap{} + err = ss.GetBasicUnitInfo(). + Where("a.user_id = ?", ss.UserID).Find(&unitMap) if ss.CheckErr(err) { return } - userUnits := []unit.Active{} - err = ss.UserEng.Table("user_unit").Where("user_id = ?", ss.UserID).Find(&userUnits) - if ss.CheckErr(err) { - return + unitsData := []unitapischema.Active{} + for _, u := range unitMap { + unitsData = append(unitsData, unitapischema.Active{ + UnitOwningUserID: u.UnitOwningUserID, + UserID: ss.UserID, + UnitID: u.UnitID, + Exp: u.Exp, + NextExp: 0, + Level: u.Level, + MaxLevel: u.MaxLevel, + LevelLimitID: u.LevelLimitID, + Rank: u.Rank, + MaxRank: u.MaxRank, + Love: u.Love, + MaxLove: u.MaxLove, + UnitSkillExp: u.UnitSkillExp, + UnitSkillLevel: u.UnitSkillLevel, + MaxHp: u.MaxHp, + UnitRemovableSkillCapacity: u.UnitRemovableSkillCapacity, + FavoriteFlag: u.FavoriteFlag, + DisplayRank: u.DisplayRank, + IsRankMax: u.IsRankMax, + IsLoveMax: u.IsLoveMax, + IsLevelMax: u.IsLevelMax, + IsSigned: u.IsSigned, + IsSkillLevelMax: u.IsSkillLevelMax, + IsRemovableSkillCapacityMax: u.IsRemovableSkillCapacityMax, + InsertDate: "2023-03-20 03:58:55", + }) } - unitsData = append(unitsData, userUnits...) - res = unit.AllResp{ - Result: unit.AllData{ + res = unitapischema.AllResp{ + Result: unitapischema.AllData{ Active: unitsData, - Waiting: []unit.Waiting{}, + Waiting: []unitapischema.Waiting{}, }, Status: 200, CommandNum: false, diff --git a/internal/handler/api/unit/deckinfo.go b/internal/handler/api/unit/deckinfo.go index 3ac93f8..064f07f 100644 --- a/internal/handler/api/unit/deckinfo.go +++ b/internal/handler/api/unit/deckinfo.go @@ -1,7 +1,7 @@ package unit import ( - "honoka-chan/internal/schema/api/unit" + unitapischema "honoka-chan/internal/schema/api/unit" "honoka-chan/internal/session" "time" @@ -11,23 +11,23 @@ import ( func unitDeckInfo(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - userDeck := []unit.UserDeckData{} + userDeck := []unitapischema.UserDeckData{} err = ss.UserEng.Table("user_deck").Where("user_id = ?", ss.UserID).Asc("deck_id").Find(&userDeck) if ss.CheckErr(err) { return } - unitDeckInfo := []unit.DeckInfoData{} + unitDeckInfo := []unitapischema.DeckInfoData{} for _, deck := range userDeck { - deckUnit := []unit.UnitDeckData{} + deckUnit := []unitapischema.UnitDeckData{} err = ss.UserEng.Table("user_deck_unit").Where("user_deck_id = ?", deck.ID).Asc("position").Find(&deckUnit) if ss.CheckErr(err) { return } - oUID := []unit.UnitOwningUserIds{} + oUID := []unitapischema.UnitOwningUserIds{} for _, u := range deckUnit { - oUID = append(oUID, unit.UnitOwningUserIds{ + oUID = append(oUID, unitapischema.UnitOwningUserIds{ Position: u.Position, UnitOwningUserID: u.UnitOwningUserID, }) @@ -37,14 +37,14 @@ func unitDeckInfo(ctx *gin.Context) (res any, err error) { if deck.MainFlag == 1 { mainFlag = true } - unitDeckInfo = append(unitDeckInfo, unit.DeckInfoData{ + unitDeckInfo = append(unitDeckInfo, unitapischema.DeckInfoData{ UnitDeckID: deck.DeckID, MainFlag: mainFlag, DeckName: deck.DeckName, UnitOwningUserIds: oUID, }) } - res = unit.DeckInfoResp{ + res = unitapischema.DeckInfoResp{ Result: unitDeckInfo, Status: 200, CommandNum: false, diff --git a/internal/handler/api/unit/removableskillinfo.go b/internal/handler/api/unit/removableskillinfo.go index 99d49a6..a508479 100644 --- a/internal/handler/api/unit/removableskillinfo.go +++ b/internal/handler/api/unit/removableskillinfo.go @@ -1,7 +1,7 @@ package unit import ( - "honoka-chan/internal/schema/api/unit" + unitapischema "honoka-chan/internal/schema/api/unit" "honoka-chan/internal/session" "time" @@ -11,7 +11,7 @@ import ( func unitRemovableSkillInfo(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - var skillEquipCount []unit.SkillEquipCount + var skillEquipCount []unitapischema.SkillEquipCount err = ss.UserEng.Table("user_unit_skill_equip").Where("user_id = ?", ss.UserID).Select("unit_removable_skill_id,COUNT(*) AS ct"). GroupBy("unit_removable_skill_id").Find(&skillEquipCount) if ss.CheckErr(err) { @@ -24,12 +24,12 @@ func unitRemovableSkillInfo(ctx *gin.Context) (res any, err error) { return } - owingInfo := []unit.OwningInfo{} + owingInfo := []unitapischema.OwningInfo{} for _, id := range rmSkillIds { - info := unit.OwningInfo{ + info := unitapischema.OwningInfo{ UnitRemovableSkillID: id, - TotalAmount: 9, - EquippedAmount: 0, + TotalAmount: 999, + EquippedAmount: 0, // TODO: 计算实际数量 InsertDate: "2023-01-01 12:00:00", } for _, sk := range skillEquipCount { @@ -49,21 +49,21 @@ func unitRemovableSkillInfo(ctx *gin.Context) (res any, err error) { equipInfo := map[int]any{} for _, v := range unitOwningIds { - detail := []unit.SkillEquipDetail{} + detail := []unitapischema.SkillEquipDetail{} err = ss.UserEng.Table("user_unit_skill_equip").Where("user_id = ? AND unit_owning_user_id = ?", ss.UserID, v). Cols("unit_removable_skill_id").Find(&detail) if ss.CheckErr(err) { return } - equipInfo[v] = unit.SkillEquipList{ + equipInfo[v] = unitapischema.SkillEquipList{ UnitOwningUserID: v, Detail: detail, } } - res = unit.RemovableSkillInfoResp{ - Result: unit.RemovableSkillInfoData{ + res = unitapischema.RemovableSkillInfoResp{ + Result: unitapischema.RemovableSkillInfoData{ OwningInfo: owingInfo, EquipmentInfo: equipInfo, }, // 宝石 diff --git a/internal/handler/api/unit/supporterall.go b/internal/handler/api/unit/supporterall.go index 9b6fb61..1d2dc05 100644 --- a/internal/handler/api/unit/supporterall.go +++ b/internal/handler/api/unit/supporterall.go @@ -1,14 +1,14 @@ package unit import ( - "honoka-chan/internal/schema/api/unit" + unitapischema "honoka-chan/internal/schema/api/unit" "time" ) func unitSupporterAll() (res any, err error) { - res = unit.SupporterAllResp{ - Result: unit.SupporterAllData{ - UnitSupportList: []unit.SupporterList{}, + res = unitapischema.SupporterAllResp{ + Result: unitapischema.SupporterAllData{ + UnitSupportList: []unitapischema.SupporterList{}, }, // 练习道具 Status: 200, CommandNum: false, diff --git a/internal/handler/api/unit/unit.go b/internal/handler/api/unit/unit.go index 2ed19fa..e282743 100644 --- a/internal/handler/api/unit/unit.go +++ b/internal/handler/api/unit/unit.go @@ -10,6 +10,10 @@ func UnitApi(ctx *gin.Context, action string) (res any, err error) { switch action { case "accessoryAll": res, err = unitAccessoryAll(ctx) + case "accessoryMaterialAll": + res, err = unitAccessoryMaterialAll() + case "accessoryTab": + res, err = unitAccessoryTab() case "deckInfo": res, err = unitDeckInfo(ctx) case "removableSkillInfo": diff --git a/internal/handler/api/user/getnavi.go b/internal/handler/api/user/getnavi.go index 9520705..8236e29 100644 --- a/internal/handler/api/user/getnavi.go +++ b/internal/handler/api/user/getnavi.go @@ -1,7 +1,7 @@ package user import ( - "honoka-chan/internal/schema/api/user" + userapischema "honoka-chan/internal/schema/api/user" "honoka-chan/internal/session" "time" @@ -17,9 +17,9 @@ func userGetNavi(ctx *gin.Context) (res any, err error) { return } - res = user.GetNaviResp{ - Result: user.GetNaviData{ - User: user.User{ + res = userapischema.GetNaviResp{ + Result: userapischema.GetNaviData{ + User: userapischema.User{ UserID: uID, UnitOwningUserID: oID, }, diff --git a/internal/handler/api/user/info.go b/internal/handler/api/user/info.go index 67c6d8e..fd61b8f 100644 --- a/internal/handler/api/user/info.go +++ b/internal/handler/api/user/info.go @@ -1,7 +1,7 @@ package user import ( - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" userapischema "honoka-chan/internal/schema/api/user" "honoka-chan/internal/session" "time" @@ -12,43 +12,14 @@ import ( func userInfo(ctx *gin.Context) (res any, err error) { ss := session.Get(ctx) - pref := user.UserPref{} + pref := usermodel.UserPref{} _, err = ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Get(&pref) if err != nil { return nil, err } res = userapischema.InfoResp{ - Result: userapischema.UserInfo{ - UserID: ss.UserID, - Name: pref.UserName, - Level: pref.UserLevel, - Exp: 1089696, - PreviousExp: 0, - NextExp: 1207185, - GameCoin: 999999999, - SnsCoin: 100000, - FreeSnsCoin: 50000, - PaidSnsCoin: 50000, - SocialPoint: 1438395, - UnitMax: 5000, - WaitingUnitMax: 1000, - EnergyMax: 417, - EnergyFullTime: "2023-03-20 03:58:55", - LicenseLiveEnergyRecoverlyTime: 60, - EnergyFullNeedTime: 0, - OverMaxEnergy: 417, - TrainingEnergy: 100, - TrainingEnergyMax: 100, - FriendMax: 99, - InviteCode: pref.InviteCode, - InsertDate: "2015-08-10 18:58:30", - UpdateDate: "2018-08-09 18:13:12", - TutorialState: -1, - DiamondCoin: 0, - CrystalCoin: 0, - LpRecoveryItem: []userapischema.LpRecoveryItem{}, - }, + Result: ss.GetUserInfo(), Status: 200, CommandNum: false, TimeStamp: time.Now().Unix(), diff --git a/internal/handler/award/set.go b/internal/handler/award/set.go index f554d10..da2fca3 100644 --- a/internal/handler/award/set.go +++ b/internal/handler/award/set.go @@ -2,9 +2,9 @@ package award import ( "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/award" + awardschema "honoka-chan/internal/schema/award" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -16,7 +16,7 @@ func set(ctx *gin.Context) { defer ss.Finalize() reqData := gjson.Parse(ctx.MustGet("request_data").(string)) - pref := user.UserPref{ + pref := usermodel.UserPref{ AwardID: int(reqData.Get("award_id").Int()), } @@ -25,7 +25,7 @@ func set(ctx *gin.Context) { return } - ss.Respond(award.SetResp{ + ss.Respond(awardschema.SetResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/background/set.go b/internal/handler/background/set.go index 4cfca5a..36d705d 100644 --- a/internal/handler/background/set.go +++ b/internal/handler/background/set.go @@ -2,9 +2,9 @@ package background import ( "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/background" + backgroundschema "honoka-chan/internal/schema/background" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -16,7 +16,7 @@ func set(ctx *gin.Context) { defer ss.Finalize() reqData := gjson.Parse(ctx.MustGet("request_data").(string)) - pref := user.UserPref{ + pref := usermodel.UserPref{ BackgroundID: int(reqData.Get("background_id").Int()), } @@ -25,7 +25,7 @@ func set(ctx *gin.Context) { return } - ss.Respond(background.SetResp{ + ss.Respond(backgroundschema.SetResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/download/additional.go b/internal/handler/download/additional.go index 59930a8..e4ebfe7 100644 --- a/internal/handler/download/additional.go +++ b/internal/handler/download/additional.go @@ -6,7 +6,7 @@ import ( "honoka-chan/config" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/download" + downloadschema "honoka-chan/internal/schema/download" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -22,13 +22,13 @@ func additional(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - downloadReq := download.AdditionalReq{} + downloadReq := downloadschema.AdditionalReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &downloadReq) if ss.CheckErr(err) { return } - pkgList := []download.AdditionalData{} + pkgList := []downloadschema.AdditionalData{} pkgType, pkgId := downloadReq.PackageType, downloadReq.PackageID var pkgInfo []PkgInfo err = ss.MainEng.Table("download_m").Where("pkg_type = ? AND pkg_id = ? AND pkg_os = ?", pkgType, pkgId, downloadReq.TargetOs). @@ -39,14 +39,14 @@ func additional(ctx *gin.Context) { } for _, pkg := range pkgInfo { - pkgList = append(pkgList, download.AdditionalData{ + pkgList = append(pkgList, downloadschema.AdditionalData{ Size: pkg.Size, URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", config.Conf.Settings.CdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order), }) } - ss.Respond(download.AdditionalResp{ + ss.Respond(downloadschema.AdditionalResp{ ResponseData: pkgList, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/download/batch.go b/internal/handler/download/batch.go index 2de4f15..a3d1da8 100644 --- a/internal/handler/download/batch.go +++ b/internal/handler/download/batch.go @@ -6,7 +6,7 @@ import ( "honoka-chan/config" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/download" + downloadschema "honoka-chan/internal/schema/download" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -17,13 +17,13 @@ func batch(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - downloadReq := download.BatchReq{} + downloadReq := downloadschema.BatchReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &downloadReq) if ss.CheckErr(err) { return } - pkgList := []download.BatchData{} + pkgList := []downloadschema.BatchData{} if downloadReq.ClientVersion == config.PackageVersion { pkgType := downloadReq.PackageType var pkgInfo []PkgInfo @@ -35,7 +35,7 @@ func batch(ctx *gin.Context) { } for _, pkg := range pkgInfo { - pkgList = append(pkgList, download.BatchData{ + pkgList = append(pkgList, downloadschema.BatchData{ Size: pkg.Size, URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", config.Conf.Settings.CdnServer, downloadReq.Os, pkgType, pkg.Id, pkg.Order), @@ -43,7 +43,7 @@ func batch(ctx *gin.Context) { } } - ss.Respond(download.BatchResp{ + ss.Respond(downloadschema.BatchResp{ ResponseData: pkgList, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/download/event.go b/internal/handler/download/event.go index 2bcea28..f0e973f 100644 --- a/internal/handler/download/event.go +++ b/internal/handler/download/event.go @@ -3,7 +3,7 @@ package download import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/download" + downloadschema "honoka-chan/internal/schema/download" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -13,7 +13,7 @@ func event(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(download.EventResp{ + ss.Respond(downloadschema.EventResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/download/update.go b/internal/handler/download/update.go index c04ea2a..4c0b5df 100644 --- a/internal/handler/download/update.go +++ b/internal/handler/download/update.go @@ -6,7 +6,7 @@ import ( "honoka-chan/config" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/download" + downloadschema "honoka-chan/internal/schema/download" "honoka-chan/internal/session" "io" "net/http" @@ -18,13 +18,13 @@ func update(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - downloadReq := download.UpdateReq{} + downloadReq := downloadschema.UpdateReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &downloadReq) if ss.CheckErr(err) { return } - pkgList := []download.UpdateData{} + pkgList := []downloadschema.UpdateData{} if downloadReq.ExternalVersion != config.PackageVersion { pkgType := 99 var pkgInfo []PkgInfo @@ -36,7 +36,7 @@ func update(ctx *gin.Context) { } for _, pkg := range pkgInfo { - pkgList = append(pkgList, download.UpdateData{ + pkgList = append(pkgList, downloadschema.UpdateData{ Size: pkg.Size, URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", config.Conf.Settings.CdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order), @@ -60,7 +60,7 @@ func update(ctx *gin.Context) { } } - ss.Respond(download.UpdateResp{ + ss.Respond(downloadschema.UpdateResp{ ResponseData: pkgList, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/download/url.go b/internal/handler/download/url.go index e1d9a25..2b06826 100644 --- a/internal/handler/download/url.go +++ b/internal/handler/download/url.go @@ -6,7 +6,7 @@ import ( "honoka-chan/config" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/download" + downloadschema "honoka-chan/internal/schema/download" "honoka-chan/internal/session" "strings" @@ -17,7 +17,7 @@ func url(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - downloadReq := download.UrlReq{} + downloadReq := downloadschema.UrlReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &downloadReq) if ss.CheckErr(err) { return @@ -34,8 +34,8 @@ func url(ctx *gin.Context) { cdnServer, downloadReq.Os, strings.ReplaceAll(v, "\\", ""))) } - ss.Respond(download.UrlResp{ - ResponseData: download.UrlData{ + ss.Respond(downloadschema.UrlResp{ + ResponseData: downloadschema.UrlData{ UrlList: urlList, }, ReleaseInfo: []any{}, diff --git a/internal/handler/event/list.go b/internal/handler/event/list.go index c521881..137151c 100644 --- a/internal/handler/event/list.go +++ b/internal/handler/event/list.go @@ -3,7 +3,7 @@ package event import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/event" + eventschema "honoka-chan/internal/schema/event" "honoka-chan/internal/session" "time" @@ -14,9 +14,9 @@ func list(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - targets := []event.TargetList{} + targets := []eventschema.TargetList{} for i := range 6 { - targets = append(targets, event.TargetList{ + targets = append(targets, eventschema.TargetList{ Position: i + 1, IsDisplayable: false, }) @@ -30,8 +30,8 @@ func list(ctx *gin.Context) { // StatusCode: 600, // }) - ss.Respond(event.ListResp{ - ResponseData: event.ListData{ + ss.Respond(eventschema.ListResp{ + ResponseData: eventschema.ListData{ TargetList: targets, ServerTimestamp: time.Now().Unix(), }, diff --git a/internal/handler/gdpr/get.go b/internal/handler/gdpr/get.go index 4454860..0b13ba3 100644 --- a/internal/handler/gdpr/get.go +++ b/internal/handler/gdpr/get.go @@ -3,7 +3,7 @@ package gdpr import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/gdpr" + gdprschema "honoka-chan/internal/schema/gdpr" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func get(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(gdpr.GetResp{ - ResponseData: gdpr.GetData{ + ss.Respond(gdprschema.GetResp{ + ResponseData: gdprschema.GetData{ EnableGdpr: true, IsEea: false, ServerTimestamp: time.Now().Unix(), diff --git a/internal/handler/ghome/account/active.go b/internal/handler/ghome/account/active.go index e95e0d7..5d63f09 100644 --- a/internal/handler/ghome/account/active.go +++ b/internal/handler/ghome/account/active.go @@ -2,7 +2,7 @@ package account import ( "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -12,10 +12,10 @@ func active(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - ss.Respond(ghome.ActiveResp{ + ss.Respond(ghomeschema.ActiveResp{ Code: 0, Msg: "ok", - Data: ghome.ActiveData{ + Data: ghomeschema.ActiveData{ Message: "ok", Result: 0, }, diff --git a/internal/handler/ghome/account/initialize.go b/internal/handler/ghome/account/initialize.go index f8973dc..4f03eba 100644 --- a/internal/handler/ghome/account/initialize.go +++ b/internal/handler/ghome/account/initialize.go @@ -4,7 +4,7 @@ import ( "encoding/base64" "encoding/json" "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "strings" @@ -16,7 +16,7 @@ func initialize(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - initData := ghome.InitializeData{ + initData := ghomeschema.InitializeData{ BrandLogo: "http://gskd.sdo.com/ghome/ztc/logo/og/logo_xhdpi.png", BrandName: "盛趣游戏", ForceShowAgreement: 1, @@ -38,7 +38,7 @@ func initialize(ctx *gin.Context) { return } - ss.Respond(ghome.InitializeResp{ + ss.Respond(ghomeschema.InitializeResp{ Code: 0, Msg: "ok", Data: base64.StdEncoding.EncodeToString(encryptedData), diff --git a/internal/handler/ghome/account/login.go b/internal/handler/ghome/account/login.go index 8f2f9d5..5c6f88a 100644 --- a/internal/handler/ghome/account/login.go +++ b/internal/handler/ghome/account/login.go @@ -4,13 +4,13 @@ import ( "encoding/base64" "encoding/json" "fmt" - "honoka-chan/internal/model/user" + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/api/profile" - "honoka-chan/internal/schema/api/unit" + unitapischema "honoka-chan/internal/schema/api/unit" ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" - honokautils "honoka-chan/pkg/utils" + "honoka-chan/pkg/utils" "net/url" "strconv" "strings" @@ -62,10 +62,10 @@ func login(ctx *gin.Context) { userID, _ = checkUserID(ss, int(loginTime)) pass = openssl.Md5ToString(password) - autoKey = "AUTO" + strings.ToUpper(honokautils.RandomStr(32)) + autoKey = "AUTO" + strings.ToUpper(utils.RandomStr(32)) ticket = fmt.Sprintf("9999999%d%d", userID, userID) - userData := user.Users{ + userData := usermodel.Users{ Phone: phone, Password: pass, Autokey: autoKey, @@ -80,7 +80,7 @@ func login(ctx *gin.Context) { // 方便起见初始化 userid 和 key 一样 // 注意:user_key 表中的 key 是上文生成的用于登录的 userid,而 userid 则是用于 Authorize Token 生成用的 - userKey := user.UserKey{ + userKey := usermodel.UserKey{ UserID: userID, Key: userID, } @@ -96,20 +96,59 @@ func login(ctx *gin.Context) { } if !exists { - // 默认中心成员 - var unitOwningUserID int - _, err = ss.MainEng.Table("common_unit_m").Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&unitOwningUserID) + // 生成用于卡片 + var unitData []unitmodel.CommonUnitData + err = ss.UserEng.Table(new(unitmodel.CommonUnitData)).Find(&unitData) if ss.CheckErr(err) { return } - userPref := user.UserPref{ + checked := false + for _, u := range unitData { + userUnit := usermodel.UserUnitData{ + UnitID: u.UnitID, + FavoriteFlag: false, + DisplayRank: u.MaxRank, + UserID: userID, + InsertDate: time.Now().Unix(), + UpdateDate: time.Now().Unix(), + } + + // 检查表里是否已经有数据 + if !checked { + ct, err := ss.UserEng.Table(new(usermodel.UserUnitData)).Count() + if ss.CheckErr(err) { + return + } + + if ct == 0 { + userUnit.UnitOwningUserID = 38383 + } + + checked = true + } + + _, err = ss.UserEng.Table(new(usermodel.UserUnitData)).Insert(&userUnit) + if ss.CheckErr(err) { + return + } + } + + // 默认中心成员 + var unitOwningUserID int + _, err = ss.UserEng.Table(new(usermodel.UserUnitData)). + Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&unitOwningUserID) + if ss.CheckErr(err) { + return + } + + userPref := usermodel.UserPref{ UserID: userID, AwardID: 1, // 音乃木坂学生 BackgroundID: 1, // 初始背景 UnitOwningUserID: unitOwningUserID, UserName: "音乃木坂学生", - UserLevel: 1, + UserLevel: 1028, UserDesc: "你好。", InviteCode: strconv.Itoa(userID), UpdateTime: time.Now().Unix(), @@ -128,7 +167,7 @@ func login(ctx *gin.Context) { if !exists { // 默认队伍 - userDeck := unit.UserDeckData{ + userDeck := unitapischema.UserDeckData{ DeckID: 1, MainFlag: 1, DeckName: "队伍A", @@ -139,44 +178,37 @@ func login(ctx *gin.Context) { userDeckID := userDeck.ID // 默认卡组 - 仆光 - unitID := []int{} - err = ss.MainEng.Table("unit_m").Cols("unit_id").Where("album_series_id = ?", 615).Find(&unitID) + unitID := []int{3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473} + var unitData []unitmodel.UnitDataMap + err = ss.GetBasicUnitInfo().In("a.unit_id", unitID).Find(&unitData) if ss.CheckErr(err) { return } - unitData := []profile.UnitData{} - err = ss.MainEng.Table("common_unit_m").In("unit_id", unitID).Find(&unitData) - if ss.CheckErr(err) { - return - } - - position := 1 - for _, u := range unitData { - unitDeckData := unit.UnitDeckData{ + for i, u := range unitData { + unitDeckData := usermodel.UserDeckUnit{ UserDeckID: userDeckID, UnitOwningUserID: u.UnitOwningUserID, UnitID: u.UnitID, - Position: position, - Level: 100, - LevelLimitID: 1, - DisplayRank: 2, - Love: 1000, - UnitSkillLevel: 8, - IsRankMax: true, - IsLoveMax: true, - IsLevelMax: true, + Position: i + 1, + Level: u.Level, + LevelLimitID: u.LevelLimitID, + DisplayRank: u.DisplayRank, + Love: u.MaxLove, + UnitSkillLevel: u.UnitSkillLevel, + IsRankMax: u.IsRankMax, + IsLoveMax: u.IsLoveMax, + IsLevelMax: u.IsLevelMax, IsSigned: u.IsSigned, - BeforeLove: 1000, - MaxLove: 1000, - InsertData: time.Now().Unix(), + BeforeLove: u.MaxLove, + MaxLove: u.MaxLove, + UserID: userID, + InsertDate: time.Now().Unix(), } _, err = ss.UserEng.Table("user_deck_unit").Insert(&unitDeckData) if ss.CheckErr(err) { return } - - position++ } } @@ -193,7 +225,7 @@ func login(ctx *gin.Context) { loginCode = 31 loginMsg = "账号不存在或者密码有误!" } else { - userData := user.Users{ + userData := usermodel.Users{ Autokey: autoKey, Ticket: ticket, LastLoginTime: loginTime, diff --git a/internal/handler/ghome/account/loginauto.go b/internal/handler/ghome/account/loginauto.go index ce1bb2a..ed56f04 100644 --- a/internal/handler/ghome/account/loginauto.go +++ b/internal/handler/ghome/account/loginauto.go @@ -3,10 +3,12 @@ package account import ( "encoding/base64" "encoding/json" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "net/url" + "strconv" "github.com/gin-gonic/gin" "github.com/go-think/openssl" @@ -36,27 +38,27 @@ func loginAuto(ctx *gin.Context) { params, _ := url.ParseQuery(queryStr) autoKey := params.Get("autokey") - var uid, ticket string - _, err = ss.UserEng.Table("users").Cols("user_id,ticket").Where("autokey = ?", autoKey).Get(&uid, &ticket) + var userData usermodel.Users + exists, err := ss.UserEng.Table("users").Where("autokey = ?", autoKey).Get(&userData) if ss.CheckErr(err) { return } - loginAutoData := ghome.LoginAutoData{} + loginAutoData := ghomeschema.LoginAutoData{} loginAutoCode := 0 loginAutoMsg := "ok" - if uid != "" { - loginAutoData = ghome.LoginAutoData{ + if exists { + loginAutoData = ghomeschema.LoginAutoData{ Result: loginAutoCode, Message: loginAutoMsg, Autokey: autoKey, - UserId: uid, - Ticket: ticket, + UserId: strconv.Itoa(userData.UserID), + Ticket: userData.Ticket, } } else { loginAutoCode = 31 loginAutoMsg = "账号不存在或者登陆状态已过期!" - loginAutoData = ghome.LoginAutoData{ + loginAutoData = ghomeschema.LoginAutoData{ Result: loginAutoCode, Message: loginAutoMsg, } @@ -71,7 +73,7 @@ func loginAuto(ctx *gin.Context) { return } - ss.Respond(ghome.LoginAutoResp{ + ss.Respond(ghomeschema.LoginAutoResp{ Code: loginAutoCode, Msg: loginAutoMsg, Data: base64.StdEncoding.EncodeToString(encryptedData), diff --git a/internal/handler/ghome/account/reportrole.go b/internal/handler/ghome/account/reportrole.go index 515a1ba..dc4ea14 100644 --- a/internal/handler/ghome/account/reportrole.go +++ b/internal/handler/ghome/account/reportrole.go @@ -3,7 +3,7 @@ package account import ( "encoding/base64" "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -21,7 +21,7 @@ func reportRole(ctx *gin.Context) { return } - ss.Respond(ghome.ReportRoleResp{ + ss.Respond(ghomeschema.ReportRoleResp{ Code: 0, Msg: "ok", Data: base64.StdEncoding.EncodeToString(encryptedToken), diff --git a/internal/handler/ghome/basic/getcode.go b/internal/handler/ghome/basic/getcode.go index 9241671..1ea7e78 100644 --- a/internal/handler/ghome/basic/getcode.go +++ b/internal/handler/ghome/basic/getcode.go @@ -3,7 +3,7 @@ package basic import ( "encoding/json" "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -20,7 +20,7 @@ func getCode(ctx *gin.Context) { return } - ss.Respond(ghome.GetCodeResp{ + ss.Respond(ghomeschema.GetCodeResp{ Code: 0, Msg: "ok", Data: getCodeData, diff --git a/internal/handler/ghome/basic/getproductlist.go b/internal/handler/ghome/basic/getproductlist.go index 2930d17..d3c2d7c 100644 --- a/internal/handler/ghome/basic/getproductlist.go +++ b/internal/handler/ghome/basic/getproductlist.go @@ -2,7 +2,7 @@ package basic import ( "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -12,12 +12,12 @@ func getProductList(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - getProductListData := ghome.GetProductListData{ + getProductListData := ghomeschema.GetProductListData{ Message: []string{}, Result: 0, } - ss.Respond(ghome.GetProductListResp{ + ss.Respond(ghomeschema.GetProductListResp{ Code: 1, Msg: "ok", Data: getProductListData, diff --git a/internal/handler/ghome/basic/handshake.go b/internal/handler/ghome/basic/handshake.go index 7a5b69c..0f4a40c 100644 --- a/internal/handler/ghome/basic/handshake.go +++ b/internal/handler/ghome/basic/handshake.go @@ -4,9 +4,8 @@ import ( "encoding/base64" "fmt" "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" - "honoka-chan/pkg/db" "honoka-chan/pkg/encrypt" honokautils "honoka-chan/pkg/utils" "net/url" @@ -34,21 +33,16 @@ func handshake(ctx *gin.Context) { params, _ := url.ParseQuery(string(decryptedData)) - randKey := []byte(params.Get("randkey")) - deviceID := ss.GetDeviceID() - - err = db.Ldb.Set([]byte(deviceID), randKey) - if ss.CheckErr(err) { - return - } + randKey := params.Get("randkey") + ss.SetRandKey(randKey) token := fmt.Sprintf(`{"message":"ok","result":0,"token":"%s"}`, strings.ToUpper(honokautils.RandomStr(33))) - encryptedToken, err := openssl.Des3ECBEncrypt([]byte(token), randKey[0:24], openssl.PKCS7_PADDING) + encryptedToken, err := openssl.Des3ECBEncrypt([]byte(token), []byte(randKey)[0:24], openssl.PKCS7_PADDING) if ss.CheckErr(err) { return } - ss.Respond(ghome.HandshakeResp{ + ss.Respond(ghomeschema.HandshakeResp{ Code: 0, Msg: "ok", Data: base64.StdEncoding.EncodeToString(encryptedToken), diff --git a/internal/handler/ghome/basic/loginarea.go b/internal/handler/ghome/basic/loginarea.go index 81ff233..b014051 100644 --- a/internal/handler/ghome/basic/loginarea.go +++ b/internal/handler/ghome/basic/loginarea.go @@ -2,7 +2,7 @@ package basic import ( "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -12,10 +12,10 @@ func loginArea(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - ss.Respond(ghome.LoginAreaResp{ + ss.Respond(ghomeschema.LoginAreaResp{ Code: 0, Msg: "ok", - Data: ghome.LoginAreaData{ + Data: ghomeschema.LoginAreaData{ UserID: ctx.PostForm("userid"), }, }) diff --git a/internal/handler/ghome/basic/publickey.go b/internal/handler/ghome/basic/publickey.go index 14258f6..bfcc860 100644 --- a/internal/handler/ghome/basic/publickey.go +++ b/internal/handler/ghome/basic/publickey.go @@ -5,7 +5,7 @@ import ( "encoding/pem" "honoka-chan/config" "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" honokautils "honoka-chan/pkg/utils" @@ -18,7 +18,7 @@ func publicKey(ctx *gin.Context) { publicKeyCode := 0 publicKeyMsg := "ok" - publicKeyData := ghome.PublicKeyData{ + publicKeyData := ghomeschema.PublicKeyData{ Result: publicKeyCode, Message: publicKeyMsg, } @@ -33,7 +33,7 @@ func publicKey(ctx *gin.Context) { publicKeyData.Method = "rsa" } - ss.Respond(ghome.PublicKeyResp{ + ss.Respond(ghomeschema.PublicKeyResp{ Code: publicKeyCode, Msg: publicKeyMsg, Data: publicKeyData, diff --git a/internal/handler/ghome/guest/status.go b/internal/handler/ghome/guest/status.go index 018cc23..ff06ca2 100644 --- a/internal/handler/ghome/guest/status.go +++ b/internal/handler/ghome/guest/status.go @@ -2,7 +2,7 @@ package guest import ( "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -12,10 +12,10 @@ func status(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - ss.Respond(ghome.GuestStatusResp{ + ss.Respond(ghomeschema.GuestStatusResp{ Code: 0, Msg: "ok", - Data: ghome.GuestStatusData{ + Data: ghomeschema.GuestStatusData{ Disablead: 1, Loginswitch: 1, Message: "ok", diff --git a/internal/handler/ghome/misc/agreement.go b/internal/handler/ghome/misc/agreement.go index 249e50e..6e875c6 100644 --- a/internal/handler/ghome/misc/agreement.go +++ b/internal/handler/ghome/misc/agreement.go @@ -2,7 +2,7 @@ package misc import ( "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -12,11 +12,11 @@ func agreement(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - ss.Respond(ghome.AgreementResp{ + ss.Respond(ghomeschema.AgreementResp{ ReturnCode: 0, ErrorType: 0, ReturnMessage: "", - Data: ghome.AgreementData{}, + Data: ghomeschema.AgreementData{}, }) } diff --git a/internal/handler/ghome/misc/integration.go b/internal/handler/ghome/misc/integration.go index 336a4bb..851539b 100644 --- a/internal/handler/ghome/misc/integration.go +++ b/internal/handler/ghome/misc/integration.go @@ -2,7 +2,7 @@ package misc import ( "honoka-chan/internal/router" - "honoka-chan/internal/schema/ghome" + ghomeschema "honoka-chan/internal/schema/ghome" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -12,10 +12,10 @@ func appReport(ctx *gin.Context) { ss := session.New(ctx) defer ss.Finalize() - ss.Respond(ghome.AppReportResp{ + ss.Respond(ghomeschema.AppReportResp{ Code: 0, Msg: "", - Data: ghome.AppReportData{ + Data: ghomeschema.AppReportData{ NeedReport: 0, }, }) diff --git a/internal/handler/lbonus/execute.go b/internal/handler/lbonus/execute.go index 626d817..0e32f67 100644 --- a/internal/handler/lbonus/execute.go +++ b/internal/handler/lbonus/execute.go @@ -3,7 +3,7 @@ package lbonus import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/lbonus" + lbonusschema "honoka-chan/internal/schema/lbonus" "honoka-chan/internal/session" "time" @@ -35,7 +35,7 @@ func execute(ctx *gin.Context) { d2 := d1.AddDate(0, 1, -1) // fmt.Println(d2) - weeksList := []lbonus.Day{} + weeksList := []lbonusschema.Day{} for c := d1; ; c = c.AddDate(0, 0, 1) { _, _, rd := c.Date() received := false @@ -43,14 +43,14 @@ func execute(ctx *gin.Context) { received = true } rw := weeks[c.Weekday().String()] - weeksList = append(weeksList, lbonus.Day{ + weeksList = append(weeksList, lbonusschema.Day{ Day: rd, DayOfTheWeek: rw, SpecialDay: false, SpecialImageAsset: "", Received: received, AdReceived: false, - Item: lbonus.Item{ + Item: lbonusschema.Item{ ItemID: 4, AddType: 3001, Amount: 1, @@ -72,18 +72,18 @@ func execute(ctx *gin.Context) { d2 = d1.AddDate(0, 1, -1) // fmt.Println(d2) - nextWeeksList := []lbonus.Day{} + nextWeeksList := []lbonusschema.Day{} for c := d1; ; c = c.AddDate(0, 0, 1) { _, _, rd := c.Date() rw := weeks[c.Weekday().String()] - nextWeeksList = append(nextWeeksList, lbonus.Day{ + nextWeeksList = append(nextWeeksList, lbonusschema.Day{ Day: rd, DayOfTheWeek: rw, SpecialDay: false, SpecialImageAsset: "", Received: false, AdReceived: false, - Item: lbonus.Item{ + Item: lbonusschema.Item{ ItemID: 4, AddType: 3001, Amount: 1, @@ -94,26 +94,26 @@ func execute(ctx *gin.Context) { } } - resp := lbonus.ExecuteResp{ - ResponseData: lbonus.ExecuteData{ + resp := lbonusschema.ExecuteResp{ + ResponseData: lbonusschema.ExecuteData{ Sheets: []any{}, - CalendarInfo: lbonus.CalendarInfo{ + CalendarInfo: lbonusschema.CalendarInfo{ CurrentDate: time.Now().Format("2006-01-02 03:04:05"), - CurrentMonth: lbonus.Month{ + CurrentMonth: lbonusschema.Month{ Year: y, Month: int(cm), Days: weeksList, }, - NextMonth: lbonus.Month{ + NextMonth: lbonusschema.Month{ Year: y, Month: int(m), Days: nextWeeksList, }, }, - TotalLoginInfo: lbonus.TotalLoginInfo{ + TotalLoginInfo: lbonusschema.TotalLoginInfo{ LoginCount: 2626, RemainingCount: 74, - Reward: []lbonus.Reward{ + Reward: []lbonusschema.Reward{ { ItemID: 5, AddType: 1000, @@ -122,8 +122,8 @@ func execute(ctx *gin.Context) { }, }, LicenseLbonusList: []any{}, - ClassSystem: lbonus.ClassSystem{ - RankInfo: lbonus.RankInfo{ + ClassSystem: lbonusschema.ClassSystem{ + RankInfo: lbonusschema.RankInfo{ BeforeClassRankID: 10, AfterClassRankID: 10, RankUpDate: "2020-02-12 11:57:15", @@ -133,17 +133,17 @@ func execute(ctx *gin.Context) { IsVisible: true, }, StartDashSheets: []any{}, - EffortPoint: []lbonus.EffortPoint{ + EffortPoint: []lbonusschema.EffortPoint{ { LiveEffortPointBoxSpecID: 5, Capacity: 4000000, Before: 1400116, After: 1400116, - Rewards: []lbonus.Rewards{}, + Rewards: []lbonusschema.Rewards{}, }, }, LimitedEffortBox: []any{}, - MuseumInfo: lbonus.Museum{}, + MuseumInfo: lbonusschema.Museum{}, ServerTimestamp: time.Now().Unix(), PresentCnt: 0, }, diff --git a/internal/handler/live/continue.go b/internal/handler/live/continue.go new file mode 100644 index 0000000..92ada89 --- /dev/null +++ b/internal/handler/live/continue.go @@ -0,0 +1,30 @@ +package live + +import ( + "honoka-chan/internal/middleware" + "honoka-chan/internal/router" + liveschema "honoka-chan/internal/schema/live" + "honoka-chan/internal/session" + "time" + + "github.com/gin-gonic/gin" +) + +func continuee(ctx *gin.Context) { + ss := session.Get(ctx) + defer ss.Finalize() + + ss.Respond(liveschema.ContinueResp{ + ResponseData: liveschema.ContinueData{ + BeforeSnsCoin: 100000, + AfterSnsCoin: 100000, + ServerTimestamp: time.Now().Unix(), + }, + ReleaseInfo: []any{}, + StatusCode: 200, + }) +} + +func init() { + router.AddHandler("main.php", "POST", "/live/continue", middleware.Common, continuee) +} diff --git a/internal/handler/live/gameover.go b/internal/handler/live/gameover.go index b19413f..4b4a3b1 100644 --- a/internal/handler/live/gameover.go +++ b/internal/handler/live/gameover.go @@ -3,7 +3,7 @@ package live import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/live" + liveschema "honoka-chan/internal/schema/live" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -11,9 +11,12 @@ import ( func gameOver(ctx *gin.Context) { ss := session.Get(ctx) - defer ss.Finalize() + defer func() { + ss.ClearLiveInProgress() + ss.Finalize() + }() - ss.Respond(live.GameOverResp{ + ss.Respond(liveschema.GameOverResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/live/partylist.go b/internal/handler/live/partylist.go index 1f6660c..89bbadc 100644 --- a/internal/handler/live/partylist.go +++ b/internal/handler/live/partylist.go @@ -1,11 +1,14 @@ package live import ( - "encoding/json" + "errors" "honoka-chan/internal/middleware" + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" + liveschema "honoka-chan/internal/schema/live" "honoka-chan/internal/session" - honokautils "honoka-chan/pkg/utils" + "time" "github.com/gin-gonic/gin" ) @@ -14,14 +17,81 @@ func partyList(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - data := honokautils.ReadAllText("assets/serverdata/partylist.json") - var partyResp map[string]any - err := json.Unmarshal([]byte(data), &partyResp) + pref := usermodel.UserPref{} + _, err := ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Get(&pref) if ss.CheckErr(err) { return } - ss.Respond(partyResp) + // TODO: 好友功能实装前先使用自己的卡组助战 + var unitList []usermodel.UserDeckUnit + err = ss.UserEng.Table("user_deck_unit").Where("user_id = ? AND position = 5", ss.UserID).Find(&unitList) + if ss.CheckErr(err) { + return + } + + var partyList []liveschema.PartyList + for _, u := range unitList { + var unitInfo unitmodel.UnitDataMap + has, err := ss.GetBasicUnitInfo(). + Where("unit_owning_user_id = ?", u.UnitOwningUserID).Get(&unitInfo) + if ss.CheckErr(err) { + return + } + + if !has { + ss.Abort(errors.New("卡片不存在!")) + return + } + + partyList = append(partyList, liveschema.PartyList{ + UserInfo: ss.GetUserInfo(), + CenterUnitInfo: liveschema.CenterUnitInfo{ + UnitOwningUserID: u.UnitOwningUserID, + UnitID: u.UnitID, + Exp: unitInfo.Exp, + NextExp: 0, + Level: u.Level, + LevelLimitID: u.LevelLimitID, + MaxLevel: unitInfo.MaxLevel, + Rank: unitInfo.Rank, + MaxRank: unitInfo.MaxRank, + Love: u.Love, + MaxLove: u.MaxLove, + UnitSkillLevel: u.UnitSkillLevel, + MaxHp: unitInfo.MaxHp, + FavoriteFlag: unitInfo.FavoriteFlag, + DisplayRank: u.DisplayRank, + UnitSkillExp: unitInfo.UnitSkillExp, + UnitRemovableSkillCapacity: unitInfo.UnitRemovableSkillCapacity, + Attribute: unitInfo.Attribute, + Smile: unitInfo.Smile, + Cute: unitInfo.Cute, + Cool: unitInfo.Cool, + IsLoveMax: u.IsLoveMax, + IsLevelMax: u.IsLevelMax, + IsRankMax: u.IsRankMax, + IsSigned: u.IsSigned, + IsSkillLevelMax: unitInfo.IsSkillLevelMax, + SettingAwardID: pref.AwardID, + RemovableSkillIds: []int{}, + }, + SettingAwardID: pref.AwardID, + AvailableSocialPoint: 10, + FriendStatus: 1, + }) + } + + ss.Respond(liveschema.PartyListResp{ + ResponseData: liveschema.PartyListData{ + PartyList: partyList, + TrainingEnergy: 10, + TrainingEnergyMax: 10, + ServerTimestamp: time.Now().Unix(), + }, + ReleaseInfo: []any{}, + StatusCode: 200, + }) } func init() { diff --git a/internal/handler/live/play.go b/internal/handler/live/play.go index f2d1e6c..879b716 100644 --- a/internal/handler/live/play.go +++ b/internal/handler/live/play.go @@ -2,183 +2,157 @@ package live import ( "encoding/json" - "fmt" "honoka-chan/internal/middleware" + unitmodel "honoka-chan/internal/model/unit" "honoka-chan/internal/router" - "honoka-chan/internal/schema/live" + liveschema "honoka-chan/internal/schema/live" "honoka-chan/internal/session" - "honoka-chan/pkg/db" honokautils "honoka-chan/pkg/utils" "math" "strconv" "time" "github.com/gin-gonic/gin" - "github.com/tidwall/gjson" ) func play(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - playReq := live.PlayReq{} + playReq := liveschema.PlayReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &playReq) if ss.CheckErr(err) { return } + // fmt.Println(ctx.MustGet("request_data").(string)) - tDifficultyId := playReq.LiveDifficultyID - difficultyId, err := strconv.Atoi(tDifficultyId) + ss.RegisterLiveInProgress(playReq.UnitDeckID) + + difficultyID, _ := strconv.Atoi(playReq.LiveDifficultyID) + + // 歌曲类型: normal / special + // sqlite3 不支持 FULL OUTER JOIN 所以这里使用 UNION ALL + var liveSetting struct { + NotesSettingAsset string `xorm:"notes_setting_asset"` + ARankScore int `xorm:"a_rank_score"` + BRankScore int `xorm:"b_rank_score"` + CRankScore int `xorm:"c_rank_score"` + SRankScore int `xorm:"s_rank_score"` + AcFlag int `xorm:"ac_flag"` + SwingFlag int `xorm:"swing_flag"` + } + sql := ` + SELECT notes_setting_asset, + a_rank_score, + b_rank_score, + c_rank_score, + s_rank_score, + ac_flag, + swing_flag + FROM live_setting_m + WHERE live_setting_id IN ( + SELECT live_setting_id + FROM normal_live_m + WHERE live_difficulty_id = ? + UNION ALL + SELECT live_setting_id + FROM special_live_m + WHERE live_difficulty_id = ? + ) + ` + _, err = ss.MainEng.SQL(sql, difficultyID, difficultyID).Get(&liveSetting) if ss.CheckErr(err) { return } - deckId := playReq.UnitDeckID + // fmt.Println("liveSetting", liveSetting) - // Save Deck Id for /live/reward - key := "live_deck_" + strconv.Itoa(ss.UserID) - err = db.Ldb.Set([]byte(key), []byte(strconv.Itoa(deckId))) - if ss.CheckErr(err) { - return - } - - // Song type: normal / special - // sqlite3 doesn't support FULL OUTER JOIN so use UNION ALL here. - sql := `SELECT notes_setting_asset,c_rank_score,b_rank_score,a_rank_score,s_rank_score,ac_flag,swing_flag FROM live_setting_m WHERE live_setting_id IN (SELECT live_setting_id FROM normal_live_m WHERE live_difficulty_id = ? UNION ALL SELECT live_setting_id FROM special_live_m WHERE live_difficulty_id = ?)` - var notes_setting_asset string - var c_rank_score, b_rank_score, a_rank_score, s_rank_score, ac_flag, swing_flag int - err = ss.MainEng.DB().QueryRow(sql, difficultyId, difficultyId).Scan(¬es_setting_asset, &c_rank_score, &b_rank_score, &a_rank_score, &s_rank_score, &ac_flag, &swing_flag) - if ss.CheckErr(err) { - return - } - - // fmt.Println(notes_setting_asset) - // fmt.Println(c_rank_score, b_rank_score, a_rank_score, s_rank_score) - - notes := []live.NotesList{} - // fmt.Println("./assets/serverdata/beatmaps/" + notes_setting_asset) - notes_list := honokautils.ReadAllText("./assets/serverdata/beatmaps/" + notes_setting_asset) + notes := []liveschema.NotesList{} + notes_list := honokautils.ReadAllText("./assets/serverdata/beatmaps/" + liveSetting.NotesSettingAsset) err = json.Unmarshal([]byte(notes_list), ¬es) if ss.CheckErr(err) { return } - ranks := []live.RankInfo{} - ranks = append(ranks, live.RankInfo{ + ranks := []liveschema.RankInfo{} + ranks = append(ranks, liveschema.RankInfo{ Rank: 5, RankMin: 0, - RankMax: c_rank_score, - }, live.RankInfo{ + RankMax: liveSetting.CRankScore, + }, liveschema.RankInfo{ Rank: 4, - RankMin: c_rank_score + 1, - RankMax: b_rank_score, - }, live.RankInfo{ + RankMin: liveSetting.CRankScore + 1, + RankMax: liveSetting.BRankScore, + }, liveschema.RankInfo{ Rank: 3, - RankMin: b_rank_score + 1, - RankMax: a_rank_score, - }, live.RankInfo{ + RankMin: liveSetting.BRankScore + 1, + RankMax: liveSetting.ARankScore, + }, liveschema.RankInfo{ Rank: 2, - RankMin: a_rank_score + 1, - RankMax: s_rank_score, - }, live.RankInfo{ + RankMin: liveSetting.ARankScore + 1, + RankMax: liveSetting.SRankScore, + }, liveschema.RankInfo{ Rank: 1, - RankMin: s_rank_score + 1, + RankMin: liveSetting.SRankScore + 1, RankMax: 0, }) - // ss.UserEng.ShowSQL(true) - // ss.MainEng.ShowSQL(true) owningIdList := []int{} - err = ss.UserEng.Table("user_deck_unit").Join("LEFT", "user_deck", "user_deck_unit.user_deck_id = user_deck.id"). - Where("user_id = ? AND deck_id = ?", ss.UserID, deckId).Cols("unit_owning_user_id"). - OrderBy("user_deck_unit.position ASC").Find(&owningIdList) + err = ss.UserEng.Table("user_deck_unit"). + Join("LEFT", "user_deck", "user_deck_unit.user_deck_id = user_deck.id"). + Where("user_deck.user_id = ? AND user_deck.deck_id = ?", ss.UserID, playReq.UnitDeckID). + Cols("unit_owning_user_id").OrderBy("user_deck_unit.position ASC").Find(&owningIdList) if ss.CheckErr(err) { return } - unitList := []live.UnitList{} - var totalSmile, totalPure, totalCool, maxLove float64 + unitList := []liveschema.UnitList{} + var totalSmile, totalPure, totalCool float64 var totalHp int for _, owningId := range owningIdList { - var uId int - exists, err := ss.MainEng.Table("common_unit_m").Where("unit_owning_user_id = ?", owningId).Cols("unit_id").Get(&uId) + // 卡片基础属性 + var baseSmile, basePure, baseCool, smileMax, pureMax, coolMax float64 + var unitData unitmodel.UnitDataMap + _, err = ss.GetBasicUnitInfo().Where("unit_owning_user_id = ?", owningId).Get(&unitData) if ss.CheckErr(err) { return } - - var maxHp, attrId, unitTypeId int - var baseSmile, basePure, baseCool, smileMax, pureMax, coolMax float64 - if exists { - // 公共卡片仅为100级属性 - _, err = ss.MainEng.Table("unit_m").Where("unit_id = ?", uId). - Join("LEFT", "unit_rarity_m", "unit_m.rarity = unit_rarity_m.rarity"). - Cols("attribute_id,hp_max,smile_max,pure_max,cool_max,after_love_max,unit_type_id"). - Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool, &maxLove, &unitTypeId) - if ss.CheckErr(err) { - return - } - } else { - // 用户卡片暂时固定为满级350级 - exists, err := ss.UserEng.Table("user_unit").Where("unit_owning_user_id = ?", owningId).Cols("unit_id").Get(&uId) - if ss.CheckErr(err) { - return - } - - if exists { - // 卡片100级基础属性 - _, err = ss.MainEng.Table("unit_m").Where("unit_id = ?", uId). - Join("LEFT", "unit_rarity_m", "unit_m.rarity = unit_rarity_m.rarity"). - Cols("attribute_id,hp_max,smile_max,pure_max,cool_max,after_love_max,unit_type_id"). - Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool, &maxLove, &unitTypeId) - if ss.CheckErr(err) { - return - } - - // 增量属性 - var diffSmile, diffPure, diffCool float64 - _, err = ss.MainEng.Table("unit_level_limit_pattern_m").Where("unit_level_limit_id = 1 AND unit_level = 350"). - Cols("smile_diff,pure_diff,cool_diff").Get(&diffSmile, &diffPure, &diffCool) - if ss.CheckErr(err) { - return - } - - // 更新卡片属性(注意这里是负数,要用减号) - baseSmile -= diffSmile - basePure -= diffPure - baseCool -= diffCool - } else { - err = fmt.Errorf("no such unit owning id: %d", owningId) - } - if ss.CheckErr(err) { - return - } - } + baseSmile = float64(unitData.Smile) + basePure = float64(unitData.Cute) + baseCool = float64(unitData.Cool) + // fmt.Println("================================") + // fmt.Println("基础属性:", baseSmile, basePure, baseCool) // 饰品属性加成(满级) var accessoryOwningId int - _, err = ss.UserEng.Table("user_accessory_wear").Where("unit_owning_user_id = ?", owningId). + exists, err := ss.UserEng.Table("user_accessory_wear"). + Where("unit_owning_user_id = ?", owningId). Cols("accessory_owning_user_id").Get(&accessoryOwningId) if ss.CheckErr(err) { return } - var smileAccessory, pureAccessory, coolAccessory float64 - _, err = ss.MainEng.Table("common_accessory_m").Join("LEFT", "accessory_m", "common_accessory_m.accessory_id = accessory_m.accessory_id"). - Where("accessory_owning_user_id = ?", accessoryOwningId).Cols("smile_max,pure_max,cool_max"). - Get(&smileAccessory, &pureAccessory, &coolAccessory) - if ss.CheckErr(err) { - return - } - // fmt.Println("基础属性:", baseSmile, basePure, baseCool) + if exists { + var smileAccessory, pureAccessory, coolAccessory float64 + _, err = ss.MainEng.Table("common_accessory_m"). + Join("LEFT", "accessory_m", "common_accessory_m.accessory_id = accessory_m.accessory_id"). + Where("accessory_owning_user_id = ?", accessoryOwningId).Cols("smile_max,pure_max,cool_max"). + Get(&smileAccessory, &pureAccessory, &coolAccessory) + if ss.CheckErr(err) { + return + } - // 饰品属性加成(该加成会影响个宝等百分比宝石属性加成的计算,故先计算。) - baseSmile += smileAccessory - basePure += pureAccessory - baseCool += coolAccessory - // fmt.Println("饰品属性加成:", smileAccessory, pureAccessory, coolAccessory) - // fmt.Println("饰品属性加成后的基础属性:", baseSmile, basePure, baseCool) + // 饰品属性加成(该加成会影响个宝等百分比宝石属性加成的计算,故先计算。) + baseSmile += smileAccessory + basePure += pureAccessory + baseCool += coolAccessory + // fmt.Println("饰品属性加成:", smileAccessory, pureAccessory, coolAccessory) + // fmt.Println("饰品属性加成后的基础属性:", baseSmile, basePure, baseCool) + } // 回忆画廊属性加成(该加成会影响个宝等百分比宝石属性加成的计算,故先计算。) var smileBuff, pureBuff, coolBuff float64 - _, err = ss.MainEng.Table("museum_contents_m").Select("SUM(smile_buff),SUM(pure_buff),SUM(cool_buff)").Get(&smileBuff, &pureBuff, &coolBuff) + _, err = ss.MainEng.Table("museum_contents_m"). + Select("SUM(smile_buff),SUM(pure_buff),SUM(cool_buff)"). + Get(&smileBuff, &pureBuff, &coolBuff) if ss.CheckErr(err) { return } @@ -189,26 +163,25 @@ func play(ctx *gin.Context) { // fmt.Println("回忆画廊属性加成后的基础属性:", baseSmile, basePure, baseCool) // 绊属性加成(该加成会影响个宝等百分比宝石属性加成的计算,故先计算。) - switch attrId { + switch unitData.Attribute { case 1: - baseSmile += maxLove + baseSmile += float64(unitData.MaxLove) case 2: - basePure += maxLove + basePure += float64(unitData.MaxLove) case 3: - baseCool += maxLove + baseCool += float64(unitData.MaxLove) } - // fmt.Println("绊属性加成:", maxLove) + // fmt.Println("绊属性加成:", unitData.MaxLove) // fmt.Println("绊属性加成后的基础属性:", baseSmile, basePure, baseCool) // 宝石属性加成 var kissSmile, kissPure, kissCool float64 var skillSmile, skillPure, skillCool float64 - // var mainCenterSmile, mainCenterPure, mainCenterCool float64 - // var secCenterSmile, secCenterPure, secCenterCool float64 // 宝石加成(满级) removableSkillIds := []int{} - err = ss.UserEng.Table("user_unit_skill_equip").Where("unit_owning_user_id = ? AND user_id = ?", owningId, ss.UserID). + err = ss.UserEng.Table("user_unit_skill_equip"). + Where("unit_owning_user_id = ?", owningId). Cols("unit_removable_skill_id").Find(&removableSkillIds) if ss.CheckErr(err) { return @@ -218,7 +191,8 @@ func play(ctx *gin.Context) { // 判断宝石效果类型(效果范围、效果类型、效果值、是否固定数值) var effectRange, effectType, fixedValueFlag, refType int var effectValue float64 - _, err = ss.MainEng.Table("unit_removable_skill_m").Where("unit_removable_skill_id = ?", sk). + _, err = ss.MainEng.Table("unit_removable_skill_m"). + Where("unit_removable_skill_id = ?", sk). Cols("effect_range,effect_type,effect_value,fixed_value_flag,target_reference_type"). Get(&effectRange, &effectType, &effectValue, &fixedValueFlag, &refType) if ss.CheckErr(err) { @@ -276,7 +250,8 @@ func play(ctx *gin.Context) { // 主唱技能加成 var myCenterUnitId int - _, err = ss.UserEng.Table("user_deck_unit").Join("LEFT", "user_deck", "user_deck_unit.user_deck_id = user_deck.id"). + _, err = ss.UserEng.Table("user_deck_unit"). + Join("LEFT", "user_deck", "user_deck_unit.user_deck_id = user_deck.id"). Where("user_deck.deck_id = ? AND user_deck.user_id = ? AND user_deck_unit.position = 5", playReq.UnitDeckID, ss.UserID). Cols("user_deck_unit.unit_id").Get(&myCenterUnitId) if ss.CheckErr(err) { @@ -310,16 +285,18 @@ func play(ctx *gin.Context) { _, err = ss.MainEng.Table("unit_m"). Join("LEFT", "unit_leader_skill_extra_m", "unit_m.default_leader_skill_id = unit_leader_skill_extra_m.unit_leader_skill_id"). Where("unit_m.unit_id = ?", myCenterUnitId). - Cols("unit_leader_skill_extra_m.effect_value,unit_leader_skill_extra_m.member_tag_id").Get(&mySubEffectValue, &myMemberTagId) + Cols("unit_leader_skill_extra_m.effect_value,unit_leader_skill_extra_m.member_tag_id"). + Get(&mySubEffectValue, &myMemberTagId) if ss.CheckErr(err) { return } exists, err = ss.MainEng.Table("unit_type_member_tag_m"). - Where("unit_type_id = ? AND member_tag_id = ?", unitTypeId, myMemberTagId).Exist() + Where("unit_type_id = ? AND member_tag_id = ?", unitData.UnitTypeID, myMemberTagId).Exist() if ss.CheckErr(err) { return } + var mySubSmile, mySubPure, mySubCool float64 if exists { switch myAttrId { @@ -335,24 +312,26 @@ func play(ctx *gin.Context) { // 好友主唱技能加成 // TODO 好友支援存入数据库 - var tomoUnitId int64 - partyList := gjson.Parse(honokautils.ReadAllText("assets/serverdata/partylist.json")).Get("response_data.party_list") - partyList.ForEach(func(key, value gjson.Result) bool { - if value.Get("user_info.user_id").Int() == playReq.PartyUserID { - tomoUnitId = value.Get("center_unit_info.unit_id").Int() - return false - } - return true - }) + // var tomoUnitId int64 + // partyList := gjson.Parse(honokautils.ReadAllText("assets/serverdata/partylist.json")).Get("response_data.party_list") + // partyList.ForEach(func(key, value gjson.Result) bool { + // if value.Get("user_info.user_id").Int() == playReq.PartyUserID { + // tomoUnitId = value.Get("center_unit_info.unit_id").Int() + // return false + // } + // return true + // }) + // TODO: 好友功能实装前先使用自己的卡组助战 + tomoUnitId := myCenterUnitId // fmt.Println("好友UnitID:", tomoUnitId) // 好友主唱技能加成:主C技能(这里不使用新C技能,即以某属性的百分比提升另一属性) - var tomoAttrId int var tomoEffectValue float64 _, err = ss.MainEng.Table("unit_m"). Join("LEFT", "unit_leader_skill_m", "unit_m.default_leader_skill_id = unit_leader_skill_m.unit_leader_skill_id"). Where("unit_m.unit_id = ?", tomoUnitId). - Cols("unit_m.attribute_id,unit_leader_skill_m.effect_value").Get(&tomoAttrId, &tomoEffectValue) + Cols("unit_leader_skill_m.effect_value"). + Get(&tomoEffectValue) if ss.CheckErr(err) { return } @@ -373,13 +352,14 @@ func play(ctx *gin.Context) { _, err = ss.MainEng.Table("unit_m"). Join("LEFT", "unit_leader_skill_extra_m", "unit_m.default_leader_skill_id = unit_leader_skill_extra_m.unit_leader_skill_id"). Where("unit_m.unit_id = ?", tomoUnitId). - Cols("unit_leader_skill_extra_m.effect_value,unit_leader_skill_extra_m.member_tag_id").Get(&tomoSubEffectValue, &tomoMemberTagId) + Cols("unit_leader_skill_extra_m.effect_value,unit_leader_skill_extra_m.member_tag_id"). + Get(&tomoSubEffectValue, &tomoMemberTagId) if ss.CheckErr(err) { return } exists, err = ss.MainEng.Table("unit_type_member_tag_m"). - Where("unit_type_id = ? AND member_tag_id = ?", unitTypeId, tomoMemberTagId).Exist() + Where("unit_type_id = ? AND member_tag_id = ?", unitData.UnitTypeID, tomoMemberTagId).Exist() if ss.CheckErr(err) { return } @@ -400,7 +380,16 @@ func play(ctx *gin.Context) { totalSmile += smileMax + myCenterSmile + mySubSmile + tomoCenterSmile + tomoSubSmile totalPure += pureMax + myCenterPure + mySubPure + tomoCenterPure + tomoSubPure totalCool += coolMax + myCenterCool + mySubCool + tomoCenterCool + tomoSubCool - totalHp += maxHp + totalHp += unitData.MaxHp + // fmt.Println("smileMax, myCenterSmile, mySubSmile, tomoCenterSmile, tomoSubSmile, totalSmile", + // smileMax, myCenterSmile, mySubSmile, tomoCenterSmile, tomoSubSmile, + // smileMax+myCenterSmile+mySubSmile+tomoCenterSmile+tomoSubSmile) + // fmt.Println("pureMax, myCenterPure, mySubPure, tomoCenterPure, tomoSubPure, totalPure", + // pureMax, myCenterPure, mySubPure, tomoCenterPure, tomoSubPure, + // pureMax+myCenterPure+mySubPure+tomoCenterPure+tomoSubPure) + // fmt.Println("coolMax, myCenterCool, mySubCool, tomoCenterCool, tomoSubCool, totalPure", + // coolMax, myCenterCool, mySubCool, tomoCenterCool, tomoSubCool, + // coolMax+myCenterCool+mySubCool+tomoCenterCool+tomoSubCool) // 单卡属性计算结果取上取整 fixedSmileMax := int(smileMax) @@ -408,7 +397,7 @@ func play(ctx *gin.Context) { fixedCoolMax := int(coolMax) // fmt.Println("单卡属性:", fixedSmileMax, fixedPureMax, fixedCoolMax) - unitList = append(unitList, live.UnitList{ + unitList = append(unitList, liveschema.UnitList{ Smile: fixedSmileMax, Cute: fixedPureMax, Cool: fixedCoolMax, @@ -421,17 +410,17 @@ func play(ctx *gin.Context) { fixedTotalCool := int(math.Ceil(totalCool)) // fmt.Println("全卡组属性:", fixedTotalSmile, fixedTotalPure, fixedTotalCool) - lives := []live.PlayLiveList{} - lives = append(lives, live.PlayLiveList{ - LiveInfo: live.LiveInfo{ - LiveDifficultyID: difficultyId, + lives := []liveschema.PlayLiveList{} + lives = append(lives, liveschema.PlayLiveList{ + LiveInfo: liveschema.LiveInfo{ + LiveDifficultyID: difficultyID, IsRandom: false, - AcFlag: ac_flag, - SwingFlag: swing_flag, + AcFlag: liveSetting.AcFlag, + SwingFlag: liveSetting.SwingFlag, NotesList: notes, }, - DeckInfo: live.DeckInfo{ - UnitDeckID: deckId, + DeckInfo: liveschema.DeckInfo{ + UnitDeckID: playReq.UnitDeckID, TotalSmile: fixedTotalSmile, TotalCute: fixedTotalPure, TotalCool: fixedTotalCool, @@ -441,8 +430,8 @@ func play(ctx *gin.Context) { }, }) - playResp := live.PlayResp{ - ResponseData: live.PlayData{ + playResp := liveschema.PlayResp{ + ResponseData: liveschema.PlayData{ RankInfo: ranks, EnergyFullTime: "2023-03-20 01:28:55", OverMaxEnergy: 0, diff --git a/internal/handler/live/precisescore.go b/internal/handler/live/precisescore.go index 9ec6362..cd96062 100644 --- a/internal/handler/live/precisescore.go +++ b/internal/handler/live/precisescore.go @@ -2,11 +2,13 @@ package live import ( "encoding/json" + "honoka-chan/internal/constant" "honoka-chan/internal/middleware" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/live" + liveschema "honoka-chan/internal/schema/live" "honoka-chan/internal/session" - honokautils "honoka-chan/pkg/utils" + "honoka-chan/pkg/utils" "strconv" "time" @@ -17,90 +19,225 @@ func preciseScore(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - playScoreReq := live.PlayScoreReq{} + playScoreReq := liveschema.PlayScoreReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &playScoreReq) if ss.CheckErr(err) { return } + // fmt.Println(ctx.MustGet("request_data").(string)) - tDifficultyId := playScoreReq.LiveDifficultyID - difficultyId, err := strconv.Atoi(tDifficultyId) + difficultyID, _ := strconv.Atoi(playScoreReq.LiveDifficultyID) + + // 歌曲类型: normal / special + // sqlite3 不支持 FULL OUTER JOIN 所以这里使用 UNION ALL + var liveSetting struct { + NotesSettingAsset string `xorm:"notes_setting_asset"` + ARankScore int `xorm:"a_rank_score"` + BRankScore int `xorm:"b_rank_score"` + CRankScore int `xorm:"c_rank_score"` + SRankScore int `xorm:"s_rank_score"` + AcFlag int `xorm:"ac_flag"` + SwingFlag int `xorm:"swing_flag"` + } + sql := ` + SELECT notes_setting_asset, + a_rank_score, + b_rank_score, + c_rank_score, + s_rank_score, + ac_flag, + swing_flag + FROM live_setting_m + WHERE live_setting_id IN ( + SELECT live_setting_id + FROM normal_live_m + WHERE live_difficulty_id = ? + UNION ALL + SELECT live_setting_id + FROM special_live_m + WHERE live_difficulty_id = ? + ) + ` + _, err = ss.MainEng.SQL(sql, difficultyID, difficultyID).Get(&liveSetting) if ss.CheckErr(err) { return } + // fmt.Println("liveSetting", liveSetting) - // Song type: normal / special - // sqlite3 doesn't support FULL OUTER JOIN so use UNION ALL here. - sql := `SELECT notes_setting_asset,c_rank_score,b_rank_score,a_rank_score,s_rank_score,ac_flag,swing_flag FROM live_setting_m WHERE live_setting_id IN (SELECT live_setting_id FROM normal_live_m WHERE live_difficulty_id = ? UNION ALL SELECT live_setting_id FROM special_live_m WHERE live_difficulty_id = ?)` - var notes_setting_asset string - var c_rank_score, b_rank_score, a_rank_score, s_rank_score, ac_flag, swing_flag int - err = ss.MainEng.DB().QueryRow(sql, difficultyId, difficultyId).Scan(¬es_setting_asset, &c_rank_score, &b_rank_score, &a_rank_score, &s_rank_score, &ac_flag, &swing_flag) - if ss.CheckErr(err) { - return - } - - // fmt.Println(notes_setting_asset) - // fmt.Println(c_rank_score, b_rank_score, a_rank_score, s_rank_score) - - notes := []live.NotesList{} - // fmt.Println("./assets/serverdata/beatmaps/" + notes_setting_asset) - notes_list := honokautils.ReadAllText("./assets/serverdata/beatmaps/" + notes_setting_asset) + notes := []liveschema.NotesList{} + notes_list := utils.ReadAllText("./assets/serverdata/beatmaps/" + liveSetting.NotesSettingAsset) err = json.Unmarshal([]byte(notes_list), ¬es) if ss.CheckErr(err) { return } - ranks := []live.RankInfo{} - ranks = append(ranks, live.RankInfo{ + ranks := []liveschema.RankInfo{} + ranks = append(ranks, liveschema.RankInfo{ Rank: 5, RankMin: 0, - RankMax: c_rank_score, - }, live.RankInfo{ + RankMax: liveSetting.CRankScore, + }, liveschema.RankInfo{ Rank: 4, - RankMin: c_rank_score + 1, - RankMax: b_rank_score, - }, live.RankInfo{ + RankMin: liveSetting.CRankScore + 1, + RankMax: liveSetting.BRankScore, + }, liveschema.RankInfo{ Rank: 3, - RankMin: b_rank_score + 1, - RankMax: a_rank_score, - }, live.RankInfo{ + RankMin: liveSetting.BRankScore + 1, + RankMax: liveSetting.ARankScore, + }, liveschema.RankInfo{ Rank: 2, - RankMin: a_rank_score + 1, - RankMax: s_rank_score, - }, live.RankInfo{ + RankMin: liveSetting.ARankScore + 1, + RankMax: liveSetting.SRankScore, + }, liveschema.RankInfo{ Rank: 1, - RankMin: s_rank_score + 1, + RankMin: liveSetting.SRankScore + 1, RankMax: 0, }) - playResp := live.PreciseScoreResp{ - ResponseData: live.PreciseScoreData{ - On: live.On{ - HasRecord: false, - LiveInfo: live.LiveInfo{ - LiveDifficultyID: difficultyId, - IsRandom: false, - AcFlag: ac_flag, - SwingFlag: swing_flag, - NotesList: notes, + // 检查是否正在进行 Live + progress, _ := ss.GetLiveInProgress() + + // 检查是否有 Live 记录 + liveRecord := ss.GetUserLiveRecord(difficultyID) + + var skillOn liveschema.Skill + var skillOff liveschema.Skill + var playResp liveschema.PreciseScoreResp + + // 正在进行 Live + if progress { + // 返回默认 + playResp = liveschema.PreciseScoreResp{ + ResponseData: liveschema.PreciseScoreData{ + On: liveschema.Skill{ + HasRecord: false, + LiveInfo: liveschema.LiveInfo{ + LiveDifficultyID: difficultyID, + IsRandom: false, + AcFlag: liveSetting.AcFlag, + SwingFlag: liveSetting.SwingFlag, + NotesList: notes, + }, }, - }, - Off: live.Off{ - HasRecord: false, - LiveInfo: live.LiveInfo{ - LiveDifficultyID: difficultyId, - IsRandom: false, - AcFlag: ac_flag, - SwingFlag: swing_flag, - NotesList: notes, + Off: liveschema.Skill{ + HasRecord: false, + LiveInfo: liveschema.LiveInfo{ + LiveDifficultyID: difficultyID, + IsRandom: false, + AcFlag: liveSetting.AcFlag, + SwingFlag: liveSetting.SwingFlag, + NotesList: notes, + }, }, + RankInfo: ranks, + CanActivateEffect: true, + ServerTimestamp: time.Now().Unix(), }, - RankInfo: ranks, - CanActivateEffect: true, - ServerTimestamp: time.Now().Unix(), - }, - ReleaseInfo: []any{}, - StatusCode: 200, + ReleaseInfo: []any{}, + StatusCode: 200, + } + } else { + // 如果有 Live 记录 + if len(liveRecord) > 0 { + skillOn = liveschema.Skill{ + HasRecord: false, + RandomSeed: nil, + MaxCombo: nil, + UpdateDate: nil, + PreciseList: nil, + DeckInfo: nil, + TapAdjust: nil, // TODO: 不知道保存在哪里 + CanReplay: false, // TODO: 不知道保存在哪里 + } + skillOff = skillOn + + // 已完成的 Live 判断技能开关情况 + for _, record := range liveRecord { + // LiveInfo + var liveInfo liveschema.LiveInfo + err = json.Unmarshal([]byte(record.LiveInfoJSON), &liveInfo) + if ss.CheckErr(err) { + return + } + liveInfo.NotesList = notes + + // PreciseList + var preciseList []liveschema.PreciseList + err = json.Unmarshal([]byte(record.PreciseListJSON), &preciseList) + if ss.CheckErr(err) { + return + } + + // DeckInfo + var deckInfo usermodel.DeckInfo + err = json.Unmarshal([]byte(record.DeckInfoJSON), &deckInfo) + if ss.CheckErr(err) { + return + } + + // LiveSetting + var liveSetting liveschema.LiveSetting + err = json.Unmarshal([]byte(record.LiveSettingJSON), &liveSetting) + if ss.CheckErr(err) { + return + } + + // TriggerLog + var triggerLog []liveschema.TriggerLog + err = json.Unmarshal([]byte(record.TriggerLogJSON), &triggerLog) + if ss.CheckErr(err) { + return + } + + if record.IsSkillOn { + // 技能开 + skillOn.HasRecord = true + skillOn.LiveInfo = liveInfo + skillOn.RandomSeed = time.Now().Unix() // TODO: 从 /live/play 的 Timestamp 字段获取 + skillOn.MaxCombo = record.MaxCombo + skillOn.UpdateDate = record.UpdateDate + skillOn.PreciseList = preciseList + skillOn.DeckInfo = deckInfo + skillOn.LiveSetting = liveSetting + skillOn.TriggerLog = triggerLog + skillOn.TapAdjust = record.TapAdjust + skillOn.CanReplay = record.CanReplay + } else { + // 技能关 + skillOff.HasRecord = true + skillOff.LiveInfo = liveInfo + skillOff.RandomSeed = time.Now().Unix() // TODO: 从 /live/play 的 Timestamp 字段获取 + skillOff.MaxCombo = record.MaxCombo + skillOff.UpdateDate = record.UpdateDate + skillOff.PreciseList = preciseList + skillOff.DeckInfo = deckInfo + skillOff.LiveSetting = liveSetting + skillOff.TriggerLog = triggerLog + skillOff.TapAdjust = record.TapAdjust + skillOff.CanReplay = record.CanReplay + } + } + + playResp = liveschema.PreciseScoreResp{ + ResponseData: liveschema.PreciseScoreData{ + On: skillOn, + Off: skillOff, + RankInfo: ranks, + CanActivateEffect: true, + ServerTimestamp: time.Now().Unix(), + }, + ReleaseInfo: []any{}, + StatusCode: 200, + } + } else { + playResp = liveschema.PreciseScoreResp{ + ResponseData: map[string]constant.ErrorCode{ + "error_code": constant.ErrorCodeLivePreciseListNotFound, + }, + ReleaseInfo: []any{}, + StatusCode: 600, + } + } } ss.Respond(playResp) diff --git a/internal/handler/live/reward.go b/internal/handler/live/reward.go index 5d4f9bc..0807627 100644 --- a/internal/handler/live/reward.go +++ b/internal/handler/live/reward.go @@ -3,12 +3,11 @@ package live import ( "encoding/json" "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/live" + liveschema "honoka-chan/internal/schema/live" "honoka-chan/internal/session" - "honoka-chan/pkg/db" - "strconv" + "honoka-chan/pkg/utils" "time" "github.com/gin-gonic/gin" @@ -16,68 +15,64 @@ import ( func reward(ctx *gin.Context) { ss := session.Get(ctx) - defer ss.Finalize() + defer func() { + ss.ClearLiveInProgress() + ss.Finalize() + }() - playRewardReq := live.RewardReq{} + playRewardReq := liveschema.RewardReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &playRewardReq) if ss.CheckErr(err) { return } + // fmt.Println(ctx.MustGet("request_data").(string)) - difficultyId := playRewardReq.LiveDifficultyID + difficultyID := playRewardReq.LiveDifficultyID + _, liveInfo := ss.GetLiveInfo(difficultyID) + _, progress := ss.GetLiveInProgress() // TODO: 添加返回指定状态码的方法 + _, deckInfo := ss.GetDeckInfo(progress.DeckID) + deckInfo.LiveDifficultyID = difficultyID - // Song type: normal / special - // sqlite3 doesn't support FULL OUTER JOIN so use UNION ALL here. - sql := `SELECT c_rank_score,b_rank_score,a_rank_score,s_rank_score,c_rank_combo,b_rank_combo,a_rank_combo,s_rank_combo,ac_flag,swing_flag FROM live_setting_m WHERE live_setting_id IN (SELECT live_setting_id FROM normal_live_m WHERE live_difficulty_id = ? UNION ALL SELECT live_setting_id FROM special_live_m WHERE live_difficulty_id = ?)` - var c_rank_score, b_rank_score, a_rank_score, s_rank_score, c_rank_combo, b_rank_combo, a_rank_combo, s_rank_combo, ac_flag, swing_flag int - err = ss.MainEng.DB().QueryRow(sql, difficultyId, difficultyId).Scan(&c_rank_score, &b_rank_score, &a_rank_score, &s_rank_score, &c_rank_combo, &b_rank_combo, &a_rank_combo, &s_rank_combo, &ac_flag, &swing_flag) + unitsList := []liveschema.PlayRewardUnitList{} + err = ss.UserEng.Table("user_deck_unit"). + Join("LEFT", "user_deck", "user_deck_unit.user_deck_id = user_deck.id"). + Where("user_deck.user_id = ? AND user_deck.deck_id = ?", ss.UserID, progress.DeckID). + Find(&unitsList) if ss.CheckErr(err) { return } - key := "live_deck_" + strconv.Itoa(ss.UserID) - deckId, err := db.Ldb.Get([]byte(key)) - if ss.CheckErr(err) { - return - } - unitsList := []live.PlayRewardUnitList{} - err = ss.UserEng.Table("user_deck_unit").Join("LEFT", "user_deck", "user_deck_unit.user_deck_id = user_deck.id"). - Where("user_id = ? AND deck_id = ?", ss.UserID, string(deckId)).Find(&unitsList) - if ss.CheckErr(err) { - return - } - - pref := user.UserPref{} + pref := usermodel.UserPref{} _, err = ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Get(&pref) if ss.CheckErr(err) { return } totalScore := playRewardReq.ScoreSmile + playRewardReq.ScoreCool + playRewardReq.ScoreCute - playResp := live.RewardResp{ - ResponseData: live.RewardData{ - LiveInfo: []live.RewardLiveInfo{ + playResp := liveschema.RewardResp{ + ResponseData: liveschema.RewardData{ + LiveInfo: []liveschema.RewardLiveInfo{ { - LiveDifficultyID: difficultyId, + LiveDifficultyID: difficultyID, IsRandom: false, - AcFlag: ac_flag, - SwingFlag: swing_flag, + AcFlag: liveInfo.AcFlag, + SwingFlag: liveInfo.SwingFlag, }, }, TotalLove: 0, IsHighScore: true, HiScore: totalScore, - BaseRewardInfo: live.BaseRewardInfo{ + BaseRewardInfo: liveschema.BaseRewardInfo{ PlayerExp: 0, - PlayerExpUnitMax: live.PlayerExpUnitMax{ + PlayerExpUnitMax: liveschema.PlayerExpUnitMax{ Before: 0, After: 0, }, - PlayerExpFriendMax: live.PlayerExpFriendMax{ + PlayerExpFriendMax: liveschema.PlayerExpFriendMax{ Before: 99, After: 99, }, - PlayerExpLpMax: live.PlayerExpLpMax{ + PlayerExpLpMax: liveschema.PlayerExpLpMax{ Before: 417, After: 417, }, @@ -85,72 +80,26 @@ func reward(ctx *gin.Context) { GameCoinRewardBoxFlag: false, SocialPoint: 0, }, - RewardUnitList: live.RewardUnitList{ - LiveClear: []live.LiveClear{}, - LiveRank: []live.LiveRank{}, + RewardUnitList: liveschema.RewardUnitList{ + LiveClear: []liveschema.LiveClear{}, + LiveRank: []liveschema.LiveRank{}, LiveCombo: []any{}, }, UnlockedSubscenarioIds: []any{}, UnlockedMultiUnitScenarioIds: []any{}, - EffortPoint: []live.EffortPoint{}, + EffortPoint: []liveschema.EffortPoint{}, IsEffortPointVisible: false, LimitedEffortBox: []any{}, UnitList: unitsList, - BeforeUserInfo: live.BeforeUserInfo{ - Level: pref.UserLevel, - Exp: 1089696, - PreviousExp: 0, - NextExp: 1207185, - GameCoin: 999999999, - SnsCoin: 10000, - FreeSnsCoin: 50000, - PaidSnsCoin: 50000, - SocialPoint: 1438165, - UnitMax: 5000, - WaitingUnitMax: 1000, - CurrentEnergy: 417, - EnergyMax: 417, - TrainingEnergy: 9, - TrainingEnergyMax: 10, - EnergyFullTime: "2023-03-20 01:28:55", - LicenseLiveEnergyRecoverlyTime: 60, - FriendMax: 99, - TutorialState: -1, - OverMaxEnergy: 417, - UnlockRandomLiveMuse: 1, - UnlockRandomLiveAqours: 1, - }, - AfterUserInfo: live.AfterUserInfo{ - Level: pref.UserLevel, - Exp: 1089696, - PreviousExp: 0, - NextExp: 1207185, - GameCoin: 999999999, - SnsCoin: 100000, - FreeSnsCoin: 50000, - PaidSnsCoin: 50000, - SocialPoint: 1438375, - UnitMax: 5000, - WaitingUnitMax: 1000, - CurrentEnergy: 417, - EnergyMax: 417, - TrainingEnergy: 9, - TrainingEnergyMax: 10, - EnergyFullTime: "2023-03-20 01:28:55", - LicenseLiveEnergyRecoverlyTime: 60, - FriendMax: 99, - TutorialState: -1, - OverMaxEnergy: 417, - UnlockRandomLiveMuse: 1, - UnlockRandomLiveAqours: 1, - }, - NextLevelInfo: []live.NextLevelInfo{ + BeforeUserInfo: ss.GetUserInfo(), + AfterUserInfo: ss.GetUserInfo(), + NextLevelInfo: []liveschema.NextLevelInfo{ { Level: pref.UserLevel, FromExp: 1089696, }, }, - GoalAccompInfo: live.GoalAccompInfo{ + GoalAccompInfo: liveschema.GoalAccompInfo{ AchievedIds: []any{}, Rewards: []any{}, }, @@ -159,8 +108,8 @@ func reward(ctx *gin.Context) { DailyRewardInfo: []any{}, CanSendFriendRequest: false, UsingBuffInfo: []any{}, - ClassSystem: live.ClassSystem{ - RankInfo: live.RewardRankInfo{ + ClassSystem: liveschema.ClassSystem{ + RankInfo: liveschema.RewardRankInfo{ BeforeClassRankID: 10, AfterClassRankID: 10, RankUpDate: "2020-02-12 11:57:15", @@ -169,11 +118,11 @@ func reward(ctx *gin.Context) { IsOpened: true, IsVisible: true, }, - AccomplishedAchievementList: []live.AccomplishedAchievementList{}, + AccomplishedAchievementList: []liveschema.AccomplishedAchievementList{}, UnaccomplishedAchievementCnt: 0, AddedAchievementList: []any{}, - MuseumInfo: live.Museum{}, - UnitSupportList: []live.RewardUnitSupportList{}, + MuseumInfo: liveschema.Museum{}, + UnitSupportList: []liveschema.RewardUnitSupportList{}, ServerTimestamp: time.Now().Unix(), PresentCnt: 0, }, @@ -181,30 +130,58 @@ func reward(ctx *gin.Context) { StatusCode: 200, } - if playRewardReq.MaxCombo > s_rank_combo { + if playRewardReq.MaxCombo > liveInfo.SRankCombo { playResp.ResponseData.ComboRank = 1 - } else if playRewardReq.MaxCombo > a_rank_combo { + } else if playRewardReq.MaxCombo > liveInfo.ARankCombo { playResp.ResponseData.ComboRank = 2 - } else if playRewardReq.MaxCombo > b_rank_combo { + } else if playRewardReq.MaxCombo > liveInfo.BRankCombo { playResp.ResponseData.ComboRank = 3 - } else if playRewardReq.MaxCombo > c_rank_combo { + } else if playRewardReq.MaxCombo > liveInfo.CRankCombo { playResp.ResponseData.ComboRank = 4 } else { playResp.ResponseData.ComboRank = 5 } - if totalScore > s_rank_score { + if totalScore > liveInfo.SRankScore { playResp.ResponseData.Rank = 1 - } else if totalScore > a_rank_score { + } else if totalScore > liveInfo.ARankScore { playResp.ResponseData.Rank = 2 - } else if totalScore > b_rank_score { + } else if totalScore > liveInfo.BRankScore { playResp.ResponseData.Rank = 3 - } else if totalScore > c_rank_score { + } else if totalScore > liveInfo.CRankScore { playResp.ResponseData.Rank = 4 } else { playResp.ResponseData.Rank = 5 } + // 判断歌曲记录是否需要保存或者更新 + liveSetting := playRewardReq.PreciseScoreLog.LiveSetting + liveSetting.BackgroundID = ss.UserPref.BackgroundID + if playRewardReq.PreciseScoreLog.IsLogOn && liveSetting.PreciseScoreAutoUpdateFlag { + newLiveRecord := usermodel.UserLiveRecord{ + LiveDifficultyID: difficultyID, + DeckID: progress.DeckID, + TotalScore: totalScore, + PerfectCnt: playRewardReq.PerfectCnt, + GreatCnt: playRewardReq.GreatCnt, + GoodCnt: playRewardReq.GoodCnt, + BadCnt: playRewardReq.BadCnt, + MissCnt: playRewardReq.MissCnt, + MaxCombo: playRewardReq.MaxCombo, + IsSkillOn: playRewardReq.PreciseScoreLog.IsSkillOn, + LiveInfoJSON: utils.ToJSON(liveInfo), + PreciseListJSON: utils.ToJSON(playRewardReq.PreciseScoreLog.PreciseList), + DeckInfoJSON: utils.ToJSON(deckInfo), + TapAdjust: playRewardReq.PreciseScoreLog.TapAdjust, + LiveSettingJSON: utils.ToJSON(liveSetting), + CanReplay: true, + TriggerLogJSON: utils.ToJSON(playRewardReq.PreciseScoreLog.TriggerLog), + UserID: ss.UserID, + UpdateDate: time.Now().Format("2006-01-02 15:04:05"), + } + ss.UpdateUserLiveRecord(&newLiveRecord, liveSetting.PreciseScoreUpdateType) + } + ss.Respond(playResp) } diff --git a/internal/handler/login/authkey.go b/internal/handler/login/authkey.go index dc2f310..b277050 100644 --- a/internal/handler/login/authkey.go +++ b/internal/handler/login/authkey.go @@ -2,14 +2,14 @@ package login import ( "encoding/base64" - "encoding/json" "honoka-chan/internal/middleware" + loginmodel "honoka-chan/internal/model/login" "honoka-chan/internal/router" loginschema "honoka-chan/internal/schema/login" "honoka-chan/internal/session" - "honoka-chan/pkg/db" "honoka-chan/pkg/encrypt" honokautils "honoka-chan/pkg/utils" + "time" "github.com/gin-gonic/gin" "github.com/tidwall/gjson" @@ -38,18 +38,12 @@ func authKey(ctx *gin.Context) { serverToken := base64.StdEncoding.EncodeToString([]byte(honokautils.RandomStr(32))) authorizeToken := base64.StdEncoding.EncodeToString([]byte(honokautils.RandomStr(32))) - authJson, err := json.Marshal(map[string]any{ - "client_token": clientToken, - "server_token": serverToken, + ss.SetAuthKey(&loginmodel.AuthKey{ + AuthorizeToken: authorizeToken, + ClientToken: clientToken, + ServerToken: serverToken, + InsertDate: time.Now().Format("2006-01-02 15:04:05"), }) - if ss.CheckErr(err) { - return - } - - err = db.Ldb.Set([]byte(authorizeToken), authJson) - if ss.CheckErr(err) { - return - } ss.Respond(loginschema.AuthKeyResp{ ResponseData: loginschema.AuthKeyData{ diff --git a/internal/handler/login/login.go b/internal/handler/login/login.go index cce9ef4..851e4ef 100644 --- a/internal/handler/login/login.go +++ b/internal/handler/login/login.go @@ -7,10 +7,8 @@ import ( "honoka-chan/internal/router" loginschema "honoka-chan/internal/schema/login" "honoka-chan/internal/session" - "honoka-chan/pkg/db" "honoka-chan/pkg/encrypt" honokautils "honoka-chan/pkg/utils" - "strconv" "time" "github.com/gin-gonic/gin" @@ -21,16 +19,17 @@ func login(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - authData, err := db.Ldb.Get([]byte(ctx.MustGet("token").(string))) - if ss.CheckErr(err) { + has, authKeyData := ss.GetAuthKey(ctx.MustGet("token").(string)) + if !has { + ss.Abort(errors.New("invalid token")) return } - clientToken, err := base64.StdEncoding.DecodeString(gjson.Get(string(authData), "client_token").String()) + clientToken, err := base64.StdEncoding.DecodeString(authKeyData.ClientToken) if ss.CheckErr(err) { return } - serverToken, err := base64.StdEncoding.DecodeString(gjson.Get(string(authData), "server_token").String()) + serverToken, err := base64.StdEncoding.DecodeString(authKeyData.ServerToken) if ss.CheckErr(err) { return } @@ -55,7 +54,7 @@ func login(ctx *gin.Context) { authorizeToken := base64.StdEncoding.EncodeToString([]byte(honokautils.RandomStr(32))) - var userID int // 需要更新为字符串 + var userID int exists, err := ss.UserEng.Table("user_key").Where("key = ?", string(loginKey)).Cols("user_id").Get(&userID) if ss.CheckErr(err) { return @@ -66,11 +65,6 @@ func login(ctx *gin.Context) { return } - err = db.Ldb.Set([]byte(strconv.Itoa(userID)), []byte(authorizeToken)) - if ss.CheckErr(err) { - return - } - ss.Respond(loginschema.LoginResp{ ResponseData: loginschema.LoginData{ AuthorizeToken: authorizeToken, diff --git a/internal/handler/multiunit/scenariostartup.go b/internal/handler/multiunit/scenariostartup.go index b9d2817..4157d0f 100644 --- a/internal/handler/multiunit/scenariostartup.go +++ b/internal/handler/multiunit/scenariostartup.go @@ -4,7 +4,7 @@ import ( "encoding/json" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/multiunit" + multiunitschema "honoka-chan/internal/schema/multiunit" "honoka-chan/internal/session" "time" @@ -15,14 +15,14 @@ func scenarioStartup(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - startReq := multiunit.ScenarioStartUpReq{} + startReq := multiunitschema.ScenarioStartUpReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &startReq) if ss.CheckErr(err) { return } - ss.Respond(multiunit.ScenarioStartUpResp{ - ResponseData: multiunit.ScenarioStartUpData{ + ss.Respond(multiunitschema.ScenarioStartUpResp{ + ResponseData: multiunitschema.ScenarioStartUpData{ MultiUnitScenarioID: startReq.MultiUnitScenarioID, ScenarioAdjustment: 50, ServerTimestamp: time.Now().Unix(), diff --git a/internal/handler/museum/info.go b/internal/handler/museum/info.go index ff09cf8..cd87c79 100644 --- a/internal/handler/museum/info.go +++ b/internal/handler/museum/info.go @@ -3,7 +3,7 @@ package museum import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/museum" + museumschema "honoka-chan/internal/schema/museum" "honoka-chan/internal/session" "time" @@ -33,10 +33,10 @@ func info(ctx *gin.Context) { coolBuff += content.CoolBuff contentsList = append(contentsList, content.MuseumContentsId) } - museumResp := museum.InfoResp{ - ResponseData: museum.InfoData{ - MuseumInfo: museum.Museum{ - Parameter: museum.Parameter{ + museumResp := museumschema.InfoResp{ + ResponseData: museumschema.InfoData{ + MuseumInfo: museumschema.Museum{ + Parameter: museumschema.Parameter{ Smile: smileBuff, Pure: pureBuff, Cool: coolBuff, diff --git a/internal/handler/notice/friendgreeting.go b/internal/handler/notice/friendgreeting.go index edac7b8..48d3be3 100644 --- a/internal/handler/notice/friendgreeting.go +++ b/internal/handler/notice/friendgreeting.go @@ -3,7 +3,7 @@ package notice import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/notice" + noticeschema "honoka-chan/internal/schema/notice" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func friendGreeting(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(notice.FriendGreetingResp{ - ResponseData: notice.FriendGreetingData{ + ss.Respond(noticeschema.FriendGreetingResp{ + ResponseData: noticeschema.FriendGreetingData{ NextId: 0, NoticeList: []any{}, ServerTimestamp: time.Now().Unix(), diff --git a/internal/handler/notice/friendvariety.go b/internal/handler/notice/friendvariety.go index 16bb8b3..721f68b 100644 --- a/internal/handler/notice/friendvariety.go +++ b/internal/handler/notice/friendvariety.go @@ -3,7 +3,7 @@ package notice import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/notice" + noticeschema "honoka-chan/internal/schema/notice" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func friendVariety(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(notice.FriendVarietyResp{ - ResponseData: notice.FriendVarietyData{ + ss.Respond(noticeschema.FriendVarietyResp{ + ResponseData: noticeschema.FriendVarietyData{ ItemCount: 1, NoticeList: []any{}, ServerTimestamp: time.Now().Unix(), diff --git a/internal/handler/notice/usergreetinghistory.go b/internal/handler/notice/usergreetinghistory.go index 2bd9ec8..cfea2c9 100644 --- a/internal/handler/notice/usergreetinghistory.go +++ b/internal/handler/notice/usergreetinghistory.go @@ -3,7 +3,7 @@ package notice import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/notice" + noticeschema "honoka-chan/internal/schema/notice" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func userGreetingHistory(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(notice.UserGreetingResp{ - ResponseData: notice.UserGreetingData{ + ss.Respond(noticeschema.UserGreetingResp{ + ResponseData: noticeschema.UserGreetingData{ ItemCount: 0, HasNext: false, NoticeList: []any{}, diff --git a/internal/handler/payment/productlist.go b/internal/handler/payment/productlist.go index 740fe69..5a18999 100644 --- a/internal/handler/payment/productlist.go +++ b/internal/handler/payment/productlist.go @@ -4,7 +4,7 @@ import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" paymentapischema "honoka-chan/internal/schema/api/payment" - "honoka-chan/internal/schema/payment" + paymentschema "honoka-chan/internal/schema/payment" "honoka-chan/internal/session" "time" @@ -15,8 +15,8 @@ func productList(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - prodResp := payment.ProductListResp{ - ResponseData: payment.ProductListData{ + prodResp := paymentschema.ProductListResp{ + ResponseData: paymentschema.ProductListData{ RestrictionInfo: paymentapischema.RestrictionInfo{ Restricted: false, }, diff --git a/internal/handler/personalnotice/get.go b/internal/handler/personalnotice/get.go index f1c1410..b6b0b0a 100644 --- a/internal/handler/personalnotice/get.go +++ b/internal/handler/personalnotice/get.go @@ -3,7 +3,7 @@ package personalnotice import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/personalnotice" + personalnoticeschema "honoka-chan/internal/schema/personalnotice" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func get(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - noticeResp := personalnotice.GetResp{ - ResponseData: personalnotice.GetData{ + noticeResp := personalnoticeschema.GetResp{ + ResponseData: personalnoticeschema.GetData{ HasNotice: false, NoticeID: 0, Type: 0, diff --git a/internal/handler/profile/register.go b/internal/handler/profile/register.go index 79b9771..bab47c7 100644 --- a/internal/handler/profile/register.go +++ b/internal/handler/profile/register.go @@ -2,9 +2,9 @@ package profile import ( "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/profile" + profileschema "honoka-chan/internal/schema/profile" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -16,7 +16,7 @@ func register(ctx *gin.Context) { defer ss.Finalize() req := gjson.Parse(ctx.PostForm("request_data")) - pref := user.UserPref{ + pref := usermodel.UserPref{ UserDesc: req.Get("introduction").String(), } @@ -25,7 +25,7 @@ func register(ctx *gin.Context) { return } - ss.Respond(profile.RegisterResp{ + ss.Respond(profileschema.RegisterResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/scenario/startup.go b/internal/handler/scenario/startup.go index 377b14d..3911eee 100644 --- a/internal/handler/scenario/startup.go +++ b/internal/handler/scenario/startup.go @@ -4,7 +4,7 @@ import ( "encoding/json" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/scenario" + scenarioschema "honoka-chan/internal/schema/scenario" "honoka-chan/internal/session" "time" @@ -15,14 +15,14 @@ func startup(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - startReq := scenario.StartUpReq{} + startReq := scenarioschema.StartUpReq{} err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &startReq) if ss.CheckErr(err) { return } - ss.Respond(scenario.StartUpResp{ - ResponseData: scenario.StartUpData{ + ss.Respond(scenarioschema.StartUpResp{ + ResponseData: scenarioschema.StartUpData{ ScenarioID: startReq.ScenarioID, ScenarioAdjustment: 50, ServerTimestamp: time.Now().Unix(), diff --git a/internal/handler/subscenario/startup.go b/internal/handler/subscenario/startup.go index 5d242b1..a6b8e06 100644 --- a/internal/handler/subscenario/startup.go +++ b/internal/handler/subscenario/startup.go @@ -4,7 +4,7 @@ import ( "encoding/json" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/subscenario" + subscenarioschema "honoka-chan/internal/schema/subscenario" "honoka-chan/internal/session" "time" @@ -15,14 +15,14 @@ func startup(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - startReq := subscenario.StartUpReq{} + startReq := subscenarioschema.StartUpReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &startReq) if ss.CheckErr(err) { return } - ss.Respond(subscenario.StartUpResp{ - ResponseData: subscenario.StartUpData{ + ss.Respond(subscenarioschema.StartUpResp{ + ResponseData: subscenarioschema.StartUpData{ SubscenarioID: startReq.SubscenarioID, ScenarioAdjustment: 50, ServerTimestamp: time.Now().Unix(), diff --git a/internal/handler/tos/check.go b/internal/handler/tos/check.go index d970071..ebd5f5b 100644 --- a/internal/handler/tos/check.go +++ b/internal/handler/tos/check.go @@ -3,7 +3,7 @@ package tos import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/tos" + tosschema "honoka-chan/internal/schema/tos" "honoka-chan/internal/session" "time" @@ -14,8 +14,8 @@ func check(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(tos.CheckResp{ - ResponseData: tos.CheckData{ + ss.Respond(tosschema.CheckResp{ + ResponseData: tosschema.CheckData{ TosID: 1, TosType: 1, IsAgreed: true, diff --git a/internal/handler/unit/deck.go b/internal/handler/unit/deck.go index 2e8ce6c..ac8d304 100644 --- a/internal/handler/unit/deck.go +++ b/internal/handler/unit/deck.go @@ -2,12 +2,12 @@ package unit import ( "encoding/json" - "errors" "honoka-chan/internal/middleware" + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - profileapischema "honoka-chan/internal/schema/api/profile" unitapischema "honoka-chan/internal/schema/api/unit" - "honoka-chan/internal/schema/unit" + unitschema "honoka-chan/internal/schema/unit" "honoka-chan/internal/session" "time" @@ -18,7 +18,7 @@ func deck(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - deckReq := unit.DeckReq{} + deckReq := unitschema.DeckReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &deckReq) if ss.CheckErr(err) { return @@ -63,53 +63,34 @@ func deck(ctx *gin.Context) { // 队伍成员信息 for _, u := range deck.UnitDeckDetail { // 成员信息 - newUnitData := profileapischema.UnitData{} - exists, err := ss.UserEng.Table("user_unit").Where("unit_owning_user_id = ?", u.UnitOwningUserID).Exist() + unitData := unitmodel.UnitDataMap{} + _, err = ss.GetBasicUnitInfo(). + Where("a.unit_owning_user_id = ?", u.UnitOwningUserID).Get(&unitData) if ss.CheckErr(err) { return } - if exists { - // fmt.Println("新成员为用户增加成员") - _, err = ss.UserEng.Table("user_unit").Where("unit_owning_user_id = ?", u.UnitOwningUserID).Get(&newUnitData) - if ss.CheckErr(err) { - return - } - } else { - exists, err := ss.MainEng.Table("common_unit_m").Where("unit_owning_user_id = ?", u.UnitOwningUserID).Exist() - if ss.CheckErr(err) { - return - } - if exists { - // fmt.Println("新成员为公共成员") - _, err = ss.MainEng.Table("common_unit_m").Where("unit_owning_user_id = ?", u.UnitOwningUserID).Get(&newUnitData) - if ss.CheckErr(err) { - return - } - } else { - // fmt.Println("新成员不存在") - err = errors.New("新成员不存在") - } - if ss.CheckErr(err) { - return - } - } - // fmt.Println("新的成员信息:", newUnitData) + // fmt.Println("新的成员信息:", unitData) // 插入新成员信息 - newUnitDeckData := unitapischema.UnitDeckData{} - b, err := json.Marshal(newUnitData) - if ss.CheckErr(err) { - return + newUnitDeckData := usermodel.UserDeckUnit{ + UserDeckID: userDeckId, + UnitOwningUserID: unitData.UnitOwningUserID, + UnitID: unitData.UnitID, + Position: u.Position, + Level: unitData.Level, + LevelLimitID: unitData.LevelLimitID, + DisplayRank: unitData.DisplayRank, + Love: unitData.Love, + UnitSkillLevel: unitData.UnitSkillLevel, + IsRankMax: unitData.IsRankMax, + IsLoveMax: unitData.IsLoveMax, + IsLevelMax: unitData.IsLevelMax, + IsSigned: unitData.IsSigned, + BeforeLove: unitData.MaxLove, + MaxLove: unitData.MaxLove, + UserID: ss.UserID, + InsertDate: time.Now().Unix(), } - err = json.Unmarshal(b, &newUnitDeckData) - if ss.CheckErr(err) { - return - } - newUnitDeckData.BeforeLove = newUnitDeckData.MaxLove - newUnitDeckData.Position = u.Position - newUnitDeckData.UserDeckID = userDeckId - newUnitDeckData.InsertData = time.Now().Unix() - _, err = ss.UserEng.Table("user_deck_unit").Insert(&newUnitDeckData) if ss.CheckErr(err) { return @@ -117,7 +98,7 @@ func deck(ctx *gin.Context) { } } - ss.Respond(unit.DeckResp{ + ss.Respond(unitschema.DeckResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/unit/deckname.go b/internal/handler/unit/deckname.go index 16b1f4e..e6cfbb7 100644 --- a/internal/handler/unit/deckname.go +++ b/internal/handler/unit/deckname.go @@ -5,7 +5,7 @@ import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" unitapischema "honoka-chan/internal/schema/api/unit" - "honoka-chan/internal/schema/unit" + unitschema "honoka-chan/internal/schema/unit" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -15,7 +15,7 @@ func deckName(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - deckReq := unit.DeckNameReq{} + deckReq := unitschema.DeckNameReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &deckReq) if ss.CheckErr(err) { return @@ -37,7 +37,7 @@ func deckName(ctx *gin.Context) { return } - ss.Respond(unit.DeckResp{ + ss.Respond(unitschema.DeckResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/unit/favorite.go b/internal/handler/unit/favorite.go index e767718..e7b0ec9 100644 --- a/internal/handler/unit/favorite.go +++ b/internal/handler/unit/favorite.go @@ -1,9 +1,11 @@ package unit import ( + "encoding/json" "honoka-chan/internal/middleware" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/unit" + unitschema "honoka-chan/internal/schema/unit" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -13,7 +15,22 @@ func favorite(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(unit.FavoriteResp{ + var req unitschema.FavoriteReq + err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &req) + if ss.CheckErr(err) { + return + } + + data := usermodel.UserUnitData{ + FavoriteFlag: req.FavoriteFlag != 0, + } + _, err = ss.UserEng.Table(new(usermodel.UserUnitData)). + ID(req.UnitOwningUserID).Cols("favorite_flag").Update(&data) + if ss.CheckErr(err) { + return + } + + ss.Respond(unitschema.FavoriteResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/unit/favoriteaccessory.go b/internal/handler/unit/favoriteaccessory.go new file mode 100644 index 0000000..9530c01 --- /dev/null +++ b/internal/handler/unit/favoriteaccessory.go @@ -0,0 +1,33 @@ +package unit + +import ( + "fmt" + "honoka-chan/internal/middleware" + "honoka-chan/internal/router" + "honoka-chan/internal/session" + + "github.com/gin-gonic/gin" +) + +type SetResp struct { + ResponseData []any `json:"response_data"` + ReleaseInfo []any `json:"release_info"` + StatusCode int `json:"status_code"` +} + +func favoriteAccessory(ctx *gin.Context) { + ss := session.Get(ctx) + defer ss.Finalize() + + fmt.Println(ctx.MustGet("request_data").(string)) + + ss.Respond(SetResp{ + ResponseData: []any{}, + ReleaseInfo: []any{}, + StatusCode: 200, + }) +} + +func init() { + router.AddHandler("main.php", "POST", "/unit/favoriteAccessory", middleware.Common, favoriteAccessory) +} diff --git a/internal/handler/unit/removableskillequipment.go b/internal/handler/unit/removableskillequipment.go index 818b193..367fc46 100644 --- a/internal/handler/unit/removableskillequipment.go +++ b/internal/handler/unit/removableskillequipment.go @@ -4,7 +4,7 @@ import ( "encoding/json" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/unit" + unitschema "honoka-chan/internal/schema/unit" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -14,7 +14,7 @@ func removableSkillEquipment(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - req := unit.RemovableSkillEquipmentReq{} + req := unitschema.RemovableSkillEquipmentReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &req) if ss.CheckErr(err) { return @@ -34,7 +34,7 @@ func removableSkillEquipment(ctx *gin.Context) { // 佩戴宝石 for _, v := range req.Equip { // fmt.Println("Equip:", v.UnitOwningUserID, v.UnitRemovableSkillID) - data := unit.RemovableSkillEquipmentData{ + data := unitschema.RemovableSkillEquipmentData{ UnitRemovableSkillId: v.UnitRemovableSkillID, UnitOwningUserID: v.UnitOwningUserID, UserID: ss.UserID, @@ -45,7 +45,7 @@ func removableSkillEquipment(ctx *gin.Context) { } } - ss.Respond(unit.RemovableSkillEquipmentResp{ + ss.Respond(unitschema.RemovableSkillEquipmentResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/unit/sale.go b/internal/handler/unit/sale.go new file mode 100644 index 0000000..ca8b7a8 --- /dev/null +++ b/internal/handler/unit/sale.go @@ -0,0 +1,99 @@ +package unit + +import ( + "encoding/json" + "honoka-chan/internal/middleware" + usermodel "honoka-chan/internal/model/user" + "honoka-chan/internal/router" + unitschema "honoka-chan/internal/schema/unit" + "honoka-chan/internal/session" + "time" + + "github.com/gin-gonic/gin" +) + +func sale(ctx *gin.Context) { + ss := session.Get(ctx) + defer ss.Finalize() + + req := unitschema.SaleReq{} + err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &req) + if ss.CheckErr(err) { + return + } + + totalCoin := 0 + saleDetail := []unitschema.Detail{} + for _, id := range req.UnitOwningUserID { + salePrice := 1 // TODO: 从 unit_level_up_pattern_m 表获取实际价格 + totalCoin += salePrice + + _, unitData := ss.GetUserUnitInfo(id) + + saleDetail = append(saleDetail, unitschema.Detail{ + UnitOwningUserID: id, + UnitID: unitData.UnitID, + IsSigned: unitData.IsSigned, + Price: salePrice, + }) + + // 卸载宝石 + _, err = ss.UserEng.Table(new(usermodel.UserUnitSkillEquip)). + Where("unit_owning_user_id = ?", id).Delete() + if ss.CheckErr(err) { + return + } + + // 卸载饰品 + _, err = ss.UserEng.Table(new(usermodel.UserAccessoryWear)). + Where("unit_owning_user_id = ?", id).Delete() + if ss.CheckErr(err) { + return + } + + // 移除卡片 + _, err = ss.UserEng.Table(new(usermodel.UserUnitData)). + Where("unit_owning_user_id = ?", id).Delete() + if ss.CheckErr(err) { + return + } + } + + skillList := []int{} + err = ss.MainEng.Table("unit_removable_skill_m"). + Where("skill_type = 1").Cols("unit_removable_skill_id").Find(&skillList) + if ss.CheckErr(err) { + return + } + + owningData := []unitschema.OwningInfo{} + for _, sk := range skillList { + owningData = append(owningData, unitschema.OwningInfo{ + UnitRemovableSkillID: sk, + TotalAmount: 999, + EquippedAmount: 0, // TODO: 计算实际数量 + InsertDate: "2023-01-01 12:00:00", + }) + } + + ss.Respond(unitschema.SaleResp{ + ResponseData: unitschema.SaleData{ + Total: totalCoin, + Detail: saleDetail, + BeforeUserInfo: ss.GetUserInfo(), + AfterUserInfo: ss.GetUserInfo(), + RewardBoxFlag: false, + GetExchangePointList: []any{}, + UnitRemovableSkill: unitschema.UnitRemovableSkill{ + OwningInfo: owningData, + }, + ServerTimestamp: time.Now().Unix(), + }, + ReleaseInfo: []any{}, + StatusCode: 200, + }) +} + +func init() { + router.AddHandler("main.php", "POST", "/unit/sale", middleware.Common, sale) +} diff --git a/internal/handler/unit/setdisplayrank.go b/internal/handler/unit/setdisplayrank.go index 5c7fcf4..d1b8aec 100644 --- a/internal/handler/unit/setdisplayrank.go +++ b/internal/handler/unit/setdisplayrank.go @@ -1,9 +1,11 @@ package unit import ( + "encoding/json" "honoka-chan/internal/middleware" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/unit" + unitschema "honoka-chan/internal/schema/unit" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -13,7 +15,22 @@ func setDisplayRank(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(unit.SetDisplayRankResp{ + var req unitschema.SetDisplayRankReq + err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &req) + if ss.CheckErr(err) { + return + } + + data := usermodel.UserUnitData{ + DisplayRank: req.DisplayRank, + } + _, err = ss.UserEng.Table(new(usermodel.UserUnitData)). + ID(req.UnitOwningUserID).Cols("display_rank").Update(&data) + if ss.CheckErr(err) { + return + } + + ss.Respond(unitschema.SetDisplayRankResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/unit/wearaccessory.go b/internal/handler/unit/wearaccessory.go index 98dfe70..1830157 100644 --- a/internal/handler/unit/wearaccessory.go +++ b/internal/handler/unit/wearaccessory.go @@ -4,7 +4,7 @@ import ( "encoding/json" "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/unit" + unitschema "honoka-chan/internal/schema/unit" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -14,7 +14,7 @@ func wearAccessory(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - req := unit.WearAccessoryReq{} + req := unitschema.WearAccessoryReq{} err := json.Unmarshal([]byte(ctx.MustGet("request_data").(string)), &req) if ss.CheckErr(err) { return @@ -34,7 +34,7 @@ func wearAccessory(ctx *gin.Context) { // 佩戴饰品 for _, v := range req.Wear { // fmt.Println("Wear:", v.AccessoryOwningUserID, v.UnitOwningUserID) - data := unit.WearAccessoryData{ + data := unitschema.WearAccessoryData{ AccessoryOwningUserID: v.AccessoryOwningUserID, UnitOwningUserID: v.UnitOwningUserID, UserID: ss.UserID, @@ -45,7 +45,7 @@ func wearAccessory(ctx *gin.Context) { } } - ss.Respond(unit.WearAccessoryResp{ + ss.Respond(unitschema.WearAccessoryResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/user/changename.go b/internal/handler/user/changename.go index cf81e9f..23ba9d5 100644 --- a/internal/handler/user/changename.go +++ b/internal/handler/user/changename.go @@ -2,7 +2,7 @@ package user import ( "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" userschema "honoka-chan/internal/schema/user" "honoka-chan/internal/session" @@ -23,7 +23,7 @@ func changeName(ctx *gin.Context) { return } - pref := user.UserPref{ + pref := usermodel.UserPref{ UserName: req.Get("name").String(), } _, err = ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Update(&pref) diff --git a/internal/handler/user/changenavi.go b/internal/handler/user/changenavi.go index b150b99..e41d05a 100644 --- a/internal/handler/user/changenavi.go +++ b/internal/handler/user/changenavi.go @@ -2,7 +2,7 @@ package user import ( "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" userschema "honoka-chan/internal/schema/user" "honoka-chan/internal/session" @@ -16,7 +16,7 @@ func changeNavi(ctx *gin.Context) { defer ss.Finalize() req := gjson.Parse(ctx.MustGet("request_data").(string)) - pref := user.UserPref{ + pref := usermodel.UserPref{ UnitOwningUserID: int(req.Get("unit_owning_user_id").Int()), } _, err := ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Update(&pref) diff --git a/internal/handler/user/setnotificationtoken.go b/internal/handler/user/setnotificationtoken.go index d1e7c81..6b97a70 100644 --- a/internal/handler/user/setnotificationtoken.go +++ b/internal/handler/user/setnotificationtoken.go @@ -3,7 +3,7 @@ package user import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/user" + userschema "honoka-chan/internal/schema/user" "honoka-chan/internal/session" "github.com/gin-gonic/gin" @@ -13,7 +13,7 @@ func setNotificationToken(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - ss.Respond(user.SetNotificationTokenResp{ + ss.Respond(userschema.SetNotificationTokenResp{ ResponseData: []any{}, ReleaseInfo: []any{}, StatusCode: 200, diff --git a/internal/handler/user/userinfo.go b/internal/handler/user/userinfo.go index 7673d64..9b79881 100644 --- a/internal/handler/user/userinfo.go +++ b/internal/handler/user/userinfo.go @@ -2,9 +2,8 @@ package user import ( "honoka-chan/internal/middleware" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - userapischema "honoka-chan/internal/schema/api/user" userschema "honoka-chan/internal/schema/user" "honoka-chan/internal/session" "time" @@ -16,7 +15,7 @@ func userInfo(ctx *gin.Context) { ss := session.Get(ctx) defer ss.Finalize() - pref := user.UserPref{} + pref := usermodel.UserPref{} _, err := ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Get(&pref) if ss.CheckErr(err) { return @@ -24,36 +23,7 @@ func userInfo(ctx *gin.Context) { userResp := userschema.UserInfoResp{ ResponseData: userschema.UserInfoData{ - User: userapischema.UserInfo{ - UserID: ss.UserID, - Name: pref.UserName, - Level: pref.UserLevel, - Exp: 1089696, - PreviousExp: 0, - NextExp: 1207185, - GameCoin: 112124104, - SnsCoin: 100000, - FreeSnsCoin: 50000, - PaidSnsCoin: 50000, - SocialPoint: 999999999, - UnitMax: 5000, - WaitingUnitMax: 1000, - EnergyMax: 417, - EnergyFullTime: "2023-03-20 03:58:55", - LicenseLiveEnergyRecoverlyTime: 60, - EnergyFullNeedTime: 0, - OverMaxEnergy: 0, - TrainingEnergy: 100, - TrainingEnergyMax: 100, - FriendMax: 99, - InviteCode: pref.InviteCode, - InsertDate: "2015-08-10 18:58:30", - UpdateDate: "2018-08-09 18:13:12", - TutorialState: -1, - DiamondCoin: 0, - CrystalCoin: 0, - LpRecoveryItem: []userapischema.LpRecoveryItem{}, - }, + User: ss.GetUserInfo(), Birth: userschema.Birth{ BirthMonth: 10, BirthDay: 18, diff --git a/internal/handler/webui/login.go b/internal/handler/webui/login.go index 4622641..0f1a16c 100644 --- a/internal/handler/webui/login.go +++ b/internal/handler/webui/login.go @@ -3,7 +3,7 @@ package webui import ( "honoka-chan/internal/middleware" "honoka-chan/internal/router" - "honoka-chan/internal/schema/webui" + webuischema "honoka-chan/internal/schema/webui" "honoka-chan/internal/utils" "honoka-chan/pkg/db" "net/http" @@ -18,7 +18,7 @@ func login(ctx *gin.Context) { user := ctx.PostForm("user") pass := ctx.PostForm("pass") if area == "" || user == "" || pass == "" { - ctx.JSON(http.StatusOK, webui.Msg{ + ctx.JSON(http.StatusOK, webuischema.Msg{ Code: 1, Message: "参数不完整!", Redirect: "", @@ -28,10 +28,12 @@ func login(ctx *gin.Context) { userName := " " + area + "-" + user var userId int - exists, err := db.UserEng.Table("users").Where("phone = ? AND password = ?", userName, openssl.Md5ToString(pass)).Cols("user_id").Get(&userId) + exists, err := db.UserEng.Table("users"). + Where("phone = ? AND password = ?", userName, openssl.Md5ToString(pass)). + Cols("user_id").Get(&userId) utils.CheckErr(err) if !exists { - ctx.JSON(http.StatusOK, webui.Msg{ + ctx.JSON(http.StatusOK, webuischema.Msg{ Code: 1, Message: "账号不存在或者密码有误!", Redirect: "", @@ -46,7 +48,7 @@ func login(ctx *gin.Context) { session.Set("userid", userId) session.Save() - ctx.JSON(http.StatusOK, webui.Msg{ + ctx.JSON(http.StatusOK, webuischema.Msg{ Code: 0, Message: "登录成功!", Redirect: "/admin/index", diff --git a/internal/handler/webui/upload.go b/internal/handler/webui/upload.go index 27a3381..aa02259 100644 --- a/internal/handler/webui/upload.go +++ b/internal/handler/webui/upload.go @@ -3,8 +3,9 @@ package webui import ( "encoding/csv" "honoka-chan/internal/middleware" + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/router" - "honoka-chan/internal/schema/api/profile" "honoka-chan/internal/utils" "honoka-chan/pkg/db" "net/http" @@ -34,11 +35,16 @@ func upload(ctx *gin.Context) { defer session.Close() if err = session.Begin(); err != nil { session.Rollback() - panic(err) + ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: err.Error()}) + return } f, err := os.Open(tmpPath) - utils.CheckErr(err) + if err != nil { + session.Rollback() + ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "文件创建失败!"}) + return + } defer f.Close() r := csv.NewReader(f) @@ -55,95 +61,57 @@ func upload(ctx *gin.Context) { return } - skillLv, err := strconv.Atoi(rr[1]) + skLv, err := strconv.Atoi(rr[1]) if err != nil { session.Rollback() ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "文件解析失败!"}) return } - var unitId, unitExp, unitRarity, unitHp, unitSigned int - exists, err := db.MainEng.Table("common_unit_m").Join("LEFT", "unit_m", "common_unit_m.unit_id = unit_m.unit_id"). - Where("unit_m.unit_number = ?", rr[0]). - Cols("common_unit_m.unit_id,common_unit_m.exp,unit_m.rarity,common_unit_m.max_hp,common_unit_m.is_signed"). - Get(&unitId, &unitExp, &unitRarity, &unitHp, &unitSigned) - utils.CheckErr(err) - + uData := unitmodel.CommonUnitData{} + exists, err := session.Table(new(unitmodel.CommonUnitData)).Where("unit_number = ?", rr[0]).Get(&uData) if !exists { session.Rollback() ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "卡片不存在!"}) return } - if unitRarity != 4 { + if uData.Rarity != 4 { session.Rollback() ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "仅支持导入UR卡片!"}) return } - if skillLv < 0 || skillLv > 8 { + if skLv < 0 || skLv > 8 { session.Rollback() ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "技能等级设置有误!"}) return } - var diffExp, diffSmile, diffPure, diffCool int - _, err = db.MainEng.Table("unit_level_limit_pattern_m").Where("unit_level_limit_id = 1 AND unit_level = 350"). - Cols("next_exp,smile_diff,pure_diff,cool_diff").Get(&diffExp, &diffSmile, &diffPure, &diffCool) - utils.CheckErr(err) - - isSigned := false - if unitSigned == 1 { - isSigned = true + unitData := usermodel.UserUnitData{ + UnitID: uData.UnitID, + FavoriteFlag: false, + DisplayRank: uData.MaxRank, + UserID: ctx.GetInt("userid"), + InsertDate: time.Now().Unix(), + UpdateDate: time.Now().Unix(), } - var skillExp int - if skillLv != 8 { - skillExp = 0 - } else { - skillExp = 29900 - } - - unitData := profile.UnitData{ - UserID: ctx.GetInt("userid"), - UnitID: unitId, - Exp: unitExp + diffExp, - NextExp: 0, - Level: 350, - MaxLevel: 350, - LevelLimitID: 1, - Rank: 2, - MaxRank: 2, - Love: 1000, - MaxLove: 1000, - UnitSkillExp: skillExp, - UnitSkillLevel: skillLv, - MaxHp: unitHp, - UnitRemovableSkillCapacity: 8, - FavoriteFlag: false, - DisplayRank: 2, - IsRankMax: true, - IsLoveMax: true, - IsLevelMax: true, - IsSigned: isSigned, - IsSkillLevelMax: true, - IsRemovableSkillCapacityMax: true, - InsertDate: time.Now().Format("2006-01-02 03:04:05"), - } - - _, err = session.Table("user_unit").Insert(&unitData) + _, err = session.Table(new(usermodel.UserUnitData)).Insert(&unitData) if err != nil { session.Rollback() - panic(err) + ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "卡片添加失败!"}) + return } if err = session.Commit(); err != nil { session.Rollback() - panic(err) + ctx.JSON(http.StatusOK, ErrMsg{Error: 1, Msg: "卡片添加失败!"}) + return } } - ctx.JSON(http.StatusOK, ErrMsg{Error: 0, Msg: "上传成功!"}) + ctx.JSON(http.StatusOK, ErrMsg{Error: 0, Msg: "导入成功,请重新打开游戏!"}) } func init() { diff --git a/internal/model/accessory/accessory.go b/internal/model/accessory/accessory.go new file mode 100644 index 0000000..2aec259 --- /dev/null +++ b/internal/model/accessory/accessory.go @@ -0,0 +1,11 @@ +package accessorymodel + +type Accessory struct { + AccessoryID int `xorm:"accessory_id pk"` + Exp int `xorm:"exp"` + SmileMax int `xorm:"smile_max"` + PureMax int `xorm:"pure_max"` + CoolMax int `xorm:"cool_max"` + DefaultMaxLevel int `xorm:"default_max_level"` + MaxLevel int `xorm:"max_level"` +} diff --git a/internal/model/ghome/devicekey.go b/internal/model/ghome/devicekey.go new file mode 100644 index 0000000..e3c4c4c --- /dev/null +++ b/internal/model/ghome/devicekey.go @@ -0,0 +1,7 @@ +package ghomemodel + +type DeviceKey struct { + ID int `xorm:"id pk autoincr"` + DeviceID string `xorm:"device_id"` + RandKey string `xorm:"rand_key"` +} diff --git a/internal/model/login/authkey.go b/internal/model/login/authkey.go new file mode 100644 index 0000000..64310be --- /dev/null +++ b/internal/model/login/authkey.go @@ -0,0 +1,9 @@ +package loginmodel + +type AuthKey struct { + ID int `xorm:"id pk autoincr"` + AuthorizeToken string `xorm:"authorize_token"` + ClientToken string `xorm:"client_token"` + ServerToken string `xorm:"server_token"` + InsertDate string `xorm:"insert_date"` +} diff --git a/internal/model/unit/commonunitdata.go b/internal/model/unit/commonunitdata.go new file mode 100644 index 0000000..bf7cd84 --- /dev/null +++ b/internal/model/unit/commonunitdata.go @@ -0,0 +1,70 @@ +package unitmodel + +type CommonUnitData struct { + ID int `xorm:"id pk autoincr" json:"-"` + UnitNumber int `xorm:"unit_number" json:"-"` + UnitID int `xorm:"unit_id" json:"unit_id"` + UnitTypeID int `xorm:"unit_type_id" json:"unit_type_id"` + Name string `xorm:"name" json:"name"` + Eponym string `xorm:"eponym" json:"eponym"` + Rarity int `xorm:"rarity" json:"rarity"` + Attribute int `xorm:"attribute" json:"attribute"` + Smile int `xorm:"smile" json:"smile"` + Cute int `xorm:"cute" json:"cute"` + Cool int `xorm:"cool" json:"cool"` + Exp int `xorm:"exp" json:"exp"` + Level int `xorm:"level" json:"level"` + MaxLevel int `xorm:"max_level" json:"max_level"` + LevelLimitID int `xorm:"level_limit_id" json:"level_limit_id"` + Rank int `xorm:"rank" json:"rank"` + MaxRank int `xorm:"max_rank" json:"max_rank"` + Love int `xorm:"love" json:"love"` + MaxLove int `xorm:"max_love" json:"max_love"` + UnitSkillExp int `xorm:"unit_skill_exp" json:"unit_skill_exp"` + UnitSkillLevel int `xorm:"unit_skill_level" json:"unit_skill_level"` + MaxHp int `xorm:"max_hp" json:"max_hp"` + UnitRemovableSkillCapacity int `xorm:"unit_removable_skill_capacity" json:"unit_removable_skill_capacity"` + IsRankMax bool `xorm:"is_rank_max" json:"is_rank_max"` + IsLoveMax bool `xorm:"is_love_max" json:"is_love_max"` + IsLevelMax bool `xorm:"is_level_max" json:"is_level_max"` + IsSigned bool `xorm:"is_signed" json:"is_signed"` + IsSkillLevelMax bool `xorm:"is_skill_level_max" json:"is_skill_level_max"` + IsRemovableSkillCapacityMax bool `xorm:"is_removable_skill_capacity_max" json:"is_removable_skill_capacity_max"` + InsertDate int64 `xorm:"insert_date" json:"insert_date"` +} + +type UnitDataMap struct { + UnitOwningUserID int `xorm:"unit_owning_user_id pk autoincr"` + FavoriteFlag bool `xorm:"favorite_flag"` + DisplayRank int `xorm:"display_rank"` + + ID int `xorm:"id pk autoincr" json:"-"` + UnitID int `xorm:"unit_id" json:"unit_id"` + UnitTypeID int `xorm:"unit_type_id" json:"unit_type_id"` + Name string `xorm:"name" json:"name"` + Eponym string `xorm:"eponym" json:"eponym"` + Rarity int `xorm:"rarity" json:"rarity"` + Attribute int `xorm:"attribute" json:"attribute"` + Smile int `xorm:"smile" json:"smile"` + Cute int `xorm:"cute" json:"cute"` + Cool int `xorm:"cool" json:"cool"` + Exp int `xorm:"exp" json:"exp"` + Level int `xorm:"level" json:"level"` + MaxLevel int `xorm:"max_level" json:"max_level"` + LevelLimitID int `xorm:"level_limit_id" json:"level_limit_id"` + Rank int `xorm:"rank" json:"rank"` + MaxRank int `xorm:"max_rank" json:"max_rank"` + Love int `xorm:"love" json:"love"` + MaxLove int `xorm:"max_love" json:"max_love"` + UnitSkillExp int `xorm:"unit_skill_exp" json:"unit_skill_exp"` + UnitSkillLevel int `xorm:"unit_skill_level" json:"unit_skill_level"` + MaxHp int `xorm:"max_hp" json:"max_hp"` + UnitRemovableSkillCapacity int `xorm:"unit_removable_skill_capacity" json:"unit_removable_skill_capacity"` + IsRankMax bool `xorm:"is_rank_max" json:"is_rank_max"` + IsLoveMax bool `xorm:"is_love_max" json:"is_love_max"` + IsLevelMax bool `xorm:"is_level_max" json:"is_level_max"` + IsSigned bool `xorm:"is_signed" json:"is_signed"` + IsSkillLevelMax bool `xorm:"is_skill_level_max" json:"is_skill_level_max"` + IsRemovableSkillCapacityMax bool `xorm:"is_removable_skill_capacity_max" json:"is_removable_skill_capacity_max"` + InsertDate int64 `xorm:"insert_date" json:"insert_date"` +} diff --git a/internal/model/unit/unitm.go b/internal/model/unit/unitm.go new file mode 100644 index 0000000..868f13f --- /dev/null +++ b/internal/model/unit/unitm.go @@ -0,0 +1,38 @@ +package unitmodel + +type UnitM struct { + UnitId int `xorm:"unit_id pk"` + UnitNumber int `xorm:"unit_number"` + UnitTypeId int `xorm:"unit_type_id"` + AlbumSeriesId *int `xorm:"album_series_id"` + Eponym *string `xorm:"eponym"` + EponymEn string `xorm:"eponym_en"` + Name string `xorm:"name"` + NameEn *string `xorm:"name_en"` + NormalCardId int `xorm:"normal_card_id"` + RankMaxCardId int `xorm:"rank_max_card_id"` + NormalIconAsset string `xorm:"normal_icon_asset"` + NormalIconAssetEn *string `xorm:"normal_icon_asset_en"` + RankMaxIconAsset string `xorm:"rank_max_icon_asset"` + RankMaxIconAssetEn *string `xorm:"rank_max_icon_asset_en"` + NormalUnitNaviAssetId int `xorm:"normal_unit_navi_asset_id"` + RankMaxUnitNaviAssetId int `xorm:"rank_max_unit_navi_asset_id"` + Rarity int `xorm:"rarity"` + AttributeId int `xorm:"attribute_id"` + DefaultUnitSkillId *int `xorm:"default_unit_skill_id"` + SkillAssetVoiceId *int `xorm:"skill_asset_voice_id"` + DefaultLeaderSkillId *int `xorm:"default_leader_skill_id"` + DefaultRemovableSkillCapacity int `xorm:"default_removable_skill_capacity"` + MaxRemovableSkillCapacity int `xorm:"max_removable_skill_capacity"` + DisableRankUp int `xorm:"disable_rank_up"` + RankMin int `xorm:"rank_min"` + RankMax int `xorm:"rank_max"` + UnitLevelUpPatternId int `xorm:"unit_level_up_pattern_id"` + HpMax int `xorm:"hp_max"` + SmileMax int `xorm:"smile_max"` + PureMax int `xorm:"pure_max"` + CoolMax int `xorm:"cool_max"` + ReinforceItemRankUpCost *int `xorm:"reinforce_item_rank_up_cost"` + SubUnitTypeId *int `xorm:"sub_unit_type_id"` + ReleaseTag *string `xorm:"release_tag"` +} diff --git a/internal/model/user/useraccessorywear.go b/internal/model/user/useraccessorywear.go index 507054c..8a2f74b 100644 --- a/internal/model/user/useraccessorywear.go +++ b/internal/model/user/useraccessorywear.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserAccessoryWear struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/model/user/userdeck.go b/internal/model/user/userdeck.go index f981652..058442b 100644 --- a/internal/model/user/userdeck.go +++ b/internal/model/user/userdeck.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserDeck struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/model/user/userdeckunit.go b/internal/model/user/userdeckunit.go index dc08a5d..8f6e027 100644 --- a/internal/model/user/userdeckunit.go +++ b/internal/model/user/userdeckunit.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserDeckUnit struct { ID int `xorm:"id pk autoincr"` @@ -11,12 +11,13 @@ type UserDeckUnit struct { DisplayRank int `xorm:"display_rank"` Love int `xorm:"love"` UnitSkillLevel int `xorm:"unit_skill_level"` - IsRankMax int `xorm:"is_rank_max"` - IsLoveMax int `xorm:"is_love_max"` - IsLevelMax int `xorm:"is_level_max"` - IsSigned int `xorm:"is_signed"` + IsRankMax bool `xorm:"is_rank_max"` + IsLoveMax bool `xorm:"is_love_max"` + IsLevelMax bool `xorm:"is_level_max"` + IsSigned bool `xorm:"is_signed"` BeforeLove int `xorm:"before_love"` MaxLove int `xorm:"max_love"` + UserID int `xorm:"user_id"` InsertDate int64 `xorm:"insert_date"` } diff --git a/internal/model/user/userkey.go b/internal/model/user/userkey.go index c2d8a26..4dc9fb0 100644 --- a/internal/model/user/userkey.go +++ b/internal/model/user/userkey.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserKey struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/model/user/userlivegoal.go b/internal/model/user/userlivegoal.go new file mode 100644 index 0000000..39b13b3 --- /dev/null +++ b/internal/model/user/userlivegoal.go @@ -0,0 +1,11 @@ +package usermodel + +import "honoka-chan/internal/constant" + +type UserLiveGoal struct { + ID int `xorm:"id pk autoincr"` + LiveDifficultyID int `xorm:"live_difficulty_id"` + UserID int `xorm:"user_id"` + GoalType constant.LiveGoalType `xorm:"goal_type"` + CompletedAt int64 `xorm:"completed_at"` +} diff --git a/internal/model/user/userliveinprogress.go b/internal/model/user/userliveinprogress.go new file mode 100644 index 0000000..06b57b7 --- /dev/null +++ b/internal/model/user/userliveinprogress.go @@ -0,0 +1,7 @@ +package usermodel + +type UserLiveInProgress struct { + ID int `xorm:"id pk autoincr"` + DeckID int `xorm:"deck_id"` + UserID int `xorm:"user_id"` +} diff --git a/internal/model/user/userliverecord.go b/internal/model/user/userliverecord.go new file mode 100644 index 0000000..23b78fa --- /dev/null +++ b/internal/model/user/userliverecord.go @@ -0,0 +1,144 @@ +package usermodel + +type UserLiveRecord struct { + ID int `xorm:"id pk autoincr"` + LiveDifficultyID int `xorm:"live_difficulty_id"` + DeckID int `xorm:"deck_id"` + TotalScore int `xorm:"total_score"` // + PerfectCnt int `xorm:"perfect_cnt"` // + GreatCnt int `xorm:"great_cnt"` // + GoodCnt int `xorm:"good_cnt"` // + BadCnt int `xorm:"bad_cnt"` // + MissCnt int `xorm:"miss_cnt"` // + MaxCombo int `xorm:"max_combo"` + IsSkillOn bool `xorm:"is_skill_on"` + LiveInfoJSON string `xorm:"live_info_json"` + PreciseListJSON string `xorm:"precise_list_json"` + DeckInfoJSON string `xorm:"deck_info_json"` + TapAdjust int `xorm:"tap_adjust"` + LiveSettingJSON string `xorm:"live_setting_json"` + CanReplay bool `xorm:"can_replay"` + TriggerLogJSON string `xorm:"trigger_log_json"` + UserID int `xorm:"user_id"` + UpdateDate string `xorm:"insert_date"` +} + +// TODO: 转移到 schema 下 +type NotesList struct { + TimingSec float64 `json:"timing_sec"` + NotesAttribute int `json:"notes_attribute"` + NotesLevel int `json:"notes_level"` + Effect int `json:"effect"` + EffectValue int `json:"effect_value"` + Position int `json:"position"` +} + +type LiveInfo struct { + LiveDifficultyID int `json:"live_difficulty_id"` + IsRandom bool `json:"is_random"` + AcFlag int `json:"ac_flag"` + SwingFlag int `json:"swing_flag"` + NotesList []NotesList `json:"notes_list"` +} + +// TODO: 转移到 schema 下 +type PreciseList struct { + Count int `json:"count"` + Effect int `json:"effect"` + Accuracy int `json:"accuracy"` + Tap float64 `json:"tap"` + IsSame bool `json:"is_same"` + Release any `json:"release"` + Position int `json:"position"` + NoteNumber int `json:"note_number"` + FirstTouch any `json:"first_touch"` + Tp bool `json:"tp"` + Tpf any `json:"tpf"` +} + +// TODO: 转移到 schema 下 +type TotalStatus struct { + Hp int `json:"hp"` + Smile int `json:"smile"` + Cute int `json:"cute"` + Cool int `json:"cool"` +} + +type CenterBonus struct { + Hp int `json:"hp"` + Smile int `json:"smile"` + Cute int `json:"cute"` + Cool int `json:"cool"` +} + +type SiBonus struct { + Hp int `json:"hp"` + Smile int `json:"smile"` + Cute int `json:"cute"` + Cool int `json:"cool"` +} + +type AccessoryInfo struct { + AccessoryOwningUserID int `json:"accessory_owning_user_id"` + AccessoryID int `json:"accessory_id"` + Exp int `json:"exp"` + NextExp int `json:"next_exp"` + Level int `json:"level"` + MaxLevel int `json:"max_level"` + RankUpCount int `json:"rank_up_count"` + FavoriteFlag bool `json:"favorite_flag"` +} + +type UnitList struct { + UnitID int `json:"unit_id"` + Position int `json:"position"` + Level int `json:"level"` + LevelLimitID int `json:"level_limit_id"` + DisplayRank int `json:"display_rank"` + Love int `json:"love"` + UnitSkillLevel int `json:"unit_skill_level"` + IsRankMax bool `json:"is_rank_max"` + IsLoveMax bool `json:"is_love_max"` + IsLevelMax bool `json:"is_level_max"` + IsSigned bool `json:"is_signed"` + Rank int `json:"rank"` + MaxHp int `json:"max_hp"` + UnitRemovableSkillCapacity int `json:"unit_removable_skill_capacity"` + RemovableSkillIds []int `json:"removable_skill_ids"` + TotalStatus TotalStatus `json:"total_status"` + SiBonus SiBonus `json:"si_bonus"` + AccessoryInfo *AccessoryInfo `json:"accessory_info,omitempty"` +} + +type DeckInfo struct { + LiveDifficultyID int `json:"live_difficulty_id"` + TotalStatus TotalStatus `json:"total_status"` + CenterBonus CenterBonus `json:"center_bonus"` + SiBonus SiBonus `json:"si_bonus"` + UnitList []UnitList `json:"unit_list"` +} + +// TODO: 转移到 schema 下 +type Icon struct { + NormalID int `json:"normal_id"` + JustID int `json:"just_id"` + SlideID int `json:"slide_id"` +} + +type LiveSetting struct { + NotesSpeed float64 `json:"notes_speed"` + CutinBrightness int `json:"cutin_brightness"` + CutinType int `json:"cutin_type"` + EffectFlag bool `json:"effect_flag"` + StringSize int `json:"string_size"` + SeID int `json:"se_id"` + Icon Icon `json:"icon"` + BackgroundID int `json:"background_id"` + RandomValue int `json:"random_value"` +} + +// TODO: 转移到 schema 下 +type TriggerLog struct { + Position int `json:"position"` + ActivationRate int `json:"activation_rate"` +} diff --git a/internal/model/user/userpref.go b/internal/model/user/userpref.go index 289c0af..260a187 100644 --- a/internal/model/user/userpref.go +++ b/internal/model/user/userpref.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserPref struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/model/user/users.go b/internal/model/user/users.go index 8dd269a..cc50b2a 100644 --- a/internal/model/user/users.go +++ b/internal/model/user/users.go @@ -1,4 +1,4 @@ -package user +package usermodel type Users struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/model/user/userunit.go b/internal/model/user/userunit.go index 6ce3a31..db08495 100644 --- a/internal/model/user/userunit.go +++ b/internal/model/user/userunit.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserUnit struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/model/user/userunitdata.go b/internal/model/user/userunitdata.go new file mode 100644 index 0000000..f32419c --- /dev/null +++ b/internal/model/user/userunitdata.go @@ -0,0 +1,11 @@ +package usermodel + +type UserUnitData struct { + UnitOwningUserID int `xorm:"unit_owning_user_id pk autoincr"` + UnitID int `xorm:"unit_id"` + FavoriteFlag bool `xorm:"favorite_flag"` + DisplayRank int `xorm:"display_rank"` + UserID int `xorm:"user_id"` + InsertDate int64 `xorm:"insert_date"` + UpdateDate int64 `xorm:"update_date"` +} diff --git a/internal/model/user/userunitskillequip.go b/internal/model/user/userunitskillequip.go index dcfd59f..ca064c6 100644 --- a/internal/model/user/userunitskillequip.go +++ b/internal/model/user/userunitskillequip.go @@ -1,4 +1,4 @@ -package user +package usermodel type UserUnitSkillEquip struct { ID int `xorm:"id pk autoincr"` diff --git a/internal/schema/album/seriesall.go b/internal/schema/album/seriesall.go index ee7789a..59602df 100644 --- a/internal/schema/album/seriesall.go +++ b/internal/schema/album/seriesall.go @@ -1,4 +1,4 @@ -package album +package albumschema type UnitList struct { UnitID int `json:"unit_id"` diff --git a/internal/schema/announce/checkstate.go b/internal/schema/announce/checkstate.go index 97bec02..9a28b80 100644 --- a/internal/schema/announce/checkstate.go +++ b/internal/schema/announce/checkstate.go @@ -1,4 +1,4 @@ -package announce +package announceschema type CheckStateData struct { HasUnreadAnnounce bool `json:"has_unread_announce"` diff --git a/internal/schema/api/album/all.go b/internal/schema/api/album/all.go index a92ce37..7167ebb 100644 --- a/internal/schema/api/album/all.go +++ b/internal/schema/api/album/all.go @@ -1,4 +1,4 @@ -package album +package albumapischema type UnitList struct { UnitID int `json:"unit_id"` diff --git a/internal/schema/api/api.go b/internal/schema/api/api.go index 3f89557..cef60f5 100644 --- a/internal/schema/api/api.go +++ b/internal/schema/api/api.go @@ -1,4 +1,4 @@ -package api +package apischema type ApiReq struct { Module string `json:"module"` diff --git a/internal/schema/api/award/info.go b/internal/schema/api/award/info.go index 47e3f2a..bf38bc4 100644 --- a/internal/schema/api/award/info.go +++ b/internal/schema/api/award/info.go @@ -1,4 +1,4 @@ -package award +package awardapischema type Info struct { AwardID int `json:"award_id"` diff --git a/internal/schema/api/background/info.go b/internal/schema/api/background/info.go index d974c1c..eb3609d 100644 --- a/internal/schema/api/background/info.go +++ b/internal/schema/api/background/info.go @@ -1,4 +1,4 @@ -package background +package backgroundapischema type Info struct { BackgroundID int `json:"background_id"` diff --git a/internal/schema/api/banner/list.go b/internal/schema/api/banner/list.go index 99c48d8..ef8b7a8 100644 --- a/internal/schema/api/banner/list.go +++ b/internal/schema/api/banner/list.go @@ -1,4 +1,4 @@ -package banner +package bannerapischema type BannerList struct { BannerType int `json:"banner_type"` diff --git a/internal/schema/api/challenge/info.go b/internal/schema/api/challenge/info.go index 871b584..ef786c4 100644 --- a/internal/schema/api/challenge/info.go +++ b/internal/schema/api/challenge/info.go @@ -1,4 +1,4 @@ -package challenge +package challengeapischema type InfoResp struct { Result []any `json:"result"` diff --git a/internal/schema/api/costume/list.go b/internal/schema/api/costume/list.go index db6b372..8aa2ba8 100644 --- a/internal/schema/api/costume/list.go +++ b/internal/schema/api/costume/list.go @@ -1,4 +1,4 @@ -package costume +package costumeapischema type CostumeList struct { UnitID int `json:"unit_id"` diff --git a/internal/schema/api/eventscenario/status.go b/internal/schema/api/eventscenario/status.go index 901c31b..7aaad92 100644 --- a/internal/schema/api/eventscenario/status.go +++ b/internal/schema/api/eventscenario/status.go @@ -1,4 +1,4 @@ -package eventscenario +package eventscenarioapischema type ChapterList struct { EventScenarioID int `json:"event_scenario_id"` diff --git a/internal/schema/api/exchange/owningpoint.go b/internal/schema/api/exchange/owningpoint.go index 33526a6..2d2bc90 100644 --- a/internal/schema/api/exchange/owningpoint.go +++ b/internal/schema/api/exchange/owningpoint.go @@ -1,4 +1,4 @@ -package exchange +package exchangeapischema type ExchangePointList struct { Rarity int `json:"rarity"` diff --git a/internal/schema/api/live/schedule.go b/internal/schema/api/live/schedule.go index 96f02c1..111cb3e 100644 --- a/internal/schema/api/live/schedule.go +++ b/internal/schema/api/live/schedule.go @@ -1,4 +1,4 @@ -package live +package liveapischema type LiveList struct { LiveDifficultyID int `json:"live_difficulty_id"` diff --git a/internal/schema/api/live/status.go b/internal/schema/api/live/status.go index a98dae4..e741a60 100644 --- a/internal/schema/api/live/status.go +++ b/internal/schema/api/live/status.go @@ -1,4 +1,4 @@ -package live +package liveapischema type NormalLiveStatusList struct { LiveDifficultyID int `json:"live_difficulty_id"` diff --git a/internal/schema/api/liveicon/info.go b/internal/schema/api/liveicon/info.go index 288b736..b6d3f42 100644 --- a/internal/schema/api/liveicon/info.go +++ b/internal/schema/api/liveicon/info.go @@ -1,4 +1,4 @@ -package liveicon +package liveiconapischema type InfoData struct { LiveNotesIconList []int `json:"live_notes_icon_list"` diff --git a/internal/schema/api/livese/info.go b/internal/schema/api/livese/info.go index f89c785..a496175 100644 --- a/internal/schema/api/livese/info.go +++ b/internal/schema/api/livese/info.go @@ -1,4 +1,4 @@ -package livese +package liveseapischema type InfoData struct { LiveSeList []int `json:"live_se_list"` diff --git a/internal/schema/api/login/topinfo.go b/internal/schema/api/login/topinfo.go index 49ab7f9..ccd9378 100644 --- a/internal/schema/api/login/topinfo.go +++ b/internal/schema/api/login/topinfo.go @@ -1,4 +1,4 @@ -package login +package loginapischema type LicenseInfo struct { LicenseList []any `json:"license_list"` diff --git a/internal/schema/api/login/topinfoonce.go b/internal/schema/api/login/topinfoonce.go index 45dc9d9..08a12fa 100644 --- a/internal/schema/api/login/topinfoonce.go +++ b/internal/schema/api/login/topinfoonce.go @@ -1,4 +1,4 @@ -package login +package loginapischema type Notification struct { Push bool `json:"push"` diff --git a/internal/schema/api/marathon/info.go b/internal/schema/api/marathon/info.go index 83d03df..6b6ba0c 100644 --- a/internal/schema/api/marathon/info.go +++ b/internal/schema/api/marathon/info.go @@ -1,4 +1,4 @@ -package marathon +package marathonapischema type InfoResp struct { Result []any `json:"result"` diff --git a/internal/schema/api/multiunit/scenariostatus.go b/internal/schema/api/multiunit/scenariostatus.go index 2889f01..8251fb2 100644 --- a/internal/schema/api/multiunit/scenariostatus.go +++ b/internal/schema/api/multiunit/scenariostatus.go @@ -1,4 +1,4 @@ -package multiunit +package multiunitapischema type ChapterList struct { MultiUnitScenarioID int `json:"multi_unit_scenario_id"` diff --git a/internal/schema/api/museum/info.go b/internal/schema/api/museum/info.go index f19e2fb..ce06602 100644 --- a/internal/schema/api/museum/info.go +++ b/internal/schema/api/museum/info.go @@ -1,4 +1,4 @@ -package museum +package museumapischema type Parameter struct { Smile int `json:"smile"` diff --git a/internal/schema/api/navigation/specialcutin.go b/internal/schema/api/navigation/specialcutin.go index 54b4528..1b251d1 100644 --- a/internal/schema/api/navigation/specialcutin.go +++ b/internal/schema/api/navigation/specialcutin.go @@ -1,4 +1,4 @@ -package navigation +package navigationapischema type SpecialCutinData struct { SpecialCutinList []any `json:"special_cutin_list"` diff --git a/internal/schema/api/notice/marquee.go b/internal/schema/api/notice/marquee.go index d597faf..5a10026 100644 --- a/internal/schema/api/notice/marquee.go +++ b/internal/schema/api/notice/marquee.go @@ -1,4 +1,4 @@ -package notice +package noticeapischema type MarqueeData struct { ItemCount int `json:"item_count"` diff --git a/internal/schema/api/payment/productlist.go b/internal/schema/api/payment/productlist.go index 9f7cf49..f69763d 100644 --- a/internal/schema/api/payment/productlist.go +++ b/internal/schema/api/payment/productlist.go @@ -1,4 +1,4 @@ -package payment +package paymentapischema type RestrictionInfo struct { Restricted bool `json:"restricted"` @@ -84,7 +84,7 @@ type UserStatus struct { type SubscriptionStatus struct { LicenseID int `json:"license_id"` LicenseType int `json:"license_type"` - LicenseInfo LicenseInfo `json:"license_info,omitempty"` + LicenseInfo LicenseInfo `json:"license_info"` UserStatus UserStatus `json:"user_status"` PurchaseCount int `json:"purchase_count"` BadgeFlag bool `json:"badge_flag"` diff --git a/internal/schema/api/profile/cardranking.go b/internal/schema/api/profile/cardranking.go index a06965d..fb9baed 100644 --- a/internal/schema/api/profile/cardranking.go +++ b/internal/schema/api/profile/cardranking.go @@ -1,7 +1,14 @@ -package profile +package profileapischema + +type CardRankingData struct { + UnitID int `json:"unit_id"` + TotalLove int `json:"total_love"` + Rank int `json:"rank"` + SignFlag bool `json:"sign_flag"` +} type CardRankingResp struct { - Result []any `json:"result"` + Result any `json:"result"` Status int `json:"status"` CommandNum bool `json:"commandNum"` TimeStamp int64 `json:"timeStamp"` diff --git a/internal/schema/api/profile/info.go b/internal/schema/api/profile/info.go index a53faab..f6c5dfb 100644 --- a/internal/schema/api/profile/info.go +++ b/internal/schema/api/profile/info.go @@ -1,4 +1,4 @@ -package profile +package profileapischema type UnitData struct { UnitOwningUserID int `xorm:"unit_owning_user_id pk autoincr" json:"unit_owning_user_id"` diff --git a/internal/schema/api/profile/livecnt.go b/internal/schema/api/profile/livecnt.go index 8c35e0b..6aae695 100644 --- a/internal/schema/api/profile/livecnt.go +++ b/internal/schema/api/profile/livecnt.go @@ -1,4 +1,4 @@ -package profile +package profileapischema type LiveCntData struct { Difficulty int `json:"difficulty"` diff --git a/internal/schema/api/scenario/status.go b/internal/schema/api/scenario/status.go index ffff05e..a246c98 100644 --- a/internal/schema/api/scenario/status.go +++ b/internal/schema/api/scenario/status.go @@ -1,4 +1,4 @@ -package scenario +package scenarioapischema type StatusList struct { ScenarioID int `json:"scenario_id"` diff --git a/internal/schema/api/subscenario/status.go b/internal/schema/api/subscenario/status.go index 1a5486b..86a71e5 100644 --- a/internal/schema/api/subscenario/status.go +++ b/internal/schema/api/subscenario/status.go @@ -1,4 +1,4 @@ -package subscenario +package subscenarioapischema type StatusList struct { SubscenarioID int `json:"subscenario_id"` diff --git a/internal/schema/api/unit/accessoryall.go b/internal/schema/api/unit/accessoryall.go index 1773f94..8dedf2c 100644 --- a/internal/schema/api/unit/accessoryall.go +++ b/internal/schema/api/unit/accessoryall.go @@ -1,4 +1,4 @@ -package unit +package unitapischema type AccessoryList struct { AccessoryOwningUserID int `json:"accessory_owning_user_id" xorm:"accessory_owning_user_id"` diff --git a/internal/schema/api/unit/accessorymaterialall.go b/internal/schema/api/unit/accessorymaterialall.go new file mode 100644 index 0000000..7dcabcb --- /dev/null +++ b/internal/schema/api/unit/accessorymaterialall.go @@ -0,0 +1,17 @@ +package unitapischema + +type AccessoryMaterialList struct { + AccessoryID int `json:"accessory_id"` + Amount int `json:"amount"` +} + +type AccessoryMaterialAllData struct { + AccessoryMaterialList []AccessoryMaterialList `json:"accessory_material_list"` +} + +type AccessoryMaterialAllResp struct { + Result AccessoryMaterialAllData `json:"result"` + Status int `json:"status"` + CommandNum bool `json:"commandNum"` + TimeStamp int64 `json:"timeStamp"` +} diff --git a/internal/schema/api/unit/accessorytab.go b/internal/schema/api/unit/accessorytab.go new file mode 100644 index 0000000..108a12d --- /dev/null +++ b/internal/schema/api/unit/accessorytab.go @@ -0,0 +1,22 @@ +package unitapischema + +type AssetList struct { + UnitTypeID int `json:"unit_type_id"` + AssetPath string `json:"asset_path"` +} + +type TabList struct { + TabName string `json:"tab_name"` + AssetList []AssetList `json:"asset_list"` +} + +type AccessoryTabData struct { + TabList []TabList `json:"tab_list"` +} + +type AccessoryTabResp struct { + Result AccessoryTabData `json:"result"` + Status int `json:"status"` + CommandNum bool `json:"commandNum"` + TimeStamp int64 `json:"timeStamp"` +} diff --git a/internal/schema/api/unit/all.go b/internal/schema/api/unit/all.go index 2d58003..7e0ae31 100644 --- a/internal/schema/api/unit/all.go +++ b/internal/schema/api/unit/all.go @@ -1,4 +1,4 @@ -package unit +package unitapischema type Costume struct { UnitID int `json:"unit_id"` diff --git a/internal/schema/api/unit/deckinfo.go b/internal/schema/api/unit/deckinfo.go index a434b0a..1059811 100644 --- a/internal/schema/api/unit/deckinfo.go +++ b/internal/schema/api/unit/deckinfo.go @@ -1,4 +1,4 @@ -package unit +package unitapischema type UserDeckData struct { ID int `xorm:"id pk autoincr"` @@ -26,7 +26,7 @@ type UnitDeckData struct { IsSigned bool `xorm:"is_signed" json:"is_signed"` BeforeLove int `xorm:"before_love" json:"before_love"` MaxLove int `xorm:"max_love" json:"max_love"` - InsertData int64 `xorm:"insert_date" json:"-"` + InsertDate int64 `xorm:"insert_date" json:"-"` } type UnitOwningUserIds struct { diff --git a/internal/schema/api/unit/removableskillinfo.go b/internal/schema/api/unit/removableskillinfo.go index 8ed7891..da98dd4 100644 --- a/internal/schema/api/unit/removableskillinfo.go +++ b/internal/schema/api/unit/removableskillinfo.go @@ -1,4 +1,4 @@ -package unit +package unitapischema type SkillEquipCount struct { UnitRemovableSkillId int `xorm:"unit_removable_skill_id"` diff --git a/internal/schema/api/unit/supporterall.go b/internal/schema/api/unit/supporterall.go index 40947a5..b7acb27 100644 --- a/internal/schema/api/unit/supporterall.go +++ b/internal/schema/api/unit/supporterall.go @@ -1,4 +1,4 @@ -package unit +package unitapischema type SupporterList struct { UnitID int `json:"unit_id"` diff --git a/internal/schema/api/user/getnavi.go b/internal/schema/api/user/getnavi.go index 73f3b06..c03517f 100644 --- a/internal/schema/api/user/getnavi.go +++ b/internal/schema/api/user/getnavi.go @@ -1,4 +1,4 @@ -package user +package userapischema type User struct { UserID int `json:"user_id"` diff --git a/internal/schema/api/user/info.go b/internal/schema/api/user/info.go index ee85867..7d82629 100644 --- a/internal/schema/api/user/info.go +++ b/internal/schema/api/user/info.go @@ -1,44 +1,10 @@ -package user +package userapischema -type LpRecoveryItem struct { - ItemID int `json:"item_id"` - Amount int `json:"amount"` -} - -type UserInfo struct { - UserID int `json:"user_id"` - Name string `json:"name"` - Level int `json:"level"` - Exp int `json:"exp"` - PreviousExp int `json:"previous_exp"` - NextExp int `json:"next_exp"` - GameCoin int `json:"game_coin"` - SnsCoin int `json:"sns_coin"` - FreeSnsCoin int `json:"free_sns_coin"` - PaidSnsCoin int `json:"paid_sns_coin"` - SocialPoint int `json:"social_point"` - UnitMax int `json:"unit_max"` - WaitingUnitMax int `json:"waiting_unit_max"` - EnergyMax int `json:"energy_max"` - EnergyFullTime string `json:"energy_full_time"` - LicenseLiveEnergyRecoverlyTime int `json:"license_live_energy_recoverly_time"` - EnergyFullNeedTime int `json:"energy_full_need_time"` - OverMaxEnergy int `json:"over_max_energy"` - TrainingEnergy int `json:"training_energy"` - TrainingEnergyMax int `json:"training_energy_max"` - FriendMax int `json:"friend_max"` - InviteCode string `json:"invite_code"` - InsertDate string `json:"insert_date"` - UpdateDate string `json:"update_date"` - TutorialState int `json:"tutorial_state"` - DiamondCoin int `json:"diamond_coin"` - CrystalCoin int `json:"crystal_coin"` - LpRecoveryItem []LpRecoveryItem `json:"lp_recovery_item"` -} +import userschema "honoka-chan/internal/schema/user" type InfoResp struct { - Result UserInfo `json:"result"` - Status int `json:"status"` - CommandNum bool `json:"commandNum"` - TimeStamp int64 `json:"timeStamp"` + Result userschema.UserInfo `json:"result"` + Status int `json:"status"` + CommandNum bool `json:"commandNum"` + TimeStamp int64 `json:"timeStamp"` } diff --git a/internal/schema/award/set.go b/internal/schema/award/set.go index f70b6e8..99fa510 100644 --- a/internal/schema/award/set.go +++ b/internal/schema/award/set.go @@ -1,4 +1,4 @@ -package award +package awardschema type SetResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/background/set.go b/internal/schema/background/set.go index 9b4be09..3c50d6f 100644 --- a/internal/schema/background/set.go +++ b/internal/schema/background/set.go @@ -1,4 +1,4 @@ -package background +package backgroundschema type SetResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/download/additional.go b/internal/schema/download/additional.go index 4fe32f9..446cc82 100644 --- a/internal/schema/download/additional.go +++ b/internal/schema/download/additional.go @@ -1,4 +1,4 @@ -package download +package downloadschema type AdditionalReq struct { Module string `json:"module"` diff --git a/internal/schema/download/batch.go b/internal/schema/download/batch.go index ea440cf..e5dd57d 100644 --- a/internal/schema/download/batch.go +++ b/internal/schema/download/batch.go @@ -1,4 +1,4 @@ -package download +package downloadschema type BatchReq struct { ClientVersion string `json:"client_version"` diff --git a/internal/schema/download/event.go b/internal/schema/download/event.go index e8fb6c7..87d56ca 100644 --- a/internal/schema/download/event.go +++ b/internal/schema/download/event.go @@ -1,4 +1,4 @@ -package download +package downloadschema type EventResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/download/update.go b/internal/schema/download/update.go index 8e9b61c..5d96bdb 100644 --- a/internal/schema/download/update.go +++ b/internal/schema/download/update.go @@ -1,4 +1,4 @@ -package download +package downloadschema type UpdateReq struct { Module string `json:"module"` diff --git a/internal/schema/download/url.go b/internal/schema/download/url.go index 120515c..190e890 100644 --- a/internal/schema/download/url.go +++ b/internal/schema/download/url.go @@ -1,4 +1,4 @@ -package download +package downloadschema type UrlReq struct { Module string `json:"module"` diff --git a/internal/schema/event/list.go b/internal/schema/event/list.go index 634bc58..cc46c0c 100644 --- a/internal/schema/event/list.go +++ b/internal/schema/event/list.go @@ -1,4 +1,4 @@ -package event +package eventschema type TargetList struct { Position int `json:"position"` diff --git a/internal/schema/gdpr/get.go b/internal/schema/gdpr/get.go index 08096a4..f7a7bb6 100644 --- a/internal/schema/gdpr/get.go +++ b/internal/schema/gdpr/get.go @@ -1,4 +1,4 @@ -package gdpr +package gdprschema type GetData struct { EnableGdpr bool `json:"enable_gdpr"` diff --git a/internal/schema/ghome/account.go b/internal/schema/ghome/account.go index 994b1b2..f035993 100644 --- a/internal/schema/ghome/account.go +++ b/internal/schema/ghome/account.go @@ -1,4 +1,4 @@ -package ghome +package ghomeschema type ActiveData struct { Message string `json:"message"` diff --git a/internal/schema/ghome/basic.go b/internal/schema/ghome/basic.go index 5a63354..f567ca4 100644 --- a/internal/schema/ghome/basic.go +++ b/internal/schema/ghome/basic.go @@ -1,4 +1,4 @@ -package ghome +package ghomeschema type GetCodeResp struct { Code int `json:"code"` diff --git a/internal/schema/ghome/guest.go b/internal/schema/ghome/guest.go index 718d3ec..d893b2c 100644 --- a/internal/schema/ghome/guest.go +++ b/internal/schema/ghome/guest.go @@ -1,4 +1,4 @@ -package ghome +package ghomeschema type GuestStatusData struct { Disablead int `json:"disablead"` diff --git a/internal/schema/ghome/misc.go b/internal/schema/ghome/misc.go index bfd6093..edab676 100644 --- a/internal/schema/ghome/misc.go +++ b/internal/schema/ghome/misc.go @@ -1,4 +1,4 @@ -package ghome +package ghomeschema type AgreementData struct { } diff --git a/internal/schema/lbonus/execute.go b/internal/schema/lbonus/execute.go index 2a54da3..d14d1c3 100644 --- a/internal/schema/lbonus/execute.go +++ b/internal/schema/lbonus/execute.go @@ -1,4 +1,4 @@ -package lbonus +package lbonusschema type Item struct { ItemID int `json:"item_id"` diff --git a/internal/schema/live/continue.go b/internal/schema/live/continue.go new file mode 100644 index 0000000..5da9a34 --- /dev/null +++ b/internal/schema/live/continue.go @@ -0,0 +1,13 @@ +package liveschema + +type ContinueData struct { + BeforeSnsCoin int `json:"before_sns_coin"` + AfterSnsCoin int `json:"after_sns_coin"` + ServerTimestamp int64 `json:"server_timestamp"` +} + +type ContinueResp struct { + ResponseData ContinueData `json:"response_data"` + ReleaseInfo []any `json:"release_info"` + StatusCode int `json:"status_code"` +} diff --git a/internal/schema/live/gameover.go b/internal/schema/live/gameover.go index b5efd81..3112d10 100644 --- a/internal/schema/live/gameover.go +++ b/internal/schema/live/gameover.go @@ -1,4 +1,4 @@ -package live +package liveschema type GameOverResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/live/partylist.go b/internal/schema/live/partylist.go new file mode 100644 index 0000000..0a736eb --- /dev/null +++ b/internal/schema/live/partylist.go @@ -0,0 +1,55 @@ +package liveschema + +import userschema "honoka-chan/internal/schema/user" + +type CenterUnitInfo struct { + UnitOwningUserID int `json:"unit_owning_user_id"` + UnitID int `json:"unit_id"` + Exp int `json:"exp"` + NextExp int `json:"next_exp"` + Level int `json:"level"` + LevelLimitID int `json:"level_limit_id"` + MaxLevel int `json:"max_level"` + Rank int `json:"rank"` + MaxRank int `json:"max_rank"` + Love int `json:"love"` + MaxLove int `json:"max_love"` + UnitSkillLevel int `json:"unit_skill_level"` + MaxHp int `json:"max_hp"` + FavoriteFlag bool `json:"favorite_flag"` + DisplayRank int `json:"display_rank"` + UnitSkillExp int `json:"unit_skill_exp"` + UnitRemovableSkillCapacity int `json:"unit_removable_skill_capacity"` + Attribute int `json:"attribute"` + Smile int `json:"smile"` + Cute int `json:"cute"` + Cool int `json:"cool"` + IsLoveMax bool `json:"is_love_max"` + IsLevelMax bool `json:"is_level_max"` + IsRankMax bool `json:"is_rank_max"` + IsSigned bool `json:"is_signed"` + IsSkillLevelMax bool `json:"is_skill_level_max"` + SettingAwardID int `json:"setting_award_id"` + RemovableSkillIds []int `json:"removable_skill_ids"` +} + +type PartyList struct { + UserInfo userschema.UserInfo `json:"user_info"` + CenterUnitInfo CenterUnitInfo `json:"center_unit_info"` + SettingAwardID int `json:"setting_award_id"` + AvailableSocialPoint int `json:"available_social_point"` + FriendStatus int `json:"friend_statuses"` +} + +type PartyListData struct { + PartyList []PartyList `json:"party_list"` + TrainingEnergy int `json:"training_energy"` + TrainingEnergyMax int `json:"training_energy_max"` + ServerTimestamp int64 `json:"server_timestamp"` +} + +type PartyListResp struct { + ResponseData PartyListData `json:"response_data"` + ReleaseInfo []any `json:"release_info"` + StatusCode int `json:"status_code"` +} diff --git a/internal/schema/live/play.go b/internal/schema/live/play.go index dac4b14..1e415fc 100644 --- a/internal/schema/live/play.go +++ b/internal/schema/live/play.go @@ -1,4 +1,4 @@ -package live +package liveschema type PlayReq struct { Module string `json:"module"` @@ -31,6 +31,14 @@ type NotesList struct { type LiveInfo struct { LiveDifficultyID int `json:"live_difficulty_id"` IsRandom bool `json:"is_random"` + ARankScore int `json:"-"` + BRankScore int `json:"-"` + CRankScore int `json:"-"` + SRankScore int `json:"-"` + ARankCombo int `json:"-"` + BRankCombo int `json:"-"` + CRankCombo int `json:"-"` + SRankCombo int `json:"-"` AcFlag int `json:"ac_flag"` SwingFlag int `json:"swing_flag"` NotesList []NotesList `json:"notes_list"` diff --git a/internal/schema/live/precisescore.go b/internal/schema/live/precisescore.go index b24e70b..0c271f9 100644 --- a/internal/schema/live/precisescore.go +++ b/internal/schema/live/precisescore.go @@ -1,4 +1,4 @@ -package live +package liveschema type PlayScoreReq struct { Module string `json:"module"` @@ -18,7 +18,9 @@ type On struct { PreciseList any `json:"precise_list"` DeckInfo any `json:"deck_info"` TapAdjust any `json:"tap_adjust"` + LiveSetting any `json:"live_setting,omitempty"` CanReplay bool `json:"can_replay"` + TriggerLog any `json:"trigger_log,omitempty"` } type Off struct { @@ -30,19 +32,35 @@ type Off struct { PreciseList any `json:"precise_list"` DeckInfo any `json:"deck_info"` TapAdjust any `json:"tap_adjust"` + LiveSetting any `json:"live_setting,omitempty"` CanReplay bool `json:"can_replay"` + TriggerLog any `json:"trigger_log,omitempty"` +} + +type Skill struct { + HasRecord bool `json:"has_record"` + LiveInfo LiveInfo `json:"live_info"` + RandomSeed any `json:"random_seed"` + MaxCombo any `json:"max_combo"` + UpdateDate any `json:"update_date"` + PreciseList any `json:"precise_list"` + DeckInfo any `json:"deck_info"` + TapAdjust any `json:"tap_adjust"` + LiveSetting any `json:"live_setting,omitempty"` + CanReplay bool `json:"can_replay"` + TriggerLog any `json:"trigger_log,omitempty"` } type PreciseScoreData struct { - On On `json:"on"` - Off Off `json:"off"` + On Skill `json:"on"` + Off Skill `json:"off"` RankInfo []RankInfo `json:"rank_info"` CanActivateEffect bool `json:"can_activate_effect"` ServerTimestamp int64 `json:"server_timestamp"` } type PreciseScoreResp struct { - ResponseData PreciseScoreData `json:"response_data"` - ReleaseInfo []any `json:"release_info"` - StatusCode int `json:"status_code"` + ResponseData any `json:"response_data"` + ReleaseInfo []any `json:"release_info"` + StatusCode int `json:"status_code"` } diff --git a/internal/schema/live/reward.go b/internal/schema/live/reward.go index bece48f..b89e412 100644 --- a/internal/schema/live/reward.go +++ b/internal/schema/live/reward.go @@ -1,4 +1,9 @@ -package live +package liveschema + +import ( + "honoka-chan/internal/constant" + userschema "honoka-chan/internal/schema/user" +) type RewardReq struct { Module string `json:"module"` @@ -31,26 +36,31 @@ type Icon struct { } type LiveSetting struct { - StringSize int `json:"string_size"` - PreciseScoreAutoUpdateFlag bool `json:"precise_score_auto_update_flag"` - SeID int `json:"se_id"` - CutinBrightness int `json:"cutin_brightness"` - RandomValue int `json:"random_value"` - PreciseScoreUpdateType int `json:"precise_score_update_type"` - EffectFlag bool `json:"effect_flag"` - NotesSpeed float64 `json:"notes_speed"` - Icon Icon `json:"icon"` - CutinType int `json:"cutin_type"` + StringSize int `json:"string_size"` + PreciseScoreAutoUpdateFlag bool `json:"precise_score_auto_update_flag"` + SeID int `json:"se_id"` + CutinBrightness int `json:"cutin_brightness"` + RandomValue int `json:"random_value"` + PreciseScoreUpdateType constant.PreciseScoreUpdateType `json:"precise_score_update_type"` + EffectFlag bool `json:"effect_flag"` + NotesSpeed float64 `json:"notes_speed"` + Icon Icon `json:"icon"` + CutinType int `json:"cutin_type"` + BackgroundID any `json:"background_id"` } type PreciseList struct { - Effect int `json:"effect"` Count int `json:"count"` - Tap float64 `json:"tap"` - NoteNumber int `json:"note_number"` - Position int `json:"position"` + Effect int `json:"effect"` Accuracy int `json:"accuracy"` + Tap float64 `json:"tap"` IsSame bool `json:"is_same"` + Release any `json:"release"` + Position int `json:"position"` + NoteNumber int `json:"note_number"` + FirstTouch any `json:"first_touch"` + Tp any `json:"tp"` + Tpf any `json:"tpf"` } type BackgroundScore struct { @@ -208,56 +218,6 @@ type PlayRewardUnitList struct { InsertData int64 `xorm:"insert_date" json:"-"` } -type BeforeUserInfo struct { - Level int `json:"level"` - Exp int `json:"exp"` - PreviousExp int `json:"previous_exp"` - NextExp int `json:"next_exp"` - GameCoin int `json:"game_coin"` - SnsCoin int `json:"sns_coin"` - FreeSnsCoin int `json:"free_sns_coin"` - PaidSnsCoin int `json:"paid_sns_coin"` - SocialPoint int `json:"social_point"` - UnitMax int `json:"unit_max"` - WaitingUnitMax int `json:"waiting_unit_max"` - CurrentEnergy int `json:"current_energy"` - EnergyMax int `json:"energy_max"` - TrainingEnergy int `json:"training_energy"` - TrainingEnergyMax int `json:"training_energy_max"` - EnergyFullTime string `json:"energy_full_time"` - LicenseLiveEnergyRecoverlyTime int `json:"license_live_energy_recoverly_time"` - FriendMax int `json:"friend_max"` - TutorialState int `json:"tutorial_state"` - OverMaxEnergy int `json:"over_max_energy"` - UnlockRandomLiveMuse int `json:"unlock_random_live_muse"` - UnlockRandomLiveAqours int `json:"unlock_random_live_aqours"` -} - -type AfterUserInfo struct { - Level int `json:"level"` - Exp int `json:"exp"` - PreviousExp int `json:"previous_exp"` - NextExp int `json:"next_exp"` - GameCoin int `json:"game_coin"` - SnsCoin int `json:"sns_coin"` - FreeSnsCoin int `json:"free_sns_coin"` - PaidSnsCoin int `json:"paid_sns_coin"` - SocialPoint int `json:"social_point"` - UnitMax int `json:"unit_max"` - WaitingUnitMax int `json:"waiting_unit_max"` - CurrentEnergy int `json:"current_energy"` - EnergyMax int `json:"energy_max"` - TrainingEnergy int `json:"training_energy"` - TrainingEnergyMax int `json:"training_energy_max"` - EnergyFullTime string `json:"energy_full_time"` - LicenseLiveEnergyRecoverlyTime int `json:"license_live_energy_recoverly_time"` - FriendMax int `json:"friend_max"` - TutorialState int `json:"tutorial_state"` - OverMaxEnergy int `json:"over_max_energy"` - UnlockRandomLiveMuse int `json:"unlock_random_live_muse"` - UnlockRandomLiveAqours int `json:"unlock_random_live_aqours"` -} - type NextLevelInfo struct { Level int `json:"level"` FromExp int `json:"from_exp"` @@ -335,8 +295,8 @@ type RewardData struct { IsEffortPointVisible bool `json:"is_effort_point_visible"` LimitedEffortBox []any `json:"limited_effort_box"` UnitList []PlayRewardUnitList `json:"unit_list"` - BeforeUserInfo BeforeUserInfo `json:"before_user_info"` - AfterUserInfo AfterUserInfo `json:"after_user_info"` + BeforeUserInfo userschema.UserInfo `json:"before_user_info"` + AfterUserInfo userschema.UserInfo `json:"after_user_info"` NextLevelInfo []NextLevelInfo `json:"next_level_info"` GoalAccompInfo GoalAccompInfo `json:"goal_accomp_info"` SpecialRewardInfo []any `json:"special_reward_info"` diff --git a/internal/schema/login/authkey.go b/internal/schema/login/authkey.go index 1fb9264..f1c33b5 100644 --- a/internal/schema/login/authkey.go +++ b/internal/schema/login/authkey.go @@ -1,4 +1,4 @@ -package login +package loginschema type AuthKeyData struct { AuthorizeToken string `json:"authorize_token"` diff --git a/internal/schema/login/login.go b/internal/schema/login/login.go index caf39f4..532b2b8 100644 --- a/internal/schema/login/login.go +++ b/internal/schema/login/login.go @@ -1,4 +1,4 @@ -package login +package loginschema type LoginData struct { AuthorizeToken string `json:"authorize_token"` diff --git a/internal/schema/multiunit/scenariostartup.go b/internal/schema/multiunit/scenariostartup.go index ec30c4a..27fb95a 100644 --- a/internal/schema/multiunit/scenariostartup.go +++ b/internal/schema/multiunit/scenariostartup.go @@ -1,4 +1,4 @@ -package multiunit +package multiunitschema type ScenarioStartUpReq struct { Module string `json:"module"` diff --git a/internal/schema/museum/info.go b/internal/schema/museum/info.go index e170521..eb4ab1a 100644 --- a/internal/schema/museum/info.go +++ b/internal/schema/museum/info.go @@ -1,4 +1,4 @@ -package museum +package museumschema type Parameter struct { Smile int `json:"smile"` diff --git a/internal/schema/notice/friendgreeting.go b/internal/schema/notice/friendgreeting.go index 2bb1972..8ce117f 100644 --- a/internal/schema/notice/friendgreeting.go +++ b/internal/schema/notice/friendgreeting.go @@ -1,4 +1,4 @@ -package notice +package noticeschema type FriendGreetingData struct { NextId int `json:"next_id"` diff --git a/internal/schema/notice/friendvariety.go b/internal/schema/notice/friendvariety.go index ab08a93..677874c 100644 --- a/internal/schema/notice/friendvariety.go +++ b/internal/schema/notice/friendvariety.go @@ -1,4 +1,4 @@ -package notice +package noticeschema type FriendVarietyData struct { ItemCount int `json:"item_count"` diff --git a/internal/schema/notice/usergreetinghistory.go b/internal/schema/notice/usergreetinghistory.go index 76620e4..c84d9ab 100644 --- a/internal/schema/notice/usergreetinghistory.go +++ b/internal/schema/notice/usergreetinghistory.go @@ -1,4 +1,4 @@ -package notice +package noticeschema type UserGreetingData struct { ItemCount int `json:"item_count"` diff --git a/internal/schema/payment/productlist.go b/internal/schema/payment/productlist.go index 97edcce..21fbd23 100644 --- a/internal/schema/payment/productlist.go +++ b/internal/schema/payment/productlist.go @@ -1,15 +1,15 @@ -package payment +package paymentschema -import "honoka-chan/internal/schema/api/payment" +import paymentapischema "honoka-chan/internal/schema/api/payment" type ProductListData struct { - RestrictionInfo payment.RestrictionInfo `json:"restriction_info"` - UnderAgeInfo payment.UnderAgeInfo `json:"under_age_info"` - SnsProductList []any `json:"sns_product_list"` - ProductList []any `json:"product_list"` - SubscriptionList []any `json:"subscription_list"` - ShowPointShop bool `json:"show_point_shop"` - ServerTimestamp int64 `json:"server_timestamp"` + RestrictionInfo paymentapischema.RestrictionInfo `json:"restriction_info"` + UnderAgeInfo paymentapischema.UnderAgeInfo `json:"under_age_info"` + SnsProductList []any `json:"sns_product_list"` + ProductList []any `json:"product_list"` + SubscriptionList []any `json:"subscription_list"` + ShowPointShop bool `json:"show_point_shop"` + ServerTimestamp int64 `json:"server_timestamp"` } type ProductListResp struct { diff --git a/internal/schema/personalnotice/get.go b/internal/schema/personalnotice/get.go index 37c43cd..d30d5dc 100644 --- a/internal/schema/personalnotice/get.go +++ b/internal/schema/personalnotice/get.go @@ -1,4 +1,4 @@ -package personalnotice +package personalnoticeschema type GetData struct { HasNotice bool `json:"has_notice"` diff --git a/internal/schema/profile/register.go b/internal/schema/profile/register.go index 8f339f0..b03ebba 100644 --- a/internal/schema/profile/register.go +++ b/internal/schema/profile/register.go @@ -1,4 +1,4 @@ -package profile +package profileschema type RegisterResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/scenario/startup.go b/internal/schema/scenario/startup.go index c99925f..fb49e23 100644 --- a/internal/schema/scenario/startup.go +++ b/internal/schema/scenario/startup.go @@ -1,4 +1,4 @@ -package scenario +package scenarioschema type StartUpReq struct { Module string `json:"module"` diff --git a/internal/schema/subscenario/startup.go b/internal/schema/subscenario/startup.go index 01eeb8c..44a3d5c 100644 --- a/internal/schema/subscenario/startup.go +++ b/internal/schema/subscenario/startup.go @@ -1,4 +1,4 @@ -package subscenario +package subscenarioschema type StartUpReq struct { Module string `json:"module"` diff --git a/internal/schema/tos/check.go b/internal/schema/tos/check.go index 01bcadf..ddaf1be 100644 --- a/internal/schema/tos/check.go +++ b/internal/schema/tos/check.go @@ -1,4 +1,4 @@ -package tos +package tosschema type CheckData struct { TosID int `json:"tos_id"` diff --git a/internal/schema/unit/deck.go b/internal/schema/unit/deck.go index 3a0e422..754f250 100644 --- a/internal/schema/unit/deck.go +++ b/internal/schema/unit/deck.go @@ -1,4 +1,4 @@ -package unit +package unitschema type UnitDeckDetail struct { Position int `json:"position"` diff --git a/internal/schema/unit/deckname.go b/internal/schema/unit/deckname.go index 9e78c53..9eff9ae 100644 --- a/internal/schema/unit/deckname.go +++ b/internal/schema/unit/deckname.go @@ -1,4 +1,4 @@ -package unit +package unitschema type DeckNameReq struct { Module string `json:"module"` diff --git a/internal/schema/unit/favorite.go b/internal/schema/unit/favorite.go index 8af1193..802baa6 100644 --- a/internal/schema/unit/favorite.go +++ b/internal/schema/unit/favorite.go @@ -1,4 +1,14 @@ -package unit +package unitschema + +type FavoriteReq struct { + Module string `json:"module"` + Action string `json:"action"` + TimeStamp int64 `json:"timeStamp"` + Mgd int `json:"mgd"` + FavoriteFlag int `json:"favorite_flag"` + UnitOwningUserID int `json:"unit_owning_user_id"` + CommandNum string `json:"commandNum"` +} type FavoriteResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/unit/removableskillequipment.go b/internal/schema/unit/removableskillequipment.go index 761319a..6e87686 100644 --- a/internal/schema/unit/removableskillequipment.go +++ b/internal/schema/unit/removableskillequipment.go @@ -1,4 +1,4 @@ -package unit +package unitschema type SkillRemove struct { UnitRemovableSkillID int `json:"unit_removable_skill_id"` diff --git a/internal/schema/unit/sale.go b/internal/schema/unit/sale.go new file mode 100644 index 0000000..913a71d --- /dev/null +++ b/internal/schema/unit/sale.go @@ -0,0 +1,48 @@ +package unitschema + +import userschema "honoka-chan/internal/schema/user" + +type SaleReq struct { + Module string `json:"module"` + Action string `json:"action"` + TimeStamp int `json:"timeStamp"` + Mgd int `json:"mgd"` + UnitSupportList []any `json:"unit_support_list"` + UnitOwningUserID []int `json:"unit_owning_user_id"` + CommandNum string `json:"commandNum"` +} + +type Detail struct { + UnitOwningUserID int `json:"unit_owning_user_id"` + UnitID int `json:"unit_id"` + IsSigned bool `json:"is_signed"` + Price int `json:"price"` +} + +type OwningInfo struct { + UnitRemovableSkillID int `json:"unit_removable_skill_id"` + TotalAmount int `json:"total_amount"` + EquippedAmount int `json:"equipped_amount"` + InsertDate string `json:"insert_date"` +} + +type UnitRemovableSkill struct { + OwningInfo []OwningInfo `json:"owning_info"` +} + +type SaleData struct { + Total int `json:"total"` + Detail []Detail `json:"detail"` + BeforeUserInfo userschema.UserInfo `json:"before_user_info"` + AfterUserInfo userschema.UserInfo `json:"after_user_info"` + RewardBoxFlag bool `json:"reward_box_flag"` + GetExchangePointList []any `json:"get_exchange_point_list"` + UnitRemovableSkill UnitRemovableSkill `json:"unit_removable_skill"` + ServerTimestamp int64 `json:"server_timestamp"` +} + +type SaleResp struct { + ResponseData SaleData `json:"response_data"` + ReleaseInfo []any `json:"release_info"` + StatusCode int `json:"status_code"` +} diff --git a/internal/schema/unit/setdisplayrank.go b/internal/schema/unit/setdisplayrank.go index 2c9c542..24dc477 100644 --- a/internal/schema/unit/setdisplayrank.go +++ b/internal/schema/unit/setdisplayrank.go @@ -1,4 +1,14 @@ -package unit +package unitschema + +type SetDisplayRankReq struct { + Module string `json:"module"` + Action string `json:"action"` + TimeStamp int64 `json:"timeStamp"` + Mgd int `json:"mgd"` + UnitOwningUserID int `json:"unit_owning_user_id"` + DisplayRank int `json:"display_rank"` + CommandNum string `json:"commandNum"` +} type SetDisplayRankResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/unit/wearaccessory.go b/internal/schema/unit/wearaccessory.go index e12debd..6edd896 100644 --- a/internal/schema/unit/wearaccessory.go +++ b/internal/schema/unit/wearaccessory.go @@ -1,4 +1,4 @@ -package unit +package unitschema type AccessoryRemove struct { AccessoryOwningUserID int `json:"accessory_owning_user_id"` diff --git a/internal/schema/user/changename.go b/internal/schema/user/changename.go index 0c3f5e5..143bce0 100644 --- a/internal/schema/user/changename.go +++ b/internal/schema/user/changename.go @@ -1,4 +1,4 @@ -package user +package userschema type ChangeNameData struct { BeforeName string `json:"before_name"` diff --git a/internal/schema/user/changenavi.go b/internal/schema/user/changenavi.go index 58259da..9baf287 100644 --- a/internal/schema/user/changenavi.go +++ b/internal/schema/user/changenavi.go @@ -1,4 +1,4 @@ -package user +package userschema type ChangeNaviResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/user/setnotificationtoken.go b/internal/schema/user/setnotificationtoken.go index c390276..eddc4b2 100644 --- a/internal/schema/user/setnotificationtoken.go +++ b/internal/schema/user/setnotificationtoken.go @@ -1,4 +1,4 @@ -package user +package userschema type SetNotificationTokenResp struct { ResponseData []any `json:"response_data"` diff --git a/internal/schema/user/userinfo.go b/internal/schema/user/userinfo.go index fb1fa10..9a35e63 100644 --- a/internal/schema/user/userinfo.go +++ b/internal/schema/user/userinfo.go @@ -1,6 +1,43 @@ -package user +package userschema -import "honoka-chan/internal/schema/api/user" +type LpRecoveryItem struct { + ItemID int `json:"item_id"` + Amount int `json:"amount"` +} + +type UserInfo struct { + UserID int `json:"user_id"` + Name string `json:"name"` + Level int `json:"level"` + Exp int `json:"exp"` + PreviousExp int `json:"previous_exp"` + NextExp int `json:"next_exp"` + GameCoin int `json:"game_coin"` + SnsCoin int `json:"sns_coin"` + FreeSnsCoin int `json:"free_sns_coin"` + PaidSnsCoin int `json:"paid_sns_coin"` + SocialPoint int `json:"social_point"` + UnitMax int `json:"unit_max"` + WaitingUnitMax int `json:"waiting_unit_max"` + CurrentEnergy int `json:"current_energy"` + EnergyMax int `json:"energy_max"` + EnergyFullTime string `json:"energy_full_time"` + LicenseLiveEnergyRecoverlyTime int `json:"license_live_energy_recoverly_time"` + EnergyFullNeedTime int `json:"energy_full_need_time"` + OverMaxEnergy int `json:"over_max_energy"` + TrainingEnergy int `json:"training_energy"` + TrainingEnergyMax int `json:"training_energy_max"` + FriendMax int `json:"friend_max"` + InviteCode string `json:"invite_code"` + InsertDate string `json:"insert_date"` + UpdateDate string `json:"update_date"` + TutorialState int `json:"tutorial_state"` + DiamondCoin int `json:"diamond_coin"` + CrystalCoin int `json:"crystal_coin"` + UnlockRandomLiveMuse int `json:"unlock_random_live_muse"` + UnlockRandomLiveAqours int `json:"unlock_random_live_aqours"` + // LpRecoveryItem []LpRecoveryItem `json:"lp_recovery_item"` +} type Birth struct { BirthMonth int `json:"birth_month"` @@ -8,9 +45,9 @@ type Birth struct { } type UserInfoData struct { - User user.UserInfo `json:"user"` - Birth Birth `json:"birth"` - ServerTimestamp int64 `json:"server_timestamp"` + User UserInfo `json:"user"` + Birth Birth `json:"birth"` + ServerTimestamp int64 `json:"server_timestamp"` } type UserInfoResp struct { diff --git a/internal/schema/webui/webui.go b/internal/schema/webui/webui.go index cea8d63..94d4cfc 100644 --- a/internal/schema/webui/webui.go +++ b/internal/schema/webui/webui.go @@ -1,4 +1,4 @@ -package webui +package webuischema type Msg struct { Code int `json:"code"` diff --git a/internal/session/accessory.go b/internal/session/accessory.go new file mode 100644 index 0000000..caddcc2 --- /dev/null +++ b/internal/session/accessory.go @@ -0,0 +1,53 @@ +package session + +import ( + accessorymodel "honoka-chan/internal/model/accessory" + usermodel "honoka-chan/internal/model/user" +) + +func (ss *Session) GetUserAccessoryWearByUnitOwningUserID(unitOwningUserID int) (bool, *usermodel.UserAccessoryWear) { + wearData := usermodel.UserAccessoryWear{} + has, err := ss.UserEng.Table(new(usermodel.UserAccessoryWear)). + Where("unit_owning_user_id = ?", unitOwningUserID).Get(&wearData) + if ss.CheckErr(err) { + return false, nil + } + + return has, &wearData +} + +func (ss *Session) GetAccessoryByAccessoryOwningUserID(accessoryOwningUserID int) (bool, *accessorymodel.Accessory) { + accessoryData := accessorymodel.Accessory{} + has, err := ss.MainEng.Table("common_accessory_m").Alias("a"). + Join("LEFT", "accessory_m", "a.accessory_id = accessory_m.accessory_id"). + Where("a.accessory_owning_user_id = ?", accessoryOwningUserID). + Cols("accessory_m.*,a.exp").Get(&accessoryData) + if ss.CheckErr(err) { + return false, nil + } + + return has, &accessoryData +} + +func (ss *Session) GetUserAccessoryInfoByUnitOwningUserID(unitOwningUserID int) (bool, *usermodel.AccessoryInfo) { + has, wearData := ss.GetUserAccessoryWearByUnitOwningUserID(unitOwningUserID) + if !has { + return false, nil + } + + has, accessoryData := ss.GetAccessoryByAccessoryOwningUserID(wearData.AccessoryOwningUserID) + if !has { + return false, nil + } + + return has, &usermodel.AccessoryInfo{ + AccessoryOwningUserID: wearData.AccessoryOwningUserID, + AccessoryID: accessoryData.AccessoryID, + Exp: accessoryData.Exp, + NextExp: 0, + Level: accessoryData.MaxLevel, + MaxLevel: accessoryData.MaxLevel, + RankUpCount: accessoryData.MaxLevel - accessoryData.DefaultMaxLevel, + FavoriteFlag: true, + } +} diff --git a/internal/session/deck.go b/internal/session/deck.go new file mode 100644 index 0000000..7ff6ff2 --- /dev/null +++ b/internal/session/deck.go @@ -0,0 +1,32 @@ +package session + +import ( + usermodel "honoka-chan/internal/model/user" +) + +func (ss *Session) GetUserDeck(deckID int) (bool, *usermodel.UserDeck) { + deckData := usermodel.UserDeck{} + has, err := ss.UserEng.Table("user_deck"). + Where("user_id = ? AND deck_id = ?", ss.UserID, deckID).Get(&deckData) + if ss.CheckErr(err) { + return false, nil + } + + return has, &deckData +} + +func (ss *Session) GetUserDeckUnit(deckID int) []usermodel.UserDeckUnit { + has, deckData := ss.GetUserDeck(deckID) + if !has { + return []usermodel.UserDeckUnit{} + } + + unitData := []usermodel.UserDeckUnit{} + err := ss.UserEng.Table("user_deck_unit"). + Where("user_deck_id = ?", deckData.ID).Find(&unitData) + if ss.CheckErr(err) { + return []usermodel.UserDeckUnit{} + } + + return unitData +} diff --git a/internal/session/ghome.go b/internal/session/ghome.go new file mode 100644 index 0000000..e70a6b8 --- /dev/null +++ b/internal/session/ghome.go @@ -0,0 +1,39 @@ +package session + +import ( + ghomemodel "honoka-chan/internal/model/ghome" +) + +func (ss *Session) GetDeviceID() string { + return ss.Ctx.Request.Header.Get("X-DEVICEID") +} + +func (ss *Session) GetRandKey() []byte { + deviceKey := ghomemodel.DeviceKey{} + has, err := ss.UserEng.Table(new(ghomemodel.DeviceKey)). + Where("device_id = ?", ss.GetDeviceID()).Get(&deviceKey) + if ss.CheckErr(err) { + return nil + } + + if !has { + return nil + } + + return []byte(deviceKey.RandKey) +} +func (ss *Session) SetRandKey(key string) { + var err error + if ss.GetRandKey() == nil { + _, err = ss.UserEng.Insert(&ghomemodel.DeviceKey{ + DeviceID: ss.GetDeviceID(), + RandKey: key, + }) + } else { + _, err = ss.UserEng.Table(new(ghomemodel.DeviceKey)). + Where("device_id = ?", ss.GetDeviceID()).Update(&ghomemodel.DeviceKey{RandKey: key}) + } + if ss.CheckErr(err) { + return + } +} diff --git a/internal/session/live.go b/internal/session/live.go new file mode 100644 index 0000000..6fc79b5 --- /dev/null +++ b/internal/session/live.go @@ -0,0 +1,215 @@ +package session + +import ( + "encoding/json" + "honoka-chan/internal/constant" + usermodel "honoka-chan/internal/model/user" + liveschema "honoka-chan/internal/schema/live" + "honoka-chan/pkg/utils" +) + +// Move from LevelDB to SQLite +// https://github.com/YumeMichi/honoka-chan/blob/a749efad9fd0789668dedcb59948248da369d32c/handler/live.go#L554 +// https://github.com/DarkEnergyProcessor/NPPS4/blob/29aaba6e7a3b4b80d414e58f4b511a9627cb0e24/npps4/system/live.py#L360 +func (ss *Session) GetLiveInProgress() (bool, *usermodel.UserLiveInProgress) { + progress := usermodel.UserLiveInProgress{} + has, err := ss.UserEng.Table(new(usermodel.UserLiveInProgress)). + Where("user_id = ?", ss.UserID).Get(&progress) + if ss.CheckErr(err) { + return false, nil + } + + return has, &progress +} + +// Move from LevelDB to SQLite +// https://github.com/YumeMichi/honoka-chan/blob/a749efad9fd0789668dedcb59948248da369d32c/handler/live.go#L45 +// https://github.com/DarkEnergyProcessor/NPPS4/blob/29aaba6e7a3b4b80d414e58f4b511a9627cb0e24/npps4/system/live.py#L372 +func (ss *Session) RegisterLiveInProgress(deckID int) { + var err error + has, progress := ss.GetLiveInProgress() + if has { + progress.DeckID = deckID + _, err = ss.UserEng.Table(new(usermodel.UserLiveInProgress)).ID(progress.ID).Update(progress) + } else { + progress = &usermodel.UserLiveInProgress{ + DeckID: deckID, + UserID: ss.UserID, + } + _, err = ss.UserEng.Table(new(usermodel.UserLiveInProgress)).Insert(progress) + } + if ss.CheckErr(err) { + return + } +} + +// Move from LevelDB to SQLite +// https://github.com/YumeMichi/honoka-chan/blob/a749efad9fd0789668dedcb59948248da369d32c/handler/live.go#L554 +// https://github.com/DarkEnergyProcessor/NPPS4/blob/29aaba6e7a3b4b80d414e58f4b511a9627cb0e24/npps4/system/live.py#L366 +func (ss *Session) ClearLiveInProgress() { + _, err := ss.UserEng.Table(new(usermodel.UserLiveInProgress)).Where("user_id = ?", ss.UserID).Delete() + if ss.CheckErr(err) { + return + } +} + +func (ss *Session) GetLiveInfo(LiveDifficultyID int) (bool, *liveschema.LiveInfo) { + var info struct { + LiveDifficultyID int `xorm:"live_difficulty_id"` + NotesSettingAsset string `xorm:"notes_setting_asset"` + ARankScore int `xorm:"a_rank_score"` + BRankScore int `xorm:"b_rank_score"` + CRankScore int `xorm:"c_rank_score"` + SRankScore int `xorm:"s_rank_score"` + ARankCombo int `xorm:"a_rank_combo"` + BRankCombo int `xorm:"b_rank_combo"` + CRankCombo int `xorm:"c_rank_combo"` + SRankCombo int `xorm:"s_rank_combo"` + AcFlag int `xorm:"ac_flag"` + SwingFlag int `xorm:"swing_flag"` + } + has, err := ss.MainEng.Table("special_live_m").Alias("a"). + Join("LEFT", "live_setting_m", "a.live_setting_id = live_setting_m.live_setting_id"). + Where("live_difficulty_id = ?", LiveDifficultyID). + Cols("a.live_difficulty_id,live_setting_m.*").Get(&info) + if ss.CheckErr(err) { + return false, nil + } + + if !has { + has, err = ss.MainEng.Table("special_live_m").Alias("a"). + Join("LEFT", "live_setting_m", "a.live_setting_id = live_setting_m.live_setting_id"). + Where("live_difficulty_id = ?", LiveDifficultyID). + Cols("a.live_difficulty_id,live_setting_m.*").Get(&info) + if ss.CheckErr(err) { + return false, nil + } + } + + var notesList []liveschema.NotesList + if has { + noteData := utils.ReadAllText("./assets/serverdata/beatmaps/" + info.NotesSettingAsset) + err = json.Unmarshal([]byte(noteData), ¬esList) + if ss.CheckErr(err) { + return false, nil + } + } + + return has, &liveschema.LiveInfo{ + LiveDifficultyID: info.LiveDifficultyID, + IsRandom: false, + ARankScore: info.ARankScore, + BRankScore: info.BRankScore, + CRankScore: info.CRankScore, + SRankScore: info.SRankScore, + ARankCombo: info.ARankCombo, + BRankCombo: info.BRankCombo, + CRankCombo: info.CRankCombo, + SRankCombo: info.SRankCombo, + AcFlag: info.AcFlag, + SwingFlag: info.SwingFlag, + NotesList: notesList, + } +} + +func (ss *Session) GetDeckInfo(deckID int) (bool, *usermodel.DeckInfo) { + // 卡片信息 + totalHp, totalSmile, totalCute, totalCool := 0, 0, 0, 0 + unitData := []usermodel.UnitList{} + units := ss.GetUserDeckUnit(deckID) + for _, u := range units { + _, uData := ss.GetUnitInfo(u.UnitID) + tempUnitData := usermodel.UnitList{ + UnitID: u.UnitID, + Position: u.Position, + Level: u.Level, + LevelLimitID: u.LevelLimitID, + DisplayRank: u.DisplayRank, + Love: u.MaxLove, + UnitSkillLevel: u.UnitSkillLevel, + IsRankMax: u.IsRankMax, + IsLoveMax: u.IsLoveMax, + IsLevelMax: u.IsLevelMax, + IsSigned: u.IsSigned, + Rank: uData.Rank, + MaxHp: uData.MaxHp, + UnitRemovableSkillCapacity: uData.UnitRemovableSkillCapacity, + TotalStatus: usermodel.TotalStatus{ + Hp: uData.MaxHp, + Smile: uData.Smile, + Cute: uData.Cute, + Cool: uData.Cool, + }, + SiBonus: usermodel.SiBonus{ + Hp: 0, + Smile: 0, + Cute: 0, + Cool: 0, + }, + } + + // 技能宝石信息 + skillData := ss.GetUserUnitSkillEquipID(u.UnitOwningUserID) + tempUnitData.RemovableSkillIds = skillData + + // 饰品信息 + has, accessoryData := ss.GetUserAccessoryInfoByUnitOwningUserID(u.UnitOwningUserID) + if has { + tempUnitData.AccessoryInfo = accessoryData + } + + // 其他属性 + totalHp += uData.MaxHp + totalSmile += uData.Smile + totalCute += uData.Cute + totalCool += uData.Cool + + unitData = append(unitData, tempUnitData) + } + + return true, &usermodel.DeckInfo{ + TotalStatus: usermodel.TotalStatus{ + Hp: totalHp, + Smile: totalSmile, + Cute: totalCute, + Cool: totalCool, + }, + CenterBonus: usermodel.CenterBonus{ // TODO: 计算C位加成 + Hp: 0, + Smile: 0, + Cute: 0, + Cool: 0, + }, + SiBonus: usermodel.SiBonus{ + Hp: 0, + Smile: 0, + Cute: 0, + Cool: 0, + }, + UnitList: unitData, + } +} + +func (ss *Session) GetLiveGoalList(LiveDifficultyID int) []constant.LiveGoalType { + var goal []constant.LiveGoalType + err := ss.MainEng.Table("live_goal_reward_m"). + Where("live_difficulty_id = ?", LiveDifficultyID).Cols("live_goal_type").Find(&goal) + if ss.CheckErr(err) { + return []constant.LiveGoalType{} + } + return goal +} + +func (ss *Session) GetUserLiveGoalList(LiveDifficultyID int) []constant.LiveGoalType { + var goal []constant.LiveGoalType + var goalData []usermodel.UserLiveGoal + err := ss.UserEng.Table(new(usermodel.UserLiveGoal)). + Where("user_id = ? AND live_difficulty_id = ?", ss.UserID, LiveDifficultyID).Find(&goalData) + if ss.CheckErr(err) { + return []constant.LiveGoalType{} + } + for _, g := range goalData { + goal = append(goal, g.GoalType) + } + return goal +} diff --git a/internal/session/login.go b/internal/session/login.go new file mode 100644 index 0000000..f95feb7 --- /dev/null +++ b/internal/session/login.go @@ -0,0 +1,21 @@ +package session + +import loginmodel "honoka-chan/internal/model/login" + +func (ss *Session) GetAuthKey(token string) (bool, *loginmodel.AuthKey) { + authKeyData := loginmodel.AuthKey{} + has, err := ss.UserEng.Table(new(loginmodel.AuthKey)). + Where("authorize_token = ?", token).Get(&authKeyData) + if ss.CheckErr(err) { + return false, nil + } + + return has, &authKeyData +} + +func (ss *Session) SetAuthKey(authKey *loginmodel.AuthKey) { + _, err := ss.UserEng.Insert(authKey) + if ss.CheckErr(err) { + return + } +} diff --git a/internal/session/session.go b/internal/session/session.go index e69a39e..194fd2b 100644 --- a/internal/session/session.go +++ b/internal/session/session.go @@ -2,8 +2,7 @@ package session import ( "encoding/json" - "errors" - "honoka-chan/internal/model/user" + usermodel "honoka-chan/internal/model/user" "honoka-chan/internal/utils" "honoka-chan/pkg/db" "log" @@ -19,7 +18,7 @@ type Session struct { UserEng *xorm.Session UserID int - UserPref user.UserPref + UserPref usermodel.UserPref } func New(ctx *gin.Context) *Session { @@ -33,14 +32,7 @@ func New(ctx *gin.Context) *Session { userID := ctx.GetString("userid") if userID != "" { - exist, err := ss.UserEng.Table("user_pref").Where("user_id = ?", userID).Get(&ss.UserPref) - if ss.CheckErr(err) { - return nil - } - if !exist { - ss.Abort(errors.New("user not exist!")) - return nil - } + ss.UserPref = ss.GetUserPref(userID) ss.UserID = ss.UserPref.UserID } @@ -77,18 +69,6 @@ func (ss *Session) CheckErr(err error) bool { return false } -func (ss *Session) GetDeviceID() string { - return ss.Ctx.Request.Header.Get("X-DEVICEID") -} - -func (ss *Session) GetRandKey() []byte { - key, err := db.Ldb.Get([]byte(ss.GetDeviceID())) - if ss.CheckErr(err) { - return nil - } - return key -} - func (ss *Session) Respond(resp any) { data, err := json.Marshal(resp) if ss.CheckErr(err) { diff --git a/internal/session/unit.go b/internal/session/unit.go new file mode 100644 index 0000000..d91ac76 --- /dev/null +++ b/internal/session/unit.go @@ -0,0 +1,67 @@ +package session + +import ( + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" + + "xorm.io/xorm" +) + +func (ss *Session) GetBasicUnitInfo() *xorm.Session { + return ss.UserEng.Table("user_unit_data").Alias("a"). + Join("LEFT", "common_unit_data", "a.unit_id = common_unit_data.unit_id"). + Cols(` + a.unit_owning_user_id, + a.favorite_flag, + a.display_rank, + common_unit_data.* + `) +} + +func (ss *Session) GetUnitInfo(unitID int) (bool, *unitmodel.CommonUnitData) { + unitInfo := unitmodel.CommonUnitData{} + has, err := ss.UserEng.Table(new(unitmodel.CommonUnitData)). + Where("unit_id = ?", unitID).Get(&unitInfo) + if ss.CheckErr(err) { + return false, nil + } + + return has, &unitInfo +} + +func (ss *Session) GetUserUnitInfo(unitOwningUserID int) (bool, *unitmodel.CommonUnitData) { + var unitID int + has, err := ss.UserEng.Table(new(usermodel.UserUnitData)). + Where("unit_owning_user_id = ?", unitOwningUserID). + Cols("unit_id").Get(&unitID) + if ss.CheckErr(err) { + return false, nil + } + + if !has { + return false, nil + } + + return ss.GetUnitInfo(unitID) +} + +func (ss *Session) GetUserUnitSkillEquip(unitOwningUserID int) []usermodel.UserUnitSkillEquip { + skill := []usermodel.UserUnitSkillEquip{} + err := ss.UserEng.Table("user_unit_skill_equip"). + Where("unit_owning_user_id = ?", unitOwningUserID).Find(&skill) + if ss.CheckErr(err) { + return []usermodel.UserUnitSkillEquip{} + } + + return skill +} + +func (ss *Session) GetUserUnitSkillEquipID(unitOwningUserID int) []int { + skillID := []int{} + skill := ss.GetUserUnitSkillEquip(unitOwningUserID) + for _, s := range skill { + skillID = append(skillID, s.UnitRemovableSkillID) + } + + return skillID +} diff --git a/internal/session/userdata.go b/internal/session/userdata.go new file mode 100644 index 0000000..3e36f2a --- /dev/null +++ b/internal/session/userdata.go @@ -0,0 +1,132 @@ +package session + +import ( + "errors" + "honoka-chan/internal/constant" + usermodel "honoka-chan/internal/model/user" + userschema "honoka-chan/internal/schema/user" +) + +func (ss *Session) GetUserPref(userID string) usermodel.UserPref { + pref := usermodel.UserPref{} + has, err := ss.UserEng.Table(new(usermodel.UserPref)). + Where("user_id = ?", userID).Get(&pref) + if ss.CheckErr(err) { + return usermodel.UserPref{} + } + if !has { + ss.Abort(errors.New("用户不存在!")) + return usermodel.UserPref{} + } + + return pref +} + +func (ss *Session) GetUserInfo() userschema.UserInfo { + return userschema.UserInfo{ + UserID: ss.UserID, + Name: ss.UserPref.UserName, + Level: ss.UserPref.UserLevel, + Exp: 1089696, + PreviousExp: 0, + NextExp: 1207185, + GameCoin: 112124104, + SnsCoin: 10000, + FreeSnsCoin: 50000, + PaidSnsCoin: 50000, + SocialPoint: 1438165, + UnitMax: 5000, + WaitingUnitMax: 5000, + CurrentEnergy: 417, + EnergyMax: 417, + EnergyFullTime: "2023-03-20 01:28:55", + LicenseLiveEnergyRecoverlyTime: 60, + EnergyFullNeedTime: 0, + OverMaxEnergy: 417, + TrainingEnergy: 10, + TrainingEnergyMax: 10, + FriendMax: 99, + InviteCode: ss.UserPref.InviteCode, + InsertDate: "2015-08-10 18:58:30", + UpdateDate: "2018-08-09 18:13:12", + TutorialState: -1, + DiamondCoin: 0, + CrystalCoin: 0, + UnlockRandomLiveMuse: 1, + UnlockRandomLiveAqours: 1, + } +} + +func (ss *Session) GetUserLiveRecord(liveDifficultyID int) []usermodel.UserLiveRecord { + liveRecord := []usermodel.UserLiveRecord{} + err := ss.UserEng.Table(new(usermodel.UserLiveRecord)). + Where("user_id = ? AND live_difficulty_id = ?", + ss.UserID, liveDifficultyID). + Find(&liveRecord) + if ss.CheckErr(err) { + return []usermodel.UserLiveRecord{} + } + + return liveRecord +} + +func (ss *Session) GetUserLiveRecordWithSkillOn(liveDifficultyID int, isSkillOn bool) (bool, *usermodel.UserLiveRecord) { + liveRecord := usermodel.UserLiveRecord{} + has, err := ss.UserEng.Table(new(usermodel.UserLiveRecord)). + Where("user_id = ? AND live_difficulty_id = ? AND is_skill_on = ?", + ss.UserID, liveDifficultyID, isSkillOn). + Get(&liveRecord) + if ss.CheckErr(err) { + return false, nil + } + + return has, &liveRecord +} + +func (ss *Session) UpdateUserLiveRecord(newLiveRecord *usermodel.UserLiveRecord, updateType constant.PreciseScoreUpdateType) { + // 获取原有记录 + has, liveRecord := ss.GetUserLiveRecordWithSkillOn(newLiveRecord.LiveDifficultyID, newLiveRecord.IsSkillOn) + if !has { + // 没有记录则直接新增 + ss.UpdateUserLiveRecordWrapper(newLiveRecord, false) + return + } + + // 判断记录更新类型 + switch updateType { + case constant.PreciseScoreUpdateTypePerfect: + // 根据 Perfect 数更新 + // 判断 Perfect 数是否大于原有记录 + if newLiveRecord.PerfectCnt >= liveRecord.PerfectCnt { + // 更新记录 + ss.UpdateUserLiveRecordWrapper(newLiveRecord, true) + } + case constant.PreciseScoreUpdateTypeScore: + // 根据分数更新 + // 判断分数是否大于原有记录 + if newLiveRecord.TotalScore >= liveRecord.TotalScore { + // 更新记录 + ss.UpdateUserLiveRecordWrapper(newLiveRecord, true) + } + default: + // 总是更新 + ss.UpdateUserLiveRecordWrapper(newLiveRecord, true) + } +} + +func (ss *Session) UpdateUserLiveRecordWrapper(newLiveRecord *usermodel.UserLiveRecord, isUpdate bool) { + if isUpdate { + _, err := ss.UserEng.Table(new(usermodel.UserLiveRecord)). + Where("user_id = ? AND live_difficulty_id = ? AND is_skill_on = ?", + ss.UserID, newLiveRecord.LiveDifficultyID, newLiveRecord.IsSkillOn). + Update(newLiveRecord) + if ss.CheckErr(err) { + return + } + } else { + _, err := ss.UserEng.Insert(newLiveRecord) + if ss.CheckErr(err) { + return + } + } +} diff --git a/internal/startup/database.go b/internal/startup/database.go index 22ffb27..cf3b3b8 100644 --- a/internal/startup/database.go +++ b/internal/startup/database.go @@ -1,18 +1,228 @@ package startup import ( - "honoka-chan/internal/model/user" + ghomemodel "honoka-chan/internal/model/ghome" + loginmodel "honoka-chan/internal/model/login" + unitmodel "honoka-chan/internal/model/unit" + usermodel "honoka-chan/internal/model/user" "honoka-chan/pkg/db" + "log" + "time" + + "xorm.io/xorm" ) -func CreateTable() { +var ( + userEng *xorm.Session +) + +func CreateTables() { // db.UserEng.ShowSQL(true) - db.UserEng.Sync2(new(user.Users)) - db.UserEng.Sync2(new(user.UserKey)) - db.UserEng.Sync2(new(user.UserPref)) - db.UserEng.Sync2(new(user.UserAccessoryWear)) - db.UserEng.Sync2(new(user.UserDeck)) - db.UserEng.Sync2(new(user.UserUnit)) - db.UserEng.Sync2(new(user.UserDeckUnit)) - db.UserEng.Sync2(new(user.UserUnitSkillEquip)) + db.UserEng.Sync2(new(ghomemodel.DeviceKey)) + db.UserEng.Sync2(new(loginmodel.AuthKey)) + db.UserEng.Sync2(new(usermodel.UserAccessoryWear)) + db.UserEng.Sync2(new(usermodel.UserDeck)) + db.UserEng.Sync2(new(usermodel.UserDeckUnit)) + db.UserEng.Sync2(new(usermodel.UserKey)) + db.UserEng.Sync2(new(usermodel.UserLiveGoal)) + db.UserEng.Sync2(new(usermodel.UserLiveInProgress)) + db.UserEng.Sync2(new(usermodel.UserLiveRecord)) + db.UserEng.Sync2(new(usermodel.UserPref)) + db.UserEng.Sync2(new(usermodel.Users)) + db.UserEng.Sync2(new(usermodel.UserUnit)) + db.UserEng.Sync2(new(usermodel.UserUnitSkillEquip)) +} + +func LoadUnitData() { + userEng = db.UserEng.NewSession() + defer userEng.Close() + + err := userEng.Begin() + CheckErr(err) + + commonUnitExist, err := userEng.IsTableExist(new(unitmodel.CommonUnitData)) + CheckErr(err) + userUnitExist, err := userEng.IsTableExist(new(usermodel.UserUnitData)) + CheckErr(err) + + if !commonUnitExist || !userUnitExist { + log.Println("卡片数据不存在,正在同步...") + + userEng.DropTable(new(unitmodel.CommonUnitData)) + userEng.CreateTable(new(unitmodel.CommonUnitData)) + userEng.DropTable(new(usermodel.UserUnitData)) + userEng.CreateTable(new(usermodel.UserUnitData)) + + var unitData []unitmodel.UnitM + err = db.MainEng.Table(new(unitmodel.UnitM)).OrderBy("unit_id ASC").Find(&unitData) + CheckErr(err) + + checked := false + for _, u := range unitData { + // 判断卡片最大等级 + var unitMaxLevel, nextExp, sumExp int + _, err = db.MainEng.Table("unit_level_up_pattern_m"). + Where("unit_level_up_pattern_id = ?", u.UnitLevelUpPatternId). + Select("MAX(unit_level),next_exp").Get(&unitMaxLevel, &nextExp) + CheckErr(err) + + // 计算突破前的经验总和 + _, err = db.MainEng.Table("unit_level_up_pattern_m"). + Where("unit_level_up_pattern_id = ?", u.UnitLevelUpPatternId). + Where("unit_level = ?", unitMaxLevel-1).Cols("next_exp").Get(&sumExp) + CheckErr(err) + + // 计算突破前的属性 + var smileMax, pureMax, coolMax int + smileMax = u.SmileMax + pureMax = u.PureMax + coolMax = u.CoolMax + + // 如果 nexpExp 不为零,则说明卡片等级没有达到上限 + if nextExp != 0 { + // 计算突破后的经验总和 + _, err = db.MainEng.Table("unit_level_limit_pattern_m"). + Where("unit_level_limit_id = 1 AND unit_level = 349"). + Cols("next_exp").Get(&sumExp) + CheckErr(err) + + // 突破后最大等级 + unitMaxLevel = 350 + + // 计算突破后的属性 + smileMax += 6000 + pureMax += 6000 + coolMax += 6000 + } + + // 计算绊值、技能等级、技能经验 + var maxLove, skillLevel, skillExp, removableSkillCapacity, levelLimitID int + switch u.Rarity { + case 1: + maxLove = 50 + skillExp = 0 + skillLevel = 0 + removableSkillCapacity = 0 + levelLimitID = 0 + case 2: + maxLove = 200 + skillExp = 490 + skillLevel = 8 + removableSkillCapacity = 1 + levelLimitID = 0 + case 3: + maxLove = 500 + skillExp = 4900 + skillLevel = 8 + removableSkillCapacity = 2 + levelLimitID = 0 + case 4: + maxLove = 1000 + skillExp = 29900 + skillLevel = 8 + removableSkillCapacity = 8 + levelLimitID = 1 + case 5: + maxLove = 750 + skillExp = 12700 + skillLevel = 8 + removableSkillCapacity = 3 + levelLimitID = 0 + } + + // 针对技能卡等应援卡片 + if smileMax == 1 { + maxLove = 0 + skillExp = 0 + skillLevel = 0 + removableSkillCapacity = 0 + } + + // 检查是否签名卡 + var isSigned bool + exist, err := db.MainEng.Table("unit_sign_asset_m").Where("unit_id = ?", u.UnitId).Exist() + CheckErr(err) + if exist { + isSigned = true + } + + // 生成公共卡片 + unitCommon := unitmodel.CommonUnitData{ + UnitNumber: u.UnitNumber, + UnitID: u.UnitId, + UnitTypeID: u.UnitTypeId, + Name: *u.NameEn, + Eponym: u.EponymEn, + Rarity: u.Rarity, + Attribute: u.AttributeId, + Smile: smileMax, + Cute: pureMax, + Cool: coolMax, + Exp: sumExp, + Level: unitMaxLevel, + MaxLevel: unitMaxLevel, + LevelLimitID: levelLimitID, + Rank: u.RankMin, + MaxRank: u.RankMax, + Love: maxLove, + MaxLove: maxLove, + UnitSkillExp: skillExp, + UnitSkillLevel: skillLevel, + MaxHp: u.HpMax, + UnitRemovableSkillCapacity: removableSkillCapacity, + IsRankMax: true, + IsLoveMax: true, + IsLevelMax: true, + IsSigned: isSigned, + IsSkillLevelMax: true, + IsRemovableSkillCapacityMax: true, + InsertDate: time.Now().Unix(), + } + + _, err = userEng.Insert(&unitCommon) + CheckErr(err) + + var userID []int + err = db.UserEng.Table(new(usermodel.Users)).Cols("user_id").Find(&userID) + CheckErr(err) + + for _, id := range userID { + userUnit := usermodel.UserUnitData{ + UnitID: u.UnitId, + FavoriteFlag: false, + DisplayRank: u.RankMax, + UserID: id, + InsertDate: time.Now().Unix(), + UpdateDate: time.Now().Unix(), + } + + // 检查表里是否已经有数据 + if !checked { + ct, err := userEng.Table(new(usermodel.UserUnitData)).Count() + CheckErr(err) + + if ct == 0 { + userUnit.UnitOwningUserID = 38383 + } + + checked = true + } + + _, err = userEng.Insert(&userUnit) + CheckErr(err) + } + } + + err = userEng.Commit() + CheckErr(err) + + log.Println("同步完成!") + } +} + +func CheckErr(err error) { + if err != nil { + userEng.Rollback() + log.Fatalln("同步失败:", err.Error()) + } } diff --git a/internal/startup/startup.go b/internal/startup/startup.go index d5e98b5..d270f06 100644 --- a/internal/startup/startup.go +++ b/internal/startup/startup.go @@ -1,6 +1,6 @@ package startup func StartUp() { - CreateTable() - InitUserData(0) + CreateTables() + LoadUnitData() } diff --git a/internal/startup/userdata.go b/internal/startup/userdata.go deleted file mode 100644 index 63442c4..0000000 --- a/internal/startup/userdata.go +++ /dev/null @@ -1,142 +0,0 @@ -package startup - -import ( - "fmt" - "honoka-chan/internal/model/user" - "honoka-chan/internal/schema/api/profile" - "honoka-chan/internal/schema/api/unit" - "honoka-chan/internal/utils" - "honoka-chan/pkg/db" - "strconv" - "time" -) - -func InitUserData(userId int) { - userList := []user.Users{} - if userId != 0 { - err := db.UserEng.Table("users").Where("user_id = ?", userId).Find(&userList) - utils.CheckErr(err) - } else { - err := db.UserEng.Table("users").Asc("id").Find(&userList) - utils.CheckErr(err) - } - - // 同步用户表 - // db.UserEng.ShowSQL(true) - // db.UserEng.Table("user_info_m").Sync2(new(user.UserInfo)) - // db.UserEng.Table("user_pref").Sync2(new(UserPref)) - - // 开始会话 - session := db.UserEng.NewSession() - defer session.Close() - - if err := session.Begin(); err != nil { - panic(err) - } - - for _, u := range userList { - // 检查用户配置 - exists, err := db.UserEng.Table("user_pref").Where("user_id = ?", u.UserID).Exist() - utils.CheckErr(err) - - if !exists { - // 默认中心成员() - var oId int - _, err = db.MainEng.Table("common_unit_m").Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&oId) - utils.CheckErr(err) - fmt.Println("Center UnitOwningUserId:", oId) - userPref := user.UserPref{ - UserID: u.UserID, - AwardID: 1, // 音乃木坂学生 - BackgroundID: 1, // 初始背景 - UnitOwningUserID: oId, - UserName: "音乃木坂学生", - UserLevel: 1, - UserDesc: "你好。", - InviteCode: strconv.Itoa(u.UserID), - UpdateTime: time.Now().Unix(), - } - _, err = session.Table("user_pref").Insert(&userPref) - utils.CheckErr(err) - // fmt.Println("UserPref Id", userPref.Id) - } - - // 检查用户信息 - exists, err = db.UserEng.Table("user_info_m").Where("user_id = ?", u.UserID).Exist() - - // 检查用户卡组配置 - exists, err = db.UserEng.Table("user_deck").Where("user_id = ?", u.UserID).Asc("deck_id").Exist() - utils.CheckErr(err) - // fmt.Println("UserDeck exists:", exists) - - if !exists { - userDeck := unit.UserDeckData{ - DeckID: 1, - MainFlag: 1, - DeckName: "队伍A", - UserID: u.UserID, - InsertDate: time.Now().Unix(), - } - - // 默认队伍 - _, err = session.Table("user_deck").Insert(&userDeck) - if err != nil { - session.Rollback() - panic(err) - } - userDeckId := userDeck.ID - // fmt.Println("New UserDeck:", userDeckId) - - // 默认卡组 - unitIds := []int{} - err = db.MainEng.Table("unit_m").Cols("unit_id").Where("album_series_id = ?", 615).Find(&unitIds) - if err != nil { - session.Rollback() - panic(err) - } - - unitData := []profile.UnitData{} - err = db.MainEng.Table("common_unit_m").In("unit_id", unitIds).Find(&unitData) - if err != nil { - session.Rollback() - panic(err) - } - // fmt.Println(unitData) - - position := 1 - for _, u := range unitData { - unitDeckData := unit.UnitDeckData{ - UserDeckID: userDeckId, - UnitOwningUserID: u.UnitOwningUserID, - UnitID: u.UnitID, - Position: position, - Level: 100, - LevelLimitID: 1, - DisplayRank: 2, - Love: 1000, - UnitSkillLevel: 8, - IsRankMax: true, - IsLoveMax: true, - IsLevelMax: true, - IsSigned: u.IsSigned, - BeforeLove: 1000, - MaxLove: 1000, - InsertData: time.Now().Unix(), - } - _, err = session.Table("user_deck_unit").Insert(&unitDeckData) - if err != nil { - session.Rollback() - panic(err) - } - // fmt.Println("New DeckUnit:", unitDeckData.Id) - - position++ - } - - // 结束会话 - if err = session.Commit(); err != nil { - panic(err) - } - } - } -} diff --git a/main.go b/main.go index 0df3c91..867b038 100644 --- a/main.go +++ b/main.go @@ -27,8 +27,9 @@ func main() { go func() { <-signalChan - log.Println("Shutting down...") - db.Ldb.Close() + log.Println("正在退出...") + db.MainEng.Close() + db.UserEng.Close() os.Exit(0) }() diff --git a/pkg/db/db.go b/pkg/db/db.go index 5a4bd22..1095433 100644 --- a/pkg/db/db.go +++ b/pkg/db/db.go @@ -1,15 +1,11 @@ package db import ( - "fmt" - _ "modernc.org/sqlite" "xorm.io/xorm" ) var ( - Ldb *LdbInstance - MainDb = "assets/main.db" UserDb = "assets/data.db" MainEng *xorm.Engine @@ -17,8 +13,6 @@ var ( ) func init() { - Ldb = GetLdbInstance() - eng, err := xorm.NewEngine("sqlite", MainDb) if err != nil { panic(err) @@ -43,13 +37,3 @@ func init() { eng.SetMaxIdleConns(5) UserEng = eng } - -func MatchTokenUid(token, uid string) bool { - res, err := Ldb.Get([]byte(uid)) - if err != nil { - fmt.Println(err) - return false - } - - return string(res) == token -} diff --git a/pkg/db/leveldb.go b/pkg/db/leveldb.go deleted file mode 100644 index 6d8ac69..0000000 --- a/pkg/db/leveldb.go +++ /dev/null @@ -1,58 +0,0 @@ -package db - -import ( - "errors" - "sync" - - "github.com/syndtr/goleveldb/leveldb" -) - -var ( - once sync.Once -) - -type LdbInstance struct { - db *leveldb.DB - mu sync.Mutex -} - -func GetLdbInstance() *LdbInstance { - in := LdbInstance{} - once.Do(func() { - var err error - in.db, err = leveldb.OpenFile("./data/honoka-chan.db", nil) - if err != nil { - panic(err) - } - }) - return &in -} - -func (in *LdbInstance) Close() error { - in.mu.Lock() - defer in.mu.Unlock() - if in.db != nil { - return in.db.Close() - } - return nil -} - -func (in *LdbInstance) Get(key []byte) ([]byte, error) { - if len(key) == 0 { - return nil, errors.New("empty key") - } - res, err := in.db.Get(key, nil) - if err == leveldb.ErrNotFound { - return nil, nil - } else if err != nil { - return nil, err - } - return res, nil -} - -func (in *LdbInstance) Set(key, value []byte) error { - if len(key) == 0 { - return errors.New("empty key") - } - return in.db.Put(key, value, nil) -} diff --git a/pkg/tools/tools.go b/pkg/tools/tools.go deleted file mode 100644 index ab288a7..0000000 --- a/pkg/tools/tools.go +++ /dev/null @@ -1,497 +0,0 @@ -package tools - -func init() { - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // suitIds := []int{} - // err = eng.Table("m_suit").Cols("id").OrderBy("id ASC").Find(&suitIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, suit := range suitIds { - // suitInfo := model.AsSuitInfo{ - // SuitMasterID: suit, - // IsNew: false, - // } - // m, err := json.Marshal(suitInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", suit, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // emblemIds := []int{} - // err = eng.Table("m_emblem").Cols("id").OrderBy("id ASC").Find(&emblemIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, emblem := range emblemIds { - // emblemInfo := model.AsEmblemInfo{ - // EmblemMID: emblem, - // AcquiredAt: time.Now().Unix(), - // } - // m, err := json.Marshal(emblemInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", emblem, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // emblemIds := []int{} - // err = eng.Table("m_emblem").Cols("id").OrderBy("id ASC").Find(&emblemIds) - // utils.CheckErr(err) - - // ids := []model.AsEmblemId{} - // for _, id := range emblemIds { - // ids = append(ids, model.AsEmblemId{ - // EmblemMasterID: id, - // IsNew: false, - // }) - // } - // m, err := json.Marshal(ids) - // utils.CheckErr(err) - // fmt.Println(string(m)) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // difficultyIds := []int{} - // err = eng.Table("m_live_difficulty").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&difficultyIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range difficultyIds { - // difficultyInfo := model.AsLiveDifficultyInfo{ - // LiveDifficultyID: id, - // MaxScore: 0, - // MaxCombo: 0, - // PlayCount: 0, - // ClearCount: 0, - // CancelCount: 0, - // NotClearedCount: 0, - // IsFullCombo: false, - // ClearedDifficultyAchievement1: nil, - // ClearedDifficultyAchievement2: nil, - // ClearedDifficultyAchievement3: nil, - // EnableAutoplay: false, - // IsAutoplay: false, - // IsNew: false, - // } - // m, err := json.Marshal(difficultyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // storyIds := []int{} - // err = eng.Table("m_story_main_cell").Cols("id").OrderBy("id ASC").Find(&storyIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range storyIds { - // storyInfo := model.AsMainStoryInfo{ - // StoryMainMasterID: id, - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // voiceIds := []int{} - // err = eng.Table("m_navi_voice").Cols("id").OrderBy("id ASC").Find(&voiceIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range voiceIds { - // storyInfo := model.AsNaviVoiceInfo{ - // NaviVoiceMasterID: id, - // IsNew: false, - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // backgroundIds := []int{} - // err = eng.Table("m_custom_background").Cols("id").OrderBy("id ASC").Find(&backgroundIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range backgroundIds { - // storyInfo := model.AsCustomBackgroundInfo{ - // CustomBackgroundMasterID: id, - // IsNew: false, - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // storyIds := []int{} - // err = eng.Table("m_story_side").Cols("id").OrderBy("id ASC").Find(&storyIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range storyIds { - // storyInfo := model.AsStorySideInfo{ - // StorySideMasterID: id, - // IsNew: false, - // AcquiredAt: time.Now().Unix(), - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // storyIds := []int{} - // err = eng.Table("m_story_member").Cols("id").OrderBy("id ASC").Find(&storyIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range storyIds { - // storyInfo := model.AsStoryMemberInfo{ - // StoryMemberMasterID: id, - // IsNew: false, - // AcquiredAt: time.Now().Unix(), - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // eventIds := []int{} - // err = eng.Table("m_story_event_history_detail").Cols("story_event_id").OrderBy("story_event_id ASC").Find(&eventIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, id := range eventIds { - // storyInfo := model.AsStoryEventInfo{ - // StoryEventID: id, - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", id, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // missionRes := []model.AsMissionRes{} - // err = eng.Table("m_mission").Cols("id,mission_clear_condition_count"). - // Where("term = 3 AND (end_at > ? OR end_at IS NULL)", time.Now().Unix()).OrderBy("id ASC").Find(&missionRes) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, res := range missionRes { - // storyInfo := model.AsFreeMissionInfo{ - // MissionMID: res.ID, - // IsNew: false, - // MissionCount: res.Count, - // IsCleared: true, - // IsReceivedReward: true, - // NewExpiredAt: time.Now().Unix(), - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", res.ID, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // missionRes := []model.AsMissionRes{} - // err = eng.Table("m_mission").Cols("id,mission_clear_condition_count"). - // Where("term = 1 AND (end_at > ? OR end_at IS NULL)", time.Now().Unix()).OrderBy("id ASC").Find(&missionRes) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, res := range missionRes { - // storyInfo := model.AsDailyMissionInfo{ - // MissionMID: res.ID, - // IsNew: false, - // MissionStartCount: res.Count, - // MissionCount: res.Count, - // IsCleared: true, - // IsReceivedReward: true, - // ClearedExpiredAt: time.Now().Unix(), - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", res.ID, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - - // missionRes := []model.AsMissionRes{} - // err = eng.Table("m_mission").Cols("id,mission_clear_condition_count"). - // Where("term = 2 AND (end_at > ? OR end_at IS NULL)", time.Now().Unix()).OrderBy("id ASC").Find(&missionRes) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, res := range missionRes { - // storyInfo := model.AsWeeklyMissionInfo{ - // MissionMID: res.ID, - // IsNew: false, - // MissionStartCount: res.Count, - // MissionCount: res.Count, - // IsCleared: true, - // IsReceivedReward: true, - // ClearedExpiredAt: time.Now().Unix(), - // NewExpiredAt: time.Now().Unix(), - // } - // m, err := json.Marshal(storyInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", res.ID, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // eng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = eng.Ping() - // utils.CheckErr(err) - // eng.ShowSQL(true) - - // memberIds := []int{} - // err = eng.Table("m_member").Cols("id").OrderBy("id ASC").Find(&memberIds) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, memberId := range memberIds { - // cellIds := []int{} - // err = eng.Table("m_member_love_panel_cell"). - // Join("LEFT", "m_member_love_panel", "m_member_love_panel_cell.member_love_panel_master_id = m_member_love_panel.id"). - // Cols("m_member_love_panel_cell.id").Where("m_member_love_panel.member_master_id = ?", memberId). - // OrderBy("m_member_love_panel_cell.id ASC").Find(&cellIds) - // utils.CheckErr(err) - - // panelInfo := model.AsMemberLovePanelInfo{ - // MemberID: memberId, - // MemberLovePanelCellIds: cellIds, - // } - - // m, err := json.Marshal(panelInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%s,", string(m)) - // } - - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // mEng, err := xorm.NewEngine("sqlite", "assets/masterdata.db") - // utils.CheckErr(err) - // err = mEng.Ping() - // utils.CheckErr(err) - // defer mEng.Close() - - // dEng, err := xorm.NewEngine("sqlite", "assets/dictionary_zh_k.db") - // utils.CheckErr(err) - // err = dEng.Ping() - // utils.CheckErr(err) - // defer dEng.Close() - - // cardRes := []model.AsCardRes{} - // err = mEng.Table("m_card").Cols("id,card_rarity_type,max_passive_skill_slot").OrderBy("id ASC").Find(&cardRes) - // utils.CheckErr(err) - - // jsonStr := "[" - // for _, card := range cardRes { - // // 绊板等级加成 - // cardLevel := 0 - // cardCellCount := 0 - // if card.CardRarityType == 10 { - // cardLevel = 40 + 42 - // cardCellCount = 61 - // } else if card.CardRarityType == 20 { - // cardLevel = 60 + 24 - // cardCellCount = 75 - // } else if card.CardRarityType == 30 { - // cardLevel = 80 + 12 - // cardCellCount = 87 - // } - - // var apBuff, stBuff, teBuff int - // _, err := mEng.Table("m_training_tree_card_param").Where("id = ? AND training_content_type = ?", card.ID, 2).Select("SUM(value)").Get(&stBuff) - // utils.CheckErr(err) - // // fmt.Println(stBuff) - - // _, err = mEng.Table("m_training_tree_card_param").Where("id = ? AND training_content_type = ?", card.ID, 3).Select("SUM(value)").Get(&apBuff) - // utils.CheckErr(err) - // // fmt.Println(apBuff) - - // _, err = mEng.Table("m_training_tree_card_param").Where("id = ? AND training_content_type = ?", card.ID, 4).Select("SUM(value)").Get(&teBuff) - // utils.CheckErr(err) - // // fmt.Println(teBuff) - - // var skillName string - // var skillId int - // _, err = mEng.Table("m_card_passive_skill_original").Where("card_master_id = ? AND skill_level = 5", card.ID).Cols("name").Get(&skillName) - // utils.CheckErr(err) - // skillName = strings.ReplaceAll(skillName, "k.", "") - // // fmt.Println(skillName) - - // // dEng.ShowSQL(true) - // condition := "id LIKE '%" + skillName + "%' AND (message LIKE '%表现%同策略%' OR message LIKE '%表现%同属性%') AND message NOT LIKE '%时%'" - // count, err := dEng.Table("m_dictionary"). - // Where(condition). - // Count() - // utils.CheckErr(err) - // if count > 0 { - // skillId = 30000507 - // } else { - // skillId = 30000482 - // } - - // var passiveSkillLevel int - // _, err = mEng.Table("m_card_passive_skill_original").Where("card_master_id = ?", card.ID). - // Cols("skill_level").OrderBy("skill_level DESC").Limit(1).Get(&passiveSkillLevel) - // utils.CheckErr(err) - - // cardInfo := model.AsCardInfo{ - // CardMasterID: card.ID, - // Level: cardLevel, - // Exp: 0, - // LovePoint: 0, - // IsFavorite: false, - // IsAwakening: true, - // IsAwakeningImage: true, - // IsAllTrainingActivated: true, - // TrainingActivatedCellCount: cardCellCount, - // MaxFreePassiveSkill: card.MaxPassiveSkillSlot, - // Grade: 5, - // TrainingLife: stBuff, - // TrainingAttack: apBuff, - // TrainingDexterity: teBuff, - // ActiveSkillLevel: 5, - // PassiveSkillALevel: passiveSkillLevel, - // PassiveSkillBLevel: 1, - // PassiveSkillCLevel: 1, - // AdditionalPassiveSkill1ID: skillId, - // AdditionalPassiveSkill2ID: skillId, - // AdditionalPassiveSkill3ID: skillId, - // AdditionalPassiveSkill4ID: skillId, - // AcquiredAt: time.Now().Unix(), - // IsNew: false, - // } - // m, err := json.Marshal(cardInfo) - // utils.CheckErr(err) - - // jsonStr += fmt.Sprintf("%d,%s,", card.ID, string(m)) - // } - // jsonStr = strings.TrimRight(jsonStr, ",") - // jsonStr += "]" - // fmt.Println(jsonStr) - - // gjson.Parse(utils.ReadAllText("data/notesdata.json")).ForEach(func(k, v gjson.Result) bool { - // v.ForEach(func(kk, vv gjson.Result) bool { - // if vv.IsObject() { - // fileName := vv.Get("live.live_stage.live_difficulty_id").String() - // utils.WriteAllText("temp/"+fileName+".json", vv.Get("live.live_stage").String()) - // } - // return true - // }) - // return true - // }) -} - -func CheckErr(err error) { - if err != nil { - panic(err) - } -} diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 8af2a4d..a6cf3e1 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -5,6 +5,9 @@ package utils import ( "encoding/hex" + "encoding/json" + "fmt" + "log" "math/rand" "os" "sync" @@ -48,10 +51,6 @@ func XOR(s1, s2 []byte) []byte { return res } -func Sub16(str []byte) []byte { - return str[16:] -} - func RandomStr(len int) string { rand.Seed(time.Now().UnixNano()) mRand := make([]byte, len) @@ -60,3 +59,20 @@ func RandomStr(len int) string { return mRandStr } + +func ToJSON(data any) string { + b, err := json.Marshal(data) + if err != nil { + log.Println(err.Error()) + return "{}" + } + return string(b) +} + +func PrintJSON(data any) { + b, err := json.MarshalIndent(data, "", " ") + if err != nil { + return + } + fmt.Println(string(b)) +}