|
@@ -1,12 +1,18 @@
|
|
|
package com.nb.app.assistant.auth;
|
|
package com.nb.app.assistant.auth;
|
|
|
|
|
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
+import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
|
|
|
|
|
+import com.nb.app.assistant.api.enums.BindEnum;
|
|
|
import com.nb.app.assistant.api.feign.result.AssistantUserResult;
|
|
import com.nb.app.assistant.api.feign.result.AssistantUserResult;
|
|
|
-import com.nb.app.assistant.controller.vo.AssistantUserVo;
|
|
|
|
|
|
|
+import com.nb.app.assistant.constant.UnEvalConstant;
|
|
|
|
|
+
|
|
|
|
|
+import com.nb.app.assistant.delay.UnEvalNotifyConfig;
|
|
|
import com.nb.app.assistant.entity.AssistantUserEntity;
|
|
import com.nb.app.assistant.entity.AssistantUserEntity;
|
|
|
|
|
+import com.nb.app.assistant.service.LocalAssistantUserBindService;
|
|
|
import com.nb.app.assistant.service.LocalAssistantUserService;
|
|
import com.nb.app.assistant.service.LocalAssistantUserService;
|
|
|
-import com.nb.app.doctor.api.entity.AppDoctorUserEntity;
|
|
|
|
|
|
|
+import com.nb.app.assistant.service.dto.AssistUserConfig;
|
|
|
import com.nb.auth.bean.LoginUser;
|
|
import com.nb.auth.bean.LoginUser;
|
|
|
import com.nb.auth.controller.vo.AccountInfoVO;
|
|
import com.nb.auth.controller.vo.AccountInfoVO;
|
|
|
import com.nb.auth.controller.vo.RouteItemVO;
|
|
import com.nb.auth.controller.vo.RouteItemVO;
|
|
@@ -14,13 +20,18 @@ import com.nb.auth.controller.vo.UserInfoVO;
|
|
|
import com.nb.auth.enums.GrantTypeEnum;
|
|
import com.nb.auth.enums.GrantTypeEnum;
|
|
|
import com.nb.auth.granter.IAccountOperator;
|
|
import com.nb.auth.granter.IAccountOperator;
|
|
|
import com.nb.auth.utils.SecurityUtil;
|
|
import com.nb.auth.utils.SecurityUtil;
|
|
|
|
|
+import com.nb.common.queue.delay.manager.DelayMessageManager;
|
|
|
|
|
+import com.nb.common.queue.delay.message.DelayMessage;
|
|
|
|
|
+import com.nb.common.queue.delay.message.DelayMessageProperties;
|
|
|
|
|
+import com.nb.core.Value;
|
|
|
import com.nb.core.exception.CustomException;
|
|
import com.nb.core.exception.CustomException;
|
|
|
|
|
+import com.nb.web.api.feign.IPatientClient;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Optional;
|
|
|
|
|
-import java.util.Set;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author lifang
|
|
* @author lifang
|
|
@@ -30,9 +41,13 @@ import java.util.Set;
|
|
|
* @createTime 2022年08月10日 10:52:00
|
|
* @createTime 2022年08月10日 10:52:00
|
|
|
*/
|
|
*/
|
|
|
@Component
|
|
@Component
|
|
|
|
|
+@Slf4j
|
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
|
-public class AppAssistantUserOperator implements IAccountOperator<AssistantUserResult> {
|
|
|
|
|
|
|
+public class AppAssistantUserOperator implements IAccountOperator<AssistUserConfig> {
|
|
|
private final LocalAssistantUserService userService;
|
|
private final LocalAssistantUserService userService;
|
|
|
|
|
+ private final LocalAssistantUserBindService assistantUserBindService;
|
|
|
|
|
+ private final DelayMessageManager delayMessageManager;
|
|
|
|
|
+ private final IPatientClient patientClient;
|
|
|
@Override
|
|
@Override
|
|
|
public boolean matchGrantType(GrantTypeEnum type) {
|
|
public boolean matchGrantType(GrantTypeEnum type) {
|
|
|
return GrantTypeEnum.APP_ASSISTANT_PASSWORD.equals(type)
|
|
return GrantTypeEnum.APP_ASSISTANT_PASSWORD.equals(type)
|
|
@@ -61,25 +76,52 @@ public class AppAssistantUserOperator implements IAccountOperator<AssistantUserR
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public AccountInfoVO<AssistantUserResult> getAccountInfo() {
|
|
|
|
|
|
|
+ public AccountInfoVO<AssistUserConfig> getAccountInfo() {
|
|
|
AssistantUserResult user = userService.getById(SecurityUtil.getStpLogic().getLoginIdAsString());
|
|
AssistantUserResult user = userService.getById(SecurityUtil.getStpLogic().getLoginIdAsString());
|
|
|
- AccountInfoVO<AssistantUserResult> result = new AccountInfoVO();
|
|
|
|
|
|
|
+ AccountInfoVO<AssistUserConfig> result = new AccountInfoVO();
|
|
|
result.setAvatar(user.getAvatar());
|
|
result.setAvatar(user.getAvatar());
|
|
|
result.setRealName(user.getNickname());
|
|
result.setRealName(user.getNickname());
|
|
|
result.setSex(user.getSex());
|
|
result.setSex(user.getSex());
|
|
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
|
|
+ map.put("unEvalNotify",user.getUnEvalNotify());
|
|
|
|
|
+ result.setExtendFields(map);
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public void saveAccountInfo(AccountInfoVO<AssistantUserResult> req) {
|
|
|
|
|
|
|
+ public void saveAccountInfo(AccountInfoVO<AssistUserConfig> req) {
|
|
|
LoginUser<String> loginUser = SecurityUtil.getLoginUser();
|
|
LoginUser<String> loginUser = SecurityUtil.getLoginUser();
|
|
|
AssistantUserEntity source = new AssistantUserEntity();
|
|
AssistantUserEntity source = new AssistantUserEntity();
|
|
|
source.setId(loginUser.getId());
|
|
source.setId(loginUser.getId());
|
|
|
source.setAvatar(req.getAvatar());
|
|
source.setAvatar(req.getAvatar());
|
|
|
source.setSex(req.getSex());
|
|
source.setSex(req.getSex());
|
|
|
source.setNickname(req.getRealName());
|
|
source.setNickname(req.getRealName());
|
|
|
- userService.updateById(source);
|
|
|
|
|
|
|
+ if(req.getExtendFields()!=null){
|
|
|
|
|
+ source.setUnEvalNotify(Value.simple(req.getExtendFields().get("unEvalNotify")).asBoolean());
|
|
|
|
|
+ }
|
|
|
|
|
+ boolean result = userService.updateById(source);
|
|
|
|
|
+ if(result&&Boolean.TRUE.equals(source.getUnEvalNotify())){
|
|
|
|
|
+ log.info("用户{}更新信息成功,并开启24小时未评通知服务");
|
|
|
|
|
+ List<AssistantUserBindEntity> assistantUserBinds = assistantUserBindService.list(new QueryWrapper<AssistantUserBindEntity>()
|
|
|
|
|
+ .lambda()
|
|
|
|
|
+ .eq(AssistantUserBindEntity::getAssistId, source.getId())
|
|
|
|
|
+ .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS));
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(assistantUserBinds)) {
|
|
|
|
|
+ assistantUserBinds.parallelStream()
|
|
|
|
|
+ .forEach(userBind->{
|
|
|
|
|
+ DelayMessage delayMessage = new DelayMessage(
|
|
|
|
|
+ Value.simple(
|
|
|
|
|
+ UnEvalNotifyConfig.of(userBind.getAssistId(),
|
|
|
|
|
+ patientClient.getClinicId(userBind.getPatientId()),
|
|
|
|
|
+ userBind.getPatientId())),
|
|
|
|
|
+ UnEvalConstant.DELAY_ID,
|
|
|
|
|
+ DelayMessageProperties.of(TimeUnit.HOURS, 24));
|
|
|
|
|
+ delayMessageManager.add(delayMessage);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|