WellnessRecordController.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <?php
  2. namespace app\admin\controller\member;
  3. use app\admin\validate\life\CinemaIlkValidate;
  4. use app\admin\validate\member\WellnessRecordValidate;
  5. use app\controller\Curd;
  6. use app\model\CinemaIlk as CinemaIlkModel;
  7. use app\model\SysUpload;
  8. use app\model\WellnessRecord;
  9. use support\Request;
  10. use support\Response;
  11. class WellnessRecordController extends Curd
  12. {
  13. public function __construct()
  14. {
  15. $this->model = new WellnessRecord();
  16. $this->validate = true;
  17. $this->validateClass = new WellnessRecordValidate();
  18. }
  19. /**
  20. * @Desc 我的档案
  21. * @Author Gorden
  22. * @Date 2024/4/1 10:54
  23. *
  24. * @param $memberId
  25. * @return mixed
  26. */
  27. public function my($memberId)
  28. {
  29. $query = $this->model->where('wellness_record_category', '档案')
  30. ->where('join_wellness_record_member_id', $memberId);
  31. $paginator = $query->paginate(20);
  32. $total = $paginator->total();
  33. $items = $paginator->items();
  34. $itemsNew = [];
  35. foreach ($items as $item) {
  36. $itemNew = [
  37. 'wellness_record_id' => $item->wellness_record_id,
  38. 'join_wellness_record_member_id' => $item->join_wellness_record_member_id,
  39. 'wellness_record_status' => $item->wellness_record_status,
  40. 'wellness_record_name' => $item->wellness_record_name,
  41. 'wellness_record_datetime' => $item->wellness_record_datetime,
  42. 'wellness_record_json' => $item->wellness_record_json,
  43. 'wellness_record_content' => $item->wellness_record_content,
  44. 'wellness_record_remark' => $item->wellness_record_remark,
  45. 'wellness_record_extend_json' => $item->wellness_record_extend_json,
  46. 'wellness_record_addtimes' => $item->wellness_record_addtimes,
  47. ];
  48. if (!empty($item->wellness_record_file_json)) {
  49. $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
  50. $upload = SysUpload::whereIn('upload_file_path', $item->wellness_record_file_json)->get();
  51. foreach ($upload as $value) {
  52. $itemNew['wellness_record_file_json'][] = [
  53. 'url' => getenv('STORAGE_DOMAIN') . $value->upload_file_path,
  54. 'name' => $value->upload_name
  55. ];
  56. }
  57. }
  58. $itemsNew[] = $itemNew;
  59. }
  60. $data = [
  61. 'total' => $total,
  62. 'rows' => $itemsNew
  63. ];
  64. return json(['code' => 200, 'msg' => 'success', 'data' => $data]);
  65. }
  66. /**
  67. * @Desc 我的医嘱
  68. * @Author Gorden
  69. * @Date 2024/4/2 8:44
  70. *
  71. * @param $memberId
  72. * @return Response
  73. */
  74. public function advice($memberId)
  75. {
  76. $query = $this->model->where('wellness_record_category', '医嘱')
  77. ->where('join_wellness_record_member_id', $memberId)
  78. ->orderBy('wellness_record_addtimes','desc');
  79. $paginator = $query->paginate(20);
  80. $total = $paginator->total();
  81. $items = $paginator
  82. ->items();
  83. $itemsNew = [];
  84. dump($items);
  85. foreach ($items as $item) {
  86. $itemNew = [
  87. 'wellness_record_id' => $item->wellness_record_id,
  88. 'join_wellness_record_member_id' => $item->join_wellness_record_member_id,
  89. 'wellness_record_status' => $item->wellness_record_status,
  90. 'wellness_record_name' => $item->wellness_record_name,
  91. 'wellness_record_datetime' => $item->wellness_record_datetime,
  92. 'wellness_record_json' => $item->wellness_record_json,
  93. 'wellness_record_content' => $item->wellness_record_content,
  94. 'wellness_record_remark' => $item->wellness_record_remark,
  95. 'wellness_record_extend_json' => $item->wellness_record_extend_json,
  96. 'wellness_record_addtimes' => $item->wellness_record_addtimes,
  97. ];
  98. if (!empty($item->wellness_record_file_json)) {
  99. $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
  100. foreach ($item->wellness_record_file_json as $value) {
  101. $itemNew['wellness_record_file_json'][] = [
  102. 'url' => getenv('STORAGE_DOMAIN') . $value['url'],
  103. 'name' => $value['name']
  104. ];
  105. }
  106. }
  107. $itemsNew[] = $itemNew;
  108. }
  109. $data = [
  110. 'total' => $total,
  111. 'rows' => $itemsNew
  112. ];
  113. return json(['code' => 200, 'msg' => 'success', 'data' => $data]);
  114. }
  115. /**
  116. * @Desc 查询列表
  117. * @Author Gorden
  118. * @Date 2024/3/21 9:58
  119. *
  120. * @param Request $request
  121. * @return Response
  122. * @throws \support\exception\BusinessException
  123. */
  124. public function select(Request $request): Response
  125. {
  126. [$where, $format, $limit, $field, $order] = $this->selectInput($request);
  127. $field = $field ?? 'wellness_record_addtimes';
  128. $order = $request->get('order', 'desc');
  129. $where['wellness_record_category'] = '档案';
  130. $query = $this->doSelect($where, $field, $order);
  131. return $this->doFormat($query, $format, $limit);
  132. }
  133. protected function doSelect(array $where, string $field = null, string $order = 'desc')
  134. {
  135. $model = $this->model->with([
  136. 'member' => function ($query) {
  137. $query->select('member_id', 'member_mobile');
  138. },
  139. 'cert' => function ($query) {
  140. $query->select('join_cert_member_id', 'member_cert_name');
  141. }
  142. ]);
  143. foreach ($where as $column => $value) {
  144. if (is_array($value)) {
  145. if ($value[0] === 'like' || $value[0] === 'not like') {
  146. $model = $model->where($column, $value[0], "%$value[1]%");
  147. } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
  148. $model = $model->where($column, $value[0], $value[1]);
  149. } elseif ($value[0] == 'in' && !empty($value[1])) {
  150. $valArr = $value[1];
  151. if (is_string($value[1])) {
  152. $valArr = explode(",", trim($value[1]));
  153. }
  154. $model = $model->whereIn($column, $valArr);
  155. } elseif ($value[0] == 'not in' && !empty($value[1])) {
  156. $valArr = $value[1];
  157. if (is_string($value[1])) {
  158. $valArr = explode(",", trim($value[1]));
  159. }
  160. $model = $model->whereNotIn($column, $valArr);
  161. } elseif ($value[0] == 'null') {
  162. $model = $model->whereNull($column);
  163. } elseif ($value[0] == 'not null') {
  164. $model = $model->whereNotNull($column);
  165. } elseif ($value[0] !== '' || $value[1] !== '') {
  166. $model = $model->whereBetween($column, $value);
  167. }
  168. } else {
  169. $model = $model->where($column, $value);
  170. }
  171. }
  172. if ($field) {
  173. $model = $model->orderBy($field, $order);
  174. }
  175. return $model;
  176. }
  177. protected function afterQuery($items)
  178. {
  179. foreach ($items as &$item) {
  180. if (!empty($item->wellness_record_file_json)) {
  181. $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
  182. $files = '';
  183. foreach ($item->wellness_record_file_json as $file) {
  184. $files .= getenv('STORAGE_DOMAIN') . $file . ',';
  185. }
  186. $item->wellness_record_file_json = rtrim($files, ',');
  187. }
  188. }
  189. return $items;
  190. }
  191. protected function insertInput(Request $request): array
  192. {
  193. $data = $this->inputFilter($request->post());
  194. $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
  195. return $data;
  196. }
  197. protected function updateInput(Request $request): array
  198. {
  199. $primary_key = $this->model->getKeyName();
  200. $id = $request->post($primary_key);
  201. $data = $this->inputFilter($request->post());
  202. $data = $this->inputFilter($request->post());
  203. $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
  204. if (!empty($data['wellness_record_file_json'])) {
  205. $data['wellness_record_file_json'] = str_replace(getenv('STORAGE_DOMAIN'), '', $data['wellness_record_file_json']);
  206. $data['wellness_record_file_json'] = json_encode(explode(',', $data['wellness_record_file_json']));
  207. }
  208. $model = $this->model->find($id);
  209. if (!$model) {
  210. throw new BusinessException('记录不存在', 2);
  211. }
  212. unset($data[$primary_key]);
  213. return [$id, $data];
  214. }
  215. }