checkNum($value); $account = $this->userAccountModel->getAccountByUserId($userId); if (!$account) throw new ErrException('请检查账户信息'); $insertModel = new AccountDetail(); $insertModel->user_id = $userId; $insertModel->account_type = AccountCode::ACCOUNT_TYPE_POINT; $insertModel->business_code = $businessCode; $insertModel->before_num = $account->integral; $insertModel->change_num = $value; $insertModel->after_num = $account->integral + (float)$value; $insertModel->track_user_id = 0; $insertModel->track_param = json_encode($data); $insertModel->remark = empty($description) ? AccountCode::getMessage($businessCode) : $description; if (!$insertModel->save() || !$this->userAccountModel->incPointByUserId($userId, $value)) throw new ErrException('添加账户记录异常'); return true; } public function dec(int $userId, string $value, int $businessCode, array $data, string $description = ''): bool { $this->checkNum($value); $account = $this->userAccountModel->getAccountByUserId($userId); if (!$account) throw new ErrException('请检查账户信息'); if ($value > $account->integral) throw new ErrException('账户余额不足'); $insertModel = new AccountDetail(); $insertModel->user_id = $userId; $insertModel->account_type = AccountCode::ACCOUNT_TYPE_POINT; $insertModel->business_code = $businessCode; $insertModel->before_num = $account->integral; $insertModel->change_num = '-'.$value; $insertModel->after_num = $account->integral - (float)$value; $insertModel->track_user_id = 0; $insertModel->track_param = json_encode($data); $insertModel->remark = empty($description) ? AccountCode::getMessage($businessCode) : $description; if (!$insertModel->save() || !$this->userAccountModel->decIntegralByUserId($userId, $value)) throw new ErrException('删除账户记录异常'); return true; } }