miniProgram.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. "use strict";
  2. const common_vendor = require("../../../../common/vendor.js");
  3. const sheep_api_member_auth = require("../../../api/member/auth.js");
  4. const sheep_api_member_social = require("../../../api/member/social.js");
  5. const sheep_api_member_user = require("../../../api/member/user.js");
  6. const socialType = 34;
  7. let subscribeEventList = [];
  8. function load() {
  9. checkUpdate();
  10. getSubscribeTemplate();
  11. }
  12. const login = async () => {
  13. return new Promise(async (resolve, reject) => {
  14. const codeResult = await common_vendor.index.login();
  15. if (codeResult.errMsg !== "login:ok") {
  16. return resolve(false);
  17. }
  18. const loginResult = await sheep_api_member_auth.AuthUtil.socialLogin(socialType, codeResult.code, "default");
  19. if (loginResult.code === 0) {
  20. setOpenid(loginResult.data.openid);
  21. return resolve(true);
  22. } else {
  23. return resolve(false);
  24. }
  25. });
  26. };
  27. const mobileLogin = async (e) => {
  28. return new Promise(async (resolve, reject) => {
  29. if (e.errMsg !== "getPhoneNumber:ok") {
  30. return resolve(false);
  31. }
  32. const codeResult = await common_vendor.index.login();
  33. if (codeResult.errMsg !== "login:ok") {
  34. return resolve(false);
  35. }
  36. const loginResult = await sheep_api_member_auth.AuthUtil.weixinMiniAppLogin(e.code, codeResult.code, "default");
  37. if (loginResult.code === 0) {
  38. setOpenid(loginResult.data.openid);
  39. return resolve(true);
  40. } else {
  41. return resolve(false);
  42. }
  43. });
  44. };
  45. const bind = () => {
  46. return new Promise(async (resolve, reject) => {
  47. const codeResult = await common_vendor.index.login();
  48. if (codeResult.errMsg !== "login:ok") {
  49. return resolve(false);
  50. }
  51. const bindResult = await sheep_api_member_social.SocialApi.socialBind(socialType, codeResult.code, "default");
  52. if (bindResult.code === 0) {
  53. setOpenid(bindResult.data);
  54. return resolve(true);
  55. } else {
  56. return resolve(false);
  57. }
  58. });
  59. };
  60. const unbind = async (openid) => {
  61. const { code } = await sheep_api_member_social.SocialApi.socialUnbind(socialType, openid);
  62. return code === 0;
  63. };
  64. const bindUserPhoneNumber = (e) => {
  65. return new Promise(async (resolve, reject) => {
  66. const { code } = await sheep_api_member_user.UserApi.updateUserMobileByWeixin(e.code);
  67. if (code === 0) {
  68. resolve(true);
  69. }
  70. resolve(false);
  71. });
  72. };
  73. function setOpenid(openid) {
  74. common_vendor.index.setStorageSync("openid", openid);
  75. }
  76. async function getOpenid(force = false) {
  77. let openid = common_vendor.index.getStorageSync("openid");
  78. if (!openid && force) {
  79. const info = await getInfo();
  80. if (info && info.openid) {
  81. openid = info.openid;
  82. setOpenid(openid);
  83. }
  84. }
  85. return openid;
  86. }
  87. async function getInfo() {
  88. const { code, data } = await sheep_api_member_social.SocialApi.getSocialUser(socialType);
  89. if (code !== 0) {
  90. return void 0;
  91. }
  92. return data;
  93. }
  94. const checkUpdate = async (silence = true) => {
  95. if (common_vendor.index.canIUse("getUpdateManager")) {
  96. const updateManager = common_vendor.index.getUpdateManager();
  97. updateManager.onCheckForUpdate(function(res) {
  98. if (res.hasUpdate) {
  99. updateManager.onUpdateReady(function() {
  100. common_vendor.index.showModal({
  101. title: "更新提示",
  102. content: "新版本已经准备好,是否重启应用?",
  103. success: function(res2) {
  104. if (res2.confirm) {
  105. updateManager.applyUpdate();
  106. }
  107. }
  108. });
  109. });
  110. updateManager.onUpdateFailed(function() {
  111. });
  112. } else {
  113. if (!silence) {
  114. common_vendor.index.showModal({
  115. title: "当前为最新版本",
  116. showCancel: false
  117. });
  118. }
  119. }
  120. });
  121. }
  122. };
  123. async function getSubscribeTemplate() {
  124. const { error, data } = await third.wechat.subscribeTemplate();
  125. if (error === 0) {
  126. subscribeEventList = data;
  127. }
  128. }
  129. function subscribeMessage(event) {
  130. let tmplIds = [];
  131. if (typeof event === "string") {
  132. tmplIds.push(subscribeEventList[event]);
  133. }
  134. if (typeof event === "object") {
  135. event.forEach((item) => {
  136. if (typeof subscribeEventList[item] !== "undefined")
  137. tmplIds.push(subscribeEventList[item]);
  138. });
  139. }
  140. if (tmplIds.length === 0)
  141. return;
  142. common_vendor.index.requestSubscribeMessage({
  143. tmplIds,
  144. fail: (err) => {
  145. console.log(err);
  146. }
  147. });
  148. }
  149. const service = {
  150. load,
  151. login,
  152. bind,
  153. unbind,
  154. bindUserPhoneNumber,
  155. mobileLogin,
  156. getInfo,
  157. getOpenid,
  158. subscribeMessage
  159. };
  160. exports.service = service;