add 会议发送消息

This commit is contained in:
lijiarao
2021-09-26 09:34:15 +08:00
parent f535e64966
commit 68e5f21c21
4 changed files with 177 additions and 29 deletions
@@ -18,6 +18,11 @@ public class MeetingSubitemCommon {
*/
public final static Integer NEI_BU_QI_YE = 3;
/**
* 缴费方式:汇款
*/
public final static Integer PAY_MODE_1 = 1;
/**
* 缴费方式:线上缴费
*/
@@ -26,7 +31,7 @@ public class MeetingSubitemCommon {
/**
* 缴费方式:打包
*/
public final static Integer PAY_MODE_PACK = 3;
public final static Integer PAY_MODE_3 = 3;
/**
* vip嘉宾
*/
@@ -189,7 +189,6 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
/**
* 通过id查询
*/
@RequiresPermissions("meeting:search")
@ApiOperation(value = "会议管理-通过id查询", notes = "会议管理-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name = "id") String id) {
@@ -3,9 +3,13 @@ package com.jero.meeting.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayContactsManagementService;
@@ -34,13 +38,16 @@ import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.standards.xuanguan.stablecrosstraining.service.IStableCrossTrainingService;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.util.CollectionUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -75,6 +82,8 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
private IPayCaseCommitteeService payCaseCommitteeService;
@Resource
private IPayMeetingRemindRecordService payMeetingRemindRecordService;
@Resource
private SendMessageService sendMessageService;
/**
* 新增会议
*/
@@ -96,6 +105,51 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) {
stableCrossTrainingService.add(payMeeting,hotelContactsList);
}
//工作组会议发送通知
if (Objects.equals(payMeeting.getMeetingType(),Integer.parseInt(MeetingCommon.WORKING_GROUP_MEETING))){
String workingGroupId = payMeeting.getWorkingGroupId();
LambdaQueryWrapper<PayWorkingGroupSubItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayWorkingGroupSubItem::getWorkingGroupId,workingGroupId);
List<PayWorkingGroupSubItem> groupSubItemList = payWorkingGroupSubItemService.list(wrapper);
for (PayWorkingGroupSubItem payWorkingGroupSubItem : groupSubItemList) {
String chargeCompanyId = payWorkingGroupSubItem.getChargeCompanyId();
//根据企业id查询所有联系人
List<PayContactsManagement> list = payContactsManagementService.list(
new LambdaQueryWrapper<PayContactsManagement>()
.eq(PayContactsManagement::getCompanyId, chargeCompanyId)
);
for (PayContactsManagement payContactsManagement : list) {
sendMessage(payMeeting, payContactsManagement);
}
}
}
}
/**
* 工作组创建会议通知
* @param payMeeting 会议信息
* @param payContactsManagement 联系人信息
* @author lijiarao
* @date 2021/9/24
*/
private void sendMessage(PayMeeting payMeeting, PayContactsManagement payContactsManagement) {
String phone = payContactsManagement.getPhone();
String email = payContactsManagement.getEmail();
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if (!StringUtils.isBlank(email)) {
sendMessageDTO.setEmail(PasswordUtil.decrypt(email));
}
if (!StringUtils.isBlank(phone)) {
sendMessageDTO.setToUser(PasswordUtil.decrypt(phone));
sendMessageDTO.setPhone(PasswordUtil.decrypt(phone));
}
HashMap<String, String> map = new HashMap<>();
map.put("meetingName", payMeeting.getMeetingName());
sendMessageDTO.setFromUser(payMeeting.getDirectorName());
sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG1.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("email");
sendMessageDTO.setBusId(payMeeting.getId());
sendMessageService.SendMessageService(sendMessageDTO);
}
@Override
@@ -10,7 +10,6 @@ import com.jero.common.common.ProjectCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.enums.ManagementMessageEnums;
import com.jero.common.common.ProjectCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.SendMessageService;
import com.jero.common.service.ContractCreateProjectSendMessageService;
@@ -121,7 +120,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
// 收入合同创建项目发送消息到项目负责人
if(Objects.equals(ProjectCommon.FLAG,payMeetingSituation.getFlag())){
if (Objects.equals(ProjectCommon.FLAG, payMeetingSituation.getFlag())) {
PayMeeting payMeeting = meetingService.getById(payMeetingSituation.getMeetingId());
contractCreateProjectSendMessageService.ContractCreateProjectSendMessageService(payMeeting.getMeetingName() + "" + payMeetingSituation.getCompanyName(),payMeetingSituation.getId());
}
@@ -197,6 +196,83 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
saveMeetingSituation(payMeetingSituation1);
//处理打包
handlePack(payMeetingSituation1);
if (meetingType.equals(Integer.parseInt(MeetingCommon.WORKING_GROUP_MEETING))) {
//工作组以公司为维度
LambdaQueryWrapper<PayWorkingGroupSubItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayWorkingGroupSubItem::getWorkingGroupId, payMeeting.getWorkingGroupId());
wrapper.eq(PayWorkingGroupSubItem::getChargeCompanyId, payMeetingSituation1.getCompanyId());
boolean isSubItem = payWorkingGroupSubItemService.count(wrapper) > 0;
judgeSend(payMeeting, payMeetingSituation1, isSubItem);
} else if (meetingType.equals(Integer.parseInt(MeetingCommon.COMMITTEE_MEETING))) {
//分标委以人为维度
LambdaQueryWrapper<PayCaseCommitteeSubitem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayCaseCommitteeSubitem::getCommitteeId, payMeeting.getCaseCommitteeId());
wrapper.eq(PayCaseCommitteeSubitem::getContactsId, payMeetingSituation1.getCompanyContactId());
int count = payCaseCommitteeSubitemService.count(wrapper);
if (count > 0) {
payMeetingSituation1.setRegisterCheckResult(MeetingSubitemCommon.SIGNUP_STATUS_0);
}
}
}
/**
* 判断发送哪种类型的消息
* @param payMeeting
* @param payMeetingSituation
* @param isSubItem 是否是组成员
*/
private void judgeSend(PayMeeting payMeeting, PayMeetingSituation payMeetingSituation, boolean isSubItem) {
//工作组成员
if (isSubItem) {
//不是汇款和线上缴费
if (payMeetingSituation.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_3)){
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG4);
}
}else {
//不是汇款和线上缴费
if (payMeetingSituation.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_3)){
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG2);
}else {
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG3);
}
}
}
/**
* 工作组会议/分标委会议的非成员单位人报名发送消息 CompanyMessageEnums.MSG2
* 工作组会议/分标委会议的非成员单位人报名审核允许参会,但是需要上传缴费凭证/订单后四位的发送消息 CompanyMessageEnums.MSG3
* 既不是非成员单位,也不需要上传缴费凭证的直接发送发送消息 CompanyMessageEnums.MSG4
* @param payMeetingSituation
* @author lijiarao
* @date 2021/9/24 17:51
*/
public void sendMessage(PayMeeting payMeeting,
PayMeetingSituation payMeetingSituation,
CompanyMessageEnums companyMessageEnums) {
String companyContactId = payMeetingSituation.getCompanyContactId();
PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId);
String phone = contactsManagement.getPhone();
String email = contactsManagement.getEmail();
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if (!StringUtils.isBlank(email)) {
sendMessageDTO.setEmail(PasswordUtil.decrypt(email));
}
if (!StringUtils.isBlank(phone)) {
sendMessageDTO.setToUser(PasswordUtil.decrypt(phone));
sendMessageDTO.setPhone(PasswordUtil.decrypt(phone));
}
HashMap<String, String> map = new HashMap<>();
map.put("meetingName", payMeeting.getMeetingName());
sendMessageDTO.setFromUser(payMeeting.getDirectorName());
sendMessageDTO.setTemplateCode(companyMessageEnums.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("email");
sendMessageDTO.setBusId(payMeetingSituation.getId());
sendMessageService.SendMessageService(sendMessageDTO);
}
/**
@@ -223,7 +299,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
Integer checkResult = checkVO.getCheckResult();
if (checkResult.equals(MeetingSubitemCommon.SIGNUP_STATUS_2)) {
//TODO 提示信息
}else {
} else {
//设置到账
//meetingSituation.setInAccount(PayProjectCommon.YES);
//设置实收金额
@@ -281,7 +357,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
if (amountReceivable.compareTo(new BigDecimal("0")) == 0) {
throw new JeroBootException("应收金额为0,不能合并开票");
}
if (MeetingSubitemCommon.PAY_MODE_PACK.equals(payMeetingSituation1.getPayMode())) {
if (MeetingSubitemCommon.PAY_MODE_3.equals(payMeetingSituation1.getPayMode())) {
throw new JeroBootException("缴费方式为打包,不能合并开票");
}
if (PayProjectCommon.NO.equals(payMeetingSituation1.getNeedInvoice())) {
@@ -363,7 +439,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
}
//如果是线上缴费并且缴费凭证为空
Integer payMode = meetingSituation.getPayMode();
if (Objects.equals(payMode,2) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){
if (Objects.equals(payMode, 2) && StringUtils.isBlank(meetingSituation.getPaymentRecord())) {
throw new JeroBootException("请上传缴费凭证后再签到");
}
@@ -394,14 +470,17 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String sysUserId = sysUser.getId();
if (meetingType.equals(MeetingCommon.INTERNATIONAL_MEETING)){
String dockId = payMeetingSituation.getDockId();
String directorId = payMeeting.getDirectorId();
LoginUser director = iSysBaseApi.getUserById(directorId);
if (meetingType.equals(MeetingCommon.INTERNATIONAL_MEETING)) {
//只有会议负责人,对接人,参会人可以修改
if (!payMeeting.getDirectorId().equals(sysUserId)&&!sysUserId.equals(payMeetingSituation.getCompanyContactId())&&!sysUserId.equals(payMeetingSituation.getDockId())) {
if (!directorId.equals(sysUserId) && !sysUserId.equals(payMeetingSituation.getCompanyContactId()) && !sysUserId.equals(dockId)) {
throw new JeroBootException("只有会议负责人,对接人,参会人可以修改");
}
}else {
} else {
//只有会议负责人,参会人可以修改
if (!payMeeting.getDirectorId().equals(sysUserId)&&!sysUserId.equals(payMeetingSituation.getCompanyContactId())) {
if (!directorId.equals(sysUserId) && !sysUserId.equals(payMeetingSituation.getCompanyContactId())) {
throw new JeroBootException("只有会议负责人,参会人可以修改");
}
}
@@ -412,12 +491,30 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
BeanUtils.copyProperties(payMeetingSituationVO, payMeetingSituation);
PayMeetingSituation payMeetingSituation1 = getPayMeetingSituation(payMeetingSituation);
//如果是对接人修改的
if (sysUserId.equals(payMeetingSituation.getDockId())){
if (sysUserId.equals(dockId)) {
//判断修改了那些字段
String record = ObjRecordUtil.addRecord(oldObject, payMeetingSituation1);
if (StringUtils.isNotBlank(record)){
//TODO 给负责人发送消息
//iSysBaseApi.
if (StringUtils.isNotBlank(record)) {
// 给负责人发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if (!StringUtils.isBlank(director.getEmail())) {
sendMessageDTO.setEmail(PasswordUtil.decrypt(director.getEmail()));
}
if (!StringUtils.isBlank(director.getPhone())) {
sendMessageDTO.setToUser(director.getUsername());
//sendMessageDTO.setPhone(PasswordUtil.decrypt(director.getPhone()));
}
HashMap<String, String> map = new HashMap<>();
map.put("meetingName", payMeeting.getMeetingName());
map.put("userName1", sysUser.getUsername());
map.put("userName2", payMeetingSituation.getCompanyContactName());
map.put("record", record);
sendMessageDTO.setFromUser(sysUser.getId());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG8.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("email");
sendMessageDTO.setBusId(id);
sendMessageService.SendMessageService(sendMessageDTO);
}
}
@@ -506,7 +603,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
Integer payMode = commonPeopleVO.getPayMode();
payMeetingSituation1.setPayMode(payMode);
//缴费方式为打包时,不处理邮寄联系人和地址
if (payMode.equals(MeetingSubitemCommon.PAY_MODE_PACK)) {
if (payMode.equals(MeetingSubitemCommon.PAY_MODE_3)) {
ValidUtil.validate(commonPeopleVO);
//存入打包字段
payMeetingSituation1.setPack(PayProjectCommon.PACKAGING1);
@@ -516,16 +613,16 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
ValidUtil.validate(commonPeopleVO, NotPack.class);
//缴费方式为线上缴费时,判断是否为会议期间
String paymentRecord = payMeetingSituation.getPaymentRecord();
if (payMode.equals(MeetingSubitemCommon.PAY_MODE_2)){
if (payMode.equals(MeetingSubitemCommon.PAY_MODE_2)) {
Date startTime = payMeeting.getStartTime();
Date endTime = payMeeting.getEndTime();
//如果不在会议期间,不允许上传缴费凭证
if (!belongCalendar(new Date(),startTime,endTime)) {
if (!belongCalendar(new Date(), startTime, endTime)) {
throw new JeroBootException("线上缴费时,付款凭证和订单后四位编码只能在会议期间上传");
}
payMeetingSituation1.setPaymentRecord(paymentRecord);
payMeetingSituation1.setOrderCode(payMeetingSituation.getOrderCode());
}else {
} else {
payMeetingSituation1.setPaymentRecord(paymentRecord);
}
@@ -575,12 +672,6 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
LambdaQueryWrapper<PayWorkingGroupSubItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayWorkingGroupSubItem::getWorkingGroupId, payMeeting.getWorkingGroupId());
wrapper.eq(PayWorkingGroupSubItem::getChargeCompanyId, payMeetingSituation1.getCompanyId());
wrapper.and(i -> i.eq(PayWorkingGroupSubItem::getContactsIdOne, payMeetingSituation1.getCompanyContactId())
.or()
.eq(PayWorkingGroupSubItem::getContactsIdTwo, payMeetingSituation1.getCompanyContactId())
.or()
.eq(PayWorkingGroupSubItem::getContactsIdThree, payMeetingSituation1.getCompanyContactId())
);
int count = payWorkingGroupSubItemService.count(wrapper);
if (count <= 0) {
payMeetingSituation1.setRegisterCheckResult(MeetingSubitemCommon.SIGNUP_STATUS_0);
@@ -589,7 +680,6 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
} else if (meetingType.equals(Integer.parseInt(MeetingCommon.COMMITTEE_MEETING))) {
LambdaQueryWrapper<PayCaseCommitteeSubitem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayCaseCommitteeSubitem::getCommitteeId, payMeeting.getCaseCommitteeId());
wrapper.eq(PayCaseCommitteeSubitem::getCompanyId, payMeetingSituation1.getCompanyId());
wrapper.eq(PayCaseCommitteeSubitem::getContactsId, payMeetingSituation1.getCompanyContactId());
int count = payCaseCommitteeSubitemService.count(wrapper);
@@ -617,8 +707,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
LambdaQueryWrapper<PayMeetingSituation> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayMeetingSituation::getMeetingId, meetingId);
wrapper.eq(PayMeetingSituation::getCompanyContactId, contactsManagementId);
if (StringUtils.isNotBlank(payMeetingSituation.getId())){
wrapper.ne(PayMeetingSituation::getId,payMeetingSituation.getId());
if (StringUtils.isNotBlank(payMeetingSituation.getId())) {
wrapper.ne(PayMeetingSituation::getId, payMeetingSituation.getId());
}
if ((count(wrapper) > 0)) {
throw new JeroBootException("联系人不能多次参加相同会议");
@@ -726,7 +816,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
}
//对接人不能是负责人
String directorId = payMeeting.getDirectorId();
if (directorId.equals(dockId)){
if (directorId.equals(dockId)) {
throw new JeroBootException("对接人不能是负责人");
}
payMeetingSituation.setDockId(dockId);