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

东莞做商城网站建设云开发是什么

东莞做商城网站建设,云开发是什么,怒江州城乡建设局网站,中国建设银行深圳分行网站1. 套餐分页查询模块 1.1 需求分析 系统中的套餐数据很多的时候#xff0c;如果在一个页面中全部展示出来会显得比较乱#xff0c;不便于查看#xff0c;所以一般的系统中都会以分页的方式来展示列表数据。 在进行套餐数据的分页查询时#xff0c;除了传递分页参数以外如果在一个页面中全部展示出来会显得比较乱不便于查看所以一般的系统中都会以分页的方式来展示列表数据。 在进行套餐数据的分页查询时除了传递分页参数以外还可以传递一个可选的条件(套餐名称)。查询返回的字段中包含套餐的基本信息之外还有一个套餐的分类名称在查询时需要关联查询这个字段。 1.2 套餐分页查询时前端页面和服务端的前端页面交互过程分析 1). 访问页面(backend/page/combo/list.html)页面加载时会自动发送ajax请求将分页查询参数(page、pageSize、name)提交到服务端获取分页数据 2). 在列表渲染展示时页面发送请求请求服务端进行图片下载用于页面图片展示(已实现) 已经实现文件下载功能因此主要实现列表分页查询功能, 具体的请求信息如下: 请求说明请求方式GET请求路径/setmeal/page请求参数?page1pageSize10namexxx 1.3 套餐分页查询中基本信息查询流程 1). 构建分页条件对象 2). 构建查询条件对象如果传递了套餐名称根据套餐名称模糊查询 并对结果按修改时间降序排序 3). 执行分页查询 4). 组装数据并返回 1.4 代码编写 在查询套餐信息时, 只包含套餐的基本信息, 并不包含套餐的分类名称因此在这里查询到套餐的基本信息后, 还需要根据分类ID(categoryId)查询套餐分类名称(categoryName)并最终将套餐的基本信息及分类名称信息封装到SetmealDto中。 1.4.1 引入SetmealDto package com.itheima.reggie.dto;import com.itheima.reggie.entity.Setmeal; import com.itheima.reggie.entity.SetmealDish; import lombok.Data; import java.util.List;Data public class SetmealDto extends Setmeal {private ListSetmealDish setmealDishes;private String categoryName; }1.4.2 SetmealController中page()代码编写 package com.itheima.reggie.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.itheima.reggie.common.R; import com.itheima.reggie.dto.SetmealDto; import com.itheima.reggie.entity.Category; import com.itheima.reggie.entity.Setmeal; import com.itheima.reggie.service.CategoryService; import com.itheima.reggie.service.SetmealDishService; import com.itheima.reggie.service.SetmealService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;import java.util.List; import java.util.stream.Collectors; /*** Description: 套餐管理* 不仅需要保存套餐的基本信息还需要保存套餐关联的菜品数据所以需要再该方法中调用业务层方法,完成两块数据的保存。* version 1.0* date 2022/8/19 15:37*/RestController RequestMapping(/setmeal) Slf4j public class SetmealController {Autowiredprivate SetmealService setmealService;Autowiredprivate CategoryService categoryService;Autowiredprivate SetmealDishService setmealDishService;PostMapping// 页面传递的数据是json格式需要在方法形参前面加上RequestBody注解, 完成参数封装。public RString save(RequestBody SetmealDto setmealDto){/**Description: 新增套餐* version v1.0* author LiBiGo* date 2022/8/19 16:04*/log.info(套餐信息{},setmealDto);setmealService.saveWithDish(setmealDto);return R.success(新增套餐成功);}GetMapping(/page)public RPage page(int page,int pageSize,String name){/**Description: 套餐分页查询* author LiBiGo* date 2022/8/21 10:40*/// 分页构造器对象PageSetmeal pageInfo new Page(page,pageSize);PageSetmealDto dtoPage new Page();LambdaQueryWrapperSetmeal queryWrapper new LambdaQueryWrapper();// 添加查询条件根据name进行like模糊查询queryWrapper.like(name!null,Setmeal::getName,name);// 排序条件根据更新时间进行降序排序queryWrapper.orderByDesc(Setmeal::getUpdateTime);setmealService.page(pageInfo,queryWrapper);// 拷贝对象BeanUtils.copyProperties(pageInfo,dtoPage,record);ListSetmeal records pageInfo.getRecords();ListSetmealDto list records.stream().map((item) - {SetmealDto setmealDto new SetmealDto();//对象拷贝BeanUtils.copyProperties(item,setmealDto);//分类idLong categoryId item.getCategoryId();//根据分类id查询分类对象Category category categoryService.getById(categoryId);if(category ! null){//分类名称String categoryName category.getName();setmealDto.setCategoryName(categoryName);}return setmealDto;}).collect(Collectors.toList());dtoPage.setRecords(list);return R.success(dtoPage);}}1.5 功能测试 代码完善后重启服务测试列表查询我们发现, 抓取浏览器的请求响应数据我们可以获取到套餐分类名称categoryName也可以在列表页面展示出来 。 2. 删除套餐 2.1 需求分析 在套餐管理列表页面,点击删除按钮可以删除对应的套餐信息。也可以通过复选框选择多个套餐点击批量删除按钮一次删除多个套餐。 对于状态为售卖中的套餐不能删除需要先停售然后才能删除。 2.2 删除套餐时前端页面和服务端的前端页面交互过程分析 1). 点击删除, 删除单个套餐时页面发送ajax请求根据套餐id删除对应套餐 2). 删除多个套餐时页面发送ajax请求根据提交的多个套餐id删除对应套餐 开发删除套餐功能其实就是在服务端编写代码去处理前端页面发送的这2次请求即可一次请求为根据ID删除一次请求为根据ID批量删除。 观察删除单个套餐和批量删除套餐的请求信息可以发现两种请求的地址和请求方式都是相同的不同的则是传递的id个数所以在服务端可以提供一个方法来统一处理。 具体的请求信息如下 请求说明请求方式DELETE请求路径/setmeal请求参数?ids1423640210125656065,14233387650022563852.3 代码开发 在服务端的逻辑中, 删除套餐时不仅要删除套餐, 还要删除套餐与菜品的关联关系。 1). 在SetmealController中创建delete方法 /*** 删除套餐* param ids* return*/ DeleteMapping public RString delete(RequestParam ListLong ids){log.info(ids:{},ids);return R.success(套餐数据删除成功); } 2). SetmealService接口定义方法removeWithDish package com.itheima.reggie.service;import com.baomidou.mybatisplus.extension.service.IService; import com.itheima.reggie.dto.SetmealDto; import com.itheima.reggie.entity.Setmeal;import java.util.List;public interface SetmealService extends IServiceSetmeal {// 新增套餐同时需要保存套餐和菜品的关联关系public void saveWithDish(SetmealDto setmealDto);// 删除套餐同时需要删除套餐和菜菜品的关联public void removeWithDish(ListLong ids); }3). SetmealServiceImpl中实现方法removeWithDish A. 查询该批次套餐中是否存在售卖中的套餐, 如果存在, 不允许删除 B. 删除套餐数据 C. 删除套餐关联的菜品数据 代码实现 package com.itheima.reggie.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.itheima.reggie.common.CustomException; import com.itheima.reggie.dto.SetmealDto; import com.itheima.reggie.entity.Setmeal; import com.itheima.reggie.entity.SetmealDish; import com.itheima.reggie.mapper.SetmealMapper; import com.itheima.reggie.service.SetmealDishService; import com.itheima.reggie.service.SetmealService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;import java.util.List; import java.util.stream.Collectors;/*** Description: new java files header..** author w* version 1.0* date 2022/8/16 10:17*/ Service Slf4j public class SetmealServiceImpl extends ServiceImplSetmealMapper, Setmeal implements SetmealService {Autowiredprivate SetmealDishService setmealDishService ;TransactionalOverridepublic void saveWithDish(SetmealDto setmealDto) {/**Description: 新增套餐同时需要保存套餐和菜品的关联关系** A. 保存套餐基本信息* B. 获取套餐关联的菜品集合并为集合中的每一个元素赋值套餐ID(setmealId)* C. 批量保存套餐关联的菜品集合** author LiBiGo* date 2022/8/19 16:10*/// 保存套餐的基本信息操作setmeal执行insert操作this.save(setmealDto);ListSetmealDish setmealDishes setmealDto.getSetmealDishes();setmealDishes.stream().map((item) - {item.setSetmealId(setmealDto.getId());return item;}).collect(Collectors.toList());// 保存套餐和菜品的关联信息操作setmeal_dish执行insert操作setmealDishService.saveBatch(setmealDishes);}OverrideTransactional// 删除套餐同时需要删除套餐和菜菜品的关联public void removeWithDish(ListLong ids) {//查询套餐状态确定是否可用删除LambdaQueryWrapperSetmeal queryWrapper new LambdaQueryWrapper();queryWrapper.in(Setmeal::getId,ids);queryWrapper.eq(Setmeal::getStatus,1);int count this.count(queryWrapper);if(count 0){//如果不能删除抛出一个业务异常throw new CustomException(套餐正在售卖中不能删除);}//如果可以删除先删除套餐表中的数据---setmealthis.removeByIds(ids);//delete from setmeal_dish where setmeal_id in (1,2,3)LambdaQueryWrapperSetmealDish lambdaQueryWrapper new LambdaQueryWrapper();lambdaQueryWrapper.in(SetmealDish::getSetmealId,ids);//删除关系表中的数据----setmeal_dishsetmealDishService.remove(lambdaQueryWrapper);} }4). 完善SetmealController代码 package com.itheima.reggie.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.itheima.reggie.common.R; import com.itheima.reggie.dto.SetmealDto; import com.itheima.reggie.entity.Category; import com.itheima.reggie.entity.Setmeal; import com.itheima.reggie.service.CategoryService; import com.itheima.reggie.service.SetmealDishService; import com.itheima.reggie.service.SetmealService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;import java.util.List; import java.util.stream.Collectors; /*** Description: 套餐管理* 不仅需要保存套餐的基本信息还需要保存套餐关联的菜品数据所以需要再该方法中调用业务层方法,完成两块数据的保存。* version 1.0* date 2022/8/19 15:37*/RestController RequestMapping(/setmeal) Slf4j public class SetmealController {Autowiredprivate SetmealService setmealService;Autowiredprivate CategoryService categoryService;Autowiredprivate SetmealDishService setmealDishService;PostMapping// 页面传递的数据是json格式需要在方法形参前面加上RequestBody注解, 完成参数封装。public RString save(RequestBody SetmealDto setmealDto){/**Description: 新增套餐* version v1.0* author LiBiGo* date 2022/8/19 16:04*/log.info(套餐信息{},setmealDto);setmealService.saveWithDish(setmealDto);return R.success(新增套餐成功);}GetMapping(/page)public RPage page(int page,int pageSize,String name){/**Description: 套餐分页查询* author LiBiGo* date 2022/8/21 10:40*/// 分页构造器对象PageSetmeal pageInfo new Page(page,pageSize);PageSetmealDto dtoPage new Page();LambdaQueryWrapperSetmeal queryWrapper new LambdaQueryWrapper();// 添加查询条件根据name进行like模糊查询queryWrapper.like(name!null,Setmeal::getName,name);// 排序条件根据更新时间进行降序排序queryWrapper.orderByDesc(Setmeal::getUpdateTime);setmealService.page(pageInfo,queryWrapper);// 拷贝对象BeanUtils.copyProperties(pageInfo,dtoPage,record);ListSetmeal records pageInfo.getRecords();ListSetmealDto list records.stream().map((item) - {SetmealDto setmealDto new SetmealDto();//对象拷贝BeanUtils.copyProperties(item,setmealDto);//分类idLong categoryId item.getCategoryId();//根据分类id查询分类对象Category category categoryService.getById(categoryId);if(category ! null){//分类名称String categoryName category.getName();setmealDto.setCategoryName(categoryName);}return setmealDto;}).collect(Collectors.toList());dtoPage.setRecords(list);return R.success(dtoPage);}DeleteMappingpublic RString delete(RequestParam ListLong ids){/**Description: 删除套餐* author LiBiGo* date 2022/8/21 11:35*/log.info(ids:{},ids);setmealService.removeWithDish(ids);return R.success(套餐数据删除成功);}GetMapping(/list)public RListSetmeal list(Setmeal setmeal) {log.info(setmeal:{}, setmeal);//条件构造器LambdaQueryWrapperSetmeal queryWrapper new LambdaQueryWrapper();queryWrapper.like(StringUtils.isNotEmpty(setmeal.getName()), Setmeal::getName, setmeal.getName());queryWrapper.eq(null ! setmeal.getCategoryId(), Setmeal::getCategoryId, setmeal.getCategoryId());queryWrapper.eq(null ! setmeal.getStatus(), Setmeal::getStatus, setmeal.getStatus());queryWrapper.orderByDesc(Setmeal::getUpdateTime);return R.success(setmealService.list(queryWrapper));}}3.4 功能测试 代码完善后重启服务测试套餐的删除功能主要测试以下几种情况。 1). 删除正在启用的套餐报错 2). 执行批量操作, 删除两条记录, 一个启售的, 一个停售的
http://www.sadfv.cn/news/38713/

相关文章:

  • 网站平台建设项目书做ppt图片用的网站有哪些
  • 有实力的网站建设公司青岛网站开发公司
  • 江苏住房和建设厅网站全屋定制加盟品牌加盟网
  • 做网站代理工作安全吗wordpress配置网络
  • 制作企业网站的报告北京 外贸网站
  • 先买域名不建设网站吗河间市网站建设公司
  • 河南网站seo地址如何使用手机看建设网站
  • 黑龙江交通系统网站建设算命公司网站建设制作开发方案
  • 建英语网站唐山建设网站的网站
  • 四川省建设人才网站浙江做网站
  • 可以直接打开网站的方法公司为什么要网站备案
  • 摄影网站制作软件百度指数如何分析
  • 公司网站地址郑州做网站优化的公司
  • 网站建设的电销遵义网约车平台
  • 网站报价方案范文wap网站下载
  • 济南品牌网站建设价格低企业文化墙创意设计图
  • 前台网站模板建设银行激活网站
  • 徐州h5建站模板专做特产的网站
  • 网站游戏怎么制作品牌设计网站有哪些
  • 做网站手机推荐o2o网站建设
  • 多国语言 网站源码宜宾网站建设费用
  • 上海建筑网站建设seo网页优化培训
  • 网站建设设计费会计分录销售易crm官网下载
  • 腾讯云 门户网站建设背景图片素材
  • 网站建设常熟wordpress 4.8 zh cn
  • 网站制作需要哪些软件wordpress首页发布图片
  • 营销型网站备案wordpress标签云添加
  • 做网贷中介网站赚钱吗湖南汉泰建设有限公司网站
  • 营销型网站建设核心要素响应式网站价格
  • 高端 建站软件开发工具有哪些功能