yxh
7 天以前 68ff33beff11310e830b0615b5a81f83fad0f683
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package cn.lihu.jh.module.ecg.annotation;
 
import java.lang.annotation.*;
 
/**
 * 标记「必须是该工位的主人才能调用」的写接口(主/围观模型的核心鉴权)。
 *
 * <h3>为什么需要它</h3>
 * 引入"围观"后,任何登录用户都能**查看**任意已开放工位的数据(只读),
 * 但**写**操作(叫号、过号、完成检查、确费、领用、装机…)只能由该工位的主人执行。
 *
 * <p>前端虽然会在围观模式下禁用按钮,但那只是界面约定 —— 任何人绕过界面直接调接口照样能改数据。
 * 因此服务端必须统一校验:<b>当前登录人 == clinic_room 该 roomId+bedNo 的 doc_id</b>。
 *
 * <h3>用法</h3>
 * 加在 Controller 的写方法上即可,切面会自动从参数里解析 roomId / bedNo:
 * <ul>
 *   <li>{@code @RequestParam("roomId") Long roomId} / {@code @RequestParam("bedNo") String bedNo};</li>
 *   <li>或 {@code @RequestBody XxxVO vo},VO 里有 {@code getRoomId()} / {@code getBedNo()}。</li>
 * </ul>
 * 解析不到 roomId/bedNo 时**放行并记警告**(避免误伤),此类接口需在业务里自行校验
 * (例如只带 rentId 的 {@code fee-confirm})。
 *
 * @author 心电排队装机系统
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequireBedOwner {
 
    /** 便于日志排查:写清这个接口是做什么的(可选) */
    String value() default "";
}