__handlePropertyHandler(__CLASS__); } /** * 列表 * @param ValidatorFactoryInterface $validatorFactory * @return mixed * @example param_json_data string: {"handshake":"","data":{"page":1,"page_size":99,"search":{"status":"","title":""},"order":"id","order_sort":"asc"}} */ public function list(ValidatorFactoryInterface $validatorFactory) { $inputData = $this->getJsonData(); $page = isset($inputData['page']) ? (int) $inputData['page'] : 1; $page_size = isset($inputData['page_size']) ? (int) $inputData['page_size'] : 99; $select = ['*']; $model = Model::query(); $order_key = isset($inputData['order']) ? $inputData['order'] : 'id'; $order_value = isset($inputData['order_sort']) ? $inputData['order_sort'] : 'asc'; if (!$order_key) { $order_key = 'id'; //不要信任前端,他可能会传个空字符串过来! } if (!$order_value) { $order_value = 'desc'; } $search = isset($inputData['search']) ? $inputData['search'] : array(); if ($search) { foreach ($search as $k => $v) { if (!strlen((string) $v)) { continue; } switch ($k) { case "title": $model->where($k, 'like', "{$v}%"); break; default: $model->where($k, $v); } } } $result = $model->select($select)->orderBy((string) $order_key, (string) $order_value)->paginate($page_size, ['*'], 'page', $page); return json_success($result); } /** * 会员卡详细 * @param yes id int $id 会员卡 如 1 * @return mixed * @example param_json_data string: {"handshake":"","data":{"id":1}} */ public function detail(ValidatorFactoryInterface $validatorFactory) { $inputData = $this->getJsonData(); $rules = ['id' => 'required|numeric']; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { return json_fail($validator->errors()->first()); } $id = $inputData['id']; $select = ['*']; $model = Model::query(); $result = $model->select($select)->where('id', $id)->first(); if (!$result) { return json_fail('会员卡不存在'); } return json_success($result); } /** * 新增会员卡 * @param yes id int $id 会员卡 如 100 * @return mixed * @example param_json_data string: {"handshake":"","data":{"title":"测试会员卡","remark":"会员卡备注","day":1,"price":10,"true_price":5,"sort":0,"status":0,"color":"#ff00ff"}} */ public function add(ValidatorFactoryInterface $validatorFactory) { $inputData = $this->getJsonData(); $rules = ['title' => 'required|max:60', 'day' => 'required|numeric']; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { return json_fail($validator->errors()->first()); } $title = isset($inputData['title']) ? $inputData['title'] : ''; $day = isset($inputData['day']) ? $inputData['day'] : 0; if ($day < 0) { return json_fail('天数不能小于0'); } $check = Model::query()->where('title', $title)->first(); if ($check) { return json_fail('此会员卡标题已存在,请更换一个标题'); } $data = array('title' => $title, 'remark' => isset($inputData['remark']) ? $inputData['remark'] : '', 'day' => $day, 'price' => isset($inputData['price']) ? $inputData['price'] : 0, 'true_price' => isset($inputData['true_price']) ? $inputData['true_price'] : 0, 'sort' => isset($inputData['sort']) ? $inputData['sort'] : 0, 'status' => isset($inputData['status']) ? $inputData['status'] : 0, 'color' => isset($inputData['color']) ? $inputData['color'] : '', 'jdata' => isset($inputData['jdata']) ? $inputData['jdata'] : '', 'mark' => isset($inputData['mark']) ? $inputData['mark'] : '', 'is_super' => isset($inputData['is_super']) ? intval($inputData['is_super']) : 0, 'send_type' => isset($inputData['send_type']) ? intval($inputData['send_type']) : 0, 'send_num' => isset($inputData['send_num']) ? intval($inputData['send_num']) : 0, 'send_remark' => isset($inputData['send_remark']) ? $inputData['send_remark'] : '', 'coins' => $inputData['coins'] ?? 0, 'coin_remark' => $inputData['coin_remark'] ?? '', 'intro' => $inputData['intro'] ?? ''); $data = action_data($data); $result = Model::query()->create($data); if (!$result) { return json_fail('创建失败'); } $this->clearCache(); // 创建管理员日志 $logSubject = '添加一个会员卡,名称:' . $data['title']; $logSvalue = $result->id; $logDbData = ['after_items' => [$result->toArray()], 'before_items' => []]; $this->log($logSubject, $logSvalue, $logDbData); return json_success($result, '创建成功'); } /** * 编辑会员卡 * @param yes id int $id 会员卡 如 100 * @return mixed * @example param_json_data string: {"handshake":"","data":{"id":4,"title":"测试会员卡","remark":"会员卡备注","day":2,"price":10,"true_price":5,"sort":0,"status":0,"color":"#ffffff"}} */ public function update(ValidatorFactoryInterface $validatorFactory) { $inputData = $this->getJsonData(); $rules = ['id' => 'required|numeric', 'title' => 'required|max:60', 'day' => 'required|numeric']; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { return json_fail($validator->errors()->first()); } $id = isset($inputData['id']) ? $inputData['id'] : ''; $title = isset($inputData['title']) ? $inputData['title'] : ''; $day = isset($inputData['day']) ? $inputData['day'] : 0; if ($day < 0) { return json_fail('天数不能小于0'); } $card_info = Model::query()->where('id', $id)->first(); if (!$card_info) { return json_fail('会员卡不存在'); } $check = Model::query()->where('title', $title)->first(); if ($check) { if ($check->id != $id) { return json_fail('此会员卡标题已存在,请更换一个标题'); } } $data = action_data($inputData); $data['coin_remark'] = $data['coin_remark'] ?? ''; $data['send_remark'] = $data['send_remark'] ?? ''; $data['mark'] = $data['mark'] ?? ''; $data['remark'] = $data['remark'] ?? ''; $result = Model::query()->where('id', $id)->update($data); if (!$result) { return json_fail('操作失败'); } $this->clearCache(); // 创建管理员日志 $oldItem = clone $card_info; $newItem = Model::query()->where('id', $id)->first(); $logSubject = '修改会员卡,会员卡id为' . $id; $logSvalue = $id; $logDbData = ['after_items' => [$newItem->toArray()], 'before_items' => [$oldItem->toArray()]]; $this->log($logSubject, $logSvalue, $logDbData); return json_success($result, '操作成功'); } public function clearCache() { return make(CacheInterface::class)->delete('vip_list'); } }