团队作业4——项目冲刺-5

团队作业4——项目冲刺-5

信息项 内容
课程名称 广工计院计科34班软工
作业要求位置 作业要求
作业目标 在七天敏捷冲刺中,完成工大严选开发,记录每日进展和问题,更新燃尽图、签入代码,并发布集合日志总结成果
GitHub链接 GitHub

一、团队简介

  • 队名:小飞棍队

  • 团队成员

姓名 学号
罗振烘(组长) 3122004748
庄崇立 3122004633
李响 3121002802
何昌洲 3122004737

二、会议总结

会议信息

  • 日期:2024年11月15日
  • 时长:15分钟
  • 会议形式:在线会议
  • 主持人:罗振烘(组长)

会议照片

昨天完成的工作

任务 内容
商品推荐功能开发 完成商品推荐模块的增删查改接口,实现了商品推荐的基本管理功能。
接口设计与优化 设计RESTful接口,并通过Swagger注解生成API文档,方便团队测试和调用。
分类功能接口调试 进行前后端接口调试,确保商品推荐信息可以正常获取、添加、修改和删除。
code review 对代码规范进行了细致检查,统一了字段命名,完善了注释,提升代码一致性和可维护性。
需求文档更新 补充了推荐模块的需求细节,基于实际开发中遇到的问题完善了相关文档。

今天完成的工作

任务 内容
商品详情功能 完善了热门推荐功能,新增、修改、删除都调试顺畅。
数据库加速 加了索引,查询速度快多了。
前端UI改进 优化了页面布局,用户体验更好。
集成测试完成 测试了主要功能,修复了一些小问题。

工作中遇到的困难

团队在协作中遇到一些挑战,比如前后端接口对接时的数据格式不一致导致调试时间增加,数据库在数据量增多后出现了性能瓶颈,需要进行复杂的索引优化。需求变动也让部分功能返工,前端在UI布局和设计细节上需要多次沟通以确保一致。此外,多人代码合并时也出现冲突,需要谨慎处理才能保证代码的顺利集成。

会议内容

  • 目标:确保团队成员同步项目进展,解决昨天遇到的问题。

任务分配

四、燃尽图

五、代码签入记录

签入记录对应的Issue内容与链接

code review编码规范文档

六、项目程序/模块的最新(运行)截图

核心代码

package com.example.goods.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.goods.pojo.Goods;
import com.example.goods.pojo.GoodsBrand;
import com.example.goods.pojo.GoodsParticulars;
import com.example.goods.pojo.GoodsParticularsVo;
import com.example.goods.service.GoodsBrandService;
import com.example.goods.service.GoodsParticularsService;
import com.example.goods.service.GoodsService;
import com.example.smartcommon.util.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.*;
import java.util.stream.Collectors;

@RestController
@RequestMapping(value = "/goods/")
@Tag(name = "显示商品") // Swagger文档的标签,用于显示商品模块
public class GoodsController {

    @Autowired
    private GoodsService goodsService; // 注入商品服务类
    @Autowired
    private GoodsParticularsService goodsParticularsService; // 注入商品详情服务类
    @Autowired
    private GoodsBrandService goodsBrandService; // 注入商品品牌服务类

    @Operation(summary = "获得所有的商品") // Swagger文档的操作描述
    @GetMapping(value = "/getAllGoods")
    public R getAllGoods() {
        List<Goods> goods = goodsService.list(); // 查询所有商品数据
        return R.ok("查询所有商品成功").data("goodsList", goods); // 返回查询结果
    }

    @Operation(summary = "猜你喜欢商品带分页") // Swagger文档的操作描述
    @GetMapping(value = "/guessLikeGoods")
    public R guessLikeGoods(@RequestParam(name = "page", defaultValue = "1") Long page,
                            @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize) {
        // 分页功能进行查询
        Page<Goods> goodsPage = new Page<>(page, pageSize);
        // 条件构造器
        QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
        // 随机排序
        queryWrapper.orderByDesc("rand()");
        // 查询数据
        goodsService.page(goodsPage, queryWrapper);

        // 每页的数据集合
        List<Goods> goodsList = goodsPage.getRecords();
        // 总的记录数
        Long counts = goodsPage.getTotal();
        // 每页条数
        pageSize = goodsPage.getSize();
        // 总页数
        Long pages = goodsPage.getPages();
        // 当前页数
        page = goodsPage.getCurrent();

        // 将分页信息存储到Map中
        Map<String, Object> map = new HashMap<>();
        map.put("counts", counts);
        map.put("pageSize", pageSize);
        map.put("pages", pages);
        map.put("page", page);
        map.put("goodsList", goodsList);

        return R.ok("猜你喜欢商品带分页成功").data(map); // 返回分页查询结果
    }

    @Operation(summary = "增加商品") // Swagger文档的操作描述
    @PostMapping(value = "/addGoods")
    public R addGoods(@RequestBody Goods goods) {
        boolean flag = goodsService.save(goods); // 保存商品数据
        if (flag) {
            return R.ok("增加商品成功");
        } else {
            return R.error("增加商品失败");
        }
    }

    @Operation(summary = "删除商品数据") // Swagger文档的操作描述
    @DeleteMapping(value = "/deleteGoods/{id}")
    public R deleteGoods(@PathVariable("id") Integer goodsId) {
        boolean flag = goodsService.removeById(goodsId); // 根据ID删除商品
        if (flag) {
            return R.ok("删除商品成功");
        } else {
            return R.error("删除商品失败");
        }
    }

    @Operation(summary = "按照商品编号查询数据") // Swagger文档的操作描述
    @GetMapping(value = "/getGoodsById/{id}")
    public R getGoodsById(@PathVariable("id") Integer goodsId) {
        Goods goods = goodsService.getById(goodsId); // 根据商品ID查询商品
        return R.ok("按照商品编号查询数据成功").data("goods", goods); // 返回查询结果
    }

    @Operation(summary = "按照商品详情编号联表查询数据") // Swagger文档的操作描述
    @GetMapping(value = "/getGoodsById")
    public R getGoodsByIds(@RequestParam("goodsId") Integer goodsId) {
        List<GoodsParticularsVo> goodsParticularsVoList = new ArrayList<>();

        // 查询商品详情
        GoodsParticulars goodsParticulars = goodsParticularsService.getById(goodsId);
        // 查询商品信息
        Goods goods = goodsService.getById(goodsId);
        // 查询商品品牌信息
        GoodsBrand goodsBrand = goodsBrandService.getById(goodsParticulars.getBrandId());

        // 将商品详情属性复制到商品详情视图对象中
        GoodsParticularsVo goodsParticularsVo = new GoodsParticularsVo();
        BeanUtils.copyProperties(goodsParticularsVo, goodsParticulars);
        goodsParticularsVo.setGoodsId(goods.getGoodsId());
        goodsParticularsVo.setGoodsName(goods.getGoodsName());
        goodsParticularsVo.setGoodsDesc(goods.getGoodsDesc());
        goodsParticularsVo.setGoodsPrice(goods.getGoodsPrice());
        goodsParticularsVo.setGoodsBrand(goodsBrand);

        goodsParticularsVoList.add(goodsParticularsVo);

        return R.ok("按照商品详情编号查询数据成功").data("goods", goodsParticularsVoList); // 返回联表查询结果
    }

    @Operation(summary = "修改商品数据") // Swagger文档的操作描述
    @PutMapping(value = "/updateGoods")
    public R updateGoods(@RequestBody Goods goods) {
        boolean flag = goodsService.updateById(goods); // 更新商品数据
        if (flag) {
            return R.ok("修改商品成功");
        } else {
            return R.error("修改商品失败");
        }
    }
}

最新模块截图

七、每日每人总结

姓名 总结
罗振烘 遇到的技术难题让我快速成长,收获满满
庄崇立 看到项目进度,很有成就感
李响 开发商城项目让我深刻理解了沟通的重要性
何昌洲 在团队协作中学会了高效沟通,提升了效率
posted @ 2024-11-15 11:36  AIZzcl  阅读(18)  评论(0编辑  收藏  举报