前言
✨ 博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍
👇 精彩专栏 推荐订阅👇
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
系统详细设计与实现
果农角色功能实现
用药计算
用药计算模块主要为果农提供准确的农药稀释计算服务。果农进入页面后在输入框中填写农药包装上标注的稀释倍数以及计划使用的兑水量,系统接收到这两个数值后执行乘法运算,将兑水量除以稀释倍数得到所需原药用量,结果以毫升或克为单位实时显示在结果区域。果农可以多次调整输入参数反复计算,每次调整都会触发重新计算并更新显示结果。系统同时提供常用稀释倍数快捷选择按钮,果农点击预设值即可快速填入对应倍数。计算结果下方设有保存按钮,点击后将本次计算记录存入个人中心供日后查阅。

用药计算界面
农药方案推荐查看
农药方案推荐模块根据果农选择的病虫害种类给出相应的防治建议。果农在首页进入方案推荐之后,可以进入到常见病虫害分类导航中,点击任意一个分类就可以进入到该类别的方案列表页面。根据推荐指数降序排序,指数越大说明方案的综合评价越好,每一条方案都会显示标题、适用虫害、农药名称、推荐指数等概要信息。点击列表项进入方案详情页,对用药名称、登记证号、安全间隔期、注意事项、安全提醒等进行详细的展示,并且还给出了该方案适用的场景和使用方法。详情页底部给出与本方案有关的其它防治建议,方便果农比较选择。

农药方案推荐查看界面
图像识别
图像识别模块可以果农拍下照片来判断病虫害种类。果农进入识别页面之后点击上传区域选择手机相册里的照片或者直接调用相机拍摄病状部位,系统对图片进行格式校验,只接受JPG、PNG格式且大小不超过10MB的图片。上传成功之后前端会把图片传送到后端服务器,后端调用事先训练好的图像识别模型进行分析对比,模型给出置信度最高的前三个识别结果和概率值。识别完成后页面跳转到结果展示区,显示每种可能的病虫害名称以及匹配度,提供查看详细信息的按钮链接到相应的虫害图库页面和防治方案页面,果农可以获取完整的防治信息。

图像识别界面
虫害图库查看
虫害图库模块可以给果农提供各种病虫害图文资料的查阅学习。果农进入图库页面之后可以按照果树种类、虫害类型等进行分类导航标签的选择,点击相应的标签即可得到该类别的虫害列表。页面顶部有搜索框,可以按照虫害名称进行模糊查询,输入关键词后系统会立即给出匹配结果。每一个虫害条目用卡片的形式来呈现,虫害名称、危害作物、典型症状缩略图等信息都会出现在卡片上,卡片底部还会显示该虫害的浏览次数以及用户的评价。点击卡片跳转到详情页,全方位呈现虫害描述、危害症状、发生规律和防治方法这四个部分的信息,防治方法部分还有相关的农药方案链接。详情页底部有评论区、收藏按钮,果农可以发表评论或者收藏该条信息。

虫害图库查看界面
农药方案查看
农药方案模块把各种病虫害的详细用药方案集中起来。果农在首页导航或者虫害详情页的关联链接上点击进入方案列表页,列表有按照虫害标签筛选、按照推荐指数排序这两种浏览方式。将每条方案以折叠卡片形式呈现出来,方案标题、适用虫害、农药名称及推荐指数等信息均会呈现出来,点击展开按钮即可进入详细的用药说明以及安全提示页面。点击查看详情按钮跳转到完整方案页面,页面顶部显示方案标题以及适用虫害标签,主体部分分为用药信息、使用方法、注意事项三个区块,用药信息区块给出农药名称、登记证号、安全间隔期等专业数据,使用方法区块说明稀释比例、施药时机、施药方式,注意事项区块突出安全用药提醒和环境保护要求。

农药方案查看界面
管理员角色功能实现
标签分类管理
标签分类管理模块给管理员提供对虫害分类标签体系进行管理的功能。管理员登录后台管理界面之后选择标签分类菜单,系统以表格的形式呈现已有的标签列表,每一行包含标签名称、创建时间、更新时间以及操作按钮。表格上方有添加按钮和搜索框,点击添加会弹出表单窗口,输入标签名称后提交保存到数据库中。搜索框输入关键词可以迅速找到需要的标签。每行记录的操作区域有编辑和删除两个按钮,点击编辑可以修改标签名称,点击删除需要两次确认,确认之后系统从数据库中删除该标签。

标签分类管理界面
虫害图库管理
虫害图库管理模块对病虫害图文内容进行增删改查。管理员进入虫害图库列表页后可以查看所有的已录入虫害的表格视图,表格列包含虫害名称、虫害种类、作物品种、操作按钮等。列表上方有查询区域,可以按照虫害名称、虫害种类组合进行筛选。在添加虫害时点击新增按钮进入到表单页面,输入虫害名称、选择种类、上传图片、填写虫害描述、危害症状、发生规律、防治方法等内容,提交后系统进行数据格式验证,验证通过后保存到数据库中。列表页每一条信息都配有查看和编辑链接,点击查看详情可以查看所有的信息,点击编辑则会跳转到表单页面,然后输入当前的信息进行修改。删除操作要经过二次确认,防止误删。

虫害图库管理界面
农药方案管理
农药方案管理模块保存各种防治方案的主要信息。管理员进入农药方案列表页之后,可以在表格里看到方案的标题、方案类型、虫害标签、农药名称、推荐指数等信息。列表上方有查询条件,可以按照虫害标签、推荐指数进行筛选。管理员在添加新方案的时候,填写方案标题、选择方案类型、关联虫害标签、填写农药名称、上传农药图片、登记证号、推荐指数、安全间隔期、注意事项、安全提醒、方案详情等内容,所有必填项验证通过后保存入库。列表页每行显示一个方案的全部信息,详情页可以对方案进行完整的展示,编辑页可以修改方案中的各个字段。方案删除之后,所有与该方案相关的评论以及收藏都会被删除。

农药方案管理界面
专家文章管理
专家文章管理模块对植保专家技术文章的发布和维护进行处理。管理员进入文章管理列表页,表格里显示了文章标题、文章类型、专家姓名、发布日期这些字段。列表上方设有搜索框可以按照标题、类型进行查询。管理员在发布新文章的时候输入文章标题、选择文章类型、输入专家姓名、确定发布日期、上传文章封面、输入文章描述、输入文章详情正文,正文编辑器支持图文混排以及格式设置。文章发布后前台果农端可见。列表页上的每一篇文章都可以编辑修改内容、调整发布时间或者删除文章,编辑时历史版本会被覆盖,删除操作会把文章从数据库中彻底删除。管理员可以对重要的文章进行置顶设置,置顶的文章会在列表的前端被优先显示。

专家文章管理界面
权限管理
权限管理模块对不同的管理员的后台访问范围进行控制。系统中先设定了超级管理员和内容管理员两个角色,超级管理员对于所有的模块都有全权操作权限,可以对所有的内容进行添加、修改、删除。内容管理员只能访问虫害图库、农药方案、专家文章等业务模块,不能查看用户列表和系统设置。权限分配采用用户组的方式进行,管理员创建新用户的时候会指定该用户的所属用户组,系统会根据用户组所对应的权限表来动态生成可以访问的菜单以及可以执行的操作。权限管理界面用表格的形式展示出现有的用户列表,包括用户名、用户组、账户状态、上次登录时间等信息,超级管理员可以对其他用户的用户组进行修改、重置密码、启用或者禁用账户。

权限管理界面
数据库参考
CREATE TABLE `access_token` (
`token_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '临时访问牌ID',
`token` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '临时访问牌',
`info` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '信息',
`maxage` int(2) NOT NULL DEFAULT '2' COMMENT '最大寿命:默认2小时',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户编号',
PRIMARY KEY (`token_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='登陆访问时长';
DROP TABLE IF EXISTS `code_token`;
CREATE TABLE `code_token` (
`code_token_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '验证码ID',
`token` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL COMMENT '令牌',
`code` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL COMMENT '验证码',
`expire_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '失效时间',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`code_token_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='验证码';
DROP TABLE IF EXISTS `collect`;
CREATE TABLE `collect` (
`collect_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏人ID',
`source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表',
`source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID',
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题',
`img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '封面',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`collect_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='收藏';
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice` (
`notice_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '公告ID',
`title` varchar(125) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '标题',
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '正文',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`notice_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公告';
insert into `notice` values ('1','系统维护通知','<p>网站升级通知</p><p>尊敬的客户,为了提供更好的用户体验,我们将于本周三凌晨1:00-5:00进行系统维护升级,期间可能出现短暂服务中断。建议您提前保存操作数据,感谢您的理解与支持!</p>','2026-04-28 17:11:39','2026-04-28 17:11:39');
insert into `notice` values ('2','新功能上线','<p>搜索功能已优化升级!现已正式开放使用,支持关键词搜索,快去体验检索服务吧~</p>','2026-04-28 17:11:39','2026-04-28 17:11:39');
insert into `notice` values ('3','客服时间调整','<p>人工客服服务时间已延长为每日8:00-22:00(含节假日),智能客服24小时在线,随时为您解答问题。</p>','2026-04-28 17:11:39','2026-04-28 17:11:39');
insert into `notice` values ('4','规范提示','<p>请遵守《用户行为守则》:禁止发布广告、虚假信息及不当内容。共同维护友善的网络环境,违规账号将受到限制。</p>','2026-04-28 17:11:39','2026-04-28 17:11:39');
DROP TABLE IF EXISTS `article_type`;
CREATE TABLE `article_type` (
`type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID',
`display` smallint(4) unsigned NOT NULL DEFAULT '100' COMMENT '显示顺序',
`name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分类名称',
`father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述',
`icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '分类图标',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外链地址',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`type_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文章分类';
DROP TABLE IF EXISTS `operation_log`;
CREATE TABLE `operation_log` (
`operation_log_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '操作日志ID',
`user_group` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户角色',
`user_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户账号',
`routes` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '模块名称',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`operation_log_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='操作日志表';
DROP TABLE IF EXISTS `praise`;
CREATE TABLE `praise` (
`praise_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表',
`source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '点赞状态:1为点赞,0已取消',
`img` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`title` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`praise_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='点赞';
DROP TABLE IF EXISTS `hits`;
CREATE TABLE `hits` (
`hits_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表',
`source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID',
PRIMARY KEY (`hits_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户点击';
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`comment_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '评论ID',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '评论人ID',
`reply_to_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '回复评论ID',
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '内容',
`nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '昵称',
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像地址',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表',
`source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID',
`hidden` tinyint(4) DEFAULT '0' COMMENT '是否隐藏',
`sticky` tinyint(4) DEFAULT '0' COMMENT '是否置顶',
PRIMARY KEY (`comment_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评论';
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`state` smallint(1) unsigned NOT NULL DEFAULT '1' COMMENT '账户状态:(1可用|2异常|3已冻结|4已注销)',
`user_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '所在用户组',
`login_time` timestamp NULL DEFAULT NULL COMMENT '上次登录时间',
`phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '手机号码',
`phone_state` smallint(1) unsigned NOT NULL DEFAULT '0' COMMENT '手机认证:(0未认证|1审核中|2已认证)',
`username` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
`nickname` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '昵称',
`password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '密码',
`email` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '邮箱',
`email_state` smallint(1) unsigned NOT NULL DEFAULT '0' COMMENT '邮箱认证:(0未认证|1审核中|2已认证)',
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像地址',
`open_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '针对获取用户信息字段',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`vip_level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '会员等级',
`vip_discount` double(10,2) DEFAULT '0.00' COMMENT '会员折扣',
`integral` int(11) DEFAULT '0' COMMENT '积分',
`balance` double(10,2) DEFAULT '0.00' COMMENT '余额',
`ip` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'IPv4/IPv6地址',
`device_hash` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '设备指纹',
`emergency_name` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '紧急联系人',
`emergency_mobile` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '紧急联系电话',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户账户';
代码参考
/**
* 标签分类:(LabelClassNameification)表控制层
*
*/
@RestController
@RequestMapping("/label_class_nameification")
public class LabelClassNameificationController extends BaseController<LabelClassNameification, LabelClassNameificationService> {
/**
* 标签分类对象
*/
@Autowired
public LabelClassNameificationController(LabelClassNameificationService service) {
setService(service);
}
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
LabelClassNameification label_class_nameification = new LabelClassNameification();
label_class_nameification.setPest_label(paramMap.get("pest_label")==null?null:String.valueOf(paramMap.get("pest_label")));
label_class_nameification.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(label_class_nameification);
System.out.println("标签分类新增成功");
return success(1);
}
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
Map<String,String> queryMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
LabelClassNameification label_class_nameification = new LabelClassNameification();
label_class_nameification.setPest_label(paramMap.get("pest_label")==null?null:String.valueOf(paramMap.get("pest_label")));
this.setEntity(queryMap,configMap,label_class_nameification);
System.out.println("标签分类修改成功");
return success(1);
/**
* 用药推荐:(MedicationRecommendation)表控制层
*
*/
@RestController
@RequestMapping("/medication_recommendation")
public class MedicationRecommendationController extends BaseController<MedicationRecommendation, MedicationRecommendationService> {
/**
* 用药推荐对象
*/
@Autowired
public MedicationRecommendationController(MedicationRecommendationService service) {
setService(service);
}
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
MedicationRecommendation medication_recommendation = new MedicationRecommendation();
medication_recommendation.setFruit_grower_user(paramMap.get("fruit_grower_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("fruit_grower_user"))));
medication_recommendation.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name")));
medication_recommendation.setPest_type(paramMap.get("pest_type")==null?null:String.valueOf(paramMap.get("pest_type")));
medication_recommendation.setPurpose_of_medication(paramMap.get("purpose_of_medication")==null?null:String.valueOf(paramMap.get("purpose_of_medication")));
medication_recommendation.setSpecific_circumstances(paramMap.get("specific_circumstances")==null?null:String.valueOf(paramMap.get("specific_circumstances")));
medication_recommendation.setPrevention_and_control_programme(paramMap.get("prevention_and_control_programme")==null?null:String.valueOf(paramMap.get("prevention_and_control_programme")));
medication_recommendation.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(medication_recommendation);
System.out.println("用药推荐新增成功");
return success(1);
}
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
Map<String,String> queryMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
MedicationRecommendation medication_recommendation = new MedicationRecommendation();
medication_recommendation.setFruit_grower_user(paramMap.get("fruit_grower_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("fruit_grower_user"))));
medication_recommendation.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name")));
medication_recommendation.setPest_type(paramMap.get("pest_type")==null?null:String.valueOf(paramMap.get("pest_type")));
medication_recommendation.setPurpose_of_medication(paramMap.get("purpose_of_medication")==null?null:String.valueOf(paramMap.get("purpose_of_medication")));
medication_recommendation.setSpecific_circumstances(paramMap.get("specific_circumstances")==null?null:String.valueOf(paramMap.get("specific_circumstances")));
medication_recommendation.setPrevention_and_control_programme(paramMap.get("prevention_and_control_programme")==null?null:String.valueOf(paramMap.get("prevention_and_control_programme")));
this.setEntity(queryMap,configMap,medication_recommendation);
System.out.println("用药推荐修改成功");
return success(1);
前端:基于Vue.js框架构建用户界面,使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑,通过Vue Router管理路由,Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面,Axios封装HTTP请求实现与后端的数据通信。
后端:基于Django框架搭建,遵循MTV(Model-Template-View)模式,同时结合DRF(Django REST Framework)实现RESTful API。Model层定义数据模型并与数据库交互,View层通过DRF的视图集(ViewSet)或通用视图(GenericView)处理请求,并结合序列化器(Serializer)完成数据的序列化与反序列化,Service层(可选)封装复杂业务逻辑,保持视图层简洁。使用Django内置的认证系统或djangorestframework-simplejwt结合JWT实现用户认证与权限控制。
数据库:采用MySQL存储持久化数据,Redis缓存热点信息以提升系统性能。
开发工具:使用PyCharm开发后端,VSCode或HBuilderX开发前端,Git进行版本管理,pipenv或poetry管理后端依赖,npm管理前端依赖。
源码获取
私信联系我即可~
大家点赞、收藏、关注、评论啦
👇 精彩专栏 推荐订阅👇
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/Weixin_CXSJ881/article/details/163632930




