功能:全局奖励接收次数上限(职务管理页配置)

新增全局 sysparam 配置 reward_recipient_daily_max:
- 控制每位用户单日内从所有职务持有者处累计接收奖励的最高次数
- 0 = 不限制

后端变更:
- PositionController::saveRewardConfig() 保存配置
- POST admin/positions/reward-config 路由
- AdminCommandController::reward() 新增第④层校验:
  全局次数上限(优先级低于职务级别的 recipient_daily_limit)

视图变更:
- 职务管理页顶部加橙色配置卡片(行内表单,即改即存)
- 显示当前全局配置值
This commit is contained in:
2026-03-01 11:22:02 +08:00
parent a145c6fc0a
commit baaa7087b0
4 changed files with 79 additions and 1 deletions
@@ -101,6 +101,33 @@
{{ session('error') }}</div>
@endif
{{-- 全局奖励接收上限配置卡片 --}}
<div class="mb-6 bg-amber-50 border border-amber-200 rounded-xl p-5">
<div class="flex items-start justify-between gap-4 flex-wrap">
<div class="flex-1 min-w-0">
<h3 class="text-sm font-bold text-amber-800 mb-1">🪙 全局奖励接收上限</h3>
<p class="text-xs text-amber-700 leading-relaxed">
每位用户单日内可从<b>所有职务持有者</b>处累计接收奖励金币的最高次数。
设为 <code class="bg-amber-100 px-1 rounded">0</code> 表示不限制。
当前配置:<b>{{ $globalRecipientDailyMax > 0 ? $globalRecipientDailyMax . ' 次' : '不限' }}</b>
</p>
</div>
<form action="{{ route('admin.positions.reward_config') }}" method="POST"
class="flex items-center gap-2 shrink-0">
@csrf
<label class="text-xs text-amber-700 font-bold whitespace-nowrap">每日上限:</label>
<input type="number" name="reward_recipient_daily_max" value="{{ $globalRecipientDailyMax }}"
min="0" max="9999"
class="w-24 h-8 px-2 text-sm border border-amber-300 rounded-md bg-white text-amber-900 focus:outline-none focus:ring-2 focus:ring-amber-400">
<span class="text-xs text-amber-600">次(0=不限)</span>
<button type="submit"
class="h-8 px-3 bg-amber-500 text-white text-xs font-bold rounded-md hover:bg-amber-600 transition">
保存
</button>
</form>
</div>
</div>
{{-- 按部门分组展示职务 --}}
@foreach ($departments as $dept)
<div class="mb-8">