getRankFriendsData.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. module.exports = async (ctx, next) => {
  2. if (ctx.state.$wxInfo.loginState === 1) {
  3. const query = ctx.query
  4. const { mysql } = require('../qcloud')
  5. let res0 = await mysql('friendsnetwork').where({ fromOpenId: ctx.query.openId }).select('cSessionInfo.user_info', 'cSessionInfo.score').leftJoin('cSessionInfo', 'friendsnetwork.openId', 'cSessionInfo.open_id')
  6. let res1 = await mysql('friendsnetwork').where({ openId: ctx.query.openId }).select('cSessionInfo.user_info', 'cSessionInfo.score').leftJoin('cSessionInfo', 'friendsnetwork.fromOpenId', 'cSessionInfo.open_id') //注意:friendsnetwork.fromOpenId为undefined的情况
  7. let res_me = await mysql('cSessionInfo').where({ open_id: ctx.query.openId }).select('user_info','score')
  8. let res2 = res0.concat(res1.concat(res_me))
  9. let arr = []
  10. res2.forEach(function (val, i) {
  11. let value = JSON.parse(val.user_info)
  12. value.score = val.score
  13. arr[i] = value
  14. })
  15. function hashRemoveRepeat(arr) { //去重函数
  16. var hash = {},
  17. len = arr.length,
  18. result = [];
  19. for (var i = 0; i < len; i++) {
  20. if (!hash[arr[i].openId]) {
  21. hash[arr[i].openId] = true;
  22. result.push(arr[i]);
  23. }
  24. }
  25. return result;
  26. }
  27. arr = hashRemoveRepeat(arr)
  28. arr.sort(function (a, b) {
  29. return b.score - a.score
  30. })
  31. ctx.state.data = arr;
  32. } else {
  33. ctx.state.code = -1
  34. }
  35. }