make(UserAwardIntegralServices::class); /** @var UserServices $userService */ $userService = app()->make(UserServices::class); $user = $userService->getUserInfo($order['uid']); $integral_price = $awardIntegralService->getPrice($order['id']); $total_price = $order['total_price']; return $awardIntegralService->transaction(function () use ($awardIntegralService, $userService, $user, $integral_price, $total_price, $order) { try { //添加静态积分 $static_integral_ratio = sys_config('static_integral_ratio', 0); $give_static_integral = bcdiv(bcmul($total_price, $static_integral_ratio), 100, 2); if ($give_static_integral > 0) { $rate = sys_config('static_integral_rate', 3); $extract_sum = bcmul($total_price, $rate, 2); $mark = '购买商品,获得静态积分'; $awardIntegralService->incIntegral($order['uid'], $integral_price, $give_static_integral, $total_price, 0, $extract_sum, $order['id'], $mark); } //添加奖池 $lake_ratio = sys_config('lake_ratio', 0); $add_lake = bcdiv(bcmul($total_price, $lake_ratio), 100, 2); if ($add_lake > 0) { $mark = '用户' . $order['uid'] . '购买商品,添加资金池'; $awardIntegralService->addLake($add_lake, $order['id'], $mark); } //TODO 加动态积分 //推荐奖 $spread = $userService->getUserInfo($user['spread_uid']); if ($spread) { if ($awardIntegralService->getPaySum($spread['uid']) >= 1000 || $awardIntegralService->getHourExtractPaySum($spread['uid'], 24) >= 1000) { $award_ratio = sys_config('recommend_integral', 0); $give_action_integral = bcdiv(bcmul($total_price, $award_ratio), 100, 2); if ($give_action_integral > 0) { $rate = sys_config('action_integral_rate', 3); $extract_sum = bcmul($give_action_integral, $rate, 2); $mark = '推荐用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得推荐积分'; $awardIntegralService->incIntegral($spread['uid'], $integral_price, $give_action_integral, $total_price, 1, $extract_sum, $order['id'], $mark); } } } return true; } catch (\Throwable $e) { Log::error('处理积分奖池失败,失败原因:' . $e->getMessage()); return false; } }); } /** * 减积分 * @param int $uid 用户 * @param float $static 静态积分 * @param float $action 动态积分 * @param float $cash 资金池 * @param int $link_id 关联ID * @param string $mark 备注 */ public function decIntegral(int $uid, float $static, float $action, float $cash, int $link_id = 0, string $mark = '') { } }