提交
This commit is contained in:
@@ -40,4 +40,57 @@ final class CustomerCenter extends Base
|
|||||||
|
|
||||||
return $this->ok((array)($result['data'] ?? []));
|
return $this->ok((array)($result['data'] ?? []));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function applicant()
|
||||||
|
{
|
||||||
|
$userId = $this->requireLogin();
|
||||||
|
if (!is_int($userId)) {
|
||||||
|
return $userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
$applicantId = (int)$this->request->param('applicant_id', 0);
|
||||||
|
if ($applicantId <= 0) {
|
||||||
|
return $this->fail('参数错误');
|
||||||
|
}
|
||||||
|
$result = (new CustomerCenterService())->applicant($userId, $applicantId);
|
||||||
|
if ((int)($result['code'] ?? 0) !== 1) {
|
||||||
|
return $this->fail((string)($result['msg'] ?? '服务异常,请稍后重试'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->ok((array)($result['data'] ?? []));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveApplicant()
|
||||||
|
{
|
||||||
|
$userId = $this->requireLogin();
|
||||||
|
if (!is_int($userId)) {
|
||||||
|
return $userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = (new CustomerCenterService())->saveApplicant($userId, $this->postData());
|
||||||
|
if ((int)($result['code'] ?? 0) !== 1) {
|
||||||
|
return $this->fail((string)($result['msg'] ?? '保存失败,请稍后重试'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->ok((array)($result['data'] ?? []), '保存成功');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeApplicant()
|
||||||
|
{
|
||||||
|
$userId = $this->requireLogin();
|
||||||
|
if (!is_int($userId)) {
|
||||||
|
return $userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
$applicantId = (int)$this->request->param('applicant_id', 0);
|
||||||
|
if ($applicantId <= 0) {
|
||||||
|
return $this->fail('参数错误');
|
||||||
|
}
|
||||||
|
$result = (new CustomerCenterService())->removeApplicant($userId, $applicantId);
|
||||||
|
if ((int)($result['code'] ?? 0) !== 1) {
|
||||||
|
return $this->fail((string)($result['msg'] ?? '移除失败,请稍后重试'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->ok([], '已移除');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ namespace app\miniapi\controller;
|
|||||||
|
|
||||||
use api\Httpcurl;
|
use api\Httpcurl;
|
||||||
use app\miniapi\service\Context\MiniAppContext;
|
use app\miniapi\service\Context\MiniAppContext;
|
||||||
|
use app\miniapi\service\CustomerCenter\CustomerCenterService;
|
||||||
use app\miniapi\service\Payment\MiniPayService;
|
use app\miniapi\service\Payment\MiniPayService;
|
||||||
use app\miniapi\service\Product\ProductService;
|
use app\miniapi\service\Product\ProductService;
|
||||||
|
use think\facade\Log;
|
||||||
|
|
||||||
class Evus extends Base
|
class Evus extends Base
|
||||||
{
|
{
|
||||||
@@ -74,6 +76,8 @@ class Evus extends Base
|
|||||||
return $this->fail($result['msg'] ?? '提交失败,请联系管理员');
|
return $this->fail($result['msg'] ?? '提交失败,请联系管理员');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->syncApplicantAfterOrderCreated($userId, $orderSn, $data);
|
||||||
|
|
||||||
if (!empty($data['openid'])) {
|
if (!empty($data['openid'])) {
|
||||||
$pay = $this->requestMiniPay($context, $orderSn, $totalPrice, $data['openid']);
|
$pay = $this->requestMiniPay($context, $orderSn, $totalPrice, $data['openid']);
|
||||||
if ($pay['code'] !== 1) {
|
if ($pay['code'] !== 1) {
|
||||||
@@ -119,7 +123,9 @@ class Evus extends Base
|
|||||||
$payload['passport_issue_place'],
|
$payload['passport_issue_place'],
|
||||||
$payload['product_value'],
|
$payload['product_value'],
|
||||||
$payload['product_name'],
|
$payload['product_name'],
|
||||||
$payload['product_desc']
|
$payload['product_desc'],
|
||||||
|
$payload['customer_applicant_id'],
|
||||||
|
$payload['customer_profile_version_id']
|
||||||
);
|
);
|
||||||
$totalPrice = (string)$product['value'];
|
$totalPrice = (string)$product['value'];
|
||||||
$payload['user_id'] = $userId;
|
$payload['user_id'] = $userId;
|
||||||
@@ -159,4 +165,23 @@ class Evus extends Base
|
|||||||
{
|
{
|
||||||
return (new MiniPayService())->request($context, $orderSn, $money, $openid, 'miniapi evus mini pay');
|
return (new MiniPayService())->request($context, $orderSn, $money, $openid, 'miniapi evus mini pay');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function syncApplicantAfterOrderCreated(int $userId, string $orderSn, array $data): void
|
||||||
|
{
|
||||||
|
$applicantId = (int)($data['customer_applicant_id'] ?? 0);
|
||||||
|
if ($applicantId <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = (new CustomerCenterService())->syncEvusApplicant($userId, $applicantId, $orderSn, $data);
|
||||||
|
if ((int)($result['code'] ?? 0) !== 1) {
|
||||||
|
// The order already exists, so contact synchronization must never turn a successful order into a failure.
|
||||||
|
Log::warning(sprintf(
|
||||||
|
'miniapi evus contact sync failed: applicant_id=%d order_sn=%s msg=%s',
|
||||||
|
$applicantId,
|
||||||
|
$orderSn,
|
||||||
|
(string)($result['msg'] ?? 'unknown')
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,37 @@ final class CustomerCenterService
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function applicant(int $userId, int $applicantId): array
|
||||||
|
{
|
||||||
|
return $this->request('applicant', $userId, ['applicant_id' => $applicantId]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveApplicant(int $userId, array $params): array
|
||||||
|
{
|
||||||
|
return $this->request('saveApplicant', $userId, $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeApplicant(int $userId, int $applicantId): array
|
||||||
|
{
|
||||||
|
return $this->request('removeApplicant', $userId, ['applicant_id' => $applicantId]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function syncEvusApplicant(
|
||||||
|
int $userId,
|
||||||
|
int $applicantId,
|
||||||
|
string $orderSn,
|
||||||
|
array $profile
|
||||||
|
): array {
|
||||||
|
return $this->request('syncEvusApplicant', $userId, [
|
||||||
|
'applicant_id' => $applicantId,
|
||||||
|
'order_sn' => $orderSn,
|
||||||
|
'profile_json' => json_encode(
|
||||||
|
$profile,
|
||||||
|
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE
|
||||||
|
),
|
||||||
|
], 5);
|
||||||
|
}
|
||||||
|
|
||||||
public function payload(int $userId, array $params = []): array
|
public function payload(int $userId, array $params = []): array
|
||||||
{
|
{
|
||||||
return ['user_id' => $userId] + $params;
|
return ['user_id' => $userId] + $params;
|
||||||
@@ -28,7 +59,14 @@ final class CustomerCenterService
|
|||||||
|
|
||||||
public function endpoint(string $userUrl, string $action): string
|
public function endpoint(string $userUrl, string $action): string
|
||||||
{
|
{
|
||||||
if (!in_array($action, ['applicants', 'applications'], true)) {
|
if (!in_array($action, [
|
||||||
|
'applicants',
|
||||||
|
'applications',
|
||||||
|
'applicant',
|
||||||
|
'saveApplicant',
|
||||||
|
'removeApplicant',
|
||||||
|
'syncEvusApplicant',
|
||||||
|
], true)) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +81,7 @@ final class CustomerCenterService
|
|||||||
return is_string($endpoint) && $endpoint !== $userUrl ? $endpoint : '';
|
return is_string($endpoint) && $endpoint !== $userUrl ? $endpoint : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
private function request(string $action, int $userId, array $params = []): array
|
private function request(string $action, int $userId, array $params = [], int $timeout = 0): array
|
||||||
{
|
{
|
||||||
$url = $this->endpoint(trim((string)config('app.user_url')), $action);
|
$url = $this->endpoint(trim((string)config('app.user_url')), $action);
|
||||||
if ($url === '') {
|
if ($url === '') {
|
||||||
@@ -51,7 +89,7 @@ final class CustomerCenterService
|
|||||||
}
|
}
|
||||||
|
|
||||||
$payload = $this->payload($userId, $params);
|
$payload = $this->payload($userId, $params);
|
||||||
$response = Httpcurl::request($url, 'post', $payload);
|
$response = Httpcurl::request($url, 'post', $payload, [], $timeout);
|
||||||
if (!is_array($response) || !isset($response[0]) || !empty($response[3])) {
|
if (!is_array($response) || !isset($response[0]) || !empty($response[3])) {
|
||||||
Log::error('miniapi customer center ' . $action . ' request failed');
|
Log::error('miniapi customer center ' . $action . ' request failed');
|
||||||
return ['code' => 0, 'msg' => '服务异常,请稍后重试', 'data' => []];
|
return ['code' => 0, 'msg' => '服务异常,请稍后重试', 'data' => []];
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ Route::group('miniapi', function () {
|
|||||||
|
|
||||||
Route::get('customer-center/applicants', 'CustomerCenter/applicants');
|
Route::get('customer-center/applicants', 'CustomerCenter/applicants');
|
||||||
Route::get('customer-center/applications', 'CustomerCenter/applications');
|
Route::get('customer-center/applications', 'CustomerCenter/applications');
|
||||||
|
Route::post('customer-center/applicant', 'CustomerCenter/applicant');
|
||||||
|
Route::post('customer-center/applicant/save', 'CustomerCenter/saveApplicant');
|
||||||
|
Route::post('customer-center/applicant/remove', 'CustomerCenter/removeApplicant');
|
||||||
|
|
||||||
Route::get('ocr/signature', 'Ocr/signature');
|
Route::get('ocr/signature', 'Ocr/signature');
|
||||||
Route::post('upload/image', 'Upload/image');
|
Route::post('upload/image', 'Upload/image');
|
||||||
|
|||||||
Reference in New Issue
Block a user