AudienceController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. * @param Request $request
  13. */
  14. public function detail(Request $request) {
  15. $this->validate($request, [
  16. 'uid' => 'required'
  17. ]);
  18. $uid = $request->input('uid');
  19. $userInfo = DB::table(getMiniProgramTableName(1, 'users'))->where('id', $uid)->first();
  20. if (!$userInfo) {
  21. return null;
  22. }
  23. $ranseRecordTable = 'ranse_record_'.($uid % 8);
  24. $ranseIds = DB::table('promotions')
  25. ->where('uid', $this->getLoginUserId())
  26. ->select('id')->pluck('id');
  27. if($ranseIds->isEmpty()) {
  28. return null;
  29. }
  30. $ranseRecord = DB::table($ranseRecordTable)->whereIn('ranse_id', $ranseIds)
  31. ->orderBy('created_at', 'desc')
  32. ->first();
  33. if(!$ranseRecord) {
  34. return null;
  35. }
  36. $totalChargeCount = DB::table('orders')
  37. ->where('uid', $uid)
  38. ->whereIn('promotion_id', $ranseIds)
  39. ->where('status', '<>' ,'UNPAID')
  40. ->count();
  41. $result = [
  42. 'uid' => $userInfo->id,
  43. 'ranse_start_at' => $ranseRecord->created_at ?: "",
  44. 'charge_coin' => $userInfo->charge_coin,
  45. 'reward_coin' => $userInfo->reward_coin,
  46. 'total_charge_count' => $totalChargeCount,
  47. 'miniprogram_name' => DB::table('miniprogram')
  48. ->where('id', $userInfo->miniprogram_id)->value('name'),
  49. ];
  50. return array_merge($result, WechatMinprogramUserService::getLevelText($uid));
  51. }
  52. }