/// <summary> /// 初始化设备列表 /// </summary> public static void InitDeviceInfo() { HeadListMCUID.Clear(); HeadListAddress.Clear(); string sql = string.Format("select * from Base_DeviceInfo"); //DataAccess ac = new DataAccess(); //DataTable dt = ac.ExecuteQueryReturnTable(sql); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable(sql); if (dt.Rows.Count == 0) { return; } foreach (DataRow row in dt.Rows) { string MCUID = row["SN"].ToString(); 机头信息 head = CreateHeadByFull(MCUID); if (head != null) { HeadListMCUID.Add(MCUID, head); 机头绑定信息 bind = new 机头绑定信息(); bind.控制器令牌 = head.常规.路由器编号; bind.短地址 = head.常规.机头地址; bind.长地址 = MCUID; HeadListAddress.Add(bind); } } }
/// <summary> /// 根据长地址创建机头信息 /// 终端设备在申请短地址时才允许调用 /// </summary> /// <param name="MCUID"></param> /// <returns></returns> static 机头信息 CreateHeadByFull(string MCUID) { string sql = string.Format("select * from Base_DeviceInfo where SN='{0}'", MCUID); //DataAccess ac = new DataAccess(); //DataTable dt = ac.ExecuteQueryReturnTable(sql); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable(sql); if (dt.Rows.Count == 0) { return(null); } DataRow row = dt.Rows[0]; 机头信息 head = new 机头信息(); head.类型 = (设备类型)Convert.ToInt32(row["DeviceType"]); head.令牌 = row["token"].ToString(); head.二维码 = row["qrurl"].ToString(); if (head.类型 == 设备类型.出票器 || head.类型 == 设备类型.卡头) { sql = string.Format("select m.HeadAddress,m.GroupID,d.Token,d.ID,d.SN,d.MerchID from Data_MerchSegment m,Base_DeviceInfo d where m.ParentID=d.ID and m.DeviceID='{0}'", row["ID"].ToString()); } else { sql = string.Format("select m.HeadAddress,d.Token,d.ID,d.SN,d.MerchID from Data_MerchDevice m,Base_DeviceInfo d where m.ParentID=d.ID and m.DeviceID='{0}'", row["ID"].ToString()); } //DataTable tp = ac.ExecuteQueryReturnTable(sql); DataTable tp = XCCloudRS232BLL.ExecuterSqlToTable(sql); if (tp.Rows.Count == 0) { return(null); } DataRow rp = tp.Rows[0]; head.常规.路由器编号 = rp["Token"].ToString(); head.常规.机头长地址 = MCUID; head.常规.机头地址 = rp["HeadAddress"].ToString(); head.常规.机头编号 = rp["ID"].ToString(); head.商户号 = rp["MerchID"].ToString(); if (head.类型 == 设备类型.出票器 || head.类型 == 设备类型.卡头) { head.常规.游戏机编号 = rp["GroupID"].ToString(); } 机头绑定信息 bind = new 机头绑定信息(); bind.控制器令牌 = head.常规.路由器编号; bind.短地址 = head.常规.机头地址; bind.长地址 = MCUID; HeadListAddress.Add(bind); sql = string.Format("select m.StorePassword from Base_DeviceInfo d,Base_MerchInfo m where d.MerchID=m.ID and d.SN='{0}'", MCUID); //dt = ac.ExecuteQueryReturnTable(sql); dt = XCCloudRS232BLL.ExecuterSqlToTable(sql); if (dt.Rows.Count > 0) { head.店密码 = dt.Rows[0]["StorePassword"].ToString(); } return(head); }
public object deleteGroup(Dictionary <string, object> dicParas) { try { string MobileToken = dicParas.ContainsKey("mobileToken") ? dicParas["mobileToken"].ToString() : string.Empty; //获取手机令牌 string GroupID = dicParas.ContainsKey("groupID") ? dicParas["groupID"].ToString() : string.Empty; //获取分组ID if (GroupID == "") { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "分组ID不能为空")); } if (MobileToken == "") { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "手机令牌不能为空")); } string mobile = string.Empty; if (!MobileTokenBusiness.ExistToken(MobileToken, out mobile)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "手机token无效")); } string sql = "exec deleteDataGameInfo @GroupID,@Return output"; SqlParameter[] parameters = new SqlParameter[2]; parameters[0] = new SqlParameter("@GroupID", GroupID); parameters[1] = new SqlParameter("@Return", 0); parameters[1].Direction = System.Data.ParameterDirection.Output; XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.T, "")); } catch (Exception e) { throw e; } }
public 会员卡信息 GetMemberInfo(string ICCardID, string Code) { //DataAccess ac = new DataAccess(); string sql = "select m.* from t_member m,Base_DeviceInfo d where m.MerchID=d.MerchID and d.Token='" + Code + "' and m.ICCardID='" + ICCardID + "'"; //DataTable dt = ac.ExecuteQueryReturnTable(sql); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable(sql); if (dt.Rows.Count > 0) { DataRow row = dt.Rows[0]; 会员卡信息 card = new 会员卡信息(); card.备注 = row["Note"].ToString(); card.币余额 = Convert.ToInt32(row["Balance"].ToString()); card.动态密码 = Convert.ToInt32(row["RepeatCode"].ToString()); card.会员卡号 = row["ICCardID"].ToString(); card.机头上下分 = true; card.级别规则是否允许退币到卡里 = true; card.票余额 = Convert.ToInt32(row["Lottery"].ToString()); card.商户号 = row["MerchID"].ToString(); card.锁会员 = (row["Lock"].ToString() == "1"); card.锁机头 = false; card.微信号 = row["OpenID"].ToString(); return(card); } return(null); }
public Ask设备参数申请(Info.HeadInfo.机头绑定信息 Bind) { try { Info.HeadInfo.机头信息 机头 = Info.HeadInfo.GetHeadInfoByShort(Bind); //DataAccess ac = new DataAccess(); //DataTable dt = ac.ExecuteQueryReturnTable(string.Format("select * from Base_DeviceInfo where SN='{0}'", 机头.常规.机头长地址)); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable(string.Format("select * from Base_DeviceInfo where SN='{0}'", 机头.常规.机头长地址)); if (dt.Rows.Count > 0) { DataRow row = dt.Rows[0]; 机头地址 = Convert.ToByte(Bind.短地址, 16); switch (row["type"].ToString()) { case "售币机": 设备类型 = 0x01; break; case "存币机": 设备类型 = 0x02; break; case "提币机": case "自助提币机": 设备类型 = 0x03; break; case "碎票机": 设备类型 = 0x04; break; case "投币机": 设备类型 = 0x05; break; } string v = "000000"; v += row["motor2"].ToString(); v += row["motor1"].ToString(); 马达配置 = Convert.ToByte(v, 2); 数码管类型 = Convert.ToByte(row["nixie_tube_type"].ToString()); 马达1比例 = Convert.ToByte(row["motor1_coin"].ToString()); 马达2比例 = Convert.ToByte(row["motor2_coin"].ToString()); 存币箱最大存币数 = Convert.ToUInt16(row["alert_value"].ToString()); 本店卡校验密码 = 机头.店密码; 是否允许打印 = Convert.ToByte(row["AllowPrint"].ToString()); try { SSR电平 = Convert.ToByte(row["SSR"].ToString()); } catch { SSR电平 = 0x00; } isSuccess = true; } } catch { throw; } }
public static void InitRule() { try { //DataAccess ac = new DataAccess(); 游戏机投币规则列表 = new List <游戏机投币规则>(); //DataTable dt = ac.ExecuteQueryReturnTable("select * from t_push_rule"); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable("select * from t_push_rule"); if (dt.Rows.Count > 0) { foreach (DataRow r in dt.Rows) { 游戏机投币规则 rule = new 游戏机投币规则(); rule.游戏机编号 = r["game_id"].ToString(); rule.会员级别 = Convert.ToInt32(r["member_level_id"]); rule.结束时间 = Convert.ToDateTime(DateTime.Now.ToLongDateString() + " " + Convert.ToDateTime(r["end_time"]).ToString("HH:mm:ss")); rule.开始时间 = Convert.ToDateTime(DateTime.Now.ToLongDateString() + " " + Convert.ToDateTime(r["begin_time"]).ToString("HH:mm:ss")); rule.扣币数量 = Convert.ToInt32(r["coin"]); rule.优先级 = Convert.ToInt32(r["level"]); rule.允许退币 = (r["allow_out"].ToString() == "是"); rule.允许投币 = (r["allow_in"].ToString() == "是"); rule.周 = Convert.ToInt32(r["week"]); 游戏机投币规则列表.Add(rule); } } } catch (Exception ex) { LogHelper.WriteLog(ex); } }
public void Update() { string sql = string.Format("update t_member set Balance='{0}',Lottery='{1}' where ICCardID='{2}' and MerchID='{3}'", 币余额, 票余额, 会员卡号, 商户号); //DataAccess ac = new DataAccess(); //ac.Execute(sql); XCCloudRS232BLL.ExecuteSql(sql); }
/// <summary> /// 判断机头地址是否合法 /// </summary> /// <param name="Code">路由器令牌</param> /// <param name="HeadAddress">机头地址</param> /// <returns></returns> public bool ExistsHeadInfo(string Code, string HeadAddress) { //DataAccess ac = new DataAccess(); //DataTable dt = ac.ExecuteQueryReturnTable("select d.ID from Base_DeviceInfo d,Data_MerchSegment m where d.ID=m.ParentID and m.HeadAddress='" + HeadAddress + "' and d.Token='" + Code + "'"); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable("select d.ID from Base_DeviceInfo d,Data_MerchSegment m where d.ID=m.ParentID and m.HeadAddress='" + HeadAddress + "' and d.Token='" + Code + "'"); return(dt.Rows.Count > 0); }
/// <summary> /// 获取终端设备集合 /// </summary> /// <returns></returns> public static DataTable GetTerminalDeviceList() { #region Sql语句 string strSql = @" SELECT c.Token AS RouterToken, a.ID AS DeviceId, a.Token AS DeviceToken, a.DeviceName, a.DeviceType, a.Status AS [State], a.SN, b.HeadAddress, b.GroupID FROM Base_DeviceInfo a INNER JOIN Data_MerchSegment b ON b.DeviceID = a.ID INNER JOIN Base_DeviceInfo c ON c.ID = b.ParentID "; #endregion DataTable table = XCCloudRS232BLL.ExecuterSqlToTable(strSql); return(table); }
/// <summary> /// 统计指定存币机营收 /// </summary> /// <returns></returns> public static DataSet GetSaveCoinMachineRevenue(int merchId, int deviceId, string sDate = null, string eDate = null, int pageIndex = 1, int pageSize = 10) { string strWhere = string.Empty; if (!string.IsNullOrWhiteSpace(sDate) && string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime >= '{0}'", sDate); } else if (string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime <= '{0}'", eDate); } else if (!string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } else { sDate = DateTime.Now.ToString("yyyy-MM-dd"); eDate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } #region Sql语句 string strSql = @" --存币 SELECT c.DeviceName, b.HeadAddress, ISNULL(SUM(Coins), 0) AS SaveCoins FROM flw_485_savecoin a INNER JOIN Data_MerchDevice b ON b.DeviceID = a.DeviceID INNER JOIN Base_DeviceInfo c ON c.ID = a.DeviceID WHERE a.MerchID = {0} AND a.DeviceID = {1} {2} GROUP BY c.DeviceName, b.HeadAddress ; SELECT ICCardID, MemberName, Mobile, '存币' AS FlowType, Coins, Balance, CONVERT(varchar(100), RealTime, 120) AS RealTime FROM ( SELECT ROW_NUMBER() OVER (ORDER BY RealTime DESC) rownumber , f.ICCardID, m.MemberName, m.Mobile, f.Coins, f.Balance, f.RealTime FROM flw_485_savecoin f INNER JOIN t_member m ON m.ICCardID = f.ICCardID WHERE f.MerchID = {0} {2} ) AS a WHERE rownumber BETWEEN {3} AND {4} "; #endregion strSql = string.Format(strSql, merchId, deviceId, strWhere, (pageIndex - 1) * pageSize + 1, pageIndex * pageSize); DataSet ds = XCCloudRS232BLL.ExecuterSqlToDataSet(strSql); return(ds); }
/// <summary> /// 控制器详细信息 /// </summary> /// <returns></returns> public static DataTable GetRouterDetail() { #region Sql语句 string strSql = @" SELECT a.ID, a.Token AS DeviceToken, a.DeviceName, a.DeviceType, a.SN, a.Status, b.MerchName, b.Mobile, b.State FROM Base_DeviceInfo a INNER JOIN Base_MerchInfo b ON a.MerchID = b.ID WHERE a.DeviceType = 0 "; #endregion DataTable table = XCCloudRS232BLL.ExecuterSqlToTable(strSql); return(table); }
/// <summary> /// 按控制器查询外设游戏币营收 /// </summary> /// <returns></returns> public static DataSet GetRoutersAmount(int merchId, Nullable <int> routerId = null, string sDate = null, string eDate = null) { string strWhere = string.Empty; if (!string.IsNullOrWhiteSpace(sDate) && string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime >= '{0}'", sDate); } else if (string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime <= '{0}'", eDate); } else if (!string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } else { sDate = DateTime.Now.ToString("yyyy-MM-dd"); eDate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } #region Sql语句 string strSql = @" --存币 SELECT c.DeviceName, b.HeadAddress, ISNULL(SUM(Coins), 0) AS SaveCoins FROM flw_485_savecoin a INNER JOIN Data_MerchDevice b ON b.DeviceID = a.DeviceID INNER JOIN Base_DeviceInfo c ON c.ID = a.DeviceID WHERE a.MerchID = {0} AND b.ParentID = {1} {2} GROUP BY c.DeviceName, b.HeadAddress ; --提币 SELECT c.DeviceName, b.HeadAddress, ISNULL(SUM(a.Coins), 0) AS SaleCoins FROM flw_coin_sale a INNER JOIN Data_MerchDevice b ON b.DeviceID = a.DeviceID INNER JOIN Base_DeviceInfo c ON c.ID = a.DeviceID WHERE a.WorkType IN (3,6,7) AND a.MerchID = {0} AND b.ParentID = {1} {2} GROUP BY c.DeviceName, b.HeadAddress ; "; #endregion strSql = string.Format(strSql, merchId, routerId, strWhere); DataSet ds = XCCloudRS232BLL.ExecuterSqlToDataSet(strSql); return(ds); }
public static void RefreshFreeRule() { try { //DataAccess ac = new DataAccess(); 当前送分规则 = new List <送分规则>(); //DataTable dt = ac.ExecuteQueryReturnTable("select * from t_game_free_rule where GETDATE() BETWEEN StartTime and EndTime and State='启用'"); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable("select * from t_game_free_rule where GETDATE() BETWEEN StartTime and EndTime and State='启用'"); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { 送分规则 gz = new 送分规则(); gz.规则编号 = row["ID"].ToString(); gz.会员级别 = row["MemberLevelID"].ToString(); gz.结束时间 = Convert.ToDateTime(row["EndTime"]); gz.开始时间 = Convert.ToDateTime(row["StartTime"]); gz.扣币数 = Convert.ToInt32(row["NeedCoin"]); gz.启用状态 = row["State"].ToString(); gz.送币数 = Convert.ToInt32(row["FreeCoin"]); gz.游戏机编号 = row["GameID"].ToString(); gz.最小退币数 = Convert.ToInt32(row["ExitCoin"]); var r = 当前送分规则.Where(p => p.规则编号 == row["ID"].ToString()); if (r.Count() > 0) { 送分规则 gz1 = new 送分规则(); r.First().会员级别 = gz.会员级别; r.First().结束时间 = gz.结束时间; r.First().开始时间 = gz.开始时间; r.First().扣币数 = gz.扣币数; r.First().启用状态 = gz.启用状态; r.First().送币数 = gz.送币数; r.First().游戏机编号 = gz.游戏机编号; r.First().最小退币数 = gz.最小退币数; } else { 当前送分规则.Add(gz); } } } } catch (Exception ex) { LogHelper.WriteLog(ex); } }
public object GetFoods(Dictionary <string, object> dicParas) { try { string MobileToken = dicParas.ContainsKey("mobileToken") ? dicParas["mobileToken"].ToString() : string.Empty;//获取手机令牌 string mobile = string.Empty; IMerchService merchService = BLLContainer.Resolve <IMerchService>("XCCloudRS232"); var merchlist = merchService.GetModels(x => x.Token == MobileToken && x.State == 1).FirstOrDefault <Base_MerchInfo>(); if (merchlist == null) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "手机令牌无效")); } string FoodID = dicParas.ContainsKey("foodid") ? dicParas["foodid"].ToString() : string.Empty; //获取套餐ID string DeviceToken = dicParas.ContainsKey("deviceToken") ? dicParas["deviceToken"].ToString() : string.Empty; //获取设备token var devicelist = DeviceBusiness.GetDeviceModel(DeviceToken); if (devicelist == null) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "设备令牌无效")); } string sql = "select * from ("; sql += "select a.FoodID,FoodName,a.FoodPrice,a.CoinQuantity,a.IsQuickFood,a.FoodState,a.DeviceID,b.*from (select * from t_foods) a, (select id,DeviceName from Base_DeviceInfo where Status='1') as b where a.DeviceID=b.ID "; sql += ")b"; sql += " where FoodState='1'and DeviceID='" + devicelist.ID + "' "; if (FoodID != "") { int ID = int.Parse(FoodID); sql += " and FoodID='" + ID + "' "; } sql += " order by ID "; DataSet ds1 = XCCloudRS232BLL.ExecuteQuerySentence(sql, null); DataTable dt1 = ds1.Tables[0]; if (dt1.Rows.Count > 0) { var StoreNamelist = Utils.GetModelList <FoodsModel>(dt1).ToList(); FoodsModellist foodsModellist = new FoodsModellist(); foodsModellist.Lists = StoreNamelist; return(ResponseModelFactory <FoodsModellist> .CreateModel(isSignKeyReturn, foodsModellist)); } return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "未查询到套餐信息")); } catch (Exception e) { throw e; } }
void UpdateAlertDB(string headAddress, bool AlertValue, string AlertType, int lockGame, string Code) { string sql = ""; if (AlertValue) { sql = string.Format("if not exists(select * from flw_game_alarm where AlertContent like '{2}' and State='0' and Segment='{0}' and HeadAddress='{1}') begin INSERT INTO flw_game_alarm (ICCardID,Segment,HeadAddress,AlertType,HappenTime,State,LockGame,LockMember,AlertContent) VALUES (0,'{0}','{1}','{2}',GETDATE(),0,{3},0,'{2}') end", Code, headAddress, AlertType, lockGame); } else { sql = string.Format("UPDATE flw_game_alarm SET EndTime=GETDATE(),State=1 where Segment='{0}' and HeadAddress='{1}' and AlertType='{2}' and State=0", Code, headAddress, AlertType); } //DataAccess ac = new DataAccess(); //ac.Execute(sql); XCCloudRS232BLL.ExecuteSql(sql); }
/// <summary> /// 会员详细信息 /// </summary> /// <returns></returns> public static DataTable GetMemberDetail(string memberId) { string strWhere = string.Empty; if (!string.IsNullOrWhiteSpace(memberId)) { strWhere = string.Format("WHERE MemberID = {0}", memberId); } #region Sql语句 string strSql = @" SELECT ICCardID, MemberName, Mobile, Birthday, CertificalID, Balance, Lottery, Point, [Type], JoinTime, EndDate, MemberPassword, Note, Lock, LockDate FROM t_member {0} "; #endregion strSql = string.Format(strSql, strWhere); DataTable table = XCCloudRS232BLL.ExecuterSqlToTable(strSql); return(table); }
public object removeDevice(Dictionary <string, object> dicParas) { try { string errMsg = string.Empty; string mobileToken = dicParas.ContainsKey("mobileToken") ? dicParas["mobileToken"].ToString() : string.Empty; string deviceToken = dicParas.ContainsKey("deviceToken") ? dicParas["deviceToken"].ToString() : string.Empty; Base_MerchInfo merch = MerchBusiness.GetMerchModel(mobileToken); if (merch.IsNull()) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "用户令牌无效")); } Base_DeviceInfo device = DeviceBusiness.GetDeviceModel(deviceToken); if (device.IsNull()) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "设备令牌无效")); } //设备所属商户不是当前商户 if (device.MerchID != merch.ID) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "该设备已被其他商户绑定,没有权限操作该设备")); } //开始解除绑定 device.MerchID = 0; device.Status = (int)DeviceStatusEnum.未激活; DeviceTypeEnum currDeviceType = (DeviceTypeEnum)device.DeviceType; bool ret = false; switch (currDeviceType) { case DeviceTypeEnum.Router: { string sql = string.Format("exec RemoveMerchRouter {0}", device.ID); XCCloudRS232BLL.ExecuteSql(sql); //ret = DeviceBusiness.UpdateDevice(device); } break; case DeviceTypeEnum.SlotMachines: case DeviceTypeEnum.DepositMachine: { //获取外设绑定关系实体 Data_MerchDevice md = MerchDeviceBusiness.GetMerchDeviceModel(device.ID); using (var transactionScope = new System.Transactions.TransactionScope(TransactionScopeOption.RequiresNew)) { DeviceBusiness.UpdateDevice(device); ret = MerchDeviceBusiness.DeleteMerchDevice(md); transactionScope.Complete(); } } break; case DeviceTypeEnum.Clerk: case DeviceTypeEnum.Terminal: { //获取终端绑定关系实体 Data_MerchSegment ms = MerchSegmentBusiness.GetMerchSegmentModel(device.ID); using (var transactionScope = new System.Transactions.TransactionScope(TransactionScopeOption.RequiresNew)) { DeviceBusiness.UpdateDevice(device); ret = MerchSegmentBusiness.DeleteMerchSegment(ms); transactionScope.Complete(); } } break; } if (ret) { DeviceStatusBusiness.SetDeviceState(device.Token, DeviceStatusEnum.未激活.ToDescription()); } return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.T, "")); } catch (Exception e) { throw e; } }
public Recv机头卡片报警指令(FrameData f, DateTime RecvDateTime) { RecvData = f; 机头地址 = PubLib.Hex2String(f.commandData[0]); if (f.commandLength < 12) { return; } IC卡号码 = Encoding.ASCII.GetString(f.commandData, 1, 8); IC卡号码 = IC卡号码.Replace("\0", ""); int cardid = 0; if (!int.TryParse(IC卡号码, out cardid)) { IC卡号码 = "0"; } 卡片类型 = f.commandData[9]; 报警类别 = f.commandData[10]; 处理结果 = f.commandData[11]; AlertType = ""; switch (报警类别) { case 0: AlertType = "用户异常退币报警"; break; case 1: AlertType = "非法专卡专用解锁"; break; case 2: AlertType = "专卡专用解锁"; break; case 3: AlertType = "非法送分券解锁"; break; case 4: AlertType = "常规解锁"; break; case 5: AlertType = "退币锁定"; break; default: AlertType = "未知错误报警"; break; } 流水号 = BitConverter.ToUInt16(f.commandData, 12); Info.HeadInfo.机头绑定信息 bind = new Info.HeadInfo.机头绑定信息(); bind.控制器令牌 = f.Code; bind.短地址 = 机头地址; Info.HeadInfo.机头信息 机头 = Info.HeadInfo.GetHeadInfoByShort(bind); string 管理卡号 = "0"; if (机头 != null) { 管理卡号 = 机头.常规.管理卡号; } if (!int.TryParse(管理卡号, out cardid)) { 管理卡号 = "0"; } object obj = null; //DataAccess ac = new DataAccess(); int res = UDPServerHelper.CheckRepeat(f.Code, 机头地址, IC卡号码, CommandType.机头卡片报警指令, ref obj, 流水号); if (res == 0) { switch (报警类别) { case 0: case 1: int d = 0; if (!int.TryParse(管理卡号, out d)) { 管理卡号 = "0"; } if (!int.TryParse(IC卡号码, out d)) { IC卡号码 = "0"; } string sql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),null,0,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); //ac.Execute(sql); XCCloudRS232BLL.ExecuteSql(sql); break; case 2: { //if (卡片类型 == 1) //管理卡 { if (机头.状态.超级解锁卡标识) { AlertType = "超级卡解锁专卡专用解锁"; } string dbsql = ""; if (!机头.状态.超级解锁卡标识 && 处理结果 == 1) //普通卡,处理结果成功的直接写2 { dbsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),GETDATE(),2,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); } else { dbsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),null,0,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); } //ac.Execute(dbsql); XCCloudRS232BLL.ExecuteSql(dbsql); } string IC = 机头.常规.当前卡片号; //if (Info.CoinInfo.被动退分解锁队列.ContainsKey(IC)) //{ // if (处理结果 == 0) // { // Info.CoinInfo.被动退分解锁队列[IC].是否允许退分标识 = false; // Info.CoinInfo.被动退分解锁队列[IC].错误信息 = string.Format("机头编号:{0} 有分;", 机头.常规.机头长地址); // } // else // { // 机头.常规.当前卡片号 = ""; // } // Info.CoinInfo.被动退分解锁队列[IC].当前序号++; // if (Info.CoinInfo.被动退分解锁队列[IC].当前序号 >= Info.CoinInfo.被动退分解锁队列[IC].机头列表.Count) // { // //发送完毕 // //ServiceDll.ClientCall.远程强制退分应答(Info.CoinInfo.被动退分解锁队列[IC].错误信息, IC, (Info.CoinInfo.被动退分解锁队列[IC].错误信息 == "")); // //StringBuilder sb1 = new StringBuilder(); // //sb1.Append("=============================================\r\n"); // //sb1.AppendFormat("{0:yyyy-MM-dd HH:mm:ss.fff} 远程强制退分应答\r\n", DateTime.Now); // //sb1.AppendFormat("IC卡号:{0}\r\n", IC); // //sb1.AppendFormat("结果:{0}\r\n", Info.CoinInfo.被动退分解锁队列[IC].错误信息); // //UIClass.接收内容 = sb1.ToString(); // } //} } break; case 3: { 机头.状态.是否正在使用限时送分优惠 = (处理结果 == 1); 机头.常规.是否为首次投币 = (处理结果 == 1); if (处理结果 == 0) { string qsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),null,0,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); //ac.Execute(qsql); XCCloudRS232BLL.ExecuteSql(qsql); } else { if (机头.状态.超级解锁卡标识) //超级管理卡 { string dbsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),null,0,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); //ac.Execute(dbsql); XCCloudRS232BLL.ExecuteSql(dbsql); } else { AlertType = "解锁限时送分"; string dbsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),GETDATE(),2,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); //ac.Execute(dbsql); XCCloudRS232BLL.ExecuteSql(dbsql); } } } break; case 4: //常规解锁,解除报警,修改数据库 { if (机头.状态.超级解锁卡标识) //超级管理卡 { AlertType = "超级卡解锁常规锁定"; string dbsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),null,0,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); //ac.Execute(dbsql); XCCloudRS232BLL.ExecuteSql(dbsql); } string usql = string.Format("update flw_game_alarm set EndTime=GETDATE(),ICCardID='{2}',`state`=1 where `state`=0 and LockGame=1 and MerchID='{0}' and DeviceID='{1}'", 机头.商户号, 机头.常规.机头编号, 管理卡号); //ac.Execute(usql); XCCloudRS232BLL.ExecuteSql(usql); } break; case 5: { if (机头.状态.超级解锁卡标识) //超级管理卡 { AlertType = "超级卡解锁退币锁定"; string dbsql = string.Format("INSERT INTO flw_game_alarm VALUES ('{0}','{1}','{2}','{3}',GETDATE(),null,0,0,0,'会员卡号:{4}')", 管理卡号, 机头.商户号, 机头.常规.机头编号, AlertType, IC卡号码); //ac.Execute(dbsql); XCCloudRS232BLL.ExecuteSql(dbsql); } } break; default: break; } if (处理结果 == 1) { 机头.常规.当前卡片号 = ""; } 应答数据 = new Ask.Ask机头卡片报警指令(机头地址, 流水号); UDPServerHelper.InsertRepeat(f.routeAddress, 机头地址, IC卡号码, CommandType.机头卡片报警指令, CommandType.机头卡片报警指令应答, 应答数据, 流水号, RecvDateTime); } else if (res == 1) { 应答数据 = (Ask.Ask机头卡片报警指令)obj; } else { //重复性检查出错 return; } byte[] dataBuf = PubLib.GetBytesByObject(应答数据); SendData = PubLib.GetFrameDataBytes(f, dataBuf, CommandType.机头卡片报警指令应答); SendDataTime = DateTime.Now; }
public Ask终端参数申请(Info.HeadInfo.机头绑定信息 Bind) { try { 游戏机机头编号 = "0000A"; Info.HeadInfo.机头信息 机头 = Info.HeadInfo.GetHeadInfoByShort(Bind); 机头地址 = Convert.ToByte(Bind.短地址, 16); //DataAccess ac = new DataAccess(); //DataTable dt = ac.ExecuteQueryReturnTable(string.Format("select g.* from Data_MerchSegment s,Base_DeviceInfo d,Data_GameInfo g where d.ID=s.DeviceID and g.GroupID=s.GroupID and d.SN='{0}'", 机头.常规.机头长地址)); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable(string.Format("select g.* from Data_MerchSegment s,Base_DeviceInfo d,Data_GameInfo g where d.ID=s.DeviceID and g.GroupID=s.GroupID and d.SN='{0}'", 机头.常规.机头长地址)); if (dt.Rows.Count > 0) { DataRow row = dt.Rows[0]; 效期天数 = (byte)机头.打印小票有效天数; 机头.彩票模式 = (row["LotteryMode"].ToString() == "1"); 单次退币限额 = Convert.ToUInt16(row["OnceOutLimit"]); 机头.参数.单次退币限额 = 单次退币限额; 机头.参数.投币时扣卡上币数 = Convert.ToByte(row["PushReduceFromCard"]); //扣卡里币基数 = (byte)机头.参数.投币时扣卡上币数; 机头.参数.投币时给游戏机信号数 = Convert.ToUInt16(row["PushAddToGame"]); 机头.参数.第二路上分线投币时扣卡上币数 = Convert.ToInt32(row["SecondReduceFromCard"]); 机头.参数.第二路上分线投币时给游戏机信号数 = Convert.ToInt32(row["SecondAddToGame"]); 退币时给游戏机脉冲数比例因子 = Convert.ToByte(row["OutReduceFromGame"]); 机头.参数.退币时给游戏机脉冲数比例因子 = 退币时给游戏机脉冲数比例因子; 退币时卡上增加币数比例因子 = Convert.ToByte(row["OutAddToCard"]); 机头.参数.退币时卡上增加币数比例因子 = 退币时卡上增加币数比例因子; 退币按钮脉宽 = Convert.ToUInt16(row["BOPulse"]); 机头.参数.退币按钮脉宽 = 退币按钮脉宽; 游戏机维修开关信号1 开关信号1 = new 游戏机维修开关信号1(); 开关信号1.bit0允许电子退币或允许打票 = Convert.ToBoolean(row["AllowElecOut"]); 机头.开关.允许电子退币或允许打票 = 开关信号1.bit0允许电子退币或允许打票; 开关信号1.bit1允许电子投币 = Convert.ToBoolean(row["AllowElecPush"]); 机头.开关.允许电子投币 = 开关信号1.bit1允许电子投币; 开关信号1.bit2允许十倍投币 = Convert.ToBoolean(row["AllowDecuplePush"]); 机头.开关.允许十倍投币 = 开关信号1.bit2允许十倍投币; 开关信号1.bit3允许实物退币 = Convert.ToBoolean(row["AllowRealOut"]); 机头.开关.允许实物退币 = 开关信号1.bit3允许实物退币; 开关信号1.bit4转发实物投币 = Convert.ToBoolean(row["AllowRealPush"]); 机头.开关.转发实物投币 = 开关信号1.bit4转发实物投币; //开关信号1.bit5硬件投币控制 = Convert.ToBoolean(row["PushControl"]); //机头.开关.硬件投币控制 = 开关信号1.bit5硬件投币控制; 开关信号1.bit6投币脉冲电平 = Convert.ToBoolean(row["PushLevel"]); 机头.开关.投币脉冲电平 = 开关信号1.bit6投币脉冲电平; 开关信号1.bit7第二路上分线上分电平 = Convert.ToBoolean(row["SecondLevel"]); 机头.开关.第二路上分线上分电平 = 开关信号1.bit7第二路上分线上分电平; 开关信号1.bit8SSR退币驱动脉冲电平 = Convert.ToBoolean(row["OutLevel"]); 机头.开关.SSR退币驱动脉冲电平 = 开关信号1.bit8SSR退币驱动脉冲电平; 开关信号1.bit9数币脉冲电平 = Convert.ToBoolean(row["CountLevel"]); 机头.开关.数币脉冲电平 = 开关信号1.bit9数币脉冲电平; 开关信号1.bit10启用第二路上分信号 = Convert.ToBoolean(row["UseSecondPush"]); 机头.开关.启用第二路上分信号 = 开关信号1.bit10启用第二路上分信号; 开关1 = PubLib.GetBit16ByObject(开关信号1); 游戏机维修开关信号2 开关信号2 = new 游戏机维修开关信号2(); 开关信号2.bit0退币超限标志 = ((机头.投币.盈利数 > 机头.投币.每天净退币上限) && !机头.状态.是否忽略超分报警); 机头.开关.退币超限标志 = 开关信号2.bit0退币超限标志; 开关信号2.bit1启用专卡专用 = Convert.ToBoolean(row["GuardConvertCard"]); 机头.开关.启用专卡专用 = 开关信号2.bit1启用专卡专用; 开关信号2.bit2BO按钮是否维持 = Convert.ToBoolean(row["BOKeep"]); 机头.开关.BO按钮是否维持 = 开关信号2.bit2BO按钮是否维持; 开关信号2.bit3退分锁定标志 = Convert.ToBoolean(row["BOLock"]); 机头.开关.退分锁定标志 = 开关信号2.bit3退分锁定标志; 开关信号2.bit4启用异常退币检测 = Convert.ToBoolean(row["ExceptOutTest"]); 机头.开关.启用异常退币检测 = 开关信号2.bit4启用异常退币检测; 开关信号2.bit5启用即中即退模式 = Convert.ToBoolean(row["NowExit"]); 机头.开关.启用即中即退模式 = 开关信号2.bit5启用即中即退模式; 开关信号2.bit6启用外部报警检测 = Convert.ToBoolean(row["OutsideAlertCheck"]); 机头.开关.启用外部报警检测 = 开关信号2.bit6启用外部报警检测; 开关信号2.bit7启用回路报警检测 = Convert.ToBoolean(row["ReturnCheck"]); 机头.开关.启用回路报警检测 = 开关信号2.bit7启用回路报警检测; 开关信号2.bit8启用增强防止转卡 = Convert.ToBoolean(row["StrongGuardConvertCard"]); 机头.开关.增强防止转卡 = 开关信号2.bit8启用增强防止转卡; 开关信号2.bit9启用刷卡即扣 = Convert.ToBoolean(row["ReadCat"]); 机头.开关.启动刷卡即扣 = 开关信号2.bit9启用刷卡即扣; 开关信号2.bit10启用刷卡版彩票功能 = Convert.ToBoolean(row["ICTicketOperation"]); 机头.开关.启用刷卡版彩票 = 开关信号2.bit10启用刷卡版彩票功能; 开关信号2.bit11启用防霸位功能 = Convert.ToBoolean(row["BanOccupy"]); 机头.开关.启用防霸位功能 = 开关信号2.bit11启用防霸位功能; 开关信号2.bit12只退实物彩票 = Convert.ToBoolean(row["OnlyExitLottery"]); 机头.开关.只退实物彩票 = 开关信号2.bit12只退实物彩票; 开关信号2.bit13启用彩票模式 = 机头.彩票模式; 开关信号2.bit14小票是否打印二维码 = 机头.开关.小票是否打印二维码; 开关2 = PubLib.GetBit16ByObject(开关信号2); 首次投币启动间隔 = Convert.ToByte(row["PushStartInterval"]); 机头.参数.首次投币启动间隔 = 首次投币启动间隔; 投币速度 = Convert.ToUInt16(row["PushSpeed"]); 机头.参数.投币速度 = 投币速度; 投币脉宽 = Convert.ToByte(row["PushPulse"]); 机头.参数.投币脉宽 = 投币脉宽; 第二路上分线首次上分启动间隔 = Convert.ToByte(row["SecondStartInterval"]); 机头.参数.第二路上分线首次上分启动间隔 = 第二路上分线首次上分启动间隔; 第二路上分线上分速度 = Convert.ToUInt16(row["SecondSpeed"]); 机头.参数.第二路上分线上分速度 = 第二路上分线上分速度; 第二路上分线上分脉宽 = Convert.ToByte(row["SecondPulse"]); 机头.参数.第二路上分线上分脉宽 = 第二路上分线上分脉宽; 退币速度 = Convert.ToUInt16(row["OutSpeed"]); 机头.参数.退币速度 = 退币速度; 退币脉宽 = Convert.ToByte(row["OutPulse"]); 机头.参数.退币脉宽 = 退币脉宽; 机头.投币.单次退币上限 = 单次退币限额; 机头.投币.每天净退币上限 = Convert.ToInt32(row["OneDayPureOutLimit"]); //游戏机机头编号 = 机头.常规.机头编号; 异常检测时间 = Convert.ToByte(row["ExceptOutSpeed"]); 机头.参数.异常SSR退币检测速度 = 异常检测时间; 异常检测次数 = Convert.ToByte(row["Frequency"]); 机头.参数.异常SSR退币检测次数 = 异常检测次数; if (机头.开关.启用第二路上分信号) { 扣卡里币基数 = (byte)机头.参数.第二路上分线投币时扣卡上币数; } else { 扣卡里币基数 = (byte)机头.参数.投币时扣卡上币数; } 本店卡校验密码 = 机头.店密码; } } catch { throw; } }
public object register(Dictionary <string, object> dicParas) { try { string errMsg = string.Empty; string mobile = string.Empty; XCGameManaDeviceStoreType deviceStoreType; string storeId = dicParas.ContainsKey("storeId") ? dicParas["storeId"].ToString() : string.Empty; //验证手机token MobileTokenModel mobileTokenModel = (MobileTokenModel)(dicParas[Constant.MobileTokenModel]); mobile = mobileTokenModel.Mobile; //验证门店 StoreCacheModel storeModel = null; StoreBusiness store = new StoreBusiness(); if (!store.IsEffectiveStore(storeId, out deviceStoreType, ref storeModel, out errMsg)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, errMsg)); } string meberToken = string.Empty; if (deviceStoreType == XCGameManaDeviceStoreType.Store) { XCCloudService.BLL.IBLL.XCGame.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IMemberService>(storeModel.StoreDBName); //获取手机号是否存在注册记录 var count = memberService.GetModels(p => p.Mobile.Equals(mobile, StringComparison.OrdinalIgnoreCase)).Count <XCCloudService.Model.XCGame.t_member>(); if (count == 0) { string sql = " exec RegisterMember @Mobile,@MemberPassword,@WXOpenID,@Return output "; SqlParameter[] parameters = new SqlParameter[4]; parameters[0] = new SqlParameter("@Mobile", mobile); parameters[1] = new SqlParameter("@MemberPassword", "888888"); parameters[2] = new SqlParameter("@WXOpenID", ""); parameters[3] = new SqlParameter("@Return", 0); parameters[3].Direction = System.Data.ParameterDirection.Output; System.Data.DataSet ds = XCGameBLL.ExecuteQuerySentence(sql, storeModel.StoreDBName, parameters); MemberResponseModel memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = MemberBusiness.GetMemberStateName(memberResponseModel.MemberState); meberToken = MemberTokenBusiness.SetMemberToken(storeId, mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); RegisterMemberTokenResponseModel registerMemberTokenResponseModel = new RegisterMemberTokenResponseModel(storeId, storeModel.StoreName, meberToken, memberResponseModel); return(ResponseModelFactory <RegisterMemberTokenResponseModel> .CreateModel(isSignKeyReturn, registerMemberTokenResponseModel)); } else { //如果已注册,返回会员主要信息 string sql = " exec GetMember @Mobile,@ICCardID"; SqlParameter[] parameters = new SqlParameter[2]; parameters[0] = new SqlParameter("@Mobile", mobile); parameters[1] = new SqlParameter("@ICCardID", "0"); System.Data.DataSet ds = XCGameBLL.ExecuteQuerySentence(sql, storeModel.StoreDBName, parameters); MemberResponseModel memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = MemberBusiness.GetMemberStateName(memberResponseModel.MemberState); meberToken = MemberTokenBusiness.SetMemberToken(storeId, mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); RegisterMemberTokenResponseModel registerMemberTokenResponseModel = new RegisterMemberTokenResponseModel(storeId, storeModel.StoreName, meberToken, memberResponseModel); return(ResponseModelFactory <RegisterMemberTokenResponseModel> .CreateModel(isSignKeyReturn, registerMemberTokenResponseModel)); } } else if (deviceStoreType == XCGameManaDeviceStoreType.Merch) { XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService>(); //获取手机号是否存在注册记录 var count = memberService.GetModels(p => p.Mobile.Equals(mobile, StringComparison.OrdinalIgnoreCase)).Count <XCCloudService.Model.XCCloudRS232.t_member>(); if (count == 0) { string sql = " exec RegisterMember @Mobile,@MerchId,@MemberPassword,@WXOpenID,@Return output "; SqlParameter[] parameters = new SqlParameter[5]; parameters[0] = new SqlParameter("@Mobile", mobile); parameters[1] = new SqlParameter("@MerchId", storeId); parameters[2] = new SqlParameter("@MemberPassword", "888888"); parameters[3] = new SqlParameter("@WXOpenID", ""); parameters[4] = new SqlParameter("@Return", 0); parameters[4].Direction = System.Data.ParameterDirection.Output; System.Data.DataSet ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); MemberResponseModel memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = MemberBusiness.GetMemberStateName(memberResponseModel.MemberState); meberToken = MemberTokenBusiness.SetMemberToken(storeId, mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); RegisterMemberTokenResponseModel registerMemberTokenResponseModel = new RegisterMemberTokenResponseModel(storeId, storeModel.StoreName, meberToken, memberResponseModel); return(ResponseModelFactory <RegisterMemberTokenResponseModel> .CreateModel(isSignKeyReturn, registerMemberTokenResponseModel)); } else { //如果已注册,返回会员主要信息 string sql = " exec GetMember @Mobile,@MerchId,@ICCardID"; SqlParameter[] parameters = new SqlParameter[3]; parameters[0] = new SqlParameter("@Mobile", mobile); parameters[1] = new SqlParameter("@MerchId", storeId); parameters[2] = new SqlParameter("@ICCardID", "0"); System.Data.DataSet ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); MemberResponseModel memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = "使用中"; meberToken = MemberTokenBusiness.SetMemberToken(storeId, mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); RegisterMemberTokenResponseModel registerMemberTokenResponseModel = new RegisterMemberTokenResponseModel(storeId, storeModel.StoreName, meberToken, memberResponseModel); return(ResponseModelFactory <RegisterMemberTokenResponseModel> .CreateModel(isSignKeyReturn, registerMemberTokenResponseModel)); } } else { return(ResponseModelFactory.CreateFailModel(isSignKeyReturn, "店号无效")); } } catch (Exception e) { throw e; } }
public object getMemberToken(Dictionary <string, object> dicParas) { bool isMember = false; string errMsg = string.Empty; string storeId = dicParas.ContainsKey("storeId") ? dicParas["storeId"].ToString() : string.Empty; try { MobileTokenModel mobileTokenModel = (MobileTokenModel)(dicParas[Constant.MobileTokenModel]); //获取终端号是否存在 StoreCacheModel storeModel = null; StoreBusiness storeBusiness = new StoreBusiness(); if (!storeBusiness.IsEffectiveStore(storeId, ref storeModel, out errMsg)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, errMsg)); } //是否注册会员 MemberResponseModel memberResponseModel = null; System.Data.DataSet ds = null; if (storeModel.StoreType == 0) { XCCloudService.BLL.IBLL.XCGame.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IMemberService>(storeModel.StoreDBName); var count = memberService.GetModels(p => p.Mobile.Equals(mobileTokenModel.Mobile, StringComparison.OrdinalIgnoreCase)).Count <XCCloudService.Model.XCGame.t_member>(); if (count == 0) { string sql = " exec RegisterMember @Mobile,@MemberPassword,@WXOpenID,@Return output "; SqlParameter[] parameters = new SqlParameter[4]; parameters[0] = new SqlParameter("@Mobile", mobileTokenModel.Mobile); parameters[1] = new SqlParameter("@MemberPassword", "888888"); parameters[2] = new SqlParameter("@WXOpenID", ""); parameters[3] = new SqlParameter("@Return", 0); parameters[3].Direction = System.Data.ParameterDirection.Output; ds = XCGameBLL.ExecuteQuerySentence(sql, storeModel.StoreDBName, parameters); } else { string sql = " exec GetMember @Mobile,@ICCardID"; SqlParameter[] parameters = new SqlParameter[2]; parameters[0] = new SqlParameter("@Mobile", mobileTokenModel.Mobile); parameters[1] = new SqlParameter("@ICCardID", "0"); ds = XCGameBLL.ExecuteQuerySentence(sql, storeModel.StoreDBName, parameters); } memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = MemberBusiness.GetMemberStateName(memberResponseModel.MemberState); isMember = true; } else if (storeModel.StoreType == 1) { XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService>(); var count = memberService.GetModels(p => p.Mobile.Equals(mobileTokenModel.Mobile, StringComparison.OrdinalIgnoreCase)).Count <XCCloudService.Model.XCCloudRS232.t_member>(); if (count == 0) { string sql = " exec RegisterMember @Mobile,@MerchId,@MemberPassword,@WXOpenID,@Return output "; SqlParameter[] parameters = new SqlParameter[5]; parameters[0] = new SqlParameter("@Mobile", mobileTokenModel.Mobile); parameters[1] = new SqlParameter("@MerchId", storeId); parameters[2] = new SqlParameter("@MemberPassword", "888888"); parameters[3] = new SqlParameter("@WXOpenID", ""); parameters[4] = new SqlParameter("@Return", 0); parameters[4].Direction = System.Data.ParameterDirection.Output; ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); } else { string sql = " exec GetMember @Mobile,@MerchId,@ICCardID"; SqlParameter[] parameters = new SqlParameter[3]; parameters[0] = new SqlParameter("@Mobile", mobileTokenModel.Mobile); parameters[1] = new SqlParameter("@MerchId", storeId); parameters[2] = new SqlParameter("@ICCardID", "0"); ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); } memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = "有效"; isMember = true; } else { isMember = false; } //设置会员token string token = string.Empty; if (isMember) { token = MemberTokenBusiness.SetMemberToken(storeId, mobileTokenModel.Mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); } MemberTokenResponseModel memberTokenModel = new MemberTokenResponseModel(storeId, storeModel.StoreName, token, isMember, memberResponseModel); return(ResponseModelFactory <MemberTokenResponseModel> .CreateModel(isSignKeyReturn, memberTokenModel)); } catch (Exception e) { throw e; } }
/// <summary> /// 套餐销售流水详情分页 /// </summary> /// <param name="merchId">商户ID</param> /// <param name="routerId">控制器ID</param> /// <param name="pageIndex">当前页索引</param> /// <param name="pageSize">每页条数</param> /// <returns></returns> public static DataTable GetMemberExpenseDetail(int merchId, string icCardId, string flowType = "0", string sDate = null, string eDate = null, int pageIndex = 1, int pageSize = 10) { string strWhere = string.Empty; if (!string.IsNullOrWhiteSpace(sDate) && string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime >= '{0}'", sDate); } else if (string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime <= '{0}'", eDate); } else if (!string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } else { sDate = DateTime.Now.ToString("yyyy-MM-dd"); eDate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } string strFlow = string.Empty; if (!string.IsNullOrWhiteSpace(flowType) && flowType != "0") { strFlow = string.Format("AND a.FlowType = {0}", flowType); } #region Sql语句 string strSql = @" WITH MemberExpenseList AS ( SELECT f.ICCardID, m.MemberName, m.Mobile, '提币' AS Flow, 1 AS FlowType, '0' AS Amount, f.Coins, f.Balance, f.RealTime FROM flw_coin_sale f INNER JOIN t_member m ON m.ICCardID = f.ICCardID WHERE f.MerchID = {0} AND f.ICCardID = {1} {2} UNION ALL SELECT f.ICCardID,m.MemberName,m.Mobile, '存币' AS Flow, 2 AS FlowType, '0' AS Amount, f.Coins, f.Balance, f.RealTime FROM flw_485_savecoin f INNER JOIN t_member m ON m.ICCardID = f.ICCardID WHERE f.MerchID = {0} AND f.ICCardID = {1} {2} UNION ALL SELECT f.ICCardID,m.MemberName, m.Mobile, CASE f.FlowType WHEN 0 THEN '充值' WHEN 1 THEN '购币' END AS Flow, CASE f.FlowType WHEN 0 THEN 3 WHEN 1 THEN 4 END AS FlowType, f.TotalMoney AS Amount, f.CoinQuantity, f.Balance, f.RealTime FROM flw_food_sale f INNER JOIN t_member m ON m.ICCardID = f.ICCardID WHERE f.PayState = 1 AND f.MerchID = {0} AND f.ICCardID = {1} {2} ) SELECT ICCardID, MemberName, Mobile, Flow, Amount, Coins, Balance, CONVERT(varchar(100), RealTime, 120) AS RealTime FROM ( SELECT ROW_NUMBER() OVER (ORDER BY RealTime DESC) rownumber , ICCardID, MemberName, Mobile, Flow, FlowType, Amount, Coins, Balance, RealTime FROM MemberExpenseList ) AS a WHERE rownumber BETWEEN {4} AND {5} {3} "; #endregion strSql = string.Format(strSql, merchId, icCardId, strWhere, strFlow, (pageIndex - 1) * pageSize + 1, pageIndex * pageSize); DataTable table = XCCloudRS232BLL.ExecuterSqlToTable(strSql); return(table); }
/// <summary> /// 会员数据统计 /// </summary> /// <returns></returns> public static DataSet GetMemberSummary(int merchId, string ICCardID = null, string sDate = null, string eDate = null, int pageIndex = 1, int pageSize = 10) { string strWhere = string.Empty; if (!string.IsNullOrWhiteSpace(ICCardID)) { strWhere += string.Format(" AND ICCardID = {0}", ICCardID); } if (!string.IsNullOrWhiteSpace(sDate) && string.IsNullOrWhiteSpace(eDate)) { strWhere += string.Format(" AND JoinTime >= '{0}'", sDate); } else if (string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere += string.Format(" AND JoinTime <= '{0}'", eDate); } else if (!string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere += string.Format(" AND JoinTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } else { sDate = DateTime.Now.ToString("yyyy-MM-dd"); eDate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); strWhere += string.Format(" AND JoinTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } #region Sql语句 string strSql = @" WITH MembersTotal AS ( --会员总数、币余额总数 SELECT COUNT(1) AS MemberTotal, SUM(Balance) AS BalanceTotal FROM t_member WHERE MerchID = {0} ), TodayJoinMembers AS ( --今日新增会员数 SELECT COUNT(1) AS TodayJoinMembers FROM t_member WHERE MerchID = {0} AND DATEDIFF(DAY, GETDATE(), JoinTime) = 0 ), SaveCoinMember AS ( --今日存币会员数 SELECT DISTINCT ICCardID FROM flw_485_savecoin WHERE MerchID = {0} AND DATEDIFF(DAY, GETDATE(), RealTime) = 0 ), SaleCoinMember AS ( --今日提币会员数 SELECT DISTINCT ICCardID FROM flw_coin_sale WHERE MerchID = {0} AND DATEDIFF(DAY, GETDATE(), RealTime) = 0 ), FoodSaleMember AS ( --今日购币会员数 SELECT DISTINCT ICCardID FROM flw_food_sale WHERE MerchID = {0} AND DATEDIFF(DAY, GETDATE(), RealTime) = 0 ), Members AS ( --今日全部游戏会员 SELECT ICCardID FROM FoodSaleMember UNION SELECT ICCardID FROM SaveCoinMember UNION SELECT ICCardID FROM SaleCoinMember ), TodayGameMembers AS ( --今日全部参与 SELECT COUNT(1) AS TodayGameMembers FROM Members ) SELECT ISNULL(a.MemberTotal,0) AS MemberTotal, ISNULL(a.BalanceTotal,0) AS BalanceTotal, ISNULL(b.TodayJoinMembers, 0) AS TodayJoinMembers, ISNULL(c.TodayGameMembers, 0) as TodayGameMembers FROM MembersTotal a LEFT JOIN TodayJoinMembers b ON 1=1 LEFT JOIN TodayGameMembers c ON 1=1 ; SELECT MemberID, ICCardID, ISNULL(MemberName, Mobile) AS MemberName, Mobile, Balance, CONVERT(varchar(100), JoinTime, 120) AS JoinTime FROM ( SELECT ROW_NUMBER() OVER (ORDER BY JoinTime DESC) rownumber , MemberID, ICCardID, MemberName, Mobile, Balance, JoinTime FROM t_member WHERE MerchID = {0} {1} ) AS a WHERE rownumber BETWEEN {2} AND {3} ;"; #endregion strSql = string.Format(strSql, merchId, strWhere, (pageIndex - 1) * pageSize + 1, pageIndex * pageSize); DataSet ds = XCCloudRS232BLL.ExecuterSqlToDataSet(strSql); return(ds); }
/// <summary> /// 统计指定售币机营收 /// </summary> /// <returns></returns> public static DataSet GetSaleCoinMachineRevenue(int merchId, int deviceId, string sDate = null, string eDate = null, int pageIndex = 1, int pageSize = 10) { string strWhere = string.Empty, strSaleWhere = string.Empty; if (!string.IsNullOrWhiteSpace(sDate) && string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime >= '{0}'", sDate); strSaleWhere = string.Format(" AND RealTime >= '{0}'", sDate); } else if (string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime <= '{0}'", eDate); strSaleWhere = string.Format(" AND RealTime <= '{0}'", eDate); } else if (!string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); strSaleWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } else { sDate = DateTime.Now.ToString("yyyy-MM-dd"); eDate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); strSaleWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } #region Sql语句 string strSql = @" WITH SaleCoinAmount AS ( --售币 SELECT f.DeviceID, SUM(CoinQuantity) AS SaleCoins, SUM(TotalMoney) AS SaleCoinAmount FROM flw_food_sale f INNER JOIN Base_DeviceInfo d ON d.ID = f.DeviceID WHERE FlowType = 1 AND PayState = 1 AND f.MerchID = {0} AND DeviceID = {1} {3} GROUP BY f.DeviceID ), PullCoins AS ( --提币 SELECT f.DeviceID, ISNULL(SUM(f.Coins), 0) AS PullCoins FROM flw_coin_sale f INNER JOIN Base_DeviceInfo d ON d.ID = f.DeviceID WHERE f.WorkType IN (3,6,7) AND f.MerchID = {0} AND f.DeviceID = {1} {2} GROUP BY f.DeviceID ) --提币 SELECT s.SaleCoins, s.SaleCoinAmount, p.PullCoins FROM Base_DeviceInfo d LEFT JOIN SaleCoinAmount s ON d.ID = s.DeviceID LEFT JOIN PullCoins p ON d.ID = p.DeviceID WHERE d.ID = {1} ; WITH PullCoinList AS ( SELECT f.ICCardID, m.MemberName, m.Mobile, '提币' AS FlowType, '0' AS Amount, f.Coins, f.Balance, f.RealTime FROM flw_coin_sale f INNER JOIN t_member m ON m.ICCardID = f.ICCardID WHERE f.MerchID = {0} AND f.DeviceID = {1} {2} UNION ALL SELECT f.ICCardID,m.MemberName, m.Mobile, '售币' AS FlowType, f.TotalMoney AS Amount, f.CoinQuantity, f.Balance, f.RealTime FROM flw_food_sale f INNER JOIN t_member m ON m.ICCardID = f.ICCardID WHERE f.MerchID = {0} AND f.DeviceID = {1} {2} ) SELECT ICCardID, MemberName, Mobile, FlowType, Amount, Coins, Balance, CONVERT(varchar(100), RealTime, 120) AS RealTime FROM ( SELECT ROW_NUMBER() OVER (ORDER BY RealTime DESC) rownumber , ICCardID, MemberName, Mobile, FlowType, Amount, Coins, Balance, RealTime FROM PullCoinList ) AS a WHERE rownumber BETWEEN {4} AND {5} ; "; #endregion strSql = string.Format(strSql, merchId, deviceId, strWhere, strSaleWhere, (pageIndex - 1) * pageSize + 1, pageIndex * pageSize); DataSet ds = XCCloudRS232BLL.ExecuterSqlToDataSet(strSql); return(ds); }
public object getInfo(Dictionary <string, object> dicParas) { try { string errMsg = string.Empty; StoreCacheModel storeModel = null; System.Data.DataSet ds = null; //获取token模式 XCGameMemberTokenModel memberTokenModel = (XCGameMemberTokenModel)(dicParas[Constant.XCGameMemberTokenModel]); //验证门店 StoreBusiness storeBusiness = new StoreBusiness(); if (!storeBusiness.IsEffectiveStore(memberTokenModel.StoreId, ref storeModel, out errMsg)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, errMsg)); } //如果是门店模式 if (storeModel.StoreType == 0) { XCCloudService.BLL.IBLL.XCGame.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IMemberService>(storeModel.StoreDBName); var count = memberService.GetModels(p => p.Mobile.Equals(memberTokenModel.Mobile, StringComparison.OrdinalIgnoreCase)).Count <XCCloudService.Model.XCGame.t_member>(); if (count == 0) { string sql = " exec RegisterMember @Mobile,@MemberPassword,@WXOpenID,@Return output "; SqlParameter[] parameters = new SqlParameter[4]; parameters[0] = new SqlParameter("@Mobile", memberTokenModel.Mobile); parameters[1] = new SqlParameter("@MemberPassword", "888888"); parameters[2] = new SqlParameter("@WXOpenID", ""); parameters[3] = new SqlParameter("@Return", 0); parameters[3].Direction = System.Data.ParameterDirection.Output; ds = XCGameBLL.ExecuteQuerySentence(sql, storeModel.StoreDBName, parameters); MemberResponseModel memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = MemberBusiness.GetMemberStateName(memberResponseModel.MemberState); string meberToken = MemberTokenBusiness.SetMemberToken(memberTokenModel.StoreId, memberTokenModel.Mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); RegisterMemberTokenResponseModel registerMemberTokenResponseModel = new RegisterMemberTokenResponseModel(memberTokenModel.StoreId, storeModel.StoreName, meberToken, memberResponseModel); return(ResponseModelFactory <RegisterMemberTokenResponseModel> .CreateModel(isSignKeyReturn, registerMemberTokenResponseModel)); } else { string sql = " exec GetMember @Mobile,@ICCardID"; SqlParameter[] parameters = new SqlParameter[2]; parameters[0] = new SqlParameter("@Mobile", memberTokenModel.Mobile); parameters[1] = new SqlParameter("@ICCardID", "0"); ds = XCGameBLL.ExecuteQuerySentence(sql, storeModel.StoreDBName, parameters); RegisterMemberResponseModel registerMemberResponseModel = Utils.GetModelList <RegisterMemberResponseModel>(ds.Tables[0])[0]; registerMemberResponseModel.StoreId = storeModel.StoreID.ToString(); registerMemberResponseModel.StoreName = storeModel.StoreName; registerMemberResponseModel.MemberState = MemberBusiness.GetMemberStateName(registerMemberResponseModel.MemberState); return(ResponseModelFactory <RegisterMemberResponseModel> .CreateModel(isSignKeyReturn, registerMemberResponseModel)); } } //如果是商户模式 else if (storeModel.StoreType == 1) { XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService>(); var count = memberService.GetModels(p => p.Mobile.Equals(memberTokenModel.Mobile, StringComparison.OrdinalIgnoreCase)).Count <XCCloudService.Model.XCCloudRS232.t_member>(); if (count == 0) { string sql = " exec RegisterMember @Mobile,@MerchId,@MemberPassword,@WXOpenID,@Return output "; SqlParameter[] parameters = new SqlParameter[5]; parameters[0] = new SqlParameter("@Mobile", memberTokenModel.Mobile); parameters[1] = new SqlParameter("@MerchId", storeModel.StoreID); parameters[2] = new SqlParameter("@MemberPassword", "888888"); parameters[3] = new SqlParameter("@WXOpenID", ""); parameters[4] = new SqlParameter("@Return", 0); parameters[4].Direction = System.Data.ParameterDirection.Output; ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); MemberResponseModel memberResponseModel = Utils.GetModelList <MemberResponseModel>(ds.Tables[0])[0]; memberResponseModel.MemberState = MemberBusiness.GetMemberStateName(memberResponseModel.MemberState); string meberToken = MemberTokenBusiness.SetMemberToken(memberTokenModel.StoreId, memberTokenModel.Mobile, memberResponseModel.MemberLevelName, storeModel.StoreName, memberResponseModel.ICCardID.ToString(), memberResponseModel.EndDate); RegisterMemberTokenResponseModel registerMemberTokenResponseModel = new RegisterMemberTokenResponseModel(memberTokenModel.StoreId, storeModel.StoreName, meberToken, memberResponseModel); return(ResponseModelFactory <RegisterMemberTokenResponseModel> .CreateModel(isSignKeyReturn, registerMemberTokenResponseModel)); } else { string sql = " exec GetMember @Mobile,@MerchId,@ICCardID"; SqlParameter[] parameters = new SqlParameter[3]; parameters[0] = new SqlParameter("@Mobile", memberTokenModel.Mobile); parameters[1] = new SqlParameter("@MerchId", memberTokenModel.StoreId); parameters[2] = new SqlParameter("@ICCardID", "0"); ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); RegisterMemberResponseModel registerMemberResponseModel = Utils.GetModelList <RegisterMemberResponseModel>(ds.Tables[0])[0]; registerMemberResponseModel.StoreId = storeModel.StoreID.ToString(); registerMemberResponseModel.StoreName = storeModel.StoreName; registerMemberResponseModel.MemberState = MemberBusiness.GetMemberStateName(registerMemberResponseModel.MemberState); return(ResponseModelFactory <RegisterMemberResponseModel> .CreateModel(isSignKeyReturn, registerMemberResponseModel)); } } else { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "门店类型无效")); } } catch (Exception e) { throw e; } }
public object checkMerch(Dictionary <string, object> dicParas) { try { string errMsg = string.Empty; string mobile = dicParas.ContainsKey("mobile") ? dicParas["mobile"].ToString() : string.Empty; string code = dicParas.ContainsKey("imgCode") ? dicParas["imgCode"].ToString() : string.Empty; if (string.IsNullOrEmpty(mobile)) { errMsg = "mobile参数不能为空"; } if (string.IsNullOrEmpty(code)) { errMsg = "验证码不能为空"; } if (!string.IsNullOrEmpty(errMsg)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, errMsg)); } if (string.IsNullOrWhiteSpace(mobile) || !IsMobile(mobile)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "请输入正确的手机号码")); } //验证请求次数 if (!RequestTotalCache.CanRequest(mobile, ApiRequestType.CheckImgCode)) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "已超过单日最大请求次数")); } else { RequestTotalCache.Add(mobile, ApiRequestType.CheckImgCode); } //如果用户未获取验证码 if (!ValidateImgCache.Exist(code.ToUpper())) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "验证码错误")); } //验证商户手机号码是否存在 string sql = "select Mobile,State from Base_MerchInfo where Mobile=@Mobile"; SqlParameter[] parameters = new SqlParameter[1]; parameters[0] = new SqlParameter("@Mobile", mobile); System.Data.DataSet ds = XCCloudRS232BLL.ExecuteQuerySentence(sql, parameters); if (ds.Tables[0].Rows.Count == 0) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "手机号码未注册")); } else if (ds.Tables[0].Rows[0]["state"].ToString() == "0") { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "该手机号已被禁用")); } string key = mobile + "_" + code; SMSTempTokenCache.Add(key, mobile, CacheExpires.SMSTempTokenExpires); ValidateImgCache.Remove(code.ToUpper()); SMSTokenModel smsTokenModel = new SMSTokenModel(mobile, code); return(ResponseModelFactory <SMSTokenModel> .CreateModel(isSignKeyReturn, smsTokenModel)); } catch (Exception e) { throw e; } }
public object replaceDevice(Dictionary <string, object> dicParas) { try { string errMsg = string.Empty; string mobileToken = dicParas.ContainsKey("mobileToken") ? dicParas["mobileToken"].ToString() : string.Empty; string oldDeviceToken = dicParas.ContainsKey("oldDeviceToken") ? dicParas["oldDeviceToken"].ToString() : string.Empty; string newDeviceToken = dicParas.ContainsKey("newDeviceToken") ? dicParas["newDeviceToken"].ToString() : string.Empty; Base_MerchInfo merch = MerchBusiness.GetMerchModel(mobileToken); if (merch.IsNull()) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "用户令牌无效")); } Base_DeviceInfo oldDevice = DeviceBusiness.GetDeviceModel(oldDeviceToken); if (oldDevice.IsNull()) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "您要替换的设备令牌无效")); } //设备所属商户不是当前商户 if (oldDevice.MerchID != merch.ID) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "该设备不属于当前商户,没有权限操作该设备")); } //新设备实体 Base_DeviceInfo newDevice = DeviceBusiness.GetDeviceModel(newDeviceToken); if (newDevice.IsNull()) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "当前扫面的设备令牌无效")); } //判断设备类别是否相同 if (oldDevice.DeviceType != newDevice.DeviceType) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "设备类型不同,不能替换")); } DeviceTypeEnum currDeviceType = (DeviceTypeEnum)oldDevice.DeviceType; int category = 0; switch (currDeviceType) { case DeviceTypeEnum.Router: category = 1; break; case DeviceTypeEnum.SlotMachines: case DeviceTypeEnum.DepositMachine: category = 2; break; case DeviceTypeEnum.Clerk: case DeviceTypeEnum.Terminal: category = 3; break; } if (category != 0) { string sql = "exec ReplaceDevice @oldDeviceId,@newDeviceId,@merchId,@category"; SqlParameter[] parameters = new SqlParameter[4]; parameters[0] = new SqlParameter("@oldDeviceId", oldDevice.ID); parameters[1] = new SqlParameter("@newDeviceId", newDevice.ID); parameters[2] = new SqlParameter("@merchId", merch.ID); parameters[3] = new SqlParameter("@category", category); int ret = XCCloudRS232BLL.ExecuteSql(sql, parameters); if (ret == 0) { return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "设备替换失败")); } } //修改设备缓存状态 DeviceStatusBusiness.SetDeviceState(oldDevice.Token, DeviceStatusEnum.未激活.ToDescription()); DeviceStatusBusiness.SetDeviceState(newDevice.Token, DeviceStatusEnum.离线.ToDescription()); return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.T, "")); } catch (Exception e) { throw e; } }
bool 电子退币SQL(Info.HeadInfo.机头信息 head, UInt16 SN, int Coins, string ICCard, int RepeadCode, CoinType cType, ref Info.HeadInfo.IC卡模式进出币应答结构 投币应答, ref string msg) { bool res = false; int pCoin = 0, bValue = 0; bool isAllowOut = true, isAllowIn = true, isAllowZKZY = false; bool 是否超分报警 = false; Info.CoinInfo coin = new Info.CoinInfo(); Info.CoinInfo.会员卡信息 member = coin.GetMemberInfo(ICCard, head.常规.路由器编号); if (member == null) { return(res); } member.退币时间 = DateTime.Now; //DataAccess ac = new DataAccess(); string sqlString = ""; if (head.彩票模式 && cType == CoinType.电子退币) { cType = CoinType.IC退彩票; } Info.PushRule.GetCurRule(head.常规.游戏机编号, out pCoin, out isAllowOut, out isAllowIn, out isAllowZKZY); //启用退币保护,并且退币数误差在设定值正负1个范围内则触发事件 if (head.常规.退币保护启用标志 && head.常规.退币信号超时退币个数 - 1 <= Coins && head.常规.退币信号超时退币个数 + 1 >= Coins) { msg += "触发退币保护功能\r\n"; if (Info.GameInfo.TBProtect(head.常规.游戏机编号)) { member.机头上下分 = false; 退币报警锁机头 = true; //Command.Ask.Ask机头锁定解锁指令 a = new Command.Ask.Ask机头锁定解锁指令(head.常规.机头地址, true); sqlString = string.Format("exec TBProc '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}'", head.常规, head.常规.机头地址, SN, Coins, ICCard, (int)cType, 1, //锁用户 1, //退币保护 0, //超分 0, //是否添加流水 0); //彩票模式 //ac.Execute(sqlString); XCCloudRS232BLL.ExecuteSql(sqlString); return(false); } } else { Info.GameInfo.ClearTimeoutCount(head.常规.游戏机编号, head.常规.退币保护启用标志); } if (!head.状态.是否正在使用限时送分优惠) //正常退币 { head.常规.当前卡片号 = ""; head.常规.是否为首次投币 = true; bValue += Coins; 投币应答.锁机头 = false; 投币应答.机头能上分 = isAllowIn; 投币应答.机头能打票 = isAllowOut; msg += "正常退币数据\r\n"; if ((0 - head.投币.盈利数 > head.投币.每天净退币上限 || Coins > head.投币.单次退币上限) && !head.状态.是否忽略超分报警 && !head.彩票模式) { 投币应答.锁机头 = true; 投币应答.超出当日机头最大净退币上线 = true; msg += "触发超额报警\r\n"; 是否超分报警 = true; } else { 投币应答.锁机头 = false; 投币应答.超出当日机头最大净退币上线 = false; } 投币应答.币余额 = bValue; res = true; } else //当前机头正在使用限时送分,则要判断最小退币数 { if (head.投币.最小退币数 > Coins) { //不满足退币条件 投币应答.币余额 = member.币余额; 投币应答.机头能上分 = isAllowIn; 投币应答.机头能打票 = isAllowOut; int 数 = Coins / pCoin; 投币应答.发脉冲数 = (head.开关.启用第二路上分信号) ? 数 * head.参数.第二路上分线投币时给游戏机信号数 : 数 * head.参数.投币时给游戏机信号数; 投币应答.是否将退币上回游戏机 = true; 投币应答.是否正在使用限时送分优惠券 = true; msg += "限时送分中不满足退币条件\r\n"; return(false); } else { //满足退币条件 head.常规.当前卡片号 = ""; head.常规.是否为首次投币 = true; head.投币.退币数 += Coins; head.状态.是否正在使用限时送分优惠 = false; bValue += Coins; 投币应答.是否正在使用限时送分优惠券 = false; 投币应答.币余额 = bValue; res = true; msg += "限时送分中满足退币条件\r\n"; } } sqlString = string.Format("exec TBProc '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}'", head.常规.路由器编号, head.常规.机头地址, SN, Coins, ICCard, (int)cType, ((bValue > PubLib.会员余额上限 || member.退币数 - member.投币数 > PubLib.会员净退币数上限) && head.彩票模式) ? 1 : 0, 0, 是否超分报警 ? 1 : 0, res ? 1 : 0, head.彩票模式 ? 1 : 0); //DataTable dt = ac.ExecuteQueryReturnTable(sqlString); DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable(sqlString); DataRow row = dt.Rows[0]; //有效电子投币 if (head.彩票模式) { bValue = Convert.ToInt32(row["lottery"].ToString()); } else { bValue = Convert.ToInt32(row["balance"].ToString()); } 投币应答.币余额 = bValue; 投币应答.是否启用卡片专卡专用 = (row["LockHead"].ToString() == "1"); 投币应答.是否正在使用限时送分优惠券 = head.状态.是否正在使用限时送分优惠; msg += "找到会员信息\r\n"; if (head.彩票模式) { member.锁会员 = false; member.票余额 = bValue; } else { member.币余额 = bValue; if (bValue > PubLib.会员余额上限 || member.退币数 - member.投币数 > PubLib.会员净退币数上限) { member.锁会员 = true; msg += "写入新余额并锁定会员\r\n"; } else { member.锁会员 = false; msg += "写入新余额\r\n"; } } member.Update(); return(res); }
/// <summary> /// 数据接收处理线程 /// </summary> /// <param name="o"></param> void ProcessCommad(object o) { RecvObject recv = o as RecvObject; if (recv != null) { Console.WriteLine("收到:" + PubLib.Hex2String(recv.Data)); DateTime time = DateTime.Now; if (PubLib.RecvDataLength >= 1000000000) { //重置 防止溢出 PubLib.RecvDataLength = 0; } PubLib.RecvDataLength += recv.Data.Length; FrameData f = new FrameData(recv.Data); SetRouteInfo(recv.Code, f.routeAddress, recv.RemotePoint); f.Code = recv.Code; //DataAccess ac = new DataAccess(); //DataTable dt = ac.ExecuteQueryReturnTable("select * from Base_DeviceInfo where DeviceType='0' and Status<>2 and Token='" + f.Code + "'"); //绑定所有空闲或正常的控制设备 DataTable dt = XCCloudRS232BLL.ExecuterSqlToTable("select * from Base_DeviceInfo where DeviceType='0' and Status<>2 and Token='" + f.Code + "'"); //绑定所有空闲或正常的控制设备 if (dt.Rows.Count > 0) { PubLib.当前总指令数++; //控制器合法 switch (f.commandType) { case CommandType.机头网络状态报告: { Recv机头网络状态报告 cmd = new Recv机头网络状态报告(f); if (ListenRouterToken == f.Code && CommandTypeList.Exists((CommandType type) => type == CommandType.机头网络状态报告)) { ShowMsg(cmd.GetRecvData(DateTime.Now)); ShowMsg(cmd.GetSendData()); } SendData(cmd.SendData, recv.RemotePoint); 状态更新 handler = new 状态更新(ChangeState); IAsyncResult result = handler.BeginInvoke(cmd, null, null); //ChangeState(cmd); } break; case CommandType.机头地址动态分配: { Recv机头地址动态分配 cmd = new Recv机头地址动态分配(f); if (ListenRouterToken == f.Code && ListenDeviceAddress == cmd.机头地址 && CommandTypeList.Exists((CommandType type) => type == CommandType.机头地址动态分配)) { ShowMsg(cmd.GetRecvData(DateTime.Now)); ShowMsg(cmd.GetSendData()); } SendData(cmd.SendData, recv.RemotePoint); } break; case CommandType.游戏机参数申请: { Recv游戏机参数申请 cmd = new Recv游戏机参数申请(f); if (ListenRouterToken == f.Code && ListenDeviceAddress == cmd.机头地址 && CommandTypeList.Exists((CommandType type) => type == CommandType.游戏机参数申请)) { ShowMsg(cmd.GetRecvData(DateTime.Now)); ShowMsg(cmd.GetSendData()); } SendData(cmd.SendData, recv.RemotePoint); } break; case CommandType.远程投币上分指令应答: { //if (CommandTypeList.Exists((CommandType type) => type == CommandType.电子币模式投币数据)) //{ // ShowMsg(cmd.GetRecvData(DateTime.Now)); //} PubLib.当前币业务指令数++; int SN = BitConverter.ToUInt16(f.recvData, 6); //用于清除重发队列 } break; case CommandType.远程被动退分解锁指令应答: { PubLib.当前币业务指令数++; //远程退分指令应答 } break; case CommandType.机头卡片报警指令: { Recv机头卡片报警指令 cmd = new Recv机头卡片报警指令(f, DateTime.Now); if (ListenRouterToken == f.Code && ListenDeviceAddress == cmd.机头地址 && CommandTypeList.Exists((CommandType type) => type == CommandType.机头卡片报警指令)) { ShowMsg(cmd.GetRecvData(DateTime.Now)); ShowMsg(cmd.GetSendData()); } SendData(cmd.SendData, recv.RemotePoint); } break; case CommandType.IC卡模式退币数据: case CommandType.IC卡模式投币数据: { Recv卡头进出币数据 cmd = new Recv卡头进出币数据(f, DateTime.Now); if (ListenRouterToken == f.Code && ListenDeviceAddress == cmd.机头地址 && CommandTypeList.Exists((CommandType type) => type == CommandType.IC卡模式投币数据)) { ShowMsg(cmd.GetRecvData(DateTime.Now)); ShowMsg(cmd.GetSendData()); } SendData(cmd.SendData, recv.RemotePoint); } break; } } } }
/// <summary> /// 统计商户营收总览 /// </summary> /// <returns></returns> public static DataSet GetMerchRevenue(int merchId, Nullable <int> routerId = null, string sDate = null, string eDate = null) { string strRouterWhere = string.Empty, strParentWhere = string.Empty; if (routerId != null) { strRouterWhere += string.Format(" AND ID = {0}", routerId); strParentWhere += string.Format(" AND ParentID = {0}", routerId); } string strWhere = string.Empty; if (!string.IsNullOrWhiteSpace(sDate) && string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime >= '{0}'", sDate); } else if (string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime <= '{0}'", eDate); } else if (!string.IsNullOrWhiteSpace(sDate) && !string.IsNullOrWhiteSpace(eDate)) { strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } else { sDate = DateTime.Now.ToString("yyyy-MM-dd"); eDate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); strWhere = string.Format(" AND RealTime BETWEEN '{0}' AND '{1}'", sDate, eDate); } #region Sql语句 string strSql = @" WITH foodSale AS ( SELECT FoodID, MerchID, DeviceID, RealTime, SUM(CASE FlowType WHEN 0 THEN PayTotal END) AS RechargeAmount, SUM(CASE FlowType WHEN 1 THEN PayTotal END) AS SaleAmount, SUM(CASE PayType WHEN 0 THEN PayTotal END) AS CashPayAmount, SUM(CASE PayType WHEN 1 THEN PayTotal END) AS WechatPayAmount, SUM(CASE PayType WHEN 2 THEN PayTotal END) AS AliPayAmount, SUM(CASE PayType WHEN 3 THEN PayTotal END) AS UnionPayAmount FROM flw_food_sale WHERE MerchID = {0} {3} GROUP BY FoodID, MerchID, DeviceID, RealTime ), Foods AS ( SELECT FoodID FROM t_foods WHERE MerchID = {0} ), MerchInfo AS ( --商户 SELECT ID, MerchName, Token FROM Base_MerchInfo WHERE ID = {0} ) , Router AS ( --控制器 SELECT ID, MerchID FROM Base_DeviceInfo WHERE DeviceType = 0 {1} ), Devices AS ( --商户绑定的设备 SELECT ID FROM Base_DeviceInfo WHERE MerchID = {0} ) SELECT mi.MerchName, mi.Token, SUM(fs.RechargeAmount) AS RechargeAmount, SUM(fs.SaleAmount) AS SaleAmount, SUM(fs.CashPayAmount) AS CashPayAmount, SUM(fs.WechatPayAmount) AS WechatPayAmount, SUM(fs.AliPayAmount) AS AliPayAmount, SUM(fs.UnionPayAmount) AS UnionPayAmount, SUM(ISNULL(fs.RechargeAmount,0) + ISNULL(fs.SaleAmount,0)) AS Amount FROM foodSale fs INNER JOIN Foods f ON f.FoodID = fs.FoodID INNER JOIN MerchInfo mi ON mi.ID = fs.MerchID INNER JOIN Router r ON r.MerchID = mi.ID INNER JOIN Devices d ON d.ID = fs.DeviceID GROUP BY mi.MerchName, mi.Token ; --存币 SELECT ISNULL(SUM(Coins), 0) AS SaveCoins FROM flw_485_savecoin a INNER JOIN Data_MerchDevice b ON b.DeviceID = a.DeviceID WHERE MerchID = {0} {2} {3} ; --提币 SELECT ISNULL(SUM(fcs.Coins), 0) AS SaleCoins FROM flw_coin_sale fcs INNER JOIN Data_MerchDevice b ON b.DeviceID = fcs.DeviceID WHERE fcs.WorkType IN (3,6,7) AND MerchID = {0} {2} {3} "; #endregion strSql = string.Format(strSql, merchId, strRouterWhere, strParentWhere, strWhere); DataSet ds = XCCloudRS232BLL.ExecuterSqlToDataSet(strSql); return(ds); }