public ConnectionCode QueryAccount() { UFXFunctionCode functionCode = UFXFunctionCode.QueryAccount; FunctionItem functionItem = ConfigManager.Instance.GetFunctionConfig().GetFunctionItem(functionCode); if (functionItem == null || functionItem.RequestFields == null || functionItem.RequestFields.Count == 0) { return(ConnectionCode.ErrorLogin); } CT2BizMessage bizMessage = new CT2BizMessage(); //初始化 bizMessage.SetFunction((int)functionCode); bizMessage.SetPacketType(CT2tag_def.REQUEST_PACKET); //业务包 CT2Packer packer = new CT2Packer(2); packer.BeginPack(); foreach (FieldItem item in functionItem.RequestFields) { packer.AddField(item.Name, item.Type, item.Width, item.Scale); } foreach (FieldItem item in functionItem.RequestFields) { switch (item.Name) { case "user_token": packer.AddStr(LoginManager.Instance.LoginUser.Token); break; case "account_code": packer.AddStr(""); break; default: break; } } packer.EndPack(); unsafe { bizMessage.SetContent(packer.GetPackBuf(), packer.GetPackLen()); } var parser = _t2SDKWrap.SendSync2(bizMessage); packer.Dispose(); bizMessage.Dispose(); if (parser.ErrorCode != ConnectionCode.Success) { UFXLogger.Error(logger, functionCode, "账户查询失败"); return(ConnectionCode.ErrorConn); } var response = T2ErrorHandler.Handle(parser); if (T2ErrorHandler.Success(response.ErrorCode)) { if (parser.DataSets.Count > 1) { var dataSet = parser.DataSets[1]; foreach (var dataRow in dataSet.Rows) { AccountItem acc = new AccountItem(); acc.AccountCode = dataRow.Columns["account_code"].GetStr(); acc.AccountName = dataRow.Columns["account_name"].GetStr(); string accType = dataRow.Columns["account_type"].GetStr(); int temp; if (int.TryParse(accType, out temp)) { acc.AccountType = (FundAccountType)temp; } LoginManager.Instance.AddAccount(acc); } } return(ConnectionCode.Success); } else { UFXLogger.Error(logger, functionCode, response); return(ConnectionCode.ErrorFailContent); } }
public ConnectionCode Login(LoginUser user) { UFXFunctionCode functionCode = UFXFunctionCode.Login; FunctionItem functionItem = ConfigManager.Instance.GetFunctionConfig().GetFunctionItem(functionCode); if (functionItem == null || functionItem.RequestFields == null || functionItem.RequestFields.Count == 0) { return(ConnectionCode.ErrorLogin); } LoginManager.Instance.LoginUser = user; CT2BizMessage bizMessage = new CT2BizMessage(); //初始化 bizMessage.SetFunction((int)functionCode); bizMessage.SetPacketType(CT2tag_def.REQUEST_PACKET); //业务包 CT2Packer packer = new CT2Packer(2); packer.BeginPack(); foreach (FieldItem item in functionItem.RequestFields) { packer.AddField(item.Name, item.Type, item.Width, item.Scale); } foreach (FieldItem item in functionItem.RequestFields) { switch (item.Name) { case "operator_no": packer.AddStr(user.Operator); break; case "password": packer.AddStr(user.Password); break; case "mac_address": { packer.AddStr(ConfigManager.Instance.GetTerminalConfig().MacAddress); } break; case "op_station": { packer.AddStr("www.htsec.com"); } break; case "ip_address": { packer.AddStr(ConfigManager.Instance.GetTerminalConfig().IPAddress); } break; case "hd_volserial": { packer.AddStr(""); } break; case "authorization_id": { //TODO: packer.AddStr("authorization_id"); } break; default: if (item.Type == UFXPackFieldType.IntType) { packer.AddInt(-1); } else if (item.Type == UFXPackFieldType.StringType || item.Type == UFXPackFieldType.CharType) { packer.AddStr(item.Name); } else { packer.AddStr(item.Name); } break; } } packer.EndPack(); unsafe { bizMessage.SetContent(packer.GetPackBuf(), packer.GetPackLen()); } var parser = _t2SDKWrap.SendSync2(bizMessage); packer.Dispose(); bizMessage.Dispose(); var ret = parser.ErrorCode; if (ret == ConnectionCode.Success) { string token = string.Empty; string version = string.Empty; var response = T2ErrorHandler.Handle(parser); if (T2ErrorHandler.Success(response.ErrorCode)) { if (parser.DataSets[1].Rows[0].Columns.ContainsKey("user_token")) { token = parser.DataSets[1].Rows[0].Columns["user_token"].GetStr(); } if (parser.DataSets[1].Rows[0].Columns.ContainsKey("version_no")) { version = parser.DataSets[1].Rows[0].Columns["version_no"].GetStr(); } string msg = string.Format("Login success - token: [{0}], version: [{1}]", token, version); UFXLogger.Info(logger, functionCode, msg); } else { UFXLogger.Error(logger, functionCode, response); } if (!string.IsNullOrEmpty(token)) { LoginManager.Instance.LoginUser.Token = token; ret = ConnectionCode.Success; } else { ret = ConnectionCode.ErrorLogin; } } return(ret); }
public DataParser SubmitSync <T>(UFXFunctionCode functionCode, List <T> requests) { DataParser parser = new DataParser(); FunctionItem functionItem = ConfigManager.Instance.GetFunctionConfig().GetFunctionItem(functionCode); if (functionItem == null || functionItem.RequestFields == null || functionItem.RequestFields.Count == 0) { string msg = string.Format("提交UFX请求号[{0}]未定义!", functionCode); logger.Error(msg); parser.ErrorCode = ConnectionCode.ErrorNoFunctionCode; return(parser); } string userToken = LoginManager.Instance.LoginUser.Token; if (string.IsNullOrEmpty(userToken)) { string msg = string.Format("提交UFX请求[{0}]令牌失效!", functionCode); logger.Error(msg); parser.ErrorCode = ConnectionCode.ErrorLogin; return(parser); } CT2BizMessage bizMessage = new CT2BizMessage(); //初始化 bizMessage.SetFunction((int)functionCode); bizMessage.SetPacketType(CT2tag_def.REQUEST_PACKET); //业务包 CT2Packer packer = new CT2Packer(2); packer.BeginPack(); foreach (FieldItem item in functionItem.RequestFields) { packer.AddField(item.Name, item.Type, item.Width, item.Scale); } var dataFieldMap = UFXDataBindingHelper.GetProperty <T>(); foreach (var request in requests) { foreach (FieldItem item in functionItem.RequestFields) { if (dataFieldMap.ContainsKey(item.Name)) { SetRequestField <T>(ref packer, request, item, dataFieldMap); } else { SetRequestDefaultField(ref packer, item, userToken); } } } packer.EndPack(); #if DEBUG OutputParam <T>(functionCode, requests); #endif unsafe { bizMessage.SetContent(packer.GetPackBuf(), packer.GetPackLen()); } parser = _t2SDKWrap.SendSync2(bizMessage); return(parser); }