提交 e703cf5c 编写于 作者: tao.jin's avatar tao.jin

Merge branch 'release' into 'master'

Release

See merge request !109
流水线 #45017 已失败 于阶段
......@@ -11,7 +11,7 @@
<groupId>com.pica.cloud.account</groupId>
<artifactId>pica-cloud-account-client</artifactId>
<version>1.0.8</version>
<version>1.1.1</version>
<name>pica-cloud-account-client</name>
<packaging>jar</packaging>
......@@ -28,7 +28,7 @@
<dependency>
<groupId>com.pica.cloud.account</groupId>
<artifactId>pica-cloud-account-common</artifactId>
<version>1.0.8</version>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
......
package com.pica.cloud.account.account.client;
import com.pica.cloud.account.account.common.dto.CancelAccountDto;
import com.pica.cloud.account.account.common.dto.QueryDoctorRole;
import com.pica.cloud.foundation.entity.PicaResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -16,4 +17,7 @@ public interface AccountDoctorClient {
@PostMapping("/account/doctor/cancel/account")
PicaResponse<Void> cancelAccountByDoctorId(@RequestBody CancelAccountDto cancelAccountDto, @RequestHeader(value = "token") String token);
@PostMapping("/account/doctor/queryDoctorExistRole")
PicaResponse<Boolean> queryDoctorExistRole(@RequestBody QueryDoctorRole req);
}
......@@ -11,7 +11,7 @@
<groupId>com.pica.cloud.account</groupId>
<artifactId>pica-cloud-account-common</artifactId>
<version>1.1.0</version>
<version>1.1.1</version>
<name>pica-cloud-account-common</name>
<packaging>jar</packaging>
......
package com.pica.cloud.account.account.common.dto;
import io.swagger.annotations.ApiModelProperty;
/**
* @ClassName QueryDoctorMainRole
* @Description
* @Author wenlei.liao
* @Date 2022/4/11 16:52
*/
public class QueryDoctorRole {
@ApiModelProperty("机构id")
private Long hospitalId;
@ApiModelProperty("医生id")
private Long doctorId;
@ApiModelProperty("角色id")
private Long roleId;
public Long getHospitalId() {
return hospitalId;
}
public void setHospitalId(Long hospitalId) {
this.hospitalId = hospitalId;
}
public Long getDoctorId() {
return doctorId;
}
public void setDoctorId(Long doctorId) {
this.doctorId = doctorId;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
}
......@@ -167,7 +167,7 @@
<dependency>
<groupId>com.pica.cloud.account</groupId>
<artifactId>pica-cloud-account-common</artifactId>
<version>1.1.0</version>
<version>1.1.1</version>
</dependency>
<dependency>
......@@ -227,7 +227,7 @@
<dependency>
<groupId>com.pica.cloud.tag</groupId>
<artifactId>pica-cloud-transport-client</artifactId>
<version>1.0.5</version>
<version>1.0.6</version>
</dependency>
<!-- apple identifyToken校验 -->
......
package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.common.dto.CancelAccountDto;
import com.pica.cloud.account.account.common.dto.QueryDoctorRole;
import com.pica.cloud.account.account.server.entity.AccountUser;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
......@@ -120,4 +121,11 @@ public class DoctorController extends AccountBaseController {
doctorService.cancelAccountByDoctorId(cancelAccountDto, super.fetchPicaUser());
return PicaResponse.toResponse();
}
@ApiOperation(value = "查询医生是否存在机构角色")
@PostMapping("/queryDoctorExistRole")
public PicaResponse<Boolean> queryDoctorExistRole(@RequestBody QueryDoctorRole req) {
Boolean existMainRole = doctorService.queryDoctorExistRole(req);
return PicaResponse.toResponse(existMainRole);
}
}
......@@ -39,8 +39,7 @@ public class HospitalSaasUserController extends AccountBaseController {
@EnabledLoginValidate
public PicaResponse<Integer> register(@RequestBody HospitalSaasUserReq req, @RequestHeader("token") String token) {
logger.info("register: url:/saas/hospital/register. start: {}", JSON.toJSONString(req));
Long doctorId = super.getDoctorIdByToken();
return PicaResponse.toResponse(hospitalSaasUserService.register(req, doctorId));
return PicaResponse.toResponse(hospitalSaasUserService.register(req, super.fetchPicaUser()));
}
@ApiOperation("机构saas平台人员更新 0失败 1成功")
......@@ -48,8 +47,7 @@ public class HospitalSaasUserController extends AccountBaseController {
@EnabledLoginValidate
public PicaResponse<Integer> upsert(@RequestBody HospitalSaasUserReq req) {
logger.info("upsert: url:/saas/hospital/upsert. start: {}", JSON.toJSONString(req));
Long doctorId = super.getDoctorIdByToken();
return PicaResponse.toResponse(hospitalSaasUserService.upsert(req,doctorId));
return PicaResponse.toResponse(hospitalSaasUserService.upsert(req, super.fetchPicaUser()));
}
@ApiOperation("机构saas平台人员列表查询")
......
......@@ -43,4 +43,8 @@ public interface PermissionDoctorRoleMapper {
PermissionDoctorRole selectByHospitalIdRoleId(@Param("hospitalId") Integer hospitalId, @Param("roleId") Integer roleId);
int batchInsert(List<PermissionDoctorRole> list);
Integer checkIsSaas(@Param("doctorId") Long doctorId);
PermissionDoctorRole selectByIdCondition(@Param("doctorId") Long doctorId,@Param("hospitalId") Long hospitalId, @Param("roleId") Long roleId);
}
\ No newline at end of file
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.common.dto.CancelAccountDto;
import com.pica.cloud.account.account.common.dto.QueryDoctorRole;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.req.DoctorReq;
import com.pica.cloud.foundation.utils.entity.PicaUser;
......@@ -64,4 +65,5 @@ public interface DoctorService {
void cancelAccountByDoctorId(CancelAccountDto cancelAccountDto, PicaUser fetchPicaUser);
Boolean queryDoctorExistRole(QueryDoctorRole req);
}
// Copyright 2016-2101 Pica.
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.req.HospitalSaasUserListReq;
import com.pica.cloud.account.account.server.req.HospitalSaasUserReq;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserDetailResp;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserEditResp;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserResp;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import java.util.List;
/**
* @Author Pica
* @Date 2022/3/1 15:50
*/
public interface HospitalSaasUserService {
int register(HospitalSaasUserReq baseRequest, Long doctorId);
int register(HospitalSaasUserReq baseRequest, PicaUser picaUser);
HospitalSaasUserResp listByPage(HospitalSaasUserListReq req);
int upsert(HospitalSaasUserReq req, Long doctorId);
int upsert(HospitalSaasUserReq req, PicaUser picaUser);
int delete(Long id);
......
......@@ -4,11 +4,9 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.pica.cloud.account.account.common.dto.CancelAccountDto;
import com.pica.cloud.account.account.common.dto.QueryDoctorRole;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.AccountInfoEntity;
import com.pica.cloud.account.account.server.entity.CancelAccountLog;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.entity.DoctorEducation;
import com.pica.cloud.account.account.server.entity.*;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.exception.AccountException;
......@@ -68,6 +66,9 @@ public class DoctorServiceImpl implements DoctorService {
@Autowired
private CancelAccountLogMapper cancelAccountLogMapper;
@Autowired
private PermissionDoctorRoleMapper permissionDoctorRoleMapper;
@Autowired
private ICacheClient cacheClient;
@Autowired
......@@ -363,6 +364,14 @@ public class DoctorServiceImpl implements DoctorService {
simpleProducer.send(kafkaSendTopic, kafkaModel);
}
@Override
public Boolean queryDoctorExistRole(QueryDoctorRole req) {
logger.info("queryDoctorExistRole请求参数:{}",JSONObject.toJSONString(req));
PermissionDoctorRole role = permissionDoctorRoleMapper.selectByIdCondition(req.getDoctorId(), req.getHospitalId(), req.getRoleId());
logger.info("queryDoctorExistRole 返回结果:{}",JSONObject.toJSONString(role));
return role != null ? true : false;
}
private void checkResponse(String checkExecute) {
PicaResponse checkResponse = JSON.parseObject(checkExecute, PicaResponse.class);
if (!checkResponse.getCode().equals(PicaResultCode.SUCCESS.code())) {
......
......@@ -2,6 +2,7 @@
package com.pica.cloud.account.account.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.*;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
......@@ -19,10 +20,13 @@ import com.pica.cloud.account.account.server.util.ExecutorServiceUtils;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.entity.PicaResultCode;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.foundation.utils.utils.MD5Util;
import com.pica.cloud.tag.transport.client.ITransportDoctorClient;
import com.pica.cloud.tag.transport.contract.req.StickerProfileDto;
import com.pica.cloud.trade.store.client.StoreCertifyServiceClient;
import com.pica.cloud.trade.store.resp.certify.StoreCertifyStatus;
import org.apache.commons.collections.CollectionUtils;
......@@ -30,10 +34,12 @@ import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
......@@ -70,10 +76,15 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
private PasswordService passwordService;
@Autowired
private RegisterService registerService;
@Autowired
private ITransportDoctorClient iTransportDoctorClient;
@Value("${saas.sticker.id}")
private Integer saasStickerId;
@Override
@Transactional
public int register(HospitalSaasUserReq req, Long doctorId) {
public int register(HospitalSaasUserReq req, PicaUser picaUser) {
req.checkInsertParams();
if (req.getRoleId().contains(SaasRoleEnum.SAAS_MAIN_ADMIN.getCode())) {
PermissionDoctorRole existRole = doctorRoleMapper.selectByHospitalIdRoleId(req.getHospitalId(), SaasRoleEnum.SAAS_MAIN_ADMIN.getCode().intValue());
......@@ -126,6 +137,10 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
registerService.processRoleMap(account.getId());
insertSaasRole(req.getRoleId(), req.getHospitalId().longValue(), account.getId(), account.getId());
redisClient.del(nxKey);
//saas用户标签
CompletableFuture.runAsync(() -> this.refreshTag(account.getId(), picaUser.getToken()));
return 1;
}
//用户存在的处理逻辑 给出提示信息
......@@ -143,6 +158,7 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
String.format("该手机号已存在于\"%s\"中,如需修改请至云鹊医App中修改所属机构",hospital.getName()));
}
}
return 1;
}
......@@ -196,7 +212,7 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
}
@Override
public int upsert(HospitalSaasUserReq req, Long doctorId) {
public int upsert(HospitalSaasUserReq req, PicaUser picaUser) {
if (Objects.isNull(req) || Objects.isNull(req.getHospitalId()) || CollectionUtils.isEmpty(req.getRoleId())) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "参数错误");
}
......@@ -230,21 +246,27 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
Map<String, Object> map = new HashMap(3);
map.put("id", req.getId());
map.put("delRoleIdList", delRoleIdList);
map.put("modifiedId", doctorId);
map.put("modifiedId", picaUser.getId());
map.put("modifiedTime", new Date());
doctorRoleMapper.deleteByDoctorId(map);
if (!inputRoleIdList.contains(SaasRoleEnum.NULL_ROLE.getCode())) {
insertSaasRole(inputRoleIdList, req.getHospitalId().longValue(), req.getId(), doctorId);
} else if (inputRoleIdList.size() > 1) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "角色清除与其他角色添加不可以并存");
try {
if (!inputRoleIdList.contains(SaasRoleEnum.NULL_ROLE.getCode())) {
insertSaasRole(inputRoleIdList, req.getHospitalId().longValue(), req.getId(), picaUser.getId().longValue());
} else if (inputRoleIdList.size() > 1) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "角色清除与其他角色添加不可以并存");
}
} catch (PicaException picaException) {
throw picaException;
} finally {
this.refreshTag(req.getId(), picaUser.getToken());
}
}
/** 修改备注 */
Account account = new Account();
account.setId(req.getId());
account.setModifyId(doctorId);
account.setModifyId(picaUser.getId().longValue());
account.setModifyTime(Calendar.getInstance().getTime());
if (StringUtils.isNotEmpty(req.getComment())) {
account.setComment(req.getComment());
......@@ -269,6 +291,18 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
return 1;
}
/**更新用户 saas用户标签**/
private void refreshTag(Long id, String token) {
Integer flag = doctorRoleMapper.checkIsSaas(id);
String valueName = (Objects.nonNull(flag) && flag == 1) ? "是" : "否";
PicaResponse<Integer> response = iTransportDoctorClient.updateDoctorProfilesById(id.intValue(), Lists.newArrayList(new StickerProfileDto(saasStickerId, valueName)), UUID.randomUUID().toString(), token);
if (PicaResultCode.SUCCESS.code().equals(response.getCode()) && response.getData() > 0) {
logger.info("HospitalSaasUserServiceImpl.refreshTag updateDoctorProfilesById success: doctorId-{}", id);
} else {
logger.info("HospitalSaasUserServiceImpl.refreshTag updateDoctorProfilesById failed: doctorId-{}", id);
}
}
@Override
@Deprecated
public int delete(Long id) {
......
......@@ -80,4 +80,6 @@ pica.cloud.message.url=https://dev-sc.yunqueyi.com/message
pica.cloud.url=https://dev-sc.yunqueyi.com
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic-dev
\ No newline at end of file
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic-dev
saas.sticker.id=9530
\ No newline at end of file
......@@ -71,4 +71,6 @@ pica.cloud.message.url=https://sc.yunqueyi.com/message
pica.cloud.url=https://sc.yunqueyi.com
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
\ No newline at end of file
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
saas.sticker.id=9530
\ No newline at end of file
......@@ -75,3 +75,5 @@ pica.cloud.message.url=https://test1-sc.yunqueyi.com/message
pica.cloud.url=https://test1-sc.yunqueyi.com
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
saas.sticker.id=9530
\ No newline at end of file
......@@ -69,4 +69,6 @@ xxl.job.executor.logpath=/opt/xxl-job-logs/jobhandler
xxl.job.executor.logretentiondays=-1
pica.cloud.url=https://test2-sc.yunqueyi.com
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
\ No newline at end of file
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
saas.sticker.id=9530
\ No newline at end of file
......@@ -74,4 +74,6 @@ xxl.job.executor.logretentiondays=-1
pica.cloud.message.url=https://uat-sc.yunqueyi.com/message
pica.cloud.url=https://uat-sc.yunqueyi.com
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
\ No newline at end of file
kafka.doctor.change.result.topic=8090-11907-doctor-change-result-topic
saas.sticker.id=9530
\ No newline at end of file
......@@ -226,4 +226,25 @@
where pdr.doctor_id = #{id,jdbcType=BIGINT}
and pdr.delete_flag = 1
</select>
<select id="checkIsSaas" resultType="java.lang.Integer">
select 1
from permission_doctor_role as pdr
join permission_role as pr ON pdr.role_id = pr.id and pr.delete_flag = 1
where pdr.delete_flag = 1
and pr.role_code like 'saas_%'
and pdr.doctor_id = #{doctorId}
limit 1
</select>
<select id="selectByIdCondition" parameterType="java.lang.Long" resultMap="BaseResultMap">
SELECT pr.*
FROM permission_doctor_role pr
WHERE pr.hospital_id = #{hospitalId}
and pr.doctor_id = #{doctorId}
and pr.role_id = #{roleId}
AND pr.delete_flag = 1
order by pr.modified_time desc
limit 1
</select>
</mapper>
\ No newline at end of file
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.common.dto.QueryDoctorRole;
import com.pica.cloud.account.account.server.App;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @ClassName DoctorServiceTest
* @Description
* @Author wenlei.liao
* @Date 2022/4/11 17:00
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class DoctorServiceTest {
@Autowired
private DoctorService doctorService;
@Test
public void queryDoctorExistMainRoleTest() {
QueryDoctorRole req = new QueryDoctorRole();
req.setDoctorId(100925427l);
req.setHospitalId(12746l);
req.setRoleId(1l);
Boolean aBoolean = doctorService.queryDoctorExistRole(req);
System.out.println(aBoolean);
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册