【华夏OA项目实战】3-13 后端实现用户Expand面板RESTful接口

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

教学视频

上节课我们让前端页面加载出来了分页数据,这节课我们来进一步实现分页数据的扩展功能。比如表格中每行记录都有一个折叠面板,里面是用户更详尽的信息。毕竟表格的列空间有限,我们不能把用户的数据详细展示出来,于是就把一部分内容放在折叠面板中了。这节课我们编写后端代码,把折叠面板需要用到的数据查询出来。

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

一、编写hxoa-oms子系统

1. 编写持久层

UserMapper.xml文件中编写SQL语句,查询某个用户的信息。

<!---查询某个用户关联的角色,在用户页面展开面板中显示该用户关联的角色-->
<select id="searchAssociatedRoles" parameterType="long" resultType="HashMap">
    SELECT r.id,
           r.name
    FROM tb_user u
    JOIN tb_role r ON JSON_CONTAINS(u.roles, CONVERT(r.id, CHAR))
    WHERE u.id = #{userId}
</select>

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

public interface UserMapper {
    ……
    public ArrayList<HashMap> searchAssociatedRoles(long id);
}

2. 编写Dubbo层

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

public interface UserApi {
    ……
    public R searchAssociatedRoles(long id);
}

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

@DubboService
@Slf4j
public class UserApiHandler implements UserApi {
    ……
    @Override
    @SentinelResource("UserApiHandler.searchAssociatedRoles")
    public R searchAssociatedRoles(long id) {
        ArrayList list = userMapper.searchAssociatedRoles(id);
        return R.ok().setAttributeAll(
                new HashMap() {{
                    put("status", "SUCCESS");
                    put("roleList", list);
                }});
    }
}

二、编写hxoa-mis子系统

1. 编写Dubbo层

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

public interface UserApi {
    ……
    public R searchAssociatedRoles(long id);
}

2. 编写业务层

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

public interface UserService {
    ……
    public Map searchAssociatedRoles(long id);
}

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

@Service
public class UserServiceImpl implements UserService {
    ……
    @Override
    public Map searchAssociatedRoles(long id) {
        R r = userApi.searchAssociatedRoles(id);
        Map result = r.getAttributeAll();
        return result;
    }
}

3. 编写Web层

com.example.hxoa.cloud.mis.controller.form包中,创建SearchAssociatedRolesForm.java类。

package com.example.hxoa.cloud.mis.controller.form;

import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

@Data
public class SearchAssociatedRolesForm {
    @NotNull(message = "userId不能为空")
    @Min(value = 1, message = "userId必须大于0")
    private Long userId;
}

com.example.hxoa.cloud.mis.controllerUserController.java类中,定义Web方法。

@RestController
@RequestMapping("/user")
public class UserController {
    ……
    @PostMapping("/search-associated-roles")
    @SaCheckPermission(value = {"ROOT", "USER:SELECT"}, mode = SaMode.OR)
    @SentinelResource("UserController.searchAssociatedRoles")
    public R searchAssociatedRoles(@RequestBody @Valid SearchAssociatedRolesForm form) {
        Map result = userService.searchAssociatedRoles(form.getUserId());
        return R.ok().setAttributeAll(result);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值