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

果洛营销网站建设哪家好余姚网站建设企业

果洛营销网站建设哪家好,余姚网站建设企业,自己如何建设企业网站,响应式设计网站套餐模块功能开发 1. 新增套餐1.1 需求分析和设计1.1.1产品原型#xff1a;1.1.2接口设计#xff1a;1.1.3数据库设计#xff1a; 1.2 代码开发1.2.1 DishController层1.2.2 DishService接口类1.2.3 DishServiceImpl接口实现类1.2.4 DishMapper层1.2.5 DishMapper.xml1.2.6 … 套餐模块功能开发 1. 新增套餐1.1 需求分析和设计1.1.1产品原型1.1.2接口设计1.1.3数据库设计 1.2 代码开发1.2.1 DishController层1.2.2 DishService接口类1.2.3 DishServiceImpl接口实现类1.2.4 DishMapper层1.2.5 DishMapper.xml1.2.6 SetmealController层1.2.7 SetmealService接口类1.2.8 SetmealServiceImpl接口实现类1.2.9 SetmealMapper层1.2.10 SetmealMapper.xml1.2.11 SetmealDishMapper层1.2.12 SetmealDishMapper.xml 2. 套餐分页查询2.1 需求分析和设计2.1.1产品原型2.1.2接口设计 2.2 代码开发2.2.1 SetmealController层2.2.2 SetmealService接口类2.2.3 SetmealServiceImpl接口实现类2.2.4 SetmealMapper层2.2.5 SetmealMapper.xml 3. 删除套餐3.1 需求分析和设计3.1.1产品原型3.1.2接口设计 3.2 代码实现3.2.1 SetmealController层3.2.2 SetmealService接口类3.2.3 SetmealServiceImpl接口实现类3.2.4 SetmealMapper层3.2.5 SetmealDishMapper 4. 修改套餐4.1 需求分析和设计4.1.1产品原型4.1.2接口设计共涉及到5个接口 4.2 代码实现4.2.1 SetmealController层4.2.2 SetmealService接口类4.2.3 SetmealServiceImpl接口实现类4.2.4 SetmealDishMapper层 5. 起售停售套餐5.1 需求分析和设计5.1.1产品原型5.1.2接口设计 5.2 代码实现5.2.1 SetmealController层5.2.2 SetmealService接口类5.2.3 SetmealServiceImpl接口实现类5.2.4 DishMapper层 1. 新增套餐 1.1 需求分析和设计 1.1.1产品原型 业务规则 套餐名称唯一套餐必须属于某个分类套餐必须包含菜品名称、分类、价格、图片为必填项添加菜品窗口需要根据分类类型来展示菜品新增的套餐默认为停售状态 接口设计共涉及到4个接口 根据类型查询分类已完成根据分类id查询菜品图片上传已完成新增套餐 1.1.2接口设计 1.1.3数据库设计 setmeal表为套餐表用于存储套餐的信息。具体表结构如下 字段名数据类型说明备注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菜品份数 1.2 代码开发 1.2.1 DishController层 /*** 根据分类id查询菜品* param categoryId* return */ GetMapping(/list) ApiOperation(根据分类id查询菜品) public ResultListDish list(Long categoryId){ListDish list dishService.list(categoryId);return Result.success(list); }1.2.2 DishService接口类 /*** 根据分类id查询菜品* param categoryId* return */ ListDish list(Long categoryId);1.2.3 DishServiceImpl接口实现类 /*** 根据分类id查询菜品* param categoryId* return */ public ListDish list(Long categoryId) {Dish dish Dish.builder().categoryId(categoryId).status(StatusConstant.ENABLE).build();return dishMapper.list(dish); }1.2.4 DishMapper层 /*** 动态条件查询菜品* param dish* return */ ListDish list(Dish dish);1.2.5 DishMapper.xml select idlist resultTypeDish parameterTypeDishselect * from dishwhereif testname ! nulland name like concat(%,#{name},%)/ifif testcategoryId ! nulland category_id #{categoryId}/ifif teststatus ! nulland status #{status}/if/whereorder by create_time desc /select1.2.6 SetmealController层 /*** 套餐管理*/ RestController RequestMapping(/admin/setmeal) Api(tags 套餐相关接口) Slf4j public class SetmealController {Autowiredprivate SetmealService setmealService;/*** 新增套餐* param setmealDTO* return*/PostMappingApiOperation(新增套餐)public Result save(RequestBody SetmealDTO setmealDTO) {setmealService.saveWithDish(setmealDTO);return Result.success();} }1.2.7 SetmealService接口类 public interface SetmealService {/*** 新增套餐同时需要保存套餐和菜品的关联关系* param setmealDTO*/void saveWithDish(SetmealDTO setmealDTO); }1.2.8 SetmealServiceImpl接口实现类 /*** 套餐业务实现*/ Service Slf4j public class SetmealServiceImpl implements SetmealService {Autowiredprivate SetmealMapper setmealMapper;Autowiredprivate SetmealDishMapper setmealDishMapper;Autowiredprivate DishMapper dishMapper;/*** 新增套餐同时需要保存套餐和菜品的关联关系* param setmealDTO*/Transactionalpublic void saveWithDish(SetmealDTO setmealDTO) {Setmeal setmeal new Setmeal();BeanUtils.copyProperties(setmealDTO, setmeal);//向套餐表插入数据setmealMapper.insert(setmeal);//获取生成的套餐idLong setmealId setmeal.getId();ListSetmealDish setmealDishes setmealDTO.getSetmealDishes();setmealDishes.forEach(setmealDish - {setmealDish.setSetmealId(setmealId);});//保存套餐和菜品的关联关系setmealDishMapper.insertBatch(setmealDishes);} }1.2.9 SetmealMapper层 /*** 新增套餐* param setmeal */ AutoFill(OperationType.INSERT) void insert(Setmeal setmeal);1.2.10 SetmealMapper.xml insert idinsert parameterTypeSetmeal useGeneratedKeystrue keyPropertyidinsert into setmeal(category_id, name, price, status, description, image, create_time, update_time, create_user, update_user)values (#{categoryId}, #{name}, #{price}, #{status}, #{description}, #{image}, #{createTime}, #{updateTime},#{createUser}, #{updateUser}) /insert1.2.11 SetmealDishMapper层 /*** 批量保存套餐和菜品的关联关系* param setmealDishes */ void insertBatch(ListSetmealDish setmealDishes);1.2.12 SetmealDishMapper.xml insert idinsertBatch parameterTypelistinsert into setmeal_dish(setmeal_id,dish_id,name,price,copies)valuesforeach collectionsetmealDishes itemsd separator,(#{sd.setmealId},#{sd.dishId},#{sd.name},#{sd.price},#{sd.copies})/foreach /insert2. 套餐分页查询 2.1 需求分析和设计 2.1.1产品原型 业务规则 根据页码进行分页展示每页展示10条数据可以根据需要按照套餐名称、分类、售卖状态进行查询 2.1.2接口设计 2.2 代码开发 2.2.1 SetmealController层 /*** 分页查询* param setmealPageQueryDTO* return */ GetMapping(/page) ApiOperation(分页查询) public ResultPageResult page(SetmealPageQueryDTO setmealPageQueryDTO) {PageResult pageResult setmealService.pageQuery(setmealPageQueryDTO);return Result.success(pageResult); }2.2.2 SetmealService接口类 /*** 分页查询* param setmealPageQueryDTO* return */ PageResult pageQuery(SetmealPageQueryDTO setmealPageQueryDTO);2.2.3 SetmealServiceImpl接口实现类 /*** 分页查询* param setmealPageQueryDTO* return */ public PageResult pageQuery(SetmealPageQueryDTO setmealPageQueryDTO) {int pageNum setmealPageQueryDTO.getPage();int pageSize setmealPageQueryDTO.getPageSize();PageHelper.startPage(pageNum, pageSize);PageSetmealVO page setmealMapper.pageQuery(setmealPageQueryDTO);return new PageResult(page.getTotal(), page.getResult()); }2.2.4 SetmealMapper层 /*** 分页查询* param setmealPageQueryDTO* return */ PageSetmealVO pageQuery(SetmealPageQueryDTO setmealPageQueryDTO);2.2.5 SetmealMapper.xml select idpageQuery resultTypecom.sky.vo.SetmealVOselects.*,c.name categoryNamefromsetmeal sleft joincategory cons.category_id c.idwhereif testname ! nulland s.name like concat(%,#{name},%)/ifif teststatus ! nulland s.status #{status}/ifif testcategoryId ! nulland s.category_id #{categoryId}/if/whereorder by s.create_time desc /select3. 删除套餐 3.1 需求分析和设计 3.1.1产品原型 业务规则 可以一次删除一个套餐也可以批量删除套餐起售中的套餐不能删除 3.1.2接口设计 3.2 代码实现 3.2.1 SetmealController层 /*** 批量删除套餐* param ids* return */ DeleteMapping ApiOperation(批量删除套餐) public Result delete(RequestParam ListLong ids){setmealService.deleteBatch(ids);return Result.success(); }3.2.2 SetmealService接口类 /*** 批量删除套餐* param ids */ void deleteBatch(ListLong ids);3.2.3 SetmealServiceImpl接口实现类 /*** 批量删除套餐* param ids */ Transactional public void deleteBatch(ListLong ids) {ids.forEach(id - {Setmeal setmeal setmealMapper.getById(id);if(StatusConstant.ENABLE setmeal.getStatus()){//起售中的套餐不能删除throw new DeletionNotAllowedException(MessageConstant.SETMEAL_ON_SALE);}});ids.forEach(setmealId - {//删除套餐表中的数据setmealMapper.deleteById(setmealId);//删除套餐菜品关系表中的数据setmealDishMapper.deleteBySetmealId(setmealId);}); }3.2.4 SetmealMapper层 /*** 根据id查询套餐* param id* return */ Select(select * from setmeal where id #{id}) Setmeal getById(Long id);/*** 根据id删除套餐* param setmealId */ Delete(delete from setmeal where id #{id}) void deleteById(Long setmealId);3.2.5 SetmealDishMapper /*** 根据套餐id删除套餐和菜品的关联关系* param setmealId */ Delete(delete from setmeal_dish where setmeal_id #{setmealId}) void deleteBySetmealId(Long setmealId);4. 修改套餐 4.1 需求分析和设计 4.1.1产品原型 4.1.2接口设计共涉及到5个接口 根据id查询套餐根据类型查询分类已完成根据分类id查询菜品已完成图片上传已完成修改套餐 4.2 代码实现 4.2.1 SetmealController层 /*** 根据id查询套餐用于修改页面回显数据** param id* return */ GetMapping(/{id}) ApiOperation(根据id查询套餐) public ResultSetmealVO getById(PathVariable Long id) {SetmealVO setmealVO setmealService.getByIdWithDish(id);return Result.success(setmealVO); }/*** 修改套餐** param setmealDTO* return */ PutMapping ApiOperation(修改套餐) public Result update(RequestBody SetmealDTO setmealDTO) {setmealService.update(setmealDTO);return Result.success(); }4.2.2 SetmealService接口类 /*** 根据id查询套餐和关联的菜品数据* param id* return */ SetmealVO getByIdWithDish(Long id);/*** 修改套餐* param setmealDTO */ void update(SetmealDTO setmealDTO);4.2.3 SetmealServiceImpl接口实现类 /*** 根据id查询套餐和套餐菜品关系** param id* return */ public SetmealVO getByIdWithDish(Long id) {Setmeal setmeal setmealMapper.getById(id);ListSetmealDish setmealDishes setmealDishMapper.getBySetmealId(id);SetmealVO setmealVO new SetmealVO();BeanUtils.copyProperties(setmeal, setmealVO);setmealVO.setSetmealDishes(setmealDishes);return setmealVO; }/*** 修改套餐** param setmealDTO */ Transactional public void update(SetmealDTO setmealDTO) {Setmeal setmeal new Setmeal();BeanUtils.copyProperties(setmealDTO, setmeal);//1、修改套餐表执行updatesetmealMapper.update(setmeal);//套餐idLong setmealId setmealDTO.getId();//2、删除套餐和菜品的关联关系操作setmeal_dish表执行deletesetmealDishMapper.deleteBySetmealId(setmealId);ListSetmealDish setmealDishes setmealDTO.getSetmealDishes();setmealDishes.forEach(setmealDish - {setmealDish.setSetmealId(setmealId);});//3、重新插入套餐和菜品的关联关系操作setmeal_dish表执行insertsetmealDishMapper.insertBatch(setmealDishes); }4.2.4 SetmealDishMapper层 /*** 根据套餐id查询套餐和菜品的关联关系* param setmealId* return*/Select(select * from setmeal_dish where setmeal_id #{setmealId})ListSetmealDish getBySetmealId(Long setmealId);5. 起售停售套餐 5.1 需求分析和设计 5.1.1产品原型 业务规则 可以对状态为起售的套餐进行停售操作可以对状态为停售的套餐进行起售操作起售的套餐可以展示在用户端停售的套餐不能展示在用户端起售套餐时如果套餐内包含停售的菜品则不能起售 5.1.2接口设计 5.2 代码实现 5.2.1 SetmealController层 /*** 套餐起售停售* param status* param id* return */ PostMapping(/status/{status}) ApiOperation(套餐起售停售) public Result startOrStop(PathVariable Integer status, Long id) {setmealService.startOrStop(status, id);return Result.success(); }5.2.2 SetmealService接口类 /*** 套餐起售、停售* param status* param id */ void startOrStop(Integer status, Long id);5.2.3 SetmealServiceImpl接口实现类 /*** 套餐起售、停售* param status* param id */ public void startOrStop(Integer status, Long id) {//起售套餐时判断套餐内是否有停售菜品有停售菜品提示套餐内包含未启售菜品无法启售if(status StatusConstant.ENABLE){//select a.* from dish a left join setmeal_dish b on a.id b.dish_id where b.setmeal_id ?ListDish dishList dishMapper.getBySetmealId(id);if(dishList ! null dishList.size() 0){dishList.forEach(dish - {if(StatusConstant.DISABLE dish.getStatus()){throw new SetmealEnableFailedException(MessageConstant.SETMEAL_ENABLE_FAILED);}});}}Setmeal setmeal Setmeal.builder().id(id).status(status).build();setmealMapper.update(setmeal); }5.2.4 DishMapper层 /*** 根据套餐id查询菜品* param setmealId* return */ Select(select a.* from dish a left join setmeal_dish b on a.id b.dish_id where b.setmeal_id #{setmealId}) ListDish getBySetmealId(Long setmealId);后记 美好的一天到此结束下次继续努力欲知后续请看下回分解写作不易感谢大家的支持
http://www.hkea.cn/news/14507803/

相关文章:

  • 站长工具ping检测wordpress 网站标题设置方法
  • 网站的空间怎么查展厅设计费
  • 网站的外链建设虚拟机做局域网网站服务器
  • 企业网站官网制作拉新注册app拿佣金
  • 免费推广网站2023房地产销售述职报告
  • 做门窗做什么网站好海口网站建设方案
  • 无锡手机网站建设网站建设财务策划书
  • dedecms 建两个网站的问题wordpress使用图床
  • 网站前端需要会什么太原网站建设多少钱
  • 单页网站版权显示河南网站托管
  • 网站建设基础服务报价建筑设计师要学什么专业
  • 东莞网站设计制作湛江网站建设优化推广
  • 9元包邮网站怎么做wordpress主题和预览不同
  • ps做图 游戏下载网站百度网盘搜索神器
  • 做兼职网上哪个网站好顺德网站建设基本流程
  • 东台网站网站建设呼市网站制作招聘
  • 电脑维护网站模板北京市政建设集团有限责任公司网站
  • 网站内部链接海口模板网站建站
  • 网站静态页面网站好玩代码和特效
  • 中国制造网网站特色公司广告宣传片拍摄
  • 陕西启康建设有限公司网站高级网页设计师证书有用吗
  • 网站设计范文深圳网络公司老板
  • 违法网站建设国外服务器商城建站系统多少钱
  • 指数搜索seo有哪些优缺点?
  • 钻戒网站建设需求原创文章对网站的好处
  • 网站制作推广方案洞头区小程序模板源代码
  • 潍坊建网站北京网站建设手机app电子商务
  • 常德建设网站多少钱成都城乡建设网站
  • 百度收录左侧带图片的网站视频网站怎么制作
  • 免费logo设计网站推荐陕西省建设网三类人员成绩查询