项目管理流程+工具总结

本文是依据过往项目整理出来的项管流程总结。

项目一:

流程上:

参与此项目过程时,项目经理分享给我们的一个 软件开发流程图

四个阶段:① 需求阶段;② 开发阶段;③ 系统测试阶段;④ 上线阶段。

四个角色:① 产品团队;② 开发团队;③ 测试团队;④ 运维团队。

具体表现(具体到时间节点上):

规范上:

(1) 阿里规范

遵循阿里巴巴的规范《阿里巴巴Java开发手册1.7.0(嵩山版)》

链接:阿里巴巴Java开发手册1.7.0_嵩山版_.pdf · master · YuBooy / 项目管理流程总结md图片 · GitCode

具体实际使用上:

① 数据库:数据库建表相关:索引、类型、非空

② IDEA 阿里规范插件

(2) swagger注解

此项目使用 Knife4j 工具来完成 swagger 的集成

knife4j是什么:百度安全验证

使用参考:knife4j的使用_快哉此风的博客-CSDN博客_knife4j

knifej 使用步骤:

① 添加依赖:

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>

② 创建配置文件:

@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
​
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)      // 选择swagger2版本
                .apiInfo(apiInfo())         //定义api文档汇总信息
                .select()
                .apis(RequestHandlerSelectors
                        .basePackage("com.dave.controller"))  // 指定生成api文档的包
                .paths(PathSelectors.any())     // 指定所有路径
                .build();
    }
​
    /**
     * 构建文档api信息
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("文档标题")     // 文档标题
                .contact(new Contact("name", "url", "mail"))   //联系人信息
                .description("描述")      //描述
                .version("0.1")     //文档版本号
                .termsOfServiceUrl("http://localhost:8080")     //网站地址
                .build();
    }
}

③ 使用 swagger 注解

④ 通过访问http://localhost:端口号/doc.html 即可见到knife4j的api文档页面页面

(3) @Validated 注解参数校验

为了软件系统的安全,接口参数除了前端要校验,后端也需要校验。通过引入 Validation 实现使用注解完成参数的校验。

常用注解:

@Validation使用在接口参数上,后续注解校验才生效
@NotNull检查带注解的值是否不为null
@NotEmpty检查带注释的元素是否为null或空
@NotBlank检查带注解的字符序列是否不为null,且长度是否大于0。与@NotEmpty的区别在于,此约束只能应用于字符串,并且尾部空白被忽略
@Range(min, max)检查带注解的值是否介于(包括)指定的最小值和最大值之间
@Pattern(regex, flag)检查带注解的字符串是否与正则表达式regex匹配

接口参数使用 @Validated ,后面User实体类中的参数才能检验

    @ApiOperation(value = "登录", notes = "登录接口")
    @ApiImplicitParam(name = "condition", value = "用户登录所需信息", dataType = "User")
    @PostMapping("/login")
    public CommonResult<User> login(@RequestBody @Validated User condition) {
        userService.userLogin(condition);
        return CommonResult.success(null,"登录成功");
    }
public class User implements Serializable {
​
    @NotEmpty(message = "密码不能为空")
    @Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误")
    @TableField(value = "phone_number")
    private String phoneNumber;
​
    @NotEmpty(message = "密码不能为空")
    private String password;
}

参考:@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated_昌杰的攻城狮之路的博客-CSDN博客_validated

和:Bean Validation具体描述_BrightZhuz的博客-CSDN博客

(4) mybatis plus lamda表达式使用

使用lambdaQuery() 可以调用mybatis plus 中的方法从而可以不用写mapper.xml文件

更重要的是可以通过 方法引用 的方式来使用实体字段名的操作,避免直接写数据库表字段名时无意的错写

示例:

/**
 * 根据条件查询用户数据列表
 * @param condition 条件
 * @return
 */
@Override
public List<User> selectByCondition(User condition) {
    List<User> list = this.lambdaQuery()
            .eq(ObjectUtil.isNotNull(condition.getId()),User::getId, condition.getId()) 
            .like(StrUtil.isNotBlank(condition.getName()), User::getName, condition.getName())
    return list;
}

参考1:lambda四种表达形式

mybatis-plus之四种lambda方式_掌握月的博客-CSDN博客_lambdaquerywrapper.select()

一、LambdaQueryWrapper<>

二、QueryWrapper<实体>().lambda()

三、Wrappers.<实体>lambdaQuery()

四、LambdaQueryChainWrapper<实体>(xxxxMapper)

参考2:条件构造器

MyBatis-Plus | 最简单的查询操作教程(Lambda)_10000guo的博客-CSDN博客_mybatisplus查询最大值

参考3:链式查询

MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用_leomoon-CSDN博客_lambdaquerywrapper和querymapper

(5) 工具类的使用:ObjectUtil.isNotEnpty()等

项目中应使用集成的工具类来加速工程的开发,更重要的是使用工具类能规范项目代码,同时减少错误。

/**
 * 对象工具类,包括判空、克隆、序列化等操作
 *
 * @author Looly
 */
public class ObjectUtil {
    /**
     * 检查对象是否为null
     */
    public static boolean isNull(Object obj) {
        //noinspection ConstantConditions
        return null == obj || obj.equals(null);
    }
}

使用示例:

/**
     * 根据用户id查询用户信息
     * @param id 用户id
     * @return 用户信息
     */
    @Override
    public User selectUserById(Long id) {
        User user = this.getById(id);
        if (ObjectUtil.isNull(user)){
            Asserts.fail("查无此用户");
        }
        return user;
    }
/**
 * 集合相关工具类
 * <p>
 * 此工具方法针对{@link Collection}及其实现类封装的工具。
 * <p>
 * 由于{@link Collection} 实现了{@link Iterable}接口,因此部分工具此类不提供,而是在{@link IterUtil} 中提供
 *
 * @author xiaoleilu
 * @see IterUtil
 * @since 3.1.1
 */
public class CollUtil {
    /**
     * 集合是否为非空
     */
    public static boolean isNotEmpty(Collection<?> collection) {
        return false == isEmpty(collection);
    }
}

使用示例:

/**
     * 增加或者更新一条历史记录
     * @param browsingHistory
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
    public void add(BrowsingHistory browsingHistory) {
        //同一用户访问同一个项目,则只存储最新的一个数据
        LambdaQueryWrapper<BrowsingHistory> eq = new LambdaQueryWrapper<BrowsingHistory>()
                .eq(BrowsingHistory::getUserId, browsingHistory.getUserId())
                .eq(BrowsingHistory::getProjectId, browsingHistory.getProjectId());
        List<BrowsingHistory> list = baseMapper.selectList(eq);
        if (CollUtil.isNotEmpty(list)){
            int i = baseMapper.update(browsingHistory,eq);
            if (i==0){
                Asserts.fail("历史记录更新失败");
            }
        }else{
            int i = baseMapper.insert(browsingHistory);
            if (i==0){
                Asserts.fail("历史记录存入失败");
            }
        }
    }

Java中常用的16个工具类:java中常用的16个工具类 - ppjj - 博客园

工具上:

代码工具:IDEA + Gitee

接口 API 调试工具:Apifox

Apifox 官网地址:Apifox - API 文档、调试、Mock、测试一体化协作平台 - 接口文档工具,接口自动化测试工具,接口Mock工具,API文档工具,API Mock工具,API自动化测试工具

演示:

项目二:

流程上:

具体在时间节点上的表现:

开发环境:

本地开发环境配置:输入密码 · 语雀

规范工具使用,具体包括以下 3 点:

① GitLab的配置和使用

② IDEA-PULL和PUSH代码

③ IDEA-代码分支管理

工具上:

(1) 表设计工具:CHINER[元数建模]

官网地址:PDMan升级换代至->CHINER[元数建模]v3.0:最好用的国产开源数据库建模平台 - -龙猫- - OSCHINA - 中文开源技术交流社区

其他工具:

(2) 禅道

通用的项目管理软件,用于分派开发任务(进度管控)

官网地址:项目管理软件 开源项目管理软件 免费项目管理软件 - 禅道开源项目管理软件

官网演示:

(3) GitLab

我的理解:私有码厂

官网地址:极狐GitLab官方网站_DevOps平台

(4) Yapi

我的理解:私有服务器上的 ”postman“

官网地址:YApi 接口管理平台

官网展示:

1项目页左侧的 “接口列表” 展示了该项目下的所有接口,右侧默认显示该项目下所有接口的列表。

2点击左侧的某个接口,右侧会出现“预览”、“编辑”和“运行”。

3点击左侧的 “测试集合” 使用测试集功能。

4点击二级导航的“设置”,项目组长即可编辑项目信息和管理成员列表。

5点击二级导航的“动态”,即可查看项目的操作日志。

项管流程、工具外的分享:一个完整的开源的后台管理系统,按需修改即能快速部署一套后台管理系统

后台管理系统开源模板

诺依:RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi开源|RuoYi视频|若依视频|RuoYi开发文档|若依开发文档|Java开源框架|Java|SpringBoot|SrpingBoot2.0|SrpingCloud|Alibaba|MyBatis|Shiro|OAuth2.0|Thymeleaf|BootStrap|Vue|Element-UI||www.ruoyi.vip

官方演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值