Beispiel #1
0
        /// <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);
                }
            }
        }
Beispiel #2
0
        /// <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;
     }
 }
Beispiel #4
0
        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; }
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
            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);
            }
Beispiel #8
0
        /// <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);
        }
Beispiel #9
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);
        }
Beispiel #10
0
        /// <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);
        }
Beispiel #11
0
        /// <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);
        }
Beispiel #12
0
        /// <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);
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
 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;
     }
 }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        /// <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);
        }
Beispiel #17
0
        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;
            }
        }
Beispiel #18
0
        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;
            }
        }
Beispiel #20
0
        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;
            }
        }
Beispiel #21
0
        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;
            }
        }
Beispiel #22
0
        /// <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);
        }
Beispiel #23
0
        /// <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);
        }
Beispiel #24
0
        /// <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);
        }
Beispiel #25
0
        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;
            }
        }
Beispiel #26
0
        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;
            }
        }
Beispiel #27
0
        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);
        }
Beispiel #29
0
        /// <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;
                    }
                }
            }
        }
Beispiel #30
0
        /// <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);
        }