| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | <?phpnamespace Modules\Jiesuan\Http\Controllers;use Catch\Base\CatchController;use Illuminate\Foundation\Validation\ValidatesRequests;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;use Modules\Common\Errors\Errors;use Modules\Common\Exceptions\CommonBusinessException;use Modules\Jiesuan\Services\CompanyUserMoneyService;use Modules\Jiesuan\Services\ConstService;use Modules\User\Http\Controllers\UserTrait;class JiesuanController extends CatchController{    use UserTrait;    use ValidatesRequests;    /**     * 结算记录     * @param Request $request     */    public function list(Request $request) {        $jiesuanDateStartAt = $request->input('jiesuan_date_start_at');        $jiesuanDateEndAt = $request->input('jiesuan_date_end_at');        $isExport = $request->input('is_export', 0);        $sql = DB::table('jiesuan_records')            ->where([                'company_uid' => $this->getCompanyUid($request),            ])->when($jiesuanDateStartAt, function ($query, $jiesuanDateStartAt) {                return $query->where('jiesuan_date', '>=', $jiesuanDateStartAt);            })            ->when($jiesuanDateEndAt, function ($query, $jiesuanDateEndAt) {                return $query->where('jiesuan_date', '<=', $jiesuanDateEndAt . ' 23:59:59');            })            ->orderBy('jiesuan_date', 'desc')            ->select('id', 'jiesuan_date', 'charge_money', 'tuikuan_money', 'share_rate', 'jiesuan_money', 'company_uid');        if($isExport) {            $results = $sql->get();        } else {            $results = $sql->paginate($request->input('limit', 15));        }        foreach ($results as $item) {            $item->share_rate .= '%';        }        return $results;    }    /**     * 账户金额详情     * @param Request $request     */    public function accountInfo(Request $request) {        $company_uid = $this->getLoginUserId();        return CompanyUserMoneyService::userMoneyInfo($company_uid);    }    /**     * 申请提现     * @param Request $request     */    public function tixian(Request $request) {        $this->validate($request, [            'bank_card_id' => 'required',            'tixian_money' => 'required|numeric|min:500'        ]);        $company_uid = $this->getLoginUserId();        $now = date('Y-m-d H:i:s');        if(DB::table('tixian_records')->where(['company_uid' => $company_uid])            ->where('created_at', '>=', date('Y-m-d'))            ->where('created_at', '<=', $now)            ->exists()) {            CommonBusinessException::throwError(Errors::TIXIAN_ONLY_ONCE_EVERY_DAY);        }        $tixianMoney = $request->input('tixian_money');        $userMoneyInfo = CompanyUserMoneyService::userMoneyInfo($company_uid);        if($tixianMoney > $userMoneyInfo->yue_money) {            CommonBusinessException::throwError(Errors::TIXIAN_YUE_BUZU);        }        $bank_card_id = $request->input('bank_card_id');        $bankCard = DB::table('bank_cards')->where(['id' => $bank_card_id, 'status' => 2])->first();        if(!$bankCard) {            CommonBusinessException::throwError(Errors::BANK_CARD_STATUS_ERROR);        }        DB::table('tixian_records')            ->insert([                'tixian_money' => $tixianMoney,                'company_uid' => $company_uid,                'bank_card_id' => $bank_card_id,                'card_no' => $bankCard->card_no,                'name_of_payee' => $bankCard->name_of_payee,                'status' => 1,                'bank_name' => $bankCard->bank_name,                'sub_bank_name' => $bankCard->sub_bank_name,                'created_at' => $now,                'updated_at' => $now,            ]);        $afterUserMoneyInfo = CompanyUserMoneyService::userMoneyInfo($company_uid);        CompanyUserMoneyService::log($company_uid, ConstService::MONEY_CHANGE_TYPE_USER_TIXIAN, $userMoneyInfo, $afterUserMoneyInfo);    }    /**     * 提现记录     * @param Request $request     */    public function listTixian(Request $request) {        $company_uid = $this->getCompanyUid($request);        $this->validate($request, [            'status' => 'nullable|integer|in:1,2,3,4,5'        ]);        $status = $request->input('status');        $isExport = $request->input('is_export');        $tixianStartAt = $request->input('tixian_start_at');        $tixianEndAt = $request->input('tixian_end_at');        $sql = DB::table('tixian_records')            ->where([                'company_uid' => $company_uid,            ])->when($status, function ($query, $status){                return $query->where('status', $status);            })->when($tixianStartAt, function ($query, $tixianStartAt) {                return $query->where('created_at', '>=', $tixianStartAt);            })->when($tixianEndAt, function ($query, $tixianEndAt) {                return $query->where('created_at', '<=', $tixianEndAt. ' 23:59:59');            })            ->orderBy('id', 'desc');        if($isExport) {            $result = $sql->get();        } else {            $result = $sql->paginate($request->input('limit', 15));        }        foreach ($result as $item) {            $item->status_str = ConstService::TIXIAN_CHECK_STATUS[$item->status] ?? '';        }        return $result;    }    private function getCompanyUid(Request $request) {        if($this->isCompanyManager()) {            return $this->getLoginUserId();        } else {            return $request->input('company_uid');        }    }}
 |