diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java index d02758a..6b8a633 100644 --- a/src/main/java/com/example/demo/controller/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/ConsumeController.java @@ -47,6 +47,7 @@ public class ConsumeController { return Result.success(consumeService.selectAll(page.getPageNum(), page.getPageSize(),page.getConsumeUser())); } } catch (Exception e) { + e.printStackTrace(); return Result.error("请检查筛选数据的格式"); } diff --git a/src/main/java/com/example/demo/controller/GeneralController.java b/src/main/java/com/example/demo/controller/GeneralController.java index 7472975..d082660 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) throws Exception { + 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..6bfd729 100644 --- a/src/main/java/com/example/demo/controller/RoleController.java +++ b/src/main/java/com/example/demo/controller/RoleController.java @@ -39,6 +39,12 @@ public class RoleController { return roleService.addRole(roleVo); } + //删除角色 + @PostMapping("/delete") + public Result deleteRole(@RequestBody RoleVo roleVo) { + + return roleService.deleteRole(roleVo); + } //查找全部角色 @PostMapping("/selectAll") @@ -48,10 +54,37 @@ 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); + } + //获取当前角色的上级角色 + @PostMapping("/selectFather") + public Result selectFather(@RequestBody RoleVo roleVo) { + Integer id = roleVo.getId(); + RoleVo role = roleService.selectFather(id); + return Result.success(role); } + //角色明细筛选 + @PostMapping("/selectBy") + public Result selectBy(@RequestBody Page page) { + try { + //页码校验 + if (ObjectUtils.isEmpty(page.getPageNum())) { + return Result.error("页码数为空!"); + } + //页面大小校验 + if (ObjectUtils.isEmpty(page.getPageSize())) { + return Result.error("页大小为空!"); + } else { + return Result.success(roleService.selectBy(page.getPageNum(), page.getPageSize(), page.getRoleVo())); + } + } catch (Exception e) { + e.printStackTrace(); + return Result.error("请检查筛选数据的格式"); + } + } } diff --git a/src/main/java/com/example/demo/controller/WorkbenchController.java b/src/main/java/com/example/demo/controller/WorkbenchController.java index a3f4b03..5b2b11e 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) throws Exception{ + 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); + } } /* 获取各地区工作台图表的数据 @@ -57,12 +73,12 @@ public class WorkbenchController { /* 更新统计表并获取卡片数据 */ - @PostMapping("updateCard") + /*@PostMapping("updateCard") public ResponseEntity updateCard(@RequestBody WorkbenchCard workbench){ statisticsService.runHourlyTaskPart1(); //更新余量数据 statisticsService.runHourlyTaskPart2(); //更新余量外数据 WorkbenchCard result =workbenchService.getCard(workbench.getMarkets()); //获取卡片数据 return ResponseEntity.ok(result); - } + }*/ } 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/domain/vo/ConsumeUser.java b/src/main/java/com/example/demo/domain/vo/ConsumeUser.java index 1ef7d45..baf77cf 100644 --- a/src/main/java/com/example/demo/domain/vo/ConsumeUser.java +++ b/src/main/java/com/example/demo/domain/vo/ConsumeUser.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @program: gold-java @@ -67,4 +68,6 @@ public class ConsumeUser implements Serializable { private String sortField; //排序字段 @ExcelIgnore private String sortOrder; //排序顺序 + + private List markets; // 地区列表 } diff --git a/src/main/java/com/example/demo/domain/vo/Page.java b/src/main/java/com/example/demo/domain/vo/Page.java index 7a30778..a11d30f 100644 --- a/src/main/java/com/example/demo/domain/vo/Page.java +++ b/src/main/java/com/example/demo/domain/vo/Page.java @@ -28,4 +28,5 @@ public class Page { private RechargeAudit rechargeAudit; private RefundAudit refundAudit; private RechargeUser rechargeUser; + private RoleVo roleVo; } diff --git a/src/main/java/com/example/demo/domain/vo/RechargeUser.java b/src/main/java/com/example/demo/domain/vo/RechargeUser.java index d9f015c..75fb205 100644 --- a/src/main/java/com/example/demo/domain/vo/RechargeUser.java +++ b/src/main/java/com/example/demo/domain/vo/RechargeUser.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; +import java.util.List; /** * @program: gold-java @@ -82,4 +83,6 @@ public class RechargeUser { private String sortField; //排序字段 @ExcelIgnore private String sortOrder; //排序顺序 + + private List markets; // 地区列表 } diff --git a/src/main/java/com/example/demo/domain/vo/RefundUser.java b/src/main/java/com/example/demo/domain/vo/RefundUser.java index d80c0dd..bdbe0f0 100644 --- a/src/main/java/com/example/demo/domain/vo/RefundUser.java +++ b/src/main/java/com/example/demo/domain/vo/RefundUser.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; +import java.util.List; /** * @program: gold-java @@ -67,4 +68,6 @@ public class RefundUser { private String sortField; //排序字段 @ExcelIgnore private String sortOrder; //排序顺序 + + private List markets; // 地区列表 } diff --git a/src/main/java/com/example/demo/domain/vo/RoleVo.java b/src/main/java/com/example/demo/domain/vo/RoleVo.java index 17c9616..bbcaca4 100644 --- a/src/main/java/com/example/demo/domain/vo/RoleVo.java +++ b/src/main/java/com/example/demo/domain/vo/RoleVo.java @@ -2,6 +2,7 @@ package com.example.demo.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -20,6 +21,7 @@ import java.util.List; @Data @NoArgsConstructor +@AllArgsConstructor public class RoleVo implements Serializable { private static final long serialVersionUID = 1L; @@ -28,6 +30,7 @@ public class RoleVo implements Serializable { private String roleKey; // 角色标识符 private Integer priority;//优先级 private Integer fatherId;//上级角色id + private String fatherName;//上级角色名称 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date createTime; // 创建时间 @@ -35,4 +38,6 @@ public class RoleVo implements Serializable { private Date updateTime; // 更新时间 List menuIds;//拥有的菜单id + + List tree;//菜单树 } 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..51a5afa 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,17 @@ public interface RoleMapper { //新建角色 void addRole(RoleVo roleVo); //根据父级id查下属角色 - List selectByFatherId(Integer fatherId); + List selectByFatherId(@Param("id") Integer id); + + + //分页查找角色 + List selectBy(RoleVo roleVo); + + //删除角色 + void deleteRole(RoleVo roleVo); + + //删除角色菜单 + void deleteRoleMenu(RoleVo roleVo); + //获取当前角色的上级角色 + RoleVo selectFather(Integer id); } diff --git a/src/main/java/com/example/demo/service/AdminService.java b/src/main/java/com/example/demo/service/AdminService.java index 7b90e1d..6d6f95a 100644 --- a/src/main/java/com/example/demo/service/AdminService.java +++ b/src/main/java/com/example/demo/service/AdminService.java @@ -24,5 +24,8 @@ public interface AdminService { //重置密码 Result resetPassword(Password password); + + //获取当前登录的管理员账号 + String getCurrentAdminAccount(); } diff --git a/src/main/java/com/example/demo/service/GeneralService.java b/src/main/java/com/example/demo/service/GeneralService.java index 806882f..4348afc 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) throws Exception; } diff --git a/src/main/java/com/example/demo/service/RoleService.java b/src/main/java/com/example/demo/service/RoleService.java index decce7e..331737d 100644 --- a/src/main/java/com/example/demo/service/RoleService.java +++ b/src/main/java/com/example/demo/service/RoleService.java @@ -1,8 +1,10 @@ package com.example.demo.service; +import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.RoleVo; +import com.github.pagehelper.PageInfo; import java.util.List; @@ -23,5 +25,13 @@ public interface RoleService { //查找全部角色 List selectAllRole(); //根据父级id查找下属角色 - List selectSubRole(Integer fatherId); + List selectSubRole(Integer id); + + //分页查找角色 + PageInfo selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo); + + //删除角色 + Result deleteRole(RoleVo roleVo); + //获取当前角色的上级角色 + RoleVo selectFather(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..a1e382a 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()); @@ -179,4 +181,34 @@ public class AdminServiceImpl implements AdminService { return Result.error("其他错误"); } } -} \ No newline at end of file + + + public String getCurrentAdminAccount() { + // 1. 从 Security 上下文获取认证信息 + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + // 2. 校验认证状态(未登录则抛出异常) + if (authentication == null) { + throw new RuntimeException("当前用户未登录"); + } + + // 3. 获取登录用户的主体信息(principal) + Object principal = authentication.getPrincipal(); + + // 4. 校验主体类型是否为 Admin(确保类型匹配) + if (!(principal instanceof Admin)) { + throw new RuntimeException("登录用户类型错误,不是 Admin"); + } + + // 5. 转换为 Admin 对象并获取 account 属性 + Admin currentAdmin = (Admin) principal; + String account = currentAdmin.getAccount(); + + // 6. 校验 account 不为空(根据业务需求可选) + if (account == null || account.trim().isEmpty()) { + throw new RuntimeException("当前 Admin 的 account 属性为空"); + } + + return account; + } +} diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 1a7ef1a..f4de962 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -9,7 +9,9 @@ import com.example.demo.domain.vo.GoldUser; import com.example.demo.domain.vo.Result; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.UserMapper; +import com.example.demo.service.AdminService; import com.example.demo.service.ConsumeService; +import com.example.demo.service.GeneralService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; @@ -42,9 +44,17 @@ public class ConsumeServiceImpl implements ConsumeService { @Autowired private UserMapper userMapper; + @Autowired + private AdminService adminService; + @Autowired + private GeneralService generalService; + //消耗明细 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) { + String account = adminService.getCurrentAdminAccount(); + List markets = generalService.getRoleMarket(account); + consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List consumeUsers = consumeMapper.selectAll(consumeUser); return new PageInfo<>(consumeUsers); @@ -88,6 +98,9 @@ public class ConsumeServiceImpl implements ConsumeService { //消耗明细筛选 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) { + String account = adminService.getCurrentAdminAccount(); + List markets = generalService.getRoleMarket(account); + consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List consumeUsers = consumeMapper.selectBy(consumeUser); return new PageInfo<>(consumeUsers); @@ -96,14 +109,14 @@ public class ConsumeServiceImpl implements ConsumeService { //新增消耗 @Override public Result add(ConsumeUser consumeUser) { - if(consumeUser.getTaskGold()==null||consumeUser.getFreeGold()==null||consumeUser.getPermanentGold()==null){ + if (consumeUser.getTaskGold() == null || consumeUser.getFreeGold() == null || consumeUser.getPermanentGold() == null) { return Result.error("金币数量不能为空"); } - if(consumeUser.getTaskGold()<0||consumeUser.getFreeGold()<0||consumeUser.getPermanentGold()<0){ + if (consumeUser.getTaskGold() < 0 || consumeUser.getFreeGold() < 0 || consumeUser.getPermanentGold() < 0) { return Result.error("金币不能为负数"); } GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString()); - if(goldUser==null){ + if (goldUser == null) { return Result.error("用户不存在"); } UserGoldRecord userGoldRecord = new UserGoldRecord(); @@ -168,8 +181,8 @@ public class ConsumeServiceImpl implements ConsumeService { userMapper.updateGold(user); // if(consumeUser.getJwcode().equals(94226013)){ GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, - (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) /100, - userGoldRecord.getRemark(),((double) userGoldRecord.getPermanentGold() /100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName()); + (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, + userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName()); // } return Result.success(); } diff --git a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java index 74166b0..5ed5e68 100644 --- a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java @@ -108,6 +108,17 @@ public class GeneralServiceImpl implements GeneralService { return dates; } + /* + 获取角色的地区权限列表 + */ + @Override + public List getRoleMarket(String account) throws Exception { + String market = generalMapper.getRoleMarket(account); + if (market == null) + throw new Exception("没有地区权限"); + 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/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index 48a4fe6..d5629ce 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -6,6 +6,8 @@ import com.example.demo.domain.vo.*; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.RechargeMapper; import com.example.demo.mapper.UserMapper; +import com.example.demo.service.AdminService; +import com.example.demo.service.GeneralService; import com.example.demo.service.RechargeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -38,9 +40,19 @@ public class RechargeServiceImpl implements RechargeService { @Autowired private UserMapper userMapper; + + @Autowired + private AdminService adminService; + + @Autowired + private GeneralService generalService; + //查询所有充值 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) { + String account = adminService.getCurrentAdminAccount(); + List markets = generalService.getRoleMarket(account); + rechargeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeUsers = rechargeMapper.selectAll(rechargeUser); return new PageInfo<>(rechargeUsers); @@ -49,6 +61,9 @@ public class RechargeServiceImpl implements RechargeService { //查询筛选充值 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) { + String account = adminService.getCurrentAdminAccount(); + List markets = generalService.getRoleMarket(account); + rechargeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeUsers = rechargeMapper.selectBy(rechargeUser); return new PageInfo<>(rechargeUsers); diff --git a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java index 4e47d8f..84905db 100644 --- a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java @@ -5,6 +5,8 @@ import com.example.demo.domain.vo.*; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.RefundMapper; import com.example.demo.mapper.UserMapper; +import com.example.demo.service.AdminService; +import com.example.demo.service.GeneralService; import com.example.demo.service.RefundService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -44,9 +46,18 @@ public class RefundServiceImpl implements RefundService { @Autowired private UserMapper userMapper; + @Autowired + private AdminService adminService; + + @Autowired + private GeneralService generalService; + //查找全部退款 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) { + String account = adminService.getCurrentAdminAccount(); + List markets = generalService.getRoleMarket(account); + refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectAll(refundUser); return new PageInfo<>(refundUsers); @@ -90,6 +101,9 @@ public class RefundServiceImpl implements RefundService { //查找筛选退款 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) { + String account = adminService.getCurrentAdminAccount(); + List markets = generalService.getRoleMarket(account); + refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectBy(refundUser); return new PageInfo<>(refundUsers); diff --git a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java index 2c18c4c..3238626 100644 --- a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java @@ -1,12 +1,16 @@ package com.example.demo.serviceImpl; import com.example.demo.domain.entity.Role; +import com.example.demo.domain.vo.ConsumeUser; +import com.example.demo.domain.vo.MenuVo; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.RoleVo; import com.example.demo.mapper.RefundMapper; import com.example.demo.mapper.RoleMapper; import com.example.demo.service.MenuService; import com.example.demo.service.RoleService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,35 +39,70 @@ public class RoleServiceImpl implements RoleService { @Transactional public Result addRole(RoleVo roleVo) { //校验角色 - if(roleVo.getRoleName()==null|| roleVo.getRoleName().isEmpty()){ + if (roleVo.getRoleName() == null || roleVo.getRoleName().isEmpty()) { return Result.error("角色名为空"); } - if(roleMapper.selectByRoleName(roleVo.getRoleName())!=null){ + if (roleMapper.selectByRoleName(roleVo.getRoleName()) != null) { return Result.error("角色名重复"); } - if(roleVo.getPriority()==null){ + if (roleVo.getPriority() == null) { return Result.error("优先级为空"); } - if(roleVo.getMenuIds()==null||roleVo.getMenuIds().isEmpty()){ + if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) { return Result.error("权限为空"); } + else { + if(roleVo.getFatherId() != 2) { + for(Integer menuId : roleVo.getMenuIds()){ + if(menuId == 9){ + return Result.error("上级角色非管理员用户不能赋予权限管理"); + } + } + } + } + try { roleMapper.addRole(roleVo); Role role = roleMapper.selectByRoleName(roleVo.getRoleName()); - if(role==null){ + if (role == null) { return Result.error("角色添加失败"); - }else{ + } else { roleVo.setId(role.getId()); } menuService.addPermission(roleVo); - }catch (Exception e) - { + } catch (Exception e) { return Result.error("添加失败"); } return Result.success("创建成功"); } + //删除角色 + @Override + @Transactional + public Result deleteRole(RoleVo roleVo) { + if (roleVo.getId() == null) { + return Result.error("角色id为空"); + } + if(roleVo.getId() == 2){ + return Result.error("管理员不允许删除"); + } + try { + roleMapper.deleteRoleMenu(roleVo); + roleMapper.deleteRole(roleVo); + } catch (Exception e) { + e.printStackTrace(); + return Result.error("删除失败"); + } + return Result.success("删除成功"); + } + + @Override + public RoleVo selectFather(Integer id) { + + return roleMapper.selectFather(id); + } + //查找全部角色 @Override public List selectAllRole() { @@ -71,8 +110,23 @@ public class RoleServiceImpl implements RoleService { } @Override - public List selectSubRole(Integer fatherId) { - return roleMapper.selectByFatherId(fatherId); + public List selectSubRole(Integer id) { + return roleMapper.selectByFatherId(id); + } + + //分页查找角色 + @Override + public PageInfo selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) { + PageHelper.startPage(pageNum, pageSize); + List roleVos = roleMapper.selectBy(roleVo); + // 遍历 roleVos 列表 + for (RoleVo role : roleVos) { + // 获取每个角色的权限树 + List permissionTree = menuService.getPermissionTree(role.getId()); + // 将权限树设置到角色对象中 + role.setTree(permissionTree); + } + return new PageInfo<>(roleVos); } } diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java index 89af8d7..e5c9a31 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); @@ -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/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index f8e06a5..24ebae1 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -21,7 +21,17 @@ user u ON u.jwcode = ugr.jwcode left JOIN admin a ON ugr.admin_id = a.id - WHERE ugr.type = 1 AND ugr.flag = 1 + + ugr.type = 1 AND ugr.flag = 1 + + + AND u.market IN + + #{market} + + + + 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..94f74e0 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 @@ -35,4 +35,38 @@ VALUES (#{roleName}, #{priority}, #{fatherId}) + + + + DELETE FROM role_menu WHERE role_id = #{id}; + + + + DELETE FROM role WHERE id = #{id}; + + + + + + + \ No newline at end of file