当前位置: 首页 > news >正文

制作微信公众号的网站开发随州网站建设多少钱

制作微信公众号的网站开发,随州网站建设多少钱,建站平台工具,免费咨询皮肤科医生回答在线概述 智慧医药系统#xff08;smart-medicine#xff09;是一个基于 SpringBoot 开发的Web 项目。整体页面简约大气#xff0c;增加了AI医生问诊功能#xff0c;功能设计的较为简单。 开源地址 https://gitcode.net/NVG_Haru/Java_04 界面预览 功能介绍 游客功能介绍 … 概述 智慧医药系统smart-medicine是一个基于 SpringBoot 开发的Web 项目。整体页面简约大气增加了AI医生问诊功能功能设计的较为简单。 开源地址 https://gitcode.net/NVG_Haru/Java_04 界面预览 功能介绍 游客功能介绍 功能模块功能描述登录注册方面注册成为系统用户系统主页浏览系统主页、疾病、药品信息搜索、详情的查看统计浏览量 用户功能介绍 功能模块功能描述登录注册方面填写用户信息进行账号注册邮件接收验证码、使用账号密码进行登录个人资料方面修改个人资料姓名、年龄、手机号、头像等、修改登录密码系统反馈方面提交系统反馈意见智能医生方面与智能医生进行交流聊天 管理员功能介绍 功能模块功能描述登录注册方面填写用户信息进行账号注册邮件接收验证码、使用账号密码进行登录个人资料方面修改个人资料姓名、年龄、手机号、头像等、修改登录密码系统反馈方面提交系统反馈意见智能医生方面与智能医生进行交流聊天疾病管理方面发布疾病、编辑名称、原因、症状、分类等、删除药品等药品管理方面发布药品、编辑名称、搜索关键词、功效、用法用量、类型等、关联疾病、删除药品等反馈管理方面管理用户提交的反馈信息 数据库设计 代码讲解 AI 问诊功能 这个功能借助阿里通义千问大模型实现调用了com.alibaba.dashscope.*sdk提供的接口主要流程如下 创建Generation对象创建MessageManager对象创建系统消息将系统消息和用户消息添加到MessageManager中创建QwenParam对象调用Generation的call方法获取GenerationResult对象获取GenerationResult对象的输出部分获取输出中的第一个消息并返回 public String query(String queryMessage) {// 设置API keyConstants.apiKey apiKey;try {// 创建Generation对象Generation gen new Generation();// 创建MessageManager对象MessageManager msgManager new MessageManager(10);// 创建系统消息Message systemMsg Message.builder().role(Role.SYSTEM.getValue()).content(你是智能医生你只回答与医疗相关的问题不要回答其他问题).build();// 创建用户消息Message userMsg Message.builder().role(Role.USER.getValue()).content(queryMessage).build();// 将系统消息和用户消息添加到MessageManager中msgManager.add(systemMsg);msgManager.add(userMsg);// 创建QwenParam对象QwenParam param QwenParam.builder().model(Generation.Models.QWEN_TURBO).messages(msgManager.get()).resultFormat(QwenParam.ResultFormat.MESSAGE).build();// 调用Generation的call方法获取GenerationResult对象GenerationResult result gen.call(param);// 获取GenerationResult对象的输出部分GenerationOutput output result.getOutput();// 获取输出中的第一个消息Message message output.getChoices().get(0).getMessage();// 返回消息的内容return message.getContent();} catch (Exception e) {return 智能医生现在不在线请稍后再试;}}反馈功能 主要讲解一下query这个查询函数该函数接受一个Feedback实体函数实际上这是一种偷懒的做法最佳方案还是确定好哪些参数可以进入函数。 package world.xuewei.service;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import world.xuewei.dao.FeedbackDao; import world.xuewei.entity.Feedback; import world.xuewei.utils.Assert; import world.xuewei.utils.BeanUtil; import world.xuewei.utils.VariableNameUtils;import java.io.Serializable; import java.util.List; import java.util.Map;/*** 反馈服务类**/ Service public class FeedbackService extends BaseServiceFeedback {Autowiredprotected FeedbackDao userDao;/*** 查询满足指定条件的Feedback列表** param o 查询条件对象* return 满足条件的Feedback列表*/Overridepublic ListFeedback query(Feedback o) {// 创建QueryWrapper对象QueryWrapperFeedback wrapper new QueryWrapper();if (Assert.notEmpty(o)) {// 将对象转换为MapMapString, Object bean2Map BeanUtil.bean2Map(o);// 遍历Map中的键值对for (String key : bean2Map.keySet()) {if (Assert.isEmpty(bean2Map.get(key))) {continue;}// 根据键值对创建查询条件wrapper.eq(VariableNameUtils.humpToLine(key), bean2Map.get(key));}}// 执行查询操作return userDao.selectList(wrapper);}Overridepublic ListFeedback all() {return query(null);}Overridepublic Feedback save(Feedback o) {if (Assert.isEmpty(o.getId())) {userDao.insert(o);} else {userDao.updateById(o);}return userDao.selectById(o.getId());}Overridepublic Feedback get(Serializable id) {return userDao.selectById(id);}Overridepublic int delete(Serializable id) {return userDao.deleteById(id);} }疾病功能 package world.xuewei.service;import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import world.xuewei.dao.IllnessDao; import world.xuewei.entity.*; import world.xuewei.utils.Assert; import world.xuewei.utils.BeanUtil; import world.xuewei.utils.VariableNameUtils;import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** 疾病服务类** author XUEW*/ Service public class IllnessService extends BaseServiceIllness {Autowiredprotected IllnessDao illnessDao;Overridepublic ListIllness query(Illness o) {QueryWrapperIllness wrapper new QueryWrapper();if (Assert.notEmpty(o)) {MapString, Object bean2Map BeanUtil.bean2Map(o);for (String key : bean2Map.keySet()) {if (Assert.isEmpty(bean2Map.get(key))) {continue;}wrapper.eq(VariableNameUtils.humpToLine(key), bean2Map.get(key));}}return illnessDao.selectList(wrapper);}Overridepublic ListIllness all() {return query(null);}Overridepublic Illness save(Illness o) {if (Assert.isEmpty(o.getId())) {illnessDao.insert(o);} else {illnessDao.updateById(o);}return illnessDao.selectById(o.getId());}Overridepublic Illness get(Serializable id) {return illnessDao.selectById(id);}Overridepublic int delete(Serializable id) {return illnessDao.deleteById(id);}public MapString, Object findIllness(Integer kind, String illnessName, Integer page) {MapString, Object map new HashMap(4);QueryWrapperIllness illnessQueryWrapper new QueryWrapper();if (Assert.notEmpty(illnessName)) {illnessQueryWrapper.like(illness_name, illnessName).or().like(include_reason, illnessName).or().like(illness_symptom, illnessName).or().like(special_symptom, illnessName);}if (kind ! null) {if (Assert.notEmpty(illnessName)) {illnessQueryWrapper.last(and (kind_id kind ) ORDER BY create_time DESC limit (page - 1) * 9 , page * 9);} else {illnessQueryWrapper.eq(kind_id, kind);illnessQueryWrapper.orderByDesc(create_time);illnessQueryWrapper.last(limit (page - 1) * 9 , page * 9);}} else {illnessQueryWrapper.orderByDesc(create_time);illnessQueryWrapper.last(limit (page - 1) * 9 , page * 9);}int size illnessDao.selectMaps(illnessQueryWrapper).size();ListMapString, Object list illnessDao.selectMaps(illnessQueryWrapper);list.forEach(l - {Integer id MapUtil.getInt(l, id);Pageview pageInfo pageviewDao.selectOne(new QueryWrapperPageview().eq(illness_id, id));l.put(kindName, 暂无归属类);l.put(create_time, MapUtil.getDate(l, create_time));l.put(pageview, pageInfo null ? 0 : pageInfo.getPageviews());Integer kindId MapUtil.getInt(l, kind_id);if (Assert.notEmpty(kindId)) {IllnessKind illnessKind illnessKindDao.selectById(kindId);if (Assert.notEmpty(illnessKind)) {l.put(kindName, illnessKind.getName());}}});map.put(illness, list);map.put(size, size 9 ? 1 : size / 9 1);return map;}public MapString, Object findIllnessOne(Integer id) {Illness illness illnessDao.selectOne(new QueryWrapperIllness().eq(id, id));ListIllnessMedicine illnessMedicines illnessMedicineDao.selectList(new QueryWrapperIllnessMedicine().eq(illness_id, id));ListMedicine list new ArrayList(4);MapString, Object map new HashMap(4);Pageview illness_id pageviewDao.selectOne(new QueryWrapperPageview().eq(illness_id, id));if (Assert.isEmpty(illness_id)) {illness_id new Pageview();illness_id.setIllnessId(id);illness_id.setPageviews(1);pageviewDao.insert(illness_id);} else {illness_id.setPageviews(illness_id.getPageviews() 1);pageviewDao.updateById(illness_id);}map.put(illness, illness);if (CollUtil.isNotEmpty(illnessMedicines)) {illnessMedicines.forEach(illnessMedicine - {Medicine medicine medicineDao.selectOne(new QueryWrapperMedicine().eq(id, illnessMedicine.getMedicineId()));if (ObjectUtil.isNotNull(medicine)) {list.add(medicine);}});map.put(medicine, list);}return map;}public Illness getOne(QueryWrapperIllness queryWrapper) {return illnessDao.selectOne(queryWrapper);} }讲一讲findIllnessOne这个函数是一个用于查找疾病信息的方法。它接受三个参数kind表示疾病类型illnessName表示疾病名称page表示页码。函数首先创建一个HashMap用于存储结果。然后创建一个QueryWrapper对象用于构建查询条件。如果illnessName不为空则通过like操作符模糊匹配illness_name、include_reason、illness_symptom和special_symptom字段中的任意一个包含illnessName的内容。接下来根据kind和illnessName的值构建查询条件包括对kind_id和create_time的筛选和排序。然后通过调用illnessDao.selectMaps方法获取查询结果的列表。接着遍历列表对每个疾病对象获取id并通过pageviewDao.selectOne方法查询对应的pageview信息。然后将一些字段放入疾病对象的HashMap中包括kindName默认值为暂无归属类、create_time、pageview如果查询失败则为0和kindName如果有。接下来根据疾病列表的大小计算总页数并将疾病列表和总页数放入HashMap中。最后将HashMap作为结果返回。 主要问题有 重复代码在kind ! null和else部分关于orderByDesc和last的查询条件重复了分页逻辑。可以简化这两个部分的代码。 查询条件构造like操作的字段和值应该使用占位符这样可以避免SQL注入。 断言Assert.notEmpty的使用代码中使用了Assert.notEmpty这通常用于校验条件但在这个上下文中这个校验似乎是多余的因为如果illnessName为空之前的like条件就无法匹配任何结果。 使用更合适的数据容器List和Map已经足够表达结果可以考虑直接返回一个Page对象而不是Map其中包含数据列表和分页信息。 代码可读性一些变量的命名可以更加清晰例如map变量可以命名为pageResult以更清楚地表示它包含的是分页结果。 避免硬编码分页大小即每页9条记录被硬编码在查询中可以作为常量提取出来。 异常处理在查询过程中应该有适当的异常处理机制以处理潜在的数据库访问错误。 数据映射数据映射和处理逻辑可以封装到单独的方法中以提高代码的可读性和可维护性。
http://www.pierceye.com/news/544752/

相关文章:

  • 微舍 微网站 怎么做wordpress 插件开发教程
  • 企业网站报价模板下载国外设计网址
  • 做网站怎么排版手机网站怎样建设
  • 大连优化网站课程国内外贸网站建设
  • 苏州建设局官方网站响应式网站制作工具
  • 德州建设小学网站网页设计与制作心得体会1000
  • 建站之星用做什么网站婚纱摄影网站开发的目的
  • 手机网站建设 cms湖南手机响应式网站建设企业
  • 德阳建设局官方网站能去百度上班意味着什么
  • 网站推广临沂企业seo策划方案优化案例
  • 河北建设厅注册中心网站网站策划书模板大全
  • 嘉兴建设教育网站培训中心网站wordpress有哪些弹窗插件
  • 石家庄网站seo外包无锡 做网站
  • 江西中慧城乡建设开发公司网站修复WordPress图片上传错误
  • 冠县网站设计做网站优化找谁
  • 网站的建设公司哪个好推广线上渠道
  • 网站建设方向论文提纲安徽鑫华建设有限公司网站
  • 哪个网站上门做护肤优秀建筑案例分析
  • 建立网站ftp刷排名seo软件
  • 网站pv是什么app开发入门基础教程
  • 开发网站的可行性the7企业中 英文wordpress模板
  • 晋城网站设计重庆小程序商城开发
  • 找人做网站被骗能立案吗阿里云专有网络做网站
  • 做别人一摸一样的网站犯法吗买一个网站多少钱
  • 网站建设介绍书网站转换率
  • 云浮各类免费建站商业街网站建设方案
  • 注册网站怎么注册不了网站诊断示例
  • 打电话沟通做网站美食网页模板免费下载
  • 网站可以做库存吗表白网页在线生成网站
  • wordpress全站301网络设计项目