public async Task <IActionResult> QueryMessagesContains([Required] int topic_id, [Required][FromBody] Range range) { //TODO 无需登录态验证 //根据range来查找时间最近的几条message_id组成的列表 //返回Json对象 return(await Wrapper.wrap(async (OracleConnection conn) => { //FUNC_QUERY_MESSAGE_BY_TOPIC(topic_id in INTEGER, startFrom in INTEGER, limitation in INTEGER, search_result out sys_refcursor) //return INTEGER string procudureName = "FUNC_QUERY_MESSAGE_BY_TOPIC"; OracleCommand cmd = new OracleCommand(procudureName, conn); cmd.CommandType = CommandType.StoredProcedure; //Add return value OracleParameter p1 = new OracleParameter(); p1 = cmd.Parameters.Add("state", OracleDbType.Int32); p1.Direction = ParameterDirection.ReturnValue; //Add input parameter follower_id OracleParameter p2 = new OracleParameter(); p2 = cmd.Parameters.Add("topic_id", OracleDbType.Int32); p2.Direction = ParameterDirection.Input; p2.Value = topic_id; OracleParameter p3 = new OracleParameter(); //Add input parameter be_followed_id p3 = cmd.Parameters.Add("startFrom", OracleDbType.Int32); p3.Value = range.startFrom; p3.Direction = ParameterDirection.Input; OracleParameter p4 = new OracleParameter(); //Add input parameter be_followed_id p4 = cmd.Parameters.Add("limitation", OracleDbType.Int32); p4.Value = range.limitation; p4.Direction = ParameterDirection.Input; //Add input parameter search_result OracleParameter p5 = new OracleParameter(); p5 = cmd.Parameters.Add("result", OracleDbType.RefCursor); p5.Direction = ParameterDirection.Output; OracleDataAdapter DataAdapter = new OracleDataAdapter(cmd); DataTable dt = new DataTable(); await Task.FromResult(DataAdapter.Fill(dt)); //dt: message_id MessageController.MessageForShow[] messages = new MessageController.MessageForShow[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; ++i) { int message_id = int.Parse(dt.Rows[i][0].ToString()); messages[i] = await MessageController.InnerQuery(message_id); } RestfulResult.RestfulArray <MessageController.MessageForShow> rr = new RestfulResult.RestfulArray <MessageController.MessageForShow>(); rr.Code = 200; rr.Message = "success"; rr.Data = messages; return new JsonResult(rr); })); }
private async Task <MessageController.MessageForShow[]> GetTwitterResults(OracleConnection conn, string searchKey, Range range) { //FUNC_SEARCH_MESSAGE(searchKey in VARCHAR2(50), startFrom in INTEGER, limitation in INTEGER, search_result out sys_refcursor) //return INTEGER string procudureName = "FUNC_SEARCH_MESSAGE"; OracleCommand cmd = new OracleCommand(procudureName, conn); cmd.CommandType = CommandType.StoredProcedure; //Add return value OracleParameter p1 = new OracleParameter(); p1 = cmd.Parameters.Add("state", OracleDbType.Int32); p1.Direction = ParameterDirection.ReturnValue; //Add input parameter user_id OracleParameter p2 = new OracleParameter(); p2 = cmd.Parameters.Add("searchKey", OracleDbType.Varchar2); p2.Value = searchKey; p2.Direction = ParameterDirection.Input; //Add input parameter follower_id OracleParameter p3 = new OracleParameter(); //Add input parameter be_followed_id p3 = cmd.Parameters.Add("startFrom", OracleDbType.Int32); p3.Value = range.startFrom; p3.Direction = ParameterDirection.Input; OracleParameter p4 = new OracleParameter(); //Add input parameter be_followed_id p4 = cmd.Parameters.Add("limitation", OracleDbType.Int32); p4.Value = range.limitation; p4.Direction = ParameterDirection.Input; //Add input parameter search_result OracleParameter p5 = new OracleParameter(); p5 = cmd.Parameters.Add("search_result", OracleDbType.RefCursor); p5.Direction = ParameterDirection.Output; OracleDataAdapter DataAdapter = new OracleDataAdapter(cmd); DataTable dt = new DataTable(); await Task.FromResult(DataAdapter.Fill(dt)); //dt: sender_user_id, private_letter_id, content, timestamp MessageController.MessageForShow[] receivedTwitters = new MessageController.MessageForShow[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; ++i) { int message_id = int.Parse(dt.Rows[i][0].ToString()); receivedTwitters[i] = await MessageController.InnerQuery(message_id); } return(receivedTwitters); }
public async Task <IActionResult> Query([Required][FromBody] Range range) { //TODO 需要身份验证 //查找At自己的在range范围内的message_id //按照时间排序 //返回包含这些id的Json对象 int my_user_id = -1; if (HttpContext.User.Identity.IsAuthenticated) { my_user_id = int.Parse(HttpContext.User.Claims.ElementAt(0).Value); } else { //进入到这部分意味着用户登录态已经失效,需要返回给客户端信息,即需要登录。 RestfulResult.RestfulData rr = new RestfulResult.RestfulData(); rr.Code = 200; rr.Message = "Need Authentication"; return(new JsonResult(rr)); } return(await Wrapper.wrap(async (OracleConnection conn) => { //FUNC_QUERY_MESSAGE_AT_USER(in_user_id in INTEGER, startFrom in INTEGER, limitation in INTEGER, search_result out sys_refcursor) //return INTEGER string procudureName = "FUNC_QUERY_MESSAGE_AT_USER"; OracleCommand cmd = new OracleCommand(procudureName, conn); cmd.CommandType = CommandType.StoredProcedure; //Add return value OracleParameter p1 = new OracleParameter(); p1 = cmd.Parameters.Add("state", OracleDbType.Int32); p1.Direction = ParameterDirection.ReturnValue; //Add input parameter follower_id OracleParameter p2 = new OracleParameter(); p2 = cmd.Parameters.Add("in_user_id", OracleDbType.Int32); p2.Direction = ParameterDirection.Input; p2.Value = my_user_id; OracleParameter p3 = new OracleParameter(); //Add input parameter be_followed_id p3 = cmd.Parameters.Add("startFrom", OracleDbType.Int32); p3.Value = range.startFrom; p3.Direction = ParameterDirection.Input; OracleParameter p4 = new OracleParameter(); //Add input parameter be_followed_id p4 = cmd.Parameters.Add("limitation", OracleDbType.Int32); p4.Value = range.limitation; p4.Direction = ParameterDirection.Input; //Add input parameter search_result OracleParameter p5 = new OracleParameter(); p5 = cmd.Parameters.Add("search_result", OracleDbType.RefCursor); p5.Direction = ParameterDirection.Output; OracleDataAdapter DataAdapter = new OracleDataAdapter(cmd); DataTable dt = new DataTable(); await Task.FromResult(DataAdapter.Fill(dt)); //dt: message_id MessageController.MessageForShow[] messages = new MessageController.MessageForShow[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; ++i) { int message_id = int.Parse(dt.Rows[i][0].ToString()); messages[i] = await MessageController.InnerQuery(message_id); } RestfulResult.RestfulArray <MessageController.MessageForShow> rr = new RestfulResult.RestfulArray <MessageController.MessageForShow>(); rr.Code = 200; rr.Message = "success"; rr.Data = messages; return new JsonResult(rr); })); }
public async Task <IActionResult> Query([Required] int user_id, [Required][FromBody] Range range) { //TODO 需要验证登录态 //需要range作为参数 //从数据库取出message_id们 加油 return(await Wrapper.wrap(async (OracleConnection conn) => { //FUNC_QUERY_COLLECTIONS_OF_MINE(userid in INTEGER, startFrom in INTEGER, limitation in INTEGER, search_result out sys_refcursor) //return INTEGER string procudureName = "FUNC_QUERY_COLLECTIONS_OF_MINE"; OracleCommand cmd = new OracleCommand(procudureName, conn); cmd.CommandType = CommandType.StoredProcedure; //Add return value OracleParameter p1 = new OracleParameter(); p1 = cmd.Parameters.Add("state", OracleDbType.Int32); p1.Direction = ParameterDirection.ReturnValue; //Add input parameter user_id OracleParameter p2 = new OracleParameter(); p2 = cmd.Parameters.Add("userid", OracleDbType.Int32); p2.Direction = ParameterDirection.Input; p2.Value = user_id; OracleParameter p3 = new OracleParameter(); //Add input parameter startFrom p3 = cmd.Parameters.Add("startFrom", OracleDbType.Int32); p3.Value = range.startFrom; p3.Direction = ParameterDirection.Input; OracleParameter p4 = new OracleParameter(); //Add input parameter limitation p4 = cmd.Parameters.Add("limitation", OracleDbType.Int32); p4.Value = range.limitation; p4.Direction = ParameterDirection.Input; //Add output parameter result OracleParameter p5 = new OracleParameter(); p5 = cmd.Parameters.Add("search_result", OracleDbType.RefCursor); p5.Direction = ParameterDirection.Output; OracleDataAdapter DataAdapter = new OracleDataAdapter(cmd); DataTable dt = new DataTable(); await Task.FromResult(DataAdapter.Fill(dt)); //dt: message_id int[] message_ids = new int[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; ++i) { message_ids[i] = int.Parse(dt.Rows[i][0].ToString()); } MessageController.MessageForShow[] messages = new MessageController.MessageForShow[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; ++i) { messages[i] = await MessageController.InnerQuery(message_ids[i]); } //RestfulResult.RestfulArray<int> rr = new RestfulResult.RestfulArray<int>(); RestfulResult.RestfulArray <MessageController.MessageForShow> rr = new RestfulResult.RestfulArray <MessageController.MessageForShow>(); rr.Code = 200; rr.Message = "success"; rr.Data = messages; return new JsonResult(rr); })); }