| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- /**
- * 会员卡相关
- * @author x.b
- */
- declare(strict_types=1);
- namespace Modules\Manage\Controllers;
- use App\Model\VipCardModel as Model;
- use Hyperf\Validation\Contract\ValidatorFactoryInterface;
- use Psr\SimpleCache\CacheInterface;
- class CardController extends BaseController
- {
- /**
- * 列表
- * @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');
- }
- }
|