gorden hai 10 meses
pai
achega
7d45d4df55

+ 28 - 9
app/admin/controller/member/CheckupController.php

@@ -7,6 +7,7 @@ use app\admin\validate\member\WellnessRecordValidate;
 use app\controller\Curd;
 use app\model\CinemaIlk as CinemaIlkModel;
 use app\model\WellnessRecord;
+use support\exception\BusinessException;
 use support\Request;
 use support\Response;
 
@@ -89,11 +90,14 @@ class CheckupController extends Curd
         foreach ($items as &$item) {
             if (!empty($item->wellness_record_file_json)) {
                 $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
-                $files = '';
-                foreach ($item->wellness_record_file_json as $file){
-                    $files.=getenv('STORAGE_DOMAIN').$file.',';
+                $wellnessRecordFileJson = [];
+                foreach ($item->wellness_record_file_json as $value) {
+                    $wellnessRecordFileJson[] = [
+                        'url' => getenv('STORAGE_DOMAIN') . $value['url'],
+                        'name' => $value['name']
+                    ];
                 }
-                $item->wellness_record_file_json = rtrim($files,',');
+                $this->wellness_record_file_json = $wellnessRecordFileJson;
             }
         }
 
@@ -105,8 +109,17 @@ class CheckupController extends Curd
         $data = $this->inputFilter($request->post());
         $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
         if (!empty($data['wellness_record_file_json'])) {
-            $data['wellness_record_file_json'] = str_replace(getenv('STORAGE_DOMAIN'), '', $data['wellness_record_file_json']);
-            $data['wellness_record_file_json'] = json_encode(explode(',', $data['wellness_record_file_json']));
+            $data['wellness_record_file_json'] = json_decode($data['wellness_record_file_json'], true);
+            $wellnessRecordFileJson = [];
+            foreach ($data['wellness_record_file_json'] as $value) {
+                $wellnessRecordFileJson[] = [
+                    'url' => getenv('STORAGE_DOMAIN') . $value['url'],
+                    'name' => $value['name']
+                ];
+            }
+            $data['wellness_record_file_json'] = json_encode($wellnessRecordFileJson);
+        } else {
+            $data['wellness_record_file_json'] = '[]';
         }
 
         return $data;
@@ -117,11 +130,17 @@ class CheckupController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
-        $data = $this->inputFilter($request->post());
         $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
         if (!empty($data['wellness_record_file_json'])) {
-            $data['wellness_record_file_json'] = str_replace(getenv('STORAGE_DOMAIN'), '', $data['wellness_record_file_json']);
-            $data['wellness_record_file_json'] = json_encode(explode(',', $data['wellness_record_file_json']));
+            $data['wellness_record_file_json'] = json_decode($data['wellness_record_file_json'], true);
+            $wellnessRecordFileJson = [];
+            foreach ($data['wellness_record_file_json'] as $value) {
+                $wellnessRecordFileJson[] = [
+                    'url' => $value['url'],
+                    'name' => $value['name']
+                ];
+            }
+            $data['wellness_record_file_json'] = $wellnessRecordFileJson;
         }
         $model = $this->model->find($id);
         if (!$model) {

+ 11 - 1
app/admin/controller/member/MemberController.php

@@ -31,7 +31,7 @@ class MemberController
         foreach ($res as $item) {
             $data[] = [
                 'key' => $item->member_id,
-                'value' => !empty($item->member_cert_name) ? $item->member_cert_name : $item->member_mobile,
+                'value' => !empty($item->member_cert_name) ? $item->member_cert_name.'-'.$item->member_mobile : $item->member_mobile,
             ];
         }
 
@@ -90,6 +90,16 @@ class MemberController
         return MemberService::add($request->post());
     }
 
+    public function update(Request $request)
+    {
+        $validate = new MemberValidate();
+        if (!$validate->scene('update')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return MemberService::update($request->post());
+    }
+
     /**
      * @Desc 绑定的设备
      * @Author Gorden

+ 30 - 9
app/admin/controller/member/VisitingController.php

@@ -7,6 +7,7 @@ use app\admin\validate\member\WellnessRecordValidate;
 use app\controller\Curd;
 use app\model\CinemaIlk as CinemaIlkModel;
 use app\model\WellnessRecord;
+use support\exception\BusinessException;
 use support\Request;
 use support\Response;
 
@@ -89,11 +90,14 @@ class VisitingController extends Curd
         foreach ($items as &$item) {
             if (!empty($item->wellness_record_file_json)) {
                 $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
-                $files = '';
-                foreach ($item->wellness_record_file_json as $file){
-                    $files.=getenv('STORAGE_DOMAIN').$file.',';
+                $wellnessRecordFileJson = [];
+                foreach ($item->wellness_record_file_json as $value) {
+                    $wellnessRecordFileJson[] = [
+                        'url' => getenv('STORAGE_DOMAIN') . $value['url'],
+                        'name' => $value['name']
+                    ];
                 }
-                $item->wellness_record_file_json = rtrim($files,',');
+                $this->wellness_record_file_json = $wellnessRecordFileJson;
             }
         }
 
@@ -105,8 +109,17 @@ class VisitingController extends Curd
         $data = $this->inputFilter($request->post());
         $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
         if (!empty($data['wellness_record_file_json'])) {
-            $data['wellness_record_file_json'] = str_replace(getenv('STORAGE_DOMAIN'), '', $data['wellness_record_file_json']);
-            $data['wellness_record_file_json'] = json_encode(explode(',', $data['wellness_record_file_json']));
+            $data['wellness_record_file_json'] = json_decode($data['wellness_record_file_json'], true);
+            $wellnessRecordFileJson = [];
+            foreach ($data['wellness_record_file_json'] as $value) {
+                $wellnessRecordFileJson[] = [
+                    'url' => getenv('STORAGE_DOMAIN') . $value['url'],
+                    'name' => $value['name']
+                ];
+            }
+            $data['wellness_record_file_json'] = json_encode($wellnessRecordFileJson);
+        }else{
+            $data['wellness_record_file_json'] = '[]';
         }
 
         return $data;
@@ -117,11 +130,19 @@ class VisitingController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
-        $data = $this->inputFilter($request->post());
         $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
         if (!empty($data['wellness_record_file_json'])) {
-            $data['wellness_record_file_json'] = str_replace(getenv('STORAGE_DOMAIN'), '', $data['wellness_record_file_json']);
-            $data['wellness_record_file_json'] = json_encode(explode(',', $data['wellness_record_file_json']));
+            $data['wellness_record_file_json'] = json_decode($data['wellness_record_file_json'], true);
+            $wellnessRecordFileJson = [];
+            foreach ($data['wellness_record_file_json'] as $value) {
+                $wellnessRecordFileJson[] = [
+                    'url' => $value['url'],
+                    'name' => $value['name']
+                ];
+            }
+            $data['wellness_record_file_json'] = json_encode($wellnessRecordFileJson);
+        }else{
+            $data['wellness_record_file_json'] = '[]';
         }
         $model = $this->model->find($id);
         if (!$model) {

+ 47 - 14
app/admin/controller/member/WellnessRecordController.php

@@ -8,6 +8,7 @@ use app\controller\Curd;
 use app\model\CinemaIlk as CinemaIlkModel;
 use app\model\SysUpload;
 use app\model\WellnessRecord;
+use support\exception\BusinessException;
 use support\Request;
 use support\Response;
 
@@ -83,13 +84,11 @@ class WellnessRecordController extends Curd
     {
         $query = $this->model->where('wellness_record_category', '医嘱')
             ->where('join_wellness_record_member_id', $memberId)
-            ->orderBy('wellness_record_addtimes','desc');
+            ->orderBy('wellness_record_addtimes', 'desc');
         $paginator = $query->paginate(20);
         $total = $paginator->total();
-        $items = $paginator
-            ->items();
+        $items = $paginator->items();
         $itemsNew = [];
-        dump($items);
         foreach ($items as $item) {
             $itemNew = [
                 'wellness_record_id' => $item->wellness_record_id,
@@ -107,8 +106,8 @@ class WellnessRecordController extends Curd
                 $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
                 foreach ($item->wellness_record_file_json as $value) {
                     $itemNew['wellness_record_file_json'][] = [
-                        'url' => getenv('STORAGE_DOMAIN') . $value['url'],
-                        'name' => $value['name']
+                        'url' => isset($value['url']) ? getenv('STORAGE_DOMAIN') . $value['url'] : '',
+                        'name' => isset($value['name']) ? $value['name'] : ''
                     ];
                 }
             }
@@ -190,13 +189,27 @@ class WellnessRecordController extends Curd
     protected function afterQuery($items)
     {
         foreach ($items as &$item) {
+//            $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
+//            $upload = SysUpload::whereIn('upload_file_path', $item->wellness_record_file_json)->get();
+//            $itemNew = [];
+//            foreach ($upload as $value) {
+//                $itemNew['wellness_record_file_json'][] = [
+//                    'url' => getenv('STORAGE_DOMAIN') . $value->upload_file_path,
+//                    'name' => $value->upload_name
+//                ];
+//            }
+//            $item->wellness_record_file_array = $itemNew;
             if (!empty($item->wellness_record_file_json)) {
                 $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
-                $files = '';
-                foreach ($item->wellness_record_file_json as $file) {
-                    $files .= getenv('STORAGE_DOMAIN') . $file . ',';
+                $upload = SysUpload::whereIn('upload_file_path', $item->wellness_record_file_json)->get();
+                $itemNew = [];
+                foreach ($upload as $value) {
+                    $itemNew[] = [
+                        'url' => getenv('STORAGE_DOMAIN') . $value->upload_file_path,
+                        'name' => $value->upload_name
+                    ];
                 }
-                $item->wellness_record_file_json = rtrim($files, ',');
+                $item->wellness_record_file_array = $itemNew;
             }
         }
 
@@ -207,7 +220,19 @@ class WellnessRecordController extends Curd
     {
         $data = $this->inputFilter($request->post());
         $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
-
+        if (!empty($data['wellness_record_file_json'])) {
+            $data['wellness_record_file_json'] = json_decode($data['wellness_record_file_json'], true);
+            $wellnessRecordFileJson = [];
+            foreach ($data['wellness_record_file_json'] as $value) {
+                $wellnessRecordFileJson[] = [
+                    'url' => getenv('STORAGE_DOMAIN') . $value['url'],
+                    'name' => $value['name']
+                ];
+            }
+            $data['wellness_record_file_json'] = json_encode($wellnessRecordFileJson);
+        }else{
+            $data['wellness_record_file_json'] = '[]';
+        }
         return $data;
     }
 
@@ -216,11 +241,19 @@ class WellnessRecordController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
-        $data = $this->inputFilter($request->post());
         $data['wellness_record_datetime'] = date('Y-m-d H:i:s', strtotime($data['wellness_record_datetime']));
         if (!empty($data['wellness_record_file_json'])) {
-            $data['wellness_record_file_json'] = str_replace(getenv('STORAGE_DOMAIN'), '', $data['wellness_record_file_json']);
-            $data['wellness_record_file_json'] = json_encode(explode(',', $data['wellness_record_file_json']));
+            $data['wellness_record_file_json'] = json_decode($data['wellness_record_file_json'], true);
+            $wellnessRecordFileJson = [];
+            foreach ($data['wellness_record_file_json'] as $value) {
+                $wellnessRecordFileJson[] = [
+                    'url' => $value['url'],
+                    'name' => $value['name']
+                ];
+            }
+            $data['wellness_record_file_json'] = json_encode($wellnessRecordFileJson);
+        }else{
+            $data['wellness_record_file_json'] = '[]';
         }
         $model = $this->model->find($id);
         if (!$model) {

+ 62 - 2
app/admin/service/member/MemberService.php

@@ -113,6 +113,66 @@ class MemberService
         return json_success('数据添加成功');
     }
 
+    /**
+     * @Desc 编辑会员/ 业主
+     * @Author Gorden
+     * @Date 2024/4/20 15:18
+     *
+     * @param $params
+     * @return \support\Response
+     */
+    public static function update($params)
+    {
+        Db::beginTransaction();
+        try {
+            $memberId = $params['member_id'];
+            if (!Member::where('member_id', $params['member_id'])->exists()) {
+                return json_fail("暂无数据");
+            }
+            // 先写主表,要ID
+            $memberData = [
+                'member_id' => $memberId,
+                'member_is_owner' => $params['is_owner'],
+                'member_classify' => $params['classify'],
+                'member_status' => $params['status'],
+                'member_mobile' => $params['mobile'],
+                'member_from' => $params['source'],
+                'member_addtimes' => time(),
+            ];
+            Member::where('member_id', $params['member_id'])->update($memberData);
+            // member cert
+            $certData = [
+                'join_cert_member_id' => $memberId,
+                'member_cert_nation' => $params['member_cert_nation'] ?? '',
+                'member_cert_name' => $params['cert_name'] ?? '',
+                'member_cert_nbr' => $params['cert_nbr'] ?? '',
+                'member_cert_birth' => $params['birth'] ? date('Y-m-d', strtotime($params['birth'])) : '',
+                'member_cert_gender' => $params['gender'] ?? '',
+                'member_cert_province' => $params['province'] ?? '',
+                'member_cert_city' => $params['city'] ?? '',
+                'member_cert_addr' => $params['addr'] ?? '',
+                'member_cert_face' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_face']),
+                'member_cert_photo' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_photo']),
+            ];
+            MemberCert::where('join_cert_member_id', $params['member_id'])->update($certData);
+            // member info
+            $infoData = [
+                'join_info_member_id' => $memberId,
+                'member_info_nickname' => $params['account_name'],
+                'member_info_headimg' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['avatar'])
+            ];
+            MemberInfo::where('join_info_member_id', $params['member_id'])->update($infoData);
+
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollBack();
+            dump($e->getMessage() . ';line:' . $e->getLine());
+            return json_fail("数据更新失败");
+        }
+
+        return json_success('数据更新成功');
+    }
+
     /**
      * @Desc 会员关联设备列表
      * @Author Gorden
@@ -134,13 +194,13 @@ class MemberService
         $rows = MemberDevice::leftJoin('device', 'device.device_id', '=', 'member_device.join_member_device_id')
             ->leftJoin('member', 'member.member_id', '=', 'member_device.join_device_member_id')
             ->leftJoin('family_member', 'family_member.join_family_member_id', '=', 'member_device.join_device_member_id')
-            ->select('device.device_category', 'device.device_name', 'device.device_type', 'member.member_mobile', 'member_device.*','family_member.family_member_name')
+            ->select('device.device_category', 'device.device_name', 'device.device_type', 'member.member_mobile', 'member_device.*', 'family_member.family_member_name')
             ->when(!empty($familyMemberIds), function ($query) use ($familyMemberIds) {
                 $query->whereIn('member_device.join_device_master_member_id', $familyMemberIds);
             })
             ->when(empty($familyMemberIds), function ($query) use ($id) {
                 $query->where('member_device.join_device_master_member_id', $id);
-            })->orderBy('member_device_addtimes','desc')
+            })->orderBy('member_device_addtimes', 'desc')
             ->get()
             ->toArray();
 

+ 1 - 1
app/admin/service/member/OwnerService.php

@@ -31,7 +31,7 @@ class OwnerService
             },
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_birth', 'member_cert_gender', 'member_cert_name', 'member_cert_nbr',
-                    'member_cert_province', 'member_cert_city', 'member_cert_addr', 'member_cert_face', 'member_cert_photo');
+                    'member_cert_province', 'member_cert_city', 'member_cert_addr', 'member_cert_face', 'member_cert_photo', 'member_cert_nation');
             }
         ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes')
             ->orderBy('member_addtimes', 'DESC')

+ 2 - 2
app/admin/validate/member/MemberValidate.php

@@ -7,7 +7,7 @@ use think\Validate;
 class MemberValidate extends Validate
 {
     protected $rule = [
-        'id' => 'require',
+        'member_id' => 'require|alphaDash',
         'account_name|账号名称' => 'require',
         'avatar|头像' => 'require',
         'source|来源' => 'require', // 来源
@@ -29,7 +29,7 @@ class MemberValidate extends Validate
     protected $scene = [
         'add' => ['avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
             'cert_nbr', 'member_cert_face', 'member_cert_photo'],
-        'update' => ['id', 'avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
+        'update' => ['member_id', 'avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
             'cert_nbr', 'member_cert_face', 'member_cert_photo']
     ];
 }

+ 1 - 0
route/admin.php

@@ -482,6 +482,7 @@ Route::group('/admin', function () {
             Route::get('/selectFamilyMemberList', [\app\admin\controller\member\MemberController::class, 'selectFamilyMemberList']);
             Route::get('/list', [\app\admin\controller\member\MemberController::class, 'list']);
             Route::post('/add', [\app\admin\controller\member\MemberController::class, 'add']);
+            Route::post('/update', [\app\admin\controller\member\MemberController::class, 'update']);
         });
         // 业主管理
         Route::group('/owner', function () {