package com.tcm.training.admin.app.settings.controller;
|
|
import com.tcm.training.admin.app.auth.dto.AppWechatLoginRequest;
|
import com.tcm.training.admin.app.auth.vo.AppLoginResponse;
|
import com.tcm.training.admin.app.settings.dto.AppSettingsNotificationUpdateRequest;
|
import com.tcm.training.admin.app.settings.dto.AppSettingsPasswordUpdateRequest;
|
import com.tcm.training.admin.app.settings.dto.AppSettingsPhoneBindRequest;
|
import com.tcm.training.admin.app.settings.dto.AppSettingsPhoneCodeRequest;
|
import com.tcm.training.admin.app.settings.dto.AppSettingsPhoneUpdateRequest;
|
import com.tcm.training.admin.app.settings.dto.AppSettingsProfileUpdateRequest;
|
import com.tcm.training.admin.app.settings.service.AppSettingsService;
|
import com.tcm.training.admin.app.settings.vo.AppSettingsNotificationVO;
|
import com.tcm.training.admin.app.settings.vo.AppSettingsProfileVO;
|
import com.tcm.training.admin.app.settings.vo.AppSettingsWechatBindingVO;
|
import com.tcm.training.admin.common.ApiResponse;
|
import com.tcm.training.admin.upload.UploadController;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.validation.Valid;
|
import java.io.IOException;
|
|
/**
|
* APP 设置页接口。
|
*/
|
@Validated
|
@RestController
|
@RequestMapping({"/api/app/settings", "/api/v1/app/settings"})
|
public class AppSettingsController {
|
|
private final AppSettingsService appSettingsService;
|
|
/**
|
* 注入 APP 设置页服务。
|
*/
|
public AppSettingsController(AppSettingsService appSettingsService) {
|
this.appSettingsService = appSettingsService;
|
}
|
|
/**
|
* 获取当前登录用户资料。
|
*/
|
@GetMapping("/profile")
|
public ApiResponse<AppSettingsProfileVO> getProfile() {
|
return ApiResponse.ok(appSettingsService.getProfile());
|
}
|
|
/**
|
* 更新当前登录用户资料。
|
*/
|
@PutMapping("/profile")
|
public ApiResponse<AppSettingsProfileVO> updateProfile(@Valid @RequestBody AppSettingsProfileUpdateRequest request) {
|
return ApiResponse.ok(appSettingsService.updateProfile(request));
|
}
|
|
/**
|
* 上传当前登录用户头像。
|
*/
|
@PostMapping("/upload/avatar")
|
public ApiResponse<UploadController.UploadResult> uploadAvatar(@RequestParam("file") MultipartFile file) throws IOException {
|
return ApiResponse.ok(appSettingsService.uploadAvatar(file));
|
}
|
|
/**
|
* 发送修改手机号验证码。
|
*/
|
@PostMapping("/phone/code")
|
public ApiResponse<Void> sendPhoneCode(@Valid @RequestBody AppSettingsPhoneCodeRequest request) {
|
appSettingsService.sendPhoneChangeCode(request);
|
return ApiResponse.ok(null);
|
}
|
|
/**
|
* 修改当前登录用户手机号。
|
*/
|
@PutMapping("/phone")
|
public ApiResponse<AppSettingsProfileVO> updatePhone(@Valid @RequestBody AppSettingsPhoneUpdateRequest request) {
|
return ApiResponse.ok(appSettingsService.updatePhone(request));
|
}
|
|
/**
|
* 首次绑定当前登录用户手机号。
|
*/
|
@PutMapping("/phone/bind")
|
public ApiResponse<AppLoginResponse> bindPhone(@Valid @RequestBody AppSettingsPhoneBindRequest request) {
|
return ApiResponse.ok(appSettingsService.bindPhone(request));
|
}
|
|
/**
|
* 修改当前登录用户密码。
|
*/
|
@PutMapping("/password")
|
public ApiResponse<Void> updatePassword(@Valid @RequestBody AppSettingsPasswordUpdateRequest request) {
|
appSettingsService.updatePassword(request);
|
return ApiResponse.ok(null);
|
}
|
|
/**
|
* 绑定或换绑微信。
|
*/
|
@PostMapping("/wechat/bind")
|
public ApiResponse<AppSettingsWechatBindingVO> bindWechat(@RequestBody AppWechatLoginRequest request) {
|
return ApiResponse.ok(appSettingsService.bindWechat(request));
|
}
|
|
/**
|
* 获取当前登录用户通知设置。
|
*/
|
@GetMapping("/notifications")
|
public ApiResponse<AppSettingsNotificationVO> getNotifications() {
|
return ApiResponse.ok(appSettingsService.getNotificationSettings());
|
}
|
|
/**
|
* 保存当前登录用户通知设置。
|
*/
|
@PutMapping("/notifications")
|
public ApiResponse<AppSettingsNotificationVO> updateNotifications(@Valid @RequestBody AppSettingsNotificationUpdateRequest request) {
|
return ApiResponse.ok(appSettingsService.updateNotificationSettings(request));
|
}
|
|
/**
|
* 注销当前账号。
|
*/
|
@DeleteMapping("/account")
|
public ApiResponse<Void> cancelAccount() {
|
appSettingsService.cancelAccount();
|
return ApiResponse.ok(null);
|
}
|
}
|