96SEO 2026-02-19 22:57 11
需求分析和设计1.1.1产品原型1.1.2接口设计1.1.3数据库设计

需求分析和设计4.1.1产品原型4.1.2接口设计共涉及到5个接口
套餐名称唯一套餐必须属于某个分类套餐必须包含菜品名称、分类、价格、图片为必填项添加菜品窗口需要根据分类类型来展示菜品新增的套餐默认为停售状态
根据类型查询分类已完成根据分类id查询菜品图片上传已完成新增套餐
字段名数据类型说明备注idbigint主键自增namevarchar(32)套餐名称唯一category_idbigint分类id逻辑外键pricedecimal(10,2)套餐价格imagevarchar(255)图片路径descriptionvarchar(255)套餐描述statusint售卖状态1起售
0停售create_timedatetime创建时间update_timedatetime最后修改时间create_userbigint创建人idupdate_userbigint最后修改人id
setmeal_dish表为套餐菜品关系表用于存储套餐和菜品的关联关系。
具体表结构如下
字段名数据类型说明备注idbigint主键自增setmeal_idbigint套餐id逻辑外键dish_idbigint菜品id逻辑外键namevarchar(32)菜品名称冗余字段pricedecimal(10,2)菜品单价冗余字段copiesint菜品份数
dishService.list(categoryId);return
Dish.builder().categoryId(categoryId).status(StatusConstant.ENABLE).build();return
return*/PostMappingApiOperation(新增套餐)public
{setmealService.saveWithDish(setmealDTO);return
setmealDishMapper;Autowiredprivate
setmealDTO*/Transactionalpublic
Setmeal();BeanUtils.copyProperties(setmealDTO,
setmeal);//向套餐表插入数据setmealMapper.insert(setmeal);//获取生成的套餐idLong
setmeal.getId();ListSetmealDish
setmealDTO.getSetmealDishes();setmealDishes.forEach(setmealDish
{setmealDish.setSetmealId(setmealId);});//保存套餐和菜品的关联关系setmealDishMapper.insertBatch(setmealDishes);}
setmeal_dish(setmeal_id,dish_id,name,price,copies)valuesforeach
separator,(#{sd.setmealId},#{sd.dishId},#{sd.name},#{sd.price},#{sd.copies})/foreach
根据页码进行分页展示每页展示10条数据可以根据需要按照套餐名称、分类、售卖状态进行查询
setmealService.pageQuery(setmealPageQueryDTO);return
setmealPageQueryDTO.getPage();int
setmealPageQueryDTO.getPageSize();PageHelper.startPage(pageNum,
setmealMapper.pageQuery(setmealPageQueryDTO);return
resultTypecom.sky.vo.SetmealVOselects.*,c.name
ids){setmealService.deleteBatch(ids);return
setmealMapper.getById(id);if(StatusConstant.ENABLE
setmeal.getStatus()){//起售中的套餐不能删除throw
DeletionNotAllowedException(MessageConstant.SETMEAL_ON_SALE);}});ids.forEach(setmealId
{//删除套餐表中的数据setmealMapper.deleteById(setmealId);//删除套餐菜品关系表中的数据setmealDishMapper.deleteBySetmealId(setmealId);});
根据id查询套餐根据类型查询分类已完成根据分类id查询菜品已完成图片上传已完成修改套餐
setmealService.getByIdWithDish(id);return
{setmealService.update(setmealDTO);return
setmealMapper.getById(id);ListSetmealDish
setmealDishMapper.getBySetmealId(id);SetmealVO
SetmealVO();BeanUtils.copyProperties(setmeal,
setmealVO);setmealVO.setSetmealDishes(setmealDishes);return
Setmeal();BeanUtils.copyProperties(setmealDTO,
setmeal);//1、修改套餐表执行updatesetmealMapper.update(setmeal);//套餐idLong
setmealDTO.getId();//2、删除套餐和菜品的关联关系操作setmeal_dish表执行deletesetmealDishMapper.deleteBySetmealId(setmealId);ListSetmealDish
setmealDTO.getSetmealDishes();setmealDishes.forEach(setmealDish
{setmealDish.setSetmealId(setmealId);});//3、重新插入套餐和菜品的关联关系操作setmeal_dish表执行insertsetmealDishMapper.insertBatch(setmealDishes);
可以对状态为起售的套餐进行停售操作可以对状态为停售的套餐进行起售操作起售的套餐可以展示在用户端停售的套餐不能展示在用户端起售套餐时如果套餐内包含停售的菜品则不能起售
{setmealService.startOrStop(status,
{//起售套餐时判断套餐内是否有停售菜品有停售菜品提示套餐内包含未启售菜品无法启售if(status
StatusConstant.ENABLE){//select
dishMapper.getBySetmealId(id);if(dishList
SetmealEnableFailedException(MessageConstant.SETMEAL_ENABLE_FAILED);}});}}Setmeal
Setmeal.builder().id(id).status(status).build();setmealMapper.update(setmeal);
美好的一天到此结束下次继续努力欲知后续请看下回分解写作不易感谢大家的支持
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback