Pārlūkot izejas kodu

0813 人员管理功能

Qing 8 mēneši atpakaļ
vecāks
revīzija
c7b74a49f0

+ 19 - 0
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/config/MybatisConfig.java

@@ -0,0 +1,19 @@
+package com.sf.admin.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
+        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
+        return interceptor;
+    }
+}

+ 13 - 3
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/controller/CcWorkOrderController.java

@@ -1,18 +1,28 @@
 package com.sf.admin.controller;
 
+import com.sf.admin.dto.CommonResult;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author baomidou
  * @since 2024-08-12
  */
-@Controller
-@RequestMapping("/ccWorkOrder")
+@RestController
 public class CcWorkOrderController {
 
+    // 待完成工单
+    @PostMapping("/worder/qryToDO")
+    public CommonResult qryToDo() {
+        return CommonResult.success(new ArrayList<>());
+    }
+
 }

+ 2 - 2
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/controller/StatisticsController.java

@@ -4,13 +4,13 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 // 提供折线图统计的模拟数据
-//@RestController
+@RestController
 public class StatisticsController {
 
     // http://127.0.0.1:8013/query/queryQueueDayDateQueueStatistics
     @PostMapping("/query/queryQueueDayDateQueueStatistics")
     public String queryQueueDayDateQueueStatistics() {
-        System.out.println("PostMapping queryQueueDayDateQueueStatistics");
+//        System.out.println("PostMapping queryQueueDayDateQueueStatistics");
         String result = """
                 {
                   "code": 200,

+ 11 - 6
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/controller/StsEchartsController.java

@@ -1,33 +1,38 @@
 package com.sf.admin.controller;
 
 import com.sf.admin.dto.CommonResult;
+import com.sf.admin.dto.req.StsEchartsReqDto;
 import com.sf.admin.entity.StsEcharts;
 import com.sf.admin.service.IStsEchartsService;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
 
+import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author baomidou
  * @since 2024-08-12
  */
-@RestController
+//@RestController
 @RequiredArgsConstructor
 public class StsEchartsController {
 
     private final IStsEchartsService stsEchartsService;
 
+    // 返回近一周、近一个月和近三个月的数据
     // http://127.0.0.1:8013/query/queryQueueDayDateQueueStatistics
     @PostMapping("/query/queryQueueDayDateQueueStatistics")
-    public CommonResult<List<StsEcharts>> queryQueueDayDateQueueStatistics(){
+    public CommonResult<List<StsEcharts>> queryQueueDayDateQueueStatistics(
+            @RequestBody StsEchartsReqDto reqDto) {
+        System.out.println(reqDto);
         List<StsEcharts> list = stsEchartsService.list();
         return CommonResult.success(list);
     }

+ 95 - 6
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/controller/UmsAdminController.java

@@ -1,6 +1,12 @@
 package com.sf.admin.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sf.admin.dto.CommonResult;
+import com.sf.admin.dto.page.CommonPage;
+import com.sf.admin.dto.req.AdminListReqDto;
 import com.sf.admin.dto.req.AdminLoginReqDto;
 import com.sf.admin.dto.resp.AdminInfoRespDto;
 import com.sf.admin.dto.resp.AdminLoginRespDto;
@@ -12,8 +18,12 @@ import com.sf.admin.entity.UmsRole;
 import com.sf.admin.service.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
+import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -35,23 +45,22 @@ public class UmsAdminController {
     private final IUmsAdminRoleRelationService adminRoleRelationService;
     private final IUmsRoleMenuRelationService roleMenuRelationService;
 
-    // http://localhost:8013/ums/admin/list
-//    @GetMapping("/ums/admin/list")
-//    public List<UmsAdmin> list(){
-//        return umsAdminService.list();
-//    }
-
+    // 登录
     @PostMapping("/admin/login")
     public CommonResult<AdminLoginRespDto> login(@RequestBody AdminLoginReqDto loginReqDto) {
         String logined = umsAdminService.login(loginReqDto);
         if (logined == null) {
             return CommonResult.failed("用户名或密码错误");
         }
+        if (logined.equals("disable")) {
+            return CommonResult.failed("用户被封禁,请联系管理员");
+        }
         AdminLoginRespDto adminLoginRespDto = AdminLoginRespDto.builder()
                 .token(logined).tokenHead("SFCC ").build();
         return CommonResult.success(adminLoginRespDto);
     }
 
+    // 查询用户信息
     @GetMapping("/admin/info")
     public CommonResult<AdminInfoRespDto> getAdminInfo(@RequestHeader("Authorization") String token) {
         if (token == null) {
@@ -102,4 +111,84 @@ public class UmsAdminController {
         return CommonResult.success(adminInfoRespDto);
     }
 
+    // 登出
+    @PostMapping("/admin/logout")
+    public CommonResult logout(@RequestHeader("Authorization") String token) {
+        // 可以清除token
+        System.out.println(token);
+        return CommonResult.success(null);
+    }
+
+    // 在方法接收参数时 如果不接收 不会报错 如果接受时参数类型不匹配 会报错
+    // 查询用户列表
+    // http://localhost:8099/admin-api/admin/list?pageNum=1&pageSize=10&name=&phone=&startCount=&endCount=&status=-1&deptId=0&startTime=&endTime=
+    // http://localhost:8013/admin/list
+    @GetMapping("/admin/list")
+    public CommonResult<CommonPage<UmsAdmin>> list(AdminListReqDto reqDto) {
+        System.out.println(reqDto);
+        IPage<UmsAdmin> page = new Page<>(reqDto.getPageNum(), reqDto.getPageSize());
+        LambdaQueryWrapper<UmsAdmin> queryWrapper = new LambdaQueryWrapper<>();
+        if (reqDto.getStartCount() != null && reqDto.getEndCount() != null) {
+            queryWrapper.gt(UmsAdmin::getCount, reqDto.getStartCount());
+            queryWrapper.lt(UmsAdmin::getCount, reqDto.getEndCount());
+        }
+        List<UmsAdmin> umsAdmins = umsAdminService.page(page, queryWrapper).getRecords();
+        CommonPage<UmsAdmin> commonPage = CommonPage.restPage(umsAdmins, page);
+        return CommonResult.success(commonPage);
+    }
+
+    // 更新用户信息
+    // http://localhost:8099/admin-api/admin/update/11
+    @PostMapping("/admin/update/{id}")
+    public CommonResult<Long> update(@PathVariable("id") Long id, @RequestBody UmsAdmin umsAdmin) {
+        boolean updated = umsAdminService.updateById(umsAdmin);
+        if (updated) {
+            return CommonResult.success(id);
+        }
+        return CommonResult.failed("更新失败");
+    }
+
+
+    // 封禁和激活用户
+    // http://localhost:8099/admin-api/admin/updateStatus/11?status=0
+    @PostMapping("/admin/updateStatus/{id}")
+    public CommonResult<Long> updateStatus(
+            @PathVariable("id") Long id, @RequestParam("status") Integer status) {
+        // update ums_admin set status = '0' where id = 11
+        LambdaUpdateWrapper<UmsAdmin> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(UmsAdmin::getId, id);
+        updateWrapper.set(UmsAdmin::getStatus, status);
+        boolean updated = umsAdminService.update(updateWrapper);
+        if (updated) {
+            return CommonResult.success(id);
+        }
+        return CommonResult.failed("更新状态失败");
+    }
+
+
+    // 添加用户
+    // http://localhost:8099/admin-api/admin/register
+    @PostMapping("/admin/register")
+    public CommonResult<UmsAdmin> register(@RequestBody UmsAdmin umsAdmin) {
+        LambdaQueryWrapper<UmsAdmin> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(UmsAdmin::getUsername, umsAdmin.getUsername());
+        boolean exists = umsAdminService.exists(queryWrapper);
+        if (exists) {
+            return CommonResult.failed("用户名已存在");
+        }
+
+        // 设置创建时间
+        LocalDate now = LocalDate.now();
+        umsAdmin.setCreateTime(now);
+        // 对密码进行加密
+        String password = umsAdmin.getPassword();
+        String pwd = DigestUtils.md5DigestAsHex(password.getBytes(StandardCharsets.UTF_8));
+        umsAdmin.setPassword(pwd);
+        boolean register = umsAdminService.save(umsAdmin);
+        if (register) {
+            return CommonResult.success(umsAdmin);
+        }
+        return CommonResult.failed("用户添加失败");
+    }
+
 }

+ 34 - 4
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/controller/UmsDeptController.java

@@ -1,18 +1,48 @@
 package com.sf.admin.controller;
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sf.admin.dto.CommonResult;
+import com.sf.admin.dto.page.CommonPage;
+import com.sf.admin.entity.UmsDept;
+import com.sf.admin.service.IUmsDeptService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.stereotype.Controller;
 
+import java.util.List;
+
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author baomidou
  * @since 2024-08-12
  */
-@Controller
-@RequestMapping("/umsDept")
+@RestController
+@RequiredArgsConstructor
 public class UmsDeptController {
 
+    private final IUmsDeptService deptService;
+
+    // http://localhost:8099/admin-api/dept/list?pageNum=1&pageSize=100&status=0
+    @PostMapping("/dept/list")
+    public CommonResult<CommonPage<UmsDept>> list(
+            @RequestParam("pageSize") Long pageSize, @RequestParam("pageNum") Long pageNum) {
+        // 构造分页的对象
+        // select * from ums_dept limit 0,10
+        // select * from ums_dept limit 10,10
+        IPage<UmsDept> pageParam = new Page<>(pageNum, pageSize);
+        // 一共有100条
+        // select count(*) from ums_dept
+        // 如果每页有10条 一共有多少页  100/10 = 10
+        IPage<UmsDept> pageResult = deptService.page(pageParam);
+        // 获取当前页要显示的数据
+        List<UmsDept> umsDepts = pageResult.getRecords();
+
+        // 使用通用的分页返回
+        CommonPage<UmsDept> commonPage = CommonPage.restPage(umsDepts, pageResult);
+        return CommonResult.success(commonPage);
+    }
 }

+ 18 - 2
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/controller/UmsRoleController.java

@@ -1,7 +1,15 @@
 package com.sf.admin.controller;
 
+import com.sf.admin.dto.CommonResult;
+import com.sf.admin.entity.UmsRole;
+import com.sf.admin.service.IUmsRoleService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * <p>
@@ -11,8 +19,16 @@ import org.springframework.stereotype.Controller;
  * @author baomidou
  * @since 2024-08-12
  */
-@Controller
-@RequestMapping("/umsRole")
+@RestController
+@RequiredArgsConstructor
 public class UmsRoleController {
 
+    private final IUmsRoleService roleService;
+
+    // http://localhost:8099/admin-api/role/listAll
+    @GetMapping("/role/listAll")
+    public CommonResult<List<UmsRole>> listAll(){
+        List<UmsRole> umsRoles = roleService.list();
+        return CommonResult.success(umsRoles);
+    }
 }

+ 18 - 6
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/dto/page/CommonPage.java

@@ -1,5 +1,6 @@
 package com.sf.admin.dto.page;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import lombok.AllArgsConstructor;
@@ -19,11 +20,11 @@ import java.util.List;
 @AllArgsConstructor
 public class CommonPage<T> {
     // 当前页数
-    private Integer pageNum;
+    private Long pageNum;
     // 每页显示的行数
-    private Integer pageSize;
+    private Long pageSize;
     // 一共有多少页
-    private Integer totalPage;
+    private Long totalPage;
     // 总行数
     private Long total;
     // 当前返回的数据
@@ -32,12 +33,23 @@ public class CommonPage<T> {
 
     public static <T> CommonPage<T> restPage(List<T> list) {
         CommonPage commonPage = CommonPage.builder()
-                .pageNum(1)
-                .pageSize(1)
-                .totalPage(1)
+                .pageNum(1L)
+                .pageSize(1L)
+                .totalPage(1L)
                 .total(1L)
                 .build();
         commonPage.setList(list);
         return commonPage;
     }
+
+    public static <T> CommonPage<T> restPage(List<T> list, IPage page) {
+        CommonPage commonPage = CommonPage.builder()
+                .pageNum(page.getCurrent())  // 当前页
+                .pageSize(page.getSize())  // 每页大小
+                .totalPage(page.getPages())  // 总页数
+                .total(page.getTotal())  // 数据的总个数
+                .build();
+        commonPage.setList(list);
+        return commonPage;
+    }
 }

+ 11 - 0
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/dto/page/PageReqDto.java

@@ -0,0 +1,11 @@
+package com.sf.admin.dto.page;
+
+import lombok.Data;
+
+@Data
+public class PageReqDto {
+
+    // pageNum=1&pageSize=10
+    private Long pageNum;
+    private Long pageSize;
+}

+ 24 - 0
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/dto/req/AdminListReqDto.java

@@ -0,0 +1,24 @@
+package com.sf.admin.dto.req;
+
+import com.sf.admin.dto.page.PageReqDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+@Data
+public class AdminListReqDto extends PageReqDto {
+
+    // name=&phone=&startCount=&endCount=&status=-1&deptId=0&startTime=&endTime=
+    private String name;
+    private String phone;
+    private Integer startCount;
+    private Integer endCount;
+    private Integer status;
+    private Long deptId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 21 - 0
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/dto/req/StsEchartsReqDto.java

@@ -0,0 +1,21 @@
+package com.sf.admin.dto.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Data
+public class StsEchartsReqDto {
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private Date startTime;
+    private LocalDateTime startTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+}

+ 5 - 0
consumer-service-demo/admin-demo/src/main/java/com/sf/admin/service/impl/UmsAdminServiceImpl.java

@@ -40,6 +40,11 @@ public class UmsAdminServiceImpl extends ServiceImpl<UmsAdminMapper, UmsAdmin> i
             // 密码不正确
             return null;
         }
+
+        if(umsAdmin.getStatus() == 0){
+            // 表示被封禁
+            return "disable";
+        }
         return "token_" + umsAdmin.getId();
     }
 }

+ 5 - 3
consumer-service-demo/admin-demo/src/main/resources/application.properties

@@ -1,9 +1,11 @@
-# ???????????
+# \u7AEF\u53E3\u53F7
 server.port=8013
 
 spring.application.name=admin-demo
 
-# ??????????
+# \u6570\u636E\u5E93\u914D\u7F6E
 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/sfcc_bak?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
 spring.datasource.username=root
-spring.datasource.password=root123456
+spring.datasource.password=root123456
+
+spring.mvc.format.date-time=yyyy-MM-dd HH:mm:ss

+ 55 - 0
consumer-service-demo/sql/sfcc_bak_2024-08-13.sql

@@ -0,0 +1,55 @@
+# ************************************************************
+# Sequel Ace SQL dump
+# 版本号: 20067
+#
+# https://sequel-ace.com/
+# https://github.com/Sequel-Ace/Sequel-Ace
+#
+# 主机: localhost (MySQL 8.0.33)
+# 数据库: sfcc_bak
+# 生成时间: 2024-08-13 01:21:22 +0000
+# ************************************************************
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+SET NAMES utf8mb4;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE='NO_AUTO_VALUE_ON_ZERO', SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+
+# 转储表 sts_echarts
+# ------------------------------------------------------------
+
+DROP TABLE IF EXISTS `sts_echarts`;
+
+CREATE TABLE `sts_echarts` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `int_day` date DEFAULT NULL COMMENT '时间',
+  `in_answer_calls` int DEFAULT NULL COMMENT '应答呼入量',
+  `in_calls` int DEFAULT NULL COMMENT '总呼入量',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+
+LOCK TABLES `sts_echarts` WRITE;
+/*!40000 ALTER TABLE `sts_echarts` DISABLE KEYS */;
+
+INSERT INTO `sts_echarts` (`id`, `int_day`, `in_answer_calls`, `in_calls`)
+VALUES
+	(1,'2024-08-12',110,118),
+	(2,'2024-08-11',32,38),
+	(3,'2024-08-13',121,132);
+
+/*!40000 ALTER TABLE `sts_echarts` ENABLE KEYS */;
+UNLOCK TABLES;
+
+
+
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;