445 lines
9.6 KiB
C++
445 lines
9.6 KiB
C++
#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 <string>
|
|
using namespace std;
|
|
int GBKToUTF8(const char *pcGBK, string & strUTF8);
|
|
int UTF8ToGBK(const char *pcUTF8, string & strGBK);
|
|
#endif
|
|
|
|
#endif //_MESSAGEDEF_H_
|