package com.tuoheng.system.controller;


import com.tuoheng.common.annotation.Log;
import com.tuoheng.common.enums.LogType;
import com.tuoheng.common.utils.JsonResult;
import com.tuoheng.system.dto.ResetPwdDto;
import com.tuoheng.system.entity.User;
import com.tuoheng.system.query.UserQuery;
import com.tuoheng.system.service.IUserService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import com.tuoheng.common.common.BaseController;

/**
 * <p>
 * 后台用户管理表 前端控制器
 * </p>
 *
 * @author 拓恒
 * @since 2020-10-30
 */
@RestController
@RequestMapping("/user")
public class UserController extends BaseController {

    @Autowired
    private IUserService userService;

    /**
     * 获取用户列表
     *
     * @param userQuery 查询条件
     * @return
     */
//    @RequiresPermissions("sys:user:index")
    @GetMapping("/index")
    public JsonResult index(UserQuery userQuery) {
        userQuery.setTerminalType(1);
        return userService.getList(userQuery);
    }
    /**
     * 获取终端用户列表
     * @param userQuery 查询条件
     * @return
     */
//    @RequiresPermissions("sys:user:index")
    @GetMapping("/apiIndex")
    public JsonResult apiIndex(UserQuery userQuery) {
        userQuery.setTerminalType(2);
        return userService.getList(userQuery);
    }
    /**
     * 获取会员详情
     *
     * @param userId 用户ID
     * @return
     */
//    @RequiresPermissions("sys:user:detail")
    @GetMapping("/detail/{userId}")
    public JsonResult detail(@PathVariable("userId") Integer userId) {
        return userService.detail(userId);
    }

    /**
     * 添加用户
     *
     * @param entity 实体对象
     * @return
     */
    @Log(title = "用户管理", logType = LogType.INSERT)
//    @RequiresPermissions("sys:user:add")
    @PostMapping("/add")
    public JsonResult add(@RequestBody User entity) {
        return userService.edit(entity);
    }

    /**
     * 编辑用户
     *
     * @param entity 实体对象
     * @return
     */
    @Log(title = "用户管理", logType = LogType.UPDATE)
//    @RequiresPermissions("sys:user:edit")
    @PutMapping("/edit")
    public JsonResult edit(@RequestBody User entity) {
        return userService.edit(entity);
    }

    /**
     * 删除用户
     *
     * @param userIds 用户ID
     * @return
     */
    @Log(title = "用户管理", logType = LogType.DELETE)
//    @RequiresPermissions("sys:user:delete")
    @DeleteMapping("/delete/{userIds}")
    public JsonResult delete(@PathVariable("userIds") Integer[] userIds) {
        return userService.deleteByIds(userIds);
    }

    /**
     * 设置状态
     *
     * @param entity 实体对象
     * @return
     */
    @Log(title = "用户管理", logType = LogType.STATUS)
//    @RequiresPermissions("sys:user:status")
    @PutMapping("/status")
    public JsonResult status(@RequestBody User entity) {
        return userService.setStatus(entity);
    }

    /**
     * 重置密码
     *
     * @param resetPwdDto 参数
     * @return
     */
    @Log(title = "用户管理", logType = LogType.RESETPWD)
//    @RequiresPermissions("sys:user:resetPwd")
    @PutMapping("/resetPwd")
    public JsonResult resetPwd(@RequestBody ResetPwdDto resetPwdDto) {
        return userService.resetPwd(resetPwdDto);
    }

    /**
     * 获取用户列表
     *
     * @param type 用户类型：1普通用户 2飞手
     * @return
     */
    @GetMapping("/getUserList/{type}")
    public JsonResult getUserList(@PathVariable("type") Integer type) {
        return userService.getUserList(type);
    }

}
