Przeglądaj źródła

feat(permission): 添加管理员权限校验及相关接口的权限控制

- AdminDictProvinceRegionController新增管理员权限校验,保护省份管理接口
- AdminParamController新增管理员权限校验,保护参数配置相关接口
- AdminSysUserController新增管理员权限校验,限制系统管理员账号操作权限
- AdminUserGroupController新增管理员权限校验,保护用户分组管理接口
- AdminUserRoleController新增管理员权限校验,保护用户角色管理接口
- CurrentSysUserController新增当前用户密码重置接口
- CustomerDataPrivateController新增去消预约跟进接口
- SysCustomerDataPermissionService新增adminPermission方法,实现管理员身份校验
- SysCustomerFollowService新增cancelOrder方法,实现预约取消功能及权限校验
- SysCustomerDataFollowService新增审核数量查询,实现非管理员角色的审核待办统计
- 注释并禁用AdminSysLogController,屏蔽系统日志管理接口
zhangxf 1 miesiąc temu
rodzic
commit
7d2946fb5e

+ 6 - 0
src/main/java/com/jtzx/crm/module/api/web/sys/AdminDictProvinceRegionController.java

@@ -7,6 +7,7 @@ import com.jtzx.crm.module.api.util.CrmAdminStpUtil;
 import com.jtzx.crm.module.sys.model.request.DictProvinceRegionDTO;
 import com.jtzx.crm.module.sys.model.response.DictProvinceRegionBO;
 import com.jtzx.crm.module.sys.service.DictProvinceRegionService;
+import com.jtzx.crm.module.sys.service.SysCustomerDataPermissionService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -30,6 +31,8 @@ public class AdminDictProvinceRegionController {
 
     private final DictProvinceRegionService dictProvinceRegionService;
 
+    private final SysCustomerDataPermissionService sysCustomerDataPermissionService;
+
 
     @Operation(summary = "已使用的省份列表", description = "开通的省份列表数据")
     @GetMapping("/region/listUsed")
@@ -46,6 +49,7 @@ public class AdminDictProvinceRegionController {
     @Operation(summary = "省份新增和修改")
     @PostMapping("/region/modify")
     public ApiResult<Void> insert(@RequestBody DictProvinceRegionDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         dictProvinceRegionService.openProvinceStatus(dto);
         return ApiResult.success();
     }
@@ -53,6 +57,7 @@ public class AdminDictProvinceRegionController {
     @Operation(summary = "省份排序")
     @PostMapping("/region/sort")
     public ApiResult<Void> sort(@RequestBody List<DictProvinceRegionDTO> dtoList) {
+        sysCustomerDataPermissionService.adminPermission();
         dictProvinceRegionService.regionSort(dtoList);
         return ApiResult.success();
     }
@@ -61,6 +66,7 @@ public class AdminDictProvinceRegionController {
     @Operation(summary = "省份删除")
     @GetMapping("/region/delete/{id}")
     public ApiResult<Void> delete(@PathVariable Long id) {
+        sysCustomerDataPermissionService.adminPermission();
         dictProvinceRegionService.DeleteProvinceStatus(id);
         return ApiResult.success();
     }

+ 10 - 0
src/main/java/com/jtzx/crm/module/api/web/sys/AdminParamController.java

@@ -11,6 +11,7 @@ import com.jtzx.crm.module.sys.model.request.AdminSysParamBaseDataInsertOrUpdate
 import com.jtzx.crm.module.sys.model.request.AdminSysParamInsertOrUpdateDTO;
 import com.jtzx.crm.module.sys.model.response.SysParamBO;
 import com.jtzx.crm.module.sys.model.response.SysParamBaseDataBO;
+import com.jtzx.crm.module.sys.service.SysCustomerDataPermissionService;
 import com.jtzx.crm.module.sys.service.SysParamBaseDataService;
 import com.jtzx.crm.module.sys.service.SysParamService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -34,9 +35,12 @@ public class AdminParamController {
 
     private final SysParamService sysParamService;
 
+    private final SysCustomerDataPermissionService sysCustomerDataPermissionService;
+
     @Operation(summary = "查询参数配置数据")
     @GetMapping("/queryParams")
     public ApiResult<SysParamBO> queryParams() {
+        sysCustomerDataPermissionService.adminPermission();
         SysParamBO sysParamBO = sysParamService.queryParams();
         return ApiResult.data(sysParamBO);
     }
@@ -44,6 +48,7 @@ public class AdminParamController {
     @Operation(summary = "修改参数配置", description = "公海设置的三个框")
     @PostMapping(value = "/updateParams")
     public ApiResult<Void> updateParams(@RequestBody AdminSysParamInsertOrUpdateDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysParamService.adminUpdate(dto);
         return ApiResult.success();
     }
@@ -52,6 +57,7 @@ public class AdminParamController {
     @Operation(summary = "学段,产品,职务,跟进状态列表", description = "type类型:0-学段,1-产品,2-职务,3-跟进")
     @GetMapping("/listParams/{type}")
     public ApiResult<List<SysParamBaseDataBO>> queryStage(@PathVariable Integer type) {
+        sysCustomerDataPermissionService.adminPermission();
         return ApiResult.data(sysParamBaseDataService.queryList(type));
     }
 
@@ -59,6 +65,7 @@ public class AdminParamController {
     @Operation(summary = "新增学段,产品,职务,跟进状态数据")
     @PostMapping(value = "/addParams")
     public ApiResult<Void> addParams(@RequestBody @Valid AdminSysParamBaseDataInsertOrUpdateDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysParamBaseDataService.adminInsert(dto);
         return ApiResult.success();
     }
@@ -66,6 +73,7 @@ public class AdminParamController {
     @Operation(summary = "修改学段,产品,职务,跟进状态数据")
     @PostMapping(value = "/modifyParams")
     public ApiResult<Void> modifyParams(@RequestBody @Valid AdminSysParamBaseDataInsertOrUpdateDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysParamBaseDataService.update(dto);
         return ApiResult.success();
     }
@@ -74,6 +82,7 @@ public class AdminParamController {
     @Operation(summary = "学段,产品,职务,跟进状态排序")
     @PostMapping(value = "/paramSort")
     public ApiResult<Void> paramSort(@RequestBody @Valid List<AdminSysParamBaseDataInsertOrUpdateDTO> dtoList) {
+        sysCustomerDataPermissionService.adminPermission();
         if (CollUtil.isEmpty(dtoList)) {
             throw new BusinessException(400, "参数不能为空");
         }
@@ -85,6 +94,7 @@ public class AdminParamController {
     @Operation(summary = "删除学段,产品,职务,跟进状态")
     @GetMapping("/deleteParams/{id}")
     public ApiResult<Void> deleteParams(@PathVariable Long id) {
+        sysCustomerDataPermissionService.adminPermission();
         sysParamBaseDataService.delete(id);
         return ApiResult.success();
     }

+ 51 - 51
src/main/java/com/jtzx/crm/module/api/web/sys/AdminSysLogController.java

@@ -1,51 +1,51 @@
-package com.jtzx.crm.module.api.web.sys;
-
-import cc.uncarbon.framework.core.constant.HelioConstant;
-import cc.uncarbon.framework.core.page.PageParam;
-import cc.uncarbon.framework.core.page.PageResult;
-import cc.uncarbon.framework.web.model.response.ApiResult;
-import com.jtzx.crm.module.api.constant.ApiConstant;
-import com.jtzx.crm.module.api.util.CrmAdminStpUtil;
-import com.jtzx.crm.module.sys.model.request.AdminListSysLogDTO;
-import com.jtzx.crm.module.sys.model.response.SysLogBO;
-import com.jtzx.crm.module.sys.service.SysLogService;
-import cn.dev33.satoken.annotation.SaCheckLogin;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-@SaCheckLogin(type = CrmAdminStpUtil.TYPE)
-@Tag(name = "系统日志管理接口")
-@RequestMapping(value = ApiConstant.HTTP_API_URL_PREFIX + "/api/v1")
-@RequiredArgsConstructor
-@RestController
-@Slf4j
-public class AdminSysLogController {
-
-    private static final String PERMISSION_PREFIX = "SysLog:";
-
-    private final SysLogService sysLogService;
-
-
-    @SaCheckPermission(type = CrmAdminStpUtil.TYPE, value = PERMISSION_PREFIX + HelioConstant.Permission.RETRIEVE)
-    @Operation(summary = "分页列表")
-    @GetMapping(value = "/sys/logs")
-    public ApiResult<PageResult<SysLogBO>> list(PageParam pageParam, AdminListSysLogDTO dto) {
-        return ApiResult.data(sysLogService.adminList(pageParam, dto));
-    }
-
-    @SaCheckPermission(type = CrmAdminStpUtil.TYPE, value = PERMISSION_PREFIX + HelioConstant.Permission.RETRIEVE)
-    @Operation(summary = "详情")
-    @GetMapping(value = "/sys/logs/{id}")
-    public ApiResult<SysLogBO> getById(@PathVariable Long id) {
-        return ApiResult.data(sysLogService.getOneById(id, true));
-    }
-
-}
+//package com.jtzx.crm.module.api.web.sys;
+//
+//import cc.uncarbon.framework.core.constant.HelioConstant;
+//import cc.uncarbon.framework.core.page.PageParam;
+//import cc.uncarbon.framework.core.page.PageResult;
+//import cc.uncarbon.framework.web.model.response.ApiResult;
+//import com.jtzx.crm.module.api.constant.ApiConstant;
+//import com.jtzx.crm.module.api.util.CrmAdminStpUtil;
+//import com.jtzx.crm.module.sys.model.request.AdminListSysLogDTO;
+//import com.jtzx.crm.module.sys.model.response.SysLogBO;
+//import com.jtzx.crm.module.sys.service.SysLogService;
+//import cn.dev33.satoken.annotation.SaCheckLogin;
+//import cn.dev33.satoken.annotation.SaCheckPermission;
+//import io.swagger.v3.oas.annotations.Operation;
+//import io.swagger.v3.oas.annotations.tags.Tag;
+//import lombok.RequiredArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.bind.annotation.PathVariable;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//
+//@SaCheckLogin(type = CrmAdminStpUtil.TYPE)
+//@Tag(name = "系统日志管理接口")
+//@RequestMapping(value = ApiConstant.HTTP_API_URL_PREFIX + "/api/v1")
+//@RequiredArgsConstructor
+//@RestController
+//@Slf4j
+//public class AdminSysLogController {
+//
+//    private static final String PERMISSION_PREFIX = "SysLog:";
+//
+//    private final SysLogService sysLogService;
+//
+//
+//    @SaCheckPermission(type = CrmAdminStpUtil.TYPE, value = PERMISSION_PREFIX + HelioConstant.Permission.RETRIEVE)
+//    @Operation(summary = "分页列表")
+//    @GetMapping(value = "/sys/logs")
+//    public ApiResult<PageResult<SysLogBO>> list(PageParam pageParam, AdminListSysLogDTO dto) {
+//        return ApiResult.data(sysLogService.adminList(pageParam, dto));
+//    }
+//
+//    @SaCheckPermission(type = CrmAdminStpUtil.TYPE, value = PERMISSION_PREFIX + HelioConstant.Permission.RETRIEVE)
+//    @Operation(summary = "详情")
+//    @GetMapping(value = "/sys/logs/{id}")
+//    public ApiResult<SysLogBO> getById(@PathVariable Long id) {
+//        return ApiResult.data(sysLogService.getOneById(id, true));
+//    }
+//
+//}

+ 14 - 11
src/main/java/com/jtzx/crm/module/api/web/sys/AdminSysUserController.java

@@ -12,6 +12,7 @@ import com.jtzx.crm.module.sys.model.request.AdminListSysUserDTO;
 import com.jtzx.crm.module.sys.model.request.InsertOrUpdateSysUserDTO;
 import com.jtzx.crm.module.sys.model.request.UpdateSysUserPasswordDTO;
 import com.jtzx.crm.module.sys.model.response.SysUserBO;
+import com.jtzx.crm.module.sys.service.SysCustomerDataPermissionService;
 import com.jtzx.crm.module.sys.service.SysUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -32,10 +33,13 @@ public class AdminSysUserController {
 
     private final SysUserService sysUserService;
 
+    private final SysCustomerDataPermissionService sysCustomerDataPermissionService;
+
 
     @Operation(summary = "分页列表")
     @PostMapping(value = "/sys/users/userLists")
     public ApiResult<PageResult<SysUserBO>> list(@RequestBody AdminListSysUserDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         return ApiResult.data(sysUserService.adminList(dto));
     }
 
@@ -43,6 +47,7 @@ public class AdminSysUserController {
     @Operation(summary = "新增")
     @PostMapping(value = "/sys/users/add")
     public ApiResult<Void> insert(@RequestBody @Valid InsertOrUpdateSysUserDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysUserService.adminInsert(dto);
         return ApiResult.success();
     }
@@ -50,9 +55,7 @@ public class AdminSysUserController {
     @Operation(summary = "编辑")
     @PostMapping(value = "/sys/users/update")
     public ApiResult<Void> update(@RequestBody @Valid InsertOrUpdateSysUserDTO dto) {
-        if (dto.getId().equals(1L) && UserContextHolder.getUserId() != 1) {
-            throw new BusinessException(400, "无权修改系统默认管理员账号信息");
-        }
+        sysCustomerDataPermissionService.adminPermission();
         sysUserService.adminUpdate(dto);
         return ApiResult.success();
     }
@@ -60,12 +63,10 @@ public class AdminSysUserController {
     @Operation(summary = "删除")
     @GetMapping(value = "/sys/users/delete/{userId}")
     public ApiResult<Void> delete(@PathVariable Long userId) {
+        sysCustomerDataPermissionService.adminPermission();
         if (userId.equals(1L)) {
             throw new BusinessException(400, "无权删除默认管理员账号");
         }
-        if(userId.equals(UserContextHolder.getUserId())){
-            throw new BusinessException(400, "不能操作自己账号");
-        }
         sysUserService.adminDelete(Lists.newArrayList(userId));
         // 连带踢出登录
         CrmAdminStpUtil.kickout(userId);
@@ -75,20 +76,20 @@ public class AdminSysUserController {
     @Operation(summary = "重置某用户密码")
     @PostMapping(value = "/sys/users/updatePwd")
     public ApiResult<Void> resetPassword(@RequestBody @Valid UpdateSysUserPasswordDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         if (dto.getUserId().equals(1L) && UserContextHolder.getUserId() != 1) {
             throw new BusinessException(400, "无权修改系统默认管理员账号密码");
         }
         sysUserService.UpdateUserPassword(dto);
         // 踢出原登录
-        if (dto.getUserId() != 1) {
-            CrmAdminStpUtil.kickout(dto.getUserId());
-        }
+        CrmAdminStpUtil.kickout(dto.getUserId());
         return ApiResult.success();
     }
 
     @Operation(summary = "启用,禁用用户")
     @GetMapping(value = "/sys/users/status/{userId}")
     public ApiResult<Integer> updateUserStatus(@PathVariable Long userId) {
+        sysCustomerDataPermissionService.adminPermission();
         if (userId.equals(1L)) {
             throw new BusinessException(400, "无权修改系统默认管理员账号状态");
         }
@@ -101,6 +102,7 @@ public class AdminSysUserController {
     @Operation(summary = "启用,关闭,公海,历史跟进状态", description = "公海跟进固定值(publicFollow),历史跟进固定值(historyFollow)")
     @GetMapping(value = "/sys/users/follow/{userId}/{followType}")
     public ApiResult<Integer> updateUserFollow(@PathVariable Long userId, @PathVariable String followType) {
+        sysCustomerDataPermissionService.adminPermission();
         if (userId.equals(1L) && UserContextHolder.getUserId() != 1) {
             throw new BusinessException(400, "无权修改系统默认管理员账号状态");
         }
@@ -111,10 +113,11 @@ public class AdminSysUserController {
     @Operation(summary = "踢某用户下线")
     @PostMapping(value = "/sys/users/{userId}:kick-out")
     public ApiResult<Void> kickOut(@PathVariable Long userId) {
-        if(userId.equals(1L)){
+        sysCustomerDataPermissionService.adminPermission();
+        if (userId.equals(1L)) {
             throw new BusinessException(400, "无权下线系统默认管理员");
         }
-        if(userId.equals(UserContextHolder.getUserId())){
+        if (userId.equals(UserContextHolder.getUserId())) {
             throw new BusinessException(400, "不能操作自己账号");
         }
         CrmAdminStpUtil.kickout(userId);

+ 13 - 0
src/main/java/com/jtzx/crm/module/api/web/sys/AdminUserGroupController.java

@@ -14,6 +14,7 @@ import com.jtzx.crm.module.sys.model.response.GroupUserProvinceBO;
 import com.jtzx.crm.module.sys.model.response.SysGroupBO;
 import com.jtzx.crm.module.sys.model.response.SysUserGroupRelationPageListBO;
 import com.jtzx.crm.module.sys.model.response.SysUserListBO;
+import com.jtzx.crm.module.sys.service.SysCustomerDataPermissionService;
 import com.jtzx.crm.module.sys.service.SysGroupService;
 import com.jtzx.crm.module.sys.service.SysUserGroupRelationService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -37,9 +38,12 @@ public class AdminUserGroupController {
 
     private final SysGroupService sysGroupService;
 
+    private final SysCustomerDataPermissionService sysCustomerDataPermissionService;
+
     @Operation(summary = "左侧所有用户列表查询接口")
     @GetMapping(value = "/group/users/list")
     public ApiResult<List<SysUserListBO>> queryAllSysUserList(@RequestParam(value = "username", required = false) String username) {
+        sysCustomerDataPermissionService.adminPermission();
         List<SysUserListBO> sysUserListBOS = sysUserGroupRelationService.queryAllSysUserList(username);
         return ApiResult.data(sysUserListBOS);
     }
@@ -48,6 +52,7 @@ public class AdminUserGroupController {
     @Operation(summary = "表格查询接口")
     @GetMapping(value = "/group/tableData")
     public ApiResult<List<GroupUserProvinceBO>> queryTableData() {
+        sysCustomerDataPermissionService.adminPermission();
         List<GroupUserProvinceBO> tableData = sysUserGroupRelationService.queryTableData();
         return ApiResult.data(tableData);
     }
@@ -55,6 +60,7 @@ public class AdminUserGroupController {
     @Operation(summary = "设置分组用户数据接口")
     @PostMapping(value = "/group/userAdd")
     public ApiResult<Void> userAdd(@RequestBody AdminSysUserGroupRelationDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysUserGroupRelationService.adminInsert(dto);
         return ApiResult.success();
     }
@@ -62,6 +68,7 @@ public class AdminUserGroupController {
     @Operation(summary = "删除分组用户数据接口")
     @PostMapping(value = "/group/userDel/{id}")
     public ApiResult<Void> userDel(@PathVariable Long id) {
+        sysCustomerDataPermissionService.adminPermission();
         sysUserGroupRelationService.adminDelete(id);
         return ApiResult.success();
     }
@@ -72,6 +79,7 @@ public class AdminUserGroupController {
     @Operation(summary = "列表分页查询接口")
     @GetMapping(value = "/group/pageListData")
     public ApiResult<PageResult<SysUserGroupRelationPageListBO>> queryListByPage(AdminSysUserGroupRelationDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         PageResult<SysUserGroupRelationPageListBO> tableData = sysUserGroupRelationService.queryListByPage(dto);
         return ApiResult.data(tableData);
     }
@@ -80,6 +88,7 @@ public class AdminUserGroupController {
     @Operation(summary = "分组列表查询接口")
     @GetMapping(value = "/group/manager/groupList")
     public ApiResult<List<SysGroupBO>> queryGroupList() {
+        sysCustomerDataPermissionService.adminPermission();
         List<SysGroupBO> groupList = sysGroupService.queryGroupList();
         return ApiResult.data(groupList);
     }
@@ -88,6 +97,7 @@ public class AdminUserGroupController {
     @Operation(summary = "新增分组数据接口")
     @PostMapping(value = "/group/manager/groupAdd")
     public ApiResult<Void> groupAdd(@RequestBody AdminSysGroupInsertOrUpdateDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysGroupService.adminInsert(dto);
         return ApiResult.success();
     }
@@ -95,6 +105,7 @@ public class AdminUserGroupController {
     @Operation(summary = "修改分组数据接口")
     @PostMapping(value = "/group/manager/groupUpdate")
     public ApiResult<Void> groupUpdate(@RequestBody AdminSysGroupInsertOrUpdateDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysGroupService.adminUpdate(dto);
         return ApiResult.success();
     }
@@ -103,6 +114,7 @@ public class AdminUserGroupController {
     @Operation(summary = "删除分组数据接口")
     @GetMapping(value = "/group/manager/groupDel/{id}")
     public ApiResult<Void> groupDel(@PathVariable Long id) {
+        sysCustomerDataPermissionService.adminPermission();
         sysGroupService.adminDelete(id);
         return ApiResult.success();
     }
@@ -110,6 +122,7 @@ public class AdminUserGroupController {
     @Operation(summary = "分组排序数据接口")
     @PostMapping(value = "/group/manager/groupSort")
     public ApiResult<Void> groupSort(@RequestBody List<AdminSysGroupInsertOrUpdateDTO> dtoList) {
+        sysCustomerDataPermissionService.adminPermission();
         if(CollUtil.isEmpty(dtoList)){
             throw new BusinessException(400, "参数不能为空");
         }

+ 10 - 0
src/main/java/com/jtzx/crm/module/api/web/sys/AdminUserRoleController.java

@@ -9,6 +9,7 @@ import com.jtzx.crm.module.api.util.CrmAdminStpUtil;
 import com.jtzx.crm.module.sys.model.request.UserRoleRelationDTO;
 import com.jtzx.crm.module.sys.model.request.UserRoleRelationInsertDTO;
 import com.jtzx.crm.module.sys.model.response.*;
+import com.jtzx.crm.module.sys.service.SysCustomerDataPermissionService;
 import com.jtzx.crm.module.sys.service.SysGroupService;
 import com.jtzx.crm.module.sys.service.SysUserGroupRelationService;
 import com.jtzx.crm.module.sys.service.SysUserRoleRelationService;
@@ -35,9 +36,12 @@ public class AdminUserRoleController {
 
     private final SysUserRoleRelationService sysUserRoleRelationService;
 
+    private final SysCustomerDataPermissionService sysCustomerDataPermissionService;
+
     @Operation(summary = "左侧所有用户列表查询接口")
     @GetMapping(value = "/role/users/list")
     public ApiResult<List<SysUserListBO>> queryAllSysUserList(@RequestParam(value = "username", required = false) String username) {
+        sysCustomerDataPermissionService.adminPermission();
         List<SysUserListBO> sysUserListBOS = sysUserGroupRelationService.queryAllSysUserList(username);
         return ApiResult.data(sysUserListBOS);
     }
@@ -45,6 +49,7 @@ public class AdminUserRoleController {
     @Operation(summary = "权限列表查询角色下拉接口")
     @GetMapping(value = "/role/List")
     public ApiResult<List<SysRoleListBO>> queryRoleData() {
+        sysCustomerDataPermissionService.adminPermission();
         List<SysRoleListBO> groupList = sysUserRoleRelationService.queryRoleData();
         return ApiResult.data(groupList);
     }
@@ -52,6 +57,7 @@ public class AdminUserRoleController {
     @Operation(summary = "权限列表查询分组下拉接口")
     @GetMapping(value = "/role/groupList")
     public ApiResult<List<SysGroupBO>> queryGroupList() {
+        sysCustomerDataPermissionService.adminPermission();
         List<SysGroupBO> groupList = sysGroupService.queryGroupList();
         return ApiResult.data(groupList);
     }
@@ -60,6 +66,7 @@ public class AdminUserRoleController {
     @Operation(summary = "表格查询接口")
     @GetMapping(value = "/role/tableData")
     public ApiResult<List<UserRoleRelationBO>> queryTableData() {
+        sysCustomerDataPermissionService.adminPermission();
         List<UserRoleRelationBO> tableData = sysUserRoleRelationService.queryTableData();
         return ApiResult.data(tableData);
     }
@@ -67,6 +74,7 @@ public class AdminUserRoleController {
     @Operation(summary = "设置角色用户数据接口")
     @PostMapping(value = "/role/userAdd")
     public ApiResult<Void> userAdd(@RequestBody UserRoleRelationInsertDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         sysUserRoleRelationService.adminInsert(dto);
         return ApiResult.success();
     }
@@ -74,6 +82,7 @@ public class AdminUserRoleController {
     @Operation(summary = "删除角色用户数据接口")
     @PostMapping(value = "/role/userDel/{id}")
     public ApiResult<Void> userDel(@PathVariable Long id) {
+        sysCustomerDataPermissionService.adminPermission();
         sysUserRoleRelationService.delete(id);
         return ApiResult.success();
     }
@@ -82,6 +91,7 @@ public class AdminUserRoleController {
     @Operation(summary = "列表分页查询接口")
     @GetMapping(value = "/role/pageListData")
     public ApiResult<PageResult<UserRoleRelationPageListBO>> queryListByPage(@RequestBody UserRoleRelationDTO dto) {
+        sysCustomerDataPermissionService.adminPermission();
         PageResult<UserRoleRelationPageListBO> tableData = sysUserRoleRelationService.queryTableListByPage(dto);
         return ApiResult.data(tableData);
     }

+ 14 - 3
src/main/java/com/jtzx/crm/module/api/web/sys/CurrentSysUserController.java

@@ -4,15 +4,15 @@ import cc.uncarbon.framework.web.model.response.ApiResult;
 import cn.dev33.satoken.annotation.SaCheckLogin;
 import com.jtzx.crm.module.api.constant.ApiConstant;
 import com.jtzx.crm.module.api.util.CrmAdminStpUtil;
+import com.jtzx.crm.module.sys.model.request.UpdateSysUserPasswordDTO;
 import com.jtzx.crm.module.sys.model.response.VbenAdminUserInfoVO;
 import com.jtzx.crm.module.sys.service.SysUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 
 @SaCheckLogin(type = CrmAdminStpUtil.TYPE)
@@ -31,4 +31,15 @@ public class CurrentSysUserController {
     public ApiResult<VbenAdminUserInfoVO> getMyInfo() {
         return ApiResult.data(sysUserService.getCurrentUserInfo());
     }
+
+    @Operation(summary = "重置当前用户密码")
+    @PostMapping(value = "/sys/users/me/updatePwd")
+    public ApiResult<Void> resetPassword(@RequestBody @Valid UpdateSysUserPasswordDTO dto) {
+        dto.setUserId(CrmAdminStpUtil.getLoginIdAsLong());
+        sysUserService.UpdateUserPassword(dto);
+        // 踢出原登录
+        CrmAdminStpUtil.kickout(dto.getUserId());
+
+        return ApiResult.success();
+    }
 }

+ 6 - 0
src/main/java/com/jtzx/crm/module/api/web/sys/CustomerDataPrivateController.java

@@ -137,4 +137,10 @@ public class CustomerDataPrivateController {
         return ApiResult.data(result);
     }
 
+    @Operation(summary = "去消预约跟进接口")
+    @GetMapping(value = "/customer/data/cancelOrder/{id}", produces = "application/json;charset=UTF-8")
+    public ApiResult<Void> cancelOrder(@PathVariable Long id) {
+        sysCustomerFollowService.cancelOrder(id);
+        return ApiResult.success();
+    }
 }

+ 2 - 1
src/main/java/com/jtzx/crm/module/sys/model/response/SysCustomerFollowSelectBO.java

@@ -43,5 +43,6 @@ public class SysCustomerFollowSelectBO implements Serializable {
     @Schema(description = "成员数据")
     private List<BindUserBO> memberData;
 
-
+    @Schema(description = "赢单审核数量")
+    private Long auditCount;
 }

+ 22 - 3
src/main/java/com/jtzx/crm/module/sys/service/SysCustomerDataFollowService.java

@@ -10,9 +10,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
+import com.jtzx.crm.module.sys.entity.SysCustomerFollowAuditEntity;
 import com.jtzx.crm.module.sys.entity.SysCustomerFollowEntity;
 import com.jtzx.crm.module.sys.entity.SysGroupEntity;
 import com.jtzx.crm.module.sys.entity.SysParamBaseDataEntity;
+import com.jtzx.crm.module.sys.mapper.SysCustomerFollowAuditMapper;
 import com.jtzx.crm.module.sys.mapper.SysCustomerFollowMapper;
 import com.jtzx.crm.module.sys.mapper.SysGroupMapper;
 import com.jtzx.crm.module.sys.mapper.SysParamBaseDataMapper;
@@ -43,6 +45,7 @@ public class SysCustomerDataFollowService {
     private final SysGroupMapper sysGroupMapper;
 
     private final SysParamBaseDataMapper sysParamBaseDataMapper;
+    private final SysCustomerFollowAuditMapper sysCustomerFollowAuditMapper;
 
     private final SysCustomerUserCommonService sysCustomerUserCommonService;
 
@@ -75,6 +78,22 @@ public class SysCustomerDataFollowService {
             //人员
             resultData.setMemberData(sysCustomerSelectBO.getMemberData());
         }
+        if (!UserContextHolder.getUserContext().getRoles().contains("Admin")) {
+            //查询赢单审核数据
+            long count =
+                    sysCustomerFollowAuditMapper.selectCount(
+                            new QueryWrapper<SysCustomerFollowAuditEntity>()
+                                    .lambda()
+                                    .select(
+                                            SysCustomerFollowAuditEntity::getFollowId
+                                    )
+                                    .eq(SysCustomerFollowAuditEntity::getAuditUserId, UserContextHolder.getUserId())
+                                    .eq(SysCustomerFollowAuditEntity::getAuditStatus, 0)
+                                    // 排序
+                                    .orderByDesc(SysCustomerFollowAuditEntity::getCreatedAt)
+                    );
+            resultData.setAuditCount(count);
+        }
         return resultData;
     }
 
@@ -175,7 +194,7 @@ public class SysCustomerDataFollowService {
                 }
             }
         }
-        return sysCustomerOperLogService.adminList(dto, userIds,groupIds,true, true);
+        return sysCustomerOperLogService.adminList(dto, userIds, groupIds, true, true);
     }
 
 
@@ -231,7 +250,7 @@ public class SysCustomerDataFollowService {
                                     .build();
                             memberData.add(memberBO);
                         }
-                        if(userId!=null){
+                        if (userId != null) {
                             if (CollUtil.isEmpty(positionData) || positionData.stream().map(SelectBO::getId).noneMatch(entity.getPositionId()::equals)) {
                                 SelectBO positionBO = SelectBO.builder()
                                         .id(entity.getPositionId())
@@ -258,7 +277,7 @@ public class SysCustomerDataFollowService {
         resultData.setMemberData(memberData);
         resultData.setDateData(Lists.newArrayList());
         resultData.setPositionData(Lists.newArrayList());
-        if(userId!=null){
+        if (userId != null) {
             resultData.setPositionData(positionData);
             resultData.setDateData(DateSelectUtil.getDateData());
         }

+ 6 - 0
src/main/java/com/jtzx/crm/module/sys/service/SysCustomerDataPermissionService.java

@@ -29,4 +29,10 @@ public class SysCustomerDataPermissionService {
         }
     }
 
+    public void adminPermission(){
+        if (!UserContextHolder.getUserContext().getRoles().contains("Admin")) {
+            throw new BusinessException(400, "无权操作");
+        }
+    }
+
 }

+ 18 - 0
src/main/java/com/jtzx/crm/module/sys/service/SysCustomerFollowService.java

@@ -90,6 +90,24 @@ public class SysCustomerFollowService {
         }
     }
 
+    /**
+     * 我的客户页面,预约待办列表去消预约操作
+     */
+    public void cancelOrder(Long id) {
+        permissionService.publicPrivateCustomerPermission();
+        SysCustomerFollowEntity sysCustomerFollowEntity = sysCustomerFollowMapper.selectById(id);
+        if (sysCustomerFollowEntity == null) {
+            throw new RuntimeException("预约数据不存在");
+        }
+        if (sysCustomerFollowEntity.getOrderStatus() != 0) {
+            throw new RuntimeException("预约不能取消");
+        }
+        if (!sysCustomerFollowEntity.getClaimUserId().equals(UserContextHolder.getUserId())) {
+            throw new RuntimeException("非本人预约不能取消");
+        }
+        sysCustomerFollowEntity.setOrderStatus(2);
+        sysCustomerFollowMapper.updateById(sysCustomerFollowEntity);
+    }
 
     /**
      * 处理跟进总览