/// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="commonObject"></param>
        /// <param name="SessionPool"></param>
        /// <param name="IP"></param>
        public static void Register(Socket sockeClient, string msg, Dictionary <string, Session> sessionPool, string IP)
        {
            string answerMsgType = Convert.ToInt32(TCPMessageType.用户客户端注册).ToString();
            string mobile        = string.Empty;
            string errMsg        = string.Empty;
            //解析消息对象
            SocketDataModel <UserSendObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <UserSendObject> >(msg);
            UserSendObject sendObj   = socketDataModel.SendObject;
            string         userToken = sendObj.UserToken;
            //设置客户端对象
            List <string> repeatIPList = new List <string>();
            var           pair         = sessionPool.Where(p => p.Value.SendClientId.Equals(userToken));

            foreach (var p in pair)
            {
                if (!p.Value.IP.Equals(IP))
                {
                    repeatIPList.Add(p.Value.IP);
                }
            }

            foreach (var v in repeatIPList)
            {
                sessionPool.Remove(v);
            }

            sessionPool[IP].SendClientId = userToken;
            sessionPool[IP].SockeClient  = sockeClient;
            //应答数据
            SendSuccessData(answerMsgType, sessionPool, IP, "注册成功", null);
        }
Exemple #2
0
        public static void RadarAnswer(Socket sockeClient, string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            string receiveIP     = string.Empty;
            string receiveMobile = string.Empty;
            string errMsg        = string.Empty;
            //解析消息对象
            SocketDataModel <RadarSendObject, MemberReceiveObject, RadarAnswerObj> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <RadarSendObject, MemberReceiveObject, RadarAnswerObj> >(msg);
            RadarSendObject     sendObj        = socketDataModel.SendObject;
            MemberReceiveObject receiveObj     = socketDataModel.ReceiveObject;
            RadarAnswerObj      radarAnswerObj = socketDataModel.Data;

            //接受信息方是否存在
            if (!GetIP(sessionPool, receiveObj.Mobile, out receiveIP))
            {
                //tb.show(socketDataModel.MessageType, sendObj.StoreId, sendObj.Token, receiveObj.StoreId, receiveObj.Mobile, socketDataModel.Data.ToString(), "0");
                return;
            }

            TcpHelper tb = new TcpHelper();

            //发送消息给接受方
            //var msgObj = Utils.DeserializeObject(socketDataModel.Data.ToString());
            SendData(radarAnswerObj, sessionPool, receiveIP);

            //tb.show(socketDataModel.MessageType, sendObj.StoreId, sendMobile, "", receiveObj.Mobile, socketDataModel.Data.ToString(), "1");
        }
 private void sendData()
 {
     //出币后向客户端发送成功信息
     //UDPSocketAnswerModel answerModel = UDPSocketAnswerBusiness.GetAnswerModel(model.SN);
     RadarSendObject     sendObj    = new RadarSendObject("100010", "001");
     MemberReceiveObject receiveObj = new MemberReceiveObject("15618920033");
     string messageType             = Convert.ToInt16(TCPMessageType.雷达操作回复).ToString();
     string sysId   = Convert.ToInt16(XCCloudService.Common.Enum.SysIdEnum.UDP).ToString();
     var    dataObj = new { result_code = 1 };
     SocketDataModel <RadarSendObject, MemberReceiveObject> socketDataModel = new SocketDataModel <RadarSendObject, MemberReceiveObject>(messageType, sysId, sendObj, receiveObj, Utils.SerializeObject(dataObj));
     //TCPClientServiceForUDPBusiness.Send(Utils.DataContractJsonSerializer(socketDataModel));
 }
        public static void Coin(string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            SocketDataModel <UserSendObject, CoinObj> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <UserSendObject, CoinObj> >(msg);
            UserSendObject sendObj = socketDataModel.SendObject;
            CoinObj        coinObj = socketDataModel.Data;

            CoinUtility.GetSaleCoinerParameter();
            CoinUtility coin = new CoinUtility();

            coin.SendInit();
            coin.SendOutCoin(coinObj.Coins);
            coin.SerialClose();
        }
        /// <summary>
        /// 读取IC卡信息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="sessionPool"></param>
        /// <param name="sendIP"></param>
        public static void GetICCard(string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            string receiveIP        = string.Empty;
            string dogId            = string.Empty;
            string answerMsgType    = Convert.ToInt32(TCPMessageType.读取IC卡).ToString();
            string cardMsg          = string.Empty;
            string storePassword    = string.Empty;
            string icCardId         = string.Empty;
            string repeatCode       = string.Empty;
            string memberRepeatCode = string.Empty;
            string errMsg           = string.Empty;
            //解析消息对象
            SocketDataModel <UserSendObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <UserSendObject> >(msg);
            UserSendObject sendObj = socketDataModel.SendObject;

            //接受信息方是否存在
            if (!GetIP(sessionPool, sendObj.UserToken, out receiveIP))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "用户未注册");
                return;
            }
            //获取店密码接口
            string userToken = sendObj.UserToken;

            if (!StoreBusiness.GetStorePassword(userToken, out storePassword, out errMsg))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "获取门店信息出错");
                return;
            }

            object result_data = null;

            //读取IC卡信息
            if (ICCardUtility.GetICCardID(storePassword, out icCardId, out repeatCode, out errMsg))
            {
                if (MemberBusiness.GetMember(userToken, sendObj.StoreId, icCardId, ref result_data, out errMsg))
                {
                    SendSuccessData(answerMsgType, sessionPool, sendIP, "读取会员信息成功", result_data);
                }
                else
                {
                    SendFailData(answerMsgType, sessionPool, sendIP, errMsg);
                }
            }
            else
            {
                SendFailData(answerMsgType, sessionPool, sendIP, errMsg);
            }
        }
Exemple #6
0
        /// <summary>
        /// 消息推送
        /// </summary>
        /// <param name="socketDataModel"></param>
        /// <param name="SessionPool"></param>
        /// <param name="IP"></param>
        public static void Push(Socket sockeClient, string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            string receiveIP     = string.Empty;
            string sendMobile    = string.Empty;
            string receiveMobile = string.Empty;
            string errMsg        = string.Empty;
            //解析消息对象
            SocketDataModel <MemberSendObject, MemberReceiveObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <MemberSendObject, MemberReceiveObject> >(msg);
            MemberSendObject    sendObj    = socketDataModel.SendObject;
            MemberReceiveObject receiveObj = socketDataModel.ReceiveObject;

            if (!MobileTokenBusiness.ExistToken(sendObj.Token, out sendMobile))
            {
                //如果发送方token不正确
                var msgObj = new { result_code = 0, errMsg = "手机token无效" };
                //TcpHelper.SaveDBLog(socketDataModel.MessageType, "", sendObj.Token, receiveObj.StoreId, receiveObj.Mobile, socketDataModel.Data.ToString(), "0");
                SendData(msgObj, sessionPool, sendIP);
            }

            //接受信息方是否存在
            if (!GetIP(sessionPool, receiveObj.Mobile, out receiveIP))
            {
                //如果发送方token不正确
                var msgObj = new { result_code = 0, errMsg = "对方不在线" };
                //tb.show(socketDataModel.MessageType, sendObj.StoreId, sendObj.Token, receiveObj.StoreId, receiveObj.Mobile, socketDataModel.Data.ToString(), "0");
                SendData(msgObj, sessionPool, sendIP);
            }
            else
            {
                TcpHelper tb = new TcpHelper();

                //发送消息给接受方
                var msgObj1 = new { result_code = 1, content = socketDataModel.Data };
                SendData(msgObj1, sessionPool, receiveIP);

                //提示发送方消息发送成功
                var msgObj2 = new { result_code = 1 };
                SendData(msgObj2, sessionPool, sendIP);

                //记录TCP日志
                //DataMessageModel logModel = new DataMessageModel();
                //logModel.ManageType = socketDataModel.MessageType;
                //TcpHelper.SaveDBLog(socketDataModel.MessageType, "", sendMobile, "", receiveObj.Mobile, socketDataModel.Data.ToString(), "1");
            }
        }
        private void radarNotify(HttpContext context)
        {
            string errMsg  = string.Empty;
            string token   = context.Request["token"];
            string action  = context.Request["action"];
            string result  = context.Request["result"];
            string orderid = context.Request["orderid"];
            string sn      = context.Request["sn"];
            string signkey = context.Request["signkey"];

            ClientService service = new ClientService();

            service.Connection();
            RadarNotifyRequestModel dataModel = new RadarNotifyRequestModel();

            dataModel.Token   = token;
            dataModel.SN      = sn;
            dataModel.Result  = result;
            dataModel.OrderId = orderid;
            dataModel.SignKey = "";
            dataModel.Action  = "1";
            dataModel.Coins   = "5";
            byte[] data = DataFactory.CreateRequesProtocolData(TransmiteEnum.雷达通知指令, dataModel);
            service.Send(data);

            RadarSendObject sendObj = new RadarSendObject("100010", "0001");
            //手机号码构建TCP接受对象
            MemberReceiveObject receiveObj     = new MemberReceiveObject("15618920033");
            RadarAnswerObj      radarAnswerObj = new RadarAnswerObj("1", ((int)(TCPAnswerMessageType.出币)).ToString(), "成功出币5");

            SocketDataModel <RadarSendObject, MemberReceiveObject, RadarAnswerObj> socketDataModel = new SocketDataModel <RadarSendObject, MemberReceiveObject, RadarAnswerObj>("3", "0", sendObj, receiveObj, radarAnswerObj);
            //string str = Utils.DataContractJsonSerializer(socketDataModel);

            var dataObj = new {
                answerMsgType = "1",
                answerOjb     = new {
                    result_code = "1",
                    answerMsg   = "成功出币10个"
                }
            };

            TCPServiceBusiness.Send("15618920033", dataObj);
        }
Exemple #8
0
        /// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="commonObject"></param>
        /// <param name="SessionPool"></param>
        /// <param name="IP"></param>
        public static void Register(Socket socketClient, string msg, Dictionary <string, Session> sessionPool, string IP)
        {
            string mobile = string.Empty;
            string errMsg = string.Empty;
            //解析消息对象
            SocketDataModel <MemberSendObject, MemberReceiveObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <MemberSendObject, MemberReceiveObject> >(msg);
            MemberSendObject sendObj = socketDataModel.SendObject;

            //验证解析token
            if (MobileTokenBusiness.ExistToken(sendObj.Token, out mobile))
            {
                //设置客户端对象
                List <string> repeatIPList = new List <string>();
                var           pair         = sessionPool.Where(p => p.Value.SendClientId.Equals(mobile));
                foreach (var p in pair)
                {
                    if (!p.Value.IP.Equals(IP))
                    {
                        repeatIPList.Add(p.Value.IP);
                    }
                }

                foreach (var v in repeatIPList)
                {
                    sessionPool.Remove(v);
                }

                sessionPool[IP].SendClientId = mobile;
                sessionPool[IP].SockeClient  = socketClient;
                //应答数据
                var msgObj = new { result_code = 1, answerMsgType = "0", answerMsg = "注册成功" };

                SendData(msgObj, sessionPool, IP);
            }
            else
            {
                //应答数据
                var msgObj = new { result_code = 0, result_msg = "手机token无效" };
                SendData(msgObj, sessionPool, IP);
            }
        }
        public static void ExitICCard(string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            string receiveIP     = string.Empty;
            string dogId         = string.Empty;
            string storePassword = string.Empty;
            string newICCardId   = string.Empty;
            string errMsg        = string.Empty;
            string answerMsgType = Convert.ToInt32(TCPMessageType.退卡).ToString();
            //解析消息对象
            SocketDataModel <UserSendObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <UserSendObject> >(msg);
            UserSendObject sendObj = socketDataModel.SendObject;

            //接受信息方是否存在
            if (!GetIP(sessionPool, sendObj.UserToken, out receiveIP))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "用户未注册");
                return;
            }
            //获取店密码接口
            string userToken = sendObj.UserToken;

            if (!StoreBusiness.GetStorePassword(userToken, out storePassword, out errMsg))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "获取门店信息出错");
                return;
            }
            //清理卡片
            if (!ICCardUtility.RecoveryICCard(storePassword, out errMsg))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, errMsg);
                return;
            }
            else
            {
                SendSuccessData(answerMsgType, sessionPool, sendIP, "会员卡回收成功", null);
            }
        }
Exemple #10
0
        public static void CreateICCard(string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            string sRepeatCode   = (new Random()).Next(0, 255).ToString();
            string receiveIP     = string.Empty;
            string dogId         = string.Empty;
            string storePassword = string.Empty;
            string newICCardId   = string.Empty;
            string errMsg        = string.Empty;
            string answerMsgType = Convert.ToInt32(TCPMessageType.办理新IC卡).ToString();
            //解析消息对象
            SocketDataModel <UserSendObject, MemberRegisterModel> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <UserSendObject, MemberRegisterModel> >(msg);
            UserSendObject      sendObj             = socketDataModel.SendObject;
            MemberRegisterModel memberRegisterModel = (MemberRegisterModel)(socketDataModel.Data);

            newICCardId = memberRegisterModel.ICCardId;
            //接受信息方是否存在
            if (!GetIP(sessionPool, sendObj.UserToken, out receiveIP))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "用户未注册");
                return;
            }
            //获取店密码接口
            string userToken = sendObj.UserToken;

            if (!StoreBusiness.GetStorePassword(userToken, out storePassword, out errMsg))
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "获取门店信息出错");
                return;
            }
            //验证是否可以办卡
            if (ICCardUtility.CheckNullCard(storePassword))
            {
                if (MemberBusiness.CheckMemberCanRegister(userToken, memberRegisterModel.StoreId, memberRegisterModel.Mobile, out errMsg))
                {
                    //办理新卡
                    if (ICCardUtility.CreateICCard(newICCardId, sRepeatCode, storePassword, out errMsg, true))
                    {
                        memberRegisterModel.RepeatCode = sRepeatCode;
                        object result_data = null;
                        int    repeatCode  = 0;
                        if (MemberBusiness.MemberRegister(memberRegisterModel, out repeatCode, out errMsg, ref result_data))
                        {
                            SendSuccessData(answerMsgType, sessionPool, sendIP, "会员卡开通成功", result_data);
                        }
                        else
                        {
                            SendFailData(answerMsgType, sessionPool, sendIP, errMsg);
                        }
                    }
                    else
                    {
                        SendFailData(answerMsgType, sessionPool, sendIP, errMsg);
                    }
                }
                else
                {
                    SendFailData(answerMsgType, sessionPool, sendIP, errMsg);
                }
            }
            else
            {
                SendFailData(answerMsgType, sessionPool, sendIP, "本卡已使用,请插入空卡");
            }
        }