From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/LimsSignService.java | 147 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 147 insertions(+), 0 deletions(-)
diff --git a/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/LimsSignService.java b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/LimsSignService.java
new file mode 100644
index 0000000..c5df738
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/LimsSignService.java
@@ -0,0 +1,147 @@
+package jnpf.limsService;
+
+import jnpf.base.service.SuperService;
+import jnpf.limsEntity.LimsModifySignPasswordParam;
+import jnpf.limsEntity.LimsSignEntity;
+import jnpf.limsEntity.LimsSignUsageTarget;
+import jnpf.limsEntity.LimsSignVerifyParam;
+import jnpf.limsEntity.SignOpType;
+
+import java.util.Collection;
+
+/**
+ * LIMS 鐢靛瓙绛惧悕鏈嶅姟銆�
+ * 鏍¢獙璐︽埛 + 绛惧悕瀵嗙爜鍚庤惤涓�鏉� lims_sign锛岃繑鍥炰富閿綔涓� biz_sign 鍑瘉缁欏墠绔��
+ */
+public interface LimsSignService extends SuperService<LimsSignEntity> {
+
+ /**
+ * 鏍¢獙绛惧悕骞惰惤 lims_sign 涓�鏉★紝杩斿洖鏂拌褰曠殑涓婚敭 id锛堝嵆缁欏墠绔殑 biz_sign锛夈��
+ *
+ * <p>鏍¢獙閾撅細
+ * <ol>
+ * <li>opType 蹇呴』鍦� {@link jnpf.limsEntity.SignOpType} 鏋氫妇鍐�</li>
+ * <li>accountName 蹇呴』绛変簬褰撳墠 session 鐢ㄦ埛鐨� account锛堥槻浠g锛�</li>
+ * <li>note 闈炵┖锛堝墠绔彲濉� "N/A"锛�</li>
+ * <li>鏌� lims_user_sign_password by user_id锛涙棤璁板綍 鈫� 鎶� "鏈垵濮嬪寲绛惧悕瀵嗙爜"</li>
+ * <li>password_hash = Md5(password + secretkey.toLowerCase()) 姣斿</li>
+ * <li>鏍¢獙鍏ㄩ�氳繃鍚庢彃鍏� lims_sign锛岃繑鍥� id</li>
+ * </ol>
+ *
+ * @return lims_sign 涓婚敭 id
+ * @throws jnpf.exception.DataException 鏍¢獙澶辫触
+ */
+ String verifyAndRecord(LimsSignVerifyParam param);
+
+ /**
+ * 鏍¢獙鎸囧畾鐢ㄦ埛绛惧悕骞惰惤 lims_sign 涓�鏉°��
+ *
+ * <p>涓� {@link #verifyAndRecord(LimsSignVerifyParam)} 鐨勫樊寮傦細
+ * <ul>
+ * <li>allowSelf 涓嶄负 yes 鏃讹紝accountName 瀵瑰簲鐨勭敤鎴蜂笉鑳芥槸褰撳墠 session 鐢ㄦ埛</li>
+ * <li>鎸� accountName 鏌ヨ鐩爣鐢ㄦ埛锛屽苟鏍¢獙鐩爣鐢ㄦ埛鐨勭鍚嶅瘑鐮�</li>
+ * <li>绛惧悕璁板綍鐨� creatorUserId 鍐欏叆鐩爣鐢ㄦ埛 id</li>
+ * </ul>
+ *
+ * @return 鏍¢獙閫氳繃鍚庢柊寤虹殑绛惧悕璁板綍
+ */
+ LimsSignEntity verifyUserAndRecord(LimsSignVerifyParam param);
+
+ /**
+ * 缁欐墍鏈夋湭杞垹 base_user 鎵归噺鍒濆鍖栫鍚嶅瘑鐮� = "123456"銆�
+ * 宸叉湁 lims_user_sign_password 璁板綍鐨勮烦杩囥�傛瘡涓敤鎴风嫭绔嬬敓鎴� secretkey銆�
+ *
+ * @return [鎻掑叆鏉℃暟, 璺宠繃鏉℃暟]
+ */
+ int[] initAllUsers();
+
+ /**
+ * 淇敼 / 鍒濆鍖栧綋鍓嶇櫥褰曠敤鎴风殑绛惧悕瀵嗙爜銆�
+ *
+ * <p>鏍¢獙閾撅細
+ * <ol>
+ * <li>code + timestamp 鍛戒腑鍥惧舰楠岃瘉鐮佺紦瀛橈紙涓嶅尯鍒嗗ぇ灏忓啓锛�</li>
+ * <li>褰撳墠 session 鐢ㄦ埛瀛樺湪</li>
+ * <li>accountPassword 閫氳繃 Md5(accountPassword + secretkey) 姣斿 base_user.f_password</li>
+ * <li>password / repeatPassword 鍧囬潪绌轰笖鐩哥瓑</li>
+ * <li>鐢熸垚鏂扮殑 secretkey 涓� hash锛屽啓鍏� / 鏇存柊 lims_user_sign_password锛屽埛鏂� last_reset_time</li>
+ * </ol>
+ *
+ * <p>鐢ㄦ埛棣栨璁剧疆绛惧悕瀵嗙爜锛堟湭瀛樺湪 lims_user_sign_password 璁板綍锛夊拰鍚庣画淇敼璧板悓涓�鎺ュ彛锛�
+ * 琛屼负鍒嗗埆涓� INSERT 涓� UPDATE銆�
+ *
+ * @throws jnpf.exception.DataException 浠讳竴鏍¢獙澶辫触
+ */
+ void modifySignPassword(LimsModifySignPasswordParam param);
+
+ /**
+ * 鏍¢獙涓氬姟渚т紶鍏ョ殑 biz_sign锛堝嵆 lims_sign 涓婚敭锛夌湡瀹炴湁鏁堛��
+ *
+ * <p>op_type 涓� data_id 鍚勮嚜鐙珛鏀寔 lazy / eager锛堣嚜鏂规 C 璧凤級锛�
+ * <ul>
+ * <li>瀛楁涓虹┖ 鈫� 浠呭湪杩斿洖瀹炰綋涓ˉ鍏ㄤ笟鍔℃湡鏈涘�硷紝鏆備笉鍐欏簱</li>
+ * <li>瀛楁宸叉湁鍊� 鈫� 涓ユ牸鏍¢獙涓庝笟鍔℃湡鏈涘尮閰嶏紝涓嶇鎶� DataException</li>
+ * </ul>
+ * 鐪熸璁ら鐢� {@link #recordSignUsage} 鍦ㄤ笟鍔℃垚鍔熷悗鍘熷瓙瀹屾垚锛岄伩鍏嶇姸鎬佸啿绐佹椂鎻愬墠娑堣垂绛惧悕銆�
+ * 宸叉湁 {@code extra_json} 鐨勭鍚嶈涓哄凡娑堣垂锛屽繀椤婚噸鏂扮鍚嶏紝涓嶈兘璺ㄤ笟鍔″懆鏈熷鐢ㄣ��
+ *
+ * <p>expectedDataId 浼� null = 涓氬姟鎺ュ彛涓嶉渶瑕� data_id 閿氱偣锛堝 jiance-task 鎵归噺绫伙級锛�
+ * 姝ゆ椂瀹屽叏璺宠繃 data_id 鏍¢獙锛屼繚鐣� verify 鏃剁殑鍘熷�间笉鍔ㄣ��
+ *
+ * <p>绛惧悕浜哄缁堟牎楠岋細蹇呴』绛変簬褰撳墠 session 鐢ㄦ埛锛堥槻鍒汉绛剧殑琚伔鐢級銆�
+ *
+ * @param signId 鍓嶇鍥炰紶鐨� biz_sign锛坙ims_sign 涓婚敭锛�
+ * @param expectedOpType 涓氬姟鏈熸湜鐨勬搷浣滅被鍨�
+ * @param expectedDataId 涓氬姟鏈熸湜鐨� data_id锛涗紶 null 琛ㄧず涓嶉敋 data_id
+ * @return 鏍¢獙閫氳繃鐨勭鍚嶈褰�
+ */
+ LimsSignEntity requireValidSign(String signId, SignOpType expectedOpType, String expectedDataId);
+
+ /**
+ * 鍦ㄤ笟鍔″啓搴撴垚鍔熷悗璁板綍绛惧悕琚疄闄呬娇鐢ㄧ殑浜嬪疄銆�
+ *
+ * <p>鍙帴鍙椾笟鍔� service 杩斿洖鐨勫疄闄呮垚鍔熺洰鏍囷紱璇锋眰涓洜鐘舵�併�佹潈闄愭垨骞跺彂琚烦杩囩殑鐩爣涓嶅緱浼犲叆銆�
+ * 瀹為檯鐩爣涓虹┖鏃朵笉璁ら绛惧悕銆佷笉鏇存柊 {@code lims_sign.extra_json}锛屼篃涓嶇敓鎴� {@code SIGN_USED}銆�
+ * 闈炵┖鏃跺厛閫氳繃鏉′欢鏇存柊涓�娆℃�у師瀛愯棰嗙鍚嶏紝鍐嶅皢浜嬩欢浜ょ粰 AuditTxHolder 鍦ㄤ簨鍔℃彁浜ゅ悗鍙戝竷锛�
+ * 宸叉秷璐圭鍚嶃�佽棰嗗啿绐佹垨缁撴灉淇濆瓨澶辫触浼氭爣璁板綋鍓嶄簨鍔″洖婊氥��
+ */
+ void recordSignUsage(LimsSignEntity sign,
+ SignOpType opType,
+ Collection<String> requestedTargetIds,
+ Collection<LimsSignUsageTarget> actualTargets);
+
+ /**
+ * 鍙仛绛惧悕鐨勫師瀛愯棰嗭紝<b>涓嶅彂瀹¤浜嬩欢</b>銆�
+ *
+ * <p>缁欍�岀鍚嶄簨瀹炵敱鍒璁板綍銆嶇殑璋冪敤鏂圭敤鈥斺�斿綋鍓嶆槸鍦ㄧ嚎琛ㄥ崟璺緞锛氳〃鍗曚繚瀛樻湰韬凡缁忎骇鐢熷眰 0
+ * 浜嬩欢锛屽眰 0 浼氭嵁琛ㄥ崟閲岀殑绛惧悕瀛楁琛ュ啓涓�鏉$鍚嶄簨浠讹紱杩欓噷鍐嶅彂涓�鏉� {@code SIGN_USED}
+ * 灏辨槸鍚屼竴娆$鍚嶄袱鏉¤瘉鎹��
+ *
+ * <p><b>璁ら閫昏緫蹇呴』淇濈暀</b>锛氬畠鏄�岀鍚嶅崟娆℃秷璐广�嶇殑闃查噸鏀炬姢鏍忥紙ed4d908锛夛紝
+ * 鍘绘帀绛変簬鍚屼竴涓鍚嶅彲浠ュ弽澶嶄娇鐢ㄣ��
+ *
+ * <p>涓� {@link #recordSignUsage} 鐨勫叧绯绘槸銆屽悓涓�娈佃棰� + 鏄惁鍐嶅彂浜嬩欢銆嶏細
+ * {@code recordSignUsage} 鍐呴儴灏辫皟鏈柟娉曪紝涓ゅ璁ら閫昏緫鍙湁涓�浠斤紝涓嶄細鍚勮嚜婕傜Щ銆�
+ * 璁ら鐨勫叏閮ㄥ墠缃潯浠讹紙绌虹洰鏍囦笉璁ら銆佽棰嗗啿绐佹爣璁颁簨鍔″洖婊氾級涓� {@code recordSignUsage} 瀹屽叏涓�鑷淬��
+ */
+ void claimSignUsageOnly(LimsSignEntity sign,
+ SignOpType opType,
+ Collection<String> requestedTargetIds,
+ Collection<LimsSignUsageTarget> actualTargets);
+
+ /**
+ * 鎶婁换鎰忕粨鏋勬暟鎹簭鍒楀寲涓� JSON 鍚庡洖鍐欏埌 lims_sign.extra_json銆�
+ *
+ * <p>鍏稿瀷鐢ㄦ硶锛�
+ * <ul>
+ * <li>jiance-task 鎵归噺绫绘妸 ids 鍖呮垚 {"targets":[...]} 钀藉簱</li>
+ * <li>涓氬姟鎯冲姞缁撴瀯鍖栨搷浣滄棩蹇楋細{"targets":[...],"comments":"..."}</li>
+ * </ul>
+ *
+ * <p>extra 涓� null 鏃朵笉鏇存柊銆傞噸澶嶈皟鐢ㄤ細瑕嗙洊锛堜笟鍔℃渶鏂颁竴娆℃渶鏉冨▉锛夈��
+ *
+ * @param signId 绛惧悕璁板綍涓婚敭锛堝嵆 biz_sign锛�
+ * @param extra 浠绘剰鍙簭鍒楀寲瀵硅薄锛圡ap / List / POJO 閮藉彲锛�
+ */
+ void attachExtra(String signId, Object extra);
+}
--
Gitblit v1.8.0