| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | * @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); |
| | |
| | | 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<>(); |
| | |
| | | } |
| | | return R.ok(tokenVo); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @PostMapping("logout") |
| | | @ApiOperation(value = "退出登录", tags = {"三个身边后台-登录"}) |
| | | @OperLog(operModul = "三个身边后台",operType = 0,businessType = "退出登录") |
| | |
| | | } |
| | | return tokenService.logout(token); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @GetMapping("/list") |
| | | @ApiOperation(value = "获取列表数据", tags = {"三个身边管理后台-人员管理"}) |
| | | @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取人员管理列表数据") |
| | |
| | | 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("不能添加市级账号"); |
| | | } |
| | |
| | | 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 = 2,businessType = "冻结账号") |
| | |
| | | systemUserService.updateById(systemUser); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @PutMapping("/unfreeze/{id}") |
| | | @ApiOperation(value = "解冻账号", tags = {"三个身边后台-人员管理"}) |
| | | @OperLog(operModul = "三个身边后台",operType = 2,businessType = "解冻账号") |
| | |
| | | systemUserService.updateById(systemUser); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据用户id获取信息 |
| | | * @param id |
| | |
| | | BeanUtils.copyProperties(systemUser, systemUserVo); |
| | | return R.ok(systemUserVo); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @GetMapping("/getAdministrativeDivision/{id}/{tier}") |
| | | @ApiOperation(value = "获取行政区划层级联动数据", tags = {"三个身边后台-人员管理"}) |
| | | @ApiImplicitParams({ |
| | |
| | | @ApiImplicitParam(name = "tier", value = "数据层级(2=区县,3=街道,4=社区)", required = true, dataType = "int"), |
| | | }) |
| | | @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取行政区划层级联动数据") |
| | | public R<List<Map<String, String>>> getAdministrativeDivision(@PathVariable("id") String id, @PathVariable("tier") Integer tier){ |
| | | List<Map<String, String>> list = new ArrayList<>(); |
| | | 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(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); |
| | | } |
| | | |
| | | |
| | | |
| | | } |