From c606f8e879e5c2dc9e415830882ef373a9f6cd3d Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 17 Jul 2025 14:27:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=9C=B0=E5=8C=BA=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/controller/GeneralController.java | 13 +++++++++---- .../example/demo/controller/RoleController.java | 7 ++++--- .../demo/controller/WorkbenchController.java | 22 +++++++++++++++++++--- .../java/com/example/demo/domain/entity/Admin.java | 5 +---- .../java/com/example/demo/domain/vo/AdminVo.java | 6 ++++-- .../com/example/demo/mapper/GeneralMapper.java | 2 ++ .../java/com/example/demo/mapper/RoleMapper.java | 3 ++- .../com/example/demo/service/GeneralService.java | 3 ++- .../java/com/example/demo/service/RoleService.java | 2 +- .../com/example/demo/service/WorkbenchService.java | 4 ++-- .../example/demo/serviceImpl/AdminServiceImpl.java | 4 +++- .../demo/serviceImpl/GeneralServiceImpl.java | 9 +++++++++ .../demo/serviceImpl/PermissionServiceImpl.java | 4 ++++ .../example/demo/serviceImpl/RoleServiceImpl.java | 4 ++-- .../demo/serviceImpl/WorkbenchServiceImpl.java | 16 ++++++++-------- src/main/resources/mapper/GeneralMapper.xml | 5 +++++ src/main/resources/mapper/RoleMapper.xml | 6 +++--- 17 files changed, 80 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/example/demo/controller/GeneralController.java b/src/main/java/com/example/demo/controller/GeneralController.java index 7472975..ffd168a 100644 --- a/src/main/java/com/example/demo/controller/GeneralController.java +++ b/src/main/java/com/example/demo/controller/GeneralController.java @@ -1,14 +1,12 @@ package com.example.demo.controller; +import com.example.demo.domain.vo.AdminVo; import com.example.demo.domain.vo.Result; import com.example.demo.service.GeneralService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -35,6 +33,13 @@ public class GeneralController { List list = generalService.getMarket(); return Result.success(list); } + //获取角色地区权限列表 + @PostMapping("/roleMarkets") + public Result getRoleMarkets(@RequestBody AdminVo adminVo){ + String account = adminVo.getAccount(); + List list = generalService.getRoleMarket(account); + return Result.success(list); + } @PostMapping("/platform") public Result getPlatform() { diff --git a/src/main/java/com/example/demo/controller/RoleController.java b/src/main/java/com/example/demo/controller/RoleController.java index 4265642..ffdb0c2 100644 --- a/src/main/java/com/example/demo/controller/RoleController.java +++ b/src/main/java/com/example/demo/controller/RoleController.java @@ -48,9 +48,10 @@ public class RoleController { } //获取上级角色的下属角色列表 @PostMapping("/selectSub") - public List selectSub(Integer fatherId) { - - return roleService.selectSubRole(fatherId); + public Result selectSub(@RequestBody RoleVo roleVo) { + Integer id = roleVo.getId(); + List list=roleService.selectSubRole(id); + return Result.success(list); } diff --git a/src/main/java/com/example/demo/controller/WorkbenchController.java b/src/main/java/com/example/demo/controller/WorkbenchController.java index a3f4b03..74e7412 100644 --- a/src/main/java/com/example/demo/controller/WorkbenchController.java +++ b/src/main/java/com/example/demo/controller/WorkbenchController.java @@ -1,18 +1,25 @@ package com.example.demo.controller; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Statistics; import com.example.demo.domain.vo.TestRequest; import com.example.demo.domain.vo.WorkbenchCard; import com.example.demo.mapper.StatisticsMapper; +import com.example.demo.service.GeneralService; import com.example.demo.service.StatisticsService; import com.example.demo.service.WorkbenchService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -36,15 +43,24 @@ public class WorkbenchController { @Autowired private StatisticsService statisticsService; @Autowired + private GeneralService generalService; + @Autowired private StatisticsMapper statisticsMapper; /* 获取各地区工作台卡片的数据 */ @PostMapping("getCard") - public ResponseEntity card1(@RequestBody WorkbenchCard workbench){ - WorkbenchCard result =workbenchService.getCard(workbench.getMarkets()); - return ResponseEntity.ok(result); + public ResponseEntity card1(@RequestBody WorkbenchCard workbench, + @AuthenticationPrincipal Admin admin) { + if (admin != null) { + String account = admin.getAccount(); + List markets = generalService.getRoleMarket(account); + WorkbenchCard result = workbenchService.getCard(markets); + return ResponseEntity.ok(result); + } else { + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null); + } } /* 获取各地区工作台图表的数据 diff --git a/src/main/java/com/example/demo/domain/entity/Admin.java b/src/main/java/com/example/demo/domain/entity/Admin.java index f46d1d1..f2cd473 100644 --- a/src/main/java/com/example/demo/domain/entity/Admin.java +++ b/src/main/java/com/example/demo/domain/entity/Admin.java @@ -36,10 +36,7 @@ public class Admin implements UserDetails, Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; // 更新时间 private Integer roleId; - // 添加一个方法来方便测试和调试 - // public void setMarket(String marketStr) { - // this.market = Arrays.asList(marketStr.split(",")); - //} + @Override @JsonIgnore diff --git a/src/main/java/com/example/demo/domain/vo/AdminVo.java b/src/main/java/com/example/demo/domain/vo/AdminVo.java index 88fc176..6f4c9fb 100644 --- a/src/main/java/com/example/demo/domain/vo/AdminVo.java +++ b/src/main/java/com/example/demo/domain/vo/AdminVo.java @@ -24,8 +24,10 @@ public class AdminVo implements UserDetails, Serializable { private String password; // 密码 private String machineId; // 第一个机器码 private String machineIds; //第二个机器码 + private String markets; // 地区 private Byte adminStatus; // 状态(启用/不启用) - private List market; // 地区 + private List market; // 地区列表 + private Integer roleId;// 角色ID private String postiton; // 职位 private String remark; // 备注 @@ -34,7 +36,7 @@ public class AdminVo implements UserDetails, Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; // 更新时间 - private Integer roleId; + @Override diff --git a/src/main/java/com/example/demo/mapper/GeneralMapper.java b/src/main/java/com/example/demo/mapper/GeneralMapper.java index 3880ea1..dfea146 100644 --- a/src/main/java/com/example/demo/mapper/GeneralMapper.java +++ b/src/main/java/com/example/demo/mapper/GeneralMapper.java @@ -21,4 +21,6 @@ public interface GeneralMapper { //获取活动 List getActivity(); + //获取角色的地区权限列表 + String getRoleMarket(String account); } diff --git a/src/main/java/com/example/demo/mapper/RoleMapper.java b/src/main/java/com/example/demo/mapper/RoleMapper.java index 1e9d624..131a24f 100644 --- a/src/main/java/com/example/demo/mapper/RoleMapper.java +++ b/src/main/java/com/example/demo/mapper/RoleMapper.java @@ -4,6 +4,7 @@ package com.example.demo.mapper; import com.example.demo.domain.entity.Role; import com.example.demo.domain.vo.RoleVo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Random; @@ -32,5 +33,5 @@ public interface RoleMapper { //新建角色 void addRole(RoleVo roleVo); //根据父级id查下属角色 - List selectByFatherId(Integer fatherId); + List selectByFatherId(@Param("id") Integer id); } diff --git a/src/main/java/com/example/demo/service/GeneralService.java b/src/main/java/com/example/demo/service/GeneralService.java index 806882f..9b88343 100644 --- a/src/main/java/com/example/demo/service/GeneralService.java +++ b/src/main/java/com/example/demo/service/GeneralService.java @@ -32,5 +32,6 @@ public interface GeneralService { String formatDate(Date date) ; //获取时间段内的所有日期(包含起始和结束日) List getAllDatesBetween(Date start, Date end); - + //获取角色的地区权限列表 + List getRoleMarket(String account); } diff --git a/src/main/java/com/example/demo/service/RoleService.java b/src/main/java/com/example/demo/service/RoleService.java index decce7e..b78b7d4 100644 --- a/src/main/java/com/example/demo/service/RoleService.java +++ b/src/main/java/com/example/demo/service/RoleService.java @@ -23,5 +23,5 @@ public interface RoleService { //查找全部角色 List selectAllRole(); //根据父级id查找下属角色 - List selectSubRole(Integer fatherId); + List selectSubRole(Integer id); } diff --git a/src/main/java/com/example/demo/service/WorkbenchService.java b/src/main/java/com/example/demo/service/WorkbenchService.java index 5a366c6..658ce21 100644 --- a/src/main/java/com/example/demo/service/WorkbenchService.java +++ b/src/main/java/com/example/demo/service/WorkbenchService.java @@ -32,11 +32,11 @@ public interface WorkbenchService { //获取该日期该市场的日环比 Integer calculateDayOverDay(String market,Date date); //获取总体日环比 - Integer calculateAllDayOverDay(Date date); + Integer calculateAllDayOverDay(Date date,List markets); //获取该日期该市场的周同比 Integer calculateWeekOverWeek(String market, Date date); //获取该日期总体的周同比 - Integer calculateAllWeekOverWeek( Date date); + Integer calculateAllWeekOverWeek( Date date,List markets); //获取与传入的日期相差XX天的日期 Date addDays(Date date, int days); //获取传入时间所在周的第一天(周一) diff --git a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java index 73c8a4e..f0d141d 100644 --- a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java @@ -11,6 +11,7 @@ import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import org.apache.commons.lang3.StringUtils; @@ -53,9 +54,10 @@ public class AdminServiceImpl implements AdminService { UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account, admin.getPassword()); Authentication authentication = authenticationManager.authenticate(token); + SecurityContextHolder.getContext().setAuthentication(authentication); // 存储认证信息 Admin authenticatedAdmin = (Admin) authentication.getPrincipal(); System.out.println("authenticatedAdmin markets: " + authenticatedAdmin.getMarkets()); // 添加日志检查 - return (Admin) authentication.getPrincipal(); + return authenticatedAdmin; } catch (Exception e) { System.out.println("密码错误" + e.getMessage()); diff --git a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java index 74166b0..5b46288 100644 --- a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java @@ -108,6 +108,15 @@ public class GeneralServiceImpl implements GeneralService { return dates; } + /* + 获取角色的地区权限列表 + */ + @Override + public List getRoleMarket(String account) { + String market = generalMapper.getRoleMarket(account); + List list = Arrays.asList(market.split(",")); + return list; + } } diff --git a/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java index 1586303..0d01879 100644 --- a/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java @@ -140,6 +140,10 @@ public class PermissionServiceImpl implements PermissionService { if (ObjectUtils.isEmpty(adminVo.getAdminName())) { throw new Exception("用户名为空!"); } + //校验角色是否为空 + if (ObjectUtils.isEmpty(adminVo.getRoleId())) { + throw new Exception("角色为空!"); + } // 校验地区是否为空(管理员所属地区为必填项) if (ObjectUtils.isEmpty(adminVo.getMarket())) { throw new Exception("地区为空!"); diff --git a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java index 2c18c4c..9a50b77 100644 --- a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java @@ -71,8 +71,8 @@ public class RoleServiceImpl implements RoleService { } @Override - public List selectSubRole(Integer fatherId) { - return roleMapper.selectByFatherId(fatherId); + public List selectSubRole(Integer id) { + return roleMapper.selectByFatherId(id); } } diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java index 89af8d7..0e99cf8 100644 --- a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java @@ -63,7 +63,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { // 获取当前年份的第一天 LocalDate firstDayOfYear = LocalDate.now().withDayOfYear(1); Date yearlyStartDate = Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant()); - markets = generalService.getMarket(); + // markets = generalService.getRoleMarket(); // 批量获取统计数据 List currentStatsList = statisticsMapper.selectByMarketsAndDate(markets, @@ -90,8 +90,8 @@ public class WorkbenchServiceImpl implements WorkbenchService { new Date())) .collect(Collectors.toList()); - Integer sumWow= calculateAllWeekOverWeek(date); - Integer sumDaily=calculateAllDayOverDay(date); + Integer sumWow= calculateAllWeekOverWeek(date,markets); + Integer sumDaily=calculateAllDayOverDay(date, markets); Date updateTime = findLatestUpdateTime(currentStatsList); return new WorkbenchCard(marketCards, new ArrayList<>(), markets, new Date(), new Date(),sumWow,sumDaily,updateTime); @@ -99,7 +99,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { @Override public WorkbenchCard getCardCache(List markets) { - markets = generalService.getMarket(); + //markets = generalService.getMarket(); //从缓存中获取工作台数据 WorkbenchCard cached = redisTemplate.opsForValue().get(CACHE_KEY); if (cached != null) { @@ -274,12 +274,12 @@ public class WorkbenchServiceImpl implements WorkbenchService { } // 计算所有市场总体日环比 @Override - public Integer calculateAllDayOverDay(Date date) { + public Integer calculateAllDayOverDay(Date date,List markets) { //获取今天的开始时间和结束时间 LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1); //获取地区列表 - List markets = generalService.getMarket(); + // List markets = generalService.getMarket(); int currentTotal = 0; //今日所有地区总的充值人数 int yesterdayTotal = 0; //昨日所有地区总的充值人数 @@ -324,9 +324,9 @@ public class WorkbenchServiceImpl implements WorkbenchService { 获取改天总体的的周环比 */ @Override - public Integer calculateAllWeekOverWeek( Date date) { + public Integer calculateAllWeekOverWeek( Date date,List markets) { - List markets = generalService.getMarket(); + // List markets = generalService.getMarket(); int thisWeekTotal = 0; //本周至当天充值人数 int lastWeekTotal = 0; //上周至当天充值人数 //获取本周周一 diff --git a/src/main/resources/mapper/GeneralMapper.xml b/src/main/resources/mapper/GeneralMapper.xml index 6ddca20..e0dd2f5 100644 --- a/src/main/resources/mapper/GeneralMapper.xml +++ b/src/main/resources/mapper/GeneralMapper.xml @@ -14,4 +14,9 @@ + + \ No newline at end of file diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml index a5abfe4..d1fba53 100644 --- a/src/main/resources/mapper/RoleMapper.xml +++ b/src/main/resources/mapper/RoleMapper.xml @@ -21,11 +21,11 @@ SELECT id,role_name FROM role