|
@@ -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;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 分页查询
|
|
|
*
|