需求分析
因为参加会议人身份的不同,所以每个所使用的文件也会不同。
在管理员创建会议时需要让不同的人拥有不同的文件权限,并且还需要让多个人拥有一样的文件权限即多个人为一类人。这需要用springboot实现
实现
首先我想到的第一种方案是直接将设备与文件绑定在一起,但当真正需要创建一个会议时,会有很多个设备也会有很多个文件,这样一来想把二者直接绑定在一起就会十分麻烦,所以第一种方法被否决。
于是就有了第二种想法,那便是将每一类人都给予一个不同的角色,而用这个角色来当桥梁链接设备和文件。
首先绑定url
@RestController
@RequestMapping("/role")
public class RoleController {
@Autowired
private RoleService roleService;
@PostMapping("uploadRole")
Msg addRole(@RequestBody List<RoleInfo> roleInfos,@RequestParam int meetingId){
if(roleService.addRole(roleInfos,meetingId)){
return new Msg(200,"ok",null);
}
return null;
}
}
这其中的RoleInfo包含devices和files属性
public class RoleInfo {
String roleName;
List<Integer> files;
List<Integer> devices;
而方法实现放在RoleService中实现,并在数据库中添加记录
@Component
public class RoleService {
@Autowired
private RoleDao roleDao;
public boolean addRole(List<RoleInfo> roleInfos, int meetingId) {
for (RoleInfo roleInfo : roleInfos) {
Role role = new Role(roleInfo.getRoleName());
roleDao.addRole(role);
deviceRegister(role.getUid(), roleInfo.getDevices(), meetingId);
filePermit(role.getUid(), roleInfo.getFiles());
}
return true;
}
private void deviceRegister(int roleId, List<Integer> devices, int meetingId) {
for (int device : devices) {
roleDao.addDeviceToRole(roleId, device, meetingId);
}
}
private void filePermit(int roleId, List<Integer> files) {
for (int fileId : files) {
roleDao.addFileToRole(roleId, fileId);
}
}
}
SOL操作
@Mapper
public interface RoleDao {
int addRole(Role role);
int addDeviceToRole(int roleId,int deviceId,int meetingId);
int addFileToRole(int roleId,int fileId);
Mapper具体是
<mapper namespace="com.xhfron.paperless.dao.RoleDao">
<insert id="addRole" useGeneratedKeys="true" keyProperty="uid">
insert into `role` values (#{uid}, #{name})
</insert>
<insert id="addDeviceToRole">
insert into `device_role` values (#{roleId},#{deviceId},#{meetingId})
</insert>
<insert id="addFileToRole">
insert into `role_file` values(#{roleId},#{fileId})
</insert>
</mapper>