diff --git a/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java b/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java index a88e36a7..41e11691 100644 --- a/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java +++ b/jero-boot-base/jero-boot-base-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java @@ -6,7 +6,9 @@ import com.jero.common.api.dto.OnlineAuthDTO; import com.jero.common.api.dto.message.*; import com.jero.common.system.vo.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -280,6 +282,14 @@ public interface ISysBaseAPI extends CommonAPI { * @param content */ void sendEmailMsg(String email,String title,String content); + /** + * 40发送m模板邮件消息 + * @param email 接收人 必传 + * @param title 标题 (不传取模板标题) + * @param templateCode 模板编码 必传 + * @param map 模板替换参数 必传 + */ + void sendEmailTemplateMsg(String email, String title, String templateCode, Map map); /** * 41根据部门id查询部门所有的父级(不包含自己) * @author 马志朝 @@ -314,4 +324,13 @@ public interface ISysBaseAPI extends CommonAPI { * 发送短信验证码 */ void sendVerificationCode(String phone, String codeType, String codeTime,String templateParas); + /** + * 发送短信 + * @param phone 手机号 + * @param codeType 发送类型 + * @param codeTime 超时时间 + * @param templateCode 模板编码 + * @param map 参数集合 + */ + void sendSMS(String phone, String codeType, String codeTime,String templateCode,HashMap map); } diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/SysAnnmentTypeEnum.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/SysAnnmentTypeEnum.java index 93fc313f..eaf0ed9e 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/SysAnnmentTypeEnum.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/SysAnnmentTypeEnum.java @@ -11,7 +11,35 @@ public enum SysAnnmentTypeEnum { /** * 工作流跳转链接我的办公 */ - BPM("bpm", "url", "/bpm/task/MyTaskList"); + BPM("bpm", "url", "/bpm/task/MyTaskList"), + + // 管理端 + M_OPEN_TYPE1("M_OPEN_TYPE1","component","@comp/ProjectDetailModal"), + M_OPEN_TYPE2("M_OPEN_TYPE2","url","/contractManagement/RevenueContractDetail"), + M_OPEN_TYPE3("M_OPEN_TYPE3","url","/contractManagement/RevenueContractDetail"), + M_OPEN_TYPE4("M_OPEN_TYPE4","url","/contractManagement/RevenueContractDetail"), + M_OPEN_TYPE5("M_OPEN_TYPE5","component","@views/incomePayments/meetManage/modules/AuditModal"), + M_OPEN_TYPE6("M_OPEN_TYPE6","component","@comp/ProjectDetailModal"), + M_OPEN_TYPE7("M_OPEN_TYPE7","component","@comp/ProjectDetailModal"), + M_OPEN_TYPE8("M_OPEN_TYPE8","url","/incomePayments/meetManage/SignUpInfoDetail"), + M_OPEN_TYPE9("M_OPEN_TYPE9","url","/businessManagement/BusinessManagement"), + // todo 待定企业端 + C_OPEN_TYPE1("C_OPEN_TYPE1","url",""), + C_OPEN_TYPE2("C_OPEN_TYPE2","component",""), + C_OPEN_TYPE3("C_OPEN_TYPE3","component",""), + C_OPEN_TYPE4("C_OPEN_TYPE4","component",""), + C_OPEN_TYPE5("C_OPEN_TYPE5","component",""), + C_OPEN_TYPE6("C_OPEN_TYPE6","component",""), + C_OPEN_TYPE7("C_OPEN_TYPE7","component",""), + C_OPEN_TYPE8("C_OPEN_TYPE8","none",""), + C_OPEN_TYPE9("C_OPEN_TYPE9","",""), + C_OPEN_TYPE10("C_OPEN_TYPE10","",""), + C_OPEN_TYPE11("C_OPEN_TYPE11","component",""), + C_OPEN_TYPE12("C_OPEN_TYPE12","component",""); + + + + /** * 业务类型(email:邮件 bpm:流程) diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java index b8839932..e91a8ff5 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java @@ -93,10 +93,15 @@ public class ShiroConfig { filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览 filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件 filterChainDefinitionMap.put("/paymentRecord/payPaymentRecord/standardsAddAR", "anon");//标协会员添加来款 + filterChainDefinitionMap.put("/sys/sendVerificationCode", "anon"); //发送验证码 + filterChainDefinitionMap.put("/sys/verificationChangePassword", "anon"); //短信验证码修改密码 + + //企业端登录 filterChainDefinitionMap.put("/company/login", "anon");//登录接口排除 + filterChainDefinitionMap.put("/company/smsLogin", "anon");//短信登录接口排除 filterChainDefinitionMap.put("/company/logout", "anon");//登出接口排除 - filterChainDefinitionMap.put("/company/changePassword", "anon");//短信验证码修改密码 + filterChainDefinitionMap.put("/company/verificationChangePassword", "anon");//短信验证码修改密码 filterChainDefinitionMap.put("/company/sendVerificationCode", "anon");//企业端发送验证码 //和会员系统交互的接口 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java index c8fabfc5..feacde94 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java @@ -94,4 +94,52 @@ public class ProjectCommon { * 邮寄状态(0:未邮寄,1:已邮寄) */ public final static Integer POST_STATUS1 = 1; + /** + * 收入合同处新增标识 flag = 1 + */ + public final static String FLAG = "1"; + /** + * 项目提醒 + */ + public final static String ALERT1 = "1"; + /** + * 合同提醒 + */ + public final static String ALERT2 = "2"; + /** + * 会议提醒 + */ + public final static String ALERT3 = "3"; + /** + * 打包提醒 + */ + public final static String ALERT4 = "4"; + /** + * 企业提醒 + */ + public final static String ALERT5 = "5"; + /** + * 文件提醒 + */ + public final static String ALERT6 = "6"; + /** + * 邮寄提醒 + */ + public final static String ALERT7 = "7"; + /** + * 催款提醒 + */ + public final static String ALERT8 = "8"; + /** + * 1短信 2邮件 3系统 + */ + public final static String MESSAGE_TYPE1 = "1"; + /** + * 1短信 2邮件 3系统 + */ + public final static String MESSAGE_TYPE2 = "2"; + /** + * 1短信 2邮件 3系统 + */ + public final static String MESSAGE_TYPE3 = "3"; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/RoleCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/RoleCommon.java new file mode 100644 index 00000000..6faffdc9 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/RoleCommon.java @@ -0,0 +1,13 @@ +package com.jero.common.common; + +public class RoleCommon { + + /** + * 项目负责人 + */ + public final static String XMFZR = "xmfzr"; + /** + * 财务人员 + */ + public final static String CWRY = "cwry"; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java new file mode 100644 index 00000000..413c0b1e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java @@ -0,0 +1,47 @@ +package com.jero.common.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.HashMap; + +/** +* @Description 发送短信,消息,邮件 +* @Author lqt +* @Date 2021/9/24 +*/ +@Data +public class SendMessageDTO implements Serializable { + /** + * 发送人(用户登录账户) + */ + private String fromUser; + /** + * 发送给(用户登录账户) + */ + private String toUser; + /** + * 手机号(发送短信必传) + */ + private String phone; + /** + * 邮箱地址(发送邮箱必传) + */ + private String email; + /** + * 业务类型 + */ + private String busType; + /** + * 业务id + */ + private String busId; + /** + * 模板编码 + */ + private String templateCode; + /** + * 模板参数 + */ + private HashMap templateParam; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/CompanyMessageEnums.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/CompanyMessageEnums.java index d9cd0e57..8cb01203 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/CompanyMessageEnums.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/CompanyMessageEnums.java @@ -12,18 +12,18 @@ import org.apache.commons.lang3.StringUtils; */ public enum CompanyMessageEnums { - MSG1("HYTZ_WORK_GROUP_CREATE","会议提醒","点击跳转到报名页面"), - MSG2("HYTZ_WORK_GROUP_SIGN_UP","会议提醒","弹窗:查看该会议详情"), - MSG3("HYTZ_WORK_GROUP_UPLOAD","会议提醒","弹窗:查看该会议详情"), - MSG4("HYTZ_WORK_GROUP_NOT_UPLOAD","会议提醒","弹窗:查看该会议详情"), - MSG5("HYTZ_NOT_AUDIT","会议提醒","弹窗:上传汇款凭证"), - MSG6("HYTZ_AUDIT","会议提醒","弹窗:查看该会议详情"), - MSG7("WJTZ_MEETING_SEND","文件提醒","弹窗:查看该会议详情"), - MSG8("HTTZ_PHASE","合同提醒","无"), - MSG9("YJTZ_MAIL","邮寄提醒","查看该物流信息"), - MSG10("YJTZ_MAIL_CONTRACT","邮寄提醒","查看该物流信息"), - MSG11("CKTZ_PAY","催款提醒","弹窗:查看该项目详情"), - MSG12("WJTZ_WORK_GROUP_SEND","文件提醒","弹窗:查看该项目详情"); + MSG1("HYTZ_WORK_GROUP_CREATE","会议通知"),//点击跳转到报名页面,meetingName,busId + MSG2("HYTZ_WORK_GROUP_SIGN_UP","会议通知"),//弹窗:查看该会议详情,meetingName + MSG3("HYTZ_WORK_GROUP_UPLOAD","会议通知"),//弹窗:查看该会议详情,meetingName + MSG4("HYTZ_WORK_GROUP_NOT_UPLOAD","会议通知"),//弹窗:查看该会议详情,meetingName + MSG5("HYTZ_NOT_AUDIT","会议通知"),//弹窗:上传汇款凭证,meetingName + MSG6("HYTZ_AUDIT","会议通知"),//弹窗:查看该会议详情,meetingName + MSG7("WJTZ_MEETING_SEND","文件通知"),//弹窗:查看该会议详情,meetingName + MSG8("HTTZ_PHASE","合同通知"),//无,contract,num,amount + MSG9("YJTZ_MAIL","邮寄通知"),//查看该物流信息,projectName + MSG10("YJTZ_MAIL_CONTRACT","邮寄通知"),//查看该物流信息,contractName + MSG11("CKTZ_PAY","催款通知"),//弹窗:查看该项目详情,projectName + MSG12("WJTZ_WORK_GROUP_SEND","文件通知");//弹窗:查看该项目详情,workGroupName private String code; @@ -32,10 +32,9 @@ public enum CompanyMessageEnums { private String detail; - CompanyMessageEnums(String code, String value, String detail){ + CompanyMessageEnums(String code, String value){ this.code = code; this.value = value; - this.detail = detail; } public String getCode() { @@ -54,14 +53,6 @@ public enum CompanyMessageEnums { this.value = value; } - public String getDetail() { - return detail; - } - - public void setDetail(String detail) { - this.detail = detail; - } - public static CompanyMessageEnums getByCode(String code) { if (StringUtils.isBlank(code)) { return null; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/ManagementMessageEnums.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/ManagementMessageEnums.java index 7096d911..b8b01ad0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/ManagementMessageEnums.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/enums/ManagementMessageEnums.java @@ -11,26 +11,23 @@ import org.apache.commons.lang3.StringUtils; */ public enum ManagementMessageEnums { - MSG1("HTTZ_CREATE_PROJECT","项目提醒","查看详情"), - MSG2("HTTZ_SUBMIT","合同提醒","跳转到合同的详情页面"), - MSG3("HTTZ_AUDIT","合同提醒","跳转到合同的详情页面"), - MSG4("HTTZ_NOT_AUDIT","合同提醒","跳转到合同的详情页面"), - MSG5("HYTZ_SIGN_UP_UPLOAD","会议提醒","审核弹窗"), - MSG6("DBTZ_ADD","打包提醒","查看该项目详情"), - MSG7("DBTZ_CONTRACT","打包提醒","查看项目详情"), - MSG8("HYTZ_ON_ACCESS_UPDATE","会议提醒","查看该参会人详情"), - MSG9("QYTZ_CREATE","企业提醒","企业列表页"); + MSG1("HTTZ_CREATE_PROJECT","项目通知"),// 查看详情,projectName + MSG2("HTTZ_SUBMIT","合同通知"),// 跳转到合同的详情页面,contractNum,contractName + MSG3("HTTZ_AUDIT","合同通知"),//跳转到合同的详情页面,contractNum,contractName + MSG4("HTTZ_NOT_AUDIT","合同通知"),//跳转到合同的详情页面,contractNum,contractName + MSG5("HYTZ_SIGN_UP_UPLOAD","会议通知"),//审核弹窗 + MSG6("DBTZ_ADD","打包通知"),//查看该项目详情,projectName + MSG7("DBTZ_CONTRACT","打包通知"),//查看项目详情,projectName + MSG8("HYTZ_ON_ACCESS_UPDATE","会议通知"),//查看该参会人详情,meetingName,username1,username2 + MSG9("QYTZ_CREATE","企业通知");//企业列表页 private String code; private String value; - private String detail; - - ManagementMessageEnums(String code, String value, String detail){ + ManagementMessageEnums(String code, String value){ this.code = code; this.value = value; - this.detail = detail; } public String getCode() { @@ -49,14 +46,6 @@ public enum ManagementMessageEnums { this.value = value; } - public String getDetail() { - return detail; - } - - public void setDetail(String detail) { - this.detail = detail; - } - public static ManagementMessageEnums getByCode(String code) { if (StringUtils.isBlank(code)) { return null; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/ContractCreateProjectSendMessageService.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/ContractCreateProjectSendMessageService.java new file mode 100644 index 00000000..692c380e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/ContractCreateProjectSendMessageService.java @@ -0,0 +1,13 @@ +package com.jero.common.service; + +public interface ContractCreateProjectSendMessageService { + /** + * @Description 合同创建项目发送消息,通知项目负责人 + * @Author lqt + * @Date 2021/9/24 + * @Param projectName 项目名称 + * @Return + * @Exception + */ + void ContractCreateProjectSendMessageService(String projectName); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java new file mode 100644 index 00000000..831afc97 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java @@ -0,0 +1,15 @@ +package com.jero.common.service; + +import com.jero.common.dto.SendMessageDTO; + +public interface SendMessageService { + /** + * @Description 发送短信,消息,邮件 + * @Author lqt + * @Date 2021/9/24 + * @Param sendMessageDTO + * @Return + * @Exception + */ + void SendMessageService(SendMessageDTO sendMessageDTO); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ContractCreateProjectSendMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ContractCreateProjectSendMessageServiceImpl.java new file mode 100644 index 00000000..b9501319 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ContractCreateProjectSendMessageServiceImpl.java @@ -0,0 +1,58 @@ +package com.jero.common.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.common.RoleCommon; +import com.jero.common.dto.SendMessageDTO; +import com.jero.common.enums.CompanyMessageEnums; +import com.jero.common.enums.ManagementMessageEnums; +import com.jero.common.service.ContractCreateProjectSendMessageService; +import com.jero.common.service.SendMessageService; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +@Service +public class ContractCreateProjectSendMessageServiceImpl implements ContractCreateProjectSendMessageService { + + @Autowired + private ISysUserService sysUserService; + @Autowired + private SendMessageService sendMessageService; + + @Override + public void ContractCreateProjectSendMessageService(String projectName) { + // 获取项目负责人,发送消息 + List list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.XMFZR)); + if(!CollectionUtils.isEmpty(list)){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + list.forEach(p->{ + // 发送消息 + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + if(!StringUtils.isBlank(p.getEmail())){ + sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail())); + } + HashMap map = new HashMap<>(); + map.put("projectName",projectName); + sendMessageDTO.setFromUser(sysUser.getId()); + sendMessageDTO.setToUser(p.getUsername()); + sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG1.getCode()); + sendMessageDTO.setTemplateParam(map); + sendMessageDTO.setBusType("M_OPEN_TYPE1"); + JSONObject json = new JSONObject(); + json.put("id",p.getId()); + sendMessageDTO.setBusId(json.toJSONString()); + sendMessageService.SendMessageService(sendMessageDTO); + }); + } + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ProjectDetailServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ProjectDetailServiceImpl.java index b4a4f8f2..647d9317 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ProjectDetailServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ProjectDetailServiceImpl.java @@ -124,8 +124,9 @@ public class ProjectDetailServiceImpl implements ProjectDetailService { if(!Objects.isNull(payCommonProject.getPack())){ projectDetailVO.setPack_dictText(sysBaseAPI.translateDict("yn",String.valueOf(payCommonProject.getPack()))); } - // 标协会员,直接查询企业,联系人 - if(Objects.equals(String.valueOf(payCommonProject.getProjectType()), ProjectCommon.PROJECT_TYPE5)){ + // 标协会员和会议,直接查询企业,联系人 + if(Objects.equals(String.valueOf(payCommonProject.getProjectType()), ProjectCommon.PROJECT_TYPE5) + || Objects.equals(String.valueOf(payCommonProject.getProjectType()), ProjectCommon.PROJECT_TYPE3)){ PayCompanyManagement payCompanyManagement = payCompanyManagementService.getById(payCommonProject.getChargeCompanyTemporaryId()); if(Objects.isNull(payCompanyManagement)){ throw new JeroBootException("企业不存在!"); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java new file mode 100644 index 00000000..ca083468 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java @@ -0,0 +1,156 @@ +package com.jero.common.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.common.ProjectCommon; +import com.jero.common.constant.CommonConstant; +import com.jero.common.constant.WebsocketConst; +import com.jero.common.dto.SendMessageDTO; +import com.jero.common.exception.JeroBootException; +import com.jero.common.service.SendMessageService; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.util.SysAnnmentTypeEnum; +import com.jero.common.util.oConvertUtils; +import com.jero.modules.message.entity.SysMessageTemplate; +import com.jero.modules.message.handle.impl.EmailSendMsgHandle; +import com.jero.modules.message.service.ISysMessageTemplateService; +import com.jero.modules.message.websocket.WebSocket; +import com.jero.modules.system.entity.SysAnnouncement; +import com.jero.modules.system.entity.SysAnnouncementSend; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysAnnouncementSendService; +import com.jero.modules.system.service.ISysAnnouncementService; +import com.jero.modules.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; + +@Slf4j +@Service +public class SendMessageServiceImpl implements SendMessageService { + @Autowired + private ISysBaseAPI sysBaseAPI; + @Autowired + private ISysMessageTemplateService sysMessageTemplateService; + @Resource + private ISysAnnouncementService sysAnnouncementService; + @Resource + private ISysUserService sysUserService; + @Resource + private ISysAnnouncementSendService sysAnnouncementSendService; + @Resource + private WebSocket webSocket; + /** + * 超时时间 + */ + private String time = "60"; + /** + * 短信类型 + */ + private String type = "5"; + + + @Override + public void SendMessageService(SendMessageDTO sendMessageDTO) { + if(StringUtils.isEmpty(sendMessageDTO.getTemplateCode())){ + throw new JeroBootException("模板编码不能为空!"); + } + List sysSmsTemplates = sysMessageTemplateService.selectByCode(sendMessageDTO.getTemplateCode()); + if(CollectionUtils.isEmpty(sysSmsTemplates)){ + throw new JeroBootException("消息模板不能为空!"); + } + SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); + // 没有选项,不发送消息 + String templateType = sysSmsTemplate.getTemplateType(); + if(StringUtils.isBlank(templateType)){ + return; + } + //模板标题 + String title = sysBaseAPI.translateDict("notice_type",sysSmsTemplate.getTemplateName()); + //模板内容 + String content = sysSmsTemplate.getTemplateContent(); + HashMap map = sendMessageDTO.getTemplateParam(); + if(!Objects.isNull(map)) { + for (Map.Entry entry : map.entrySet()) { + String str = "${" + entry.getKey() + "}"; + content = content.replace(str, entry.getValue()); + } + } + + // 1短信 2邮件 3系统 + // 发送邮件 true + if(templateType.contains(ProjectCommon.MESSAGE_TYPE2) && !StringUtils.isEmpty(sendMessageDTO.getEmail())){ + try { + EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(); + emailHandle.SendMsg(sendMessageDTO.getEmail(), title, content); + }catch (Exception e){ + log.error("发送邮件异常",e); + } + } + // 发送消息 + if(templateType.contains(ProjectCommon.MESSAGE_TYPE3) && !StringUtils.isEmpty(sendMessageDTO.getToUser())){ + try { + String fromUser = sendMessageDTO.getFromUser(); + String toUser = sendMessageDTO.getToUser(); + String busId = sendMessageDTO.getBusId(); + String busType = sendMessageDTO.getBusType(); + + SysAnnouncement announcement = new SysAnnouncement(); + announcement.setTitile(sysSmsTemplate.getTemplateName()); + announcement.setMsgContent(content); + announcement.setSender(fromUser); + announcement.setPriority(CommonConstant.PRIORITY_M); + announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); + announcement.setSendStatus(CommonConstant.HAS_SEND); + announcement.setSendTime(new Date()); + announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); + announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); + announcement.setBusId(busId); + announcement.setBusType(busType); + if(!StringUtils.isEmpty(busType)){ + announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); + announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); + } + announcement.setTemplateCode(sendMessageDTO.getTemplateCode()); + sysAnnouncementService.save(announcement); + // 2.插入用户通告阅读标记表记录 + String userId = toUser; + String[] userIds = userId.split(","); + String anntId = announcement.getId(); + for(int i=0;i login(@RequestBody SysLoginModel sysLoginModel) { Result result = new Result<>(); - String username = PasswordUtil.encrypt(sysLoginModel.getUsername()); + String phone = sysLoginModel.getUsername(); String password = sysLoginModel.getPassword(); - /*String rsaPublicKey = sysLoginModel.getRsaPublicKey(); + String rsaPublicKey = sysLoginModel.getRsaPublicKey(); String rsaPrivateKey = String.valueOf(redisUtil.get(rsaPublicKey)); //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 //前端密码加密,后端进行密码解密 @@ -89,14 +91,14 @@ public class CompanyLoginController { try { //解密获取密码和用户名 password = CommonUtils.decryptBtRsaPriKey(password, rsaPrivateKey); - username = CommonUtils.decryptBtRsaPriKey(username, rsaPrivateKey); + phone = CommonUtils.decryptBtRsaPriKey(phone, rsaPrivateKey); } catch (Exception e) { e.printStackTrace(); - }*/ + } //1. 校验用户是否有效 //update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PayContactsManagement::getPhone, username); + queryWrapper.eq(PayContactsManagement::getPhone, PasswordUtil.encrypt(phone)); PayContactsManagement contactsManagement = payContactsManagementService.getOne(queryWrapper); //update-end-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false if (Objects.isNull(contactsManagement)) { @@ -105,41 +107,95 @@ public class CompanyLoginController { // 若用户名有效,则查询该账号的登陆失败次数是否符合等保要求 int retryCount = 0; - if (redisUtil.get(RETRY_LOGIN_PREFIX + username) != null) { - retryCount = (int) redisUtil.get(RETRY_LOGIN_PREFIX + username); + if (redisUtil.get(RETRY_LOGIN_PREFIX + phone) != null) { + retryCount = (int) redisUtil.get(RETRY_LOGIN_PREFIX + phone); } if (retryCount >= RETRY_LOGIN_MAX_COUNT) { result.error500("密码错误次数过多,请稍后重试"); return result; } //2. 校验用户名或密码是否正确 - String userpassword = PasswordUtil.encrypt(username, password, contactsManagement.getSalt()); + String userpassword = PasswordUtil.encrypt(phone, password, contactsManagement.getSalt()); String syspassword = contactsManagement.getPassword(); if (!syspassword.equals(userpassword)) { // 重试登录次数加一 retryCount++; if (retryCount == 1) { - redisUtil.set(RETRY_LOGIN_PREFIX + username, retryCount, 60 * 30); + redisUtil.set(RETRY_LOGIN_PREFIX + phone, retryCount, 60 * 30); } else { - redisUtil.set(RETRY_LOGIN_PREFIX + username, retryCount, redisUtil.getExpire(RETRY_LOGIN_PREFIX + username)); + redisUtil.set(RETRY_LOGIN_PREFIX + phone, retryCount, redisUtil.getExpire(RETRY_LOGIN_PREFIX + phone)); } String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试" : "用户名或密码错误,剩余可登录次数:" + (RETRY_LOGIN_MAX_COUNT - retryCount); result.error500(msg); return result; } //登录成功,清除错误登录次数 - redisUtil.del(RETRY_LOGIN_PREFIX + username); + redisUtil.del(RETRY_LOGIN_PREFIX + phone); //用户登录信息 userInfo(contactsManagement, result); //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 LoginUser loginUser = new LoginUser(); BeanUtils.copyProperties(contactsManagement, loginUser); - baseCommonService.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); + baseCommonService.addLog("用户名: " + phone + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 return result; } + @ApiOperation("短信登录接口") + @PostMapping(value = "/smsLogin") + public Result smsLogin(@RequestBody SysLoginModel sysLoginModel) { + Result result = new Result<>(); + String phone = sysLoginModel.getUsername(); + String rsaPublicKey = sysLoginModel.getRsaPublicKey(); + String rsaPrivateKey = String.valueOf(redisUtil.get(rsaPublicKey)); + //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 + //前端密码加密,后端进行密码解密 + //password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//密码解密 + //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 + //update-begin-author:taoyan date:20190828 for:校验验证码 + try { + //解密获取密码和用户名 + phone = CommonUtils.decryptBtRsaPriKey(phone, rsaPrivateKey); + } catch (Exception e) { + e.printStackTrace(); + } + String captcha = sysLoginModel.getCaptcha(); + if (captcha == null) { + result.error500("验证码无效"); + return result; + } + Object checkCode = redisUtil.get("_verification:_phone:" + phone); + if (checkCode == null) { + result.error500("验证码错误"); + return result; + } else { + redisUtil.del("_verification:_phone:" + phone); + } + + //1. 校验用户是否有效 + //update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PayContactsManagement::getPhone, PasswordUtil.encrypt(phone)); + PayContactsManagement contactsManagement = payContactsManagementService.getOne(queryWrapper); + //update-end-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false + if (Objects.isNull(contactsManagement)) { + throw new JeroBootException("手机号不存在"); + } + + //用户登录信息 + userInfo(contactsManagement, result); + //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + LoginUser loginUser = new LoginUser(); + BeanUtils.copyProperties(contactsManagement, loginUser); + baseCommonService.addLog("用户名: " + phone + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); + //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + if (Objects.isNull(contactsManagement.getPassword())){ + result.setMessage("updatePassword"); + } + return result; + } + /** * 退出登录 * @@ -181,13 +237,15 @@ public class CompanyLoginController { private void userInfo(PayContactsManagement contactsManagement, Result result) { String syspassword = contactsManagement.getPassword(); String username = contactsManagement.getPhone(); + if (Objects.isNull(syspassword)) { + syspassword = defaultPassword; + } // 生成token String token = JwtUtil.sign(username, syspassword); // 设置token缓存有效时间 redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); - // 获取用户部门信息 JSONObject obj = new JSONObject(); obj.put("token", token); @@ -199,25 +257,31 @@ public class CompanyLoginController { @ApiOperation(value = "发送手机号验证码") @GetMapping(value = "/sendVerificationCode") - public Result sendVerificationCode(String mobile) { - mobile = PasswordUtil.encrypt(mobile); + public Result sendVerificationCode(String phone) { + phone = PasswordUtil.encrypt(phone); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PayContactsManagement::getPhone, mobile); + queryWrapper.eq(PayContactsManagement::getPhone, phone); PayContactsManagement contactsManagement = payContactsManagementService.getOne(queryWrapper); if (Objects.isNull(contactsManagement)){ throw new JeroBootException("手机号不是企业联系人"); } - sysBaseAPI.sendVerificationCode(mobile,"2",null,null); - if (StringUtils.isBlank(contactsManagement.getPassword())){ - return Result.error("updatePassword"); - } - return Result.OK(); + sysBaseAPI.sendVerificationCode(phone,"2",null,null); + String string = redisUtil.get("_verification:_phone:" + PasswordUtil.decrypt(phone)).toString(); + return Result.OK(string); } @ApiOperation(value = "短信验证码修改密码") + @PostMapping(value = "/verificationChangePassword") + public Result verificationChangePassword(@RequestBody CompanyLoginVO companyLoginVO) { + payContactsManagementService.verificationChangePassword(companyLoginVO); + return Result.OK("修改密码成功"); + } + + @ApiOperation(value = "修改密码") @PostMapping(value = "/changePassword") public Result changePassword(@RequestBody CompanyLoginVO companyLoginVO) { payContactsManagementService.changePassword(companyLoginVO); + return Result.OK("修改密码成功"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java index db590fbd..ea40b6aa 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java @@ -147,16 +147,6 @@ public class PayCompanyManagementController extends JeroController queryWrapper = new LambdaQueryWrapper<>(); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java index 8047fad2..3103eeb4 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java @@ -49,5 +49,7 @@ public interface IPayContactsManagementService extends IService listPayContactsManagement(List phoneList); + void verificationChangePassword(CompanyLoginVO companyLoginVO); + void changePassword(CompanyLoginVO companyLoginVO); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java index 14184292..581152a2 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java @@ -5,17 +5,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; import com.jero.common.exception.JeroBootException; -import com.jero.common.util.CommonUtils; -import com.jero.common.util.PasswordUtil; -import com.jero.common.util.RedisUtil; -import com.jero.common.util.ValidUtil; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.*; import com.jero.company.entity.PayContactsManagement; import com.jero.company.mapper.PayContactsManagementMapper; import com.jero.company.service.IPayContactsManagementService; import com.jero.company.vo.CompanyLoginVO; import com.jero.modules.system.entity.SysUser; import org.apache.commons.collections.CollectionUtils; +import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -64,18 +64,21 @@ public class PayContactsManagementServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PayContactsManagement::getPhone, phone); + queryWrapper.eq(PayContactsManagement::getPhone, PasswordUtil.encrypt(phone)); PayContactsManagement contactsManagement = this.getOne(queryWrapper); if (ObjectUtils.isEmpty(contactsManagement)) { throw new JeroBootException("用户不存在"); } - String passwordEncode = PasswordUtil.encrypt(contactsManagement.getPhone(), password, contactsManagement.getSalt()); - companyLoginVO.setPassword(passwordEncode); - payContactsManagementMapper.forgetPassword(companyLoginVO); - redisUtil.del("_verification:_phone:" + companyLoginVO.getPhone()); + String salt = oConvertUtils.randomGen(8); + String managementPhone = contactsManagement.getPhone(); + String passwordEncode = PasswordUtil.encrypt(PasswordUtil.decrypt(managementPhone), password, salt); + contactsManagement.setPassword(passwordEncode); + contactsManagement.setSalt(salt); + this.saveOrUpdate(contactsManagement); + redisUtil.del("_verification:_phone:" + phone); + } + + @Override + public void changePassword(CompanyLoginVO companyLoginVO) { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String newPassword = companyLoginVO.getNewPassword(); + String verifyPassword = companyLoginVO.getVerifyPassword(); + String phone = loginUser.getPhone(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PayContactsManagement::getPhone, PasswordUtil.encrypt(phone)); + PayContactsManagement contactsManagement = this.getOne(queryWrapper); + + if (oConvertUtils.isEmpty(newPassword)) { + throw new JeroBootException("新密码不允许为空!"); + } + if (!newPassword.equals(verifyPassword)) { + throw new JeroBootException("两次输入密码不一致!"); + } + String password = PasswordUtil.encrypt(phone, newPassword, contactsManagement.getSalt()); + this.update(new PayContactsManagement().setPassword(password), new LambdaQueryWrapper().eq(PayContactsManagement::getPhone, phone)); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/vo/CompanyLoginVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/vo/CompanyLoginVO.java index 88cc6e9a..fe67691f 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/vo/CompanyLoginVO.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/vo/CompanyLoginVO.java @@ -25,15 +25,16 @@ public class CompanyLoginVO { /** * 密码 */ - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @ApiModelProperty(value = "密码") @NotEmpty(message = "密码不能为空!") private String password; + @ApiModelProperty(value = "新密码") + private String newPassword; + /** * 确认密码 */ - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @ApiModelProperty(value = "确认密码") @NotEmpty(message = "确认密码不能为空!") private String verifyPassword; @@ -47,6 +48,6 @@ public class CompanyLoginVO { @ApiModelProperty(value = "RSA公钥") @NotEmpty(message = "RSA公钥不能为空!") - private String rsapublickey; + private String rsaPublicKey; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java index 85eceb10..c5d330c5 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java @@ -5,8 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.dto.message.BusTemplateMessageDTO; +import com.jero.common.common.RoleCommon; +import com.jero.common.dto.SendMessageDTO; +import com.jero.common.enums.CompanyMessageEnums; +import com.jero.common.enums.ManagementMessageEnums; 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.contract.common.PayIncomeContractCommon; import com.jero.contract.entity.PayIncomeContract; @@ -20,6 +28,7 @@ import com.jero.contract.service.IPayIncomeContractInstallmentService; import com.jero.contract.service.IPayIncomeContractService; import com.jero.contract.vo.PayIncomeContractInput; import com.jero.contract.vo.ProjectOutput; +import com.jero.meeting.common.MeetingSubitemCommon; import com.jero.meeting.entity.PayMeetingSituation; import com.jero.meeting.service.IPayMeetingSituationService; import com.jero.member.entity.PayMemberProject; @@ -32,6 +41,7 @@ import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; import com.jero.pack.entity.PayPackCompanyProject; import com.jero.pack.service.IPayPackCompanyProjectService; +import com.jero.project.common.PayProjectCommon; import com.jero.project.entity.PayCommonProject; import com.jero.project.entity.PayWorkingGroup; import com.jero.project.entity.PayWorkingGroupSubItem; @@ -95,6 +105,8 @@ public class PayIncomeContractServiceImpl extends ServiceImpl queryPageList(Page page, PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime) { @@ -384,6 +396,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.CWRY)); + if(!CollectionUtils.isEmpty(list)){ + list.forEach(p->{ + // 发送消息 + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + if(!StringUtils.isBlank(p.getEmail())){ + sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail())); + } + HashMap map = new HashMap<>(); + map.put("contractNum",payIncomeContractNew.getContractNum()); + map.put("contractName",payIncomeContractNew.getContractName()); + sendMessageDTO.setFromUser(sysUser.getId()); + sendMessageDTO.setToUser(p.getUsername()); + sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG2.getCode()); + sendMessageDTO.setTemplateParam(map); + sendMessageDTO.setBusType("email"); + sendMessageDTO.setBusId(p.getId()); + sendMessageService.SendMessageService(sendMessageDTO); + }); + } } /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/home/HomeController.java b/jero-boot-incoming-payment/src/main/java/com/jero/home/HomeController.java new file mode 100644 index 00000000..bbbf2d24 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/home/HomeController.java @@ -0,0 +1,40 @@ +package com.jero.home; + +import com.jero.common.api.vo.Result; +import com.jero.payment.service.IPayPaymentRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * @Description: 首页 + * @Author: jeecg-boot + * @Date: 2021-09-24 + * @Version: V1.0 + */ +@Api(tags="首页") +@RestController +@RequestMapping("/home") +@Slf4j +public class HomeController { + + @Autowired + private IPayPaymentRecordService payPaymentRecordService; + + /** + * 首页-数据统计 + * + * @return + */ + @ApiOperation(value="首页-数据统计", notes="首页-数据统计") + @GetMapping(value = "/dataStatistics") + public Result dataStatistics() { + + return null; + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java index 6910e647..01276058 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.mail.PayMailBillVO; import com.jero.mail.entity.PayMailBill; import com.jero.mail.entity.PayMailBillSearch; import io.lettuce.core.dynamic.annotation.Param; @@ -29,6 +30,8 @@ public interface PayMailBillMapper extends BaseMapper { */ List selectCommonProjectMailBillVO(@Param("projectId") String projectId); + List selectInvoicingStage(@Param("projectId")String projectId); + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml index 166d80f4..974a10b9 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml @@ -13,8 +13,9 @@ - - + + + @@ -32,8 +33,8 @@ pmb.post_status, pmb.send_method, pmb.post_no, - pmb.liaison_man, - pmb.mobile, + pmb.contact_name, + pmb.contact_mobile, pmb.bill_date, pmb.send_date, pmb.remark, @@ -42,5 +43,12 @@ WHERE pmb.id IN (SELECT bill_id FROM pay_mail_bill_project WHERE project_id=#{projectId}) + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java index 5b65d5d0..644acc57 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java @@ -30,6 +30,13 @@ public interface IPayMailBillService extends IService { */ List selectMailBillVO(String projectId); + /** + * 查询开票阶段 + * @param projectId + * @return + */ + List selectInvoicingStage(String projectId); + /** * 添加开票 * @param payMailBill diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java index 19c9d1b5..7c34364f 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java @@ -82,6 +82,8 @@ public class PayMailBillServiceImpl extends ServiceImpl selectMailBillVO(String projectId) { @@ -101,6 +103,12 @@ public class PayMailBillServiceImpl extends ServiceImpl selectInvoicingStage(String projectId) { + + return payMailBillMapper.selectInvoicingStage(projectId); + } + /** * 添加开票 * @@ -135,13 +143,30 @@ public class PayMailBillServiceImpl extends ServiceImpl queryPageList(PayMeeting payMeeting, @@ -127,7 +128,7 @@ public class PayMeetingController extends JeroController> queryList() { @@ -138,6 +139,7 @@ public class PayMeetingController extends JeroController queryById(@RequestParam(name = "id") String id) { @@ -225,6 +230,7 @@ public class PayMeetingController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); @@ -320,45 +326,12 @@ public class PayMeetingController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); - List pageList = payMeetingService.list(queryWrapper); - List exportList = new ArrayList<>(); - // 过滤选中数据 - String selections = request.getParameter("selections"); - if (oConvertUtils.isNotEmpty(selections)) { - List selectionList = Arrays.asList(selections.split(",")); - pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); - } - for (PayMeeting meeting : pageList) { - //查询会议负责人 - LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); - meeting.setDirectorName(user.getUsername()); - meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); - WorkingGroupMeetingExcel workingGroupMeetingExcel = new WorkingGroupMeetingExcel(); - BeanUtils.copyProperties(meeting, workingGroupMeetingExcel); - String meetingType = meeting.getMeetingType().toString(); - String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); - workingGroupMeetingExcel.setMeetingType(meetingType1); - // 工作组项目查询工作组项目名 - if (meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING)) { - String workingGroupId = meeting.getWorkingGroupId(); - PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); - workingGroupMeetingExcel.setWorkingGroupName(workingGroup.getWorkingGroupProject()); - } - exportList.add(workingGroupMeetingExcel); - } - return super.exportListXls(exportList, WorkingGroupMeetingExcel.class, "会议管理"); - } /** * 上传资料 */ @AutoLog(value = "上传资料") + @RequiresPermissions("meeting:upload") @ApiOperation(value="上传资料", notes="上传资料") @PostMapping(value = "/uploadFile") public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { @@ -390,6 +363,8 @@ public class PayMeetingController extends JeroController publishReminder(@RequestBody PublishReminderVO publishReminderVO) { @@ -407,7 +382,7 @@ public class PayMeetingController extends JeroController addStandards(@RequestBody PayMeeting payMeeting, HttpServletRequest request) { String publicKey = request.getParameter("publicKey"); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java index 614a40b4..c1c806b5 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java @@ -35,6 +35,7 @@ import lombok.extern.slf4j.Slf4j; import com.jero.common.system.base.controller.JeroController; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -65,7 +66,7 @@ public class PayMeetingSituationController extends JeroController queryPageList(PayMeetingSituation payMeetingSituation, @@ -91,7 +92,6 @@ public class PayMeetingSituationController extends JeroController contractPage(MeetingSituationContractVO meetingSituationContractVO, @@ -106,7 +106,6 @@ public class PayMeetingSituationController extends JeroController queryPageList2(PayMeetingSituation payMeetingSituation, @@ -125,8 +124,7 @@ public class PayMeetingSituationController extends JeroController signUpPage(PayMeetingSituation payMeetingSituation, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @@ -137,12 +135,11 @@ public class PayMeetingSituationController extends JeroController page = new Page<>(pageNo, pageSize); IPage pageList = payMeetingSituationService.page(page, queryWrapper); return Result.OK(pageList); - } + }*/ /** * 列表查询 */ - @AutoLog(value = "参会人员信息-列表查询") @ApiOperation(value = "参会人员信息-列表查询", notes = "参会人员信息-列表查询") @GetMapping(value = "/list") public Result> queryList() { @@ -153,6 +150,7 @@ public class PayMeetingSituationController extends JeroController edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { @@ -187,6 +186,7 @@ public class PayMeetingSituationController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); @@ -309,6 +311,7 @@ public class PayMeetingSituationController extends JeroController checkRegister(@RequestBody CheckVO checkVO) { @@ -360,7 +365,7 @@ public class PayMeetingSituationController extends JeroController signIn(@RequestBody SignInVO signInVO) { ValidUtil.validate(signInVO); payMeetingSituationService.signIn(signInVO); - return Result.OK("合并开票成功!"); + return Result.OK("签到成功!"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingRemindRecord.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingRemindRecord.java new file mode 100644 index 00000000..3f42900e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingRemindRecord.java @@ -0,0 +1,68 @@ +package com.jero.meeting.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 会议提醒记录表 + * @Author: jero-boot + * @Date: 2021-09-23 + * @Version: V1.0 + */ +@Data +@TableName("pay_meeting_remind_record") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="pay_meeting_remind_record对象", description="会议提醒记录表") +public class PayMeetingRemindRecord implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**会议id*/ + @Excel(name = "会议id", width = 15) + @ApiModelProperty(value = "会议id") + private String meetingId; + + /**成员id*/ + @Excel(name = "成员id", width = 15) + @ApiModelProperty(value = "成员id") + private String subitemId; + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingSituation.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingSituation.java index 88744cfa..15ad7489 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingSituation.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/PayMeetingSituation.java @@ -389,4 +389,11 @@ public class PayMeetingSituation implements Serializable { @Dict(dicCode = "yn") @TableField(exist = false) private Integer identification; + + /** + * 收入合同处新增标识 flag = 1 + */ + @TableField(exist = false) + @ApiModelProperty(value = "收入合同处新增标识 flag = 1") + private String flag; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingRemindRecordMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingRemindRecordMapper.java new file mode 100644 index 00000000..30df4839 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingRemindRecordMapper.java @@ -0,0 +1,17 @@ +package com.jero.meeting.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.jero.meeting.entity.PayMeetingRemindRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 会议提醒记录表 + * @Author: jero-boot + * @Date: 2021-09-23 + * @Version: V1.0 + */ +public interface PayMeetingRemindRecordMapper extends BaseMapper { + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingRemindRecordMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingRemindRecordMapper.xml new file mode 100644 index 00000000..e4f6fcd2 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingRemindRecordMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/IPayMeetingRemindRecordService.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/IPayMeetingRemindRecordService.java new file mode 100644 index 00000000..8f633859 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/IPayMeetingRemindRecordService.java @@ -0,0 +1,54 @@ +package com.jero.meeting.service; + +import com.jero.meeting.entity.PayMeetingRemindRecord; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 会议提醒记录表 + * @Author: jero-boot + * @Date: 2021-09-23 + * @Version: V1.0 + */ +public interface IPayMeetingRemindRecordService extends IService { + + /** + * 保存 + */ + void add(PayMeetingRemindRecord payMeetingRemindRecord); + + /** + * 更新 + */ + void editById(PayMeetingRemindRecord payMeetingRemindRecord); + + /** + * 通过id删除 + */ + void deleteById(String id); + + /** + * 批量删除 + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + */ + PayMeetingRemindRecord queryById(String id); + + /** + * 列表查询 + */ + List queryList(); + + /** + * 关联会议和工作组成员的提醒次数 + * @author lijiaro + * @date 2021/9/23 17:54 + * @param meetingIdList 会议id + * @param subitemIdList 成员id + * + */ + void addList(List meetingIdList, List subitemIdList); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingRemindRecordServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingRemindRecordServiceImpl.java new file mode 100644 index 00000000..9395b32b --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingRemindRecordServiceImpl.java @@ -0,0 +1,78 @@ +package com.jero.meeting.service.impl; + +import com.jero.meeting.entity.PayMeetingRemindRecord; +import com.jero.meeting.mapper.PayMeetingRemindRecordMapper; +import com.jero.meeting.service.IPayMeetingRemindRecordService; +import org.springframework.stereotype.Service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 会议提醒记录表 + * @Author: jero-boot + * @Date: 2021-09-23 + * @Version: V1.0 + */ +@Service +public class PayMeetingRemindRecordServiceImpl extends ServiceImpl implements IPayMeetingRemindRecordService { + + /** + * 保存 + */ + @Override + public void add(PayMeetingRemindRecord payMeetingRemindRecord) { + save(payMeetingRemindRecord); + } + + /** + * 更新 + */ + @Override + public void editById(PayMeetingRemindRecord payMeetingRemindRecord) { + saveOrUpdate(payMeetingRemindRecord); + } + + /** + * 通过id删除 + */ + @Override + public void deleteById(String id) { + removeById(id); + } + + /** + * 批量删除 + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + } + + /** + * 通过id查询 + */ + @Override + public PayMeetingRemindRecord queryById(String id) { + return getById(id); + } + + /** + * 列表查询 + */ + @Override + public List queryList() { + return list(); + } + + @Override + public void addList(List meetingIdList, List subitemIdList) { + for (String meetingId : meetingIdList) { + PayMeetingRemindRecord payMeetingRemindRecord = new PayMeetingRemindRecord(); + payMeetingRemindRecord.setMeetingId(meetingId); + for (String subitemId : subitemIdList) { + payMeetingRemindRecord.setSubitemId(subitemId); + this.save(payMeetingRemindRecord); + } + } + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java index cc3bfb3d..2b8101f7 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java @@ -7,14 +7,18 @@ import com.jero.common.exception.JeroBootException; import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.ValidUtil; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayContactsManagementService; import com.jero.data.entity.PayCaseCommittee; import com.jero.data.service.IPayCaseCommitteeService; import com.jero.meeting.common.MeetingCommon; import com.jero.meeting.entity.PayMeeting; import com.jero.meeting.entity.PayMeetingHotelContacts; +import com.jero.meeting.entity.PayMeetingRemindRecord; import com.jero.meeting.entity.PayMeetingSituation; import com.jero.meeting.mapper.PayMeetingMapper; import com.jero.meeting.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingRemindRecordService; import com.jero.meeting.service.IPayMeetingService; import com.jero.meeting.service.IPayMeetingSituationService; import com.jero.meeting.valid.group.CaseCommitteeMeeting; @@ -66,9 +70,11 @@ public class PayMeetingServiceImpl extends ServiceImpl meetingIds, List subitemIds) { List payWorkingGroupSubItems = payWorkingGroupSubItemService.listByIds(subitemIds); List userIds = new ArrayList<>(); + //用于新增关联关系 + List meetingIdList = new ArrayList<>(); + List subitemIdList = new ArrayList<>(); //把单位会员中所有的联系人和有机联系人取出 for (PayWorkingGroupSubItem payWorkingGroupSubItem : payWorkingGroupSubItems) { + subitemIdList.add(payWorkingGroupSubItem.getId()); String contactsTemporaryIdOne = payWorkingGroupSubItem.getContactsTemporaryIdOne(); if (StrUtil.isNotBlank(contactsTemporaryIdOne)){ userIds.add(contactsTemporaryIdOne); @@ -323,19 +333,24 @@ public class PayMeetingServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.in(PayContactsManagementTemporary::getId,userIds); - List list = payContactsManagementTemporaryService.list(wrapper); - List payMeetings = listByIds(meetingIds); - for (PayContactsManagementTemporary payContactsManagementTemporary : list) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(PayContactsManagement::getId,userIds); + List list = payContactsManagementService.list(wrapper); + for (PayContactsManagement payContactsManagement : list) { //TODO 发送消息 } + //标记会议为已提醒 + List payMeetings = listByIds(meetingIds); for (PayMeeting payMeeting : payMeetings) { + meetingIdList.add(payMeeting.getId()); payMeeting.setRemind(MeetingCommon.REMIND_1); saveOrUpdate(payMeeting); } + payMeetingRemindRecordService.addList(meetingIdList,subitemIdList); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java index 17b0d767..103bf8e9 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java @@ -6,9 +6,17 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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; 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.PayCompanyManagement; import com.jero.company.entity.PayContactsManagement; @@ -93,6 +101,10 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl { - @Autowired - private IPayAnnouncementMessageService payAnnouncementMessageService; - - /** - * 分页列表查询 - * - * @param payAnnouncementMessage - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @AutoLog(value = "消息-分页列表查询") - @ApiOperation(value="消息-分页列表查询", notes="消息-分页列表查询") - @GetMapping(value = "/list") - public Result queryPageList(PayAnnouncementMessage payAnnouncementMessage, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - payAnnouncementMessage.setRecipient(sysUser.getId()); - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payAnnouncementMessage, req.getParameterMap()); - Page page = new Page<>(pageNo, pageSize); - IPage pageList = payAnnouncementMessageService.page(page, queryWrapper); - return Result.OK(pageList); - } - /** - * @Description 已读 - * @Author lqt - * @Date 2021/9/22 - * @Param - * @Return - * @Exception - */ - @AutoLog(value = "消息-已读") - @ApiOperation(value="消息-已读", notes="消息-已读") - @PostMapping(value = "/add") - public Result update(@RequestBody PayAnnouncementMessage payAnnouncementMessage) { - LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - update.eq(PayAnnouncementMessage::getId,payAnnouncementMessage.getId()); - update.set(PayAnnouncementMessage::getReadFlag,MessageCommon.READ_FLAG1); - payAnnouncementMessageService.update(update); - return Result.OK("操作成功!"); - } - - /** - * 添加 - * - * @param payAnnouncementMessage - * @return - */ -// @AutoLog(value = "pay_announcement_message-添加") -// @ApiOperation(value="pay_announcement_message-添加", notes="pay_announcement_message-添加") -// @PostMapping(value = "/add") - public Result add(@RequestBody PayAnnouncementMessage payAnnouncementMessage) { - payAnnouncementMessageService.save(payAnnouncementMessage); - return Result.OK("添加成功!"); - } - - /** - * 编辑 - * - * @param payAnnouncementMessage - * @return - */ -// @AutoLog(value = "pay_announcement_message-编辑") -// @ApiOperation(value="pay_announcement_message-编辑", notes="pay_announcement_message-编辑") -// @PutMapping(value = "/edit") - public Result edit(@RequestBody PayAnnouncementMessage payAnnouncementMessage) { - payAnnouncementMessageService.updateById(payAnnouncementMessage); - return Result.OK("编辑成功!"); - } - - /** - * 通过id删除 - * - * @param id - * @return - */ -// @AutoLog(value = "pay_announcement_message-通过id删除") -// @ApiOperation(value="pay_announcement_message-通过id删除", notes="pay_announcement_message-通过id删除") -// @DeleteMapping(value = "/delete") - public Result delete(@RequestParam(name="id",required=true) String id) { - payAnnouncementMessageService.removeById(id); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param ids - * @return - */ -// @AutoLog(value = "pay_announcement_message-批量删除") -// @ApiOperation(value="pay_announcement_message-批量删除", notes="pay_announcement_message-批量删除") -// @DeleteMapping(value = "/deleteBatch") - public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.payAnnouncementMessageService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - @AutoLog(value = "pay_announcement_message-通过id查询") - @ApiOperation(value="pay_announcement_message-通过id查询", notes="pay_announcement_message-通过id查询") - @GetMapping(value = "/queryById") - public Result queryById(@RequestParam(name="id",required=true) String id) { - PayAnnouncementMessage payAnnouncementMessage = payAnnouncementMessageService.getById(id); - if(payAnnouncementMessage==null) { - return Result.error("未找到对应数据"); - } - return Result.OK(payAnnouncementMessage); - } - - /** - * 导出excel - * - * @param request - * @param payAnnouncementMessage - */ -// @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, PayAnnouncementMessage payAnnouncementMessage) { - return super.exportXls(request, payAnnouncementMessage, PayAnnouncementMessage.class, "pay_announcement_message"); - } - - /** - * 通过excel导入数据 - * - * @param request - * @param response - * @return - */ -// @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, PayAnnouncementMessage.class); - } - -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/message/entity/PayAnnouncementMessage.java b/jero-boot-incoming-payment/src/main/java/com/jero/message/entity/PayAnnouncementMessage.java deleted file mode 100644 index 129558aa..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/message/entity/PayAnnouncementMessage.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.jero.message.entity; - -import java.io.Serializable; -import java.util.Date; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.springframework.format.annotation.DateTimeFormat; -import org.jeecgframework.poi.excel.annotation.Excel; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * @Description: pay_announcement_message - * @Author: jeecg-boot - * @Date: 2021-09-22 - * @Version: V1.0 - */ -@Data -@TableName("pay_announcement_message") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="pay_announcement_message对象", description="pay_announcement_message") -public class PayAnnouncementMessage implements Serializable { - private static final long serialVersionUID = 1L; - - /**id*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "id") - private String id; - /**标题*/ - @Excel(name = "标题", width = 15) - @ApiModelProperty(value = "标题") - private String titile; - /**内容*/ - @Excel(name = "内容", width = 15) - @ApiModelProperty(value = "内容") - private String msgContent; - /**发布人*/ - @Excel(name = "发布人", width = 15) - @ApiModelProperty(value = "发布人") - private String sender; - /**接收用户*/ - @Excel(name = "接收用户", width = 15) - @ApiModelProperty(value = "接收用户") - private String recipient; - /**消息类型(字典表)*/ - @Excel(name = "消息类型(字典表)", width = 15) - @ApiModelProperty(value = "消息类型(字典表)") - private Integer msgCategory; - /**操作*/ - @Excel(name = "操作", width = 15) - @ApiModelProperty(value = "操作") - private String operation; - /**业务id*/ - @Excel(name = "业务id", width = 15) - @ApiModelProperty(value = "业务id") - private String busId; - /**阅读状态(0未读,1已读)*/ - @Excel(name = "阅读状态(0未读,1已读)", width = 15) - @ApiModelProperty(value = "阅读状态(0未读,1已读)") - private Integer readFlag; - /**阅读时间*/ - @Excel(name = "阅读时间", width = 15, format = "yyyy-MM-dd") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "阅读时间") - private Date readTime; - /**创建人*/ - @ApiModelProperty(value = "创建人") - private String createBy; - /**创建时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - /**更新人*/ - @ApiModelProperty(value = "更新人") - private String updateBy; - /**更新时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "更新时间") - private Date updateTime; -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/message/mapper/PayAnnouncementMessageMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/message/mapper/PayAnnouncementMessageMapper.java deleted file mode 100644 index 85723327..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/message/mapper/PayAnnouncementMessageMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.message.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.jero.message.entity.PayAnnouncementMessage; - -/** - * @Description: pay_announcement_message - * @Author: jeecg-boot - * @Date: 2021-09-22 - * @Version: V1.0 - */ -public interface PayAnnouncementMessageMapper extends BaseMapper { - -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/message/mapper/xml/PayAnnouncementMessageMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/message/mapper/xml/PayAnnouncementMessageMapper.xml deleted file mode 100644 index 9da686e2..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/message/mapper/xml/PayAnnouncementMessageMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/message/service/IPayAnnouncementMessageService.java b/jero-boot-incoming-payment/src/main/java/com/jero/message/service/IPayAnnouncementMessageService.java deleted file mode 100644 index 374adbc4..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/message/service/IPayAnnouncementMessageService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.message.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.message.entity.PayAnnouncementMessage; - -/** - * @Description: pay_announcement_message - * @Author: jeecg-boot - * @Date: 2021-09-22 - * @Version: V1.0 - */ -public interface IPayAnnouncementMessageService extends IService { - - void sendMessage(PayAnnouncementMessage payAnnouncementMessage); - -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/message/service/impl/PayAnnouncementMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/message/service/impl/PayAnnouncementMessageServiceImpl.java deleted file mode 100644 index ef114104..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/message/service/impl/PayAnnouncementMessageServiceImpl.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jero.message.service.impl; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.constant.WebsocketConst; -import com.jero.common.exception.JeroBootException; -import com.jero.message.common.MessageCommon; -import com.jero.message.entity.PayAnnouncementMessage; -import com.jero.message.mapper.PayAnnouncementMessageMapper; -import com.jero.message.service.IPayAnnouncementMessageService; -import com.jero.modules.message.websocket.WebSocket; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.Objects; - -/** - * @Description: pay_announcement_message - * @Author: jeecg-boot - * @Date: 2021-09-22 - * @Version: V1.0 - */ -@Service -public class PayAnnouncementMessageServiceImpl extends ServiceImpl implements IPayAnnouncementMessageService { - @Autowired - private IPayAnnouncementMessageService payAnnouncementMessageService; - @Resource - private WebSocket webSocket; - @Override - @Transactional - public void sendMessage(PayAnnouncementMessage payAnnouncementMessage) { - if(Objects.isNull(payAnnouncementMessage)){ - throw new JeroBootException("发送消息失败!"); - } - payAnnouncementMessage.setReadFlag(MessageCommon.READ_FLAG0); - payAnnouncementMessageService.save(payAnnouncementMessage); - JSONObject obj = new JSONObject(); - obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); - obj.put(WebsocketConst.MSG_USER_ID, payAnnouncementMessage.getRecipient()); - obj.put(WebsocketConst.MSG_ID, payAnnouncementMessage.getId()); - obj.put(WebsocketConst.MSG_TXT, payAnnouncementMessage.getTitile()); - webSocket.sendMessage(payAnnouncementMessage.getRecipient(), obj.toJSONString()); - } -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java index 65998fd0..779e6c00 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java @@ -156,7 +156,7 @@ public class PayPaymentRecordController extends JeroController payBillList(String id) { - return Result.OK(payMailBillService.selectMailBillVO(id)); + return Result.OK(payMailBillService.selectInvoicingStage(id)); } /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java index da051033..83542ba0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java @@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.jero.common.api.vo.Result; +import com.jero.common.common.ProjectCommon; import com.jero.common.exception.JeroBootException; import com.jero.common.service.ProjectDetailService; import com.jero.common.system.api.ISysBaseAPI; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java index 8f917ef4..475d5147 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java @@ -5,17 +5,19 @@ import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.api.dto.message.BusTemplateMessageDTO; -import com.jero.common.api.dto.message.TemplateMessageDTO; import com.jero.common.api.vo.Result; +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.service.ProjectDetailService; +import com.jero.common.service.SendMessageService; import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.common.vo.ProjectDetailVO; -import com.jero.message.service.IPayAnnouncementMessageService; import com.jero.project.common.PayProjectCommon; import com.jero.project.entity.*; import com.jero.project.service.IPayWorkingGroupService; @@ -56,7 +58,7 @@ public class PayWorkingGroupSubItemController extends JeroController{ - List listContactsEmail = listPayContactsManagementTemporary.stream().filter(item->Objects.equals(p.getContactsTemporaryIdOne(),item.getId())).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(listContactsEmail)){ + List listContactsInfo = listPayContactsManagementTemporary.stream().filter(item->Objects.equals(p.getContactsTemporaryIdOne(),item.getId())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(listContactsInfo)){ return; } - if(StringUtils.isBlank(listContactsEmail.get(0).getEmail())){ - return; + // 发送消息 + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + if(!StringUtils.isBlank(listContactsInfo.get(0).getEmail())){ + sendMessageDTO.setEmail(PasswordUtil.decrypt(listContactsInfo.get(0).getEmail())); } - String msg = "中汽数据中心提醒您,贵公司与中汽数据签订的" + payWorkingGroup.getWorkingGroupProject() - + "项目款项仍未结余,请及时汇款,如已经汇款,请忽略此条通知。谢谢合作"; - - // sysBaseAPI.sendEmailMsg(PasswordUtil.decrypt(listContactsEmail.get(0).getEmail()), "", msg); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); -// PayAnnouncementMessage payAnnouncementMessage = new PayAnnouncementMessage(); -// payAnnouncementMessage.setTitile(MessageEnums.MSG14.getValue()); -// payAnnouncementMessage.setMsgContent(msg); -// payAnnouncementMessage.setSender(sysUser.getId()); -// payAnnouncementMessage.setRecipient(sysUser.getId()); -// payAnnouncementMessage.setMsgCategory(MessageEnums.MSG14.getCode()); -// payAnnouncementMessage.setOperation(MessageEnums.MSG14.getDetail()); -// payAnnouncementMessage.setBusId(p.getId()); -// payAnnouncementMessageService.sendMessage(payAnnouncementMessage); - BusTemplateMessageDTO busTemplateMessageDTO = new BusTemplateMessageDTO(); - busTemplateMessageDTO.setTitle(CompanyMessageEnums.MSG11.getValue()); - busTemplateMessageDTO.setFromUser(sysUser.getId()); - busTemplateMessageDTO.setToUser(sysUser.getUsername()); - busTemplateMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode()); - busTemplateMessageDTO.setTemplateParam(null); - busTemplateMessageDTO.setBusId(p.getId()); - sysBaseAPI.sendBusTemplateAnnouncement(busTemplateMessageDTO); + if(!StringUtils.isBlank(listContactsInfo.get(0).getPhone())){ + sendMessageDTO.setToUser(PasswordUtil.decrypt(listContactsInfo.get(0).getPhone())); + sendMessageDTO.setPhone(PasswordUtil.decrypt(listContactsInfo.get(0).getPhone())); + } + HashMap map = new HashMap<>(); + map.put("projectName",payWorkingGroup.getWorkingGroupProject()); + sendMessageDTO.setFromUser(sysUser.getId()); + sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode()); + sendMessageDTO.setTemplateParam(map); + sendMessageDTO.setBusType("email"); + sendMessageDTO.setBusId(p.getId()); + sendMessageService.SendMessageService(sendMessageDTO); }); - // todo 缺少发送消息 return Result.OK("添加成功!"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayCommonProject.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayCommonProject.java index 01d48853..af83d35a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayCommonProject.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayCommonProject.java @@ -199,4 +199,10 @@ public class PayCommonProject implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "联系人邮箱") private String email; + /** + * 收入合同处新增标识 flag = 1 + */ + @TableField(exist = false) + @ApiModelProperty(value = "收入合同处新增标识 flag = 1") + private String flag; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java index 119c8a4c..979dc22f 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java @@ -192,4 +192,20 @@ public class PayWorkingGroupSubItem implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "项目ids 多个以逗号分隔") private java.lang.String projectIds; + + /**已提醒*/ + @TableField(exist = false) + @Dict(dicCode = "yn") + private Integer remind; + + /**会议id*/ + @TableField(exist = false) + private java.lang.String meetingId; + + /** + * 收入合同处新增标识 flag = 1 + */ + @TableField(exist = false) + @ApiModelProperty(value = "收入合同处新增标识 flag = 1") + private String flag; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java index 897094f4..bb1ec480 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java @@ -5,15 +5,26 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; +import com.jero.common.common.ProjectCommon; +import com.jero.common.common.RoleCommon; +import com.jero.common.dto.SendMessageDTO; +import com.jero.common.enums.CompanyMessageEnums; +import com.jero.common.enums.ManagementMessageEnums; import com.jero.common.exception.JeroBootException; +import com.jero.common.service.ContractCreateProjectSendMessageService; import com.jero.common.service.ProjectDetailService; +import com.jero.common.service.SendMessageService; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; import com.jero.common.vo.ProjectStatusVO; import com.jero.contract.common.PayIncomeContractCommon; import com.jero.contract.entity.PayIncomeContract; import com.jero.contract.entity.PayIncomeContractAssociated; import com.jero.contract.service.IPayIncomeContractAssociatedService; import com.jero.contract.service.IPayIncomeContractService; +import com.jero.modules.system.entity.SysRole; import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysRoleService; import com.jero.modules.system.service.ISysUserService; import com.jero.pack.entity.PayPackCompany; import com.jero.pack.entity.PayPackCompanyProject; @@ -34,6 +45,7 @@ import com.jero.temporary.service.IPayContactsManagementTemporaryService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -43,10 +55,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.lang.reflect.Array; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; /** * @Description: pay_common_project @@ -74,6 +83,9 @@ public class PayCommonProjectServiceImpl extends ServiceImpl queryPageList(Page page, PayWorkingGroupSubItem payWorkingGroupSubitem,String paymentDate) { - return payWorkingGroupSubItemMapper.queryPageList(page,payWorkingGroupSubitem,paymentDate); + IPage payWorkingGroupSubItemIPage = payWorkingGroupSubItemMapper.queryPageList(page, payWorkingGroupSubitem, paymentDate); + if (StringUtils.isNotBlank(payWorkingGroupSubitem.getMeetingId())){ + List records = payWorkingGroupSubItemIPage.getRecords(); + for (PayWorkingGroupSubItem workingGroupSubItem : records) { + String workingGroupSubItemId = workingGroupSubItem.getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingRemindRecord::getId,workingGroupSubItemId); + int count = payMeetingRemindRecordService.count(wrapper); + if (count>0){ + workingGroupSubItem.setRemind(PayProjectCommon.YES); + } + } + } + return payWorkingGroupSubItemIPage; } @Override @@ -156,7 +184,10 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl forgetPassword(@RequestBody SysUser user) { - sysUserService.forgetPassword(user); + @ApiOperation(value = "短信验证码修改密码") + @PostMapping(value = "/verificationChangePassword") + public Result verificationChangePassword(@RequestBody SysLoginVO loginVO) { + sysUserService.verificationChangePassword(loginVO); return Result.OK("修改密码成功"); } + + @ApiOperation(value = "发送手机号验证码") + @GetMapping(value = "/sendVerificationCode") + public Result sendVerificationCode(String phone) { + phone = PasswordUtil.encrypt(phone); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getPhone, phone); + SysUser sysUser = sysUserService.getOne(queryWrapper); + if (Objects.isNull(sysUser)){ + throw new JeroBootException("手机号不存在"); + } + sysBaseAPI.sendVerificationCode(phone,"2",null,null); + String string = redisUtil.get("_verification:_phone:" + PasswordUtil.decrypt(phone)).toString(); + return Result.OK(string); + } } \ No newline at end of file diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysAnnouncementController.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysAnnouncementController.java index 95437811..5dc43ad7 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysAnnouncementController.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysAnnouncementController.java @@ -11,6 +11,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.jero.common.system.api.ISysBaseAPI; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import com.jero.common.api.vo.Result; @@ -67,6 +69,8 @@ public class SysAnnouncementController { private ISysAnnouncementSendService sysAnnouncementSendService; @Resource private WebSocket webSocket; + @Autowired + private ISysBaseAPI sysBaseAPI; /** * 分页列表查询 @@ -313,6 +317,13 @@ public class SysAnnouncementController { anntMsgList = sysAnnouncementService.querySysCementPageByUserId(anntMsgList,userId,"1");//通知公告消息 Page sysMsgList = new Page(0,5); sysMsgList = sysAnnouncementService.querySysCementPageByUserId(sysMsgList,userId,"2");//系统消息 + if(!CollectionUtils.isEmpty(sysMsgList.getRecords())){ + List list = sysMsgList.getRecords(); + list.forEach(p->{ + p.setTitile(sysBaseAPI.translateDict("notice_type",p.getTitile())); + }); + sysMsgList.setRecords(list); + } Map sysMsgMap = new HashMap(); sysMsgMap.put("sysMsgList", sysMsgList.getRecords()); sysMsgMap.put("sysMsgTotal", sysMsgList.getTotal()); diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java index 01642f1e..fe6cbbf0 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java @@ -32,6 +32,7 @@ public class SysAnnouncement implements Serializable { * 标题 */ @Excel(name = "标题", width = 15) + @Dict(dicCode = "notice_type") private java.lang.String titile; /** * 内容 @@ -144,4 +145,8 @@ public class SysAnnouncement implements Serializable { * 摘要 */ private java.lang.String msgAbstract; + /** + * 模板编码 + */ + private String templateCode; } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml b/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml index de13e8b6..596a92fe 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml @@ -37,7 +37,8 @@ sa.bus_id as bus_id, sa.open_type as open_type, sa.open_page as open_page, - sa.msg_abstract + sa.msg_abstract, + sa.template_code from sys_announcement_send sas left join sys_announcement sa ON sas.annt_id = sa.id where sa.send_status = '1' diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/AnnouncementSendModel.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/AnnouncementSendModel.java index f6ba4956..771fd498 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/AnnouncementSendModel.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/AnnouncementSendModel.java @@ -2,6 +2,7 @@ package com.jero.modules.system.model; import java.io.Serializable; +import com.jero.common.aspect.annotation.Dict; import org.springframework.format.annotation.DateTimeFormat; import com.baomidou.mybatisplus.annotation.IdType; @@ -29,6 +30,7 @@ public class AnnouncementSendModel implements Serializable { /**用户id*/ private java.lang.String userId; /**标题*/ + @Dict(dicCode = "notice_type") private java.lang.String titile; /**内容*/ private java.lang.String msgContent; @@ -77,4 +79,9 @@ public class AnnouncementSendModel implements Serializable { */ private java.lang.String msgAbstract; + /** + * 模板编码 + */ + private java.lang.String templateCode; + } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java index 212b43b5..293ae9b3 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java @@ -1,7 +1,12 @@ package com.jero.modules.system.model; +import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; /** * 登录表单 @@ -9,6 +14,7 @@ import io.swagger.annotations.ApiModelProperty; * @Author scott * @since 2019-01-18 */ +@Data @ApiModel(value="登录对象", description="登录对象") public class SysLoginModel { @ApiModelProperty(value = "账号") @@ -21,44 +27,4 @@ public class SysLoginModel { private String checkKey; @ApiModelProperty(value = "RSA公钥") private String rsaPublicKey; - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getCaptcha() { - return captcha; - } - - public void setCaptcha(String captcha) { - this.captcha = captcha; - } - - public String getCheckKey() { - return checkKey; - } - - public void setCheckKey(String checkKey) { - this.checkKey = checkKey; - } - - public String getRsaPublicKey() { - return rsaPublicKey; - } - - public void setRsaPublicKey(String rsaPublicKey) { - this.rsaPublicKey = rsaPublicKey; - } } \ No newline at end of file diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginVO.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginVO.java new file mode 100644 index 00000000..9965b27e --- /dev/null +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginVO.java @@ -0,0 +1,51 @@ +package com.jero.modules.system.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; + +/** + * @author liJiaRao + * @date 2021-09-24 10:00 + */ +@Data +public class SysLoginVO { + + @ApiModelProperty(value = "用户名") + private String username; + + /**手机号*/ + @ApiModelProperty(value = "手机号") + @NotEmpty(message = "手机号不能为空!") + @Pattern(regexp = "^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$",message = "手机号码格式错误") + private String phone; + + /** + * 密码 + */ + @ApiModelProperty(value = "密码") + @NotEmpty(message = "密码不能为空!") + private String password; + + /** + * 确认密码 + */ + @ApiModelProperty(value = "确认密码") + @NotEmpty(message = "确认密码不能为空!") + private String verifyPassword; + + /** + * 验证码 + */ + @ApiModelProperty(value = "验证码") + @NotEmpty(message = "验证码不能为空!") + private String verifyCode; + + @ApiModelProperty(value = "RSA公钥") + @NotEmpty(message = "RSA公钥不能为空!") + private String rsaPublicKey; + +} diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index 7342ee7e..a780a314 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -14,6 +14,7 @@ import com.jero.common.system.vo.SysUserCacheInfo; import com.jero.modules.system.entity.SysUser; import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.system.model.SysLoginVO; import com.jero.modules.system.model.SysUserSysDepartModel; import com.jero.modules.system.vo.SysUserVo; import org.springframework.transaction.annotation.Transactional; @@ -241,5 +242,12 @@ public interface ISysUserService extends IService { String resetPassword(String username); - void forgetPassword(SysUser user); + void verificationChangePassword(SysLoginVO loginVO); + + /** + * 通过角色编码,查询角色下用户 + * @param roleCode 角色集合 + * @return + */ + List getRolesUser(List roleCode); } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java index 8de4e14b..b42809ad 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java @@ -13,6 +13,7 @@ import com.jero.common.util.HuaWeiSmsUtil; import com.jero.modules.oss.mapper.OSSFileMapper; import com.jero.modules.pay.company.entity.PayContactsManagement; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import com.jero.common.api.dto.OnlineAuthDTO; @@ -406,13 +407,13 @@ public class SysBaseApiImpl implements ISysBaseAPI { } SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); //模板标题 - title = title==null?sysSmsTemplate.getTemplateName():title; + // title = title==null?sysSmsTemplate.getTemplateName():title; //模板内容 String content = sysSmsTemplate.getTemplateContent(); if(map!=null) { for (Map.Entry entry : map.entrySet()) { String str = "${" + entry.getKey() + "}"; - title = title.replace(str, entry.getValue()); + // title = title.replace(str, entry.getValue()); content = content.replace(str, entry.getValue()); } } @@ -430,6 +431,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { announcement.setBusType(busType); announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); + announcement.setTemplateCode(templateCode); sysAnnouncementMapper.insert(announcement); // 2.插入用户通告阅读标记表记录 String userId = toUser; @@ -1012,6 +1014,34 @@ public class SysBaseApiImpl implements ISysBaseAPI { emailHandle.SendMsg(email, title, content); } + @Override + public void sendEmailTemplateMsg(String email,String title,String templateCode,Map map) { + if(StringUtils.isBlank(email)){ + throw new JeroBootException("邮件接收人不能为空"); + } + if(StringUtils.isBlank(templateCode)){ + throw new JeroBootException("模板编码不能为空"); + } + List sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); + if(CollectionUtils.isEmpty(sysSmsTemplates)){ + throw new JeroBootException("消息模板不存在,模板编码:"+templateCode); + } + SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); + //模板标题 + // title = Objects.isNull(title) ? sysSmsTemplate.getTemplateName() : title; + //模板内容 + String content = sysSmsTemplate.getTemplateContent(); + if(!Objects.isNull(map)) { + for (Map.Entry entry : map.entrySet()) { + String str = "${" + entry.getKey() + "}"; + // title = title.replace(str, entry.getValue()); + content = content.replace(str, entry.getValue()); + } + } + EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(); + emailHandle.SendMsg(email, title, content); + } + /** * 发送邮件+ 附件消息 * @param email @@ -1029,6 +1059,33 @@ public class SysBaseApiImpl implements ISysBaseAPI { huaWeiSmsUtil.sendVerificationCode(phone, codeType, codeTime, templateParas); } + @Override + public void sendSMS(String phone, String codeType, String codeTime,String templateCode,HashMap map) { + if(StringUtils.isBlank(phone)){ + throw new JeroBootException("手机号不能为空"); + } + if(StringUtils.isBlank(templateCode)){ + throw new JeroBootException("模板编码不能为空"); + } + List sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); + if(CollectionUtils.isEmpty(sysSmsTemplates)){ + throw new JeroBootException("消息模板不存在,模板编码:"+templateCode); + } + SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); + //模板标题 + String title = sysSmsTemplate.getTemplateName(); + //模板内容 + String content = sysSmsTemplate.getTemplateContent(); + if(!Objects.isNull(map)) { + for (Map.Entry entry : map.entrySet()) { + String str = "${" + entry.getKey() + "}"; + title = title.replace(str, entry.getValue()); + content = content.replace(str, entry.getValue()); + } + } + huaWeiSmsUtil.sendVerificationCode(phone, codeType, codeTime, content); + } + /** * 根据部门id查询部门所有的父级(不包含自己) * @author 马志朝 diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index f3160832..00c999ec 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.exception.JeroBootException; import com.jero.common.util.*; +import com.jero.modules.system.model.SysLoginVO; import com.jero.modules.system.vo.SysUserVo; import lombok.extern.slf4j.Slf4j; import com.jero.common.api.vo.Result; @@ -26,7 +27,9 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.*; @@ -475,55 +478,80 @@ public class SysUserServiceImpl extends ServiceImpl impl } @Override - public void forgetPassword(SysUser user) { - fPRuleCheck(user); + public void verificationChangePassword(SysLoginVO loginVO) { + fPRuleCheck(loginVO); //前端传入密码解密 - String username = user.getUsername(); - String password = user.getPassword(); - String verifyPassword = user.getVerifyPassword(); - String RSAPublicKey = user.getRsapublickey(); + String phone = loginVO.getPhone(); + String password = loginVO.getPassword(); + String verifyPassword = loginVO.getVerifyPassword(); + String RSAPublicKey = loginVO.getRsaPublicKey(); String RSAPrivateKey = String.valueOf(redisUtil.get(RSAPublicKey)); try { password = CommonUtils.decryptBtRsaPriKey(password, RSAPrivateKey); verifyPassword = CommonUtils.decryptBtRsaPriKey(verifyPassword, RSAPrivateKey); - user.setPassword(password); - user.setVerifyPassword(verifyPassword); + loginVO.setPassword(password); + loginVO.setVerifyPassword(verifyPassword); } catch (Exception e) { e.printStackTrace(); } //处理手机获取验证码的逻辑 - Object obj = redisUtil.get("_verification:_phone:" + user.getPhone()); + Object obj = redisUtil.get("_verification:_phone:" + phone); if (obj == null) { throw new JeroBootException("验证码失效,请重新发送"); } String code = obj.toString(); - if (!user.getVerifyCode().equals(code)) { + if (!loginVO.getVerifyCode().equals(code)) { throw new JeroBootException("验证码错误!"); } if (!password.equals(verifyPassword)) { throw new JeroBootException("新密码和确认密码不一致,请重新输入"); } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(SysUser::getUsername, username); - SysUser sysUser = userMapper.selectOne(wrapper); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getPhone, PasswordUtil.encrypt(phone)); + SysUser sysUser = this.getOne(queryWrapper); if (ObjectUtils.isEmpty(sysUser)) { throw new JeroBootException("用户不存在"); } String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, sysUser.getSalt()); - user.setPassword(passwordEncode); - userMapper.forgetPassword(user); - redisUtil.del("_verification:_phone:" + user.getPhone()); + sysUser.setPassword(passwordEncode); + userMapper.forgetPassword(sysUser); + redisUtil.del("_verification:_phone:" + phone); List roles = sysBaseAPI.getRolesByUsername(sysUser.getUsername()); //SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper().eq(SysRole::getRoleCode, roles.get(0))); } + @Override + public List getRolesUser(List roleCode) { + if(CollectionUtils.isEmpty(roleCode)){ + throw new JeroBootException("角色编码为空!"); + } + LambdaQueryWrapper queryRole = new LambdaQueryWrapper<>(); + queryRole.in(SysRole::getRoleCode,roleCode); + List listSysRole = sysRoleMapper.selectList(queryRole); + if(CollectionUtils.isEmpty(listSysRole)){ + throw new JeroBootException("角色不存在!"); + } + List listRoleId = listSysRole.stream().map(SysRole::getId).collect(Collectors.toList()); + LambdaQueryWrapper querySysUserRole = new LambdaQueryWrapper<>(); + querySysUserRole.in(SysUserRole::getRoleId,listRoleId); + List listSysUserRole = sysUserRoleMapper.selectList(querySysUserRole); + if(StringUtils.isEmpty(listSysUserRole)){ + return null; + } + List listUserId = listSysUserRole.stream().map(SysUserRole::getUserId).collect(Collectors.toList()); + LambdaQueryWrapper querySysUser = new LambdaQueryWrapper<>(); + querySysUser.in(SysUser::getId,listUserId); + List listSysUser = userMapper.selectList(querySysUser); + return listSysUser; + } + /** * 忘记密码校验 * @param user */ - private void fPRuleCheck(SysUser user){ + private void fPRuleCheck(SysLoginVO user){ if(ObjectUtils.isEmpty(user.getUsername())){ throw new JeroBootException("用户名为必填"); }else if(user.getUsername().length()>50){ diff --git a/jero-boot-single-startup/src/main/resources/application-dev.yml b/jero-boot-single-startup/src/main/resources/application-dev.yml index 1cf7c870..88da7252 100644 --- a/jero-boot-single-startup/src/main/resources/application-dev.yml +++ b/jero-boot-single-startup/src/main/resources/application-dev.yml @@ -29,16 +29,16 @@ spring: username: zhangqinlin@syxysoft.com password: Zql0000000 port: 25 -# host: smtp.163.com -# username: test@163.com -# password: ?? -# properties: -# mail: -# smtp: -# auth: true -# starttls: -# enable: true -# required: true + # host: smtp.163.com + # username: test@163.com + # password: ?? + # properties: + # mail: + # smtp: + # auth: true + # starttls: + # enable: true + # required: true ## quartz定时任务,采用数据库方式 quartz: job-store-type: jdbc @@ -172,9 +172,9 @@ mybatis-plus: id-type: ASSIGN_ID # 默认数据库表下划线命名 table-underline: true -# configuration: + # configuration: # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 返回类型为Map,显示null对应的字段 # call-setters-on-nulls: true #jero专用配置