Modules_Manage_Controllers_CardController.proxy.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. /**
  3. * 会员卡相关
  4. * @author x.b
  5. */
  6. declare (strict_types=1);
  7. namespace Modules\Manage\Controllers;
  8. use App\Model\VipCardModel as Model;
  9. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  10. use Psr\SimpleCache\CacheInterface;
  11. class CardController extends BaseController
  12. {
  13. use \Hyperf\Di\Aop\ProxyTrait;
  14. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  15. function __construct()
  16. {
  17. if (method_exists(parent::class, '__construct')) {
  18. parent::__construct(...func_get_args());
  19. }
  20. $this->__handlePropertyHandler(__CLASS__);
  21. }
  22. /**
  23. * 列表
  24. * @param ValidatorFactoryInterface $validatorFactory
  25. * @return mixed
  26. * @example param_json_data string: {"handshake":"","data":{"page":1,"page_size":99,"search":{"status":"","title":""},"order":"id","order_sort":"asc"}}
  27. */
  28. public function list(ValidatorFactoryInterface $validatorFactory)
  29. {
  30. $inputData = $this->getJsonData();
  31. $page = isset($inputData['page']) ? (int) $inputData['page'] : 1;
  32. $page_size = isset($inputData['page_size']) ? (int) $inputData['page_size'] : 99;
  33. $select = ['*'];
  34. $model = Model::query();
  35. $order_key = isset($inputData['order']) ? $inputData['order'] : 'id';
  36. $order_value = isset($inputData['order_sort']) ? $inputData['order_sort'] : 'asc';
  37. if (!$order_key) {
  38. $order_key = 'id';
  39. //不要信任前端,他可能会传个空字符串过来!
  40. }
  41. if (!$order_value) {
  42. $order_value = 'desc';
  43. }
  44. $search = isset($inputData['search']) ? $inputData['search'] : array();
  45. if ($search) {
  46. foreach ($search as $k => $v) {
  47. if (!strlen((string) $v)) {
  48. continue;
  49. }
  50. switch ($k) {
  51. case "title":
  52. $model->where($k, 'like', "{$v}%");
  53. break;
  54. default:
  55. $model->where($k, $v);
  56. }
  57. }
  58. }
  59. $result = $model->select($select)->orderBy((string) $order_key, (string) $order_value)->paginate($page_size, ['*'], 'page', $page);
  60. return json_success($result);
  61. }
  62. /**
  63. * 会员卡详细
  64. * @param yes id int $id 会员卡 如 1
  65. * @return mixed
  66. * @example param_json_data string: {"handshake":"","data":{"id":1}}
  67. */
  68. public function detail(ValidatorFactoryInterface $validatorFactory)
  69. {
  70. $inputData = $this->getJsonData();
  71. $rules = ['id' => 'required|numeric'];
  72. $validator = $validatorFactory->make($inputData, $rules);
  73. if ($validator->fails()) {
  74. return json_fail($validator->errors()->first());
  75. }
  76. $id = $inputData['id'];
  77. $select = ['*'];
  78. $model = Model::query();
  79. $result = $model->select($select)->where('id', $id)->first();
  80. if (!$result) {
  81. return json_fail('会员卡不存在');
  82. }
  83. return json_success($result);
  84. }
  85. /**
  86. * 新增会员卡
  87. * @param yes id int $id 会员卡 如 100
  88. * @return mixed
  89. * @example param_json_data string: {"handshake":"","data":{"title":"测试会员卡","remark":"会员卡备注","day":1,"price":10,"true_price":5,"sort":0,"status":0,"color":"#ff00ff"}}
  90. */
  91. public function add(ValidatorFactoryInterface $validatorFactory)
  92. {
  93. $inputData = $this->getJsonData();
  94. $rules = ['title' => 'required|max:60', 'day' => 'required|numeric'];
  95. $validator = $validatorFactory->make($inputData, $rules);
  96. if ($validator->fails()) {
  97. return json_fail($validator->errors()->first());
  98. }
  99. $title = isset($inputData['title']) ? $inputData['title'] : '';
  100. $day = isset($inputData['day']) ? $inputData['day'] : 0;
  101. if ($day < 0) {
  102. return json_fail('天数不能小于0');
  103. }
  104. $check = Model::query()->where('title', $title)->first();
  105. if ($check) {
  106. return json_fail('此会员卡标题已存在,请更换一个标题');
  107. }
  108. $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'] ?? '');
  109. $data = action_data($data);
  110. $result = Model::query()->create($data);
  111. if (!$result) {
  112. return json_fail('创建失败');
  113. }
  114. $this->clearCache();
  115. // 创建管理员日志
  116. $logSubject = '添加一个会员卡,名称:' . $data['title'];
  117. $logSvalue = $result->id;
  118. $logDbData = ['after_items' => [$result->toArray()], 'before_items' => []];
  119. $this->log($logSubject, $logSvalue, $logDbData);
  120. return json_success($result, '创建成功');
  121. }
  122. /**
  123. * 编辑会员卡
  124. * @param yes id int $id 会员卡 如 100
  125. * @return mixed
  126. * @example param_json_data string: {"handshake":"","data":{"id":4,"title":"测试会员卡","remark":"会员卡备注","day":2,"price":10,"true_price":5,"sort":0,"status":0,"color":"#ffffff"}}
  127. */
  128. public function update(ValidatorFactoryInterface $validatorFactory)
  129. {
  130. $inputData = $this->getJsonData();
  131. $rules = ['id' => 'required|numeric', 'title' => 'required|max:60', 'day' => 'required|numeric'];
  132. $validator = $validatorFactory->make($inputData, $rules);
  133. if ($validator->fails()) {
  134. return json_fail($validator->errors()->first());
  135. }
  136. $id = isset($inputData['id']) ? $inputData['id'] : '';
  137. $title = isset($inputData['title']) ? $inputData['title'] : '';
  138. $day = isset($inputData['day']) ? $inputData['day'] : 0;
  139. if ($day < 0) {
  140. return json_fail('天数不能小于0');
  141. }
  142. $card_info = Model::query()->where('id', $id)->first();
  143. if (!$card_info) {
  144. return json_fail('会员卡不存在');
  145. }
  146. $check = Model::query()->where('title', $title)->first();
  147. if ($check) {
  148. if ($check->id != $id) {
  149. return json_fail('此会员卡标题已存在,请更换一个标题');
  150. }
  151. }
  152. $data = action_data($inputData);
  153. $data['coin_remark'] = $data['coin_remark'] ?? '';
  154. $data['send_remark'] = $data['send_remark'] ?? '';
  155. $data['mark'] = $data['mark'] ?? '';
  156. $data['remark'] = $data['remark'] ?? '';
  157. $result = Model::query()->where('id', $id)->update($data);
  158. if (!$result) {
  159. return json_fail('操作失败');
  160. }
  161. $this->clearCache();
  162. // 创建管理员日志
  163. $oldItem = clone $card_info;
  164. $newItem = Model::query()->where('id', $id)->first();
  165. $logSubject = '修改会员卡,会员卡id为' . $id;
  166. $logSvalue = $id;
  167. $logDbData = ['after_items' => [$newItem->toArray()], 'before_items' => [$oldItem->toArray()]];
  168. $this->log($logSubject, $logSvalue, $logDbData);
  169. return json_success($result, '操作成功');
  170. }
  171. public function clearCache()
  172. {
  173. return make(CacheInterface::class)->delete('vip_list');
  174. }
  175. }