记录基于ruoyi二开项目时遇到的问题

一、ruoyi里要单元测试,要写在admin模块里,写在其他模块会报莫名其妙的错误...

以下截屏会报错:

二、在写字符串的等于时,切记要用equals,不要用 "==",敲代码时忘记了,给回头测试了好一会...,浪费了不少时间

三、若依里新增和修改是同用一个对话框的,用的是 【是否传入主键】来判断;如果主键要求是要传入的情况下(就是说新增时也要填写主键),就会导致新增操作被误判断为修改:

这时,我们需要新加一个判断字段:isEditMode 

让它为true时是修改,false是新增;同时在新增和修改的方法里做好状态的设置:

最后,在submit里修改一下判断条件即可:

后续改用了其他逻辑来实现上面的问题:根据传入的id,先去数据库查询,查到数据就走更新路线,查不到数据就走新增路线;

/**新建一个函数用于根据 cardId 查询数据*/
    queryCarByCardId(cardId, callback) {
      const queryParams = { cardId: cardId }; // 构建查询参数
      listCar(queryParams).then(response => {
        const carData = response.rows[0]; // 假设查询结果只取第一条数据
        callback(carData); // 将查询结果传递给回调函数
      });
    }
/** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.cardId != null) {
            // 调用新函数查询数据
            this.queryCarByCardId(this.form.cardId, carData => {
              if (carData) {
                // 查询到数据,走 updateCar 分支
                updateCar(this.form).then(response => {
                  this.$modal.msgSuccess("修改成功");
                  this.open = false;
                  this.getList();
                });
              } else {
                // 没有查询到数据,走 addCar 分支
                addCar(this.form).then(response => {
                  this.$modal.msgSuccess("新增成功");
                  this.open = false;
                  this.getList();
                });
              }
            });
          }
        }
      });
    }

四、Spring容器无法找到所需的 Bean

自己手写了个支付工具类,但Spring无法自动扫描到,报错如下:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'com.ruoyi.canteen.utils.PayUtil' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: 
{@org.springframework.beans.factory.annotation.Autowired(required=true)}

这个错误信息表明在加载Spring应用程序上下文时出现了问题,导致应用程序上下文加载失败。错误的根本原因是Spring容器无法找到所需的com.ruoyi.canteen.utils.PayUtil Bean,因此它无法满足依赖关系。

所以在这个类上加个注释@Service即可,让Spring能扫描到:

五、前端只显示年日月,不显示时分秒

修改成显示年日月时分秒的步骤如下:

1. 在domian中修改实体类的属性,将yyyy-MM-dd 改成 yyyy-MM-dd HH:mm:ss

2. 1 将对应的前端页面中涉及到的地方都修改了

改之前:

改之后:

解释一下,ruoyi提供了很多时间类型供选择,其中datetime是 yyyy-MM-dd HH:mm:ss,感兴趣的小伙伴可以在文件:ruoyi-ui\src\views\tool\build\RightPanel.vue 看到

2.2 同个页面,将下面的内容修改

改之前:

改之后:

ok,页面可以显示年月日时分秒了

六、要求:搜索根据传入的日期,只按年月日模糊查询当天的订单

传入的日期格式:yyyy-mm-dd HH:mm:ss  (其中HH:mm:ss均为00:00:00,因为搜索栏只提供年月日,但传进的参数为yyyy-mm-dd HH:mm:ss,所以00:00:00),

数据库中储存的日期格式:yyyy-mm-dd HH:mm:ss,

想要年月日模糊查询,SQL语句可以如下修改:

重点代码:

<if test="orderCreateTime != null ">  and DATE_FORMAT(order_create_time, '%Y-%m-%d') LIKE CONCAT('%', DATE_FORMAT(#{orderCreateTime}, '%Y-%m-%d'), '%')</if>

意思就是把传入的参数和数据库都截成年月日的形式,再进行模糊查询

完整代码:

<select id="selectCanteenOrderList" parameterType="CanteenOrder" resultMap="CanteenOrderResult">
        <include refid="selectCanteenOrderVo"/>
        <where>  
            <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
            <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
            <if test="orderStatus != null  and orderStatus != ''"> and order_status = #{orderStatus}</if>
            <if test="orderAmount != null "> and order_amount = #{orderAmount}</if>
            <if test="orderCreateTime != null ">  and DATE_FORMAT(order_create_time, '%Y-%m-%d') LIKE CONCAT('%', DATE_FORMAT(#{orderCreateTime}, '%Y-%m-%d'), '%')</if>
            <if test="orderPayTime != null ">    and DATE_FORMAT(order_pay_time, '%Y-%m-%d') LIKE CONCAT('%', DATE_FORMAT(#{orderPayTime}, '%Y-%m-%d'), '%') </if>
            <if test="orderPayMethod != null  and orderPayMethod != ''"> and order_pay_method = #{orderPayMethod}</if>
            <if test="orderAccomplishTime != null "> and DATE_FORMAT(order_accomplish_time, '%Y-%m-%d') LIKE CONCAT('%', DATE_FORMAT(#{orderAccomplishTime}, '%Y-%m-%d'), '%')</if>
        </where>
        ORDER BY order_accomplish_time DESC
    </select>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值