From 35168aa5267f61747fe4dbb4a35f0e1a7bdbd7e1 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 18 三月 2025 21:33:40 +0800
Subject: [PATCH] Merge remote-tracking branch '喜望/dev-2.0' into dev-2.0
---
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java | 273 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 226 insertions(+), 47 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..2692efd 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,5 +1,10 @@
package com.panzhihua.sangeshenbian.api;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
@@ -8,28 +13,34 @@
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.common.utlis.HttpClientUtil;
+import com.panzhihua.common.utlis.ServletUtils;
+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.codec.digest.DigestUtils;
+import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.security.MessageDigest;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
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,31 +49,39 @@
* @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;
+
+
+
+
+
@PostMapping("/login")
@ApiOperation(value = "登录", tags = {"三个身边后台-登录"})
@OperLog(operModul = "三个身边后台",operType = 0,businessType = "登录")
@@ -96,19 +115,79 @@
LoginReturnVO loginReturnVO = reult.getData();
TokenVo tokenVo = new TokenVo();
BeanUtils.copyProperties(loginReturnVO, tokenVo);
+
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,20 +198,20 @@
}
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 = "添加人员")
@@ -152,13 +231,32 @@
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.save(systemUser);
return R.ok();
}
-
-
+
+
@PostMapping("/edit")
@ApiOperation(value = "编辑人员", tags = {"三个身边后台-人员管理"})
@OperLog(operModul = "三个身边后台",operType = 2,businessType = "编辑人员")
@@ -168,13 +266,32 @@
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);
return R.ok();
}
-
-
+
+
@DeleteMapping("/delete/{id}")
@ApiOperation(value = "删除人员", tags = {"三个身边后台-人员管理"})
@OperLog(operModul = "三个身边后台",operType = 3,businessType = "删除人员")
@@ -184,8 +301,8 @@
systemUserService.updateById(systemUser);
return R.ok();
}
-
-
+
+
@GetMapping("/getSystemUserInfo/{id}")
@ApiOperation(value = "查询人员详情", tags = {"三个身边后台-人员管理"})
@OperLog(operModul = "三个身边后台",operType = 0,businessType = "查询人员详情")
@@ -193,11 +310,11 @@
SystemUser systemUser = systemUserService.getById(id);
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 +324,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 +338,8 @@
systemUserService.updateById(systemUser);
return R.ok();
}
-
-
+
+
/**
* 根据用户id获取信息
* @param id
@@ -243,4 +360,66 @@
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("/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 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