From 08fed15a5cf6f3972443311645dd8ee4ebb0ad69 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 14 五月 2024 17:07:06 +0800
Subject: [PATCH] 最新版本
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 231 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 199 insertions(+), 32 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index cba4c22..d6d06ff 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -128,18 +128,21 @@
//鑴辨晱鎿嶄綔
Member insert = initAddMemberModel(member,loginUserInfo);
//娴峰悍浜哄憳鏂板涓氬姟
- if(dealHkUserBiz(insert)){
- try {
+ try {
+ if(dealHkUserBiz(insert)){
memberMapper.insert(insert);
//鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛�
- createSystemUser(insert);
- }catch (Exception e){
- //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
- deleteHkUserBiz(insert.getHkId());
- throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+ if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
+ //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿
+ createSystemUser(insert);
+ }
+ }else{
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
}
- }else{
- throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+ }catch (Exception e){
+ //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
+ deleteHkUserBiz(insert.getHkId());
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�");
}
return insert;
}
@@ -150,7 +153,6 @@
// 鐢熸垚瀵嗙爜
user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
user.setSalt(salt);
-
// 鍒涘缓鐢ㄦ埛璁板綍
user.setType(insert.getType());
user.setUsername(insert.getPhone());
@@ -175,6 +177,7 @@
insert.setCreateDate(new Date());
insert.setEditor(loginUserInfo.getId());
insert.setEditDate(new Date());
+ insert.setHkOrgId(member.getHkOrgId());
insert.setIsdeleted(Constants.ZERO);
insert.setCompanyId(member.getCompanyId());
insert.setFaceImg(member.getFaceImg());
@@ -201,6 +204,9 @@
* @param hkId
*/
private void deleteHkUserBiz(String hkId) {
+ if(StringUtils.isBlank(hkId)){
+ return;
+ }
UserDelRequest request = new UserDelRequest();
request.setPersonIds(new String[]{hkId});
BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request);
@@ -214,14 +220,6 @@
private boolean dealHkUserBiz(Member insert) {
String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
- Company company = companyMapper.selectById(insert.getCompanyId());
- if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
- }
- if(StringUtils.isBlank(company.getHkId())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
- }
- insert.setHkOrgId(company.getHkId());
UserAddRequest hkAddRequest = HkSyncOrgUserToHKServiceImpl.getUserAddModel(insert,path,Constants.ZERO);
if(hkAddRequest == null){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝浜鸿劯鐓х墖鏈夎锛岃灏濊瘯閲嶆柊涓婁紶锛�");
@@ -305,6 +303,9 @@
}
private void isMemberParamValid(Member member) {
+ if(member.getCompanyId() == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
if (StringUtils.isBlank(member.getPhone())||!PhoneUtil.isPhone(member.getPhone())){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎");
}
@@ -317,22 +318,32 @@
}
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎");
}
-
- SystemUser queryUserDto = new SystemUser();
- queryUserDto.setUsername(member.getPhone());
- queryUserDto.setDeleted(Boolean.FALSE);
- SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
- if (user != null) {
- throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+queryUserDto.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅");
+ Company company = companyMapper.selectById(member.getCompanyId());
+ if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
}
- // 楠岃瘉宸ュ彿
- if (StringUtils.isNotBlank(member.getCode())) {
- queryUserDto = new SystemUser();
+ if(StringUtils.isBlank(company.getHkId())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
+ }
+ member.setHkOrgId(company.getHkId());
+ member.setCompanyType(company.getType());
+ if(Constants.equalsInteger(company.getType(),Constants.ONE)){
+ SystemUser queryUserDto = new SystemUser();
+ queryUserDto.setUsername(member.getPhone());
queryUserDto.setDeleted(Boolean.FALSE);
- queryUserDto.setEmpNo(member.getCode());
- user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
+ SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
if (user != null) {
- throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪");
+ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+queryUserDto.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅");
+ }
+ // 楠岃瘉宸ュ彿
+ if (StringUtils.isNotBlank(member.getCode())) {
+ queryUserDto = new SystemUser();
+ queryUserDto.setDeleted(Boolean.FALSE);
+ queryUserDto.setEmpNo(member.getCode());
+ user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
+ if (user != null) {
+ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪");
+ }
}
}
}
@@ -487,7 +498,7 @@
@Override
- public void roleAuthById(Integer id) {
+ public void roleAuthById(Integer id,LoginUserInfo user) {
Member member = memberMapper.selectById(id);
if(member==null || member.getIsdeleted().equals(Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鍛樺伐淇℃伅宸插垹闄�");
@@ -495,6 +506,157 @@
// List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper);
HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
}
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void batchRoleAuth(Member memberRole) {
+ if(memberRole.getIds() ==null
+ || memberRole.getIds().size() ==0 ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ if(memberRole.getRoleIds() ==null || memberRole.getRoleIds().length ==0){
+ //濡傛灉鏄竻绌烘潈闄�
+ }else{
+ if( ! (Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO)
+ || (Constants.equalsObject(memberRole.getTimeType(),Constants.ONE)
+ && memberRole.getStartTime() !=null && memberRole.getEndTime() != null ))){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() < System.currentTimeMillis()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡綋鍓嶆椂闂达紒");
+ }
+ if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() <= memberRole.getStartTime().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡紑濮嬫椂闂达紒");
+ }
+ }
+ if(Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) ){
+ memberRole.setStartTime(null);
+ memberRole.setEndTime(null);
+ }
+ for (Integer id : memberRole.getIds()){
+ Member member = memberMapper.selectById(id);
+ if(member==null || member.getIsdeleted().equals(Constants.ONE)){
+ //濡傛灉鍛樺伐淇℃伅涓嶅悎娉曠洿鎺ヨ烦杩�
+ continue;
+ }
+ member.setStartTime(memberRole.getStartTime());
+ member.setEndTime(memberRole.getEndTime());
+ Integer ischange = getRoleIdByParam(memberRole.getRoleIds(),member,memberRoleMapper,deviceRoleMapper);
+ if(ischange == 0){
+ return;//鏈彂鐜版潈闄愬彉鍖栵紝鐩存帴杩斿洖
+ }
+ if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥闂ㄧ缁勬暟鎹�");
+ }
+ memberMapper.update(null,new UpdateWrapper<Member>().lambda()
+ .eq(Member::getId,member.getId())
+ .set(Member::getRoleId,member.getRoleId())
+ .set(Member::getAuthStatus,Constants.ONE)
+ .set(Member::getStartTime,memberRole.getStartTime())
+ .set(Member::getEndTime,memberRole.getEndTime())
+ .set(Member::getEditor,memberRole.getLoginUserInfo().getId())
+ .set(Member::getEditDate,new Date()) );
+ saveUserActionBiz(member,memberRole.getLoginUserInfo(), Constants.UserActionType.AUTH_ROLE,userActionJoinMapper);
+ //閲嶆柊鎺堟潈
+ HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
+ }
+ }
+
+ public static Integer getRoleIdByParam(Integer[] param, Member member,MemberRoleMapper memberRoleMapper,DeviceRoleMapper deviceRoleMapper) {
+ //娣诲姞浜哄憳瑙掕壊鍏宠仈鏁版嵁
+ member.setRoleId(null);
+ List<MemberRole> roleList = memberRoleMapper.selectList( new QueryWrapper<MemberRole>().lambda()
+ .eq(MemberRole::getIsdeleted,Constants.ZERO)
+ .eq(MemberRole::getMemberId,member.getId()));
+
+ member.setRoleId("");
+ if((param == null || param.length==0 ) &&( roleList==null || roleList.size()==0)){
+ //妫�鏌ョ敤鎴锋儏鍐垫潈闄愬師鏈氨鏄┖鐨勶紝 鍒欐棤闇�澶勭悊
+ return 0;
+ }
+ if((param == null || param.length==0 ) &&( roleList!=null && roleList.size()>0) ){
+ //濡傛灉娓呯┖鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎鍘熸湁鏉冮檺鍗冲彲
+ memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
+ return 1;
+ }
+ if(!Objects.isNull(param)&¶m.length>Constants.ZERO){
+ /* if(roleList!=null && roleList.size()>0) {
+ //鍜屽師鏈夋潈闄愯繘琛屽姣旓紝鐪嬫槸鍚︽潈闄愬彂鐢熷彉鍖�
+ boolean ischange1=false;
+ for (MemberRole role : roleList) {
+ ischange1=false;
+ for (int j = 0; j < param.length; j++) {
+ if(Constants.equalsInteger(role.getRoleId(),param[j])){
+ ischange1=true;
+ break;
+ }
+ }
+ if(!ischange1){
+ break;
+ }
+ }
+
+ boolean ischange2 =false;
+ for (int j = 0; j < param.length; j++) {
+ ischange2=false;
+ for (MemberRole role : roleList) {
+ if(Constants.equalsInteger(role.getRoleId(),param[j])){
+ ischange2=true;
+ break;
+ }
+ }
+ if(!ischange2){
+ break;
+ }
+ }
+ if(ischange2 && ischange1){
+ return 0;//鏉冮檺鏈彂鐢熸敼鍙�
+ }
+ }*/
+ //濡傛灉鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎
+ memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
+ //鏌ヨ鏁版嵁搴撳瓨鍦ㄧ殑鏉冮檺
+ List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+ .eq(DeviceRole::getType,Constants.TWO)
+ .in(DeviceRole::getId,param));
+
+ String ids = "";
+ if(CollectionUtils.isNotEmpty(deviceRoleList)){
+ List<MemberRole> memberRoleList = new ArrayList<>();
+ List<Integer> r = new ArrayList<>();
+ for (int i = 0; i < deviceRoleList.size(); i++) {
+ DeviceRole deviceRole =deviceRoleList.get(i);
+ if(i>0){
+ ids += ",";
+ }
+ Integer id =deviceRole.getId();
+ ids += "["+id+"]";
+ String doorids =deviceRole.getDoorIds();
+ if(StringUtils.isNotBlank(doorids)){
+ String[] ss = doorids.split(",");
+ try {
+ for(String s :ss){
+ r.add(Integer.parseInt(s));
+ }
+ }catch (Exception e){
+ //鑴忔暟鎹笉澶勭悊
+ }
+ }
+ MemberRole memberRole = new MemberRole();
+ memberRole.setCreateDate(new Date());
+ memberRole.setMemberId(member.getId());
+ memberRole.setIsdeleted(Constants.ZERO);
+ memberRole.setRoleId(deviceRole.getId());
+ memberRoleList.add(memberRole);
+ }
+ memberRoleMapper.insertBatchSomeColumn(memberRoleList);
+ }
+ member.setRoleId(ids);
+ return 1;
+ }
+
+ return 0;
+ }
+
@Override
public void empowerByList(Member member) {
if(member.getIdList()!=null && member.getIdList().size() >0){
@@ -655,6 +817,7 @@
userAction.setIsdeleted(Constants.ZERO);
userAction.setCreateDate(updateMember.getEditDate());
userAction.setCreator(updateMember.getEditor());
+ userAction.setBeforeStatus(updateMember.getStatus());
userAction.setType(type.getKey());
String info = type.getInfo();
userAction.setRemark(info.replace("${param1}",user!=null?user.getRealname():"").replace("${param2}", com.doumee.core.utils.DateUtil.getPlusTime2(updateMember.getEditDate())));
@@ -714,12 +877,15 @@
companyMapper.update(null,new UpdateWrapper<Company>().lambda()
.eq(Company::getId,model.getCompanyId())
.set(Company::getHeadId,member.getId()));
+ //璁板綍鎿嶄綔鏃ュ織
+ saveUserActionBiz(member,member.getLoginUserInfo(), Constants.UserActionType.BE_HEAD,userActionJoinMapper);
}else{
//濡傛灉鏄涓轰富绠�
companyMapper.update(null,new UpdateWrapper<Company>().lambda()
.eq(Company::getId,model.getCompanyId())
.set(Company::getHeadId,null)
);
+ saveUserActionBiz(member,member.getLoginUserInfo(),Constants.UserActionType.NOT_HEAD,userActionJoinMapper);
}
}
}
@@ -1050,6 +1216,7 @@
.eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus())
.eq(Objects.isNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,Constants.ZERO)
.eq(Objects.nonNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,pageWrap.getModel().getIsdeleted())
+ .eq(Objects.nonNull(pageWrap.getModel().getCompanyType()),Company::getType,pageWrap.getModel().getCompanyType())
.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName())
// .eq(Member::getStatus,Constants.Status.ENABLE.getValue())
// .eq(Member::getType,Constants.memberType.internal)
--
Gitblit v1.9.3