XuqmGroup-Server/push-service/src/main/java/com/xuqm/push/controller/PushAuthController.java

57 行
2.3 KiB
Java

package com.xuqm.push.controller;
import com.xuqm.common.model.ApiResponse;
import com.xuqm.push.entity.DeviceTokenEntity;
import com.xuqm.push.service.PushAccountService;
import com.xuqm.push.service.PushDispatcher;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/api/push/auth")
public class PushAuthController {
private final PushAccountService accountService;
private final PushDispatcher pushDispatcher;
public PushAuthController(PushAccountService accountService, PushDispatcher pushDispatcher) {
this.accountService = accountService;
this.pushDispatcher = pushDispatcher;
}
/**
* Login with userSig. On success, automatically registers the device push token.
* Returns a pushToken (JWT) used to authenticate subsequent push service requests.
*/
@PostMapping("/login")
public ResponseEntity<ApiResponse<Map<String, Object>>> login(
@RequestParam String appKey,
@RequestParam String userId,
@RequestParam String userSig,
@RequestParam DeviceTokenEntity.Vendor vendor,
@RequestParam String token,
@RequestParam(required = false) String platform,
@RequestParam(required = false) String deviceId,
@RequestParam(required = false) String brand,
@RequestParam(required = false) String model,
@RequestParam(required = false) String osVersion,
@RequestParam(required = false) String appVersion) {
PushAccountService.LoginResult result = accountService.loginWithUserSig(appKey, userId, userSig);
pushDispatcher.registerToken(appKey, userId, vendor, token, platform, deviceId, brand, model, osVersion, appVersion);
Map<String, Object> response = Map.of(
"pushToken", result.pushToken(),
"userId", result.user().getUserId(),
"appKey", appKey,
"nickname", result.user().getNickname() != null ? result.user().getNickname() : ""
);
return ResponseEntity.ok(ApiResponse.success(response));
}
}