- Add IWeChatService dependency injection to WeChatEventController
- Implement GetServiceAccountUserInfoAsync method to fetch user info including UnionId from WeChat API
- Add ServiceAccountUserInfo DTO class with Subscribe, OpenId, and UnionId properties
- Refactor follow event handler to use WeChat API for UnionId instead of XML parsing
- Add validation to ensure UnionId is retrieved before attempting user association
- Update notification URLs in appsettings.json to remove redundant path segment
- Improve error logging when UnionId retrieval fails or user association is not found
- Add token and encodingAESKey fields to NotificationTemplatesConfig interface
- Add UI form inputs for WeChat token and EncodingAESKey in system config page
- Add configuration constants SaTokenKey and SaEncodingAesKeyKey to SystemConfigService
- Update WeChatEventController to fetch token from database instead of hardcoded value
- Make CheckSignature method async and retrieve token from ISystemConfigService
- Update GetNotificationTemplates to include token and encodingAESKey from config
- Update SetNotificationTemplates to persist token and encodingAESKey to database
- Update mini app manifest with new appid
- Enables dynamic WeChat server configuration without code changes