第三篇 Scrum冲刺博客

第三篇 Scrum冲刺博客

Part one 作业地址

这个作业属于哪个课程 软件工程
作业要求 第三篇 Scrum冲刺博客
作业目标 团队集体协作完成项目开发,促进彼此间的交流

Part two 站立式会议

1.1 微信会议照片

注:由于大家的时间较为紧迫,这次开会采用线上微信开会,主要还是讨论个人的进度问题以及做任务时候遇到的困难,然后大家一起解决。

1.2成员工作情况

成员 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难
张天 做好接下来五天的计划 继续实现水平方向和竖直方向的商城管理器,设置组件内边距和外边距的工具类 对布局管理不熟悉,查阅了许多资料
黄炜恒 基本做好了模拟环境 设计一些上架入驻模式的规则,并尝试实现 有些规则难以在实际中实现
黄浩捷 明确模块,下载windowsbuilder 进行简单的主界面的设置,添加图片 已较为熟悉windowsbuilder
陈伟升 微信支付以及支付宝支付 设计支付模块 跳转较为困难,不符合设计要求
曾广宁 构思购物车的整体架构 一些具体细节如商品名等需要与其他同学进行协商
曾春华 明确自己的模块并查阅了相关资料 构思商品的整体架构 一些具体细节如商品名,以及商品模块等需要与其他同学进行协商

Part three 项目燃尽图

注:进度中一些比较耗费时间的任务已基本完成,接下来的任务主要是对模块当中的一些细节进行优化。

Part four 代码/文档签入记录

3.1 代码签入

说明:第二天git操作仍然遇到一些问题,但是操作明显进步了不少

3.2 Issue链接

成员 Issue链接
张天 实现一些工具组件类1
黄炜恒 商家入驻模块
黄浩捷 商城主界面
陈伟升 支付模块
曾广宁 商品的整体架构
曾春华 商品的整体架构

Part five 最新程序/模块

4.1 程序代码

package com.nanrailgun.user_service_provider.service.impl;//用户服务代码模块

import com.nanrailgun.config.common.MallException;
import com.nanrailgun.config.common.ServiceResultEnum;
import com.nanrailgun.config.utils.MyBeanUtil;
import com.nanrailgun.user_api.api.MallUserAddressService;
import com.nanrailgun.user_api.api.dto.MallUserAddressDTO;
import com.nanrailgun.user_api.entity.MallUserAddress;
import com.nanrailgun.user_service_provider.dao.MallUserAddressMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@Service
public class MallUserAddressServiceImpl implements MallUserAddressService { //商城提供的服务代码模块

@Resource
MallUserAddressMapper mallUserAddressMapper;

@Override
public List<MallUserAddressDTO> getAddressList(Long userId) {
List<MallUserAddress> list = mallUserAddressMapper.selectAllAddress(userId);
return MyBeanUtil.copyList(list, MallUserAddressDTO.class);
}

@Override
public MallUserAddress getAddressByAddressId(Long addressId) {
MallUserAddress address = mallUserAddressMapper.selectByPrimaryKey(addressId);
if (address == null) {
MallException.fail(ServiceResultEnum.DATA_NOT_EXIST.getResult());
}
return address;
}

@Override
public MallUserAddress getDefaultAddress(Long userId) {
return mallUserAddressMapper.selectDefaultAddress(userId);
}

@Override
@Transactional
public void saveAddress(MallUserAddress address) {
Date now = new Date();
if (address.getDefaultFlag() == 1) {
MallUserAddress oldAddress = mallUserAddressMapper.selectDefaultAddress(address.getUserId());
if (oldAddress != null) {
oldAddress.setDefaultFlag((byte) 0);
oldAddress.setUpdateTime(now);
if (mallUserAddressMapper.updateByPrimaryKey(oldAddress) < 1) {
MallException.fail(ServiceResultEnum.DB_ERROR.getResult());
}
}
}
if (mallUserAddressMapper.insert(address) < 1)
MallException.fail(ServiceResultEnum.DB_ERROR.getResult());
}

@Override
@Transactional
public void updateAddress(MallUserAddress address) {
Date now = new Date();
if (address.getDefaultFlag() == 1) {
MallUserAddress oldAddress = mallUserAddressMapper.selectDefaultAddress(address.getUserId());
if (oldAddress != null && !oldAddress.getAddressId().equals(address.getAddressId())) {
oldAddress.setDefaultFlag((byte) 0);
oldAddress.setUpdateTime(now);
if (mallUserAddressMapper.updateByPrimaryKey(oldAddress) < 1) {
MallException.fail(ServiceResultEnum.DB_ERROR.getResult());
}
}
}
address.setUpdateTime(now);
if (mallUserAddressMapper.updateByPrimaryKey(address) < 1)
MallException.fail(ServiceResultEnum.DB_ERROR.getResult());
}

@Override
public Boolean deleteAddress(Long addressId) {
return mallUserAddressMapper.deleteByPrimaryKey(addressId) > 0;
}
}
package com.nanrailgun.config.config; //用户登录界面模块

import com.nanrailgun.config.common.MallException;
import com.nanrailgun.config.common.ServiceResultEnum;
import com.nanrailgun.config.utils.Result;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.Objects;

@RestControllerAdvice
public class MallExceptionHandler {

@ExceptionHandler(MethodArgumentNotValidException.class)
public Object bindException(MethodArgumentNotValidException e) {
Result result = new Result();
result.setResultCode(510);
BindingResult bindingResult = e.getBindingResult();
result.setMessage(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
return result;
}

@ExceptionHandler(Exception.class)
public Object handleException(Exception e) {
Result result = new Result();
result.setResultCode(500);
//区分是否为自定义异常
if (e instanceof MallException) {
result.setMessage(e.getMessage());
if (e.getMessage().equals(ServiceResultEnum.NOT_LOGIN_ERROR.getResult()) || e.getMessage().equals(ServiceResultEnum.TOKEN_EXPIRE_ERROR.getResult())) {
result.setResultCode(416);
}
} else {
e.printStackTrace();
result.setMessage("未知异常,请联系管理员");
}
return result;
}
}

4.2 运行截图

用户显示商城的界面
图片名称

用户支付界面
图片名称

Part six 每人每日总结

成员 小结
张天 时间是挤出来的,继续压榨时间出来开发
黄炜恒 需要多尝试,多探索
黄浩捷 用时4小时以上,由于初使用windowsbuilder,不太熟练,摸索式前进。
陈伟升 我实现了java的支付模块,一开始学习也耗费了许多的时间,太难了
曾广宁 需要多学习,不然真的跟不上团队的速度
曾春华 完整而具体的构思,还有与同学良好的沟通是一个比较好的开始
posted @ 2020-11-09 22:45  半吟  阅读(82)  评论(0编辑  收藏  举报