提交 1e78adc0 编写于 作者: minghao.wu's avatar minghao.wu

feature: 注册账号

上级 71376863
流水线 #43226 已取消 于阶段
......@@ -8,6 +8,9 @@ public class CreateAccountReq {
@ApiModelProperty("机构id")
private Integer hospitalId;
@ApiModelProperty("机构名称")
private String hospitalName;
@ApiModelProperty("输入姓名")
private String doctorName;
......@@ -22,6 +25,14 @@ public class CreateAccountReq {
this.hospitalId = hospitalId;
}
public String getHospitalName() {
return hospitalName;
}
public void setHospitalName(String hospitalName) {
this.hospitalName = hospitalName;
}
public String getDoctorName() {
return doctorName;
}
......
......@@ -80,18 +80,6 @@ public class Account {
private Date birthday;
private Integer hospitalId;
private String hospital;
public Integer getHospitalId() {
return hospitalId;
}
public void setHospitalId(Integer hospitalId) {
this.hospitalId = hospitalId;
}
public String getNativePlace() {
return nativePlace;
}
......@@ -355,12 +343,4 @@ public class Account {
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getHospital() {
return hospital;
}
public void setHospital(String hospital) {
this.hospital = hospital;
}
}
......@@ -24,6 +24,8 @@ public enum AccountTypeEnum {
PRODUCT_TYPE_DOCTOR(1, "云鹊医产品系"),
PRODUCT_TYPE_HEALTH(2, "云鹊健康产品系"),
PRODUCT_TYPE_ECO_LIVE(3, "生态直播"),
PRODUCT_TYPE_CRM(4, "销售crm"),
//终端类型
DEVICE_TYPE_ANDROID(1, "安卓"),
......@@ -31,6 +33,10 @@ public enum AccountTypeEnum {
DEVICE_TYPE_WEB(3, "web"),
DEVICE_TYPE_H5(4, "H5"),
DEVICE_TYPE_ADMIN(5, "admin"),
DEVICE_TYPE_SAAS(6, "saas"),
DEVICE_TYPE_SSO(7, "sso"),
DEVICE_TYPE_CRM(8, "crm"),
//验证码获取类型: flag:0登录(默认)1注册 2微信登录绑定手机 3修改手机 4重置密码
//5忘记密码 7患者招募提交问卷(效验) 8Appe登录绑定手机
......
......@@ -27,4 +27,5 @@ public interface RegisterService {
LoginResult register(BaseRequest baseRequest, QueryMobileEntity queryMobileEntity);
void processRoleMap(Long userId);
}
......@@ -9,6 +9,7 @@ import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.mapper.AccountInfoDetailMapper;
import com.pica.cloud.account.account.server.mapper.AccountMapper;
import com.pica.cloud.account.account.server.service.AccountService;
import com.pica.cloud.account.account.server.service.RegisterService;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import com.pica.cloud.foundation.redis.ICacheClient;
......@@ -48,6 +49,9 @@ public class AccountServiceImpl implements AccountService {
@Value("${doubleWritingMode}")
private boolean doubleWritingMode;
@Autowired
private RegisterService registerService;
//根据ID获取账号
@Override
public Account getById(long id) {
......@@ -144,16 +148,55 @@ public class AccountServiceImpl implements AccountService {
/** 手机号已被占用,且机构不存在或机构为空 */
String encryptMobilePhone = EncryptUtils.encryptContent(req.getMobilePhone(), EncryptConstants.ENCRYPT_TYPE_MOBILE);
Account account = accountMapper.getByMobilePhone(encryptMobilePhone);
if (account == null) {
/** TODO: 新增流程 */
return 0;
Account existAccount = accountMapper.getByMobilePhone(encryptMobilePhone);
if (existAccount == null) {
Date now = Calendar.getInstance().getTime();
/** account info */
AccountInfoEntity accountInfo = new AccountInfoEntity();
accountInfo.setMobilePhone(encryptMobilePhone);
accountInfo.setPassword("");
accountInfo.setCreatedTime(now);
accountInfo.setCreatedId(0);
accountInfo.setModifiedId(0);
accountInfo.setModifiedTime(now);
accountInfo.setRegTime(now);
accountInfo.setDeleteFlag(1);
accountInfo.setSex(0);
accountInfo.setRegisterProduct(AccountTypeEnum.PRODUCT_TYPE_CRM.getCode());
accountInfo.setRegisterSource(AccountTypeEnum.DEVICE_TYPE_CRM.getCode());
accountInfo.setRegTime(now);
accountInfoDetailMapper.insertSelective(accountInfo);
Integer acctId = accountInfo.getId();
accountInfoDetailMapper.updateCreateInfo(acctId);
/** doctor */
Account account = new Account();
account.setAcctId(acctId);
account.setMobilePhone(encryptMobilePhone);
account.setPassword("");
account.setEntireFlag(3);
account.setComment("");
account.setHospitalId(req.getHospitalId());
account.setHospital(req.getHospitalName());
account.setCreatId(0L);
account.setModifyId(0L);
account.setDeleteFlag(1);
account.setCreatTime(now);
account.setRegTime(now);
account.setModifyTime(now);
account.setFirstLoginTime(now);
account.setLastLoginTime(now);
account.setRegisterSource(AccountTypeEnum.DEVICE_TYPE_H5.getCode());
accountMapper.insertSelective(account);
registerService.processRoleMap(account.getId());
return account.getId().intValue();
}
if (account.getHospitalId() == null || account.getHospitalId() == 0) {
if (existAccount.getHospitalId() == null || existAccount.getHospitalId() == 0) {
throw new AccountException(AccountExceptionEnum.CRM_MOBILE_NOT_IN_HOSPITAL);
}
if (!req.getHospitalId().equals(account.getHospitalId())) {
throw new AccountException(AccountExceptionEnum.CRM_MOBILE_IN_ANOTHER_HOSPITAL.getCode(), AccountExceptionEnum.CRM_MOBILE_IN_ANOTHER_HOSPITAL.getMessage().replace("{hospitalName}", account.getHospital()));
if (!req.getHospitalId().equals(existAccount.getHospitalId())) {
throw new AccountException(AccountExceptionEnum.CRM_MOBILE_IN_ANOTHER_HOSPITAL.getCode(), AccountExceptionEnum.CRM_MOBILE_IN_ANOTHER_HOSPITAL.getMessage().replace("{hospitalName}", existAccount.getHospital()));
}
throw new AccountException(AccountExceptionEnum.CRM_MOBILE_EXIST_IN_HOSPITAL);
}
......
......@@ -11,6 +11,7 @@ import com.pica.cloud.account.account.server.resp.*;
import com.pica.cloud.account.account.server.service.AccountService;
import com.pica.cloud.account.account.server.service.HospitalSaasUserService;
import com.pica.cloud.account.account.server.service.PasswordService;
import com.pica.cloud.account.account.server.service.RegisterService;
import com.pica.cloud.account.account.server.util.AESUtil;
import com.pica.cloud.account.account.server.util.ExecutorServiceUtils;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
......@@ -65,6 +66,8 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
@Autowired
private PasswordService passwordService;
@Autowired
private RegisterService registerService;
@Override
@Transactional
......@@ -117,7 +120,7 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
// doctor
Account account = buildDoctorMsg(req, mobileEncrypt, currentTime, req.getSourceType(), md5Pwd, acctId);
accountMapper.insertSelective(account);
insertAppRole(account.getId());
registerService.processRoleMap(account.getId());
insertSaasRole(req.getRoleId(), req.getHospitalId().longValue(), account.getId(), account.getId());
redisClient.del(nxKey);
return 1;
......@@ -338,32 +341,6 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
return resp;
}
//处理app端 用户-角色关系
private void insertAppRole(Long userId) {
ExecutorServiceUtils.getExecutor().submit(new Runnable() {
@Override
public void run() {
Date date = new Date();
PUserRole pUserRole = new PUserRole();
pUserRole.setSystemId(5);
pUserRole.setUserRoleId(2);
pUserRole.setUserId(userId.intValue());
pUserRole.setUserType(1);
pUserRole.setStatus(2);
pUserRole.setDeleteFlag(1);
pUserRole.setCreatId(userId.intValue());
pUserRole.setCreatTime(date);
pUserRole.setModifyId(userId.intValue());
pUserRole.setModifyTime(date);
pUserRoleMapper.insertSelective(pUserRole);
pUserRole.setSystemId(1);
pUserRoleMapper.insertSelective(pUserRole);
pUserRole.setSystemId(3);
pUserRoleMapper.insertSelective(pUserRole);
}
});
}
private AccountInfoEntity buildAccountInfo(String mobileEncrypt, Date currentTime, int productType, int sourceType, String password) {
AccountInfoEntity accountInfo = new AccountInfoEntity();
accountInfo.setMobilePhone(mobileEncrypt);
......
......@@ -218,7 +218,8 @@ public class RegisterServiceImpl implements RegisterService {
*
* @param userId
*/
private void processRoleMap(Long userId) {
@Override
public void processRoleMap(Long userId) {
ExecutorServiceUtils.getExecutor().submit(new Runnable() {
@Override
public void run() {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册