@ -2,20 +2,17 @@ package com.research.system.service.impl;
import cn.hutool.core.bean.BeanUtil ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.map.MapBuilder ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.util.IdUtil ;
import cn.hutool.core.util.ObjectUtil ;
import cn.hutool.core.util.RandomUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.http.HttpRequest ;
import cn.hutool.http.HttpUtil ;
import cn.hutool.json.JSONUtil ;
import com.alibaba.fastjson2.JSON ;
import com.research.common.constant.UserConstants ;
import com.research.common.constant.WeiXinConstants ;
import com.research.common.core.domain.entity.SysUser ;
import com.research.common.exception.base.BaseException ;
import com.research.common.utils.SecurityUtils ;
import com.research.common.wechat.ExternalService ;
import com.research.common.utils.ExternalServiceUtil ;
import com.research.common.utils.SendGzhMessageUtil ;
import com.research.system.domain.dto.MemberAduitDto ;
import com.research.system.domain.po.* ;
import com.research.system.domain.vo.MemberAduitVo ;
@ -26,7 +23,6 @@ import com.research.system.persist.mapper.KtsKtGroupMemberMapper;
import com.research.system.persist.mapper.SrvMessageMapper ;
import com.research.system.service.* ;
import lombok.extern.slf4j.Slf4j ;
import org.springframework.beans.factory.annotation.Value ;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Propagation ;
import org.springframework.transaction.annotation.Transactional ;
@ -54,11 +50,9 @@ public class MemberAduitServiceImpl implements MemberAduitService {
@Resource
private KtsKtGroupMapper ktsKtGroupMapper ;
@Resource
private ExternalService externalService ;
private ExternalServiceUtil externalServiceUtil ;
@Resource
private KtsKtGroupMemberMapper ktsKtGroupMemberMapper ;
@Value ( value = "${research.smsUrl}" )
private String smsUrl ;
@Override
public void register ( MemberAduitDto . Register dto ) {
@ -76,13 +70,7 @@ public class MemberAduitServiceImpl implements MemberAduitService {
throw new RuntimeException ( "账号已存在,请登录" ) ;
}
}
// //验证微信小程序是否已经提交注册
// KtsKtGroupMemberAduitExample wxAduitExample = new KtsKtGroupMemberAduitExample();
// wxAduitExample.createCriteria().andOpenIdEqualTo(dto.getOpenId()).andStatusEqualTo((byte) 0).andDelFlagEqualTo((byte) 0);
// if (ktsKtGroupMemberAduitMapper.countByExample(wxAduitExample) > 0) {
// //提示已申请
// throw new RuntimeException("此微信已提交注册,正在审核中,请耐心等待");
// }
//新加审核记录
KtsKtGroupMemberAduit ktsKtGroupMemberAduit = BeanUtil . copyProperties ( dto , KtsKtGroupMemberAduit . class ) ;
ktsKtGroupMemberAduit . setId ( IdUtil . getSnowflakeNextId ( ) ) ;
@ -90,7 +78,6 @@ public class MemberAduitServiceImpl implements MemberAduitService {
ktsKtGroupMemberAduit . setStatus ( ( byte ) 0 ) ;
//密码如果是空,给个默认密码
if ( StrUtil . isEmpty ( dto . getPassword ( ) ) ) {
// ktsKtGroupMemberAduit.setPassword(RandomUtil.randomString(10));
ktsKtGroupMemberAduit . setPassword ( "yxky_123#" ) ;
}
//根据提交的类型判断,判断审核类型
@ -122,42 +109,28 @@ public class MemberAduitServiceImpl implements MemberAduitService {
srvMessage . setStatus ( ( byte ) 0 ) ;
srvMessage . setReceiver ( reviewerList . stream ( ) . map ( String : : valueOf ) . collect ( Collectors . joining ( "," ) ) ) ;
srvMessageMapper . insertSelective ( srvMessage ) ;
//给审核人发送公众号通知
try {
//根据接收者的userId获取对应的公众号openId
reviewerList . forEach ( userId - > {
String openId = sysUserService . getGzhOpenIdByUnionId ( userId ) ;
if ( ObjectUtil . isNotNull ( openId ) ) {
//发送公众号通知。需要信息:用户名称、联系电话、申请时间、申请岗位
SendGzhMessageUtil . sendGzhMessage (
WeiXinConstants . GzhMessageType . USER_AUDIT ,
openId ,
Arrays . asList ( dto . getMemberName ( ) ,
dto . getMemberPhone ( ) ,
DateUtil . format ( new Date ( ) , "yyyy-MM-dd" ) ,
dto . getType ( ) . equals ( "1" ) ? "单位负责人" : "参与人员" )
) ;
}
} ) ;
} catch ( Exception e ) {
log . error ( "发送公众号通知失败" , e ) ;
}
}
// List<Long> reviewerList = new ArrayList<>();
// //2.查询该合作单位负责人角色的人 发送审核消息
// if (dto.getKtGroupId() != null || dto.getParentKtId() != null) {
// //101 合作单位负责人
// //102 项目负责人
// reviewerList = memberAduitDao.queryMemberIdList(dto.getProjOrgId(), 101L);
// }
// KtsKtGroupMemberAduit ktsKtGroupMemberAduit = BeanUtil.copyProperties(dto, KtsKtGroupMemberAduit.class);
// ktsKtGroupMemberAduit.setId(IdUtil.getSnowflakeNextId());
// ktsKtGroupMemberAduit.setStatus((byte) 0);
// if (CollUtil.isEmpty(dto.getRoleIdList())) {
// if (dto.getType().contains("0")) {
// ktsKtGroupMemberAduit.setRoleIdList("100");
// }else {
// ktsKtGroupMemberAduit.setRoleIdList("2");
// }
// }else {
// ktsKtGroupMemberAduit.setRoleIdList(dto.getRoleIdList().stream().map(String::valueOf).collect(Collectors.joining(",")));
// }
// ktsKtGroupMemberAduit.setReviewer(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
// ktsKtGroupMemberAduitMapper.insertSelective(ktsKtGroupMemberAduit);
// if (CollUtil.isNotEmpty(reviewerList)) {
// //添加消息
// SrvMessage srvMessage = new SrvMessage();
// srvMessage.setId(IdUtil.getSnowflakeNextId());
// srvMessage.setContent("成员申请审核");
// srvMessage.setBusinessId(ktsKtGroupMemberAduit.getId());
// srvMessage.setStatus((byte) 0);
// srvMessage.setReceiver(reviewerList.stream().map(String::valueOf).collect(Collectors.joining(",")));
// srvMessageMapper.insertSelective(srvMessage);
// }
//3. 审核完成之后, 由项目负责人审核 项目负责人审核完之后,审核通过。
}
@Override
@ -217,6 +190,26 @@ public class MemberAduitServiceImpl implements MemberAduitService {
srvMessage . setStatus ( ( byte ) 0 ) ;
srvMessage . setReceiver ( reviewerList . stream ( ) . map ( String : : valueOf ) . collect ( Collectors . joining ( "," ) ) ) ;
srvMessageMapper . insertSelective ( srvMessage ) ;
//给审核人发送公众号通知
try {
//根据接收者的userId获取对应的公众号openId
reviewerList . forEach ( userId - > {
String openId = sysUserService . getGzhOpenIdByUnionId ( userId ) ;
if ( ObjectUtil . isNotNull ( openId ) ) {
//发送公众号通知。需要信息:用户名称、联系电话、申请时间、申请岗位
SendGzhMessageUtil . sendGzhMessage (
WeiXinConstants . GzhMessageType . USER_AUDIT ,
openId ,
Arrays . asList ( ktsKtGroupMemberAduit . getMemberName ( ) ,
ktsKtGroupMemberAduit . getMemberPhone ( ) ,
DateUtil . format ( new Date ( ) , "yyyy-MM-dd" ) ,
ktsKtGroupMemberAduit . getType ( ) . equals ( "1" ) ? "单位负责人" : "参与人员" )
) ;
}
} ) ;
} catch ( Exception e ) {
log . error ( "发送公众号通知失败" , e ) ;
}
}
}
}
@ -270,50 +263,6 @@ public class MemberAduitServiceImpl implements MemberAduitService {
ktsKtGroupMemberAduit . setReviewedPersion ( SecurityUtils . getUserId ( ) ) ;
ktsKtGroupMemberAduitMapper . updateByPrimaryKeySelective ( ktsKtGroupMemberAduit ) ;
// //通过的话判断当前审核级别, step = 0 ,需要查询项目负责人,添加项目负责人审核,发送通知
// Byte step = ktsKtGroupMemberAduit.getStep();
// //山西医科大学只审核一次
// if (step == 0 && ktsKtGroupMemberAduit.getProjOrgId() != 1L) {
// ktsKtGroupMemberAduit.setId(IdUtil.getSnowflakeNextId());
// ktsKtGroupMemberAduit.setStep((byte) 1);
// List<Long> list = memberAduitDao.queryMemberIdList(null, 102L);
// if (CollUtil.isEmpty(list)) {
// throw new BaseException("未查询到项目负责人信息");
// }
// ktsKtGroupMemberAduit.setReviewedPersion(null);
// ktsKtGroupMemberAduit.setReviewedTime(null);
// ktsKtGroupMemberAduit.setStatus((byte) 0);
// ktsKtGroupMemberAduit.setReviewer(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
// ktsKtGroupMemberAduitMapper.insertSelective(ktsKtGroupMemberAduit);
// //添加消息
// SrvMessage srvMessage = new SrvMessage();
// srvMessage.setId(IdUtil.getSnowflakeNextId());
// srvMessage.setContent("成员申请审核");
// srvMessage.setBusinessId(ktsKtGroupMemberAduit.getId());
// srvMessage.setStatus((byte) 0);
// srvMessage.setReceiver(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
// srvMessageMapper.insertSelective(srvMessage);
//
// } else {
// //审核成功, 添加成员
// GroupDto.AddMember addMember = new GroupDto.AddMember();
// if (StrUtil.isNotEmpty(ktsKtGroupMemberAduit.getRoleIdList())) {
// String[] split = ktsKtGroupMemberAduit.getRoleIdList().split(",");
// addMember.setRoleIdList(Arrays.stream(split).map(Long::parseLong).collect(Collectors.toList()));
// }
// BeanUtil.copyProperties(ktsKtGroupMemberAduit, addMember);
// addMember.setId(null);
// ktsGroupService.addMember(addMember);
//
//// //添加主库租户用户
//// TmsTenantUser tmsTenantUser = new TmsTenantUser();
//// tmsTenantUser.setCreateBy(SecurityUtils.getUsername());
//// tmsTenantUser.setCreateTime(new Date());
//// tmsTenantUser.setDelFlag((byte) 0);
//// tmsTenantUser.setPhonenumber(ktsKtGroupMemberAduit.getMemberPhone());
//// tmsTenantUser.setUserName(ktsKtGroupMemberAduit.getUsername());
//// tmsTenantUserService.insert(tmsTenantUser);
// }
}
private void saveKtGroupMember ( Long userId , KtsKtGroupMemberAduit ktsKtGroupMemberAduit ) {
@ -383,31 +332,12 @@ public class MemberAduitServiceImpl implements MemberAduitService {
//添加成功发送邮件,调用发送邮件的接口
try {
externalService . sendMail ( ktsKtGroupMemberAduit . getMemberEmail ( ) ,
externalServiceUtil . sendMail ( ktsKtGroupMemberAduit . getMemberEmail ( ) ,
"账号审核通过通知" ,
"您在“科研共享平台”注册的账号已审核通过,初始密码为:" + ktsKtGroupMemberAduit . getPassword ( ) + "。请尽快登录并修改密码。" ) ;
// Map<String, Object> body = new HashMap<>();
// body.put("to", ktsKtGroupMemberAduit.getMemberEmail());
// body.put("subject", "账号审核通过通知");
// body.put("text", "您在“科研共享平台”注册的账号已审核通过,初始密码为:" + ktsKtGroupMemberAduit.getPassword() + "。请尽快登录并修改密码。");
// String jsonBody = JSONUtil.toJsonStr(body);
// String url = "http://127.0.0.1:7363/external/sendSimpleMail";
// HttpUtil.post(url, jsonBody);
} catch ( Exception e ) {
log . error ( "发送邮件失败:{}" , e . getMessage ( ) ) ;
}
// //发送短信
// try {
// String body = HttpRequest.post(smsUrl).body(JSON.toJSONString(
// MapBuilder.create(new HashMap<String, Object>(3))
// .put("to", sysUser.getPhonenumber())
// .put("text", "您在“科研共享平台”注册的账号已审核通过,初始密码为:" + ktsKtGroupMemberAduit.getPassword() + "。请尽快登录并修改密码。")
// .build())
// ).timeout(5000).execute().body();
// System.out.println(body);
// }catch (Exception e){
// log.error("发送短信失败:{}", e.getMessage());
// }
return sysUser . getUserId ( ) ;
}