package cn.apes.cloud.controller; import cn.apes.cloud.config.TenantSource; import cn.apes.cloud.domain.entity.UserPreference; import cn.apes.cloud.service.impl.UserPreferenceServiceImpl; import cn.apes.commons.Res; import cn.apes.commons.auth.Login; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * 用户个性化配置控制器 * * @author OpenClaw * @since 2026-08-06 */ @RestController @TenantSource @RequestMapping("/userPreference") public class UserPreferenceController { @Resource private UserPreferenceServiceImpl userPreferenceService; /** * 查询指定用户的个性化配置 * * @param userId 用户ID * @return Res 响应对象 * - code: 状态码,1表示成功 * - data: 个性化配置对象(未配置时返回默认值 uiSize=2) */ @Login @PostMapping("/get") public Res getUserPreference(@RequestParam Long userId) { return userPreferenceService.getUserPreference(userId); } /** * 查询当前登录用户的个性化配置 * * @return Res 响应对象 * - code: 状态码,1表示成功 * - data: 当前用户的个性化配置对象(未配置时返回默认值 uiSize=2) */ @Login @PostMapping("/mine") public Res getCurrentUserPreference() { return userPreferenceService.getCurrentUserPreference(); } /** * 新增用户个性化配置 * * @param preference 配置对象 * - userId: 用户ID(必填) * - uiSize: UI尺寸 1-最大 2-中等 3-最小(必填) * @return Res 响应对象 * - code: 状态码,1表示成功 * - msg: 操作结果消息 */ @Login @PostMapping("/add") public Res addUserPreference(@RequestBody UserPreference preference) { return userPreferenceService.addUserPreference(preference); } /** * 更新用户个性化配置 * * @param preference 配置对象 * - userId: 用户ID(必填) * - uiSize: UI尺寸 1-最大 2-中等 3-最小(必填) * @return Res 响应对象 * - code: 状态码,1表示成功 * - msg: 操作结果消息 */ @Login @PostMapping("/update") public Res updateUserPreference(@RequestBody UserPreference preference) { return userPreferenceService.updateUserPreference(preference); } /** * 保存当前登录用户的个性化配置(不存在则新增,已存在则更新) * * @param preference 配置对象 * - uiSize: UI尺寸 1-最大 2-中等 3-最小(必填) * @return Res 响应对象 * - code: 状态码,1表示成功 * - msg: 操作结果消息 */ @Login @PostMapping("/save") public Res saveCurrentUserPreference(@RequestBody UserPreference preference) { return userPreferenceService.saveCurrentUserPreference(preference); } /** * 删除用户个性化配置(逻辑删除) * * @param userId 用户ID * @return Res 响应对象 * - code: 状态码,1表示成功 * - msg: 操作结果消息 */ @Login @PostMapping("/delete") public Res deleteUserPreference(@RequestParam Long userId) { return userPreferenceService.deleteUserPreference(userId); } }