2
0

appServerApi.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import Config from "../config";
  2. import FavItem from "../wfc/model/favItem";
  3. import {stringValue} from "../wfc/util/longUtil";
  4. import AppServerError from "./appServerError";
  5. import wfc from "../wfc/client/wfc";
  6. import {getItem, setItem} from "../pages/util/storageHelper";
  7. import wfcUIKit from "../wfc/uikit/wfcUIKit";
  8. export class AppServerApi {
  9. constructor() {
  10. }
  11. requestAuthCode(mobile) {
  12. return this._post('/send_code', {mobile})
  13. }
  14. loinWithPassword(mobile, password) {
  15. return new Promise((resolve, reject) => {
  16. let responsePromise = this._post('/login_pwd', {
  17. mobile,
  18. password,
  19. platform: Config.getWFCPlatform(),
  20. clientId: wfc.getClientId()
  21. }, true)
  22. this._interceptLoginResponse(responsePromise, resolve, reject)
  23. })
  24. }
  25. loginWithAuthCode(mobile, authCode) {
  26. return new Promise((resolve, reject) => {
  27. let responsePromise = this._post('/login', {
  28. mobile,
  29. code: authCode,
  30. platform: Config.getWFCPlatform(),
  31. clientId: wfc.getClientId()
  32. }, true);
  33. this._interceptLoginResponse(responsePromise, resolve, reject)
  34. })
  35. }
  36. changePassword(oldPassword, newPassword) {
  37. return this._post('/change_pwd', {
  38. oldPassword,
  39. newPassword
  40. })
  41. }
  42. requestResetPasswordAuthCode() {
  43. return this._post('/send_reset_code')
  44. }
  45. resetPassword(resetPasswordAuthCode, newPassword) {
  46. return this._post('/reset_pwd', {
  47. resetCode: resetPasswordAuthCode,
  48. newPassword: newPassword,
  49. })
  50. }
  51. getGroupAnnouncement(groupId) {
  52. return this._post('/get_group_announcement', {groupId: groupId})
  53. }
  54. updateGroupAnnouncement(author, groupId, announcement) {
  55. return this._post('/put_group_announcement', {
  56. author,
  57. groupId,
  58. text: announcement
  59. })
  60. }
  61. favMessage(message) {
  62. let favItem = FavItem.fromMessage(message);
  63. return this._post('/fav/add', {
  64. messageUid: stringValue(favItem.messageUid),
  65. type: favItem.favType,
  66. convType: favItem.conversation.type,
  67. convTarget: favItem.conversation.target,
  68. convLine: favItem.conversation.line,
  69. origin: favItem.origin,
  70. sender: favItem.sender,
  71. title: favItem.title,
  72. url: favItem.url,
  73. thumbUrl: favItem.thumbUrl,
  74. data: favItem.data,
  75. });
  76. }
  77. getFavList(startId, count = 20) {
  78. return this._post('/fav/list', {id: startId, count: count}, false, true)
  79. }
  80. delFav(favItemId) {
  81. return this._post('/fav/del/' + favItemId, '')
  82. }
  83. _interceptLoginResponse(responsePromise, resolve, reject) {
  84. responsePromise
  85. .then(response => {
  86. if (response.data.code === 0) {
  87. let appAuthToken = response.header['authtoken'];
  88. if (!appAuthToken) {
  89. appAuthToken = response.header['authToken'];
  90. }
  91. if (appAuthToken) {
  92. setItem('authToken-app', appAuthToken);
  93. wfcUIKit.setupAppServer(Config.APP_SERVER, appAuthToken);
  94. }
  95. resolve(response.data.result);
  96. } else {
  97. reject(new AppServerError(response.data.code, response.data.message));
  98. }
  99. })
  100. .catch(err => {
  101. reject(err);
  102. })
  103. }
  104. /**
  105. *
  106. * @param path
  107. * @param data
  108. * @param rawResponse
  109. * @param rawResponseData
  110. * @return {Promise<string | Response<any>|*|T>}
  111. * @private
  112. */
  113. _post(path, data = {}, rawResponse = false, rawResponseData = false) {
  114. let response;
  115. path = Config.APP_SERVER + path;
  116. let p = new Promise((resolve, reject) => {
  117. console.log('_post', path, data);
  118. uni.request({
  119. url: path,
  120. data: data,
  121. header: {
  122. 'content-type': 'application/json', // 默认值
  123. 'authToken': getItem('authToken-app'),
  124. },
  125. method: 'POST',
  126. success: (res) => {
  127. console.log('_post result', res);
  128. if (res.statusCode === 200) {
  129. if (rawResponse) {
  130. resolve(res);
  131. return;
  132. }
  133. if (rawResponseData) {
  134. resolve(res.data);
  135. return
  136. }
  137. if (res.data.code === 0) {
  138. resolve(res.data.result);
  139. } else {
  140. throw new AppServerError(res.data.code, res.data.message)
  141. }
  142. } else {
  143. throw new Error('request error, status code: ' + res.status)
  144. }
  145. },
  146. fail: (res) => {
  147. console.log('fail', res);
  148. throw new Error('request error: ' + res)
  149. }
  150. });
  151. });
  152. return p;
  153. }
  154. login(phone, code) {
  155. let appServer = Config.APP_SERVER + '/login';
  156. let clientId = wfc.getClientId();
  157. console.log('login', wfc.getClientId(), Config.getWFCPlatform());
  158. uni.request({
  159. url: appServer,
  160. data: {
  161. mobile: phone,
  162. code: code,
  163. clientId: clientId,
  164. platform: Config.getWFCPlatform(),
  165. },
  166. header: {
  167. 'content-type': 'application/json' // 默认值
  168. },
  169. method: 'POST',
  170. success: (res) => {
  171. if (res.statusCode === 200) {
  172. let loginResult = res.data;
  173. if (loginResult.code === 0) {
  174. let userId = loginResult.result.userId;
  175. let token = loginResult.result.token;
  176. wfc.connect(userId, token);
  177. setItem('userId', userId);
  178. setItem('token', token)
  179. let authToken = res.header['authToken'];
  180. if (!authToken) {
  181. authToken = res.header['authtoken'];
  182. }
  183. console.log('setupAppserver', Config.APP_SERVER, authToken);
  184. wfcUIKit.setupAppServer(Config.APP_SERVER, authToken);
  185. this.go2ConversationList();
  186. } else {
  187. console.log('login failed', loginResult);
  188. }
  189. }
  190. }
  191. });
  192. }
  193. }
  194. const appServerApi = new AppServerApi();
  195. export default appServerApi;