| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 | <?phpnamespace App\Http\Controllers\Admin\WitnessProject;use App\Http\Controllers\Controller;use App\Http\Models\Role;use App\Http\Models\Site;use App\Http\Models\WitnessProjectIntroduce;use App\Http\Models\WitnessProjectRenew;use Illuminate\Http\Request;use Illuminate\Contracts\View\Factory;use Illuminate\Http\JsonResponse;use Illuminate\Support\Facades\DB;use Illuminate\View\View;class WitnessProjectController extends Controller{    const GIFT_LIST = [        0 => '请选择礼品名称',        1 => '书籍',        2 => '高档真丝礼盒',        3 => '京东E卡',        4 => '油卡',    ];    const DURATION_RENEWALS_LIST = [        0 => '请选择续费时长',        1 => '1年',        2 => '2年',        3 => '3年',    ];    const NUMBER_RENEWALS = [        0 => '请选择续费次数',        1 => '第1次',        2 => '第2次',        3 => '第3次',        4 => '第4次',        5 => '第5次',        6 => '第6次',        7 => '第7次',    ];    const ORDER_VOLUME_LIST = [        0 => '请选择订单',        1 => '第1单',        2 => '第2单',        3 => '第3单',    ];    const ROLE_LIST = [        0 => '请选择角色',        1 => '对接人',        2 => '决策人',        3 => '老板',    ];    /**     * 见证人 续费     * @param Request $request     * @param $siteId     * @return Factory|JsonResponse|View     */    public function renew(Request $request, $siteId)    {        if (!$request->ajax()) {            return view('admin/witness_project/renew', [                'siteId' => $siteId,            ]);        }        $list = WitnessProjectRenew::query()            ->where('site_id', $siteId)            ->orderByDesc('id')            ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);        foreach ($list as $item) {            $item->number_renewals = self::NUMBER_RENEWALS[$item->number_renewals] ?? '';            $item->duration_renewals = self::DURATION_RENEWALS_LIST[$item->duration_renewals] ?? '';            $item->gift_name = self::GIFT_LIST[$item->gift_name] ?? '';            $item->position = self::ROLE_LIST[$item->position] ?? '';        }        return response()->json([            'rows' => $list->items(),            'total' => $list->total()        ]);    }    /**     * 编辑     * @param Request $request     * @param $id     * @param $siteId     * @return Factory|View     */    public function renewAdd(Request $request, $id, $siteId)    {        if (!$request->ajax()) {            $info = WitnessProjectRenew::query()                ->where('site_id', $siteId)                ->where('id', $id)                ->first();            return view('admin/witness_project/renew_add', [                'info' => $info,                'siteId' => $siteId,                'roleList' => self::ROLE_LIST,                'giftList' => self::GIFT_LIST,                'durationRenewalsList' => self::DURATION_RENEWALS_LIST,                'numberRenewalsList' => self::NUMBER_RENEWALS,            ]);        }        $request = $request->all();        if (!preg_match("/^1[3456789]\d{9}$/", $request['tel'])) {            return response()->json(['message' => '手机号输入有误'], 400);        }        if (!is_numeric($request['gift_amount'])) {            return response()->json(['message' => '礼品金额必须为数字'], 400);        }        $update = [            'customer_name' => $request['customer_name'] ?? '',            'tel' => $request['tel'] ?? '',            'position' => $request['position'] ?? '',            'number_renewals' => $request['number_renewals'] ?? 0,            'duration_renewals' => $request['duration_renewals'] ?? 0,            'gift_name' => $request['gift_name'] ?? '',            'gift_amount' => $request['gift_amount'],            'gift_time' => $request['gift_time'] ?? date('Y-m-d'),            'remark' => $request['remark'] ?? '',            'site_id' => $request['site_id'] ?? 0,        ];        if (empty($id)) {            WitnessProjectRenew::query()->insert($update);        } else {            WitnessProjectRenew::query()->where('id', $id)->update($update);        }        return response()->json(['message' => '操作成功']);    }    /**     * 见证人 介绍     * @param Request $request     * @param $siteId     * @return Factory|JsonResponse|View     */    public function introduce(Request $request, $siteId)    {        if (!$request->ajax()) {            return view('admin/witness_project/introduce', [                'siteId' => $siteId            ]);        }        $list = WitnessProjectIntroduce::query()            ->where('site_id', $siteId)            ->orderByDesc('id')            ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);        foreach ($list as $item) {            $item->order_volume = self::ORDER_VOLUME_LIST[$item->order_volume] ?? '';            $item->gift_name = self::GIFT_LIST[$item->gift_name] ?? '';            $item->position = self::ROLE_LIST[$item->position] ?? '';        }        return response()->json([            'rows' => $list->items(),            'total' => $list->total()        ]);    }    /**     * 编辑     * @param Request $request     * @param $id     * @param $siteId     * @return Factory|View     */    public function introduceAdd(Request $request, $id, $siteId)    {        if (!$request->ajax()) {            $info = WitnessProjectIntroduce::query()                ->where('site_id', $siteId)                ->where('id', $id)                ->first();            return view('admin/witness_project/introduce_add', [                'info' => $info,                'siteId' => $siteId,                'roleList' => self::ROLE_LIST,                'giftList' => self::GIFT_LIST,                'durationRenewalsList' => self::DURATION_RENEWALS_LIST,                'numberRenewalsList' => self::NUMBER_RENEWALS,                'orderVolumeList' => self::ORDER_VOLUME_LIST,            ]);        }        $request = $request->all();        if (!preg_match("/^1[3456789]\d{9}$/", $request['tel'])) {            return response()->json(['message' => '手机号输入有误'], 400);        }        if (!is_numeric($request['gift_amount'])) {            return response()->json(['message' => '礼品金额必须为数字'], 400);        }        $update = [            'customer_name' => $request['customer_name'] ?? '',            'tel' => $request['tel'] ?? '',            'position' => $request['position'] ?? 0,            'order_volume' => $request['order_volume'] ?? 0,            'gift_name' => $request['gift_name'] ?? '',            'gift_amount' => $request['gift_amount'],            'gift_time' => $request['gift_time'] ?? date('Y-m-d'),            'transaction_customer' => $request['transaction_customer'] ?? '',            'remark' => $request['remark'] ?? '',            'site_id' => $request['site_id'] ?? 0,        ];        if (empty($id)) {            WitnessProjectIntroduce::query()->insert($update);        } else {            WitnessProjectIntroduce::query()->where('id', $id)->update($update);        }        return response()->json(['message' => '操作成功']);    }    /**     * 删除     * @param Request $request     * @param $type     * @return JsonResponse     */    public function deleteRow(Request $request, $type)    {        $ids = $request->input('ids');        if ($type == 1) {            WitnessProjectRenew::query()->whereIn('id', $ids)->update(['deleted_at' => date('Y-m-d H:i:s')]);        }        if ($type == 2) {            WitnessProjectIntroduce::query()->whereIn('id', $ids)->update(['deleted_at' => date('Y-m-d H:i:s')]);        }        return response()->json(['message' => '操作成功']);    }    /**     * 汇总     * @param Request $request     * @return Factory|JsonResponse|View     */    public function renewSummary(Request $request)    {        if (!$request->ajax()) {            return view('admin/witness_project/renew_summary', [                'services' => Role::getUsers(Role::TYPE_SERVER),                'sellerUsers' => Role::getUsers(Role::TYPE_SELLER),            ]);        }        /** @var $list object */        $list = $this->build($request, WitnessProjectRenew::query())            ->orderByDesc('id')            ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);        $list = $this->combination($list);        return response()->json([            'rows' => $list->items(),            'total' => $list->total()        ]);    }    /**     * 查询     * @param $request object     * @param $result object     * @return object     */    private function build($request, $result)    {        $keyword = $request->input('keyword');        if (!empty($keyword)) {            $siteIds = Site::query()->where('cn_title', 'like', '%' . $keyword . '%')->pluck('id');            $result->whereIn('site_id', $siteIds);        }        $sellerId = $request->input('sellerId');        if (!empty($sellerId)) {            $siteIds = DB::table('user_has_sites')->where('user_id', $sellerId)->pluck('site_id') ?? [];            $result->whereIn('site_id', $siteIds);        }        $serverId = $request->input('serverId');        if (!empty($serverId)) {            $siteIds = DB::table('user_has_sites')->where('user_id', $serverId)->pluck('site_id') ?? [];            $result->whereIn('site_id', $siteIds);        }        return $result;    }    /**     * 组合字段     * @param $list object     * @return mixed     */    public function combination($list)    {        $siteList = Site::query()->pluck('cn_title', 'id');        foreach ($list->items() as $item) {            $item->position = self::ROLE_LIST[$item->position] ?? '';            if (isset($item->number_renewals)) {                $item->number_renewals = self::NUMBER_RENEWALS[$item->number_renewals] ?? '';            }            if (isset($item->duration_renewals)) {                $item->duration_renewals = self::DURATION_RENEWALS_LIST[$item->duration_renewals] ?? '';            }            if (isset($item->gift_name)) {                $item->gift_name = self::GIFT_LIST[$item->gift_name] ?? '';            }            if (isset($item->site_id)) {                $item->site = $siteList[$item->site_id] ?? '';            }            if (isset($item->order_volume)) {                $item->order_volume = self::ORDER_VOLUME_LIST[$item->order_volume] ?? '';            }        }        return $list;    }    /**     * 汇总2     * @param Request $request     * @return Factory|JsonResponse|View     */    public function introduceSummary(Request $request)    {        if (!$request->ajax()) {            return view('admin/witness_project/introduce_summary', [                'services' => Role::getUsers(Role::TYPE_SERVER),                'sellerUsers' => Role::getUsers(Role::TYPE_SELLER),            ]);        }        /** @var $list object */        $list = $this->build($request, WitnessProjectIntroduce::query())            ->orderByDesc('id')            ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);        $list = $this->combination($list);        return response()->json([            'rows' => $list->items(),            'total' => $list->total()        ]);    }}
 |