收藏关注不迷路!!
🌟文末获取源码+数据库🌟
感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
前言
💗博主介绍:✨全网拥有20W+粉丝、CSDN作者、博客专家、全栈领域优质创作者、平台优质Java创作者、专注于Java、小程序、python、安卓技术领域和毕业项目实战✌💟!✨💗
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计设计精品实战案例✅
感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,博主免费解答、希望可以帮助更多人
详细视频演示
文章底部名片,获取项目的完整演示视频,免费解答技术疑问
项目介绍
基于.NET的医院医保管理系统是一个采用Microsoft .NET框架开发的软件系统,旨在为医院提供高效、便捷的医疗保险管理服务。该系统通过集成首页、药品信息、医保政策、个人信息等功能,实现了医院与参保人之间的信息共享和业务流程自动化。通过这一系统,医院能够减少人工操作错误,提高医疗服务效率,确保医保政策的正确执行,为参保人提供更好的就医体验。
系统阐述的是使用基于. NET的医院医保管理系统的设计与实现,对于Net、B/S结构、SQL Server进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了 vue框架和SQL Server数据库技术搭建系统的整体架构。利用这些技术结合实际需求开发了具有系统首页、个人中心、参保人管理、就医记录管理、医疗费用结算管理、药品信息管理、药品订单管理、系统管理等功能的系统,最后对系统进行相应的测试,测试系统有无存在问题以及测试用户权限来优化系统,最后系统达到预期目标。
技术介绍
开发软件:VS 2017 (版本2017以上即可,不能低于2017)
数据库:SqlServer2008r2(数据库版本无限制,都可以导入)
开发模式:mvc
浏览器:谷歌浏览器
功能介绍
基于. NET的医院医保管理系统分两大部分,即管理员管理和参保人管理。系统按照用户的实际需求开发而来,贴近生活。从管理员出拿到分配好的账号密码可以进入系统,使用相关的系统应用,管理员权限最大,其次是参保人。管理员总体负责整体系统的运行维护,统筹协调。
系统整体模块设计:系统分为管理员和参保人两大用户角色,系统管理员有最大的权限,整体功能展示如图4-1所示:
图4-1 系统整体功能图
核心代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.StaticFiles;
using Newtonsoft.Json;
using Xiezn.Core.Business.Services;
using Xiezn.Core.Common.Helpers;
using Xiezn.Core.Models.ViewModel;
namespace Xiezn.Core.Controllers
{
/// <summary>
/// 公共接口
/// </summary>
[Route("[action]")]
public class CommonController : Controller
{
private readonly IHostingEnvironment _hostingEnvironment;
private readonly string _savePath;
private readonly CommonService _bll;
private readonly ConfigService _configBLL;
/// <summary>
/// 构造函数
/// </summary>
public CommonController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
_savePath = _hostingEnvironment.WebRootPath + Path.DirectorySeparatorChar + ConfigHelper.GetConfig("SchemaName") + Path.DirectorySeparatorChar + "upload" + Path.DirectorySeparatorChar;
_bll = new CommonService();
_configBLL = new ConfigService();
}
/// <summary>
/// 获取某表的某个字段列表接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="columnName">列名</param>
/// <returns></returns>
[HttpGet("{tableName}/{columnName}")]
public JsonResult Option(string tableName, string columnName)
{
try
{
int level = Convert.ToInt32(HttpContext.Request.Query["level"]);
string parent = HttpContext.Request.Query["parent"];
string conditionColumn = HttpContext.Request.Query["conditionColumn"];
string conditionValue = HttpContext.Request.Query["conditionValue"];
if (!string.IsNullOrEmpty(conditionColumn) && !string.IsNullOrEmpty(conditionValue))
{
return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "option", 0, 0, " AND " + conditionColumn + " = '" + conditionValue + "' ") });
}
if (level == 0)
{
return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, parent, level) });
}
else
{
return Json(new { Code = 0, Data = _bll.Common(tableName, columnName) });
}
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 根据option字段值获取某表的单行记录接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="columnName">列名</param>
/// <param name="columnValue">列值</param>
/// <returns></returns>
[HttpGet("{tableName}/{columnName}")]
public JsonResult Follow(string tableName, string columnName, string columnValue)
{
try
{
return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, columnValue, 0, "follow") });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 根据主键id修改table表的sfsh状态接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="id">主键id</param>
/// <param name="sfsh">当前审核状态(是/否)</param>
/// <returns></returns>
[HttpPost("{tableName}")]
[Authorize(Roles = "Admin,Client")]
public JsonResult Sh(string tableName, int id, string sfsh)
{
try
{
if (_bll.Common(tableName, id.ToString(), sfsh, 0, "sh") > 0)
{
return Json(new { Code = 0, Msg = "更新成功!" });
}
return Json(new { Code = -1, Msg = "更新失败!" });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 获取需要提醒的记录数接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="columnName">列名</param>
/// <param name="type">类型(1表示数字比较提醒,2表示日期比较提醒)</param>
/// <param name="remindStart">remindStart小于等于columnName满足条件提醒,当比较日期时,该值表示天数</param>
/// <param name="remindEnd">columnName小于等于remindEnd 满足条件提醒,当比较日期时,该值表示天数</param>
/// <returns></returns>
[HttpGet("{tableName}/{columnName}/{type}")]
public JsonResult Remind(string tableName, string columnName, int type, int remindStart, int remindEnd)
{
try
{
return Json(new { Code = 0, Count = _bll.Common(tableName, columnName, "", type, "remind", remindStart, remindEnd) });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 计算规则接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="columnName">列名</param>
/// <returns></returns>
[HttpGet("{tableName}/{columnName}")]
public JsonResult Cal(string tableName, string columnName)
{
try
{
return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "cal") });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 人脸比较
/// </summary>
/// <param name="face1">图片1名称</param>
/// <param name="face2">图片2名称</param>
/// <returns></returns>
[HttpGet]
public JsonResult MatchFace(string face1, string face2)
{
try
{
BaiduAiHelper.clientId = _configBLL.GetValueByName("APIKey");
BaiduAiHelper.clientSecret = _configBLL.GetValueByName("SecretKey");
BaiduAiHelper.GetAccessToken();
List<FaceMatchViewModel> matchInfo = new List<FaceMatchViewModel>
{
new FaceMatchViewModel { image = FuncHelper.ImageToBase64(_savePath + face1) },
new FaceMatchViewModel { image = FuncHelper.ImageToBase64(_savePath + face2) }
};
string result = BaiduAiHelper.FaceMatch(JsonConvert.SerializeObject(matchInfo));
dynamic resObj = JsonConvert.DeserializeObject(result);
if (resObj.error_code == 0)
{
return Json(new { Code = 0, Score = resObj.result.score, Msg = "匹配成功!" });
}
else
{
return Json(new { Code = -1, Score = 0, Msg = "匹配失败!" });
}
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 定位接口(根据经纬度坐标获取到省市县(区)信息)
/// </summary>
/// <param name="lat">经度</param>
/// <param name="lng">纬度</param>
/// <returns></returns>
[HttpGet]
public JsonResult Location(double lat, double lng)
{
try
{
AddressViewModel addressViewModel = BaiduAiHelper.GetAddress(_configBLL.GetValueByName("baidu_ditu_ak"), lng, lat);
if (addressViewModel == null)
{
return Json(new { Code = -1, Msg = "位置信息获取失败!" });
}
else
{
return Json(new { Code = 0, Data = addressViewModel });
}
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 类别统计接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="columnName">列名</param>
/// <returns></returns>
[HttpGet("{tableName}/{columnName}")]
public JsonResult Group(string tableName, string columnName)
{
try
{
return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "group") });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 按值统计接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="xColumnName">列名</param>
/// <param name="yColumnName">列名</param>
/// <returns></returns>
[HttpGet("{tableName}/{xColumnName}/{yColumnName}")]
public JsonResult Value(string tableName, string xColumnName, string yColumnName)
{
try
{
return Json(new { Code = 0, Data = _bll.Common(tableName, xColumnName, yColumnName, 0, "value") });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 按时间统计类型接口
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="xColumnName">列名</param>
/// <param name="yColumnName">列名</param>
/// <param name="timeStatType">类型</param>
/// <returns></returns>
[HttpGet("{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")]
public JsonResult Value(string tableName, string xColumnName, string yColumnName, string timeStatType)
{
try
{
return Json(new { Code = 0, Data = _bll.StatDate(tableName, xColumnName, yColumnName, timeStatType) });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
/// <summary>
/// 数据备份
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult Mysqldump()
{
string filepath = _savePath + "mysql.dmp";
// Linux
string cmd = "/bin/bash";
string strInput = "/usr/bin/mysqldump -h127.0.0.1 -uroot -P3306 -p123456 net2h303777 > " + filepath;
// Windows
// string cmd = "cmd.exe";
// string strInput = "D:\\mysqldump -h127.0.0.1 -uroot -P3306 -p123456 net2h303777 > " + filepath;
Process p = new Process();
p.StartInfo.FileName = cmd;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(strInput);
p.StandardInput.AutoFlush = true;
p.StandardInput.Close();
string strOuput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
var stream = System.IO.File.OpenRead(filepath);
return File(stream, "application/octet-stream", "mysql.dmp");
}
/// md5加密接口
[HttpGet("{encryption}")]
public IActionResult Encrypt(string encryption)
{
try
{
string text = HttpContext.Request.Query["text"];
string data = FuncHelper.MD5(text);
return Json(new { Code = 0,Data = data });
}
catch (Exception ex)
{
return Json(new { Code = 500, Msg = ex.Message });
}
}
}
}
数据库参考
-- Current Database: `net2h303777`
--
/*!40000 DROP DATABASE IF EXISTS `net2h303777`*/;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `net2h303777` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `net2h303777`;
--
-- Table structure for table `canbaoren`
--
DROP TABLE IF EXISTS `canbaoren`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `canbaoren` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`canbaorenzhanghao` varchar(200) NOT NULL COMMENT '参保人账号',
`mima` varchar(200) NOT NULL COMMENT '密码',
`canbaorenxingming` varchar(200) NOT NULL COMMENT '参保人姓名',
`xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
`nianling` int(11) DEFAULT NULL COMMENT '年龄',
`shenfenzheng` varchar(200) DEFAULT NULL COMMENT '身份证',
`lianxidianhua` varchar(200) DEFAULT NULL COMMENT '联系电话',
`lianxidizhi` varchar(200) DEFAULT NULL COMMENT '联系地址',
`touxiang` longtext COMMENT '头像',
PRIMARY KEY (`id`),
UNIQUE KEY `canbaorenzhanghao` (`canbaorenzhanghao`)
) ENGINE=InnoDB AUTO_INCREMENT=6384688339840 DEFAULT CHARSET=utf8 COMMENT='参保人';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `canbaoren`
--
LOCK TABLES `canbaoren` WRITE;
/*!40000 ALTER TABLE `canbaoren` DISABLE KEYS */;
INSERT INTO `canbaoren` VALUES (11,'2024-03-24 05:20:37','参保人账号1','e10adc3949ba59abbe56e057f20f883e','参保人姓名1','男',1,'440300199101010001','13823888881','联系地址1','upload/canbaoren_touxiang1.jpg'),(12,'2024-03-24 05:20:37','参保人账号2','e10adc3949ba59abbe56e057f20f883e','参保人姓名2','男',2,'440300199202020002','13823888882','联系地址2','upload/canbaoren_touxiang2.jpg'),(13,'2024-03-24 05:20:37','参保人账号3','e10adc3949ba59abbe56e057f20f883e','参保人姓名3','男',3,'440300199303030003','13823888883','联系地址3','upload/canbaoren_touxiang3.jpg'),(14,'2024-03-24 05:20:37','参保人账号4','e10adc3949ba59abbe56e057f20f883e','参保人姓名4','男',4,'440300199404040004','13823888884','联系地址4','upload/canbaoren_touxiang4.jpg'),(15,'2024-03-24 05:20:37','参保人账号5','e10adc3949ba59abbe56e057f20f883e','参保人姓名5','男',5,'440300199505050005','13823888885','联系地址5','upload/canbaoren_touxiang5.jpg'),(16,'2024-03-24 05:20:37','参保人账号6','e10adc3949ba59abbe56e057f20f883e','参保人姓名6','男',6,'440300199606060006','13823888886','联系地址6','upload/canbaoren_touxiang6.jpg'),(17,'2024-03-24 05:20:37','参保人账号7','e10adc3949ba59abbe56e057f20f883e','参保人姓名7','男',7,'440300199707070007','13823888887','联系地址7','upload/canbaoren_touxiang7.jpg'),(18,'2024-03-24 05:20:37','参保人账号8','e10adc3949ba59abbe56e057f20f883e','参保人姓名8','男',8,'440300199808080008','13823888888','联系地址8','upload/canbaoren_touxiang8.jpg'),(6384688339839,'2024-03-24 05:23:18','111','698d51a19d8a121ce581499d7b701668','张三','男',25,'441458565825652366','13111111111','XX地址','upload/1711257797346.jpg');
/*!40000 ALTER TABLE `canbaoren` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `config`
--
DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(100) NOT NULL COMMENT '配置参数名称',
`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
`url` varchar(500) DEFAULT NULL COMMENT 'url',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `config`
--
LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg',NULL),(2,'picture2','upload/picture2.jpg',NULL),(3,'picture3','upload/picture3.jpg',NULL);
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `jiuyijilu`
--
DROP TABLE IF EXISTS `jiuyijilu`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiuyijilu` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`canbaorenzhanghao` varchar(200) DEFAULT NULL COMMENT '参保人账号',
`canbaorenxingming` varchar(200) DEFAULT NULL COMMENT '参保人姓名',
`xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
`nianling` int(11) DEFAULT NULL COMMENT '年龄',
`touxiang` longtext COMMENT '头像',
`jiuzhenyiyuan` varchar(200) DEFAULT NULL COMMENT '就诊医院',
`jibingmingcheng` varchar(200) DEFAULT NULL COMMENT '疾病名称',
`bingqingmiaoshu` longtext COMMENT '病情描述',
`zhenduanjieguo` longtext COMMENT '诊断结果',
`zhiliaofangan` longtext COMMENT '治疗方案',
`zhenduanriqi` date DEFAULT NULL COMMENT '诊断日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6385267596443 DEFAULT CHARSET=utf8 COMMENT='就医记录';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `jiuyijilu`
--
LOCK TABLES `jiuyijilu` WRITE;
/*!40000 ALTER TABLE `jiuyijilu` DISABLE KEYS */;
INSERT INTO `jiuyijilu` VALUES (21,'2024-03-24 05:20:37','参保人账号1','参保人姓名1','性别1',1,'upload/jiuyijilu_touxiang1.jpg,upload/jiuyijilu_touxiang2.jpg,upload/jiuyijilu_touxiang3.jpg','就诊医院1','疾病名称1','病情描述1','诊断结果1','治疗方案1','2024-03-24'),(22,'2024-03-24 05:20:37','参保人账号2','参保人姓名2','性别2',2,'upload/jiuyijilu_touxiang2.jpg,upload/jiuyijilu_touxiang3.jpg,upload/jiuyijilu_touxiang4.jpg','就诊医院2','疾病名称2','病情描述2','诊断结果2','治疗方案2','2024-03-24'),(23,'2024-03-24 05:20:37','参保人账号3','参保人姓名3','性别3',3,'upload/jiuyijilu_touxiang3.jpg,upload/jiuyijilu_touxiang4.jpg,upload/jiuyijilu_touxiang5.jpg','就诊医院3','疾病名称3','病情描述3','诊断结果3','治疗方案3','2024-03-24'),(24,'2024-03-24 05:20:37','参保人账号4','参保人姓名4','性别4',4,'upload/jiuyijilu_touxiang4.jpg,upload/jiuyijilu_touxiang5.jpg,upload/jiuyijilu_touxiang6.jpg','就诊医院4','疾病名称4','病情描述4','诊断结果4','治疗方案4','2024-03-24'),(25,'2024-03-24 05:20:37','参保人账号5','参保人姓名5','性别5',5,'upload/jiuyijilu_touxiang5.jpg,upload/jiuyijilu_touxiang6.jpg,upload/jiuyijilu_touxiang7.jpg','就诊医院5','疾病名称5','病情描述5','诊断结果5','治疗方案5','2024-03-24'),(26,'2024-03-24 05:20:37','参保人账号6','参保人姓名6','性别6',6,'upload/jiuyijilu_touxiang6.jpg,upload/jiuyijilu_touxiang7.jpg,upload/jiuyijilu_touxiang8.jpg','就诊医院6','疾病名称6','病情描述6','诊断结果6','治疗方案6','2024-03-24'),(27,'2024-03-24 05:20:37','参保人账号7','参保人姓名7','性别7',7,'upload/jiuyijilu_touxiang7.jpg,upload/jiuyijilu_touxiang8.jpg,upload/jiuyijilu_touxiang9.jpg','就诊医院7','疾病名称7','病情描述7','诊断结果7','治疗方案7','2024-03-24'),(28,'2024-03-24 05:20:37','参保人账号8','参保人姓名8','性别8',8,'upload/jiuyijilu_touxiang8.jpg,upload/jiuyijilu_touxiang9.jpg,upload/jiuyijilu_touxiang10.jpg','就诊医院8','疾病名称8','病情描述8','诊断结果8','治疗方案8','2024-03-24'),(6385267596442,'2024-03-24 05:24:01','111','张三','男',25,'upload/1711257797346.jpg','XX医院','XX名称','XXX','XXX','XXX','2024-03-24');
/*!40000 ALTER TABLE `jiuyijilu` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `news`
--
DROP TABLE IF EXISTS `news`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `news` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`title` varchar(200) NOT NULL COMMENT '标题',
`introduction` longtext COMMENT '简介',
`typename` varchar(200) DEFAULT NULL COMMENT '分类名称',
`name` varchar(200) DEFAULT NULL COMMENT '发布人',
`headportrait` longtext COMMENT '头像',
`clicknum` int(11) DEFAULT '0' COMMENT '点击次数',
`clicktime` datetime DEFAULT NULL COMMENT '最近点击时间',
`thumbsupnum` int(11) DEFAULT '0' COMMENT '赞',
`crazilynum` int(11) DEFAULT '0' COMMENT '踩',
`storeupnum` int(11) DEFAULT '0' COMMENT '收藏数',
`picture` longtext NOT NULL COMMENT '图片',
`content` longtext NOT NULL COMMENT '内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='医保政策';
/*!40101 SET character_set_client = @saved_cs_client */;
系统效果图
源码获取
下方名片联系我即可!!
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻