Files
DBService/common/MessageDef.h
T
2026-07-09 11:27:59 +08:00

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_