package com.wms_main.controller.wms;

import com.wms_main.model.dto.query.UserQuery;
import com.wms_main.model.dto.query.UserUpdateRequest;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
import com.wms_main.model.dto.response.wms.WmsApiResponse;
import com.wms_main.model.vo.wms.PageVo;
import com.wms_main.model.vo.wms.UserVo;
import com.wms_main.service.controller.IUserControllerService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * 用户控制类
 * 权限控制与角色控制
 */
@RestController
@ResponseBody
@CrossOrigin
@RequiredArgsConstructor
@RequestMapping("/wms/user")
public class UserController {
    private final IUserControllerService userControllerService;
    /**
     * 查询用户列表
     * @param userQuery 查询参数
     * @return 查询结果
     */
    @PostMapping("/getUserList")
    WmsApiResponse<PageVo<UserVo>> getUserList(@RequestBody UserQuery userQuery) {
        return userControllerService.getUserList(userQuery);
    }


    /**
     * 添加用户信息
     * @param userUpdateRequest 添加参数
     * @return 添加结果
     */
    @PostMapping("/addUserInfo")
    BaseWmsApiResponse addUserInfo(@RequestBody UserUpdateRequest userUpdateRequest) {
        return userControllerService.addUserInfo(userUpdateRequest);
    }

    /**
     * 删除用户信息
     * @param userUpdateRequest 删除参数
     * @return 删除结果
     */
    @PostMapping("/deleteUserInfo")
    BaseWmsApiResponse deleteUserInfo(@RequestBody UserUpdateRequest userUpdateRequest) {
        return userControllerService.deleteUserInfo(userUpdateRequest);
    }

    /**
     * 更新用户信息
     * @param userUpdateRequest 更新参数
     * @return 更新结果
     */
    @PostMapping("/updateUserInfo")
    BaseWmsApiResponse updateUserInfo(@RequestBody UserUpdateRequest userUpdateRequest) {
        return userControllerService.updateUserInfo(userUpdateRequest);
    }

    /**
     * 修改用户密码
     * @param userUpdateRequest 密码修改参数
     * @return 修改结果
     */
    @PostMapping("/changePasswordInfo")
    BaseWmsApiResponse changePassword(@RequestBody UserUpdateRequest userUpdateRequest) {
        return userControllerService.changePassword(userUpdateRequest);
    }


    /**
     * 设置用户权限
     * @param userUpdateRequest 获取权限参数
     * @return 获取权限结果
     */
    @PostMapping("/setUserPermission")
    BaseWmsApiResponse setUserPermission(@RequestBody UserUpdateRequest userUpdateRequest) {
        return userControllerService.setUserPermission(userUpdateRequest);
    }

    /**
     * 获取用户权限
     * @param userUpdateRequest 获取权限参数
     * @return 获取权限结果
     */
    @PostMapping("/getUserPermission")
    BaseWmsApiResponse getUserPermission(@RequestBody UserUpdateRequest userUpdateRequest) {
        return userControllerService.getUserPermission(userUpdateRequest);
    }



}
