📄 account.h
字号:
/* Name: account.h *//* 用户计费系统头文件,定义用户计费系统中各种公共的数据结构、常量及函数。 */#ifndef ACCOUNT_H#define ACCOUNT_H/*#define DEBUG 0*/#define NULL 0/* 定义数据类型 */typedef unsigned char BYTE;typedef unsigned short int WORD; /* 双字节无符合整数 */typedef short int INT16; /* 占双字节的整型数,该定义要根据编译器的字长修改 */typedef long int INT32; /* 占4字节的整型数,该定义要根据编译器的字长修改 *//* 功能代码定义 *//* 功能代码不能为0 *//* 系统管理功能 */#define TRC_SYN 0x0385 /* 数据同步 */#define TRC_GQUQR 0x0386 /* 查询分组权限 */#define TRC_GQUS 0x0387 /* 设置分组权限 */#define TRC_CSUQR 0x0388 /* 查询消费类型 */#define TRC_CSUS 0x0389 /* 设置消费类型 *//* 用户管理功能 */#define TRC_SCRE 0x0001 /* 简单开户 */#define TRC_CCRE 0x0002 /* 综合开户 */#define TRC_UPSDOC 0x0003 /* 修改用户基本资料 */#define TRC_UPCDOC 0x0004 /* 修改用户综合资料 */#define TRC_GETPAS 0x0005 /* 取回密码 */#define TRC_ULOGIN 0x0006 /* 登录 */#define TRC_DROP 0x0007 /* 销户 */#define TRC_CHPWD 0x0008 /* 改密码 */#define TRC_CHUSER 0x0009 /* 改用户名 *//* 查询功能 */#define TRC_SDOCQR 0x0065 /* 帐号基本资料查询 */#define TRC_CDOCQR 0x0066 /* 帐号综合资料查询 */#define TRC_AMTQR 0x0067 /* 余额查询 */#define TRC_TRQR 0x0068 /* 明细查询 */#define TRC_AUQR 0x0069 /* 消费授权查询 *//* 交易功能 */#define TRC_TRS 0x00c9 /* 转帐 */#define TRC_SBT 0x00ca /* 科目划转 */#define TRC_FLUCT 0x00cb /* 增减 */#define TRC_CSU 0x00cc /* 消费 *//* 以下一些功能代码仅用于程序调试 */#define TRC_LTRAD 0x038a /* 列交易流水表 */#define TRC_LMOND 0x038b /* 列月结记录表 */#define TRC_LTLOG 0x038c /* 列TLOG 文件 */#define TRC_LUSER 0x038d /* 列用户基本信息表 */#define TRC_LUEXT 0x038e /* 列用户综合信息表 *//* 消费类型定义 *//* 本系统保留0~10的消费类型编号,其中0不使用,其它消费类型可由其它系统自行定义 */#define TSB_DAIL 1 /* 拨号上网费 */#define TSB_ACCCR 2 /* 开户费 */#define TSB_WEBSP 3 /* 网上购物 */#define TSB_DATQU 4 /* 数据查询 *//* 帐号状态代码定义 */#define TST_NORMAL 0 /* 正常,可进行交易 */#define TST_LOCK 1 /* 冻结,不能交易 */#define TST_DROP 2 /* 已被删除,不能交易也不能修改/* 用户级别定义 */#define TSL_NORMAL 0 /* normal */#define TSL_VIP 1 /* VIP */#define TSL_SP 2 /* SP */#define TSL_HC 3 /* HC *//* 交费方式 */#define TSC_CASH 1 /* 现金 */#define TSC_BANK 2 /* 银行托收 */ #define TSC_CARD 3 /* 信用卡 */#define TSC_FREE 4 /* 免费 */ /* 未定义帐号类型 *//* 交易通信结构中的常量 */#define L_ACCID 12#define L_PASSWD 12#define L_RESERVE 8#define L_BIRTH 8#define L_SEX 2#define L_NAME 40#define L_DOCID 40#define L_EMAIL 40#define L_ADDR 80#define L_PHONE 20#define L_BANK 20#define L_ACCOUNT 28#define L_QUESTION 40#define L_INTQUESTION 120#define L_CRAFT 20#define L_NOTE 40 #define LINE_PER_PAGE 10#define TS_PORT 8810 /* 端口 *//* 交易通信结构 */typedef struct transaction{ /* 交易数据头结构,所有的交易操作具有相同的交易头。*/ INT16 Tcode; /* in交易代码,指明要进行的交易操作 */ INT16 Version; /* in/out数据包的版本号, 为日后版本兼容保留, 目前填2 */ BYTE User[L_ACCID]; /* in操作的目标用户名 */ BYTE Operator[L_ACCID]; /* in 操作员的用户名, 若是帐号拥有者自己操作 时该域填入@或留空 */ BYTE Passwd[L_PASSWD]; /* in 操作员密码或用户密码 */ INT32 RetCode; /* out 返回交易流水号,无流水号的返回 0,当同 一交易返回的数据包重新发送时,所有重复 发送包的流水号相同*/ INT32 Time; /* In/out 输入客户端请求交易的时间印戳,客户端 必须保证不同的请求具有不同的时间印戳; 当同一交易请求数据重复发送时,具有相同的 时间印戳,且在期间不能发出其它的交易请求。 返回数据包不改变此数值,以便客户端验证。 */ BYTE Reserve[L_RESERVE]; /* 保留 */ BYTE Note[L_NOTE]; /* In/out输入交易说明,返回出错说明 */ /* 交易数据, 该数据结构根据不同的交易类型不同, 不同的结构存于同一存储空间 */ union { /* *************************系统管理功能*********************************** */ /* 查询分组权限 */ struct { INT16 Page; /* in查询页码,首页为第1页 */ INT16 Lastpg; /* out最后页面标志, 1-目前输出的是最后页面 */ struct { INT32 Gid; /* out 用户组编码 */ INT32 GpMask; /* out 组掩码,在进行权限判断时,仅比较掩码为1 的位,这样可同时对多个组设置权限 */ INT32 Ip; /* out 信任主机IP */ INT32 IpMask; /* out IP掩码 */ INT32 PeriodTm; /* out 可使用时段,0~23bit对应24小时置1为允许使用 */ BYTE Wday; /* out 0~6bit对应一周各天,置1为允许使用 */ INT32 SmgMask; /* out 系统管理功能掩码,每个bit对应一个功能号 */ INT32 UmgMask; /* out 对自己帐号使用用户管理功能掩码 */ INT32 UquMask; /* out 对自己帐号使用查询功能掩码 */ INT32 OquMask; /* out 对其它帐号使用查询功能掩码 */ INT32 MgaGid; /* out 可管理的GID */ INT32 GidMask; /* out GID掩码 */ INT32 MumgMask; /* out 对被管理的组使用用户管理功能掩码 */ INT32 MquMask; /* out 对被管理的组使用查询功能掩码 */ INT32 MtradMask; /* out 对被管理的组使用交易功能掩码 */ BYTE Reserve[L_RESERVE]; /* 保留 */ BYTE Note[L_NOTE]; /* out 说明 */ } line[LINE_PER_PAGE]; }gquqr; /* 设置分组权限 */ struct { INT32 Gid; /* in 用户组编码 */ INT32 GpMask; /* in 组掩码,在进行权限判断时,仅比较掩码为1 的位,这样可同时对多个组设置权限 */ INT32 Ip; /* in 信任主机IP */ INT32 IpMask; /* in IP掩码 */ INT32 PeriodTm; /* in 可使用时段,0~23bit对应24小时置1为允许使用 */ BYTE Wday; /* in 0~6bit对应一周各天,置1为允许使用 */ BYTE Reserve[L_RESERVE]; /* 保留 */ INT32 SmgMask; /* in 系统管理功能掩码,每个bit对应一个功能号 */ INT32 UmgMask; /* in 对自己帐号使用用户管理功能掩码 */ INT32 UquMask; /* in 对自己帐号使用查询功能掩码 */ INT32 OquMask; /* in 对其它帐号使用查询功能掩码 */ INT32 MgaGid; /* in 可管理的GID */ INT32 GidMask; /* in GID掩码 */ INT32 MumgMask; /* in 对被管理的组使用用户管理功能掩码 */ INT32 MquMask; /* in 对被管理的组使用查询功能掩码 */ INT32 MtradMask; /* in 对被管理的组使用交易功能掩码 */ BYTE Note[L_NOTE]; /* in 说明 */ }gqus; /* 查询消费类型 */ struct { INT16 Page; /* in查询页码,首页为第1页 */ INT16 Lastpg; /* out最后页面标志, 1-目前输出的是最后页面 */ struct { INT16 CsuType; /* out消费类型编码 */ BYTE Ecredit; /* Out允许使用信用额标志,1-允许 */ BYTE Status; /* Out状态,0-正常,1-锁定,2-注销 */ INT32 PerCash; /* Out每单位消费扣减现金额,0为不允许使用现金消费 */ INT32 PerPoint; /* Out每单位消费扣减积分额,0为不允许使用积分消费 */ float VIP; /* Out 用户优惠率 */ float SP; /* Out 用户优惠率 */ float HC; /* Out 用户优惠率 */ float Normal; /* Out 用户优惠率 */ INT32 Umask; /* Out 可使用的用户类型掩码 */ BYTE Note[L_NOTE]; /* Out 说明 */ }line[LINE_PER_PAGE]; }csuqr; /* 设置消费类型 */ struct { INT16 CsuType; /* in 消费类型编码 */ BYTE Ecredit; /* in 允许使用信用额标志,1-允许 */ BYTE Status; /* in 状态,0-正常,1-锁定,2-注销 */ INT32 PerCash; /* in 每单位消费扣减现金额,0为不允许使用现金消费 */ INT32 PerPoint; /* in 每单位消费扣减积分额,0为不允许使用积分消费 */ float VIP; /* in 用户优惠率 */ float SP; /* in 用户优惠率 */ float HC; /* in 用户优惠率 */ float Normal; /* in 用户优惠率 */ INT32 Umask; /* in 可使用的用户类型掩码 */ BYTE Note[L_NOTE]; /* in 说明 */ }csus; /* *****************************列用户基本信息表******************************* */ struct { INT16 Page; /* in查询页码,首页为第1页 */ INT16 Lastpg; /* out最后页面标志, 1-目前输出的是最后页面 */ struct { INT32 Uid;/* 用户id */ BYTE User[L_ACCID]; /* 用户名 */ INT32 Gid; /* 组id */ }line[LINE_PER_PAGE]; }luser;/* *******************************用户管理功能********************************* */ /* 简单开户 */ struct { BYTE Passwd[L_PASSWD]; /* in用户初始密码 */ INT32 Uid; /* Out用户标识码 */ INT32 Gid; /* in用户组标识码 */ BYTE Ulevel; /* 用户级别: 1-VIP, 2-SP, 3-HC, 4-normal */ INT32 PeriodTm; /* In可使用时段,0~23bit对应24小时置1为允许 使用 */ BYTE Wday; /* In 0~6bit对应一周各天,置1为允许使用 */ BYTE Status; /* In 帐号状态 */ BYTE Type; /* In 帐号类型 */ BYTE CostType; /* In 交费方式 */ INT32 AccvalidTm; /* In 帐号起始有效时间 */ INT32 AccexpTm; /* In 帐号失效时间 */ INT32 CashAmt; /* In现金余额 */ INT32 PointAmt; /* In积分余额 */ INT32 Credit; /* In信用额 */ INT32 PerLimit; /* In每次最大消费额 */ INT32 DayLimit; /* In每天最大消费额 */ }scre; /* 综合开户 */ struct { BYTE Passwd[L_PASSWD]; /* in用户初始密码 */ INT32 Uid; /* Out用户标识码 */ INT32 Gid; /* in用户组标识码 */ BYTE Ulevel; /* 用户级别: 1-VIP, 2-SP, 3-HC, 4-normal */ INT32 PeriodTm; /* In可使用时段,0~23bit对应24小时置1为允许 使用 */ BYTE Wday; /* In 0~6bit对应一周各天,置1为允许使用 */ BYTE Status; /* In 帐号状态 */ BYTE Type; /* In 帐号类型 */ BYTE CostType; /* In 交费方式 */ INT32 AccvalidTm; /* In 帐号起始有效时间 */ INT32 AccexpTm; /* In 帐号失效时间 */ INT32 CashAmt; /* In现金余额 */ INT32 PointAmt; /* In积分余额 */ INT32 Credit; /* In信用额 */ INT32 PerLimit; /* In每次最大消费额 */ INT32 DayLimit; /* In每天最大消费额 */ BYTE Name[L_NAME]; /* in 用户全名 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -