全部开发者教程

企业级在线办公系统

导学视频为我们演示了如何生成请假单,那么这节课咱们就来实现这个请假单的生成。比如说,首先我们要写后端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);
    }
}