false, 'msg' => '用户ID不能为空']; } if (empty($reward_id)) { return ['status' => false, 'msg' => '奖励ID不能为空']; } // 获取奖励信息 $rewards = Reward::where('reward_id', '=', $reward_id) ->select() ->toArray(); if (empty($rewards)) { return ['status' => false, 'msg' => '未找到有效奖励']; } $result = []; $user = User::find($user_id); if (empty($user)) { return ['status' => false, 'msg' => '用户不存在']; } foreach ($rewards as $reward) { $res = self::sendSingleReward($user_id, $reward, $source); $result[] = $res; } return ['status' => true, 'msg' => '奖励发放成功', 'data' => $result]; } /** * 发放奖励 * @param int $user_id 用户ID * @param string $reward_ids 奖励ID或奖励ID数组 * @param string $source 奖励来源(如:签到、任务等) * @return array 处理结果 */ public static function sendRewardsMultiple($user_id, $reward_id, $sign_multiple, $source = '系统奖励') { if (!$user_id) { return ['status' => false, 'msg' => '用户ID不能为空']; } // 获取奖励信息 $rewards = Reward::where('reward_id', '=', $reward_id) ->select() ->toArray(); if (empty($rewards)) { return ['status' => false, 'msg' => '未找到有效奖励']; } $result = []; $user = User::find($user_id); if (empty($user)) { return ['status' => false, 'msg' => '用户不存在']; } foreach ($rewards as &$reward) { $reward['reward_value'] = $reward['reward_value'] * $sign_multiple; $res = self::sendSingleReward($user_id, $reward, $source); $result[] = $res; } return ['status' => true, 'msg' => '奖励发放成功', 'data' => $result]; } /** * 发放单个奖励 * @param int $user_id 用户ID * @param array $reward 奖励信息 * @param string $source 奖励来源 * @return array 处理结果 */ protected static function sendSingleReward($user_id, $reward, $source) { $result = ['reward_id' => $reward['id'], 'status' => false, 'msg' => '']; switch ($reward['reward_type']) { case 1: // 钻石 $res = User::changeMoney($user_id, $reward['reward_value'], 6, $source); $result['status'] = !empty($res); $result['msg'] = $result['status'] ? '获得钻石*' . $reward['reward_value'] : '钻石发放失败'; break; case 2: // 货币1 $res = User::changeIntegral($user_id, $reward['reward_value'], 6, $source); $result['status'] = !empty($res); $result['msg'] = $result['status'] ? '获得UU币*' . $reward['reward_value'] : 'UU币发放失败'; break; case 3: // 货币2 $res = User::changeMoney2($user_id, $reward['reward_value'], 6, $source); $result['status'] = !empty($res); $result['msg'] = $result['status'] ? '获得达达券*' . $reward['reward_value'] : '达达券发放失败'; break; case 4: // 优惠券 if (!empty($reward['reward_extend'])) { $coupon = Coupon::find($reward['reward_extend']); if (!empty($coupon)) { // 发放优惠券 $ttype = isset($coupon['ttype']) ? $coupon['ttype'] : 0; $res = CouponReceive::insert([ 'user_id' => $user_id, 'title' => $coupon['title'], 'price' => $coupon['price'], 'man_price' => $coupon['man_price'], 'end_time' => $coupon['effective_day'] * 86400 + time(), 'addtime' => time(), 'coupon_id' => $coupon['id'], 'state' => $ttype ]); $result['status'] = !empty($res); $result['msg'] = $result['status'] ? '优惠券发放成功' : '优惠券发放失败'; } else { $result['msg'] = '优惠券不存在'; } } else { $result['msg'] = '优惠券ID不能为空'; } break; default: $result['msg'] = '不支持的奖励类型'; break; } return $result; } }