From 0912352a54c65be32a63d4ae627be091d788ee19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=A0=C3=A7=C2=9Acqq?= <你的2870787453@qq.com> Date: Mon, 28 Apr 2025 19:03:43 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- .../java/com/annotation/APPLoginUser.java | 1 + src/main/java/com/annotation/IgnoreAuth.java | 1 - src/main/java/com/annotation/LoginUser.java | 1 - .../java/com/config/InterceptorConfig.java | 2 +- .../java/com/config/MyMetaObjectHandler.java | 1 - .../java/com/config/MybatisPlusConfig.java | 1 - .../java/com/controller/ChatController.java | 67 +++++++++---------- .../java/com/controller/CommonController.java | 55 ++++++++------- 9 files changed, 63 insertions(+), 68 deletions(-) diff --git a/.gitignore b/.gitignore index 6d345ca..0965c31 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ node_modules/ # 忽略Logs logs *.log - +# # 忽略/dist目录,相对.gitignore文件所在目录 /dist diff --git a/src/main/java/com/annotation/APPLoginUser.java b/src/main/java/com/annotation/APPLoginUser.java index 21d41b9..c4a5ecf 100644 --- a/src/main/java/com/annotation/APPLoginUser.java +++ b/src/main/java/com/annotation/APPLoginUser.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * 登录用户信息 */ diff --git a/src/main/java/com/annotation/IgnoreAuth.java b/src/main/java/com/annotation/IgnoreAuth.java index 7c3cc55..9e2083c 100644 --- a/src/main/java/com/annotation/IgnoreAuth.java +++ b/src/main/java/com/annotation/IgnoreAuth.java @@ -1,7 +1,6 @@ package com.annotation; import java.lang.annotation.*; - /** * 忽略Token验证 */ diff --git a/src/main/java/com/annotation/LoginUser.java b/src/main/java/com/annotation/LoginUser.java index 3d808d3..a0d020f 100644 --- a/src/main/java/com/annotation/LoginUser.java +++ b/src/main/java/com/annotation/LoginUser.java @@ -4,7 +4,6 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; - /** * 登录用户信息 */ diff --git a/src/main/java/com/config/InterceptorConfig.java b/src/main/java/com/config/InterceptorConfig.java index 586ccc5..32e9f64 100644 --- a/src/main/java/com/config/InterceptorConfig.java +++ b/src/main/java/com/config/InterceptorConfig.java @@ -21,7 +21,7 @@ public class InterceptorConfig extends WebMvcConfigurationSupport{ registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**"); super.addInterceptors(registry); } - + /** * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法 */ diff --git a/src/main/java/com/config/MyMetaObjectHandler.java b/src/main/java/com/config/MyMetaObjectHandler.java index 2f9e793..ea90555 100644 --- a/src/main/java/com/config/MyMetaObjectHandler.java +++ b/src/main/java/com/config/MyMetaObjectHandler.java @@ -5,7 +5,6 @@ import java.util.Date; import org.apache.ibatis.reflection.MetaObject; import com.baomidou.mybatisplus.mapper.MetaObjectHandler; - /** * 自定义填充处理器 */ diff --git a/src/main/java/com/config/MybatisPlusConfig.java b/src/main/java/com/config/MybatisPlusConfig.java index ec2e84b..38f9644 100644 --- a/src/main/java/com/config/MybatisPlusConfig.java +++ b/src/main/java/com/config/MybatisPlusConfig.java @@ -6,7 +6,6 @@ import org.springframework.context.annotation.Configuration; import com.baomidou.mybatisplus.mapper.MetaObjectHandler; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; - /** * mybatis-plus配置 */ diff --git a/src/main/java/com/controller/ChatController.java b/src/main/java/com/controller/ChatController.java index 6571d86..f268587 100644 --- a/src/main/java/com/controller/ChatController.java +++ b/src/main/java/com/controller/ChatController.java @@ -31,13 +31,12 @@ import com.service.*; import com.utils.PageUtils; import com.utils.R; import com.alibaba.fastjson.*; - /** * 在线咨询 * 后端接口 * @author * @email -*/ + */ @RestController @Controller @RequestMapping("/chat") @@ -60,10 +59,9 @@ public class ChatController { @Autowired private YishengService yishengService; - /** - * 后端列表 - */ + * 后端列表 + */ @RequestMapping("/page") public R page(@RequestParam Map params, HttpServletRequest request){ logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); @@ -87,25 +85,24 @@ public class ChatController { } return R.ok().put("data", page); } - /** - * 后端详情 - */ + * 后端详情 + */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id); ChatEntity chat = chatService.selectById(id); if(chat !=null){ - //entity转view + //entity转view ChatView view = new ChatView(); BeanUtils.copyProperties( chat , view );//把实体数据重构到view中 - - //级联表 + //级联表 YonghuEntity yonghu = yonghuService.selectById(chat.getYonghuId()); if(yonghu != null){ BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段 view.setYonghuId(yonghu.getId()); } + //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); @@ -114,10 +111,9 @@ public class ChatController { } } - /** - * 后端保存 - */ + * 后端保存 + */ @RequestMapping("/save") public R save(@RequestBody ChatEntity chat, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,chat:{}",this.getClass().getName(),chat.toString()); @@ -146,10 +142,9 @@ public class ChatController { return R.error(511,"表中有相同数据"); } } - /** - * 后端修改 - */ + * 后端修改 + */ @RequestMapping("/update") public R update(@RequestBody ChatEntity chat, HttpServletRequest request){ logger.debug("update方法:,,Controller:{},,chat:{}",this.getClass().getName(),chat.toString()); @@ -159,6 +154,7 @@ public class ChatController { // return R.error(511,"永远不会进入"); // else if("用户".equals(role)) // chat.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); + //根据字段查询是否有相同数据 Wrapper queryWrapper = new EntityWrapper() .notIn("id",chat.getId()) @@ -180,9 +176,10 @@ public class ChatController { } } + /** - * 删除 - */ + * 删除 + */ @RequestMapping("/delete") public R delete(@RequestBody Integer[] ids){ logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString()); @@ -191,6 +188,7 @@ public class ChatController { } + /** * 批量上传 */ @@ -219,20 +217,15 @@ public class ChatController { for(List data:dataList){ //循环 ChatEntity chatEntity = new ChatEntity(); -// chatEntity.setYonghuId(Integer.valueOf(data.get(0))); //提问用户 要改的 -// chatEntity.setChatIssue(data.get(0)); //问题 要改的 -// chatEntity.setIssueTime(new Date(data.get(0))); //问题时间 要改的 -// chatEntity.setChatReply(data.get(0)); //回复 要改的 -// chatEntity.setReplyTime(new Date(data.get(0))); //回复时间 要改的 -// chatEntity.setZhuangtaiTypes(Integer.valueOf(data.get(0))); //状态 要改的 -// chatEntity.setChatTypes(Integer.valueOf(data.get(0))); //数据类型 要改的 -// chatEntity.setInsertTime(date);//时间 + chatList.add(chatEntity); + //把要查询是否重复的字段放入map中 } + //查询是否重复 chatService.insertBatch(chatList); return R.ok(); @@ -248,20 +241,19 @@ public class ChatController { + /** - * 前端列表 - */ + * 前端列表 + */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map params, HttpServletRequest request){ logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); - // 没有指定排序字段就默认id倒序 if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){ params.put("orderBy","id"); } PageUtils page = chatService.queryPage(params); - //字典表数据转换 List list =(List)page.getList(); for(ChatView c:list) @@ -269,26 +261,28 @@ public class ChatController { return R.ok().put("data", page); } + /** - * 前端详情 - */ + * 前端详情 + */ @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id); ChatEntity chat = chatService.selectById(id); if(chat !=null){ - //entity转view ChatView view = new ChatView(); BeanUtils.copyProperties( chat , view );//把实体数据重构到view中 + //级联表 YonghuEntity yonghu = yonghuService.selectById(chat.getYonghuId()); if(yonghu != null){ BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段 view.setYonghuId(yonghu.getId()); } + //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); @@ -298,9 +292,10 @@ public class ChatController { } + /** - * 前端保存 - */ + * 前端保存 + */ @RequestMapping("/add") public R add(@RequestBody ChatEntity chat, HttpServletRequest request){ logger.debug("add方法:,,Controller:{},,chat:{}",this.getClass().getName(),chat.toString()); diff --git a/src/main/java/com/controller/CommonController.java b/src/main/java/com/controller/CommonController.java index d388dcf..569a58f 100644 --- a/src/main/java/com/controller/CommonController.java +++ b/src/main/java/com/controller/CommonController.java @@ -35,6 +35,7 @@ import com.utils.BaiduUtil; import com.utils.FileUtil; import com.utils.R; + /** * 通用接口 */ @@ -65,7 +66,6 @@ public class CommonController{ /** * 人脸比对 - * * @param face1 人脸1 * @param face2 人脸2 * @return @@ -105,7 +105,8 @@ public class CommonController{ } return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString())); } - + + /** * 获取table表中的column列表(联动接口) * @return @@ -125,7 +126,8 @@ public class CommonController{ List data = commonService.getOption(params); return R.ok().put("data", data); } - + + /** * 根据table中的column获取单条记录 * @return @@ -140,7 +142,8 @@ public class CommonController{ Map result = commonService.getFollowByOption(params); return R.ok().put("data", result); } - + + /** * 修改table表的sfsh状态 * @param map @@ -152,7 +155,8 @@ public class CommonController{ commonService.sh(map); return R.ok(); } - + + /** * 获取需要提醒的记录数 * @param tableName @@ -194,6 +198,7 @@ public class CommonController{ return R.ok().put("count", count); } + /** * 圖表统计 */ @@ -206,6 +211,7 @@ public class CommonController{ } + /** * 单列求和 */ @@ -218,7 +224,8 @@ public class CommonController{ Map result = commonService.selectCal(params); return R.ok().put("data", result); } - + + /** * 分组统计 */ @@ -231,7 +238,8 @@ public class CommonController{ List> result = commonService.selectGroup(params); return R.ok().put("data", result); } - + + /** * (按值统计) */ @@ -247,12 +255,7 @@ public class CommonController{ } - /** - * 下面为新加的 - * - * - * - */ + /** * 查询字典表的分组求和 @@ -269,16 +272,16 @@ public class CommonController{ } - /** - tableName 查询表 - condition1 条件1 - condition1Value 条件1值 - average 计算平均评分 - - 取值 - 有值 Number(res.data.value.toFixed(1)) - 无值 if(res.data){} - * */ + + /** + tableName 查询表 + condition1 条件1 + condition1Value 条件1值 + average 计算平均评分 + 取值 + 有值 Number(res.data.value.toFixed(1)) + 无值 if(res.data){} + * */ @IgnoreAuth @RequestMapping("/queryScore") public R queryScore(@RequestParam Map params) { @@ -287,6 +290,7 @@ public class CommonController{ return R.ok().put("data", queryScore); } + /** * 查询字典表的分组统计总条数 * tableName 表名 @@ -300,7 +304,6 @@ public class CommonController{ return R.ok().put("data", result); } - /** * 当前表的日期分组求和 * tableName 表名 @@ -326,9 +329,9 @@ public class CommonController{ return R.ok().put("data", result); } + /** - * - * 查询字典表的分组统计总条数 + * 1查询字典表的分组统计总条数 * tableName 表名 * groupColumn 分组字段 * dateFormatType 日期格式化类型 1:年 2:月 3:日 From 9a9c683bf74de6fc5b8fb64f6fddae82e648e4e0 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:12:20 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/controller/YishengController.java | 383 ++++++++---------- 1 file changed, 172 insertions(+), 211 deletions(-) diff --git a/src/main/java/com/controller/YishengController.java b/src/main/java/com/controller/YishengController.java index c056d20..bca53e8 100644 --- a/src/main/java/com/controller/YishengController.java +++ b/src/main/java/com/controller/YishengController.java @@ -1,4 +1,3 @@ - package com.controller; import java.io.File; @@ -37,7 +36,7 @@ import com.alibaba.fastjson.*; * 后端接口 * @author * @email -*/ + */ @RestController @Controller @RequestMapping("/yisheng") @@ -45,140 +44,134 @@ public class YishengController { private static final Logger logger = LoggerFactory.getLogger(YishengController.class); @Autowired - private YishengService yishengService; - + private YishengService yishengService; // 医生服务 @Autowired - private TokenService tokenService; + private TokenService tokenService; // token服务 @Autowired - private DictionaryService dictionaryService; + private DictionaryService dictionaryService; // 字典服务 //级联表service @Autowired - private YonghuService yonghuService; + private YonghuService yonghuService; // 用户服务 /** - * 后端列表 - */ + * 后端列表 + */ @RequestMapping("/page") public R page(@RequestParam Map params, HttpServletRequest request){ logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); - String role = String.valueOf(request.getSession().getAttribute("role")); + String role = String.valueOf(request.getSession().getAttribute("role")); // 获取用户角色 if(false) return R.error(511,"永不会进入"); else if("用户".equals(role)) - params.put("yonghuId",request.getSession().getAttribute("userId")); + params.put("yonghuId",request.getSession().getAttribute("userId")); // 如果是用户角色,添加用户ID参数 else if("医生".equals(role)) - params.put("yishengId",request.getSession().getAttribute("userId")); + params.put("yishengId",request.getSession().getAttribute("userId")); // 如果是医生角色,添加医生ID参数 if(params.get("orderBy")==null || params.get("orderBy")==""){ - params.put("orderBy","id"); + params.put("orderBy","id"); // 默认按ID排序 } - PageUtils page = yishengService.queryPage(params); + PageUtils page = yishengService.queryPage(params); // 分页查询 //字典表数据转换 List list =(List)page.getList(); for(YishengView c:list){ //修改对应字典表字段 - dictionaryService.dictionaryConvert(c, request); + dictionaryService.dictionaryConvert(c, request); // 转换字典字段 } - return R.ok().put("data", page); + return R.ok().put("data", page); // 返回分页数据 } /** - * 后端详情 - */ + * 后端详情 + */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id); - YishengEntity yisheng = yishengService.selectById(id); + YishengEntity yisheng = yishengService.selectById(id); // 根据ID查询医生 if(yisheng !=null){ //entity转view YishengView view = new YishengView(); - BeanUtils.copyProperties( yisheng , view );//把实体数据重构到view中 + BeanUtils.copyProperties( yisheng , view ); // 把实体数据重构到view中 //修改对应字典表字段 - dictionaryService.dictionaryConvert(view, request); - return R.ok().put("data", view); + dictionaryService.dictionaryConvert(view, request); // 转换字典字段 + return R.ok().put("data", view); // 返回医生详情 }else { - return R.error(511,"查不到数据"); + return R.error(511,"查不到数据"); // 查询不到返回错误 } - } /** - * 后端保存 - */ + * 后端保存 + */ @RequestMapping("/save") public R save(@RequestBody YishengEntity yisheng, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,yisheng:{}",this.getClass().getName(),yisheng.toString()); - String role = String.valueOf(request.getSession().getAttribute("role")); + String role = String.valueOf(request.getSession().getAttribute("role")); // 获取用户角色 if(false) return R.error(511,"永远不会进入"); + // 构建查询条件:用户名或手机号 Wrapper queryWrapper = new EntityWrapper() - .eq("username", yisheng.getUsername()) - .or() - .eq("yisheng_phone", yisheng.getYishengPhone()) - ; + .eq("username", yisheng.getUsername()) + .or() + .eq("yisheng_phone", yisheng.getYishengPhone()); logger.info("sql语句:"+queryWrapper.getSqlSegment()); - YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); + YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); // 查询是否已存在 if(yishengEntity==null){ - yisheng.setCreateTime(new Date()); - yisheng.setPassword("123456"); - yishengService.insert(yisheng); - return R.ok(); + yisheng.setCreateTime(new Date()); // 设置创建时间 + yisheng.setPassword("123456"); // 设置默认密码 + yishengService.insert(yisheng); // 插入新医生数据 + return R.ok(); // 返回成功 }else { - return R.error(511,"账户或者联系方式已经被使用"); + return R.error(511,"账户或者联系方式已经被使用"); // 已存在返回错误 } } /** - * 后端修改 - */ + * 后端修改 + */ @RequestMapping("/update") public R update(@RequestBody YishengEntity yisheng, HttpServletRequest request){ logger.debug("update方法:,,Controller:{},,yisheng:{}",this.getClass().getName(),yisheng.toString()); - String role = String.valueOf(request.getSession().getAttribute("role")); -// if(false) -// return R.error(511,"永远不会进入"); - //根据字段查询是否有相同数据 + String role = String.valueOf(request.getSession().getAttribute("role")); // 获取用户角色 + // 构建查询条件:排除当前ID,查询用户名或手机号是否已被其他记录使用 Wrapper queryWrapper = new EntityWrapper() - .notIn("id",yisheng.getId()) - .andNew() - .eq("username", yisheng.getUsername()) - .or() - .eq("yisheng_phone", yisheng.getYishengPhone()) - ; + .notIn("id",yisheng.getId()) + .andNew() + .eq("username", yisheng.getUsername()) + .or() + .eq("yisheng_phone", yisheng.getYishengPhone()); logger.info("sql语句:"+queryWrapper.getSqlSegment()); - YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); + YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); // 查询是否冲突 if("".equals(yisheng.getYishengPhoto()) || "null".equals(yisheng.getYishengPhoto())){ - yisheng.setYishengPhoto(null); + yisheng.setYishengPhoto(null); // 处理空照片 } if(yishengEntity==null){ - yishengService.updateById(yisheng);//根据id更新 - return R.ok(); + yishengService.updateById(yisheng); // 根据id更新 + return R.ok(); // 返回成功 }else { - return R.error(511,"账户或者联系方式已经被使用"); + return R.error(511,"账户或者联系方式已经被使用"); // 冲突返回错误 } } /** - * 删除 - */ + * 删除 + */ @RequestMapping("/delete") public R delete(@RequestBody Integer[] ids){ logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString()); - yishengService.deleteBatchIds(Arrays.asList(ids)); - return R.ok(); + yishengService.deleteBatchIds(Arrays.asList(ids)); // 批量删除 + return R.ok(); // 返回成功 } - /** * 批量上传 */ @@ -186,76 +179,62 @@ public class YishengController { public R save( String fileName){ logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName); try { - List yishengList = new ArrayList<>();//上传的东西 - Map> seachFields= new HashMap<>();//要查询的字段 + List yishengList = new ArrayList<>(); // 上传的数据列表 + Map> seachFields= new HashMap<>(); // 要查询的字段 Date date = new Date(); int lastIndexOf = fileName.lastIndexOf("."); if(lastIndexOf == -1){ - return R.error(511,"该文件没有后缀"); + return R.error(511,"该文件没有后缀"); // 文件后缀检查 }else{ String suffix = fileName.substring(lastIndexOf); if(!".xls".equals(suffix)){ - return R.error(511,"只支持后缀为xls的excel文件"); + return R.error(511,"只支持后缀为xls的excel文件"); // 文件格式检查 }else{ - URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径 + URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName); // 获取文件路径 File file = new File(resource.getFile()); if(!file.exists()){ - return R.error(511,"找不到上传文件,请联系管理员"); + return R.error(511,"找不到上传文件,请联系管理员"); // 文件存在检查 }else{ - List> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件 - dataList.remove(0);//删除第一行,因为第一行是提示 + List> dataList = PoiUtil.poiImport(file.getPath()); // 读取xls文件 + dataList.remove(0); // 删除第一行提示行 for(List data:dataList){ - //循环 + //循环处理每行数据 YishengEntity yishengEntity = new YishengEntity(); -// yishengEntity.setYishengUuidNumber(data.get(0)); //医生工号 要改的 -// yishengEntity.setUsername(data.get(0)); //账户 要改的 -// //yishengEntity.setPassword("123456");//密码 -// yishengEntity.setYishengName(data.get(0)); //医生名称 要改的 -// yishengEntity.setYishengTypes(Integer.valueOf(data.get(0))); //科室 要改的 -// yishengEntity.setZhiweiTypes(Integer.valueOf(data.get(0))); //职位 要改的 -// yishengEntity.setYishengZhichneg(data.get(0)); //职称 要改的 -// yishengEntity.setYishengPhoto("");//照片 -// yishengEntity.setYishengPhone(data.get(0)); //联系方式 要改的 -// yishengEntity.setYishengGuahao(data.get(0)); //挂号须知 要改的 -// yishengEntity.setYishengEmail(data.get(0)); //邮箱 要改的 -// yishengEntity.setYishengNewMoney(data.get(0)); //挂号价格 要改的 -// yishengEntity.setYishengContent("");//照片 -// yishengEntity.setCreateTime(date);//时间 - yishengList.add(yishengEntity); - - - //把要查询是否重复的字段放入map中 - //医生工号 - if(seachFields.containsKey("yishengUuidNumber")){ - List yishengUuidNumber = seachFields.get("yishengUuidNumber"); - yishengUuidNumber.add(data.get(0));//要改的 - }else{ - List yishengUuidNumber = new ArrayList<>(); - yishengUuidNumber.add(data.get(0));//要改的 - seachFields.put("yishengUuidNumber",yishengUuidNumber); - } - //账户 - if(seachFields.containsKey("username")){ - List username = seachFields.get("username"); - username.add(data.get(0));//要改的 - }else{ - List username = new ArrayList<>(); - username.add(data.get(0));//要改的 - seachFields.put("username",username); - } - //联系方式 - if(seachFields.containsKey("yishengPhone")){ - List yishengPhone = seachFields.get("yishengPhone"); - yishengPhone.add(data.get(0));//要改的 - }else{ - List yishengPhone = new ArrayList<>(); - yishengPhone.add(data.get(0));//要改的 - seachFields.put("yishengPhone",yishengPhone); - } + // 这里注释掉的代码是字段映射示例,实际使用时需要根据Excel列对应关系修改 + yishengList.add(yishengEntity); // 添加到列表 + + // 把要查询是否重复的字段放入map中 + // 医生工号 + if(seachFields.containsKey("yishengUuidNumber")){ + List yishengUuidNumber = seachFields.get("yishengUuidNumber"); + yishengUuidNumber.add(data.get(0)); // 要改的 + }else{ + List yishengUuidNumber = new ArrayList<>(); + yishengUuidNumber.add(data.get(0)); // 要改的 + seachFields.put("yishengUuidNumber",yishengUuidNumber); + } + // 账户 + if(seachFields.containsKey("username")){ + List username = seachFields.get("username"); + username.add(data.get(0)); // 要改的 + }else{ + List username = new ArrayList<>(); + username.add(data.get(0)); // 要改的 + seachFields.put("username",username); + } + // 联系方式 + if(seachFields.containsKey("yishengPhone")){ + List yishengPhone = seachFields.get("yishengPhone"); + yishengPhone.add(data.get(0)); // 要改的 + }else{ + List yishengPhone = new ArrayList<>(); + yishengPhone.add(data.get(0)); // 要改的 + seachFields.put("yishengPhone",yishengPhone); + } } - //查询是否重复 - //医生工号 + // 查询是否重复 + // 医生工号 List yishengEntities_yishengUuidNumber = yishengService.selectList(new EntityWrapper().in("yisheng_uuid_number", seachFields.get("yishengUuidNumber"))); if(yishengEntities_yishengUuidNumber.size() >0 ){ ArrayList repeatFields = new ArrayList<>(); @@ -264,7 +243,7 @@ public class YishengController { } return R.error(511,"数据库的该表中的 [医生工号] 字段已经存在 存在数据为:"+repeatFields.toString()); } - //账户 + // 账户 List yishengEntities_username = yishengService.selectList(new EntityWrapper().in("username", seachFields.get("username"))); if(yishengEntities_username.size() >0 ){ ArrayList repeatFields = new ArrayList<>(); @@ -273,7 +252,7 @@ public class YishengController { } return R.error(511,"数据库的该表中的 [账户] 字段已经存在 存在数据为:"+repeatFields.toString()); } - //联系方式 + // 联系方式 List yishengEntities_yishengPhone = yishengService.selectList(new EntityWrapper().in("yisheng_phone", seachFields.get("yishengPhone"))); if(yishengEntities_yishengPhone.size() >0 ){ ArrayList repeatFields = new ArrayList<>(); @@ -282,60 +261,53 @@ public class YishengController { } return R.error(511,"数据库的该表中的 [联系方式] 字段已经存在 存在数据为:"+repeatFields.toString()); } - yishengService.insertBatch(yishengList); + yishengService.insertBatch(yishengList); // 批量插入 return R.ok(); } } } }catch (Exception e){ - return R.error(511,"批量插入数据异常,请联系管理员"); + return R.error(511,"批量插入数据异常,请联系管理员"); // 异常处理 } } - /** - * 登录 - */ + * 登录 + */ @IgnoreAuth @RequestMapping(value = "/login") public R login(String username, String password, String captcha, HttpServletRequest request) { - YishengEntity yisheng = yishengService.selectOne(new EntityWrapper().eq("username", username)); + YishengEntity yisheng = yishengService.selectOne(new EntityWrapper().eq("username", username)); // 根据用户名查询 if(yisheng==null || !yisheng.getPassword().equals(password)) - return R.error("账号或密码不正确"); - // // 获取监听器中的字典表 - // ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext(); - // Map> dictionaryMap= (Map>) servletContext.getAttribute("dictionaryMap"); - // Map role_types = dictionaryMap.get("role_types"); - // role_types.get(.getRoleTypes()); - String token = tokenService.generateToken(yisheng.getId(),username, "yisheng", "医生"); + return R.error("账号或密码不正确"); // 验证账号密码 + String token = tokenService.generateToken(yisheng.getId(),username, "yisheng", "医生"); // 生成token R r = R.ok(); - r.put("token", token); - r.put("role","医生"); - r.put("username",yisheng.getYishengName()); - r.put("tableName","yisheng"); - r.put("userId",yisheng.getId()); + r.put("token", token); // 返回token + r.put("role","医生"); // 返回角色 + r.put("username",yisheng.getYishengName()); // 返回医生姓名 + r.put("tableName","yisheng"); // 返回表名 + r.put("userId",yisheng.getId()); // 返回用户ID return r; } /** - * 注册 - */ + * 注册 + */ @IgnoreAuth @PostMapping(value = "/register") public R register(@RequestBody YishengEntity yisheng){ -// ValidatorUtils.validateEntity(user); + // 构建查询条件:用户名或手机号 Wrapper queryWrapper = new EntityWrapper() - .eq("username", yisheng.getUsername()) - .or() - .eq("yisheng_phone", yisheng.getYishengPhone()) - ; - YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); + .eq("username", yisheng.getUsername()) + .or() + .eq("yisheng_phone", yisheng.getYishengPhone()); + YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); // 查询是否已存在 if(yishengEntity != null) - return R.error("账户或者联系方式已经被使用"); - yisheng.setYishengNewMoney(0.0); - yisheng.setCreateTime(new Date()); - yishengService.insert(yisheng); - return R.ok(); + return R.error("账户或者联系方式已经被使用"); // 已存在返回错误 + yisheng.setYishengNewMoney(0.0); // 设置初始金额 + yisheng.setCreateTime(new Date()); // 设置创建时间 + yishengService.insert(yisheng); // 插入新医生 + return R.ok(); // 返回成功 } /** @@ -344,69 +316,63 @@ public class YishengController { @GetMapping(value = "/resetPassword") public R resetPassword(Integer id){ YishengEntity yisheng = new YishengEntity(); - yisheng.setPassword("123456"); + yisheng.setPassword("123456"); // 重置为默认密码 yisheng.setId(id); - yishengService.updateById(yisheng); - return R.ok(); + yishengService.updateById(yisheng); // 更新密码 + return R.ok(); // 返回成功 } - /** * 忘记密码 */ @IgnoreAuth @RequestMapping(value = "/resetPass") public R resetPass(String username, HttpServletRequest request) { - YishengEntity yisheng = yishengService.selectOne(new EntityWrapper().eq("username", username)); + YishengEntity yisheng = yishengService.selectOne(new EntityWrapper().eq("username", username)); // 根据用户名查询 if(yisheng!=null){ - yisheng.setPassword("123456"); - boolean b = yishengService.updateById(yisheng); + yisheng.setPassword("123456"); // 重置为默认密码 + boolean b = yishengService.updateById(yisheng); // 更新密码 if(!b){ - return R.error(); + return R.error(); // 更新失败 } }else{ - return R.error("账号不存在"); + return R.error("账号不存在"); // 账号不存在 } - return R.ok(); + return R.ok(); // 返回成功 } - /** - * 获取用户的session用户信息 - */ + * 获取用户的session用户信息 + */ @RequestMapping("/session") public R getCurrYisheng(HttpServletRequest request){ - Integer id = (Integer)request.getSession().getAttribute("userId"); - YishengEntity yisheng = yishengService.selectById(id); + Integer id = (Integer)request.getSession().getAttribute("userId"); // 获取session中的用户ID + YishengEntity yisheng = yishengService.selectById(id); // 查询用户信息 if(yisheng !=null){ //entity转view YishengView view = new YishengView(); - BeanUtils.copyProperties( yisheng , view );//把实体数据重构到view中 + BeanUtils.copyProperties( yisheng , view ); // 复制属性到view //修改对应字典表字段 - dictionaryService.dictionaryConvert(view, request); - return R.ok().put("data", view); + dictionaryService.dictionaryConvert(view, request); // 转换字典字段 + return R.ok().put("data", view); // 返回用户信息 }else { - return R.error(511,"查不到数据"); + return R.error(511,"查不到数据"); // 查询不到返回错误 } } - /** - * 退出 - */ + * 退出 + */ @GetMapping(value = "logout") public R logout(HttpServletRequest request) { - request.getSession().invalidate(); - return R.ok("退出成功"); + request.getSession().invalidate(); // 使session失效 + return R.ok("退出成功"); // 返回退出成功 } - - - /** - * 前端列表 - */ + * 前端列表 + */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map params, HttpServletRequest request){ @@ -416,60 +382,55 @@ public class YishengController { if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){ params.put("orderBy","id"); } - PageUtils page = yishengService.queryPage(params); + PageUtils page = yishengService.queryPage(params); // 分页查询 //字典表数据转换 List list =(List)page.getList(); for(YishengView c:list) - dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段 - return R.ok().put("data", page); + dictionaryService.dictionaryConvert(c, request); // 转换字典字段 + return R.ok().put("data", page); // 返回分页数据 } /** - * 前端详情 - */ + * 前端详情 + */ @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id); - YishengEntity yisheng = yishengService.selectById(id); - if(yisheng !=null){ - - - //entity转view - YishengView view = new YishengView(); - BeanUtils.copyProperties( yisheng , view );//把实体数据重构到view中 + YishengEntity yisheng = yishengService.selectById(id); // 根据ID查询 + if(yisheng !=null){ + //entity转view + YishengView view = new YishengView(); + BeanUtils.copyProperties( yisheng , view ); // 复制属性到view - //修改对应字典表字段 - dictionaryService.dictionaryConvert(view, request); - return R.ok().put("data", view); - }else { - return R.error(511,"查不到数据"); - } + //修改对应字典表字段 + dictionaryService.dictionaryConvert(view, request); // 转换字典字段 + return R.ok().put("data", view); // 返回详情 + }else { + return R.error(511,"查不到数据"); // 查询不到返回错误 + } } - /** - * 前端保存 - */ + * 前端保存 + */ @RequestMapping("/add") public R add(@RequestBody YishengEntity yisheng, HttpServletRequest request){ logger.debug("add方法:,,Controller:{},,yisheng:{}",this.getClass().getName(),yisheng.toString()); + // 构建查询条件:用户名或手机号 Wrapper queryWrapper = new EntityWrapper() - .eq("username", yisheng.getUsername()) - .or() - .eq("yisheng_phone", yisheng.getYishengPhone()) - ; + .eq("username", yisheng.getUsername()) + .or() + .eq("yisheng_phone", yisheng.getYishengPhone()); logger.info("sql语句:"+queryWrapper.getSqlSegment()); - YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); + YishengEntity yishengEntity = yishengService.selectOne(queryWrapper); // 查询是否已存在 if(yishengEntity==null){ - yisheng.setCreateTime(new Date()); - yisheng.setPassword("123456"); - yishengService.insert(yisheng); - return R.ok(); + yisheng.setCreateTime(new Date()); // 设置创建时间 + yisheng.setPassword("123456"); // 设置默认密码 + yishengService.insert(yisheng); // 插入新医生 + return R.ok(); // 返回成功 }else { - return R.error(511,"账户或者联系方式已经被使用"); + return R.error(511,"账户或者联系方式已经被使用"); // 已存在返回错误 } } - - -} +} \ No newline at end of file From 97b6cd9b4e92bbf41e6662c228448772117d257f Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:20:02 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/entity/YishengEntity.java | 390 +++++++++++--------- 1 file changed, 218 insertions(+), 172 deletions(-) diff --git a/src/main/java/com/entity/YishengEntity.java b/src/main/java/com/entity/YishengEntity.java index aabc27f..3f81dc6 100644 --- a/src/main/java/com/entity/YishengEntity.java +++ b/src/main/java/com/entity/YishengEntity.java @@ -21,397 +21,443 @@ import com.baomidou.mybatisplus.enums.FieldFill; import com.baomidou.mybatisplus.enums.IdType; /** - * 医生 + * 医生实体类,用于映射数据库中的医生信息表 + * 实现了 Serializable 接口,方便对象的序列化和反序列化 * - * @author - * @email + * @author 此处应填写作者姓名 + * @email 此处应填写作者邮箱 */ -@TableName("yisheng") +@TableName("yisheng") // 表明该实体类对应数据库中的表名为 "yisheng" public class YishengEntity implements Serializable { + // 序列化版本号,用于保证序列化和反序列化过程中对象版本的一致性 private static final long serialVersionUID = 1L; + /** + * 无参构造函数 + * 用于创建一个空的 YishengEntity 对象 + */ + public YishengEntity() { - public YishengEntity() { - - } - - public YishengEntity(T t) { - try { - BeanUtils.copyProperties(this, t); - } catch (IllegalAccessException | InvocationTargetException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } + } + /** + * 带参构造函数 + * 接收一个泛型对象 t,将其属性复制到当前 YishengEntity 对象中 + * + * @param t 泛型对象,其属性将被复制到当前对象 + */ + public YishengEntity(T t) { + try { + // 使用 BeanUtils 工具类将对象 t 的属性复制到当前对象 + BeanUtils.copyProperties(this, t); + } catch (IllegalAccessException | InvocationTargetException e) { + // 若复制属性过程中出现异常,打印异常堆栈信息 + e.printStackTrace(); + } + } /** * 主键 + * 数据库表中的唯一标识字段 */ - @TableId(type = IdType.AUTO) - @TableField(value = "id") - + @TableId(type = IdType.AUTO) // 表示该字段为主键,且采用自增方式生成 + @TableField(value = "id") // 表明该属性对应数据库表中的字段名为 "id" private Integer id; - /** * 医生工号 + * 用于唯一标识医生的编号 */ - @TableField(value = "yisheng_uuid_number") - + @TableField(value = "yisheng_uuid_number") // 表明该属性对应数据库表中的字段名为 "yisheng_uuid_number" private String yishengUuidNumber; - /** * 账户 + * 医生登录系统使用的账户名 */ - @TableField(value = "username") - + @TableField(value = "username") // 表明该属性对应数据库表中的字段名为 "username" private String username; - /** * 密码 + * 医生登录系统使用的密码 */ - @TableField(value = "password") - + @TableField(value = "password") // 表明该属性对应数据库表中的字段名为 "password" private String password; - /** * 医生名称 + * 医生的真实姓名 */ - @TableField(value = "yisheng_name") - + @TableField(value = "yisheng_name") // 表明该属性对应数据库表中的字段名为 "yisheng_name" private String yishengName; - /** * 科室 + * 医生所属的科室,用整数表示科室编号 */ - @TableField(value = "yisheng_types") - + @TableField(value = "yisheng_types") // 表明该属性对应数据库表中的字段名为 "yisheng_types" private Integer yishengTypes; - /** * 职位 + * 医生的职位,用整数表示职位编号 */ - @TableField(value = "zhiwei_types") - + @TableField(value = "zhiwei_types") // 表明该属性对应数据库表中的字段名为 "zhiwei_types" private Integer zhiweiTypes; - /** * 职称 + * 医生的职称信息 */ - @TableField(value = "yisheng_zhichneg") - + @TableField(value = "yisheng_zhichneg") // 表明该属性对应数据库表中的字段名为 "yisheng_zhichneg" private String yishengZhichneg; - /** * 医生头像 + * 医生头像的存储路径或链接 */ - @TableField(value = "yisheng_photo") - + @TableField(value = "yisheng_photo") // 表明该属性对应数据库表中的字段名为 "yisheng_photo" private String yishengPhoto; - /** * 联系方式 + * 医生的联系电话号码 */ - @TableField(value = "yisheng_phone") - + @TableField(value = "yisheng_phone") // 表明该属性对应数据库表中的字段名为 "yisheng_phone" private String yishengPhone; - /** * 挂号须知 + * 关于该医生挂号的相关注意事项 */ - @TableField(value = "yisheng_guahao") - + @TableField(value = "yisheng_guahao") // 表明该属性对应数据库表中的字段名为 "yisheng_guahao" private String yishengGuahao; - /** * 邮箱 + * 医生的电子邮箱地址 */ - @TableField(value = "yisheng_email") - + @TableField(value = "yisheng_email") // 表明该属性对应数据库表中的字段名为 "yisheng_email" private String yishengEmail; - /** * 挂号价格 + * 患者挂该医生号所需支付的费用 */ - @TableField(value = "yisheng_new_money") - + @TableField(value = "yisheng_new_money") // 表明该属性对应数据库表中的字段名为 "yisheng_new_money" private Double yishengNewMoney; - /** * 履历介绍 + * 医生的工作履历、专业技能等相关介绍信息 */ - @TableField(value = "yisheng_content") - + @TableField(value = "yisheng_content") // 表明该属性对应数据库表中的字段名为 "yisheng_content" private String yishengContent; - /** * 创建时间 + * 该医生信息在数据库中创建的时间 */ - @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") - @DateTimeFormat - @TableField(value = "create_time",fill = FieldFill.INSERT) - + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") // 用于将日期格式化为指定格式,方便前端展示 + @DateTimeFormat // 用于将前端传递的日期字符串解析为 Date 类型 + @TableField(value = "create_time",fill = FieldFill.INSERT) // 表明该属性对应数据库表中的字段名为 "create_time",且在插入数据时自动填充 private Date createTime; - /** - * 设置:主键 - */ + * 获取主键 + * + * @return 主键的值 + */ public Integer getId() { return id; } - /** - * 获取:主键 - */ - + * 设置主键 + * + * @param id 要设置的主键值 + */ public void setId(Integer id) { this.id = id; } + /** - * 设置:医生工号 - */ + * 获取医生工号 + * + * @return 医生工号的值 + */ public String getYishengUuidNumber() { return yishengUuidNumber; } - /** - * 获取:医生工号 - */ - + * 设置医生工号 + * + * @param yishengUuidNumber 要设置的医生工号值 + */ public void setYishengUuidNumber(String yishengUuidNumber) { this.yishengUuidNumber = yishengUuidNumber; } + /** - * 设置:账户 - */ + * 获取账户 + * + * @return 账户的值 + */ public String getUsername() { return username; } - /** - * 获取:账户 - */ - + * 设置账户 + * + * @param username 要设置的账户值 + */ public void setUsername(String username) { this.username = username; } + /** - * 设置:密码 - */ + * 获取密码 + * + * @return 密码的值 + */ public String getPassword() { return password; } - /** - * 获取:密码 - */ - + * 设置密码 + * + * @param password 要设置的密码值 + */ public void setPassword(String password) { this.password = password; } + /** - * 设置:医生名称 - */ + * 获取医生名称 + * + * @return 医生名称的值 + */ public String getYishengName() { return yishengName; } - /** - * 获取:医生名称 - */ - + * 设置医生名称 + * + * @param yishengName 要设置的医生名称值 + */ public void setYishengName(String yishengName) { this.yishengName = yishengName; } + /** - * 设置:科室 - */ + * 获取科室 + * + * @return 科室的值 + */ public Integer getYishengTypes() { return yishengTypes; } - /** - * 获取:科室 - */ - + * 设置科室 + * + * @param yishengTypes 要设置的科室值 + */ public void setYishengTypes(Integer yishengTypes) { this.yishengTypes = yishengTypes; } + /** - * 设置:职位 - */ + * 获取职位 + * + * @return 职位的值 + */ public Integer getZhiweiTypes() { return zhiweiTypes; } - /** - * 获取:职位 - */ - + * 设置职位 + * + * @param zhiweiTypes 要设置的职位值 + */ public void setZhiweiTypes(Integer zhiweiTypes) { this.zhiweiTypes = zhiweiTypes; } + /** - * 设置:职称 - */ + * 获取职称 + * + * @return 职称的值 + */ public String getYishengZhichneg() { return yishengZhichneg; } - /** - * 获取:职称 - */ - + * 设置职称 + * + * @param yishengZhichneg 要设置的职称值 + */ public void setYishengZhichneg(String yishengZhichneg) { this.yishengZhichneg = yishengZhichneg; } + /** - * 设置:医生头像 - */ + * 获取医生头像 + * + * @return 医生头像的值 + */ public String getYishengPhoto() { return yishengPhoto; } - /** - * 获取:医生头像 - */ - + * 设置医生头像 + * + * @param yishengPhoto 要设置的医生头像值 + */ public void setYishengPhoto(String yishengPhoto) { this.yishengPhoto = yishengPhoto; } + /** - * 设置:联系方式 - */ + * 获取联系方式 + * + * @return 联系方式的值 + */ public String getYishengPhone() { return yishengPhone; } - /** - * 获取:联系方式 - */ - + * 设置联系方式 + * + * @param yishengPhone 要设置的联系方式值 + */ public void setYishengPhone(String yishengPhone) { this.yishengPhone = yishengPhone; } + /** - * 设置:挂号须知 - */ + * 获取挂号须知 + * + * @return 挂号须知的值 + */ public String getYishengGuahao() { return yishengGuahao; } - /** - * 获取:挂号须知 - */ - + * 设置挂号须知 + * + * @param yishengGuahao 要设置的挂号须知值 + */ public void setYishengGuahao(String yishengGuahao) { this.yishengGuahao = yishengGuahao; } + /** - * 设置:邮箱 - */ + * 获取邮箱 + * + * @return 邮箱的值 + */ public String getYishengEmail() { return yishengEmail; } - /** - * 获取:邮箱 - */ - + * 设置邮箱 + * + * @param yishengEmail 要设置的邮箱值 + */ public void setYishengEmail(String yishengEmail) { this.yishengEmail = yishengEmail; } + /** - * 设置:挂号价格 - */ + * 获取挂号价格 + * + * @return 挂号价格的值 + */ public Double getYishengNewMoney() { return yishengNewMoney; } - /** - * 获取:挂号价格 - */ - + * 设置挂号价格 + * + * @param yishengNewMoney 要设置的挂号价格值 + */ public void setYishengNewMoney(Double yishengNewMoney) { this.yishengNewMoney = yishengNewMoney; } + /** - * 设置:履历介绍 - */ + * 获取履历介绍 + * + * @return 履历介绍的值 + */ public String getYishengContent() { return yishengContent; } - /** - * 获取:履历介绍 - */ - + * 设置履历介绍 + * + * @param yishengContent 要设置的履历介绍值 + */ public void setYishengContent(String yishengContent) { this.yishengContent = yishengContent; } + /** - * 设置:创建时间 - */ + * 获取创建时间 + * + * @return 创建时间的值 + */ public Date getCreateTime() { return createTime; } - /** - * 获取:创建时间 - */ - + * 设置创建时间 + * + * @param createTime 要设置的创建时间值 + */ public void setCreateTime(Date createTime) { this.createTime = createTime; } + /** + * 重写 toString 方法 + * 用于将对象的属性以字符串形式输出,方便调试和日志记录 + * + * @return 包含对象属性信息的字符串 + */ @Override public String toString() { return "Yisheng{" + - "id=" + id + - ", yishengUuidNumber=" + yishengUuidNumber + - ", username=" + username + - ", password=" + password + - ", yishengName=" + yishengName + - ", yishengTypes=" + yishengTypes + - ", zhiweiTypes=" + zhiweiTypes + - ", yishengZhichneg=" + yishengZhichneg + - ", yishengPhoto=" + yishengPhoto + - ", yishengPhone=" + yishengPhone + - ", yishengGuahao=" + yishengGuahao + - ", yishengEmail=" + yishengEmail + - ", yishengNewMoney=" + yishengNewMoney + - ", yishengContent=" + yishengContent + - ", createTime=" + createTime + - "}"; - } -} + "id=" + id + + ", yishengUuidNumber=" + yishengUuidNumber + + ", username=" + username + + ", password=" + password + + ", yishengName=" + yishengName + + ", yishengTypes=" + yishengTypes + + ", zhiweiTypes=" + zhiweiTypes + + ", yishengZhichneg=" + yishengZhichneg + + ", yishengPhoto=" + yishengPhoto + + ", yishengPhone=" + yishengPhone + + ", yishengGuahao=" + yishengGuahao + + ", yishengEmail=" + yishengEmail + + ", yishengNewMoney=" + yishengNewMoney + + ", yishengContent=" + yishengContent + + ", createTime=" + createTime + + "}"; + } +} \ No newline at end of file From 423ad0b7bbf5f4be22897df9bf84c4b48534c714 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:34:49 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/entity/model/YishengModel.java | 229 +++++------------- 1 file changed, 55 insertions(+), 174 deletions(-) diff --git a/src/main/java/com/entity/model/YishengModel.java b/src/main/java/com/entity/model/YishengModel.java index 9d4ea1b..029644d 100644 --- a/src/main/java/com/entity/model/YishengModel.java +++ b/src/main/java/com/entity/model/YishengModel.java @@ -8,7 +8,6 @@ import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; - /** * 医生 * 接收传参的实体类 @@ -16,312 +15,194 @@ import java.io.Serializable; * 取自ModelAndView 的model名称 */ public class YishengModel implements Serializable { - private static final long serialVersionUID = 1L; - - - + private static final long serialVersionUID = 1L; // 序列化版本UID,用于版本控制 /** * 主键 */ private Integer id; - /** * 医生工号 */ private String yishengUuidNumber; - /** * 账户 */ private String username; - /** * 密码 */ private String password; - /** * 医生名称 */ private String yishengName; - /** * 科室 + * 使用Integer类型存储,对应字典表中的科室编码 */ private Integer yishengTypes; - /** * 职位 + * 使用Integer类型存储,对应字典表中的职位编码 */ private Integer zhiweiTypes; - /** * 职称 */ private String yishengZhichneg; - /** * 医生头像 + * 存储头像图片的路径或URL */ private String yishengPhoto; - /** * 联系方式 */ private String yishengPhone; - /** * 挂号须知 + * 存储医生挂号的相关注意事项 */ private String yishengGuahao; - /** * 邮箱 */ private String yishengEmail; - /** * 挂号价格 */ private Double yishengNewMoney; - /** * 履历介绍 + * 存储医生的详细履历信息 */ private String yishengContent; - /** * 创建时间 show1 show2 photoShow + * 使用@JsonFormat和@DateTimeFormat注解进行日期格式化 */ @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") - @DateTimeFormat + @DateTimeFormat private Date createTime; - /** - * 获取:主键 - */ + * 获取主键ID + * @return 主键ID + */ public Integer getId() { return id; } - /** - * 设置:主键 - */ + * 设置主键ID + * @param id 主键ID + */ public void setId(Integer id) { this.id = id; } + /** - * 获取:医生工号 - */ + * 获取医生工号 + * @return 医生工号 + */ public String getYishengUuidNumber() { return yishengUuidNumber; } - /** - * 设置:医生工号 - */ + * 设置医生工号 + * @param yishengUuidNumber 医生工号 + */ public void setYishengUuidNumber(String yishengUuidNumber) { this.yishengUuidNumber = yishengUuidNumber; } + /** - * 获取:账户 - */ + * 获取账户名 + * @return 账户名 + */ public String getUsername() { return username; } - /** - * 设置:账户 - */ + * 设置账户名 + * @param username 账户名 + */ public void setUsername(String username) { this.username = username; } + /** - * 获取:密码 - */ + * 获取密码 + * @return 密码 + */ public String getPassword() { return password; } - /** - * 设置:密码 - */ + * 设置密码 + * @param password 密码 + */ public void setPassword(String password) { this.password = password; } + /** - * 获取:医生名称 - */ + * 获取医生姓名 + * @return 医生姓名 + */ public String getYishengName() { return yishengName; } - /** - * 设置:医生名称 - */ + * 设置医生姓名 + * @param yishengName 医生姓名 + */ public void setYishengName(String yishengName) { this.yishengName = yishengName; } + /** - * 获取:科室 - */ + * 获取科室类型 + * @return 科室类型编码 + */ public Integer getYishengTypes() { return yishengTypes; } - /** - * 设置:科室 - */ + * 设置科室类型 + * @param yishengTypes 科室类型编码 + */ public void setYishengTypes(Integer yishengTypes) { this.yishengTypes = yishengTypes; } + /** - * 获取:职位 - */ + * 获取职位类型 + * @return 职位类型编码 + */ public Integer getZhiweiTypes() { return zhiweiTypes; } - - /** - * 设置:职位 - */ - public void setZhiweiTypes(Integer zhiweiTypes) { - this.zhiweiTypes = zhiweiTypes; - } - /** - * 获取:职称 - */ - public String getYishengZhichneg() { - return yishengZhichneg; - } - - - /** - * 设置:职称 - */ - public void setYishengZhichneg(String yishengZhichneg) { - this.yishengZhichneg = yishengZhichneg; - } - /** - * 获取:医生头像 - */ - public String getYishengPhoto() { - return yishengPhoto; - } - - - /** - * 设置:医生头像 - */ - public void setYishengPhoto(String yishengPhoto) { - this.yishengPhoto = yishengPhoto; - } - /** - * 获取:联系方式 - */ - public String getYishengPhone() { - return yishengPhone; - } - - - /** - * 设置:联系方式 - */ - public void setYishengPhone(String yishengPhone) { - this.yishengPhone = yishengPhone; - } - /** - * 获取:挂号须知 - */ - public String getYishengGuahao() { - return yishengGuahao; - } - - - /** - * 设置:挂号须知 - */ - public void setYishengGuahao(String yishengGuahao) { - this.yishengGuahao = yishengGuahao; - } - /** - * 获取:邮箱 - */ - public String getYishengEmail() { - return yishengEmail; - } - - - /** - * 设置:邮箱 - */ - public void setYishengEmail(String yishengEmail) { - this.yishengEmail = yishengEmail; - } - /** - * 获取:挂号价格 - */ - public Double getYishengNewMoney() { - return yishengNewMoney; - } - - - /** - * 设置:挂号价格 - */ - public void setYishengNewMoney(Double yishengNewMoney) { - this.yishengNewMoney = yishengNewMoney; - } - /** - * 获取:履历介绍 - */ - public String getYishengContent() { - return yishengContent; - } - - - /** - * 设置:履历介绍 - */ - public void setYishengContent(String yishengContent) { - this.yishengContent = yishengContent; - } - /** - * 获取:创建时间 show1 show2 photoShow - */ - public Date getCreateTime() { - return createTime; - } - - - /** - * 设置:创建时间 show1 show2 photoShow - */ - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - } +/** + * 设置职位类型 \ No newline at end of file From cd4b7734df310c3522acc42baf93c77a58b9f694 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:37:58 +0800 Subject: [PATCH 05/23] 3 --- .../java/com/entity/model/YishengModel.java | 138 +++++++++++++++++- 1 file changed, 136 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/entity/model/YishengModel.java b/src/main/java/com/entity/model/YishengModel.java index 029644d..97f4014 100644 --- a/src/main/java/com/entity/model/YishengModel.java +++ b/src/main/java/com/entity/model/YishengModel.java @@ -204,5 +204,139 @@ public class YishengModel implements Serializable { return zhiweiTypes; } -/** - * 设置职位类型 \ No newline at end of file + /** + * 设置职位类型 + * @param zhiweiTypes 职位类型编码 + */ + public void setZhiweiTypes(Integer zhiweiTypes) { + this.zhiweiTypes = zhiweiTypes; + } + + /** + * 获取职称 + * @return 职称 + */ + public String getYishengZhichneg() { + return yishengZhichneg; + } + + /** + * 设置职称 + * @param yishengZhichneg 职称 + */ + public void setYishengZhichneg(String yishengZhichneg) { + this.yishengZhichneg = yishengZhichneg; + } + + /** + * 获取医生头像路径 + * @return 头像路径 + */ + public String getYishengPhoto() { + return yishengPhoto; + } + + /** + * 设置医生头像路径 + * @param yishengPhoto 头像路径 + */ + public void setYishengPhoto(String yishengPhoto) { + this.yishengPhoto = yishengPhoto; + } + + /** + * 获取联系方式 + * @return 联系方式 + */ + public String getYishengPhone() { + return yishengPhone; + } + + /** + * 设置联系方式 + * @param yishengPhone 联系方式 + */ + public void setYishengPhone(String yishengPhone) { + this.yishengPhone = yishengPhone; + } + + /** + * 获取挂号须知 + * @return 挂号须知内容 + */ + public String getYishengGuahao() { + return yishengGuahao; + } + + /** + * 设置挂号须知 + * @param yishengGuahao 挂号须知内容 + */ + public void setYishengGuahao(String yishengGuahao) { + this.yishengGuahao = yishengGuahao; + } + + /** + * 获取邮箱 + * @return 邮箱地址 + */ + public String getYishengEmail() { + return yishengEmail; + } + + /** + * 设置邮箱 + * @param yishengEmail 邮箱地址 + */ + public void setYishengEmail(String yishengEmail) { + this.yishengEmail = yishengEmail; + } + + /** + * 获取挂号价格 + * @return 挂号价格 + */ + public Double getYishengNewMoney() { + return yishengNewMoney; + } + + /** + * 设置挂号价格 + * @param yishengNewMoney 挂号价格 + */ + public void setYishengNewMoney(Double yishengNewMoney) { + this.yishengNewMoney = yishengNewMoney; + } + + /** + * 获取履历介绍 + * @return 履历介绍内容 + */ + public String getYishengContent() { + return yishengContent; + } + + /** + * 设置履历介绍 + * @param yishengContent 履历介绍内容 + */ + public void setYishengContent(String yishengContent) { + this.yishengContent = yishengContent; + } + + /** + * 获取创建时间 + * @return 创建时间 + */ + public Date getCreateTime() { + return createTime; + } + + /** + * 设置创建时间 + * @param createTime 创建时间 + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } +} \ No newline at end of file From 97de1966be805f3cd9a25556a216c6e37c6f6dd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=A0=C3=A7=C2=9Acqq?= <你的2870787453@qq.com> Date: Mon, 28 Apr 2025 21:41:01 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/controller/YonghuController.java | 326 +++++++++--------- 1 file changed, 161 insertions(+), 165 deletions(-) diff --git a/src/main/java/com/controller/YonghuController.java b/src/main/java/com/controller/YonghuController.java index c1adf4e..472a731 100644 --- a/src/main/java/com/controller/YonghuController.java +++ b/src/main/java/com/controller/YonghuController.java @@ -1,4 +1,3 @@ - package com.controller; import java.io.File; @@ -33,11 +32,11 @@ import com.utils.R; import com.alibaba.fastjson.*; /** - * 用户 + * 用户控制器 * 后端接口 * @author * @email -*/ + */ @RestController @Controller @RequestMapping("/yonghu") @@ -45,72 +44,80 @@ public class YonghuController { private static final Logger logger = LoggerFactory.getLogger(YonghuController.class); @Autowired - private YonghuService yonghuService; - + private YonghuService yonghuService; // 用户服务 @Autowired - private TokenService tokenService; + private TokenService tokenService; // token服务 @Autowired - private DictionaryService dictionaryService; + private DictionaryService dictionaryService; // 字典服务 //级联表service @Autowired - private YishengService yishengService; - + private YishengService yishengService; // 医生服务 /** - * 后端列表 - */ + * 后端列表 + * 分页查询用户数据 + */ @RequestMapping("/page") public R page(@RequestParam Map params, HttpServletRequest request){ logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); String role = String.valueOf(request.getSession().getAttribute("role")); + // 权限控制 if(false) return R.error(511,"永不会进入"); else if("用户".equals(role)) - params.put("yonghuId",request.getSession().getAttribute("userId")); + params.put("yonghuId",request.getSession().getAttribute("userId")); // 如果是用户角色,只查询自己的数据 else if("医生".equals(role)) - params.put("yishengId",request.getSession().getAttribute("userId")); + params.put("yishengId",request.getSession().getAttribute("userId")); // 如果是医生角色,添加医生ID参数 + + // 设置查询未删除的用户(删除状态为1表示未删除) params.put("yonghuDeleteStart",1);params.put("yonghuDeleteEnd",1); + + // 默认按id排序 if(params.get("orderBy")==null || params.get("orderBy")==""){ params.put("orderBy","id"); } + + // 调用服务层查询分页数据 PageUtils page = yonghuService.queryPage(params); - //字典表数据转换 + // 字典表数据转换 List list =(List)page.getList(); for(YonghuView c:list){ - //修改对应字典表字段 + // 修改对应字典表字段 dictionaryService.dictionaryConvert(c, request); } return R.ok().put("data", page); } /** - * 后端详情 - */ + * 后端详情 + * 根据ID查询用户详情 + */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id); + // 根据ID查询用户 YonghuEntity yonghu = yonghuService.selectById(id); if(yonghu !=null){ - //entity转view + // entity转view YonghuView view = new YonghuView(); BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中 - //修改对应字典表字段 + // 修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } - } /** - * 后端保存 - */ + * 后端保存 + * 新增用户 + */ @RequestMapping("/save") public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString()); @@ -119,23 +126,24 @@ public class YonghuController { if(false) return R.error(511,"永远不会进入"); + // 构建查询条件:检查用户名、手机号、身份证号是否已存在 Wrapper queryWrapper = new EntityWrapper() - .eq("username", yonghu.getUsername()) - .or() - .eq("yonghu_phone", yonghu.getYonghuPhone()) - .or() - .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) - .andNew() - .eq("yonghu_delete", 1) - ; + .eq("username", yonghu.getUsername()) + .or() + .eq("yonghu_phone", yonghu.getYonghuPhone()) + .or() + .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) + .andNew() + .eq("yonghu_delete", 1) // 未删除的用户 + ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper); if(yonghuEntity==null){ - yonghu.setYonghuDelete(1); - yonghu.setCreateTime(new Date()); - yonghu.setPassword("123456"); - yonghuService.insert(yonghu); + yonghu.setYonghuDelete(1); // 设置未删除状态 + yonghu.setCreateTime(new Date()); // 设置创建时间 + yonghu.setPassword("123456"); // 设置默认密码 + yonghuService.insert(yonghu); // 插入新用户 return R.ok(); }else { return R.error(511,"账户或者用户手机号或者用户身份证号已经被使用"); @@ -143,32 +151,32 @@ public class YonghuController { } /** - * 后端修改 - */ + * 后端修改 + * 更新用户信息 + */ @RequestMapping("/update") public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){ logger.debug("update方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString()); String role = String.valueOf(request.getSession().getAttribute("role")); -// if(false) -// return R.error(511,"永远不会进入"); - //根据字段查询是否有相同数据 + // 构建查询条件:检查其他用户是否已使用要修改的用户名、手机号或身份证号 Wrapper queryWrapper = new EntityWrapper() - .notIn("id",yonghu.getId()) - .andNew() - .eq("username", yonghu.getUsername()) - .or() - .eq("yonghu_phone", yonghu.getYonghuPhone()) - .or() - .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) - .andNew() - .eq("yonghu_delete", 1) - ; + .notIn("id",yonghu.getId()) // 排除当前用户 + .andNew() + .eq("username", yonghu.getUsername()) + .or() + .eq("yonghu_phone", yonghu.getYonghuPhone()) + .or() + .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) + .andNew() + .eq("yonghu_delete", 1) // 未删除的用户 + ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper); + // 处理空照片 if("".equals(yonghu.getYonghuPhoto()) || "null".equals(yonghu.getYonghuPhoto())){ - yonghu.setYonghuPhoto(null); + yonghu.setYonghuPhoto(null); } if(yonghuEntity==null){ yonghuService.updateById(yonghu);//根据id更新 @@ -179,8 +187,9 @@ public class YonghuController { } /** - * 删除 - */ + * 删除 + * 逻辑删除用户(将删除状态设为2) + */ @RequestMapping("/delete") public R delete(@RequestBody Integer[] ids){ logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString()); @@ -188,18 +197,18 @@ public class YonghuController { for(Integer id:ids){ YonghuEntity yonghuEntity = new YonghuEntity(); yonghuEntity.setId(id); - yonghuEntity.setYonghuDelete(2); + yonghuEntity.setYonghuDelete(2); // 设置删除状态为2 list.add(yonghuEntity); } if(list != null && list.size() >0){ - yonghuService.updateBatchById(list); + yonghuService.updateBatchById(list); // 批量更新 } return R.ok(); } - /** * 批量上传 + * 通过Excel批量导入用户数据 */ @RequestMapping("/batchInsert") public R save( String fileName){ @@ -226,52 +235,41 @@ public class YonghuController { for(List data:dataList){ //循环 YonghuEntity yonghuEntity = new YonghuEntity(); -// yonghuEntity.setUsername(data.get(0)); //账户 要改的 -// //yonghuEntity.setPassword("123456");//密码 -// yonghuEntity.setYonghuName(data.get(0)); //用户姓名 要改的 -// yonghuEntity.setYonghuPhoto("");//照片 -// yonghuEntity.setYonghuPhone(data.get(0)); //用户手机号 要改的 -// yonghuEntity.setYonghuIdNumber(data.get(0)); //用户身份证号 要改的 -// yonghuEntity.setYonghuEmail(data.get(0)); //邮箱 要改的 -// yonghuEntity.setSexTypes(Integer.valueOf(data.get(0))); //性别 要改的 -// yonghuEntity.setNewMoney(data.get(0)); //余额 要改的 -// yonghuEntity.setYonghuDelete(1);//逻辑删除字段 -// yonghuEntity.setCreateTime(date);//时间 + // 这里注释掉的代码是示例,实际应该根据Excel列映射字段 yonghuList.add(yonghuEntity); - //把要查询是否重复的字段放入map中 - //账户 - if(seachFields.containsKey("username")){ - List username = seachFields.get("username"); - username.add(data.get(0));//要改的 - }else{ - List username = new ArrayList<>(); - username.add(data.get(0));//要改的 - seachFields.put("username",username); - } - //用户手机号 - if(seachFields.containsKey("yonghuPhone")){ - List yonghuPhone = seachFields.get("yonghuPhone"); - yonghuPhone.add(data.get(0));//要改的 - }else{ - List yonghuPhone = new ArrayList<>(); - yonghuPhone.add(data.get(0));//要改的 - seachFields.put("yonghuPhone",yonghuPhone); - } - //用户身份证号 - if(seachFields.containsKey("yonghuIdNumber")){ - List yonghuIdNumber = seachFields.get("yonghuIdNumber"); - yonghuIdNumber.add(data.get(0));//要改的 - }else{ - List yonghuIdNumber = new ArrayList<>(); - yonghuIdNumber.add(data.get(0));//要改的 - seachFields.put("yonghuIdNumber",yonghuIdNumber); - } + //账户 + if(seachFields.containsKey("username")){ + List username = seachFields.get("username"); + username.add(data.get(0));//要改的 + }else{ + List username = new ArrayList<>(); + username.add(data.get(0));//要改的 + seachFields.put("username",username); + } + //用户手机号 + if(seachFields.containsKey("yonghuPhone")){ + List yonghuPhone = seachFields.get("yonghuPhone"); + yonghuPhone.add(data.get(0));//要改的 + }else{ + List yonghuPhone = new ArrayList<>(); + yonghuPhone.add(data.get(0));//要改的 + seachFields.put("yonghuPhone",yonghuPhone); + } + //用户身份证号 + if(seachFields.containsKey("yonghuIdNumber")){ + List yonghuIdNumber = seachFields.get("yonghuIdNumber"); + yonghuIdNumber.add(data.get(0));//要改的 + }else{ + List yonghuIdNumber = new ArrayList<>(); + yonghuIdNumber.add(data.get(0));//要改的 + seachFields.put("yonghuIdNumber",yonghuIdNumber); + } } //查询是否重复 - //账户 + //账户 List yonghuEntities_username = yonghuService.selectList(new EntityWrapper().in("username", seachFields.get("username")).eq("yonghu_delete", 1)); if(yonghuEntities_username.size() >0 ){ ArrayList repeatFields = new ArrayList<>(); @@ -280,7 +278,7 @@ public class YonghuController { } return R.error(511,"数据库的该表中的 [账户] 字段已经存在 存在数据为:"+repeatFields.toString()); } - //用户手机号 + //用户手机号 List yonghuEntities_yonghuPhone = yonghuService.selectList(new EntityWrapper().in("yonghu_phone", seachFields.get("yonghuPhone")).eq("yonghu_delete", 1)); if(yonghuEntities_yonghuPhone.size() >0 ){ ArrayList repeatFields = new ArrayList<>(); @@ -289,7 +287,7 @@ public class YonghuController { } return R.error(511,"数据库的该表中的 [用户手机号] 字段已经存在 存在数据为:"+repeatFields.toString()); } - //用户身份证号 + //用户身份证号 List yonghuEntities_yonghuIdNumber = yonghuService.selectList(new EntityWrapper().in("yonghu_id_number", seachFields.get("yonghuIdNumber")).eq("yonghu_delete", 1)); if(yonghuEntities_yonghuIdNumber.size() >0 ){ ArrayList repeatFields = new ArrayList<>(); @@ -308,23 +306,21 @@ public class YonghuController { } } - /** - * 登录 - */ + * 登录 + * 用户登录接口 + */ @IgnoreAuth @RequestMapping(value = "/login") public R login(String username, String password, String captcha, HttpServletRequest request) { + // 根据用户名查询用户 YonghuEntity yonghu = yonghuService.selectOne(new EntityWrapper().eq("username", username)); if(yonghu==null || !yonghu.getPassword().equals(password)) return R.error("账号或密码不正确"); else if(yonghu.getYonghuDelete() != 1) return R.error("账户已被删除"); - // // 获取监听器中的字典表 - // ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext(); - // Map> dictionaryMap= (Map>) servletContext.getAttribute("dictionaryMap"); - // Map role_types = dictionaryMap.get("role_types"); - // role_types.get(.getRoleTypes()); + + // 生成token String token = tokenService.generateToken(yonghu.getId(),username, "yonghu", "用户"); R r = R.ok(); r.put("token", token); @@ -336,24 +332,27 @@ public class YonghuController { } /** - * 注册 - */ + * 注册 + * 用户注册接口 + */ @IgnoreAuth @PostMapping(value = "/register") public R register(@RequestBody YonghuEntity yonghu){ -// ValidatorUtils.validateEntity(user); + // 检查用户名、手机号、身份证号是否已存在 Wrapper queryWrapper = new EntityWrapper() - .eq("username", yonghu.getUsername()) - .or() - .eq("yonghu_phone", yonghu.getYonghuPhone()) - .or() - .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) - .andNew() - .eq("yonghu_delete", 1) - ; + .eq("username", yonghu.getUsername()) + .or() + .eq("yonghu_phone", yonghu.getYonghuPhone()) + .or() + .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) + .andNew() + .eq("yonghu_delete", 1) + ; YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper); if(yonghuEntity != null) return R.error("账户或者用户手机号或者用户身份证号已经被使用"); + + // 设置默认值 yonghu.setNewMoney(0.0); yonghu.setYonghuDelete(1); yonghu.setCreateTime(new Date()); @@ -363,40 +362,41 @@ public class YonghuController { /** * 重置密码 + * 将用户密码重置为默认值123456 */ @GetMapping(value = "/resetPassword") public R resetPassword(Integer id){ YonghuEntity yonghu = new YonghuEntity(); - yonghu.setPassword("123456"); + yonghu.setPassword("123456"); // 设置默认密码 yonghu.setId(id); yonghuService.updateById(yonghu); return R.ok(); } - /** * 忘记密码 + * 通过用户名重置密码 */ @IgnoreAuth @RequestMapping(value = "/resetPass") public R resetPass(String username, HttpServletRequest request) { YonghuEntity yonghu = yonghuService.selectOne(new EntityWrapper().eq("username", username)); if(yonghu!=null){ - yonghu.setPassword("123456"); + yonghu.setPassword("123456"); // 重置为默认密码 boolean b = yonghuService.updateById(yonghu); if(!b){ - return R.error(); + return R.error(); } }else{ - return R.error("账号不存在"); + return R.error("账号不存在"); } return R.ok(); } - /** - * 获取用户的session用户信息 - */ + * 获取用户的session用户信息 + * 获取当前登录用户的信息 + */ @RequestMapping("/session") public R getCurrYonghu(HttpServletRequest request){ Integer id = (Integer)request.getSession().getAttribute("userId"); @@ -414,22 +414,20 @@ public class YonghuController { } } - /** - * 退出 - */ + * 退出 + * 用户注销登录 + */ @GetMapping(value = "logout") public R logout(HttpServletRequest request) { - request.getSession().invalidate(); + request.getSession().invalidate(); // 使session失效 return R.ok("退出成功"); } - - - /** - * 前端列表 - */ + * 前端列表 + * 提供给前端使用的用户列表接口 + */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map params, HttpServletRequest request){ @@ -449,55 +447,53 @@ public class YonghuController { } /** - * 前端详情 - */ + * 前端详情 + * 提供给前端使用的用户详情接口 + */ @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id); YonghuEntity yonghu = yonghuService.selectById(id); - if(yonghu !=null){ - - - //entity转view - YonghuView view = new YonghuView(); - BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中 + if(yonghu !=null){ + //entity转view + YonghuView view = new YonghuView(); + BeanUtils.copyProperties( yonghu , view );//把实体数据重构到view中 - //修改对应字典表字段 - dictionaryService.dictionaryConvert(view, request); - return R.ok().put("data", view); - }else { - return R.error(511,"查不到数据"); - } + //修改对应字典表字段 + dictionaryService.dictionaryConvert(view, request); + return R.ok().put("data", view); + }else { + return R.error(511,"查不到数据"); + } } - /** - * 前端保存 - */ + * 前端保存 + * 提供给前端使用的用户新增接口 + */ @RequestMapping("/add") public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){ logger.debug("add方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString()); + // 检查用户名、手机号、身份证号是否已存在 Wrapper queryWrapper = new EntityWrapper() - .eq("username", yonghu.getUsername()) - .or() - .eq("yonghu_phone", yonghu.getYonghuPhone()) - .or() - .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) - .andNew() - .eq("yonghu_delete", 1) - ; + .eq("username", yonghu.getUsername()) + .or() + .eq("yonghu_phone", yonghu.getYonghuPhone()) + .or() + .eq("yonghu_id_number", yonghu.getYonghuIdNumber()) + .andNew() + .eq("yonghu_delete", 1) + ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper); if(yonghuEntity==null){ - yonghu.setYonghuDelete(1); - yonghu.setCreateTime(new Date()); - yonghu.setPassword("123456"); - yonghuService.insert(yonghu); + yonghu.setYonghuDelete(1); // 设置未删除状态 + yonghu.setCreateTime(new Date()); // 设置创建时间 + yonghu.setPassword("123456"); // 设置默认密码 + yonghuService.insert(yonghu); return R.ok(); }else { return R.error(511,"账户或者用户手机号或者用户身份证号已经被使用"); } } - - -} +} \ No newline at end of file From 65d97709e360b43ab8510dd3a4ee18382be09d09 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:44:35 +0800 Subject: [PATCH 07/23] 4 --- .../com/service/impl/YishengServiceImpl.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/service/impl/YishengServiceImpl.java b/src/main/java/com/service/impl/YishengServiceImpl.java index cd443ec..9e3454d 100644 --- a/src/main/java/com/service/impl/YishengServiceImpl.java +++ b/src/main/java/com/service/impl/YishengServiceImpl.java @@ -19,21 +19,36 @@ import com.entity.view.YishengView; /** * 医生 服务实现类 + * 该类实现了 YishengService 接口,用于处理医生相关业务逻辑,继承自 MyBatis-Plus 的 ServiceImpl 类 */ -@Service("yishengService") -@Transactional +@Service("yishengService") // 声明这是一个 Spring 服务组件,名称为 "yishengService" +@Transactional // 开启事务管理,确保数据库操作的原子性 public class YishengServiceImpl extends ServiceImpl implements YishengService { + /** + * 分页查询医生信息 + * + * @param params 包含分页和查询条件的参数映射,可能包含 "page"(页码)、"limit"(每页记录数)等信息 + * @return 返回封装好的分页信息对象 PageUtils + */ @Override - public PageUtils queryPage(Map params) { - if(params != null && (params.get("limit") == null || params.get("page") == null)){ - params.put("page","1"); - params.put("limit","10"); + public PageUtils queryPage(Map params) { + // 检查参数是否为空,并且判断是否缺少 "limit" 或 "page" 参数 + if (params != null && (params.get("limit") == null || params.get("page") == null)) { + // 如果缺少 "page" 参数,将其默认设置为 "1",表示第一页 + params.put("page", "1"); + // 如果缺少 "limit" 参数,将其默认设置为 "10",表示每页显示 10 条记录 + params.put("limit", "10"); } - Page page =new Query(params).getPage(); - page.setRecords(baseMapper.selectListView(page,params)); - return new PageUtils(page); - } + // 根据传入的参数创建一个分页对象 Page,用于存储查询结果 + Page page = new Query(params).getPage(); + + // 调用 baseMapper(即 YishengDao)的 selectListView 方法,根据分页对象和查询参数进行分页查询 + // 并将查询结果记录设置到分页对象中 + page.setRecords(baseMapper.selectListView(page, params)); -} + // 将分页对象封装到 PageUtils 中,方便返回给调用者 + return new PageUtils(page); + } +} \ No newline at end of file From 3edc64b6ee53cd939f098e16a3e6b34f02f84c23 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:46:03 +0800 Subject: [PATCH 08/23] 5 --- .../java/com/entity/view/YishengView.java | 111 ++++++++++-------- 1 file changed, 62 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/entity/view/YishengView.java b/src/main/java/com/entity/view/YishengView.java index be8cca8..e28c177 100644 --- a/src/main/java/com/entity/view/YishengView.java +++ b/src/main/java/com/entity/view/YishengView.java @@ -13,69 +13,82 @@ import java.util.Date; * 医生 * 后端返回视图实体辅助类 * (通常后端关联的表或者自定义的字段需要返回使用) + * 该类继承自 YishengEntity,用于扩展或修改返回给前端的实体数据结构 */ -@TableName("yisheng") +@TableName("yisheng") // 表明该实体类对应的数据库表名为 "yisheng",这里可能是为了保持与基础实体类的一致性或者有特定的 MyBatis-Plus 相关用途 public class YishengView extends YishengEntity implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 科室的值 - */ - private String yishengValue; - /** - * 职位的值 - */ - private String zhiweiValue; - - - + private static final long serialVersionUID = 1L; + // 序列化版本号,用于在对象序列化和反序列化过程中保持版本一致性 + + /** + * 科室的值 + * 这里定义了一个额外的字段,用于存储科室相关的具体值(可能是科室名称等更详细信息,与 YishengEntity 中的科室字段可能有所区别) + */ + private String yishengValue; + + /** + * 职位的值 + * 同样定义了一个额外的字段,用于存储职位相关的具体值(可能是职位名称等更详细信息,与 YishengEntity 中的职位字段可能有所区别) + */ + private String zhiweiValue; + + /** + * 无参构造函数 + * 用于创建一个空的 YishengView 对象 + */ public YishengView() { } + /** + * 带参构造函数 + * 接收一个 YishengEntity 对象,将其属性复制到当前 YishengView 对象中 + * + * @param yishengEntity YishengEntity 类型的对象,其属性将被复制到当前对象 + */ public YishengView(YishengEntity yishengEntity) { try { + // 使用 BeanUtils 工具类将 YishengEntity 对象的属性复制到当前 YishengView 对象 BeanUtils.copyProperties(this, yishengEntity); } catch (IllegalAccessException | InvocationTargetException e) { - // TODO Auto-generated catch block + // 如果在属性复制过程中出现非法访问或调用目标异常,打印异常堆栈信息 e.printStackTrace(); } } + /** + * 获取科室的值 + * + * @return 返回存储的科室的值 + */ + public String getYishengValue() { + return yishengValue; + } + /** + * 设置科室的值 + * + * @param yishengValue 要设置的科室的值 + */ + public void setYishengValue(String yishengValue) { + this.yishengValue = yishengValue; + } - /** - * 获取: 科室的值 - */ - public String getYishengValue() { - return yishengValue; - } - /** - * 设置: 科室的值 - */ - public void setYishengValue(String yishengValue) { - this.yishengValue = yishengValue; - } - /** - * 获取: 职位的值 - */ - public String getZhiweiValue() { - return zhiweiValue; - } - /** - * 设置: 职位的值 - */ - public void setZhiweiValue(String zhiweiValue) { - this.zhiweiValue = zhiweiValue; - } - - - - - - - - - + /** + * 获取职位的值 + * + * @return 返回存储的职位的值 + */ + public String getZhiweiValue() { + return zhiweiValue; + } -} + /** + * 设置职位的值 + * + * @param zhiweiValue 要设置的职位的值 + */ + public void setZhiweiValue(String zhiweiValue) { + this.zhiweiValue = zhiweiValue; + } +} \ No newline at end of file From b742fd2d09fefc04502ce1270b799ce676953dcc Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:47:30 +0800 Subject: [PATCH 09/23] 6 --- src/main/java/com/entity/vo/YishengVO.java | 283 ++++++++++++--------- 1 file changed, 157 insertions(+), 126 deletions(-) diff --git a/src/main/java/com/entity/vo/YishengVO.java b/src/main/java/com/entity/vo/YishengVO.java index 4b69f91..77c0977 100644 --- a/src/main/java/com/entity/vo/YishengVO.java +++ b/src/main/java/com/entity/vo/YishengVO.java @@ -13,358 +13,389 @@ import java.io.Serializable; * 医生 * 手机端接口返回实体辅助类 * (主要作用去除一些不必要的字段) + * 该类用于定义返回给手机端接口的数据结构,通过定义特定的属性,控制返回给客户端的数据内容, + * 避免返回不必要的敏感或无用信息。 */ -@TableName("yisheng") +@TableName("yisheng") // 声明该实体类对应的数据库表名为 "yisheng",用于 MyBatis-Plus 的相关操作 public class YishengVO implements Serializable { private static final long serialVersionUID = 1L; - + // 序列化版本号,用于保证在对象序列化和反序列化过程中的兼容性 /** * 主键 + * 对应数据库表中记录的唯一标识字段 */ - @TableField(value = "id") private Integer id; - /** * 医生工号 + * 用于唯一标识医生的编号 */ - @TableField(value = "yisheng_uuid_number") private String yishengUuidNumber; - /** * 账户 + * 医生登录系统使用的账户名 */ - @TableField(value = "username") private String username; - /** * 密码 + * 医生登录系统使用的密码 + * 注意:通常密码不应该返回给客户端,这里可能存在安全风险,需要根据实际情况处理 */ - @TableField(value = "password") private String password; - /** * 医生名称 + * 医生的真实姓名 */ - @TableField(value = "yisheng_name") private String yishengName; - /** * 科室 + * 医生所属的科室,用整数表示科室编号 */ - @TableField(value = "yisheng_types") private Integer yishengTypes; - /** * 职位 + * 医生的职位,用整数表示职位编号 */ - @TableField(value = "zhiwei_types") private Integer zhiweiTypes; - /** * 职称 + * 医生的职称信息 */ - @TableField(value = "yisheng_zhichneg") private String yishengZhichneg; - /** * 医生头像 + * 医生头像的存储路径或链接 */ - @TableField(value = "yisheng_photo") private String yishengPhoto; - /** * 联系方式 + * 医生的联系电话号码 */ - @TableField(value = "yisheng_phone") private String yishengPhone; - /** * 挂号须知 + * 关于该医生挂号的相关注意事项 */ - @TableField(value = "yisheng_guahao") private String yishengGuahao; - /** * 邮箱 + * 医生的电子邮箱地址 */ - @TableField(value = "yisheng_email") private String yishengEmail; - /** * 挂号价格 + * 患者挂该医生号所需支付的费用 */ - @TableField(value = "yisheng_new_money") private Double yishengNewMoney; - /** * 履历介绍 + * 医生的工作履历、专业技能等相关介绍信息 */ - @TableField(value = "yisheng_content") private String yishengContent; - /** * 创建时间 show1 show2 photoShow + * 该字段表示医生记录的创建时间,通过注解进行日期格式的处理 */ - @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") - @DateTimeFormat - + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat @TableField(value = "create_time") private Date createTime; - /** - * 设置:主键 - */ + * 获取主键的值 + * + * @return 主键的值 + */ public Integer getId() { return id; } - /** - * 获取:主键 - */ - + * 设置主键的值 + * + * @param id 要设置的主键值 + */ public void setId(Integer id) { this.id = id; } + /** - * 设置:医生工号 - */ + * 获取医生工号的值 + * + * @return 医生工号的值 + */ public String getYishengUuidNumber() { return yishengUuidNumber; } - /** - * 获取:医生工号 - */ - + * 设置医生工号的值 + * + * @param yishengUuidNumber 要设置的医生工号值 + */ public void setYishengUuidNumber(String yishengUuidNumber) { this.yishengUuidNumber = yishengUuidNumber; } + /** - * 设置:账户 - */ + * 获取账户的值 + * + * @return 账户的值 + */ public String getUsername() { return username; } - /** - * 获取:账户 - */ - + * 设置账户的值 + * + * @param username 要设置的账户值 + */ public void setUsername(String username) { this.username = username; } + /** - * 设置:密码 - */ + * 获取密码的值 + * + * @return 密码的值 + */ public String getPassword() { return password; } - /** - * 获取:密码 - */ - + * 设置密码的值 + * + * @param password 要设置的密码值 + */ public void setPassword(String password) { this.password = password; } + /** - * 设置:医生名称 - */ + * 获取医生名称的值 + * + * @return 医生名称的值 + */ public String getYishengName() { return yishengName; } - /** - * 获取:医生名称 - */ - + * 设置医生名称的值 + * + * @param yishengName 要设置的医生名称值 + */ public void setYishengName(String yishengName) { this.yishengName = yishengName; } + /** - * 设置:科室 - */ + * 获取科室的值 + * + * @return 科室的值 + */ public Integer getYishengTypes() { return yishengTypes; } - /** - * 获取:科室 - */ - + * 设置科室的值 + * + * @param yishengTypes 要设置的科室值 + */ public void setYishengTypes(Integer yishengTypes) { this.yishengTypes = yishengTypes; } + /** - * 设置:职位 - */ + * 获取职位的值 + * + * @return 职位的值 + */ public Integer getZhiweiTypes() { return zhiweiTypes; } - /** - * 获取:职位 - */ - + * 设置职位的值 + * + * @param zhiweiTypes 要设置的职位值 + */ public void setZhiweiTypes(Integer zhiweiTypes) { this.zhiweiTypes = zhiweiTypes; } + /** - * 设置:职称 - */ + * 获取职称的值 + * + * @return 职称的值 + */ public String getYishengZhichneg() { return yishengZhichneg; } - /** - * 获取:职称 - */ - + * 设置职称的值 + * + * @param yishengZhichneg 要设置的职称值 + */ public void setYishengZhichneg(String yishengZhichneg) { this.yishengZhichneg = yishengZhichneg; } + /** - * 设置:医生头像 - */ + * 获取医生头像的值 + * + * @return 医生头像的值 + */ public String getYishengPhoto() { return yishengPhoto; } - /** - * 获取:医生头像 - */ - + * 设置医生头像的值 + * + * @param yishengPhoto 要设置的医生头像值 + */ public void setYishengPhoto(String yishengPhoto) { this.yishengPhoto = yishengPhoto; } + /** - * 设置:联系方式 - */ + * 获取联系方式的值 + * + * @return 联系方式的值 + */ public String getYishengPhone() { return yishengPhone; } - /** - * 获取:联系方式 - */ - + * 设置联系方式的值 + * + * @param yishengPhone 要设置的联系方式值 + */ public void setYishengPhone(String yishengPhone) { this.yishengPhone = yishengPhone; } + /** - * 设置:挂号须知 - */ + * 获取挂号须知的值 + * + * @return 挂号须知的值 + */ public String getYishengGuahao() { return yishengGuahao; } - /** - * 获取:挂号须知 - */ - + * 设置挂号须知的值 + * + * @param yishengGuahao 要设置的挂号须知值 + */ public void setYishengGuahao(String yishengGuahao) { this.yishengGuahao = yishengGuahao; } + /** - * 设置:邮箱 - */ + * 获取邮箱的值 + * + * @return 邮箱的值 + */ public String getYishengEmail() { return yishengEmail; } - /** - * 获取:邮箱 - */ - + * 设置邮箱的值 + * + * @param yishengEmail 要设置的邮箱值 + */ public void setYishengEmail(String yishengEmail) { this.yishengEmail = yishengEmail; } + /** - * 设置:挂号价格 - */ + * 获取挂号价格的值 + * + * @return 挂号价格的值 + */ public Double getYishengNewMoney() { return yishengNewMoney; } - /** - * 获取:挂号价格 - */ - + * 设置挂号价格的值 + * + * @param yishengNewMoney 要设置的挂号价格值 + */ public void setYishengNewMoney(Double yishengNewMoney) { this.yishengNewMoney = yishengNewMoney; } + /** - * 设置:履历介绍 - */ + * 获取履历介绍的值 + * + * @return 履历介绍的值 + */ public String getYishengContent() { return yishengContent; } - /** - * 获取:履历介绍 - */ - + * 设置履历介绍的值 + * + * @param yishengContent 要设置的履历介绍值 + */ public void setYishengContent(String yishengContent) { this.yishengContent = yishengContent; } + /** - * 设置:创建时间 show1 show2 photoShow - */ + * 获取创建时间的值 + * + * @return 创建时间的值 + */ public Date getCreateTime() { return createTime; } - /** - * 获取:创建时间 show1 show2 photoShow - */ - + * 设置创建时间的值 + * + * @param createTime 要设置的创建时间值 + */ public void setCreateTime(Date createTime) { this.createTime = createTime; } - -} +} \ No newline at end of file From e716faeca951eac55ada6e61b8a575afa100af81 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:48:59 +0800 Subject: [PATCH 10/23] 7 --- src/main/resources/mapper/YishengDao.xml | 33 +++++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main/resources/mapper/YishengDao.xml b/src/main/resources/mapper/YishengDao.xml index 2bcfd21..3a935fa 100644 --- a/src/main/resources/mapper/YishengDao.xml +++ b/src/main/resources/mapper/YishengDao.xml @@ -1,8 +1,8 @@ - + a.id as id ,a.yisheng_uuid_number as yishengUuidNumber @@ -20,64 +20,77 @@ ,a.yisheng_content as yishengContent ,a.create_time as createTime - SELECT + --- 级联表的字段 - + -- 级联表的字段 FROM yisheng a - + + and a.id in - #{item} + #{item} + and a.yisheng_uuid_number like CONCAT('%',#{params.yishengUuidNumber},'%') + and a.username like CONCAT('%',#{params.username},'%') + and a.password like CONCAT('%',#{params.password},'%') + and a.yisheng_name like CONCAT('%',#{params.yishengName},'%') + and a.yisheng_types = #{params.yishengTypes} + and a.zhiwei_types = #{params.zhiweiTypes} + and a.yisheng_zhichneg like CONCAT('%',#{params.yishengZhichneg},'%') + and a.yisheng_phone like CONCAT('%',#{params.yishengPhone},'%') + and a.yisheng_guahao like CONCAT('%',#{params.yishengGuahao},'%') + and a.yisheng_email like CONCAT('%',#{params.yishengEmail},'%') + = #{params.yishengNewMoneyStart} ]]> + + and a.yisheng_content like CONCAT('%',#{params.yishengContent},'%') - - - order by a.${params.orderBy} desc + + order by a.${params.orderBy} desc - \ No newline at end of file From 184ad664e45a1f551aae23cc01e454e7a5cde355 Mon Sep 17 00:00:00 2001 From: cp <2474209645@qq.com> Date: Mon, 28 Apr 2025 21:51:17 +0800 Subject: [PATCH 11/23] 8 --- .../views/modules/guahao/add-or-update.vue | 971 +++++------------- 1 file changed, 278 insertions(+), 693 deletions(-) diff --git a/src/main/resources/admin/admin/src/views/modules/guahao/add-or-update.vue b/src/main/resources/admin/admin/src/views/modules/guahao/add-or-update.vue index 90c8752..02dcdf7 100644 --- a/src/main/resources/admin/admin/src/views/modules/guahao/add-or-update.vue +++ b/src/main/resources/admin/admin/src/views/modules/guahao/add-or-update.vue @@ -1,698 +1,283 @@ - - + + + + +
+ + + +
+
+ + + + +
+ + + +
+
+ + + + +
+ + + +
+
+ + + + +
+ + + +
+
+ + + + +
+ + + +
+
+ + + + + + + + +
+ + + +
+
+ + + + + +
+ + + +
+
+ + + + + + + +
+ + + +
+
+ + + + + + + +
+ + + +
+
+ + + + - -
-