AudienceController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace Modules\Audience\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Illuminate\Foundation\Validation\ValidatesRequests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Modules\Channel\Services\WechatMinprogram\WechatMinprogramUserService;
  8. class AudienceController extends CatchController
  9. {
  10. use ValidatesRequests;
  11. /**
  12. * 用户详情
  13. * @param Request $request
  14. */
  15. public function detail(Request $request) {
  16. $this->validate($request, [
  17. 'uid' => 'required'
  18. ]);
  19. $uid = $request->input('uid');
  20. $userInfo = DB::table(getMiniProgramTableName(1, 'users'))->where('id', $uid)->first();
  21. if (!$userInfo) {
  22. return null;
  23. }
  24. $ranseRecordTable = 'ranse_record_'.($uid % 8);
  25. $ranseIds = DB::table('promotions')
  26. ->where('uid', $this->getLoginUserId())
  27. ->select('id')->pluck('id');
  28. if($ranseIds->isEmpty()) {
  29. return null;
  30. }
  31. $ranseRecord = DB::table($ranseRecordTable)->whereIn('ranse_id', $ranseIds)
  32. ->orderBy('created_at', 'desc')
  33. ->first();
  34. if(!$ranseRecord) {
  35. return null;
  36. }
  37. $totalChargeCount = DB::table('orders')
  38. ->where('uid', $uid)
  39. ->whereIn('promotion_id', $ranseIds)
  40. ->where('status', '<>' ,'UNPAID')
  41. ->count();
  42. $result = [
  43. 'uid' => $userInfo->id,
  44. 'ranse_start_at' => $ranseRecord->created_at ?: "",
  45. 'charge_coin' => $userInfo->charge_coin,
  46. 'reward_coin' => $userInfo->reward_coin,
  47. 'total_charge_count' => $totalChargeCount,
  48. 'miniprogram_name' => DB::table('miniprogram')
  49. ->where('id', $userInfo->miniprogram_id)->value('name'),
  50. 'user_created_at' => $userInfo->created_at,
  51. ];
  52. return array_merge($result, WechatMinprogramUserService::getLevelText($uid));
  53. }
  54. }