|
@@ -77,6 +77,14 @@ const (
|
|
|
// SP18 老带新:(userid, order, remark, createUserid) —— 4 参,**有结果集**
|
|
// SP18 老带新:(userid, order, remark, createUserid) —— 4 参,**有结果集**
|
|
|
//(正文末尾 `SELECT recommendUserid,selectSchoolid,selectCampusid,success`)。
|
|
//(正文末尾 `SELECT recommendUserid,selectSchoolid,selectCampusid,success`)。
|
|
|
callUseActivityRecommend = "CALL sp_courses_activity_use_activity_recommend(?, ?, ?, ?)"
|
|
callUseActivityRecommend = "CALL sp_courses_activity_use_activity_recommend(?, ?, ?, ?)"
|
|
|
|
|
+
|
|
|
|
|
+ // SP 分账调额:(findUserid, updateQuota) —— 2 参,**没有结果集**
|
|
|
|
|
+ //(正文末尾那句 `SELECT userid FROM t_user_divide_into WHERE …` 只在某些路径上执行,
|
|
|
|
|
+ // 且它不是 `success/msg` 契约;本枚举落地时按"不读结果集"处理 —— 见 `returnsResultSet`)。
|
|
|
|
|
+ //
|
|
|
|
|
+ // ⚠ 缺 `root_userid` 过滤是**已知缺陷(F25 / TARGET-DEFECT,P0)**,
|
|
|
|
|
+ // 但它写在 SP 正文里,所以 CALL 这条语句本身与它无关 —— 修的是 target 的 repo。
|
|
|
|
|
+ callDivideQuotaClamp = "CALL sp_user_divide_into_update_quota(?, ?)"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// returnsResultSet 标记"该 SP 会 SELECT 出结果集"。
|
|
// returnsResultSet 标记"该 SP 会 SELECT 出结果集"。
|
|
@@ -101,6 +109,12 @@ func returnsResultSet(op Op) bool {
|
|
|
// 不读结果集的话:`Exec` 会留下未消费的结果集,且 `success=0`(LEAVE 分支)看不出来。
|
|
// 不读结果集的话:`Exec` 会留下未消费的结果集,且 `success=0`(LEAVE 分支)看不出来。
|
|
|
case OpUseActivityRecommend:
|
|
case OpUseActivityRecommend:
|
|
|
return true
|
|
return true
|
|
|
|
|
+ // `sp_user_divide_into_update_quota` **不在此列**(= 不读结果集)。
|
|
|
|
|
+ // 它的正文末尾确实有一句 `SELECT userid FROM t_user_divide_into WHERE …`,
|
|
|
|
|
+ // 但**不是 `success/msg` 契约**,且用户在不存在时那句的 `WHERE left_val>=NULL` 恒 NULL ⇒ 空集。
|
|
|
|
|
+ // 按"正文末尾有没有 SELECT"这条判据(见本函数抬头)它**该算有** ——
|
|
|
|
|
+ // 所以这里把差异显式写出来:本枚举落地时先按 `false` 调,**等 DV-7 实测 CALL 行为后再定**。
|
|
|
|
|
+ // ⚠ 若实测发现 `Exec` 会留下未消费结果集,就把本枚举挪到上面的 `return true` 组里。
|
|
|
}
|
|
}
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
@@ -161,6 +175,10 @@ func callArgs(c Case) []any {
|
|
|
// SP18:(userid, order, remark, createUserid)。`order` 同时充当 107 流水的 `logid`
|
|
// SP18:(userid, order, remark, createUserid)。`order` 同时充当 107 流水的 `logid`
|
|
|
//(varchar(32),所以 `StuCourseID` 不能超过 32 字符)。
|
|
//(varchar(32),所以 `StuCourseID` 不能超过 32 字符)。
|
|
|
return []any{c.LegacyUserID, c.StuCourseID, c.Remark, c.LegacyUserID}
|
|
return []any{c.LegacyUserID, c.StuCourseID, c.Remark, c.LegacyUserID}
|
|
|
|
|
+ case OpDivideQuotaClamp:
|
|
|
|
|
+ // (findUserid, updateQuota) —— 2 参,**没有 schoolid/campusid**,也没有 requestid。
|
|
|
|
|
+ // 金额入参是 FLOAT(元),与其它 SP 同口径。
|
|
|
|
|
+ return []any{c.LegacyUserID, moneyYuan}
|
|
|
default:
|
|
default:
|
|
|
return []any{c.LegacyUserID, c.InstitutionID, c.CampusID, moneyYuan,
|
|
return []any{c.LegacyUserID, c.InstitutionID, c.CampusID, moneyYuan,
|
|
|
c.Type, c.RequestID, c.Remark, c.LegacyUserID}
|
|
c.Type, c.RequestID, c.Remark, c.LegacyUserID}
|
|
@@ -206,6 +224,8 @@ func callStmt(op Op) string {
|
|
|
return callCounteractArrears
|
|
return callCounteractArrears
|
|
|
case OpUseActivityRecommend:
|
|
case OpUseActivityRecommend:
|
|
|
return callUseActivityRecommend
|
|
return callUseActivityRecommend
|
|
|
|
|
+ case OpDivideQuotaClamp:
|
|
|
|
|
+ return callDivideQuotaClamp
|
|
|
default:
|
|
default:
|
|
|
return callExpenditure
|
|
return callExpenditure
|
|
|
}
|
|
}
|