/// <summary> /// 登陆 /// </summary> /// <param name="baseApi"></param> /// <returns></returns> public object Do_GetToken(BaseApi baseApi) { LoginParam loginParam = JsonConvert.DeserializeObject <LoginParam>(baseApi.param.ToString()); if (loginParam == null) { throw new ApiException(CodeMessage.InvalidParam, "InvalidParam"); } if (loginParam.code == Global.XCSECRET) { SessionBag sessionBagX = SessionContainer.GetSession(Global.XCOPENID); if (sessionBagX != null) { if (sessionBagX.Name != "") { SessionContainer.RemoveFromCache(sessionBagX.OpenId); } } AccessTokenContainer.Register(Global.APPID, Global.APPSECRET); var sessionBag = SessionContainer.UpdateSession(null, Global.XCOPENID, Global.XCOPENID); OpenDao openDao = new OpenDao(); SessionUser sessionUser = new SessionUser(); Member member = openDao.GetMember(Utils.GetOpenID(sessionBag.Key)); if (member == null) { throw new ApiException(CodeMessage.SenparcCode, CodeMessage.SenparcCode.ToString()); } else { sessionUser.userType = "MEMBER"; sessionUser.openid = sessionBag.OpenId; sessionUser.memberId = member.memberId; sessionBag.Name = JsonConvert.SerializeObject(sessionUser); SessionContainer.Update(sessionBag.Key, sessionBag); SessionBag bag = new SessionBag(); bag.Name = sessionBag.Key; SessionContainer.UpdateSession(Global.XCOPENID, sessionBag.Key, sessionBag.Key); return(new { token = sessionBag.Key }); } } else { throw new ApiException(CodeMessage.SenparcCode, CodeMessage.SenparcCode.ToString()); } }
public object Do_MemberReg(BaseApi baseApi) { MemberRegParam memberRegParam = JsonConvert.DeserializeObject <MemberRegParam>(baseApi.param.ToString()); if (memberRegParam == null) { throw new ApiException(CodeMessage.InvalidParam, "InvalidParam"); } SessionBag sessionBag = SessionContainer.GetSession(baseApi.token); if (sessionBag == null) { throw new ApiException(CodeMessage.InvalidToken, "InvalidToken"); } OpenDao openDao = new OpenDao(); string openID = Utils.GetOpenID(baseApi.token); var member = openDao.GetMember(openID); if (member != null) { throw new ApiException(CodeMessage.MemberExist, "MemberExist"); } if (!openDao.MemberReg(memberRegParam, openID)) { throw new ApiException(CodeMessage.MemberRegError, "MemberRegError"); } member = openDao.GetMember(openID); SessionUser sessionUser = JsonConvert.DeserializeObject <SessionUser>(sessionBag.Name); sessionUser.openid = sessionBag.OpenId; sessionUser.memberId = member.memberId; sessionUser.userType = "MEMBER"; sessionBag.Name = JsonConvert.SerializeObject(sessionUser); SessionContainer.Update(sessionBag.Key, sessionBag, new TimeSpan(Global.SESSION_EXPIRY_H, Global.SESSION_EXPIRY_M, Global.SESSION_EXPIRY_S)); return(""); }
/// <summary> /// 登陆 /// </summary> /// <param name="baseApi"></param> /// <returns></returns> public object Do_Login(BaseApi baseApi) { LoginParam loginParam = JsonConvert.DeserializeObject <LoginParam>(baseApi.param.ToString()); if (loginParam == null) { throw new ApiException(CodeMessage.InvalidParam, "InvalidParam"); } var jsonResult = SnsApi.JsCode2Json(Global.APPID, Global.APPSECRET, loginParam.code); if (jsonResult.errcode == Senparc.Weixin.ReturnCode.请求成功) { AccessTokenContainer.Register(Global.APPID, Global.APPSECRET); var sessionBag = SessionContainer.UpdateSession(null, jsonResult.openid, jsonResult.session_key); OpenDao openDao = new OpenDao(); SessionUser sessionUser = new SessionUser(); Member member = openDao.GetMember(Utils.GetOpenID(sessionBag.Key)); if (member == null) { sessionUser.userType = "GUEST"; sessionBag.Name = JsonConvert.SerializeObject(sessionUser); SessionContainer.Update(sessionBag.Key, sessionBag); return(new { token = sessionBag.Key, isReg = false }); } else { sessionUser.userType = "MEMBER"; sessionUser.openid = sessionBag.OpenId; sessionUser.memberId = member.memberId; sessionBag.Name = JsonConvert.SerializeObject(sessionUser); SessionContainer.Update(sessionBag.Key, sessionBag); return(new { token = sessionBag.Key, isReg = true, member.memberId, member.memberName, member.memberImg, member.memberPhone, member.memberSex, member.scanCode }); } } else { throw new ApiException(CodeMessage.SenparcCode, jsonResult.errmsg); } }
public object Do_Login(BaseApi baseApi) { LoginParam loginParam = JsonConvert.DeserializeObject <LoginParam>(baseApi.param.ToString()); if (loginParam == null) { throw new ApiException(CodeMessage.InvalidParam, "InvalidParam"); } var jsonResult = SnsApi.JsCode2Json(Global.APPID, Global.APPSECRET, loginParam.code); if (jsonResult.errcode == Senparc.Weixin.ReturnCode.请求成功) { AccessTokenContainer.Register(Global.APPID, Global.APPSECRET); var sessionBag = SessionContainer.UpdateSession(null, jsonResult.openid, jsonResult.session_key, jsonResult.unionid); OpenDao openDao = new OpenDao(); SessionUser sessionUser = new SessionUser(); if (loginParam.tempOpenId != null && loginParam.tempOpenId.StartsWith("3rd-")) { Member member1 = openDao.GetMember(Utils.GetOpenID(sessionBag.Key)); if (member1 == null) { openDao.UpdateMemberOpenID(Utils.GetOpenID(sessionBag.Key), loginParam.tempOpenId); } else { Member member2 = openDao.GetMember(loginParam.tempOpenId); if (member1.openid != member2.openid) { openDao.MoveMember(member1.memberId, member2.memberId, member2.heart); } } } Member member = openDao.GetMember(Utils.GetOpenID(sessionBag.Key)); if (member == null) { sessionUser.userType = "GUEST"; sessionBag.Name = JsonConvert.SerializeObject(sessionUser); SessionContainer.Update(sessionBag.Key, sessionBag, new TimeSpan(Global.SESSION_EXPIRY_H, Global.SESSION_EXPIRY_M, Global.SESSION_EXPIRY_S)); return(new { token = sessionBag.Key, isReg = false }); } else { sessionUser.userType = "MEMBER"; sessionUser.openid = sessionBag.OpenId; sessionUser.memberId = member.memberId; sessionBag.Name = JsonConvert.SerializeObject(sessionUser); SessionContainer.Update(sessionBag.Key, sessionBag, new TimeSpan(Global.SESSION_EXPIRY_H, Global.SESSION_EXPIRY_M, Global.SESSION_EXPIRY_S)); openDao.AddMemberHeartCommit(member); return(new { token = sessionBag.Key, isReg = true, member.memberId, member.memberName, member.memberImg, member.memberPhone, member.memberSex, member.scanCode }); } } else { throw new ApiException(CodeMessage.SenparcCode, jsonResult.errmsg); } }
/// <summary> /// 下订单 /// </summary> /// <param name="baseApi"></param> /// <returns></returns> public object Do_WebBookingTicket(BaseApi baseApi) { OpenDao openDao = new OpenDao(); BookingTicketParam param = JsonConvert.DeserializeObject <BookingTicketParam>(baseApi.param.ToString()); if (param == null) { throw new ApiException(CodeMessage.InvalidParam, "InvalidParam"); } //if (param.posCode == null || param.posCode == "") //{ // throw new ApiException(CodeMessage.InterfaceValueError, "InterfaceValueError"); //} if (param.planId == null || param.planId == "") { throw new ApiException(CodeMessage.InterfaceValueError, "InterfaceValueError"); } if (param.gradeId == null || param.gradeId == "") { throw new ApiException(CodeMessage.InterfaceValueError, "InterfaceValueError"); } if (param.mobile == null || param.mobile == "") { throw new ApiException(CodeMessage.InterfaceValueError, "InterfaceValueError"); } if (param.passengerList == null || param.passengerList.Count == 0) { throw new ApiException(CodeMessage.InterfaceValueError, "InterfaceValueError"); } string openId = Utils.GetOpenID(baseApi.token); //处理10分取消未支付订单 openDao.UpdateBookingStatusBy10Minute(openId); //判断用户是否被禁用 Member member = openDao.GetMember(openId); if (member.status == "0") { throw new ApiException(CodeMessage.MemberStatusError, "MemberStatusError"); } //判断船是否是开航前多少分钟所以不能订票 int time = 0; int.TryParse(Global.XCIfBookingTime, out time); IfSuspend obj = JsonConvert.DeserializeObject <IfSuspend>(OpenBuss.GetIfSuspend(Global.POSCODE, time, param.planId)); if (obj.PORTLIST.Count > 0) { if (obj.PORTLIST[0].COUNT == "0") { throw new ApiException(CodeMessage.TimeError, "TimeError"); } } //if (!openDao.ifBooking(param.planId, Global.XCIfBookingTime)) //{ // throw new ApiException(CodeMessage.BookingTicketError, "BookingTicketError"); //} //先判断订票用户和账号是否匹配。 string error = ""; if (param.passengerList.Count > 5) { openDao.writeLog(Global.XCPOSCODE, openId, "PassengerNumError", "订票人超过5个"); throw new ApiException(CodeMessage.PassengerNumError, "订票人超过5个"); } foreach (Passenger passenger in param.passengerList) { //判断用户是否订过同一航次 if (openDao.checkOnePlan(param.planId, passenger.passengerCard)) { throw new ApiException(CodeMessage.OnePlanError, "OnePlanError"); } } //再判断是否都是一个等级 string grade = param.passengerList[0].passengerType; foreach (Passenger passenger in param.passengerList) { if (grade != passenger.passengerType) { error += "不是同一个类型,一个订单只支持同一个类型的票;"; } } if (error != "") { openDao.writeLog(Global.XCPOSCODE, openId, "BookingTicket", error); throw new ApiException(CodeMessage.CheckPassengerError, error); } //用第一个人的信息生成一个新的订单号 string bookBillId = ""; string GetBookBillIdUserResult = GetBookBillIdUser(Global.XCPOSCODE, param.name, param.mobile, param.card, openId); WebBillIdResult web1 = JsonConvert.DeserializeObject <WebBillIdResult>(GetBookBillIdUserResult); if (web1.MESSAGE[0].IS_SUCCESS == "TRUE") { bookBillId = web1.BILLID[0].BILL_ID; } else { openDao.writeLog(Global.XCPOSCODE, openId, "BookingTicket", web1.MESSAGE[0].MESSAGE); throw new ApiException(CodeMessage.GetBillIdError, "GetBillIdError"); } //订票 string allotType = Global.XCALLOTTYPE, ticketType = param.passengerList[0].passengerType; int ticketNum = param.passengerList.Count; if (param.passengerList[0].passengerType == "004") { allotType = "999"; } string BookTicketAutoByTicketResult = BookTicketAutoByTicketType(Global.XCPOSCODE, param.planId, param.gradeId, allotType, ticketNum, bookBillId, ticketType); WebResult web2 = JsonConvert.DeserializeObject <WebResult>(BookTicketAutoByTicketResult); if (web2.MESSAGE[0].IS_SUCCESS == "TRUE") { } else { openDao.writeLog(Global.XCPOSCODE, openId, "BookingTicket", web2.MESSAGE[0].MESSAGE); throw new ApiException(CodeMessage.BookTicketError, "BookTicketError"); } //获取订票状态 string GetBookBillStateResult = GetBookBillStateNew(Global.XCPOSCODE, bookBillId); WebBookBillStateResult web3 = JsonConvert.DeserializeObject <WebBookBillStateResult>(GetBookBillStateResult); if (web3.MESSAGE[0].IS_SUCCESS == "TRUE") { List <WEBBILLSTATE> billState = web3.BILLSTATE; int billPrice = 0; //订单总金额 //用订票用户信息补充票明细信息 for (int i = 0; i < billState.Count; i++) { billPrice += billState[i].FACT_PRICE; string AddTicketInfoResult = AddTicketInfo(Global.XCPOSCODE, bookBillId, billState[i].TICKET_ID, param.passengerList[i].passengerName, param.passengerList[i].passengerCard); //WebResult web4 = JsonConvert.DeserializeObject<WebResult>(AddTicketInfoResult); openDao.insertBillInfo(bookBillId, param.passengerList[i].passengerId, param.passengerList[i].passengerType, param.passengerList[i].passengerName, param.passengerList[i].passengerCardType, param.passengerList[i].passengerCard, param.passengerList[i].passengerTel, billState[i].BUNK_GRADE_NAME, billState[i].BUNK_CODE, billState[i].FACT_PRICE, billState[i].TICKET_ID, billState[i].MARK_CODE); } //订票成功后添加一条记录在mysql里 string[] ports = billState[0].SEAROUTE_NAME.Split("-"); string[] times = billState[0].SAILING_TIME.Split(":"); DateTime dtime = Convert.ToDateTime(billState[0].DEPARTURE_TIME); dtime = dtime.AddHours(Convert.ToInt16(times[0])); dtime = dtime.AddMinutes(Convert.ToInt16(times[1])); string ARRIVE_TIME = dtime.ToString("yyyy-MM-dd HH:mm:ss"); if (!openDao.insertBillList(Global.XCPOSCODE, openId, bookBillId, "1", param.passengerList[0].passengerName, param.passengerList[0].passengerTel, param.passengerList[0].passengerCard, billState[0].DEPARTURE_TIME, ARRIVE_TIME, billState[0].SHIP_NAME, ports[0], ports[1], billState.Count, billPrice, billState[0].PLAN_ID, "")) { openDao.writeLog(Global.XCPOSCODE, openId, "InsertBillList", "InsertBillListError"); throw new ApiException(CodeMessage.InsertBillListError, "InsertBillListError"); } } else { openDao.writeLog(Global.XCPOSCODE, openId, "GetBookBillState", web3.MESSAGE[0].MESSAGE); throw new ApiException(CodeMessage.GetBookBillStateError, "GetBookBillStateError"); } //返回订单号 return(bookBillId); }