| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | <?phpnamespace Modules\Audience\Http\Controllers;use Catch\Base\CatchController;use Illuminate\Foundation\Validation\ValidatesRequests;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;use Modules\Channel\Services\WechatMinprogram\WechatMinprogramUserService;class AudienceController extends  CatchController{    use ValidatesRequests;    /**     * @param Request $request     */    public function detail(Request $request) {        $this->validate($request, [            'uid' => 'required'        ]);        $uid = $request->input('uid');        $userInfo = DB::table(getMiniProgramTableName(1, 'users'))->where('id', $uid)->first();        if (!$userInfo) {            return null;        }        $ranseRecordTable = 'ranse_record_'.($uid % 8);        $ranseIds = DB::table('promotions')            ->where('uid', $this->getLoginUserId())            ->select('id')->pluck('id');        if($ranseIds->isEmpty()) {            return null;        }        $ranseRecord = DB::table($ranseRecordTable)->whereIn('ranse_id', $ranseIds)            ->orderBy('created_at', 'desc')            ->first();        if(!$ranseRecord) {            return null;        }        $totalChargeCount = DB::table('orders')            ->where('uid', $uid)            ->whereIn('promotion_id', $ranseIds)            ->where('status', '<>' ,'UNPAID')            ->count();        $result = [            'uid' => $userInfo->id,            'ranse_start_at' => $ranseRecord->created_at ?: "",            'charge_coin' => $userInfo->charge_coin,            'reward_coin' => $userInfo->reward_coin,            'total_charge_count' => $totalChargeCount,            'miniprogram_name' => DB::table('miniprogram')                ->where('id', $userInfo->miniprogram_id)->value('name'),        ];        return array_merge($result, WechatMinprogramUserService::getLevelText($uid));    }}
 |