From bc91619c854cc2dbb01b20d0c47d76c4881e9ee8 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 20 五月 2025 23:52:21 +0800 Subject: [PATCH] Merge remote-tracking branch '喜望/dev-2.0.1' into dev-2.0.1 --- springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java | 373 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 321 insertions(+), 52 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java index 1d7edde..c448c25 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java @@ -1,6 +1,7 @@ package com.panzhihua.sangeshenbian.api; 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.panzhihua.common.controller.BaseController; import com.panzhihua.common.interfaces.OperLog; @@ -8,18 +9,18 @@ import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo; import com.panzhihua.common.service.auth.TokenService; -import com.panzhihua.sangeshenbian.model.entity.SystemMenu; -import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu; -import com.panzhihua.sangeshenbian.model.entity.SystemUser; -import com.panzhihua.sangeshenbian.service.ISystemMenuService; -import com.panzhihua.sangeshenbian.service.ISystemRoleMenuService; -import com.panzhihua.sangeshenbian.service.ISystemUserService; -import com.panzhihua.sangeshenbian.warpper.LoginVo; -import com.panzhihua.sangeshenbian.warpper.SystemUserList; -import com.panzhihua.sangeshenbian.warpper.SystemUserListVo; -import com.panzhihua.sangeshenbian.warpper.TokenVo; +import com.panzhihua.sangeshenbian.annotation.SysLog; +import com.panzhihua.sangeshenbian.model.entity.*; +import com.panzhihua.sangeshenbian.model.vo.RegionVO; +import com.panzhihua.sangeshenbian.service.*; +import com.panzhihua.sangeshenbian.utils.SignatureUtil; +import com.panzhihua.sangeshenbian.warpper.*; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.util.ObjectUtils; @@ -27,9 +28,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -38,34 +37,48 @@ * @Date 2025/2/18 22:30 */ @Api +@Slf4j @RestController @RequestMapping("/systemUser") public class SystemUserController extends BaseController { - + @Resource private ISystemUserService systemUserService; - + @Resource private RedisTemplate redisTemplate; - + @Resource private TokenService tokenService; - + private final Integer max_err = 5; - + @Resource private ISystemRoleMenuService systemRoleMenuService; - + @Resource private ISystemMenuService systemMenuService; - - - - - + + @Resource + private IBcRegionService bcRegionService; + @Resource + private IComStreetService comStreetService; + @Resource + private IComActService comActService; + + @Resource + private ISystemLogService systemLogService; + + @Resource + private ISystemUserLevelService systemUserLevelService; + + + + + @PostMapping("/login") @ApiOperation(value = "登录", tags = {"三个身边后台-登录"}) - @OperLog(operModul = "三个身边后台",operType = 0,businessType = "登录") + @SysLog(operatorCategory = "登录",operId = 1) public R<TokenVo> login(@RequestBody LoginVo vo){ String key = "login:" + vo.getPhone(); Integer size = (Integer) redisTemplate.opsForValue().get(key); @@ -96,19 +109,80 @@ LoginReturnVO loginReturnVO = reult.getData(); TokenVo tokenVo = new TokenVo(); BeanUtils.copyProperties(loginReturnVO, tokenVo); + tokenVo.setUserId(Long.valueOf(systemUser.getId())); + List<SystemRoleMenu> list = systemRoleMenuService.list(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, systemUser.getSystemRoleId())); List<Integer> collect = list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList()); Set<String> collect1 = new HashSet<>(); if(collect.size() > 0){ - List<SystemMenu> systemMenus = systemMenuService.listByIds(collect); + LambdaQueryWrapper<SystemMenu> queryWrapper = new LambdaQueryWrapper<SystemMenu>().in(SystemMenu::getId, collect); + switch (systemUser.getAccountLevel()){ + case 2: + queryWrapper.notIn(SystemMenu::getUrl, Arrays.asList("/system_setting/position_management", "/system_setting/position_management/add", "/system_setting/position_management/del", + "/system_setting/role_management", "/system_setting/role_management/add", "/system_setting/role_management/edit", "/system_setting/role_management/del", + "/work_order_transaction_management/work_order_item_configuration", "/work_order_transaction_management/work_order_item_configuration/save", + "/work_order_transaction_management/problem_type_management", "/work_order_transaction_management/problem_type_management/add", + "/work_order_transaction_management/problem_type_management/edit", "/work_order_transaction_management/problem_type_management/del", "/work_order_transaction_management/banner_management", + "/work_order_transaction_management/banner_management/add", "/work_order_transaction_management/banner_management/edit", "/work_order_transaction_management/banner_management/del")); + break; + case 3: + queryWrapper.notIn(SystemMenu::getUrl, Arrays.asList("/system_setting/position_management", "/system_setting/position_management/add", "/system_setting/position_management/del", + "/system_setting/role_management", "/system_setting/role_management/add", "/system_setting/role_management/edit", "/system_setting/role_management/del", + "/work_order_transaction_management/work_order_item_configuration", "/work_order_transaction_management/work_order_item_configuration/save", + "/work_order_transaction_management/problem_type_management", "/work_order_transaction_management/problem_type_management/add", + "/work_order_transaction_management/problem_type_management/edit", "/work_order_transaction_management/problem_type_management/del", "/work_order_transaction_management/banner_management", + "/work_order_transaction_management/banner_management/add", "/work_order_transaction_management/banner_management/edit", "/work_order_transaction_management/banner_management/del")); + break; + case 4: + queryWrapper.notIn(SystemMenu::getUrl, Arrays.asList("/system_setting/position_management", "/system_setting/position_management/add", "/system_setting/position_management/del", + "/system_setting/role_management", "/system_setting/role_management/add", "/system_setting/role_management/edit", "/system_setting/role_management/del", + "/work_order_transaction_management/work_order_item_configuration", "/work_order_transaction_management/work_order_item_configuration/save", + "/work_order_transaction_management/problem_type_management", "/work_order_transaction_management/problem_type_management/add", + "/work_order_transaction_management/problem_type_management/edit", "/work_order_transaction_management/problem_type_management/del", "/work_order_transaction_management/banner_management", + "/work_order_transaction_management/banner_management/add", "/work_order_transaction_management/banner_management/edit", "/work_order_transaction_management/banner_management/del")); + break; + case 5: + queryWrapper.notIn(SystemMenu::getUrl, Arrays.asList("/system_setting/position_management", "/system_setting/position_management/add", "/system_setting/position_management/del", + "/system_setting/role_management", "/system_setting/role_management/add", "/system_setting/role_management/edit", "/system_setting/role_management/del", + "/system_setting/people_management", "/system_setting/people_management/add", "/system_setting/people_management/edit", "/system_setting/people_management/del", + "/system_setting/people_management/freeze", "/system_setting/unit_management", "/system_setting/people_management/detail", "/system_setting/unit_management/add", + "/system_setting/unit_management/edit", "/system_setting/unit_management/del", "/work_order_transaction_management/work_order_item_configuration", + "/work_order_transaction_management/work_order_item_configuration/save", "/work_order_transaction_management/problem_type_management", + "/work_order_transaction_management/problem_type_management/add", "/work_order_transaction_management/problem_type_management/edit", + "/work_order_transaction_management/problem_type_management/del", "/work_order_transaction_management/banner_management", + "/work_order_transaction_management/banner_management/add", "/work_order_transaction_management/banner_management/edit", "/work_order_transaction_management/banner_management/del")); + break; + } + List<SystemMenu> systemMenus = systemMenuService.list(queryWrapper); collect1 = systemMenus.stream().map(SystemMenu::getUrl).collect(Collectors.toSet()); } tokenVo.setMenu(collect1); tokenVo.setName(systemUser.getName()); + tokenVo.setAccountLevel(systemUser.getAccountLevel()); + switch (systemUser.getAccountLevel()){ + case 1: + tokenVo.setCityCode("510400"); + break; + case 2: + tokenVo.setCityCode("510400"); + tokenVo.setDistrictsCode(systemUser.getDistrictsCode()); + break; + case 3: + tokenVo.setCityCode("510400"); + tokenVo.setDistrictsCode(systemUser.getDistrictsCode()); + tokenVo.setStreetId(systemUser.getStreetId()); + break; + case 4: + tokenVo.setCityCode("510400"); + tokenVo.setDistrictsCode(systemUser.getDistrictsCode()); + tokenVo.setStreetId(systemUser.getStreetId()); + tokenVo.setCommunityId(systemUser.getCommunityId().toString()); + break; + } return R.ok(tokenVo); } - - + + @PostMapping("logout") @ApiOperation(value = "退出登录", tags = {"三个身边后台-登录"}) @OperLog(operModul = "三个身边后台",operType = 0,businessType = "退出登录") @@ -119,26 +193,36 @@ } return tokenService.logout(token); } - - + + @GetMapping("/list") @ApiOperation(value = "获取列表数据", tags = {"三个身边管理后台-人员管理"}) @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取人员管理列表数据") public R<IPage<SystemUserListVo>> list(SystemUserList query){ Integer id = this.getLoginUserInfoSanGeShenBian().getId(); SystemUser user = systemUserService.getById(id); - IPage<SystemUserListVo> list = systemUserService.list(user.getAccountLevel(), query); + IPage<SystemUserListVo> list = systemUserService.list(user, query); return R.ok(list); } - - - + + + @PostMapping("/add") @ApiOperation(value = "添加人员", tags = {"三个身边管理后台-人员管理"}) - @OperLog(operModul = "三个身边后台",operType = 1,businessType = "添加人员") + @SysLog(operatorCategory = "添加账号",operId = 4) public R add(@RequestBody SystemUser systemUser){ Integer id = this.getLoginUserInfoSanGeShenBian().getId(); SystemUser user = systemUserService.getById(id); + List<SystemUserLevel> systemUserLevels = systemUser.getSystemUserLevels(); + if(systemUserLevels==null || systemUserLevels.isEmpty()){ + return R.fail("请选择账号层级"); + } + // 获取最高层级的用于原来的判断 + systemUserLevels.sort(Comparator.comparing(SystemUserLevel::getLevel)); + Integer level = systemUserLevels.get(0).getLevel(); + user.setAccountLevel(level); + + if(2 == user.getAccountLevel() && 1 == systemUser.getAccountLevel()){ return R.fail("不能添加市级账号"); } @@ -152,52 +236,115 @@ if(0 < count){ return R.fail("手机号重复。"); } + + String districtsCode = systemUser.getDistrictsCode(); + if (!StringUtils.isEmpty(districtsCode)){ + BcRegion bcRegion = bcRegionService.getOne(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getRegionCode, districtsCode)); + systemUser.setDistricts(bcRegion.getRegionName()); + } + + String streetId = systemUser.getStreetId(); + if (!StringUtils.isEmpty(streetId)){ + ComStreet comStreet = comStreetService.getById(streetId); + systemUser.setStreet(comStreet.getName()); + } + Long communityId = systemUser.getCommunityId(); + if (communityId != null){ + ComAct act = comActService.getById(communityId); + systemUser.setCommunity(act.getName()); + } + systemUser.setStatus(1); systemUser.setCreateTime(LocalDateTime.now()); + // 2.0.1 默认管理员 + systemUser.setIsAdmin(1); systemUserService.save(systemUser); + + // 2.0.1添加账号层级 + systemUserLevels.forEach(e->{ + e.setSystemUserId(systemUser.getId()); + e.setStatus(1); + }); + systemUserLevelService.saveBatch(systemUserLevels); return R.ok(); } - - + + @PostMapping("/edit") @ApiOperation(value = "编辑人员", tags = {"三个身边后台-人员管理"}) - @OperLog(operModul = "三个身边后台",operType = 2,businessType = "编辑人员") + @SysLog(operatorCategory = "编辑账号",operId = 4) public R edit(@RequestBody SystemUser systemUser){ + List<SystemUserLevel> systemUserLevels = systemUser.getSystemUserLevels(); + if(systemUserLevels==null || systemUserLevels.isEmpty()){ + return R.fail("请选择账号层级"); + } long count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getPhone, systemUser.getPhone()) .ne(SystemUser::getStatus, 3).ne(SystemUser::getId, systemUser.getId())); if(0 < count){ return R.fail("手机号重复。"); } + + String districtsCode = systemUser.getDistrictsCode(); + if (!StringUtils.isEmpty(districtsCode)){ + BcRegion bcRegion = bcRegionService.getOne(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getRegionCode, districtsCode)); + systemUser.setDistricts(bcRegion.getRegionName()); + } + + String streetId = systemUser.getStreetId(); + if (!StringUtils.isEmpty(streetId)){ + ComStreet comStreet = comStreetService.getById(streetId); + systemUser.setStreet(comStreet.getName()); + } + Long communityId = systemUser.getCommunityId(); + if (communityId != null){ + ComAct act = comActService.getById(communityId); + systemUser.setCommunity(act.getName()); + } + + systemUser.setStatus(1); systemUser.setCreateTime(LocalDateTime.now()); systemUserService.updateById(systemUser); + // 移除原来层级 在添加新层级 + systemUserLevelService.remove(new LambdaQueryWrapper<SystemUserLevel>().eq(SystemUserLevel::getSystemUserId, systemUser.getId())); + systemUserLevels.forEach(e->{ + e.setSystemUserId(systemUser.getId()); + e.setStatus(1); + }); + systemUserLevelService.saveBatch(systemUserLevels); + + return R.ok(); } - - + + @DeleteMapping("/delete/{id}") @ApiOperation(value = "删除人员", tags = {"三个身边后台-人员管理"}) - @OperLog(operModul = "三个身边后台",operType = 3,businessType = "删除人员") + @SysLog(operatorCategory = "删除账号",operId = 4) public R delete(@PathVariable("id") Integer id){ SystemUser systemUser = systemUserService.getById(id); systemUser.setStatus(3); systemUserService.updateById(systemUser); - return R.ok(); + systemUserLevelService.update(new LambdaUpdateWrapper<SystemUserLevel>().eq(SystemUserLevel::getSystemUserId, id).set(SystemUserLevel::getStatus,3)); + return R.ok(systemUser.getName()); } - - + + @GetMapping("/getSystemUserInfo/{id}") @ApiOperation(value = "查询人员详情", tags = {"三个身边后台-人员管理"}) @OperLog(operModul = "三个身边后台",operType = 0,businessType = "查询人员详情") public R<SystemUser> getSystemUserInfo(@PathVariable("id") Integer id){ SystemUser systemUser = systemUserService.getById(id); + List<SystemUserLevel> listBySystemUserId = systemUserLevelService.getListBySystemUserId(id); + listBySystemUserId.sort(Comparator.comparing(SystemUserLevel::getLevel)); + systemUser.setSystemUserLevels(listBySystemUserId); return R.ok(systemUser); } - - + + @PutMapping("/freeze/{id}") @ApiOperation(value = "冻结账号", tags = {"三个身边后台-人员管理"}) - @OperLog(operModul = "三个身边后台",operType = 0,businessType = "冻结账号") + @OperLog(operModul = "三个身边后台",operType = 2,businessType = "冻结账号") public R freeze(@PathVariable("id") Integer id){ SystemUser systemUser = systemUserService.getById(id); if(2 == systemUser.getStatus()){ @@ -207,11 +354,11 @@ systemUserService.updateById(systemUser); return R.ok(); } - - + + @PutMapping("/unfreeze/{id}") @ApiOperation(value = "解冻账号", tags = {"三个身边后台-人员管理"}) - @OperLog(operModul = "三个身边后台",operType = 0,businessType = "解冻账号") + @OperLog(operModul = "三个身边后台",operType = 2,businessType = "解冻账号") public R unfreeze(@PathVariable("id") Integer id){ SystemUser systemUser = systemUserService.getById(id); if(1 == systemUser.getStatus()){ @@ -221,8 +368,8 @@ systemUserService.updateById(systemUser); return R.ok(); } - - + + /** * 根据用户id获取信息 * @param id @@ -243,4 +390,126 @@ BeanUtils.copyProperties(systemUser, systemUserVo); return R.ok(systemUserVo); } + + + + @GetMapping("/getAdministrativeDivision/{id}/{tier}") + @ApiOperation(value = "获取行政区划层级联动数据", tags = {"三个身边后台-人员管理"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "上级id", required = false, dataType = "string"), + @ApiImplicitParam(name = "tier", value = "数据层级(2=区县,3=街道,4=社区)", required = true, dataType = "int"), + }) + @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取行政区划层级联动数据") + public R<List<RegionVO>> getAdministrativeDivision(@PathVariable("id") String id, @PathVariable("tier") Integer tier){ + List<RegionVO> list = new ArrayList<>(); + //区县 + if(2 == tier){ + list = systemUserService.getRegion("510400"); + } + //街道 + if(3 == tier){ + list = systemUserService.getStreet(id); + } + //社区 + if(4 == tier){ + list = systemUserService.getCommunity(id); + } + log.info("获取行政区划层级联动数据:{}", list); + return R.ok(list); + } + + + @GetMapping("/getAdministrativeDivisionTwo") + @ApiOperation(value = "获取行政区划层级联动数据--2.0.1", tags = {"三个身边后台-人员管理"}) + @ApiImplicitParams({ + }) + @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取行政区划层级联动数据--2.0.1") + public R<ArrayList<RegionVO>> getAdministrativeDivisionTwo(){ + ArrayList<RegionVO> regionVOS = new ArrayList<>(); + + regionVOS.add(new RegionVO("1","市",new ArrayList<>(),1)); + List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getDeleteFlag, 0)); + ArrayList<RegionVO> regionList = new ArrayList<>(); + list.forEach(e->{ + RegionVO regionVO = new RegionVO(); + regionVO.setId(e.getRegionCode()); + regionVO.setName(e.getRegionName()); + regionVO.setTier(2); + regionList.add(regionVO); + }); + regionVOS.add(new RegionVO("2","区县",regionList,2)); + List<ComStreet> list1 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().in(ComStreet::getAreaCode, regionList.stream().map(RegionVO::getId).collect(Collectors.toList()))); + + for (RegionVO regionVO : regionList) { + ArrayList<RegionVO> list2 = new ArrayList<>(); + List<ComStreet> collect = list1.stream().filter(e -> e.getAreaCode().toString().equals(regionVO.getId())).collect(Collectors.toList()); + collect.forEach(e->{ + RegionVO regionVO1 = new RegionVO(); + regionVO1.setId(e.getStreetId()); + regionVO1.setName(e.getName()); + regionVO1.setTier(3); + list2.add(regionVO1); + }); + regionVO.setChildren(list2); + } + regionVOS.add(new RegionVO("3","街道",regionList,3)); + List<ComAct> list2 = comActService.list(); + + for (RegionVO regionVO : regionList) { + List<RegionVO> children = regionVO.getChildren(); + for (RegionVO child : children) { + List<ComAct> collect = list2.stream().filter(e -> e.getStreetId().toString().equals(child.getId())).collect(Collectors.toList()); + ArrayList<RegionVO> list3 = new ArrayList<>(); + collect.forEach(e->{ + RegionVO regionVO2 = new RegionVO(); + regionVO2.setId(e.getCommunityId().toString()); + regionVO2.setName(e.getName()); + regionVO2.setTier(4); + list3.add(regionVO2); + }); + child.setChildren(list3); + } + } + regionVOS.add(new RegionVO("4","社区",regionList,4)); + return R.ok(regionVOS); + } + + + + @GetMapping("/regionTree") + @ApiOperation(value = "获取区县-街道-社区树",tags = {"三个身边后台-人员管理"}) + public R<List<RegionVO>> regionTree(){ + SystemUserVo loginUserInfo = getLoginUserInfoSanGeShenBian(); + List<RegionVO> list = systemUserService.getRegionTree(loginUserInfo); + return R.ok(list); + } + + + @GetMapping("/getSignature") + @ApiOperation(value = "获取签名",tags = {"三个身边小程序"}) + public R<?> getSignature() throws Exception { + String APP_ID = "wx118de8a734d269f0"; + String APP_SECRET = "0264342daefde5cd70a6adada09ee5b1"; + String accessToken = SignatureUtil.getAccessToken(APP_ID, APP_SECRET); + String jsapiTicket = SignatureUtil.getJsApiTicket(accessToken); + String nonceStr = UUID.randomUUID().toString().replace("-", ""); + String timestamp = String.valueOf(System.currentTimeMillis() / 1000); +// String url = "https://huacheng.psciio.com/web/sangeshenbian/"; // 当前页面的URL,不包含#及其后面部分 + String url = "http://192.168.110.91:8080/#/pages/Appeal/Appeal/"; // 当前页面的URL,不包含#及其后面部分 + + String signature = SignatureUtil.getSignature(jsapiTicket, nonceStr, timestamp, url); + + System.out.println("appId: " + APP_ID); + System.out.println("timestamp: " + timestamp); + System.out.println("nonceStr: " + nonceStr); + System.out.println("signature: " + signature); + SignatureVO signatureVO = new SignatureVO(); + signatureVO.setTimestamp(timestamp); + signatureVO.setNonceStr(nonceStr); + signatureVO.setSignature(signature); + return R.ok(signatureVO); + } + + + } -- Gitblit v1.7.1