181 Commits

Author SHA1 Message Date
EUForest
37200698ab update: redis config 2026-01-31 12:08:12 +08:00
EUForest
ffe589ff77 feat: Device short code lookup 2026-01-31 11:52:09 +08:00
5f1a546bbe fix: resolve trial subscription cache issue on new user registration
When new users register with trial subscription enabled, the subscription
link fails to connect in Clash clients. This is caused by missing cache
invalidation after transaction commit.

Changes:
- Add cache clearing after successful trial subscription creation
- Clear user subscription cache, subscription details cache, and server cache
- Modify activeTrial functions to return subscription object for cache clearing
- Apply fix to all registration methods: email, phone, device, and OAuth

This ensures subscription links work immediately after registration without
requiring manual subscription reset.
2026-01-22 23:57:15 +07:00
EUForest
5f55b1242e fix: resolve order queue loss issue with retry mechanism and idempotency
- Fix task error handling: return actual errors instead of nil to enable retry
- Add idempotency check: skip processing for already finished orders
- Extend temp order cache: increase from 15 minutes to 24 hours
- Configure retry policy: add MaxRetry(5) for all payment callbacks (Epay, Alipay, Stripe)

This fixes the critical issue where paid orders were being lost due to:
1. Failed tasks being marked as successful and deleted from queue
2. Temporary order info expiring before queue processing
3. No retry mechanism for transient failures

Changes:
- queue/logic/order/activateOrderLogic.go: Fix error returns and add idempotency
- internal/logic/public/portal/purchaseLogic.go: Extend cache to 24 hours
- internal/logic/notify/*NotifyLogic.go: Add retry configuration
2026-01-12 18:30:42 +08:00
EUForest
7d4a19c9a3 fix: add quota limit check to prevent subscription bypass
- Add quota check in preCreateOrderLogic for order preview
- Move quota check inside transaction in purchaseLogic to prevent race condition
- Add quota check in activateOrderLogic as final safeguard when creating subscription
- Add quota check in redeemCodeLogic when redeeming codes for new subscriptions
2026-01-10 21:18:26 +08:00
EUForest
3359704a45 feat: add short_code field to device login API
- Add optional short_code parameter to DeviceLoginRequest
- Add ShortCode field to Device model
- Save short_code to database during device registration
- Add database migration for user_device.short_code column
- Fix duplicate variable declaration in routes.go
2026-01-10 18:11:24 +08:00
EUForest
ed669d0620 feat: remove v prefix from service version and disable SECRET_KEY check 2026-01-07 14:40:07 +08:00
EUForest
8f783b162c feat: redemption code 2026-01-06 16:24:24 +08:00
EUForest
23ef9dbff1 feat: bind device limit 2026-01-06 16:15:47 +08:00
EUForest
3f3b0ae6ad up: Redemption Code 2026-01-06 16:15:10 +08:00
EUForest
518595b058 feat: Redemption Code 2026-01-05 17:53:31 +08:00
EUForest
5beff61e91 Merge upstream/master into develop
Sync upstream changes from perfect-panel/server

  Includes updates from v1.0.1 to v1.2.5:
  - Currency configuration support
  - Subscribe improvements (short token, inventory check, etc.)
  - Node management enhancements
  - Database migrations
  - Bug fixes and optimizations
2026-01-03 23:21:41 +08:00
EUForest
80ee9a6acf Merge upstream/master into develop
Sync upstream changes from perfect-panel/server

  Includes updates from v1.0.1 to v1.2.5:
  - Currency configuration support
  - Subscribe improvements (short token, inventory check, etc.)
  - Node management enhancements
  - Database migrations
  - Bug fixes and optimizations
2026-01-02 12:51:55 +08:00
EUForest
47c41d1d14 fix bug: telephone login 2025-12-19 22:46:48 +08:00
EUForest
39db154e53 fix bug: Flag free trial 2025-12-17 22:09:46 +08:00
EUForest
76ff9a658d Merge branch perfect-panel/master/server into develop 2025-12-11 23:53:32 +08:00
EUForest
128791f43e update: bind device 2025-11-24 15:59:45 +08:00
EUForest
95ddba2332 update: Added support for floating-point calculations for discounts 2025-11-21 17:40:03 +08:00
EUForest
c1efb23354 update: Added support for floating-point calculations for discounts 2025-11-21 17:39:57 +08:00
EUForest
ff2d3f85f3 new features: Based on IP user registration restrictions 2025-11-13 14:52:02 +08:00
EUForest
0fb92f380f update: Remove accounts without verification methods 2025-11-13 14:50:55 +08:00
EUForest
3635d3e224 update: device delete current user 2025-11-13 14:49:25 +08:00
EUForest
60d584a052 add: User cancels account 2025-11-09 17:27:24 +08:00
EUForest
902608b2e0 Add: Get expired subscription 2025-11-08 17:06:30 +08:00
EUForest
d7aa9a44b7 Add: Try to get the device ID from the request parameters 2025-11-08 17:05:52 +08:00
EUForest
d1a8662095 Add: Add a WebSocket connection to monitor the app's online status. 2025-11-06 15:35:49 +08:00
EUForest
de6661cc16 Update: Successful authentication records the identifier. 2025-11-06 15:32:29 +08:00
EUForest
52ce054b35 Add: Server location latitude and longitude 2025-11-04 14:53:43 +08:00
EUForest
2605d22f8e Add: ClearServerAllCache Func 2025-11-01 16:05:37 +08:00
EUForest
829d5f3ffd fix bug: Set server zone 2025-11-01 15:57:30 +08:00
EUForest
7b8e71ade2 fix bug: SMS recharge password 2025-11-01 15:52:05 +08:00
EUForest
e0003ea074 Temporary: Cancel node cache 2025-10-28 17:48:38 +08:00
EUForest
2edc0ef1c8 fix bug: device login fail 2025-10-28 14:18:20 +08:00
EUForest
cd3b9d4fc8 Merge remote-tracking branch 'upstream'
# Conflicts:
#	apis/public/subscribe.api
#	initialize/migrate/database/02115_ads.up.sql
#	internal/logic/auth/deviceLoginLogic.go
#	internal/logic/public/subscribe/queryUserSubscribeNodeListLogic.go
#	internal/logic/public/user/unbindDeviceLogic.go
#	internal/types/types.go
#	pkg/tool/encryption_test.go
2025-10-22 20:16:03 +08:00
EUForest
b099331302 add: Add protocol configuration in the return node 2025-10-22 19:54:56 +08:00
EUForest
d78d79fa2d add: Automatically delete token when device is removed 2025-10-22 19:52:52 +08:00
Chang lue Tsen
1b76794251 fix(coupon): add expiration check and error handling for expired coupons 2025-10-16 09:31:33 -04:00
Ember Moth
8b48286365 add payment type field (alipay/wxpay) to EPay config 2025-10-15 23:20:33 +09:00
EUForest
96808d531a
Application device interface encryption and other bug fixes (#87)
* add: device login

* update: global config

* add: User transmission interface encryption

* update: get global config

* update: User transmission interface encryption

* add: get device list

* add: SecretIsEmpty Message

* update: device middleware

* add: query user subscribe node list

* fix bug: query device list

* fix bug: unbind device

* update: device login

* fix bug: The ad table is missing the description field

* fix bug:page size is zero

* update: Device Middleware

* fix bug: Site custom data update failed
2025-10-15 10:09:19 -04:00
Chang lue Tsen
adbe9a06d8 feat(exchange): add exchange rate handling and scheduled updates 2025-10-15 10:05:19 -04:00
EUForest
f0e2633ef6 update: device login 2025-10-14 11:37:25 +08:00
EUForest
b80c7caddd fix bug: unbind device 2025-10-14 11:37:13 +08:00
EUForest
640b8c0805 add: query user subscribe node list 2025-10-13 19:16:36 +08:00
EUForest
9ea5c626e9 add: get device list 2025-10-12 19:11:39 +08:00
EUForest
8c776cdbac update: User transmission interface encryption 2025-10-12 19:10:52 +08:00
EUForest
3efa68d3ff update: get global config 2025-10-12 17:36:30 +08:00
EUForest
46e6a9784d add: User transmission interface encryption 2025-10-12 16:23:29 +08:00
EUForest
f3bc933a99 update: global config 2025-10-12 15:23:58 +08:00
EUForest
71018eb2f4 add: device login 2025-10-11 15:55:45 +08:00
Chang lue Tsen
8562734fde feat(user): add encryption algorithm and salt fields to User model for migrate 2025-10-09 13:33:03 -04:00