Explorar el Código

pref: user get by code

shc hace 1 año
padre
commit
4082c02606

+ 94 - 101
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -9,6 +9,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.IdcardUtil;
@@ -242,6 +243,12 @@ public class ApiController {
 
 	private static final String[] RANDOM_QUIZ_URL = {"https://lit.yaoyi.net/s/785f65dc549b4b99b5a26da5b4dbcc15"};
 
+	/**
+	 * 通过任务类型获取表单配置
+	 *
+	 * @param taskTypeId 任务类型
+	 * @return 配置列表
+	 */
 	@SysLog("通过任务类型获取表单配置")
 	@GetMapping("/getTaskContentConfigByTaskTypeId/{taskTypeId}")
 	public R<?> getById(@PathVariable String taskTypeId) {
@@ -302,7 +309,7 @@ public class ApiController {
 				configMap.put("64", getTaskContentConfigByTaskTypeId("64"));
 				break;
 			case "801":
-				configMap.put("801", getTaskContentConfigByTaskTypeId("64"));
+				configMap.put("801", getTaskContentConfigByTaskTypeId("801"));
 				int random = new Random().nextInt(RANDOM_QUIZ_URL.length);
 				configMap.put("randomUrl", RANDOM_QUIZ_URL[random]);
 				break;
@@ -670,6 +677,36 @@ public class ApiController {
 		return R.ok(connfigMap);
 	}
 
+	/**
+	 * 更新用户信息(openId 和头像)
+	 *
+	 * @param uId      用户ID
+	 * @param authCode 授权码
+	 * @param avatar   头像
+	 */
+	private void updateUserOpenIdAndAvatar(Integer uId, String authCode, String avatar) {
+		SysUser u = sysUserService.getById(uId);
+		if (StrUtil.isBlank(u.getWxOpenid()) || StrUtil.isBlank(u.getAvatar())) {
+			SysUser updateU = new SysUser();
+			// 获取小程序openid
+			updateU.setUserId(uId);
+			if (StrUtil.isBlank(u.getWxOpenid())) {
+				Map<String, Object> openMap = GetOpenIDUtil.oauth2GetOpenid(authCode, upmsConfig.getWechatEnv());
+				log.info("openMap: {}", openMap);
+				if (MapUtil.isNotEmpty(openMap)) {
+					String openid = (String) openMap.get("openid");
+					updateU.setWxOpenid(openid);
+				}
+			}
+			// avatar头像
+			if (StrUtil.isBlank(u.getAvatar())) {
+				updateU.setAvatar(avatar);
+			}
+			updateU.setUpdateTime(LocalDateTime.now());
+			sysUserService.updateById(updateU);
+		}
+	}
+
 	/**
 	 * 用户信息-获取用户基本信息
 	 *
@@ -679,46 +716,58 @@ public class ApiController {
 	 */
 	@GetMapping("/getUserInfoByCode")
 	public R<Map<String, Object>> getUserInfo(String code, String avatar) {
-		Map<String, Object> result = new HashMap<>();
+
+		Map<String, Object> result = new HashMap<>(6);
 
 		//获取用户基本信息
 		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("账号信息异常,请联系管理员");
 		}
 
-		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);
+		// 获取用户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);
 		}
 
-		List<Integer> roleList = new ArrayList<>();
+		// 获取企业集合 && 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));
+		}
+		Map<String, WmDaDrugEnt> drugEntMap = wmDaDrugEntService.list().stream().collect(Collectors.toMap(WmDaDrugEnt::getDeptId, Function.identity()));
+		Map<String, WmDaAgent> agentMap = wmDaAgentService.list().stream().collect(Collectors.toMap(WmDaAgent::getDeptId, Function.identity()));
+
+
 
+
+
+
+
+		List<Integer> roleList = new ArrayList<>();
 		List<Map<String, Object>> list = new ArrayList<>(sysUserList.size());
-		for (UserVO sysU : sysUserList) {
 
-			Map<String, Object> mapOne = new HashMap<>();
-			mapOne.put("userId", sysU.getUserId().toString());
+		for (UserVO sysU : sysUserList) {
+			Map<String, Object> mapOne = new HashMap<>(60);
+			mapOne.put("userId", sysU.getUserId());
 			mapOne.put("realname", sysU.getRealname());
 			mapOne.put("phone", sysU.getPhone());
 			mapOne.put("idCardNumber", sysU.getIdCardNumber());
@@ -731,19 +780,9 @@ public class ApiController {
 			mapOne.put("bankPhone", sysU.getBankPhone());
 			mapOne.put("bankName", sysU.getBankName());
 
-			// 获取会员已结算信息和和待结算信息
-			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(ids)) {
-				List<WmScorePackage> packages = wmScorePackageService.listByIds(ids);
-
+			if (CollUtil.isNotEmpty(packages)) {
 				// 已结算
 				paid = packages.stream()
 						.filter(pkg -> PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID.getSettleStatus().equals(String.valueOf(pkg.getSettleStatus())))
@@ -767,48 +806,29 @@ public class ApiController {
 				mapOne.put("userNewFlag", true);
 			}
 
-			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());
-			}
+			mapOne.put("avatar", StrUtil.isBlank(sysU.getAvatar()) ? avatar : sysU.getAvatar());
 
-			// 获取部门信息
-			SysDept sysDept = sysDeptService.getById(sysU.getDeptId());
-			mapOne.put("deptId", sysDept.getDeptId().toString());
+			// 获取部门信息 && 获取csm信息 && 管理者
+			Integer deptId = sysU.getDeptId();
+			SysDept sysDept =deptMap.get(deptId);
+			SysDeptCsm deptCsm = CollUtil.isNotEmpty(csmMap) ? csmMap.get(deptId).get(0) : null;
+			mapOne.put("deptId", deptId);
 			mapOne.put("deptName", sysDept.getName());
-
-			// 获取csm信息
-			SysDeptCsm deptCsm = deptCsmService.getOne(Wrappers.<SysDeptCsm>lambdaQuery().eq(SysDeptCsm::getDeptId, sysU.getDeptId()));
 			mapOne.put("csm", deptCsm);
 
-			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();
-			}
+			String management = (sysDept.getLevel() == 2) ? drugEntMap.get(deptId.toString()).getManagement() : agentMap.get(deptId.toString()).getManagement();
+			mapOne.put("management", management);
 
 			// 小程序角色: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());
 
-			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 = wmDaDrugEntService.getById(sysU.getDrugEntId());
+			WmDaDrugEnt wmDaDrugEnt = drugEntMap.get(sysU.getDrugEntId());
 			if (null != wmDaDrugEnt) {
 				mapOne.put("drugEntId", wmDaDrugEnt.getId());
 				mapOne.put("drugEntName", wmDaDrugEnt.getEntname());
@@ -831,11 +851,10 @@ public class ApiController {
 
 			long onTheWay = 0;
 			long waitApprove = statusList.stream().filter(item -> "1".equals(item.getStatus())).count();
-
-			Set<String> pkgIds = statusList.stream().filter(item -> "2".equals(item.getStatus())).map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
+			Set<String> packageIds = statusList.stream().filter(item -> "2".equals(item.getStatus())).map(WmScorePackageStatus::getPackageId).collect(Collectors.toSet());
 			List<Map<String, Object>> listMap;
-			if (CollUtil.isNotEmpty(pkgIds)) {
-				List<WmScorePackage> pkgs = wmScorePackageService.listByIds(pkgIds);
+			if (CollUtil.isNotEmpty(packageIds)) {
+				List<WmScorePackage> pkgs = wmScorePackageService.listByIds(packageIds);
 				listMap = pkgs.stream().map(pkg -> {
 					Map<String, Object> map = new HashMap<>(2);
 					map.put("label", pkg.getScorePackageName());
@@ -957,6 +976,10 @@ public class ApiController {
 		result.put("sumCount", 0);
 		result.put("taskProgress", 0);
 
+
+		// 更新用户的openID和头像
+		ThreadUtil.execAsync(() -> this.updateUserOpenIdAndAvatar(hnqzUser.getId(), code,avatar));
+
 		return R.ok(result);
 	}
 
@@ -2675,36 +2698,6 @@ public class ApiController {
 	}
 
 
-	private LocalDateTime getLocalDateTime(String monthStr, String type) {
-		DateFormat format = new SimpleDateFormat("yyyy-MM");
-		DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
-
-		try {
-			Date date1 = format.parse(monthStr);
-			Instant instant = date1.toInstant();
-			ZoneId zoneId = ZoneId.systemDefault();
-			LocalDateTime date = instant.atZone(zoneId).toLocalDateTime();
-			LocalDateTime firstday = date.with(TemporalAdjusters.firstDayOfMonth());
-			LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth())
-					.withHour(23)
-					.withMinute(59)
-					.withSecond(59);
-
-			if ("start".equals(type)) {
-				return firstday;
-			} else {
-				return lastDay;
-			}
-
-		} catch (Exception ex) {
-
-		}
-
-		return null;
-
-	}
-
-
 	/**
 	 * 分页查询
 	 *