get('page', 1); $pageSize = $request->get('pageSize', 10); $id = $request->get('id', ''); $mobile = $request->get('mobile', ''); $rows = Member::where('member_is_owner', 'N') ->when($id != '', function ($query) use ($id) { $query->where('member_id', 'like', '%' . $id . '%'); })->when($mobile != '', function ($query) use ($mobile) { $query->where('member_mobile', 'like', '%' . $mobile . '%'); }); // 总条数 $total = $rows->count('member_id'); $rows = $rows->with([ 'info' => function ($query) { $query->select('join_info_member_id', 'member_info_nickname', 'member_info_headimg'); }, '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_nation'); } ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes') ->orderBy('member_addtimes', 'DESC') ->forPage($page, $pageSize) ->get() ->toArray(); foreach ($rows as &$row) { if (!empty($row['info']['member_info_headimg'])) { $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN') . $row['info']['member_info_headimg']; } if (!empty($row['cert']['member_cert_face'])) { $row['cert']['member_cert_face'] = getenv('STORAGE_DOMAIN') . $row['cert']['member_cert_face']; $row['cert']['member_cert_photo'] = getenv('STORAGE_DOMAIN') . $row['cert']['member_cert_photo']; } if (!empty($row['cert']['member_cert_province']) && is_json($row['cert']['member_cert_province'])) { $row['cert']['member_cert_province'] = json_decode($row['cert']['member_cert_province']); } } return json_success('', compact('rows', 'page', 'pageSize', 'total')); } /** * @Desc 添加会员 * @Author Gorden * @Date 2024/3/25 13:40 * * @param $params * @return \support\Response */ public static function add($params) { Db::beginTransaction(); try { $memberId = self::generateMemberId(); // 先写主表,要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::insert($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'] ? json_encode($params['province'], JSON_UNESCAPED_UNICODE) : '[]', '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::insert($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::insert($infoData); Db::commit(); } catch (\Exception $e) { Db::rollBack(); dump($e->getMessage() . ';line:' . $e->getLine()); return json_fail("数据添加失败"); } 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::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'] ? json_encode($params['province'], JSON_UNESCAPED_UNICODE) : '[]', '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 * @Date 2024/4/7 9:52 * * @param $id * @return \support\Response */ public static function deviceList($id) { $family = Family::where('join_family_creator_member_id', $id)->get()->toArray(); $familyMemberIds = ''; if ($family) { $familyIds = array_column($family, 'family_id'); $familyMember = FamilyMember::whereIn('join_family_id', $familyIds)->get()->toArray(); $familyMemberIds = array_column($familyMember, 'join_family_member_id'); } $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') ->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') ->get() ->toArray(); return json_success('', ['rows' => $rows]); } /** * @Desc 绑定设备 * @Author Gorden * @Date 2024/4/7 10:27 * * @param Request $request * @return \support\Response */ public static function addDevice(Request $request) { $params = $request->post(); Db::beginTransaction(); try { $data = [ 'join_device_member_id' => $params['join_device_member_id'] ?? '', 'join_device_master_member_id' => $params['join_device_master_member_id'], 'join_member_device_id' => $params['join_member_device_id'], 'member_device_status' => $params['member_device_status'], 'member_device_key' => $params['member_device_key'] ?? '', 'member_device_config_json' => !empty($params['member_device_config_json']) ? $params['member_device_config_json'] : null, 'member_device_remark' => $params['member_device_remark'] ?? null, 'member_device_addtimes' => time(), ]; MemberDevice::insert($data); // 激活设备 if (!Device::where('device_id', $params['join_member_device_id'])->whereIn('device_status', ['PROCESSING', 'PENDING'])->exists()) { Db::rollBack(); return json_fail('当前设备不是可激活状态'); } Device::where('device_id', $params['join_member_device_id'])->update(['device_status' => 'ACTIVED']); Db::commit(); } catch (\Exception $e) { Db::rollBack(); dump($e->getMessage()); return json_fail('绑定失败'); } return json_success('绑定成功'); } public static function updateDevice(Request $request) { $params = $request->post(); try { $data = [ 'member_device_status' => $params['member_device_status'], 'member_device_key' => $params['member_device_key'], 'join_device_member_id' => $params['join_device_member_id'], 'member_device_config_json' => !empty($params['member_device_config_json']) ? $params['member_device_config_json'] : null, 'member_device_remark' => $params['member_device_remark'] ?? null, ]; MemberDevice::where('member_device_id', $request->post('member_device_id'))->update($data); } catch (\Exception $e) { dump($e->getMessage()); return json_fail('绑定失败'); } return json_success('绑定成功'); } public static function deleteDevice(Request $request) { try { MemberDevice::where('member_device_id', $request->post('member_device_id'))->delete(); return json_success('解除绑定成功'); } catch (\Exception $e) { return json_fail('绑定失败'); } } private static function generateMemberId() { $id = SysSerial::getSerial(); return "ME" . str_pad($id, 16, "0", STR_PAD_LEFT) . random_string(6, 'up'); } }