文章目录
- 1.左侧菜单查询
- 1.1 数据库设计
- 1.2 pojo层
- 1.3 Mapper接口
- 1.4 Mapper.xml
- 1.5 ServiceImpl层
- 1.6 Controller层
- 2.显示
- 2.0 数据库
- 2.1 前端页面分析
- 2.1.1 生命周期函数
- 2.1.2 获取数据函数
- 2.2 接口文档
- 2.3 实现
- 2.3.1 Controller层
- 2.3.2 Service层
- 2.3.3 ServiceImpl层
- 2.3.4 pojo层
- 3.删除
- 3.1 前端页面分析
- 3.2 接口文档
- 4.3 实现
- 4.3.1 Controller层
- 4.3.2 ServiceImpl层
- 4.修改
- 4.1 前端页面分析
- 4.2 接口文档
- 4.3 实现
- 4.3.1 Controller层
- 4.3.2 ServiceImpl层
1.左侧菜单查询
1.1 数据库设计
1.2 pojo层
package com.ap.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;import java.util.List;@Data
@Accessors(chain = true)
@TableName("car")
public class Car extends BasePojo{@TableId(type = IdType.AUTO)//主键自增private Integer id;private String name;private Integer parentId;private String path;private Integer level;private String path1;private Boolean status;private String no1;private String no2;private String no3;@TableField(exist = false) //属性不是表字段private List<Shop> children; //不是表格固有属性
}
1.3 Mapper接口
package com.ap.mapper;import com.ap.pojo.Car;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;import java.util.List;public interface CarMapper extends BaseMapper<Car> {List<Car> getShopList();
}
1.4 Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ap.mapper.CarMapper"><select id="getShopList" resultMap="rightsRM">SELECT p.id,p.name,p.parent_id,p.path,p.level,p.created,p.updated,p.path1,c.id c_id,c.name c_name,c.parent_id c_parent_id,c.path c_path,c.level c_level,c.created c_created,c.updated c_updated,c.path1 c_path1 FROM(SELECT * FROM car WHERE parent_id = 0)pLEFT JOINcar cONp.id = c.parent_id</select><!--完成左侧菜单列表的数据封装 1-2级--><resultMap id="rightsRM" type="Car" autoMapping="true"><id property="id" column="id"></id><!--封装一对多数据--><collection property="children" ofType="Car"><id property="id" column="c_id"/><result property="name" column="c_name"/><result property="parentId" column="c_parent_id"/><result property="path" column="c_path"/><result property="level" column="c_level"/><result property="created" column="c_created"/><result property="updated" column="c_updated"/><result property="path1" column="c_path1"/></collection></resultMap>
</mapper>
1.5 ServiceImpl层
package com.ap.service;import com.ap.mapper.CarMapper;
import com.ap.pojo.Car;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CarServiceImpl implements CarService{@Autowiredprivate CarMapper carMapper;@Overridepublic List<Car> getShopList() {return carMapper.getShopList();}
}
1.6 Controller层
package com.ap.controller;import com.ap.pojo.Car;
import com.ap.service.CarService;
import com.ap.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@CrossOrigin
@RequestMapping("car")
public class CarController {@Autowiredprivate CarService carService;@GetMapping("/getShopList")public SysResult getShopList(){List<Car> car=carService.getShopList();return SysResult.success(car);}
}
2.显示
2.0 数据库
2.1 前端页面分析
2.1.1 生命周期函数
updated() {if(this.i !== this.queryItemInfo.id){this.queryItemInfo.id = this.ithis.getItemList()}},
2.1.2 获取数据函数
//实现商品信息分页查询//2.调用this.getItemList()async getItemList() {const {data: result} = await this.$http.get("/car/getItemList", {params: this.queryItemInfo //将分页对象传给后台})if (result.status !== 200) return this.$message.error("商品列表查询失败")this.itemList = result.data.rows //获取商品列表信息,将其传给itemListthis.total = result.data.total //获取商品列表中数据的总数},
2.2 接口文档
- 请求路径:/car/getItemList?query=&pageNum=1&pageSize=10
- 请求类型:Get
- 请求参数:使用pageResult对象接收
参数名称 | 参数说明 | 备注信息 |
---|---|---|
query | 用户查询的数据 | 可为null |
pageNum | 分页查询的页数 | 不能为null |
pageSize | 分页查询的条数 | 不能为null |
- 业务说明:查询三级分类菜单数据,要求三层嵌套结构
- 返回值:SysResult对象
参数名称 | 参数说明 | 备注信息 |
---|---|---|
status | 状态信息 | 200表示服务器请求成功,201表示服务器异常 |
msg | 服务器返回的提示信息 | 能为null |
data | 服务器返回的业务权限 | 3级商品分类信息 |
2.3 实现
2.3.1 Controller层
package com.ap.controller;import com.ap.pojo.ItemCopy;
import com.ap.service.ItemCopyService;
import com.ap.vo.PageResult;
import com.ap.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*汽车具体数据*/
@RestController
@CrossOrigin
@RequestMapping("/car/")
public class ItemCopyController {@Autowiredprivate ItemCopyService itemCopyService;/*** 请求路径:/car/getItemList?query=&pageNum=1&pageSize=10* 请求类型:Get* 请求参数:使用pageResult对象接收*/@GetMapping("/getItemList")public SysResult getItemList(PageResult pageResult){pageResult=itemCopyService.getItemList(pageResult);return SysResult.success(pageResult);}}
2.3.2 Service层
package com.ap.service;import com.ap.vo.PageResult;public interface ItemCopyService {PageResult getItemList(PageResult pageResult);
}
2.3.3 ServiceImpl层
package com.ap.service;import com.ap.mapper.ItemCopyMapper;
import com.ap.pojo.Item;
import com.ap.pojo.ItemCopy;
import com.ap.vo.PageResult;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;import java.util.List;@Service
public class ItemCopyServiceImpl implements ItemCopyService{@Autowiredprivate ItemCopyMapper itemCopyMapper;/*** 要求:3+2(总记录数,分页结果)* 参数1:page MP提供的分页对象* 参数2:条件构造器*/@Overridepublic PageResult getItemList(PageResult pageResult) {//1.构建分页对象,参数1:第几页,参数2:多少条Page<ItemCopy> page=new Page<>(pageResult.getPageNum(),pageResult.getPageSize());//2.准备条件构造器QueryWrapper<ItemCopy> queryWrapper = new QueryWrapper();String query=pageResult.getQuery();boolean flag = StringUtils.hasLength(query);queryWrapper.eq("item_cat_id", pageResult.getId());queryWrapper.like(flag,"title",query);//3.根据MP查询 实现分页数据的自动封装page=itemCopyMapper.selectPage(page, queryWrapper);//4.获取数据,返回分页对象long total = page.getTotal();//获取分页结果List<ItemCopy> rows = page.getRecords();return pageResult.setTotal(total).setRows(rows);}}
2.3.4 pojo层
package com.ap.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;@Data
@Accessors(chain = true)
@TableName("item_copy")
public class ItemCopy extends BasePojo{@TableId(type = IdType.AUTO)private Integer id; //商品Id号private String title; //商品标题信息private String sellPoint; //卖点信息private Integer price; //商品价格private Integer pricerow; //商品原价private Integer num; //商品数量private String images; //商品图片private Integer itemCatId; //商品分类ID号private Boolean status; //状态信息 0 下架 1 上架private Boolean display;private String title2;private String title3;private String images2; //商品图片private String images3; //商品图片
}
3.删除
3.1 前端页面分析
async deleteItemBtn(item) {//消息确认框this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(async () => {//根据id删除数据const {data: result} = await this.$http.delete("/car/deleteItemById", {params: {id: item.id}})if (result.status !== 200) return this.$message.error("商品删除失败")this.$message.success("商品删除成功")//重新获取商品列表信息this.getItemList()}).catch(() => {this.$message({type: 'info',message: '已取消删除'});});},
3.2 接口文档
-
请求路径:/shop/deleteItemCat
-
请求类型:DELETE
-
请求参数:id
4.3 实现
4.3.1 Controller层
/*** 请求路径:/car/deleteItemById* 请求类型:DELETE* 请求参数:用户ID*/@DeleteMapping("/deleteItemById")public SysResult deleteItemById(Integer id){itemCopyService.deleteItemById(id);return SysResult.success();}
4.3.2 ServiceImpl层
@Overridepublic void deleteItemById(Integer id) {itemCopyMapper.deleteById(id);}
4.修改
4.1 前端页面分析
//修改商品分类信息async updateItem(){let item= {}item.id=this.updateUserModel.iditem.title=this.updateUserModel.titleitem.title2=this.updateUserModel.title2item.title3=this.updateUserModel.title3item.sellPoint=this.updateUserModel.sellPointitem.price=this.updateUserModel.priceitem.pricerow=this.updateUserModel.pricerowitem.num=this.updateUserModel.numitem.images=this.updateUserModel.imagesitem.images2=this.updateUserModel.images2item.images3=this.updateUserModel.images3const {data: result} = await this.$http.put('/car/updateItem', item)if (result.status !== 200) return this.$message.error("更新商品失败")this.$message.success("更新商品成功")this.updateDialogVisible = falsethis.getItemList()}
4.2 接口文档
- 请求路径:/car/updateItemCat
- 请求类型:PUT
- 请求参数:表单数据对象
- 返回值:SysResult对象
参数名称 | 参数说明 | 备注信息 |
---|---|---|
status | 状态信息 | 200表示服务器请求成功,201表示服务器异常 |
msg | 服务器返回的提示信息 | 能为null |
data | 服务器返回的业务权限 | 3级商品分类信息 |
4.3 实现
4.3.1 Controller层
/*** 请求路径:/yingliangbang1/updateItem* 需求:修改商品信息* 请求类型:PUT* 返回值:SysResult对象*/@PutMapping("/updateItem")public SysResult updateItem(@RequestBody ItemCopy itemCopy){itemCopyService.updateItem(itemCopy);return SysResult.success();}
4.3.2 ServiceImpl层
@Overridepublic void updateItem(ItemCopy itemCopy) {itemCopyMapper.updateById(itemCopy);}