package com.bonus.canteen.core.auth.user.controller;

import com.bonus.canteen.core.auth.role.dto.MgrRoleUserListDTO;
import com.bonus.canteen.core.auth.role.vo.MgrRoleUserVO;
import com.bonus.canteen.core.auth.user.service.MgrUserService;
import com.bonus.common.core.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;

import java.util.List;

@RestController
@RequestMapping({"/api/v1/mgruser"})
@Api(
   value = "mgruser",
   tags = {"商家管理员模块"}
)
public class MgrUserController {
   private static final Logger log = LoggerFactory.getLogger(MgrUserController.class);
   private static final String USER_LOCK = "user-lock-";
   @Autowired
   private MgrUserService mgrUserService;
//   @Autowired
//   private StringRedisTemplate stringRedisTemplate;
//
//   @PostMapping({"/admin/add"})
//   @RequiresGuest
//   public LeResponse<Void> addMgrUserInfo(@RequestBody MgrUserAdminAddDTO mgrUserAdminAddDTO) {
//      this.mgrUserService.addMgrUserInfo(mgrUserAdminAddDTO);
//      return LeResponse.succ();
//   }
//
//   @PutMapping({"/block"})
//   @RequiresGuest
//   public LeResponse<Void> blockMgrUser() {
//      this.mgrUserService.blockMgrUser();
//      return LeResponse.succ();
//   }
//
//   @PostMapping({"/add"})
//   @RequiresAuthentication
//   @RequiresPermissions(
//      value = {"user:mgruser:add"},
//      logical = Logical.OR
//   )
//   @ApiOperation("新建商家操作员")
//   public LeResponse<Void> addMgrUser(@RequestBody @Valid LeRequest<MgrUserAddDTO> leRequest) {
//      MgrUserAddDTO userAddDTO = (MgrUserAddDTO)leRequest.getContent();
//      this.mgrUserService.addMgrUser(userAddDTO);
//      return LeResponse.succ();
//   }
//
//   @GetMapping({"/page"})
//   @RequiresAuthentication
//   @ApiOperation("分页获取商家操作员信息")
//   public LeResponse<Page<MgrUserPageVO>> getMgrUserPage(LeRequest<String> leRequest) {
//      String content = (String)leRequest.getContent();
//      Page<MgrUserPageVO> resultPage = this.mgrUserService.getMgrUserPage(content);
//      return LeResponse.succ(resultPage);
//   }
//
//   @GetMapping({"/page-other"})
//   @RequiresAuthentication
//   @ApiOperation("分页获取商家操作员信息")
//   public LeResponse<Page<MgrUserPageVO>> getMgrUserPageOther(LeRequest<String> leRequest) {
//      String content = (String)leRequest.getContent();
//      Page<MgrUserPageVO> resultPage = this.mgrUserService.getMgrUserPage(content);
//      return LeResponse.succ(resultPage);
//   }
//
//   @GetMapping({"/info/{userId}"})
//   @RequiresAuthentication
//   @ApiOperation("分页获取商家操作员信息")
//   public MgrUserInfoVO getMgrUserInfo(@PathVariable("userId") Long userId) {
//      return this.mgrUserService.getMgrUserInfo(userId);
//   }
//
//   @PutMapping({"/edit"})
//   @RequiresAuthentication
//   @RequiresPermissions(
//      value = {"user:mgruser:edit"},
//      logical = Logical.OR
//   )
//   @ApiOperation("修改商家操作员信息")
//   public LeResponse<Void> editMgrUser(@RequestBody LeRequest<MgrUserEditDTO> leRequest) {
//      MgrUserEditDTO userEditDTO = (MgrUserEditDTO)leRequest.getContent();
//      this.mgrUserService.editMgrUser(userEditDTO);
//      return LeResponse.succ();
//   }
//
//   @DeleteMapping({"/remove/{userId}"})
//   @RequiresGuest
//   @RequiresPermissions(
//      value = {"user:mgruser:remove"},
//      logical = Logical.OR
//   )
//   @ApiOperation("删除商家操作员信息")
//   public LeResponse<Void> removeByUserId(@PathVariable Long userId) {
//      this.mgrUserService.removeByUserId(userId);
//      return LeResponse.succ();
//   }
//
//   @PostMapping({"/auth-temp-ops-user"})
//   @RequiresAuthentication
//   @SysLog("授权临时调试账号")
//   public MgrUserOpsPO authTempOpsUser() {
//      return this.mgrUserService.authTempOpsUser();
//   }
//
//   @GetMapping({"/all/delivery/list"})
//   @RequiresAuthentication
//   public LeResponse<List<MgrRoleUserVO>> getAllDeliveryUserId() {
//      List<MgrRoleUserVO> userList = this.mgrUserService.getAllDeliveryUser();
//      return LeResponse.succ(userList);
//   }
//
//   @PutMapping({"/change/password"})
//   @RequiresAuthentication
//   public LeResponse<Void> changeMgrUserPassword(@RequestBody @Valid LeRequest<MgrUserChangePasswordDTO> leRequest) {
//      MgrUserChangePasswordDTO content = (MgrUserChangePasswordDTO)leRequest.getContent();
//      this.mgrUserService.changeMgrUserPassword(content);
//      return LeResponse.succ();
//   }
//
//   @PostMapping({"/change/password/by/old"})
//   @RequiresAuthentication
//   @SysLog("根据旧密码修改密码")
//   public LeResponse<Void> changePasswordByOld(@RequestBody @Valid LeRequest<MgrUserChangePasswordByOldDTO> leRequest) {
//      MgrUserChangePasswordByOldDTO content = (MgrUserChangePasswordByOldDTO)leRequest.getContent();
//      this.mgrUserService.changePasswordByOld(content);
//      return LeResponse.succ();
//   }
//
//   @SysLog("获取登录用户的信息")
//   @PostMapping({"/detail/info"})
//   @RequiresAuthentication
//   @ApiOperation("获取登录用户的信息")
//   public LeResponse<MgrUserDetailVO> getUserDetailInfo() {
//      MgrUserDetailVO result = this.mgrUserService.getUserDetailInfo();
//      return LeResponse.succ(result);
//   }
//
//   @PostMapping({"/list/exclude/supplier"})
//   @RequiresGuest
//   @ApiOperation("获取领料人")
//   public List<MgrRoleUserVO> getUserExcludeSupplier() {
//      return this.mgrUserService.getUserExcludeSupplier();
//   }
//
//   @GetMapping({"/all/keeper/list"})
//   @RequiresGuest
//   public LeResponse<List<MgrRoleUserVO>> getAllKeeperUserId() {
//      List<MgrRoleUserVO> userList = this.mgrUserService.getAllKeeperUserId();
//      return LeResponse.succ(userList);
//   }
//
//   @PostMapping({"/all/buyer/list"})
//   @RequiresGuest
//   public LeResponse<List<MgrRoleUserVO>> getAllBuyerUserId() {
//      List<MgrRoleUserVO> userList = this.mgrUserService.getAllBuyerUserId();
//      return LeResponse.succ(userList);
//   }
//
//   @PostMapping({"/relieve/lock/{username}"})
//   @RequiresGuest
//   public LeResponse<Void> getAllBuyerUserId(@PathVariable String username) {
//      this.stringRedisTemplate.delete("user-lock-" + username);
//      return LeResponse.succ();
//   }

   @PostMapping({"/list/by/role"})
   @ApiOperation("获取指定角色用户列表")
   public AjaxResult getAllUserByRoleCode(@RequestBody MgrRoleUserListDTO content) {
      List<MgrRoleUserVO> resultList = this.mgrUserService.getAllUserByRoleCode(content);
      return AjaxResult.success(resultList);
   }
//
//   @PostMapping({"/update/default/role"})
//   @RequiresAuthentication
//   @ApiOperation("修改默认角色")
//   public void updateDefaultRole(@RequestBody LeRequest<String> leRequest) {
//      String roleCode = (String)leRequest.getContent();
//      this.mgrUserService.updateDefaultRole(roleCode);
//   }
//
//   @PostMapping({"/change/role"})
//   @RequiresAuthentication
//   @ApiOperation("选择角色")
//   public void changeRole(@RequestBody LeRequest<String> leRequest) {
//      String roleCode = (String)leRequest.getContent();
//      this.mgrUserService.changeRole(roleCode);
//   }
}
