Browse Source

bug修改

wangzhengliang 3 years ago
parent
commit
efe7eabee9

+ 17 - 1
src/main/java/com/chuanghai/ihotel/controller/HotelAdminController.java

@@ -8,6 +8,7 @@ import com.chuanghai.ihotel.common.utils.CommonResult;
 import com.chuanghai.ihotel.common.utils.PageParam;
 import com.chuanghai.ihotel.common.utils.PageUtils;
 import com.chuanghai.ihotel.controller.request.AdminLoginRequest;
+import com.chuanghai.ihotel.controller.request.AdminPasswordUpdateRequest;
 import com.chuanghai.ihotel.entity.HotelAdminEntity;
 import com.chuanghai.ihotel.service.HotelAdminService;
 import com.chuanghai.ihotel.vo.LoginUserVO;
@@ -93,7 +94,7 @@ public class HotelAdminController {
      * 修改管理员
      */
     @AdminLoginCheck
-    @ParamCheck
+    @ParamCheck(index = 2)
     @PutMapping("/update")
     public CommonResult<String> update(@RequestHeader("admin_token") String adminToken, @RequestBody HotelAdminEntity hotelStaff){
         hotelStaff.setPassword(null);
@@ -107,6 +108,21 @@ public class HotelAdminController {
     }
 
     /**
+     * 修改密码
+     * @param request
+     * @param adminToken
+     * @return
+     * @apiNote 超级管理员可以修改所有管理员的密码,普通管理员只能修改本人密码。超级管理员修改他人密码时必须要传adminId。
+     */
+    @AdminLoginCheck
+    @ParamCheck
+    @PutMapping("/updatePassword")
+    public CommonResult<String> updatePassword(@RequestBody AdminPasswordUpdateRequest request, @RequestHeader("admin_token") String adminToken) {
+        hotelAdminService.updatePassword(request);
+        return CommonResult.ok();
+    }
+
+    /**
      * 删除管理员
      */
     @AdminLoginCheck

+ 25 - 0
src/main/java/com/chuanghai/ihotel/controller/request/AdminPasswordUpdateRequest.java

@@ -0,0 +1,25 @@
+package com.chuanghai.ihotel.controller.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author: codingliang
+ * @Description: 管理员修改密码
+ * @Date: 2022-08-18 11:25
+ * @Version: V1.0
+ **/
+@Data
+public class AdminPasswordUpdateRequest {
+
+    /**
+     * 管理员id,超级管理员修改普通管理员密码时不能为空
+     */
+    private Long adminId;
+    /**
+     * 密码,密码使用公钥加密后传输
+     */
+    @NotBlank(message = "密码不能为空")
+    private String password;
+}

+ 13 - 0
src/main/java/com/chuanghai/ihotel/controller/request/OrderQueryRequest.java

@@ -1,6 +1,7 @@
 package com.chuanghai.ihotel.controller.request;
 
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
@@ -47,12 +48,24 @@ public class OrderQueryRequest {
     /**
      * 最早入住时间 最早可入住时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime enableStartTime;
     /**
      * 最晚离店时间 最晚要离店时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime enableEndTime;
     /**
+     * 支付时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime payTime;
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+    /**
      * 删除标识 1正常,0删除
      */
     private String deleteFlag;

+ 3 - 2
src/main/java/com/chuanghai/ihotel/entity/HotelAdminEntity.java

@@ -38,9 +38,10 @@ public class HotelAdminEntity implements Serializable {
 	@NotBlank(message = "员工姓名不能为空")
 	private String username;
 	/**
-	 * 职位
+	 * 管理员类别 1超级管理员、2普通管理员
 	 */
-	@NotBlank(message = "角色不能为空")
+	@NotBlank(message = "管理员类别不能为空")
+	@Pattern(regexp = "[1-2]", message = "管理员类别只能为1或2")
 	private String adminType;
 	/**
 	 * 密码 登录密码,新增时不能为空,使用RSA加密后传输

+ 7 - 0
src/main/java/com/chuanghai/ihotel/service/HotelAdminService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.chuanghai.ihotel.common.utils.PageUtils;
 import com.chuanghai.ihotel.common.utils.PageParam;
 import com.chuanghai.ihotel.controller.request.AdminLoginRequest;
+import com.chuanghai.ihotel.controller.request.AdminPasswordUpdateRequest;
 import com.chuanghai.ihotel.entity.HotelAdminEntity;
 import com.chuanghai.ihotel.vo.LoginUserVO;
 
@@ -26,5 +27,11 @@ public interface HotelAdminService extends IService<HotelAdminEntity> {
     LoginUserVO login(AdminLoginRequest request);
 
     void mySave(HotelAdminEntity staffEntity);
+
+    /**
+     * 修改密码
+     * @param request
+     */
+    void updatePassword(AdminPasswordUpdateRequest request);
 }
 

+ 51 - 10
src/main/java/com/chuanghai/ihotel/service/impl/HotelAdminServiceImpl.java

@@ -1,25 +1,26 @@
 package com.chuanghai.ihotel.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chuanghai.ihotel.aop.LoginCheckAspect;
 import com.chuanghai.ihotel.common.exception.BizCodeEnume;
 import com.chuanghai.ihotel.common.exception.RRException;
+import com.chuanghai.ihotel.common.utils.MyQuery;
+import com.chuanghai.ihotel.common.utils.PageParam;
+import com.chuanghai.ihotel.common.utils.PageUtils;
 import com.chuanghai.ihotel.controller.request.AdminLoginRequest;
+import com.chuanghai.ihotel.controller.request.AdminPasswordUpdateRequest;
+import com.chuanghai.ihotel.dao.HotelAdminDao;
 import com.chuanghai.ihotel.dto.LoginUserDTO;
+import com.chuanghai.ihotel.entity.HotelAdminEntity;
+import com.chuanghai.ihotel.service.HotelAdminService;
 import com.chuanghai.ihotel.util.JWTUtil;
 import com.chuanghai.ihotel.util.RSAUtils;
 import com.chuanghai.ihotel.vo.LoginUserVO;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.chuanghai.ihotel.common.utils.PageUtils;
-import com.chuanghai.ihotel.common.utils.MyQuery;
-import com.chuanghai.ihotel.common.utils.PageParam;
-
-import com.chuanghai.ihotel.dao.HotelAdminDao;
-import com.chuanghai.ihotel.entity.HotelAdminEntity;
-import com.chuanghai.ihotel.service.HotelAdminService;
 import org.springframework.util.StringUtils;
 
 
@@ -91,4 +92,44 @@ public class HotelAdminServiceImpl extends ServiceImpl<HotelAdminDao, HotelAdmin
         this.save(staffEntity);
     }
 
+    @Override
+    public void updatePassword(AdminPasswordUpdateRequest request) {
+        String password;
+        try {
+            // 密码解密
+            password = RSAUtils.decrypt(request.getPassword(), RSAUtils.getPrivateKey(privateKey));
+
+            // 密码加密存储
+            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+            password = passwordEncoder.encode(password);
+        } catch (Exception e) {
+            throw new RRException(BizCodeEnume.UNKNOW_EXCEPTION, "修改用户密码失败-密码解密错误");
+        }
+
+        LoginUserDTO loginUser = LoginCheckAspect.threadLocal.get();
+
+        HotelAdminEntity adminEntity = this.getById(loginUser.getAdminId());
+        if (adminEntity == null) {
+            throw new RRException(BizCodeEnume.PERMISSION_DENIED, "无效的用户");
+        }
+
+        if (request.getAdminId() != null) { // 修改他人密码
+            if (!"1".equals(adminEntity.getAdminType())) {
+                throw new RRException(BizCodeEnume.PERMISSION_DENIED, "非超级管理员不能修改他人密码");
+            }
+
+            HotelAdminEntity admin = this.getById(request.getAdminId());
+            if (admin == null) {
+                throw new RRException(BizCodeEnume.PARAMETER_ERROR, "用户不存在");
+            }
+
+            admin.setPassword(password);
+
+            this.updateById(admin);
+        } else { // 修改本人密码
+            adminEntity.setPassword(password);
+            this.updateById(adminEntity);
+        }
+    }
+
 }

+ 2 - 0
src/main/java/com/chuanghai/ihotel/service/impl/HotelOrderServiceImpl.java

@@ -127,6 +127,8 @@ public class HotelOrderServiceImpl extends ServiceImpl<HotelOrderDao, HotelOrder
 
         queryWrapper.ge(request.getEnableStartTime() != null, "enable_start_time", request.getEnableStartTime());
         queryWrapper.le(request.getEnableStartTime() != null, "enable_end_time", request.getEnableStartTime());
+        queryWrapper.eq(request.getPayTime() != null, "pay_time", request.getPayTime());
+        queryWrapper.eq(request.getCreateTime() != null, "create_time", request.getCreateTime());
 
         IPage<HotelOrderEntity> page = this.page(
                 new MyQuery<HotelOrderEntity>().getPage(pageParam),