需求9——通过一个小需求来体会service层的作用

昨天在完成了睿哥的需求验收之后,暂时没有其他任务,因此今天可能会比较有空闲时间。趁着这个机会,我打算把之前完成的一些需求进行总结,方便以后复习和参考。

在8月份的时候,我负责了一个需求,该需求的具体内容如下:在小程序中,关于作业标准的部分,目前知会干系人有权限开始工作内容,而我们的目标是限制知会干系人的权限,使其只能查看工作内容,只有执行干系人才能开始工作内容。

针对这个需求,我的解决思路如下:

  1. 后端部分

    • 首先,我需要找到对应"开始处理"按钮的后端接口。
    • 在该接口的service层中,我计划添加一个权限判断逻辑。
    • 具体来说,就是在service层中检查当前用户是否为执行干系人。如果不是执行干系人,则返回一个提示信息:"你不是执行干系人,无法开始任务"。
    • 通过这种方式,我们可以确保只有执行干系人才能在后端层面上开始任务。
  2. 前端部分

    • 前端方面,我需要定位到"开始处理"按钮的事件处理函数。
    • 在这个事件处理函数中,我计划添加一些逻辑来处理权限判断。
    • 虽然目前具体需要添加的内容还不完全清楚,但可以确定的是,需要在事件处理函数中增加相应的权限控制逻辑,以确保前端也能正确限制知会干系人的操作。

我希望通过这样的设计,确保只有执行干系人才能开始工作内容,而知会干系人只能查看相关信息。

首先,我们需要找到"开始处理"按钮对应的后端接口。进入这个接口的后端代码,从controller层开始查看。发现controller层主要负责返回VO(Value Object)等数据,并没有太多需要修改的地方。

因此,我们继续深入到service层。

在service层,我们发现这里的代码实现了"开始处理"按钮的内部逻辑。虽然代码量较大,但我们不需要理解所有细节,因为我们的目标是在逻辑开头添加一个权限判断。具体来说,我们需要判断当前用户是否为执行干系人。如果用户不是执行干系人,那么直接跳过后续代码逻辑,不允许其执行"开始处理"操作。

这个改动看起来非常简单。如果你看过我之前的一篇文章,可能会立刻想到可以使用AI来生成这部分代码。然而,这个需求是在8月份提出的,当时我还没有意识到AI的强大功能。我记得那时候是睿哥提醒我,说有一个类似按钮已经实现了权限校验,建议我直接复制那部分代码。

于是,我按照睿哥的建议,把那个按钮的权限校验代码原封不动地复制过来,这样后端的改动就完成了。

接下来,我们需要修改前端部分。

首先,我们需要找到"开始处理"按钮对应的代码。在前端代码中,最关键的部分是这个按钮的事件处理函数,这是我们需要修改的地方。我们的目标是,如果当前用户不是执行干系人,那么点击按钮后将显示提示信息:"你不是执行干系人,没有权限开始任务"。

我们可以参考一个已有的、相似功能的按钮来进行修改。我们可以仿照它的实现方式:

通过这种方式,我们可以在点击"开始处理"按钮时,首先检查当前用户的角色。如果用户不是执行干系人,则显示提示信息,并阻止后续操作。这样,前端部分的修改就完成了。

总结起来,前后端的改动如下:

  1. 后端部分

    • 在service层添加权限判断逻辑,确保只有执行干系人才能执行后续操作。
  2. 前端部分

    • 在"开始处理"按钮的事件处理函数中,添加角色判断逻辑,显示相应的提示信息。

通过前后端的共同修改,我们实现了对"开始处理"按钮的权限控制,确保只有执行干系人才能开始任务,而知会干系人只能查看相关信息。

相关推荐
唐 城16 分钟前
curl 放弃对 Hyper Rust HTTP 后端的支持
开发语言·http·rust
星就前端叭43 分钟前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
m0_748234521 小时前
前端Vue3字体优化三部曲(webFont、font-spider、spa-font-spider-webpack-plugin)
前端·webpack·node.js
Web阿成1 小时前
3.学习webpack配置 尝试打包ts文件
前端·学习·webpack·typescript
雷神乐乐1 小时前
Spring学习(一)——Sping-XML
java·学习·spring
噢,我明白了1 小时前
同源策略:为什么XMLHttpRequest不能跨域请求资源?
javascript·跨域
李雨非-19期-河北工职大1 小时前
思考: 与人交际
学习
哦哦~9211 小时前
深度学习驱动的油气开发技术与应用
大数据·人工智能·深度学习·学习
sanguine__1 小时前
APIs-day2
javascript·css·css3