无法添加前端数据到数据库无报错

本文讲述了开发者在前端界面测试中遇到的bug,最初怀疑是SQL问题,实则是代码逻辑错误。重点在于Service层代码,一个分配人验证条件的逻辑错误导致只有指定分配人才能添加数据。修复后,正确处理了是否允许未分配情况下添加数据的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bug分析
在写前端界面测试时发现添加数据时不指定分配人添加不了数据,无error报错,界面显示添加成功,用postman试过,有分配人就能加上,没有分配人就添加不到数据库,刚开始以为一直以为是sql的问题,因为恰好动了一下sql语句

后来发现是最后一行的大括号打错位置了,本意是是否指定指派人都能添加,改成了只有分配人才能添加到数据库

数据库代码

select
    s.id, chance_source, customer_name, cgjl, overview, link_man, link_phone, description,
    create_man, assign_man, assign_time, state, dev_result, s.is_valid, s.create_date, s.update_date
    ,u.user_name as uname
    from
        t_sale_chance s
    left join
        t_user u
    on
        s.assign_man = u.id

原service代码,改动最后一个大括号即可

@Transactional(propagation = Propagation.REQUIRED)
    public void addSaleChance(SaleChance saleChance){
        /* 1.检验参数*/
        checkSaleChanceParams(saleChance.getCustomerName(),saleChance.getLinkMan(),saleChance.getLinkPhone());
        /*2.设置相关字段默认值*/
        //1有效
        saleChance.setIsValid(1);
        //默认是系统当前时间
        saleChance.setCreateDate(new Date());

        saleChance.setUpdateDate(new Date());
        //判断是否指定指派人
        if(StringUtils.isBlank(saleChance.getAssignMan())){
            //未设置指派人
            //state分配状态 (0=未分配,1=已分配)
            saleChance.setState(StateStatus.UNSTATE.getType());
            saleChance.setAssignTime(null);
            saleChance.setDevResult(DevResult.UNDEV.getStatus());
        }else {
            //不为空 设置了指派人
            saleChance.setState(StateStatus.STATED.getType());

            saleChance.setAssignTime(new Date());

            saleChance.setDevResult(DevResult.DEVING.getStatus());

            //执行添加操作,
            AssertUtil.isTrue(saleChanceMapper.insertSelective(saleChance)!=1,"添加营销机会失败!");

        }



    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值