session.repo.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /**
  2. * 搜索功能。
  3. */
  4. "use strict";
  5. let ImDb = require('../mysql/db/im.db');
  6. let log = require('../../util/log.js');
  7. const IMTABLE = require('../../include/commons').IM_DB;
  8. class SessionRepo {
  9. constructor() {
  10. }
  11. /**
  12. * 获取某个用户的全部session列表
  13. * @param userId
  14. * @param handler
  15. */
  16. static getUserSessionsFromMysql(userId,handler){
  17. let sql ="select session_id from "+IMTABLE.PARTICIPANTS+" w where w.participaint_id = ? group by w.session_id";
  18. let sessionsql = "select id,name,type,create_date from "+IMTABLE.SESSIONS+" s where s.id in("+sql+")";
  19. ImDb.execQuery({
  20. "sql": sessionsql,
  21. "args": [userId],
  22. "handler": function (err, res) {
  23. if(err) {
  24. log.error("sql:"+sessionsql+"data:userId:"+userId);
  25. }else{
  26. log.info("getMysqlUserSessions success by userId :"+userId);
  27. }
  28. handler(err,res);
  29. }
  30. });
  31. }
  32. /**
  33. * 获取置顶的消息
  34. * @param userId
  35. * @param handler
  36. */
  37. static getUserStickSessionsFromMysql(userId,handler){
  38. let sql ="select session_id from "+IMTABLE.PARTICIPANTS+" w where w.participaint_id = ? group by w.session_id";
  39. let sessionsql = "select s.id,s.name,s.type,s.create_date from "+IMTABLE.SESSIONS+" s,"+IMTABLE.STICKY_SESSION+" ss where s.id = ss.session_id s.id in("+sql+")";
  40. ImDb.execQuery({
  41. "sql": sessionsql,
  42. "args": [userId],
  43. "handler": function (err, res) {
  44. if(err) {
  45. log.error("sql:"+sessionsql+"data:userId:"+userId);
  46. }else{
  47. log.info("getMysqlUserSessions success by userId :"+userId);
  48. }
  49. handler(err,res);
  50. }
  51. });
  52. }
  53. /**
  54. * 获取session单个对象
  55. * @param sessionId
  56. * @param handler
  57. */
  58. static getSessions(sessionId,handler){
  59. let sessionsql = "select id,name,type,create_date from "+IMTABLE.SESSIONS+" s where s.id=?";
  60. ImDb.execQuery({
  61. "sql": sessionsql,
  62. "args": [sessionId],
  63. "handler": function (err, res) {
  64. if(err) {
  65. log.error("sql:"+sessionsql+"data:sessionId:"+sessionId);
  66. }else{
  67. log.info("getSessions success by sessionId :"+sessionId);
  68. }
  69. handler(err,res);
  70. }
  71. });
  72. }
  73. /**
  74. * 保存session到sql数据库
  75. * @param sessionId
  76. * @param name
  77. * @param type
  78. * @param createDate
  79. */
  80. static saveSessionToMysql(sessionId,name,type,createDate){
  81. let sql ="insert into "+IMTABLE.SESSIONS+" (id,name,type,create_date) VALUES (?,?,?,?) ";
  82. ImDb.execQuery({
  83. "sql": sql,
  84. "args": [sessionId,name,type,createDate],
  85. "handler": function (err, res) {
  86. if(err) {
  87. log.error("sql:"+sql+"data:sessionId:"+sessionId+",name:"+name+",type:"+type+",createDate:"+createDate);
  88. }else{
  89. log.info("save session to mysql is success by session :"+sessionId);
  90. }
  91. }
  92. });
  93. }
  94. static stickSession(sessionId,user,score){
  95. let sql ="insert into "+IMTABLE.STICKY_SESSION+" (user_id,session_id,score) VALUES (?,?,?) ";
  96. ImDb.execQuery({
  97. "sql": sql,
  98. "args": [user,sessionId,score],
  99. "handler": function (err, res) {
  100. if(err) {
  101. log.error("sql:"+sql+"data:sessionId:"+sessionId+",user:"+user+",score:"+score);
  102. }else{
  103. log.info("save stickSession to mysql is success by session :"+sessionId);
  104. }
  105. }
  106. });
  107. }
  108. static unstickSession(sessionId,user){
  109. let sql ="delete from "+IMTABLE.STICKY_SESSION+" where user_id=? and session_id=? ";
  110. ImDb.execQuery({
  111. "sql": sql,
  112. "args": [user,sessionId],
  113. "handler": function (err, res) {
  114. if(err) {
  115. log.error("sql:"+sql+"data:sessionId:"+sessionId+",user:"+user);
  116. }else{
  117. log.info("delete unstickSession to mysql is success by session :"+sessionId);
  118. }
  119. }
  120. });
  121. }
  122. }
  123. module.exports = SessionRepo;