group.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. import axios from '../http'
  2. import axiosForm from '../httpForm'
  3. import { cryptoMsg } from '@/util/util.js'
  4. import Message from '@/store/db/Message.js'
  5. export default {
  6. /**
  7. * 群聊 获取最新消息【不需要登录】
  8. * @param {Object} params
  9. * @param {Number} params.group_id 会话id
  10. * @param {Number} params.client_hash 客户端上的最新消息的hash 【可为null】
  11. */
  12. async getNewMsg (params) {
  13. let res = await axios.request({
  14. url: 'group/newMsg',
  15. method: 'get',
  16. needLogin: false,
  17. params: params
  18. })
  19. const objMessage = new Message()
  20. // 如果不同步执行,第一次初始化数据库会出现很奇怪的问题...
  21. await objMessage.saveMsg(params['group_id'], res.data.data)
  22. return res
  23. },
  24. /**
  25. * 群聊 获取历史消息【不需要登录】
  26. * @param {Object} params
  27. * @param {Number} params.group_id 会话id
  28. * @param {Number} params.client_hash 客户端上的最旧消息的hash
  29. */
  30. getHistoryMsg (params) {
  31. return axios.request({
  32. url: 'group/historyMsg',
  33. method: 'get',
  34. needLogin: false,
  35. params
  36. })
  37. },
  38. /**
  39. * 群聊信息
  40. * @param {Object} data
  41. * @param {Number} data.group_id 会话id
  42. */
  43. getGroupInfo (params) {
  44. return axios.request({
  45. url: 'group/info',
  46. method: 'get',
  47. needLogin: false,
  48. params
  49. })
  50. },
  51. /**
  52. * 群聊信息( 比getGroupInfo多了缓存 )
  53. * @param {Object} data
  54. * @param {Number} data.group_id 会话id
  55. */
  56. getGroupInfo2 (params, callback) {
  57. axios.request2({
  58. url: 'group/info',
  59. method: 'get',
  60. needLogin: false,
  61. cache: true,
  62. cacheKeys: ['user_id', 'group_id'],
  63. params,
  64. callback
  65. })
  66. },
  67. /**
  68. * 发送群聊消息
  69. * @param {Object} data
  70. * @param {Number} data.group_id 会话id
  71. * @param {Number} data.msg_type 消息类型:0:文本,1:图片,2:视频
  72. * @param {String} data.msg 内容
  73. */
  74. sendMsg (data) {
  75. data.msg = cryptoMsg(data.msg)
  76. return axios.request({
  77. url: 'group/sendMsg',
  78. method: 'post',
  79. needLogin: true,
  80. data
  81. })
  82. },
  83. /**
  84. * 创建群组
  85. * @param {Object} data
  86. */
  87. createGroup (data) {
  88. return axios.request({
  89. url: 'group/create',
  90. method: 'post',
  91. needLogin: true,
  92. data
  93. })
  94. },
  95. /**
  96. * 加入群组
  97. * @param {Object} data
  98. */
  99. joinGroup (params) {
  100. return axios.request({
  101. url: 'group/join',
  102. method: 'get',
  103. needLogin: true,
  104. params
  105. })
  106. },
  107. /**
  108. * 离开群组
  109. * @param {Object} data
  110. */
  111. leaveGroup (params) {
  112. return axios.request({
  113. url: 'group/leave',
  114. method: 'get',
  115. needLogin: true,
  116. params
  117. })
  118. },
  119. /**
  120. * 封禁用户
  121. * @param {Object} data
  122. */
  123. blockUser (params) {
  124. return axios.request({
  125. url: 'group/blockUser',
  126. method: 'get',
  127. needLogin: true,
  128. params
  129. })
  130. },
  131. /**
  132. * 解封用户
  133. * @param {Object} data
  134. */
  135. unblockUser (params) {
  136. return axios.request({
  137. url: 'group/unblockUser',
  138. method: 'get',
  139. needLogin: true,
  140. params
  141. })
  142. },
  143. /**
  144. * 更新群名称
  145. * @param {Object} data
  146. */
  147. changeName (data) {
  148. return axios.request({
  149. url: 'group/changeName',
  150. method: 'post',
  151. needLogin: true,
  152. data
  153. })
  154. },
  155. /**
  156. * 更新群公告
  157. * @param {Object} data
  158. */
  159. changeNotice (data) {
  160. return axios.request({
  161. url: 'group/changeNotice',
  162. method: 'post',
  163. needLogin: true,
  164. data
  165. })
  166. },
  167. /**
  168. * 更新群图标
  169. * @param {Object} data
  170. */
  171. changeCover (data) {
  172. return axiosForm.request({
  173. url: 'group/changeCover',
  174. method: 'post',
  175. data
  176. })
  177. },
  178. /**
  179. * 更新群标题
  180. * @param {Object} data
  181. */
  182. changeTitle (data) {
  183. return axios.request({
  184. url: 'group/changeTitle',
  185. method: 'post',
  186. needLogin: true,
  187. data
  188. })
  189. },
  190. /**
  191. * 邀请用户
  192. * @param {Object} data
  193. */
  194. invites (data) {
  195. return axios.request({
  196. url: 'group/invites',
  197. method: 'post',
  198. needLogin: true,
  199. data
  200. })
  201. },
  202. /**
  203. * 移除用户
  204. * @param {Object} data
  205. */
  206. removes (data) {
  207. return axios.request({
  208. url: 'group/removes',
  209. method: 'post',
  210. needLogin: true,
  211. data
  212. })
  213. },
  214. /**
  215. * 发送私聊信息
  216. * @param {Object} data
  217. * @param {String} data.group_id 会话id
  218. * @param {String} data.hash 会话hash
  219. */
  220. repealGroupMsg (data) {
  221. return axios.request({
  222. url: 'group/repealMsg',
  223. method: 'post',
  224. needLogin: true,
  225. data
  226. })
  227. },
  228. /**
  229. * 发送图片信息
  230. * @param {Object} formData
  231. */
  232. sendImageMsg (data) {
  233. return axios.request({
  234. url: 'group/sendImageMsg',
  235. method: 'post',
  236. needLogin: true,
  237. headers: { 'Content-Type': 'multipart/form-data' },
  238. data
  239. })
  240. },
  241. /**
  242. * 获取好友列表
  243. * @param {Object} formData
  244. */
  245. getFriends (params) {
  246. return axios.request({
  247. url: 'group/getFriends',
  248. method: 'get',
  249. needLogin: true,
  250. params
  251. })
  252. },
  253. /**
  254. * @param {Object} data
  255. * @param {String} data.group_id
  256. * @param {Stirng} data.hash
  257. */
  258. pinMsg (data) {
  259. return axios.request({
  260. url: 'group/pinMsg',
  261. method: 'post',
  262. needLogin: true,
  263. data
  264. })
  265. },
  266. /**
  267. * @param {Object} data
  268. * @param {String} data.group_id
  269. * @param {Stirng} data.hash
  270. */
  271. unpinMsg (data) {
  272. return axios.request({
  273. url: 'group/unpinMsg',
  274. method: 'post',
  275. needLogin: true,
  276. data
  277. })
  278. },
  279. /**
  280. * @param {Object} data
  281. * @param {String} data.group_id
  282. * @param {Stirng} data.user_id
  283. */
  284. addAdmin (data) {
  285. return axios.request({
  286. url: 'group/addAdmin',
  287. method: 'post',
  288. needLogin: true,
  289. data
  290. })
  291. },
  292. /**
  293. * @param {Object} data
  294. * @param {String} data.group_id
  295. * @param {Stirng} data.user_id
  296. */
  297. removeAdmin (data) {
  298. return axios.request({
  299. url: 'group/removeAdmin',
  300. method: 'post',
  301. needLogin: true,
  302. data
  303. })
  304. },
  305. /**
  306. * @param {Object} data
  307. * @param {Stirng} data.keyword
  308. */
  309. searchMember (data) {
  310. return axios.request({
  311. url: 'group/memberSearch',
  312. method: 'post',
  313. needLogin: true,
  314. data
  315. })
  316. },
  317. /**
  318. * @param {Object} data
  319. * @param {Stirng} data.group_id
  320. * @param {Stirng} data.new_creator
  321. */
  322. changeCreator (data) {
  323. return axios.request({
  324. url: 'group/changeCreator',
  325. method: 'post',
  326. needLogin: true,
  327. data
  328. })
  329. },
  330. /**
  331. * @des 热门群推荐
  332. */
  333. getHotList () {
  334. return axios.request({
  335. url: 'group/hotList ',
  336. method: 'post',
  337. needLogin: true
  338. })
  339. }
  340. }