Explorar o código

feat: get user inf by code

shc hai 1 ano
pai
achega
584236bd8c

+ 78 - 57
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -716,53 +716,46 @@ public class ApiController {
 	 */
 	@GetMapping("/getUserInfoByCode")
 	public R<Map<String, Object>> getUserInfo(String code, String avatar) {
-
-		Map<String, Object> result = new HashMap<>(6);
+		Map<String, Object> result = new HashMap<>();
 
 		//获取用户基本信息
 		HnqzUser hnqzUser = SecurityUtils.getUser();
-
-		// 校验账户信息
 		UserDTO userDTO = new UserDTO();
 		userDTO.setPlatId(hnqzUser.getPlatId());
 		List<UserVO> sysUserList = sysUserService.getUserVoByPlatId(userDTO);
+
 		if (CollUtil.isEmpty(sysUserList)) {
 			return R.failed("账号信息异常,请联系管理员");
 		}
 
-		// 获取用户ID
-		Set<Integer> uIds = sysUserList.stream().mapToInt(UserVO::getUserId).boxed().collect(Collectors.toSet());
-
-		// 获取会员已结算信息和和待结算信息
-		List<WmScorePackageStatus> packageStatuses = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
-				.in(WmScorePackageStatus::getUserId, uIds)
-				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
-		Set<String> pkgIds = packageStatuses.stream().map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
-
-		List<WmScorePackage> packages = null;
-		if (CollUtil.isNotEmpty(pkgIds)) {
-			packages = wmScorePackageService.listByIds(pkgIds);
-		}
-
-		// 获取企业集合 && csm &&  获取药企和代理商列表
-		Map<Integer, SysDept> deptMap = sysDeptService.list().stream().collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
-
-		Map<Integer, List<SysDeptCsm>> csmMap = null;
-		if (CollUtil.isNotEmpty(deptMap)) {
-			// 获取csm信息
-			List<SysDeptCsm> deptCsms = deptCsmService.list(Wrappers.<SysDeptCsm>lambdaQuery().in(SysDeptCsm::getDeptId, deptMap.keySet()));
-			csmMap = deptCsms.stream().collect(Collectors.groupingBy(SysDeptCsm::getDeptId));
+		SysUser u = sysUserService.getById(hnqzUser.getId());
+		if (StrUtil.isBlank(u.getWxOpenid()) || StrUtil.isBlank(u.getAvatar())) {
+			SysUser updateU = new SysUser();
+			// 获取小程序openid
+			updateU.setUserId(u.getUserId());
+			if (StrUtil.isBlank(u.getWxOpenid())) {
+				Map<String, Object> opemMap = GetOpenIDUtil.oauth2GetOpenid(code, upmsConfig.getWechatEnv());
+				log.info("opemMap: {}", opemMap);
+				if (MapUtil.isNotEmpty(opemMap)) {
+					String openid = (String) opemMap.get("openid");
+					updateU.setWxOpenid(openid);
+				}
+			}
+			// avatar头像
+			if (StrUtil.isBlank(u.getAvatar())) {
+				updateU.setAvatar(avatar);
+			}
+			updateU.setUpdateTime(LocalDateTime.now());
+			sysUserService.updateById(updateU);
 		}
-		Map<String, WmDaDrugEnt> drugEntMap = wmDaDrugEntService.list().stream().collect(Collectors.toMap(WmDaDrugEnt::getDeptId, Function.identity()));
-		Map<String, List<WmDaAgent>> agentMap = wmDaAgentService.list().stream().collect(Collectors.groupingBy(WmDaAgent::getDeptId));
-
 
 		List<Integer> roleList = new ArrayList<>();
-		List<Map<String, Object>> list = new ArrayList<>(sysUserList.size());
 
+		List<Map<String, Object>> list = new ArrayList<>(sysUserList.size());
 		for (UserVO sysU : sysUserList) {
-			Map<String, Object> mapOne = new HashMap<>(60);
-			mapOne.put("userId", sysU.getUserId());
+
+			Map<String, Object> mapOne = new HashMap<>();
+			mapOne.put("userId", sysU.getUserId().toString());
 			mapOne.put("realname", sysU.getRealname());
 			mapOne.put("phone", sysU.getPhone());
 			mapOne.put("idCardNumber", sysU.getIdCardNumber());
@@ -771,19 +764,23 @@ public class ApiController {
 			mapOne.put("userSign", sysU.getUserSign());
 			mapOne.put("certRemark", sysU.getCertRemark());
 			mapOne.put("taxHelperAgreementSignature", sysU.getTaxHelperAgreementSignature());
-			mapOne.put("avatar", StrUtil.isBlank(sysU.getAvatar()) ? avatar : sysU.getAvatar());
 			mapOne.put("bankCardNumber", sysU.getBankCardNumber());
 			mapOne.put("bankPhone", sysU.getBankPhone());
 			mapOne.put("bankName", sysU.getBankName());
-			mapOne.put("temp1", String.valueOf(sysU.getTemp1()));
-			mapOne.put("temp2", String.valueOf(sysU.getTemp2()));
-			mapOne.put("temp3", String.valueOf(sysU.getTemp3()));
-			mapOne.put("temp4", String.valueOf(sysU.getTemp4()));
-			mapOne.put("temp5", String.valueOf(sysU.getTemp5()));
+
+			// 获取会员已结算信息和和待结算信息
+			List<WmScorePackageStatus> packageStatuses = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+					.eq(WmScorePackageStatus::getUserId, sysU.getUserId())
+					.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
+
+			List<String> ids = packageStatuses.stream().map(WmScorePackageStatus::getPackageId).collect(Collectors.toList());
+
 
 			int paid = 0;
 			int unpaid = 0;
-			if (CollUtil.isNotEmpty(packages)) {
+			if (CollUtil.isNotEmpty(ids)) {
+				List<WmScorePackage> packages = wmScorePackageService.listByIds(ids);
+
 				// 已结算
 				paid = packages.stream()
 						.filter(pkg -> PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID.getSettleStatus().equals(String.valueOf(pkg.getSettleStatus())))
@@ -807,33 +804,60 @@ public class ApiController {
 				mapOne.put("userNewFlag", true);
 			}
 
-			// 获取部门信息 && 获取csm信息 && 管理者
-			Integer deptId = sysU.getDeptId();
-			SysDept sysDept = deptMap.get(deptId);
-			SysDeptCsm deptCsm = CollUtil.isNotEmpty(csmMap) ? csmMap.get(deptId) == null ? null : csmMap.get(deptId).get(0) : null;
-			mapOne.put("deptId", deptId);
+			if (StrUtil.isBlank(sysU.getAvatar())) {
+				mapOne.put("avatar", avatar);
+				SysUser sysUser2 = sysUserService.getById(sysU.getUserId());
+				sysUser2.setAvatar(avatar);
+				sysUserService.updateById(sysUser2);
+			} else {
+				mapOne.put("avatar", sysU.getAvatar());
+			}
+
+			// 获取部门信息
+			SysDept sysDept = sysDeptService.getById(sysU.getDeptId());
+			mapOne.put("deptId", sysDept.getDeptId().toString());
 			mapOne.put("deptName", sysDept.getName());
+
+			// 获取csm信息
+			SysDeptCsm deptCsm = deptCsmService.getOne(Wrappers.<SysDeptCsm>lambdaQuery().eq(SysDeptCsm::getDeptId, sysU.getDeptId()));
 			mapOne.put("csm", deptCsm);
 
-			String management = (sysDept.getLevel() == 2) ? drugEntMap.get(deptId.toString()).getManagement() : agentMap.get(deptId.toString()).get(0).getManagement();
-			mapOne.put("management", management);
+			String management;
+			if (sysDept.getLevel() == 2) {
+				WmDaDrugEnt drugEnt = wmDaDrugEntService.selectByDeptId(sysDept.getDeptId());
+				mapOne.put("management", drugEnt.getManagement());
+				management = drugEnt.getManagement();
+			} else {
+				WmDaAgent agent = wmDaAgentService.selectByDeptId(sysDept.getDeptId());
+				mapOne.put("management", agent.getManagement());
+				management = agent.getManagement();
+			}
 
 			// 小程序角色:5-全职学术信息沟通专员, 6-兼职学术信息沟通专员, 10-兼职CRC, 13-HCP, 31-招商经理
 			List<Integer> roleIdList =
 					sysU.getRoleList().stream()
-							.filter(item -> item.getRoleId() == 5 || item.getRoleId() == 6 || item.getRoleId() == 10 || item.getRoleId() == 13 || item.getRoleId() == 31)
+							.filter(item -> item.getRoleId() == 5 || item.getRoleId() == 6 || item.getRoleId() == 10
+									|| item.getRoleId() == 13 || item.getRoleId() == 31)
 							.map(SysRole::getRoleId).collect(Collectors.toList());
 
-			mapOne.put("roles", roleIdList);
-			boolean managementFlag = ("2".equals(management) && roleIdList.contains(5)) || ("3".equals(management) && (roleIdList.contains(6) || roleIdList.contains(10))) || ("4".equals(management));
+			boolean managementFlag = ("2".equals(management) && roleIdList.contains(5))
+					|| ("3".equals(management) && (roleIdList.contains(6) || roleIdList.contains(10)))
+					|| ("4".equals(management));
 			mapOne.put("managementFlag", managementFlag);
 
-			WmDaDrugEnt wmDaDrugEnt = drugEntMap.get(sysU.getDrugEntId());
+			WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntService.getById(sysU.getDrugEntId());
 			if (null != wmDaDrugEnt) {
 				mapOne.put("drugEntId", wmDaDrugEnt.getId());
 				mapOne.put("drugEntName", wmDaDrugEnt.getEntname());
 			}
 
+			mapOne.put("roles", roleIdList);
+			mapOne.put("temp1", String.valueOf(sysU.getTemp1()));
+			mapOne.put("temp2", String.valueOf(sysU.getTemp2()));
+			mapOne.put("temp3", String.valueOf(sysU.getTemp3()));
+			mapOne.put("temp4", String.valueOf(sysU.getTemp4()));
+			mapOne.put("temp5", String.valueOf(sysU.getTemp5()));
+
 			// 查询待审核包
 			List<WmScorePackageStatus> statusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
 					.eq(WmScorePackageStatus::getUserId, String.valueOf(sysU.getUserId()))
@@ -844,10 +868,11 @@ public class ApiController {
 
 			long onTheWay = 0;
 			long waitApprove = statusList.stream().filter(item -> "1".equals(item.getStatus())).count();
-			Set<String> packageIds = statusList.stream().filter(item -> "2".equals(item.getStatus())).map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
+
+			Set<String> pkgIds = statusList.stream().filter(item -> "2".equals(item.getStatus())).map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
 			List<Map<String, Object>> listMap;
-			if (CollUtil.isNotEmpty(packageIds)) {
-				List<WmScorePackage> pkgs = wmScorePackageService.listByIds(packageIds);
+			if (CollUtil.isNotEmpty(pkgIds)) {
+				List<WmScorePackage> pkgs = wmScorePackageService.listByIds(pkgIds);
 				listMap = pkgs.stream().map(pkg -> {
 					Map<String, Object> map = new HashMap<>(2);
 					map.put("label", pkg.getScorePackageName());
@@ -969,10 +994,6 @@ public class ApiController {
 		result.put("sumCount", 0);
 		result.put("taskProgress", 0);
 
-
-		// 更新用户的openID和头像
-		ThreadUtil.execAsync(() -> this.updateUserOpenIdAndAvatar(hnqzUser.getId(), code, avatar));
-
 		return R.ok(result);
 	}