【华夏OA项目实战】3-9 后端实现Role与Dept列表RESTful接口

本课程开发软件与项目初始代码可以通过云盘下载,答疑服务可以关注视频片头的二维码获取。
https://www.123912.com/s/A75eVv-27mod,提取码:yton

教学视频

上节课我们实现了修改用户密码,这节课我们继续来完成用户管理模块。比如管理界面中的部门列表和角色列表需要显示数据,这节课我们写后端代码把相关数据查询出来。

大家认真观看视频,不要快进。有些操作只在视频中演示,只对着手册操作并不能完成案例,切记!

一、编写hxoa-oms子系统

1. 编写持久层

RoleMapper.xml文件中编写SQL语句,查询所有角色。

<select id="searchAllRole" resultType="HashMap">
    SELECT id, name
    FROM tb_role
    ORDER BY name
</select>

com.example.hxoa.cloud.oms.db.daoRoleMapper.java接口中,声明DAO方法。

public interface RoleMapper {
    ……
    public ArrayList<HashMap> searchAllRole();
}

DeptMapper.xml文件中编写SQL语句,查询所有部门。

<select id="searchAllDept" resultType="HashMap">
    SELECT id, name
    FROM tb_dept
</select>

com.example.hxoa.cloud.oms.db.daoDeptMapper.java接口中,声明DAO方法。

public interface DeptMapper {
    public ArrayList<HashMap> searchAllDept();
}

2. 编写Dubbo层

com.example.hxoa.cloud.dubboRoleApi.java接口中,声明抽象方法。

public interface RoleApi {
    public R searchAllRole();
}

com.example.hxoa.cloud.dubboRoleApiHandler.java类中,实现抽象方法方法。

@DubboService
@Slf4j
public class RoleApiHandler implements RoleApi {
    @Resource
    private RoleMapper roleMapper;
    
    @Override
    @SentinelResource("RoleApiHandler.searchAllRole")
    public R searchAllRole() {
        ArrayList list = roleMapper.searchAllRole();
        return R.ok().setAttributeAll(
                new HashMap() {{
                    put("status", "SUCCESS");
                    put("roleList", list);
                }});
    }
}

com.example.hxoa.cloud.dubboDeptApi.java接口中,声明抽象方法。

public interface DeptApi {
    public R searchAllDept();
}

com.example.hxoa.cloud.oms.apiDeptApiHandler.java类中,实现抽象方法。

@DubboService
@Slf4j
public class DeptApiHandler implements DeptApi {
    @Resource
    private DeptMapper deptMapper;
    
    @Override
    @SentinelResource("DeptApiHandler.searchAllDept")
    public R searchAllDept() {
        ArrayList list = deptMapper.searchAllDept();
        return R.ok().setAttributeAll(
                new HashMap() {{
                    put("status", "SUCCESS");
                    put("deptList", list);
                }});
    }
}

二、编写hxoa-mis子系统

1. 编写Dubbo层

com.example.hxoa.cloud.dubboRoleApi.java接口中,声明抽象方法。

public interface RoleApi {
    public R searchAllRole();
}

com.example.hxoa.cloud.dubboDeptApi.java接口中,声明抽象方法。

public interface DeptApi {
    public R searchAllDept();
}

2. 编写业务层

com.example.hxoa.cloud.mis.serviceRoleService.java接口中,声明抽象方法。

public interface RoleService {
    public Map searchAllRole();
}

com.example.hxoa.cloud.mis.service.implRoleServiceImpl.java类中,实现抽象方法。

@Service
public class RoleServiceImpl implements RoleService {
    @DubboReference
    private RoleApi roleApi;
    
    @Override
    public Map searchAllRole() {
        R r = roleApi.searchAllRole();
        Map result = r.getAttributeAll();
        return result;
    }
}

com.example.hxoa.cloud.mis.serviceDeptService.java接口中,声明抽象方法。

public interface DeptService {
    public Map searchAllDept();
}

com.example.hxoa.cloud.mis.service.implDeptServiceImpl.java类中,实现抽象方法。

@Service
public class DeptServiceImpl implements DeptService {
    @DubboReference
    private DeptApi deptApi;
    
    @Override
    public Map searchAllDept() {
        R r = deptApi.searchAllDept();
        Map result = r.getAttributeAll();
        return result;
    }
}

3. 编写Web层

com.example.hxoa.cloud.mis.controllerRoleController.java类中,声明Web方法。

@RestController
@RequestMapping("/role")
public class RoleController {
    @Resource
    private RoleService roleService;
    
    @GetMapping("/search-all-role")
    @SaCheckLogin
    @SentinelResource("RoleController.searchAllRole")
    public R searchAllRole() {
        Map result = roleService.searchAllRole();
        return R.ok().setAttributeAll(result);
    }
}

com.example.hxoa.cloud.mis.controllerDeptController.java类中,声明Web方法。

@RestController
@RequestMapping("/dept")
public class DeptController {
    @Resource
    private DeptService deptService;
    
    @GetMapping("/search-all-dept")
    @SaCheckLogin
    @SentinelResource("DeptController.searchAllDept")
    public R searchAllDept() {
        Map result = deptService.searchAllDept();
        return R.ok().setAttributeAll(result);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值