一、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>