导学视频为我们演示了如何生成请假单,那么这节课咱们就来实现这个请假单的生成。比如说,首先我们要写后端Java代码,把请假单的详情给查询出来。
一、编写持久层代码
在TbLeaveDao.xml
文件中,定义SQL语句。
<select id="searchLeaveById" parameterType="HashMap" resultType="HashMap">
SELECT
u.name,
u.sex,
d.dept_name AS dept,
l.type,
DATE_FORMAT( l.`start`, '%Y-%m-%d %H:%i' ) AS `start`,
DATE_FORMAT( l.`end`, '%Y-%m-%d %H:%i' ) AS `end`,
l.reason
FROM tb_leave l
JOIN tb_user u ON l.user_id = u.id
JOIN tb_dept d ON u.dept_id = d.id
WHERE l.id = #{id}
<if test="userId!=null">
AND u.id=#{userId}
</if>
</select>
在TbLeaveDao.java
接口中,声明DAO方法。
public interface TbLeaveDao {
……
public HashMap searchLeaveById(HashMap param);
}
二、编写业务层代码
在LeaveService.java
接口中,定义抽象方法。
public interface LeaveService {
……
public HashMap searchLeaveById(HashMap param);
}
在LeaveServiceImpl.java
类中,实现抽象方法。
public class LeaveServiceImpl implements LeaveService {
……
@Override
public HashMap searchLeaveById(HashMap param) {
HashMap map=leaveDao.searchLeaveById(param);
return map;
}
}
三、编写Web层代码
创建SearchLeaveByIdForm.java
类,封装Ajax提交的数据。
@Data
@Schema(description = "根据ID查询请假数据表单")
public class SearchLeaveByIdForm {
@NotNull(message = "id不能为空")
@Min(value = 1, message = "id不能小于1")
private Integer id;
}
在LeaveController.java
类中,定义Web方法,然后可以用Swagger测试了。
public class LeaveController {
……
@PostMapping("/searchLeaveById")
@Operation(summary = "根据Id查询请假数据")
@SaCheckLogin
public R searchLeaveById(@Valid @RequestBody SearchLeaveByIdForm form) {
HashMap param = JSONUtil.parse(form).toBean(HashMap.class);
if (!(StpUtil.hasPermission("LEAVE:SELECT")||StpUtil.hasPermission("ROOT"))) {
param.put("userId", StpUtil.getLoginIdAsInt());
}
HashMap map = leaveService.searchLeaveById(param);
return R.ok(map);
}
}