Browse Source

用户地区权限

huangqizheng/feature-20250718222252-导出修改完毕
lijianlin 1 month ago
parent
commit
c606f8e879
  1. 13
      src/main/java/com/example/demo/controller/GeneralController.java
  2. 7
      src/main/java/com/example/demo/controller/RoleController.java
  3. 22
      src/main/java/com/example/demo/controller/WorkbenchController.java
  4. 5
      src/main/java/com/example/demo/domain/entity/Admin.java
  5. 6
      src/main/java/com/example/demo/domain/vo/AdminVo.java
  6. 2
      src/main/java/com/example/demo/mapper/GeneralMapper.java
  7. 3
      src/main/java/com/example/demo/mapper/RoleMapper.java
  8. 3
      src/main/java/com/example/demo/service/GeneralService.java
  9. 2
      src/main/java/com/example/demo/service/RoleService.java
  10. 4
      src/main/java/com/example/demo/service/WorkbenchService.java
  11. 4
      src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
  12. 9
      src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java
  13. 4
      src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java
  14. 4
      src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java
  15. 16
      src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
  16. 5
      src/main/resources/mapper/GeneralMapper.xml
  17. 6
      src/main/resources/mapper/RoleMapper.xml

13
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<String> list = generalService.getMarket();
return Result.success(list);
}
//获取角色地区权限列表
@PostMapping("/roleMarkets")
public Result getRoleMarkets(@RequestBody AdminVo adminVo){
String account = adminVo.getAccount();
List<String> list = generalService.getRoleMarket(account);
return Result.success(list);
}
@PostMapping("/platform")
public Result getPlatform()
{

7
src/main/java/com/example/demo/controller/RoleController.java

@ -48,9 +48,10 @@ public class RoleController {
}
//获取上级角色的下属角色列表
@PostMapping("/selectSub")
public List<RoleVo> selectSub(Integer fatherId) {
return roleService.selectSubRole(fatherId);
public Result selectSub(@RequestBody RoleVo roleVo) {
Integer id = roleVo.getId();
List<RoleVo> list=roleService.selectSubRole(id);
return Result.success(list);
}

22
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<WorkbenchCard> card1(@RequestBody WorkbenchCard workbench){
WorkbenchCard result =workbenchService.getCard(workbench.getMarkets());
return ResponseEntity.ok(result);
public ResponseEntity<WorkbenchCard> card1(@RequestBody WorkbenchCard workbench,
@AuthenticationPrincipal Admin admin) {
if (admin != null) {
String account = admin.getAccount();
List<String> markets = generalService.getRoleMarket(account);
WorkbenchCard result = workbenchService.getCard(markets);
return ResponseEntity.ok(result);
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
}
}
/*
获取各地区工作台图表的数据

5
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

6
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<String> market; // 地区
private List<String> 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

2
src/main/java/com/example/demo/mapper/GeneralMapper.java

@ -21,4 +21,6 @@ public interface GeneralMapper {
//获取活动
List<String> getActivity();
//获取角色的地区权限列表
String getRoleMarket(String account);
}

3
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<RoleVo> selectByFatherId(Integer fatherId);
List<RoleVo> selectByFatherId(@Param("id") Integer id);
}

3
src/main/java/com/example/demo/service/GeneralService.java

@ -32,5 +32,6 @@ public interface GeneralService {
String formatDate(Date date) ;
//获取时间段内的所有日期包含起始和结束日
List<Date> getAllDatesBetween(Date start, Date end);
//获取角色的地区权限列表
List<String> getRoleMarket(String account);
}

2
src/main/java/com/example/demo/service/RoleService.java

@ -23,5 +23,5 @@ public interface RoleService {
//查找全部角色
List<RoleVo> selectAllRole();
//根据父级id查找下属角色
List<RoleVo> selectSubRole(Integer fatherId);
List<RoleVo> selectSubRole(Integer id);
}

4
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<String> markets);
//获取该日期该市场的周同比
Integer calculateWeekOverWeek(String market, Date date);
//获取该日期总体的周同比
Integer calculateAllWeekOverWeek( Date date);
Integer calculateAllWeekOverWeek( Date date,List<String> markets);
//获取与传入的日期相差XX天的日期
Date addDays(Date date, int days);
//获取传入时间所在周的第一天周一

4
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());

9
src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java

@ -108,6 +108,15 @@ public class GeneralServiceImpl implements GeneralService {
return dates;
}
/*
获取角色的地区权限列表
*/
@Override
public List<String> getRoleMarket(String account) {
String market = generalMapper.getRoleMarket(account);
List<String> list = Arrays.asList(market.split(","));
return list;
}
}

4
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("地区为空!");

4
src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java

@ -71,8 +71,8 @@ public class RoleServiceImpl implements RoleService {
}
@Override
public List<RoleVo> selectSubRole(Integer fatherId) {
return roleMapper.selectByFatherId(fatherId);
public List<RoleVo> selectSubRole(Integer id) {
return roleMapper.selectByFatherId(id);
}
}

16
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<Statistics> 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<String> 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<String> markets) {
//获取今天的开始时间和结束时间
LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN);
LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1);
//获取地区列表
List<String> markets = generalService.getMarket();
// List<String> 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<String> markets) {
List<String> markets = generalService.getMarket();
// List<String> markets = generalService.getMarket();
int thisWeekTotal = 0; //本周至当天充值人数
int lastWeekTotal = 0; //上周至当天充值人数
//获取本周周一

5
src/main/resources/mapper/GeneralMapper.xml

@ -14,4 +14,9 @@
<select id="getActivity" resultType="java.lang.String">
select DISTINCT activity from user_gold_record
</select>
<!--获取角色的地区权限列表-->
<select id="getRoleMarket" resultType="java.lang.String">
select market from admin
where account = #{account}
</select>
</mapper>

6
src/main/resources/mapper/RoleMapper.xml

@ -21,11 +21,11 @@
SELECT id,role_name FROM role
</select>
<select id="selectByFatherId" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name FROM role
SELECT id,role_name,priority FROM role
<where>
father_id = #{fatherId}
father_id = #{id}
</where>
ORDER BY priority
ORDER BY priority desc
</select>
<!-- 插入角色信息 -->

Loading…
Cancel
Save