#ifndef MessageDefH #define MessageDefH #include "ProCommon.h" ////////////////////////////////////////////// #define PROTOCOL_VERSION 0x0D00 // 0x0100 Request的iExtra包含ClientType和MsgVer // 0x0200 (2013.10.30) Verify MMParam2算法 // 0x0300 (2013.11.13) 启用新TSTYLEUPDATE/TSTYLEDETAIL结构(传输优化) // 0x0400 (2014.02.19) QnACommit 增加版本号 dataSend返回e_ReceiveComplete // 0x0500 (2014.03.25) Payment MMParam2算法 修改版本号规则 // 0x0600 (2014.06.23) 启用新TSTYLEUPDATE/TACCOUNTINFO/TPayRequest/TLogReq(Rsp)/TRegisterReq(Rsp)结构 // 0x0700 (2014.07.18) 启用新TStyleUpdateReq/TStyleInfoResp/TLoginResp结构 // 0x0800 (2015.01.26) 新TACCOUNTINFO/TLoginRequest/TLogoffRequest结构 // 0x0900 (2015.05.28) VersionReq增加设备号 // 0x0A00 (2015.12.17) 更新RegisterReq/LoginRes/CheckReq/Res/PayReq/Res结构及算法 // 0x0B00 (2025.01.20) 更新RegisterReq结构,connectReq带版本号 // 0x0C00 (2025.02.18) 增加 e_UserLocked/e_UserDeleted错误返回 // ox0D00 (2025.11.30) NetMessage增加idDevice #define LISTEN_PORT 12071 #define MAX_MSG_LENGTH 8192 #define MAX_PACK_SIZE 1400 #define MAX_STYLE_NUM 80 #define MAX_QNA_NUM 80 #define MAX_NOTICE_NUM 80 #define MSG_OPERATE_FAILED WM_USER + 0x105 #define MSG_OPERATE_PERCENT WM_USER + 0x106 #define MSG_OPERATE_COMPLETE WM_USER + 0x107 #define MSG_NETWORKMESSAGE WM_USER + 0x130 #define MSG_NETWORKERROR WM_USER + 0x131 #define URL_HOMEPAGE 0 //网站主页 #define URL_USERCENTER 1 //用户中心页 #define URL_SONGMANAGE 2 //歌曲管理页 #define URL_SOFTWARE 3 //软件下载页 #define URL_USERNOTICE 4 //用户消息页 #define URL_TECHFORUM 5 //技术论坛 #define URL_SHAREPLAY 6 //分享播放页 #define URL_JASONQUERY 7 //JASON #define URL_RECHARGE 8 //充值页 #define URL_VIPMEMBER 9 //VIP会员页 #define URL_SONGPLAY 10 //歌曲播放页 #define URL_COINSPEC 11 //唱作音符说明页 #define URL_EXTFONT 12 //扩展音色库下载页 #define URL_USERAGREEMENT 13 //用户协议页 #define URL_REGCODE 14 //注册验证码接口 #define URL_RESETPASS 15 //重置密码页 #pragma once enum EMessageType{ e_InvalidMessage, e_versionRequest = 0x01, e_versionResponse, e_connectRequest = 0x11, e_connectResponse, e_loginRequest = 0x21, e_loginResponse, e_verifyRequest, e_verifyResponse, e_purchaseRequest, e_purchaseResponse, e_registerRequest, e_registerResponse, e_checkPaymentRequest, e_checkPaymentResponse, e_payRequest, e_payResponse, e_iconRequest, e_iconResponse, e_logoffRequest, e_logoffResponse, e_webURLRequest = 0x31, e_webURLResponse, e_dataSendRequest = 0x41, e_dataSendResponse, e_dataReceiveRequest, e_dataReceiveResponse, e_styleUpdateRequest = 0x61, e_styleUpdateResponse, e_styleInfoRequest, e_styleInfoResponse, e_styleDataRequest, e_styleDataResponse, e_styleCheckRequest, e_styleCheckResponse, e_styleRecomRequest, e_styleRecomResponse, e_styleScoreRequest, e_styleScoreResponse, e_uploadStyleRequest = 0x81, e_uploadStyleResponse, e_uploadSongRequest, e_uploadSongResponse, e_qnaUpdateRequest = 0x91, e_qnaUpdateResponse, e_qnaSubmitRequest, e_qnaSubmitResponse, e_noticeUpdateRequest, e_noticeUpdateResponse, e_MessgeTypeEnd }; enum EExtraInfo{ e_RequestSuccess, e_UpdateNoNeed, //已是最新版本 e_UpdateOptional, //版本可选更新 e_UpdateMandatory, //版本强制更新 e_VerifyInsufficient, //账户余额不足 e_ReceiveComplete, //数据接收完成 e_ShareStyle = 0x100, //分享风格信息 e_CheckStyle = 0x101, //审核风格信息 e_RequestFailed = 0x8000, e_SocketError, e_WaitTimeout, e_DatabaseError, e_ParamError, e_LoginPasswordError, e_LoginUserNotExist, e_InvalidUserID, e_InvalidStyleID, e_UserCanceled, e_NoService, e_ServiceBusy, e_InvalidDataID, e_InvalidPackID, e_OutOfBound, e_InvalidData, e_InvalidAuthority, //无操作权限 e_CheckedAlready, //风格已被审核 e_UsernameExist, e_OpenFileFailed, e_NeedRepeat, //需重发消息 e_VipExceeded, //VIP用户设备数超限 e_UserLocked, //账户被冻结 e_UserDeleted, //账户已删除 e_ExtraEnd }; enum EUploadOperation{ e_UO_Create, e_UO_Distribute, e_UO_Share, e_UO_END }; #pragma pack (2) typedef struct tNetMessage{ unsigned char idDevice[6]; //设备号,一般为mac地址 unsigned short nSequenceNum; // 消息序列号,Request/Response匹配 unsigned short eMessageType; // 消息类型 unsigned short iExtra; // 额外信息 unsigned short nLength; // 消息体的有效长度 unsigned char byMessageBody[MAX_MSG_LENGTH]; // 消息体:消息参数部分 tNetMessage(){ memset( this, 0, sizeof(tNetMessage) ); }; } TNETMESSAGE; typedef struct { int iReq; } TIntRequest; typedef struct { int iResp; } TIntResponse; typedef struct { char sReq[256]; } TStringRequest; typedef struct { char sResp[256]; } TStringResponse; typedef struct { DWORD dwVersionMS; DWORD dwVersionLS; } TVersionRequest; typedef struct { DWORD dwVersionMS; //最新版本号 DWORD dwVersionLS; UINT tIssueDate; UINT nFileSize; UINT nDescribLen; char strDescrib[MAX_DESCRIB_LENGTH]; } TVersionResponse; typedef struct { UINT iClientType; UINT idUser; UINT tUpdateDateOrigin; UINT tUpdateDateShare; } TStyleUpdateRequest; typedef struct { WORD nOriginNum; WORD nShareNum; UINT tUpdateDateOrigin; UINT tUpdateDateShare; UINT idData; UINT nDataSize; } TStyleUpdateResponse; typedef struct { UINT nRecomNum; UINT aStyleIDs[MAX_STYLE_NUM]; } TStyleRecomResponse; typedef struct { UINT iType; UINT idStyle; } TStyleInfoRequest; typedef struct { UINT idData; UINT nDataSize; } TStyleInfoResponse; typedef struct { UINT iType; UINT idStyle; } TStyleDataRequest; typedef struct { UINT idData; UINT nDataSize; } TStyleDataResponse; typedef struct { UINT idUser; UINT idStyle; short iType; short scrUser; } TStyleScoreRequest; typedef struct { short scrUser; short scrAverage; } TStyleScoreResponse; typedef struct { UINT idChecker; //审核者ID UINT idStyle; WORD score; //0=未通过 WORD lenMsg; //问题描述信息长度 char strDescrib[MAX_DESCRIB_LENGTH]; } TStyleCheckRequest; typedef struct { UINT idStyle; } TStyleCheckResponse; typedef struct { UINT param; char strName[32]; char strPassword[80]; short isEmailOrMobile; } TRegisterRequest; typedef struct { UINT param; UINT idUser; char strNickname[32]; } TRegisterResponse; typedef struct { UINT param; char strName[32]; char strPassword[80]; // char idDevice[6]; } TLoginRequest; typedef struct { UINT param; char strNickname[32]; char strIconFile[32]; TACCOUNTINFO accountInfo; } TLoginResponse; typedef struct { UINT idUser; // char idDevice[6]; } TLogoffRequest; typedef struct { char strIconFile[32]; } TIconRequest; typedef struct { UINT idData; UINT nDataSize; } TIconResponse; typedef struct { UINT idUser; UINT dwMMParam; WORD wOperation; WORD wStyleNum; UINT aIdStyles[MAX_STYLE_NUM]; } TCheckPaymentRequest; typedef struct { UINT dwMMParam; int nUserBalance; int nPayment; int aStyleCost[MAX_STYLE_NUM]; } TCheckPaymentResponse; typedef struct { UINT idUser; // UINT dwMMParam; WORD wOperation; WORD wStyleNum; UINT aIdStyles[MAX_STYLE_NUM]; } TPayRequest; typedef struct { // UINT dwMMParam; int nUserBalance; } TPayResponse; typedef struct { UINT iType; //风格类型 1=批量上传 2=制作上传 3=分享上传 UINT idUser; UINT nDataSize; } TUploadStyleRequest; typedef struct { UINT idFile; } TUploadStyleResponse; typedef struct { UINT iClientType; UINT idUser; UINT nDataSize; } TUploadSongRequest; typedef struct { UINT idFile; } TUploadSongResponse; typedef struct { UINT idData; UINT idPacket; UINT nPackSize; char arrPacket[MAX_PACK_SIZE]; } TDataSendRequest; typedef struct { UINT idData; UINT idPacket; } TDataSendResponse; typedef struct { UINT idData; UINT idPacket; } TDataReceiveRequest; typedef struct { UINT idData; UINT idPacket; UINT nPackSize; char arrPacket[MAX_PACK_SIZE]; } TDataReceiveResponse; typedef struct { UINT iClientType; UINT tLastUpdateDate; UINT idUser; UINT nQnANum; UINT aIdQnAs[MAX_QNA_NUM]; } TQnAUpdateRequest; typedef struct { UINT tUpdateDate; UINT idData; UINT nDataSize; } TQnAUpdateResponse; typedef struct { DWORD dwVersionMS; DWORD dwVersionLS; UINT idUser; char strQuestion[320]; } TQnASubmitRequest; typedef struct { UINT idQnA; } TQnASubmitResponse; typedef struct { UINT idUser; UINT nNoticeNum; UINT aIdNotices[MAX_NOTICE_NUM]; } TNoticeUpdateRequest; typedef struct { UINT idData; UINT nDataSize; } TNoticeUpdateResponse; #pragma pack() bool ValidNetMessage(unsigned char* buf, int len); bool ReadNetMessage( unsigned char* buf, short len, TNETMESSAGE* pMsg ); bool WriteNetMessage( unsigned char* buf, short& len, TNETMESSAGE* pMsg ); int StyleDetail2Trans( TSTYLEDETAIL& detail, int &size, char *pData ); int StyleTrans2Detail( TSTYLEDETAIL& detail, int sizeData, char *pData ); int ShareInfo2Trans( TSTYLESHARE& detail, int &size, char *pData ); bool ShareTrans2Info( TSTYLESHARE& info, int sizeData, char *pData ); #ifdef _WIN32 #include using namespace std; int GBKToUTF8(const char *pcGBK, string & strUTF8); int UTF8ToGBK(const char *pcUTF8, string & strGBK); #endif #endif //_MESSAGEDEF_H_