From 51cd7a194a193da803f2769f7552db210f34b370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= <18222067976@163.com> Date: Mon, 13 Sep 2021 16:21:02 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E6=89=93=E5=8C=85=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PayPackCompanyProjectController.java | 11 ++++++ .../xml/PayPackCompanyProjectMapper.xml | 36 +++++++++++++++---- .../PayPackCompanyProjectServiceImpl.java | 18 +++++++--- .../jero/project/entity/PayCommonProject.java | 13 ++++++- 4 files changed, 66 insertions(+), 12 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java index c489a132..df4783dd 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/controller/PayPackCompanyProjectController.java @@ -14,6 +14,7 @@ import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.pack.common.PackCommon; import com.jero.pack.entity.PayPackCompany; @@ -89,6 +90,16 @@ public class PayPackCompanyProjectController extends JeroController list = payPackCompanyProjectService.queryListAll(input); + if(!CollectionUtils.isEmpty(list)){ + list.forEach(p->{ + if(!StringUtils.isBlank(p.getPhone())){ + p.setPhone(PasswordUtil.decrypt(p.getPhone())); + } + if(!StringUtils.isBlank(p.getEmail())){ + p.setEmail(PasswordUtil.decrypt(p.getEmail())); + } + }); + } return Result.OK(list); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/mapper/xml/PayPackCompanyProjectMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/pack/mapper/xml/PayPackCompanyProjectMapper.xml index 559dcad8..a37f6708 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/mapper/xml/PayPackCompanyProjectMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/mapper/xml/PayPackCompanyProjectMapper.xml @@ -3,11 +3,34 @@ + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyProjectService.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyProjectService.java index 6117860e..b97758ed 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyProjectService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyProjectService.java @@ -4,6 +4,7 @@ package com.jero.pack.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.pack.entity.PayPackCompanyProject; import com.jero.pack.vo.PayPackCompanyProjectInput; +import com.jero.pack.vo.PayProjectExcel; import com.jero.project.entity.PayCommonProject; import java.util.List; @@ -32,7 +33,7 @@ public interface IPayPackCompanyProjectService extends IService queryPackListAll(PayPackCompanyProjectInput input); /** - * @Description + * @Description 打包 * @Author lqt * @Date 2021/9/10 * @Param @@ -69,4 +70,22 @@ public interface IPayPackCompanyProjectService extends IService queryPackToYear(String companyId,String projectType,String year); + /** + * @Description 添加打包企业 + * @Author lqt + * @Date 2021/9/13 + * @Param + * @Return + * @Exception + */ + void setPack(String companyId, String contactsId, String packYear, String projectId, String projectType, Integer pack); + /** + * @Description 导出excel数据 + * @Author lqt + * @Date 2021/9/13 + * @Param + * @Return + * @Exception + */ + List getExportXls(List list,String companyId); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyService.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyService.java index 6d6210bb..2c703c19 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/IPayPackCompanyService.java @@ -5,6 +5,8 @@ import com.jero.pack.entity.PayPackCompany; import com.jero.pack.vo.PayPackCompanyProjectInput; import com.jero.project.entity.PayCommonProject; +import java.util.List; + /** * @Description: pay_pack_company * @Author: jeecg-boot @@ -20,7 +22,7 @@ public interface IPayPackCompanyService extends IService { * @Return * @Exception */ - void addPayPackCompany(PayPackCompany payPackCompany); + PayPackCompany addPayPackCompany(PayPackCompany payPackCompany); /** * @Description 编辑 * @Author lqt diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyProjectServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyProjectServiceImpl.java index 7cafbf39..646a72ab 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyProjectServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyProjectServiceImpl.java @@ -5,6 +5,7 @@ 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.service.ProjectPackService; +import com.jero.contract.common.PayIncomeContractCommon; import com.jero.pack.common.PackCommon; import com.jero.pack.entity.PayPackCompany; import com.jero.pack.entity.PayPackCompanyProject; @@ -12,11 +13,13 @@ import com.jero.pack.mapper.PayPackCompanyProjectMapper; import com.jero.pack.service.IPayPackCompanyProjectService; import com.jero.pack.service.IPayPackCompanyService; import com.jero.pack.vo.PayPackCompanyProjectInput; +import com.jero.pack.vo.PayProjectExcel; import com.jero.project.entity.PayCommonProject; 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 org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -55,7 +58,7 @@ public class PayPackCompanyProjectServiceImpl extends ServiceImpl list = new ArrayList<>(); PayPackCompanyProjectInput input = new PayPackCompanyProjectInput(); input.setProjectId(s1); input.setCompanyId(payPackCompany.getCompanyId()); - List list = payPackCompanyProjectService.queryPackListAll(input); + list = payPackCompanyProjectService.queryPackListAll(input); if(CollectionUtils.isEmpty(list)){ throw new JeroBootException("项目下企业不匹配!"); } @@ -140,4 +144,40 @@ public class PayPackCompanyProjectServiceImpl extends ServiceImpl queryPackToYear(String companyId,String projectType,String year) { return payPackCompanyProjectMapper.queryPackToYear(companyId,projectType,year, PackCommon.COME2); } + + @Override + public void setPack(String companyId, String contactsId, String packYear, String projectId,String projectType, Integer pack) { + // 合同选择了打包,查看打包年份&&打包企业是否存在 + if(Objects.equals(pack, PackCommon.PACKAGING1)){ + LambdaQueryWrapper queryPayPackCompany = new LambdaQueryWrapper<>(); + queryPayPackCompany.eq(PayPackCompany::getCompanyId,companyId); + queryPayPackCompany.eq(PayPackCompany::getPackYear,packYear); + List listPayPackCompany = payPackCompanyService.list(queryPayPackCompany); + PayPackCompany payPackCompany = new PayPackCompany(); + //不存在打包企业 添加打包企业 + if(CollectionUtils.isEmpty(listPayPackCompany)){ + PayPackCompany payPackCompanyData = new PayPackCompany(); + payPackCompanyData.setCompanyId(companyId); + payPackCompanyData.setCompanyContactId(contactsId); + payPackCompanyData.setPackYear(packYear); + payPackCompanyData.setPackContactId(contactsId); + payPackCompany = payPackCompanyService.addPayPackCompany(payPackCompanyData); + }else{ + payPackCompany = listPayPackCompany.get(0); + } + // 添加打包企业成员 + PayPackCompanyProject payPackCompanyProject = new PayPackCompanyProject(); + payPackCompanyProject.setPackId(payPackCompany.getId()); + payPackCompanyProject.setProjectId(projectId); + payPackCompanyProject.setCome(PayIncomeContractCommon.COME1); + payPackCompanyProject.setProjectType(Integer.parseInt(projectType)); + payPackCompanyProjectService.save(payPackCompanyProject); + // projectPackService.updateProjectStatus(projectId,projectType,String.valueOf(PackCommon.PACKAGING1),payPackCompanyProject.getPackId()); + } + } + + @Override + public List getExportXls(List list,String companyId) { + return payPackCompanyProjectMapper.getExportXls(list,companyId); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java index 4bfa73be..9111d07f 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Arrays; +import java.util.List; import java.util.Objects; /** @@ -43,7 +44,7 @@ public class PayPackCompanyServiceImpl extends ServiceImpl query = new LambdaQueryWrapper<>(); query.eq(PayPackCompany::getCompanyId,payPackCompany.getCompanyId()); @@ -58,6 +59,7 @@ public class PayPackCompanyServiceImpl extends ServiceImpl0 && <总金额(半满标志))*/ +// @Excel(name = "到账(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))", width = 15) + @ApiModelProperty(value = "到账(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))") + private Integer inAccount; + /**开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))*/ +// @Excel(name = "开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))", width = 15) + @ApiModelProperty(value = "开票(1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志))") + private Integer makeInvoice; + /**邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))*/ +// @Excel(name = "邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))", width = 15) + @ApiModelProperty(value = "邮寄((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))") + private Integer mail; + /**来款方式(1:无,2:合同,3:收费通知)*/ +// @Excel(name = "来款方式(1:无,2:合同,3:收费通知)", width = 15) + @ApiModelProperty(value = "来款方式(1:无,2:合同,3:收费通知)") + @NotNull(message = "需要发票不能为空!") + private Integer chargeWay; + /**合同编号*/ +// @Excel(name = "合同编号", width = 15) + @ApiModelProperty(value = "合同编号") + @Size(max = 50,message = "合同编号长度不能大于50个字符") + private String contractNum; + /**收费通知号*/ +// @Excel(name = "收费通知号", width = 15) + @ApiModelProperty(value = "收费通知号") + @Size(max = 50,message = "收费通知号长度不能大于50个字符") + private String chargeNoticeNo; + /**收费通知文件id*/ +// @Excel(name = "收费通知文件id", width = 15) + @ApiModelProperty(value = "收费通知文件id") + private String chargeNoticeId; + /**催款次数*/ +// @Excel(name = "催款次数", width = 15) + @ApiModelProperty(value = "催款次数") + private Integer pressMoneyTimes; + /**备注*/ +// @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + @Size(max = 200,message = "备注长度不能大于200个字符") + private String remarks; + /**创建人*/ + @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 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 Date updateTime; + + /** + * 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目,5:标协会员项目) + */ + @TableField(exist = false) + @Dict(dicCode = "project_type") + @ApiModelProperty(value = "项目类型") + private Integer projectType; + /** + * 来源(1:收入合同,2:打包管理) + */ + @TableField(exist = false) + @ApiModelProperty(value = "来源(1:收入合同,2:打包管理)") + private Integer come; +} 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 0aa7272d..811f4cba 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 @@ -166,7 +166,7 @@ public class PayCommonProjectController extends JeroController{ // 去掉已打包&&打包年份不一致的数据 if(!CollectionUtils.isEmpty(finalListProject) && Objects.equals(p.getPack(),PayProjectCommon.PACKAGING1) - && finalListProject.contains(p.getId())){ + && !finalListProject.contains(p.getId())){ return; } listNew.add(p); 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 86dee4c4..a0dd278e 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 @@ -7,12 +7,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.exception.JeroBootException; import com.jero.common.service.ProjectDetailService; +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.SysUser; import com.jero.modules.system.service.ISysUserService; +import com.jero.pack.service.IPayPackCompanyProjectService; import com.jero.project.common.PayProjectCommon; import com.jero.project.service.IPayCommonProjectService; import com.jero.project.entity.PayCommonProject; @@ -28,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -60,6 +63,8 @@ public class PayCommonProjectServiceImpl extends ServiceImpl update = new LambdaUpdateWrapper<>(); - update.eq(PayCommonProject::getId,payCommonProject.getId()); - update.set(PayCommonProject::getPack,PayProjectCommon.PACKAGING1); - payCommonProjectService.update(update); - // todo 缺少添加打包功能 + payPackCompanyProjectService.setPack(payCommonProject.getChargeCompanyId(),payCommonProject.getContactsId(),payIncomeContract.getPackYear(),payCommonProject.getId(),PayProjectCommon.PROJECT_TYPE1,payIncomeContract.getPack()); } } @@ -134,21 +146,27 @@ public class PayCommonProjectServiceImpl extends ServiceImpl update = new LambdaUpdateWrapper<>(); - update.eq(PayCommonProject::getId,payCommonProjectOld.getId()); - update.set(PayCommonProject::getPack,PayProjectCommon.PACKAGING1); - payCommonProjectService.update(update); - // todo 缺少添加打包功能 - } - setPayCommonProject(payCommonProject); // 先删除临时表企业信息,联系人信息,邮寄联系人信息 payCompanyManagementTemporaryService.removeById(payCommonProjectOld.getChargeCompanyTemporaryId()); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java index e0fa98b1..be483b04 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java @@ -12,7 +12,10 @@ import com.jero.company.entity.PayContactsManagement; import com.jero.company.service.IPayCompanyManagementService; import com.jero.company.service.IPayContactsManagementService; 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.pack.service.IPayPackCompanyProjectService; import com.jero.project.common.PayProjectCommon; import com.jero.project.entity.PayCommonProject; import com.jero.project.entity.PayWorkingGroup; @@ -71,6 +74,10 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl update = new LambdaUpdateWrapper<>(); - update.eq(PayWorkingGroupSubItem::getId,payWorkingGroupSubItem.getId()); - update.set(PayWorkingGroupSubItem::getPack,PayProjectCommon.PACKAGING1); - payWorkingGroupSubItemService.update(update); - // todo 缺少添加打包功能 + payPackCompanyProjectService.setPack(payWorkingGroupSubItem.getChargeCompanyId(),payWorkingGroupSubItem.getContactsIdOne(),payIncomeContract.getPackYear(),payIncomeContract.getId(),PayProjectCommon.PROJECT_TYPE2,payIncomeContract.getPack()); } } @@ -194,19 +210,26 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl update = new LambdaUpdateWrapper<>(); - update.eq(PayWorkingGroupSubItem::getId,payWorkingGroupSubItem.getId()); - update.set(PayWorkingGroupSubItem::getPack,PayProjectCommon.PACKAGING1); - payWorkingGroupSubItemService.update(update); - // todo 缺少添加打包功能 + if(Objects.isNull(payIncomeContract)){ + PayIncomeContract payIncomeContractAdd = null; + // 来款方式为合同,校验合同编号 + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){ + payIncomeContractAdd = payIncomeContractService.setPayIncomeContractAssociated(payWorkingGroupSubItem.getContractNum(),payWorkingGroupSubItem.getChargeCompanyId(),payWorkingGroupSubItem.getId()); + } + if(!Objects.isNull(payIncomeContract)){ + payWorkingGroupSubItem.setPack(PayProjectCommon.PACKAGING1); + PayIncomeContractAssociated payIncomeContractAssociated = new PayIncomeContractAssociated(); + payIncomeContractAssociated.setContractId(payIncomeContract.getId()); + payIncomeContractAssociated.setProjectType(Integer.parseInt(PayProjectCommon.PROJECT_TYPE1)); + payIncomeContractAssociated.setProjectId(payWorkingGroupSubItem.getId()); + payIncomeContractAssociatedService.save(payIncomeContractAssociated); + }else{ + payWorkingGroupSubItem.setPack(PayProjectCommon.PACKAGING0); + } + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if(!Objects.isNull(payIncomeContractAdd) && Objects.equals(payIncomeContractAdd.getPack(),PayProjectCommon.PACKAGING1)){ + payPackCompanyProjectService.setPack(payWorkingGroupSubItem.getChargeCompanyId(),payWorkingGroupSubItem.getContactsIdOne(),payIncomeContract.getPackYear(),payWorkingGroupSubItem.getId(),PayProjectCommon.PROJECT_TYPE2,payIncomeContract.getPack()); + } } // 先删除临时表企业信息,联系人信息,邮寄联系人信息 From d38a28955fbb97c64b0754999e0b6b1def22643e Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 14 Sep 2021 09:49:56 +0800 Subject: [PATCH 08/11] =?UTF-8?q?fix=20[sys/role/treeList]=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jero/modules/system/service/impl/SysRoleServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java index 840225b3..0baec707 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java @@ -120,7 +120,7 @@ public class SysRoleServiceImpl extends ServiceImpl impl treeModel.setKey(sysRole.getId()); treeModel.setValue(sysRole.getId()); treeModel.setTitle(sysRole.getRoleName()); - treeModel.setParentName(sysRole1.getRoleName()); + treeModel.setParentName(sysRole1==null?null:sysRole1.getRoleName()); List children = getChildrenByParentId(sysRole.getId()); treeModel.setChildren(children); treeModelList.add(treeModel); From 5ee727acaedb1713ac0dda533bb0b57565a20082 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 14 Sep 2021 09:57:01 +0800 Subject: [PATCH 09/11] =?UTF-8?q?add=20=E5=8D=8E=E4=B8=BA=E4=BA=91?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=9F=AD=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/common/util/HuaWeiSmsUtil.java | 330 ++++++++++++++++++ .../src/main/resources/application-dev.yml | 9 + 2 files changed, 339 insertions(+) create mode 100644 jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java new file mode 100644 index 00000000..9b387a03 --- /dev/null +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java @@ -0,0 +1,330 @@ +package com.jero.common.util; + +//如果JDK版本低于1.8,请使用三方库提供Base64类 +//import org.apache.commons.codec.binary.Base64; + +import cn.hutool.core.util.RandomUtil; +import com.alibaba.fastjson.JSON; +import com.jero.common.exception.JeroBootException; +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpHeaders; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.methods.RequestBuilder; +import org.apache.http.client.utils.URLEncodedUtils; +import org.apache.http.conn.ssl.DefaultHostnameVerifier; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.util.EntityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.text.SimpleDateFormat; +import java.util.*; +/** + * @作者:WangHK + * @类名:HuaWeiMSGSMS + * @功能:TODO_华为短信 + * @日期:2021年6月20日 + * @公司:天津合众未来科技有限公司 + */ +@Component +public class HuaWeiSmsUtil { + @Autowired + private RedisUtil redisUtil; + //无需修改,用于格式化鉴权头域,给"X-WSSE"参数赋值 + private static final String WSSE_HEADER_FORMAT = "UsernameToken Username=\"%s\",PasswordDigest=\"%s\",Nonce=\"%s\",Created=\"%s\""; + //无需修改,用于格式化鉴权头域,给"Authorization"参数赋值 + private static final String AUTH_HEADER_VALUE = "WSSE realm=\"SDP\",profile=\"UsernameToken\",type=\"Appkey\""; + public static final String BASE_NUMBER = "123456789"; + @Value("${huaWeiSms.url}") + private String url; + @Value("${huaWeiSms.appKey}") + private String appKey; + @Value("${huaWeiSms.appSecret}") + private String appSecret; + @Value("${huaWeiSms.open}") + private boolean open; + + /** + * @param phone 手机号 + * @param codeType 类型: + * 1.登录检查验证码_验证码类 + * 2.忘记密码_验证码类 + * 3.会员到期提醒_通知类 + * 4.发票邮寄通知提醒_通知类 + * @param codeTime 失效时间 + * 条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称 + * 国际/港澳台短信不用关注该参数 + * 失效时间为0时不存redis + * @param templateParas 传递参数,通知类需要 + */ + public Boolean sendVerificationCode(String phone, String codeType, String codeTime,String templateParas) { + String sender; //通道 + String templateId; //模板 + String signature; //签名名称 + //模板变量,此处以单变量验证码短信为例,请客户自行生成6位验证码,并定义为字符串类型,以杜绝首位0丢失的问题(例如:002569变成了2569)。 + //随机生成6位数字 + String randomNumber = RandomUtil.randomString(BASE_NUMBER,6); + //设置短信有效时间 + codeTime = this.resRedisTime(codeTime); + //传进来为秒数所以除以60 + String verificationTime = this.resVerificationTime(codeTime); + //解密手机号 + phone = PasswordUtil.decrypt(phone); + long expire = redisUtil.getExpire("_verification:_phone:" + phone); + //值为-2代表没有此数据 + if (expire != -2){ + if (600 - expire <= 60){ + throw new JeroBootException("1分钟内只能发送一次验证码"); + } + } + switch (codeType) { + case "1": + //中汽标协-登录检查验证码 + sender = "8821062807743"; + signature = "中汽标协"; + templateId = "9fbee7166af24bbfacc178e417345a21"; + templateParas = "[" + randomNumber + "," + phone + "," + verificationTime + "]"; + break; + case "2": + //中汽标协-忘记密码 + sender = "8821062807743"; + signature = "中汽标协"; + templateId = "6f8573c5adc54df2a56a6e48556c3044"; + templateParas = "[" + randomNumber + "," + phone + "," + verificationTime + "]"; + break; + case "3": + //中汽标协-会员到期提醒 + sender = "8821062807762"; + signature = "中汽标协"; + templateId = "3c6321febaa84fecb68d6b0f5bbc0754"; + //通知类短信,不需要存redis + codeTime = "0"; + break; + case "4": + //中汽标协-发票邮寄通知提醒 + sender = "8821062807762"; + signature = "中汽标协"; + templateId = "077964a02a814149bb01900e43c9a04e"; + codeTime = "0"; + break; + default: + throw new JeroBootException("codeType flase."); + } + //调用华为短信发送 + return this.huaWeiSendSms(phone, codeTime, url, appKey, appSecret, templateParas,sender, templateId, signature,randomNumber); + } + + /** + * 调用华为短信发送 + * + * @param phone 手机号 + * @param codeTime 失效时间 + * @param url APP接入地址+接口访问URI + * @param appKey APP_Key + * @param appSecret APP_Secret + * @param sender 通道 + * @param templateId 模板 + * @param signature 签名名称 + * @return + */ + public Boolean huaWeiSendSms(String phone, String codeTime, String url, String appKey, String appSecret, + String templateParas, String sender, String templateId, String signature,String randomNumber) { + //必填,全局号码格式(包含国家码),示例:+86151****6789,多个号码之间用英文逗号分隔 +// String receiver = "151****6789"; //短信接收人号码 + //选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告 + String statusCallBack = ""; + + /** + * 选填,使用无变量模板时请赋空值 String templateParas = ""; + * 单变量模板示例:模板内容为"您的验证码是${1}"时,templateParas可填写为"[\"369751\"]" + * 双变量模板示例:模板内容为"您有${1}件快递请到${2}领取"时,templateParas可填写为"[\"3\",\"人民公园正门\"]" + * 模板中的每个变量都必须赋值,且取值不能为空 + * 查看更多模板和变量规范:产品介绍>模板和变量规范 + */ + + //请求Body,不携带签名名称时,signature请填null + String body = this.resBody(sender, phone, templateId, templateParas, statusCallBack, signature); + + //请求Headers中的X-WSSE参数值 + String wsseHeader = this.resWsseHeader(appKey, appSecret); + + this.sendSms(url, wsseHeader, body, phone, randomNumber, codeTime); + return Boolean.TRUE; + } + + public String resRedisTime(String codeTime) { + //如果没有设置验证码失效时间默认600秒 + if (StringUtils.isBlank(codeTime)) { + codeTime = "600"; + } + return codeTime; + } + + /** + * 设置短信有效时间 + */ + public String resVerificationTime(String codeTime) { + //如果没有设置验证码失效时间默认600秒 + if (StringUtils.isBlank(codeTime)) { + codeTime = "600"; + } + //传进来为秒数所以除以60 + int time = Integer.parseInt(codeTime) / 60; + return String.valueOf(time); + } + + /** + * 请求Body,不携带签名名称时,signature请填null + */ + public String resBody(String sender, String phone, String templateId, String templateParas, String statusCallBack, String signature) { + String body = buildRequestBody(sender, phone, templateId, templateParas, statusCallBack, signature); + if (null == body || body.isEmpty()) { + throw new JeroBootException("body is null."); + } + return body; + } + + /** + * 请求Headers中的X-WSSE参数值 + */ + public String resWsseHeader(String appKey, String appSecret) { + String wsseHeader = buildWsseHeader(appKey, appSecret); + if (null == wsseHeader || wsseHeader.isEmpty()) { + throw new JeroBootException("wsse header is null."); + } + return wsseHeader; + } + + public void sendSms(String url, String wsseHeader, String body, String phone, String randomNumber, String codeTime) { + try { + //如果JDK版本低于1.8,可使用如下代码 + //CloseableHttpClient client = HttpClients.custom() + // .setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { + // @Override + // public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + // return true; + // } + // }).build()).setSSLHostnameVerifier(new DefaultHostnameVerifier()).build(); + + //如果JDK版本是1.8,可使用如下代码 + CloseableHttpClient client = null; + try { + client = HttpClients.custom() + .setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, + (x509CertChain, authType) -> true).build()) + .setSSLHostnameVerifier(new DefaultHostnameVerifier()) + .build(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } + if (open){ + HttpResponse response = null; + response = client.execute(RequestBuilder.create("POST")//请求方法POST + .setUri(url) + .addHeader(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded") + .addHeader(HttpHeaders.AUTHORIZATION, AUTH_HEADER_VALUE) + .addHeader("X-WSSE", wsseHeader) + .setEntity(new StringEntity(body)).build()); + + //判断发送是否成功 + String result = EntityUtils.toString(response.getEntity()); + String code = JSON.parseObject(result).getString("code"); + String description = JSON.parseObject(result).getString("description"); + if (!"000000".equals(code) || !"Success".equals(description)) { + throw new JeroBootException("发送短信失败!"); + } + } + //如果时间为0是通知类短信,不需要存redis + if (!"0".equals(codeTime)){ + if (!redisUtil.set("_verification:_phone:" + phone, randomNumber, Long.valueOf(codeTime))) { + throw new JeroBootException("redis false."); + } + } +// System.out.println("response.toString(): " + response.toString()); //打印响应头域信息 +// System.out.println("EntityUtils.toString(response.getEntity()): " + EntityUtils.toString(response.getEntity())); //打印响应消息实体 + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 构造请求Body体 + * + * @param sender + * @param receiver + * @param templateId + * @param templateParas + * @param statusCallbackUrl + * @param signature | 签名名称,使用国内短信通用模板时填写 + * @return + */ + static String buildRequestBody(String sender, String receiver, String templateId, String templateParas, + String statusCallbackUrl, String signature) { + if (null == sender || null == receiver || null == templateId || sender.isEmpty() || receiver.isEmpty() + || templateId.isEmpty()) { + throw new JeroBootException("buildRequestBody(): sender, receiver or templateId is null."); + } + List keyValues = new ArrayList(); + + keyValues.add(new BasicNameValuePair("from", sender)); + keyValues.add(new BasicNameValuePair("to", receiver)); + keyValues.add(new BasicNameValuePair("templateId", templateId)); + if (null != templateParas && !templateParas.isEmpty()) { + keyValues.add(new BasicNameValuePair("templateParas", templateParas)); + } + if (null != statusCallbackUrl && !statusCallbackUrl.isEmpty()) { + keyValues.add(new BasicNameValuePair("statusCallback", statusCallbackUrl)); + } + if (null != signature && !signature.isEmpty()) { + keyValues.add(new BasicNameValuePair("signature", signature)); + } + + return URLEncodedUtils.format(keyValues, Charset.forName("UTF-8")); + } + + /** + * 构造X-WSSE参数值 + * + * @param appKey + * @param appSecret + * @return + */ + static String buildWsseHeader(String appKey, String appSecret) { + if (null == appKey || null == appSecret || appKey.isEmpty() || appSecret.isEmpty()) { + throw new JeroBootException("buildWsseHeader(): appKey or appSecret is null."); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + String time = sdf.format(new Date()); //Created + String nonce = UUID.randomUUID().toString().replace("-", ""); //Nonce + + byte[] passwordDigest = DigestUtils.sha256(nonce + time + appSecret); + String hexDigest = Hex.encodeHexString(passwordDigest); + + //如果JDK版本是1.8,请加载原生Base64类,并使用如下代码 + String passwordDigestBase64Str = Base64.getEncoder().encodeToString(hexDigest.getBytes()); //PasswordDigest + //如果JDK版本低于1.8,请加载三方库提供Base64类,并使用如下代码 + //String passwordDigestBase64Str = Base64.encodeBase64String(hexDigest.getBytes(Charset.forName("utf-8"))); //PasswordDigest + //若passwordDigestBase64Str中包含换行符,请执行如下代码进行修正 + //passwordDigestBase64Str = passwordDigestBase64Str.replaceAll("[\\s*\t\n\r]", ""); + + return String.format(WSSE_HEADER_FORMAT, appKey, passwordDigestBase64Str, nonce, time); + } + +} \ No newline at end of file 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 719bffb7..6bdf0082 100644 --- a/jero-boot-single-startup/src/main/resources/application-dev.yml +++ b/jero-boot-single-startup/src/main/resources/application-dev.yml @@ -299,6 +299,15 @@ justauth: prefix: 'demo::' timeout: 1h defaultPassword: HZWLsoft.com123 +#华为云发送短信 +huaWeiSms: + #APP接入地址+接口访问URI + url: https://rtcsms.cn-north-1.myhuaweicloud.com:10743/sms/batchSendSms/v1 + #APP_Key + appKey: g9zviC58Uw3qXZK6r56empl2aXP3 + appSecret: eGt7RfKNia8cK4Z3Vnw5QE4Uy108 + # 短信开关 + open: false standards: url: http://loaclhots:8081/api token: Aa123456!! \ No newline at end of file From 09c9168941347acb448d52e030f5b3204c0a3805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= <18222067976@163.com> Date: Tue, 14 Sep 2021 10:03:22 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=8F=91=E9=80=81=E7=9F=AD=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/PayIncomeContractInstallment.java | 13 +++++++++++++ .../entity/PaySpendingContractInstallment.java | 13 +++++++++++++ .../mapper/PayIncomeContractInstallmentMapper.java | 12 +++++++++++- .../PaySpendingContractInstallmentMapper.java | 11 +++++++++++ .../xml/PayIncomeContractInstallmentMapper.xml | 8 ++++++++ .../xml/PaySpendingContractInstallmentMapper.xml | 8 ++++++++ .../IPayIncomeContractInstallmentService.java | 10 +++++++++- .../IPaySpendingContractInstallmentService.java | 9 +++++++++ .../PayIncomeContractInstallmentServiceImpl.java | 13 +++++++++++++ .../service/impl/PayIncomeContractServiceImpl.java | 1 - .../PaySpendingContractInstallmentServiceImpl.java | 13 +++++++++++++ 11 files changed, 108 insertions(+), 3 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java index 1950e715..40e7d7ad 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -87,4 +88,16 @@ public class PayIncomeContractInstallment implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新时间") private java.util.Date updateTime; + /**临时签订单位名称*/ + @TableField(exist = false) + @ApiModelProperty(value = "签订单位名称") + private java.lang.String signedCompanyTemporaryName; + /**合同名称*/ + @TableField(exist = false) + @ApiModelProperty(value = "合同名称") + private java.lang.String contractName; + /**手机号*/ + @TableField(exist = false) + @ApiModelProperty(value = "手机号") + private java.lang.String phone; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContractInstallment.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContractInstallment.java index b035cb40..7f0afc4a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContractInstallment.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PaySpendingContractInstallment.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -88,4 +89,16 @@ public class PaySpendingContractInstallment implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新时间") private Date updateTime; + /**临时签订单位名称*/ + @TableField(exist = false) + @ApiModelProperty(value = "签订单位名称") + private java.lang.String signedCompanyTemporaryName; + /**合同名称*/ + @TableField(exist = false) + @ApiModelProperty(value = "合同名称") + private java.lang.String contractName; + /**手机号*/ + @TableField(exist = false) + @ApiModelProperty(value = "手机号") + private java.lang.String phone; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractInstallmentMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractInstallmentMapper.java index f13f7b68..e2fb82fb 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractInstallmentMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractInstallmentMapper.java @@ -3,6 +3,8 @@ package com.jero.contract.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jero.contract.entity.PayIncomeContractInstallment; +import java.util.List; + /** * @Description: pay_income_contract_installment * @Author: jeecg-boot @@ -10,5 +12,13 @@ import com.jero.contract.entity.PayIncomeContractInstallment; * @Version: V1.0 */ public interface PayIncomeContractInstallmentMapper extends BaseMapper { - + /** + * @Description 获取满足前一周发送短信的分期信息 + * @Author lqt + * @Date 2021/9/14 + * @Param + * @Return + * @Exception + */ + List getIncomeContract(); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractInstallmentMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractInstallmentMapper.java index 1813b7c0..186d27a8 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractInstallmentMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PaySpendingContractInstallmentMapper.java @@ -4,6 +4,8 @@ package com.jero.contract.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jero.contract.entity.PaySpendingContractInstallment; +import java.util.List; + /** * @Description: pay_spending_contract_installment * @Author: jeecg-boot @@ -12,4 +14,13 @@ import com.jero.contract.entity.PaySpendingContractInstallment; */ public interface PaySpendingContractInstallmentMapper extends BaseMapper { + /** + * @Description 获取满足前一周发送短信的分期信息 + * @Author lqt + * @Date 2021/9/14 + * @Param + * @Return + * @Exception + */ + List getSpendingContract(); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractInstallmentMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractInstallmentMapper.xml index c7c602bb..0e841c3d 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractInstallmentMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractInstallmentMapper.xml @@ -2,4 +2,12 @@ + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractInstallmentMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractInstallmentMapper.xml index 0122a7ed..1d15e12c 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractInstallmentMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PaySpendingContractInstallmentMapper.xml @@ -2,4 +2,12 @@ + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractInstallmentService.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractInstallmentService.java index 70f9a271..35f89544 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractInstallmentService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractInstallmentService.java @@ -10,5 +10,13 @@ import com.jero.contract.entity.PayIncomeContractInstallment; * @Version: V1.0 */ public interface IPayIncomeContractInstallmentService extends IService { - + /** + * @Description 收入合同每阶段前一周给合同签订单位的企业联系人发送付款提醒 + * @Author lqt + * @Date 2021/9/14 + * @Param + * @Return + * @Exception + */ + void sendSMSIncomeContract(); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractInstallmentService.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractInstallmentService.java index 09667fde..46958f48 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractInstallmentService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPaySpendingContractInstallmentService.java @@ -11,5 +11,14 @@ import com.jero.contract.entity.PaySpendingContractInstallment; * @Version: V1.0 */ public interface IPaySpendingContractInstallmentService extends IService { + /** + * @Description 支出合同每阶段前一周给合同签订单位的企业联系人发送付款提醒 + * @Author lqt + * @Date 2021/9/14 + * @Param + * @Return + * @Exception + */ + void sendSMSSpendingContract(); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractInstallmentServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractInstallmentServiceImpl.java index c6c92eeb..35febb9b 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractInstallmentServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractInstallmentServiceImpl.java @@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.contract.entity.PayIncomeContractInstallment; import com.jero.contract.mapper.PayIncomeContractInstallmentMapper; import com.jero.contract.service.IPayIncomeContractInstallmentService; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * @Description: pay_income_contract_installment * @Author: jeecg-boot @@ -14,5 +18,14 @@ import org.springframework.stereotype.Service; */ @Service public class PayIncomeContractInstallmentServiceImpl extends ServiceImpl implements IPayIncomeContractInstallmentService { + @Resource + private PayIncomeContractInstallmentMapper payIncomeContractInstallmentMapper; + @Override + public void sendSMSIncomeContract() { + List list = payIncomeContractInstallmentMapper.getIncomeContract(); + if(!CollectionUtils.isEmpty(list)){ + // todo 发送短信 + } + } } 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 1fcee7fd..ea951a94 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 @@ -27,7 +27,6 @@ import com.jero.pack.entity.PayPackCompany; import com.jero.pack.entity.PayPackCompanyProject; import com.jero.pack.service.IPayPackCompanyProjectService; import com.jero.pack.service.IPayPackCompanyService; -import com.jero.project.common.PayProjectCommon; import com.jero.project.entity.PayCommonProject; import com.jero.project.entity.PayWorkingGroup; import com.jero.project.entity.PayWorkingGroupSubItem; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractInstallmentServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractInstallmentServiceImpl.java index 7391a8ec..b03541cf 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractInstallmentServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PaySpendingContractInstallmentServiceImpl.java @@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.contract.entity.PaySpendingContractInstallment; import com.jero.contract.mapper.PaySpendingContractInstallmentMapper; import com.jero.contract.service.IPaySpendingContractInstallmentService; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * @Description: pay_spending_contract_installment * @Author: jeecg-boot @@ -15,4 +19,13 @@ import org.springframework.stereotype.Service; @Service public class PaySpendingContractInstallmentServiceImpl extends ServiceImpl implements IPaySpendingContractInstallmentService { + @Resource + private PaySpendingContractInstallmentMapper paySpendingContractInstallmentMapper; + @Override + public void sendSMSSpendingContract() { + List list = paySpendingContractInstallmentMapper.getSpendingContract(); + if(!CollectionUtils.isEmpty(list)){ + // todo 发短信 + } + } } From f1f2a3d0fef682feb1c3f8f28339f5c91f2af921 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 14 Sep 2021 11:09:02 +0800 Subject: [PATCH 11/11] =?UTF-8?q?add=20=E7=94=9F=E6=88=90=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-boot-incoming-payment/pom.xml | 11 +++- .../controller/PayMeetingController.java | 9 ++++ .../impl/PayMeetingSituationServiceImpl.java | 3 +- .../main/java/com/jero/util/QrcodeUtil.java | 52 +++++++++++++++++++ 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/util/QrcodeUtil.java diff --git a/jero-boot-incoming-payment/pom.xml b/jero-boot-incoming-payment/pom.xml index bd3249df..a8b99383 100644 --- a/jero-boot-incoming-payment/pom.xml +++ b/jero-boot-incoming-payment/pom.xml @@ -33,7 +33,16 @@ spring-boot-starter-test test - + + com.google.zxing + core + 3.3.0 + + + com.google.zxing + javase + 3.3.0 +