util.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. const formatTime = date => {
  2. const year = date.getFullYear()
  3. const month = date.getMonth() + 1
  4. const day = date.getDate()
  5. const hour = date.getHours()
  6. const minute = date.getMinutes()
  7. const second = date.getSeconds()
  8. return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  9. }
  10. const formatNumber = n => {
  11. n = n.toString()
  12. return n[1] ? n : '0' + n
  13. }
  14. /**
  15. * 获取用户信息
  16. */
  17. const getUserInfo = () => {
  18. let current = wx.Bmob.User.current();
  19. let uid = current.objectId;
  20. return new Promise((resolve, reject) => {
  21. const query = wx.Bmob.Query('_User');
  22. query.get(uid).then(res => {
  23. resolve({
  24. 'result': res
  25. });
  26. })
  27. })
  28. }
  29. /**
  30. * 保存用户头像昵称
  31. * avatarUrl:头像
  32. * nickName:昵称
  33. */
  34. const changeUserInfo = (avatarUrl, nickName) => {
  35. let current = wx.Bmob.User.current();
  36. let uid = current.objectId;
  37. return new Promise((resolve, reject) => {
  38. const query = wx.Bmob.Query('_User');
  39. query.get(uid).then(res => {
  40. res.set('avatarUrl', avatarUrl);
  41. res.set('nickName', nickName);
  42. res.save();
  43. resolve({
  44. 'result': 'success'
  45. });
  46. })
  47. })
  48. }
  49. /**
  50. * 获取套题列表
  51. */
  52. const getQuestionMenu = () => {
  53. return new Promise((resolve, reject) => {
  54. const query = wx.Bmob.Query('questionMenu');
  55. query.order('createdAt');
  56. query.find().then(res => {
  57. resolve({
  58. 'result': res
  59. });
  60. })
  61. })
  62. }
  63. /**
  64. * 获取套题
  65. * id:套题id
  66. */
  67. const getMenuById =(id)=>{
  68. return new Promise((resolve, reject) => {
  69. const query = wx.Bmob.Query('questionMenu')
  70. query.get(id).then(res=>{
  71. resolve({
  72. 'result': res
  73. });
  74. })
  75. })
  76. }
  77. /**
  78. * 获取题目
  79. * menuId:套题id
  80. * questionNum:题目数量
  81. */
  82. const getQuestions = (menuId,questionNum) => {
  83. return new Promise((resolve, reject) => {
  84. const query = wx.Bmob.Query('questions');
  85. query.equalTo('menu','==',menuId);
  86. query.limit(parseInt(questionNum))
  87. query.find().then(res=>{
  88. resolve({
  89. 'result':res
  90. })
  91. })
  92. })
  93. }
  94. /**
  95. * 获取设置
  96. */
  97. const getSetting = ()=>{
  98. return new Promise((resolve,reject)=>{
  99. const query = wx.Bmob.Query('setting')
  100. query.find().then(res=>{
  101. resolve({
  102. 'result':res
  103. })
  104. })
  105. })
  106. }
  107. /**
  108. * 添加测试记录
  109. * params:参数
  110. */
  111. const addHistory = (params)=>{
  112. return new Promise((resolve, reject) => {
  113. const query = wx.Bmob.Query('history')
  114. let current = wx.Bmob.User.current();
  115. let uid = current.objectId;
  116. query.equalTo('menu', '==',params.menu)
  117. query.equalTo('user','==',uid)
  118. query.find().then(res=>{
  119. if(res.length>0){
  120. if(params.saveStatus == 1){
  121. query.get(res[0].objectId).then(res1 => {
  122. res1.set('score', params.score)
  123. res1.set('questionList', params.result)
  124. res1.set('saveStatus', params.saveStatus)
  125. res1.save().then(res2 => {
  126. console.log(res2)
  127. resolve({ 'result': res[0].objectId })
  128. })
  129. })
  130. }else{
  131. query.get(res[0].objectId).then(res1 => {
  132. res1.set('score', params.score)
  133. res1.set('questionList', params.result)
  134. res1.set('saveStatus', params.saveStatus)
  135. res1.set('second',params.second)
  136. res1.set('minute',params.minute)
  137. res1.save().then(res2 => {
  138. console.log(res2)
  139. resolve({ 'result': res[0].objectId })
  140. })
  141. })
  142. }
  143. }else{
  144. const pointer = wx.Bmob.Pointer('_User')
  145. const poiID = pointer.set(uid)
  146. if(params.saveStatus == 1){
  147. query.set('user', poiID)
  148. query.set('score', params.score)
  149. query.set('menu', params.menu)
  150. query.set('questionMenu', params.questionMenu)
  151. query.set('questionList', params.result)
  152. query.set('saveStatus', params.saveStatus)
  153. query.save().then(res2 => {
  154. console.log(res2)
  155. resolve({ 'result': res2.objectId })
  156. })
  157. }else{
  158. query.set('user', poiID)
  159. query.set('score', params.score)
  160. query.set('menu', params.menu)
  161. query.set('questionMenu', params.questionMenu)
  162. query.set('questionList', params.result)
  163. query.set('saveStatus', params.saveStatus)
  164. query.set('second', params.second)
  165. query.set('minute', params.minute)
  166. query.save().then(res2 => {
  167. console.log(res2)
  168. resolve({ 'result': res2.objectId })
  169. })
  170. }
  171. }
  172. })
  173. })
  174. }
  175. /**
  176. * 查询是否有保存的答题记录
  177. * menu:套题id
  178. */
  179. const checkSaveHistory = (menu)=>{
  180. return new Promise((resolve, reject) => {
  181. const query = wx.Bmob.Query('history')
  182. let current = wx.Bmob.User.current();
  183. let uid = current.objectId;
  184. query.equalTo('menu','==',menu)
  185. query.equalTo('user','==',uid)
  186. query.equalTo('saveStatus','==',0)
  187. query.find().then(res=>{
  188. if (res.length > 0) {
  189. resolve({ 'result': true , 'data':res[0]})
  190. }else{
  191. resolve({ 'result': false })
  192. }
  193. })
  194. })
  195. }
  196. /**
  197. * 查询测试历史
  198. * id:objectId
  199. */
  200. const getHistory = (id)=>{
  201. return new Promise((resolve, reject) => {
  202. const query = wx.Bmob.Query('history')
  203. query.get(id).then(res=>{
  204. resolve({ 'result': res })
  205. })
  206. })
  207. }
  208. /**
  209. * 查询击败人数
  210. * menu:所属套题
  211. * score:分数
  212. */
  213. const getBeatNum =(menu,score)=>{
  214. return new Promise((resolve,reject)=>{
  215. const query = wx.Bmob.Query('history')
  216. query.equalTo('menu','==',menu)
  217. query.equalTo('score', '<', score)
  218. query.count().then(res => {
  219. resolve({ 'result': res })
  220. });
  221. })
  222. }
  223. /**
  224. * 查询平均分
  225. * menu:所属套题
  226. */
  227. const getAverage =(menu)=>{
  228. return new Promise((resolve,reject)=>{
  229. const query = wx.Bmob.Query('statistics');
  230. query.equalTo('menu','==',menu)
  231. query.find().then(res=>{
  232. resolve({'result':res})
  233. })
  234. })
  235. }
  236. /**
  237. * 添加错题集
  238. * menu:套题id
  239. * questionList:问题集合
  240. * questionMenu:套题名
  241. */
  242. const addError = (menu, questionList, questionMenu)=>{
  243. return new Promise((resolve,reject)=>{
  244. const query = wx.Bmob.Query('error')
  245. let current = wx.Bmob.User.current();
  246. let uid = current.objectId;
  247. query.equalTo('menu', '==', menu)
  248. query.equalTo('user', '==', uid)
  249. query.find().then(res => {
  250. if(res.length>0){
  251. query.get(res[0].objectId).then(res1 => {
  252. res1.set('questionList', questionList)
  253. res1.save().then(res2 => {
  254. console.log(res2)
  255. resolve({ 'result': res[0].objectId })
  256. })
  257. })
  258. }else{
  259. const pointer = wx.Bmob.Pointer('_User')
  260. const poiID = pointer.set(uid)
  261. query.set('user', poiID)
  262. query.set('menu', menu)
  263. query.set('questionMenu', questionMenu)
  264. query.set('questionList', questionList)
  265. query.save().then(res2 => {
  266. console.log(res2)
  267. resolve({ 'result': res2.objectId })
  268. })
  269. }
  270. })
  271. })
  272. }
  273. /**
  274. * 查询错题集
  275. * menu:套题id
  276. */
  277. const getError = (menu)=>{
  278. return new Promise((resolve,reject)=>{
  279. let current = wx.Bmob.User.current();
  280. let uid = current.objectId;
  281. const query = wx.Bmob.Query('error')
  282. query.equalTo('user','==',uid)
  283. query.equalTo('menu','==',menu)
  284. query.find().then(res=>{
  285. if(res.length>0){
  286. if(res[0].questionList.length > 0){
  287. resolve({
  288. 'result': true,
  289. 'error': res
  290. })
  291. }else{
  292. resolve({
  293. 'result': false
  294. })
  295. }
  296. }else{
  297. resolve({
  298. 'result': false
  299. })
  300. }
  301. })
  302. })
  303. }
  304. /**
  305. * 移除错题
  306. * id:id
  307. * questionList:错题集合
  308. */
  309. const deleteError = (id, questionList)=>{
  310. return new Promise((resolve, reject) => {
  311. const query = wx.Bmob.Query('error')
  312. query.get(id).then(res=>{
  313. res.set('questionList', questionList)
  314. res.save()
  315. resolve({ 'result': true })
  316. })
  317. })
  318. }
  319. /**
  320. * 获取统计分数
  321. * menu:套题id
  322. */
  323. const getStatistics = (menu)=>{
  324. return new Promise((resolve,reject)=>{
  325. const query = wx.Bmob.Query('statistics')
  326. query.equalTo('menu','==',menu)
  327. query.find().then(res=>{
  328. resolve({ 'result': res[0] })
  329. })
  330. })
  331. }
  332. /**
  333. * 统计分数
  334. * id:统计记录id
  335. * addScore:加分数
  336. */
  337. const statistics = (id,addScore)=>{
  338. return new Promise((resolve, reject) => {
  339. const query = wx.Bmob.Query('statistics')
  340. query.get(id).then(res=>{
  341. res.set('peopleNum',(res.peopleNum+1))
  342. res.set('allScore',(res.allScore+addScore))
  343. res.save()
  344. })
  345. })
  346. }
  347. /**
  348. * 查询排序
  349. * menu:套题id
  350. */
  351. const getRank = (menu)=>{
  352. return new Promise((resolve,reject)=>{
  353. const query = wx.Bmob.Query('history')
  354. query.select("user,score");
  355. query.equalTo('menu','==',menu)
  356. query.equalTo('saveStatus','==',1)
  357. query.include('user')
  358. query.order('-score')
  359. query.find().then(res=>{
  360. if (res.length > 0) {
  361. resolve({
  362. 'result': true,
  363. 'data': res
  364. })
  365. } else {
  366. resolve({ 'result': false })
  367. }
  368. })
  369. })
  370. }
  371. /**
  372. * 查询测试记录
  373. */
  374. const getHistoryList =()=>{
  375. return new Promise((resolve, reject) => {
  376. let current = wx.Bmob.User.current();
  377. let uid = current.objectId;
  378. const query = wx.Bmob.Query('history')
  379. query.equalTo('user','==',uid)
  380. query.equalTo('saveStatus', '==', 1)
  381. query.order('-createdAt')
  382. query.find().then(res=>{
  383. console.log(res.length)
  384. if (res.length > 0) {
  385. resolve({
  386. 'result': true,
  387. 'data': res
  388. })
  389. } else {
  390. resolve({ 'result': false })
  391. }
  392. })
  393. })
  394. }
  395. const addFeedBack = (phone, content) => {
  396. let current = wx.Bmob.User.current();
  397. let uid = current.objectId;
  398. return new Promise((resolve, reject) => {
  399. const query = wx.Bmob.Query('feedback');
  400. const pointer = wx.Bmob.Pointer('_User')
  401. const poiID = pointer.set(uid)
  402. query.set('uid', poiID);
  403. query.set('phone', phone);
  404. query.set('content', content);
  405. query.save().then(res => {
  406. resolve({ 'result': 'success' });
  407. }).catch(err => {
  408. resolve({ 'result': 'fail' });
  409. })
  410. })
  411. }
  412. module.exports = {
  413. formatTime: formatTime,
  414. getUserInfo: getUserInfo,
  415. changeUserInfo: changeUserInfo,
  416. getQuestionMenu: getQuestionMenu,
  417. getMenuById: getMenuById,
  418. getQuestions: getQuestions,
  419. getSetting: getSetting,
  420. addHistory: addHistory,
  421. checkSaveHistory: checkSaveHistory,
  422. getHistory: getHistory,
  423. getBeatNum: getBeatNum,
  424. getAverage: getAverage,
  425. addError: addError,
  426. getError: getError,
  427. deleteError: deleteError,
  428. getStatistics: getStatistics,
  429. statistics: statistics,
  430. getRank: getRank,
  431. getHistoryList: getHistoryList,
  432. addFeedBack: addFeedBack,
  433. }