From 6eaa3fec441392e59c411b1aed33fd643e15280c Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 28 二月 2025 17:40:12 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/xiaochen991015/xizang --- /dev/null | 2 - ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java | 6 +-- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 6 ++- ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java | 2 + ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java | 20 ++------- ruoyi-system/src/main/java/com/ruoyi/system/dto/CachPayDto.java | 11 ++++- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 35 +++++++++-------- ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml | 2 ruoyi-common/src/main/java/com/ruoyi/common/config/MailProperties.java | 2 + ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java | 9 +--- 10 files changed, 46 insertions(+), 49 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/MailProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/MailProperties.java index 2774be6..b3cc7e2 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/config/MailProperties.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/MailProperties.java @@ -2,8 +2,10 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; @Data +@Component @ConfigurationProperties(prefix = "mail") public class MailProperties { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsConfig.java deleted file mode 100644 index efc3c79..0000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsConfig.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ruoyi.common.config; - -import com.tencentcloudapi.common.Credential; -import com.tencentcloudapi.common.profile.ClientProfile; -import com.tencentcloudapi.common.profile.HttpProfile; -import com.tencentcloudapi.sms.v20190711.SmsClient; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -@EnableConfigurationProperties({SmsProperties.class, MailProperties.class}) -@ConditionalOnProperty(value = SmsProperties.ENABLE_KEY,matchIfMissing = true) -public class SmsConfig { - - @Bean - public SmsClient smsClient(SmsProperties properties) { - // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId,SecretKey。 - // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考凭证管理 https://github.com/TencentCloud/tencentcloud-sdk-java?tab=readme-ov-file#%E5%87%AD%E8%AF%81%E7%AE%A1%E7%90%86。 - // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。 - // SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi - // Credential cred = new Credential("SecretId", "SecretKey"); - - Credential cred = new Credential(properties.getSecretid(), properties.getSecretkey()); - // 实例化一个http选项,可选的,没有特殊需求可以跳过 - HttpProfile httpProfile = new HttpProfile(); - // 指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com - httpProfile.setEndpoint("sms.tencentcloudapi.com"); - // 实例化一个客户端配置对象 - ClientProfile clientProfile = new ClientProfile(); - clientProfile.setHttpProfile(httpProfile); - // 实例化要请求产品(sms)的client对象,第二个参数是地域信息,可以直接填写字符串ap-guangzhou,支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8 - return new SmsClient(cred, "ap-guangzhou", clientProfile); - } - -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java index af6476c..7a45914 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java @@ -2,8 +2,10 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; @Data +@Component @ConfigurationProperties(prefix = "sms") public class SmsProperties { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java index 2ca307f..c558969 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java @@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; @@ -30,14 +31,15 @@ return smsProperties; } - public SmsClient createSmsClient(SmsProperties properties) { + @PostConstruct + public void createSmsClient() { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId,SecretKey。 // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考凭证管理 https://github.com/TencentCloud/tencentcloud-sdk-java?tab=readme-ov-file#%E5%87%AD%E8%AF%81%E7%AE%A1%E7%90%86。 // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。 // SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi // Credential cred = new Credential("SecretId", "SecretKey"); - Credential cred = new Credential(properties.getSecretid(), properties.getSecretkey()); + Credential cred = new Credential(smsProperties.getSecretid(), smsProperties.getSecretkey()); // 实例化一个http选项,可选的,没有特殊需求可以跳过 HttpProfile httpProfile = new HttpProfile(); // 指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com @@ -46,7 +48,7 @@ ClientProfile clientProfile = new ClientProfile(); clientProfile.setHttpProfile(httpProfile); // 实例化要请求产品(sms)的client对象,第二个参数是地域信息,可以直接填写字符串ap-guangzhou,支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8 - return new SmsClient(cred, "ap-guangzhou", clientProfile); + smsClient = new SmsClient(cred, "ap-guangzhou", clientProfile); } public boolean sendSms(String phone,String templateId,String[] param){ @@ -73,17 +75,5 @@ } } - public static void main(String[] args) { - SmsProperties properties = new SmsProperties(); - properties.setAppId("1400957506"); - properties.setSign("畅云出行"); - properties.setSecretid("AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x"); - properties.setSecretkey("lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU"); - SmsUtil smsUtil = new SmsUtil(); - smsUtil.smsProperties = properties; - smsUtil.smsClient = smsUtil.createSmsClient(properties); - boolean isok = smsUtil.sendSms("15826040006", "2369926", new String[]{"526584"}); - System.out.println(isok); - } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java index bd7321c..010c8f2 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java @@ -2,17 +2,15 @@ import com.ruoyi.common.config.MailProperties; import com.ruoyi.common.exception.ServiceException; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; -import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; +import java.io.UnsupportedEncodingException; +import java.util.Properties; @Component @Slf4j diff --git a/ruoyi-common/src/main/resources/META-INF/spring.factories b/ruoyi-common/src/main/resources/META-INF/spring.factories deleted file mode 100644 index dc976e7..0000000 --- a/ruoyi-common/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.ruoyi.common.config.SmsConfig diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CachPayDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/CachPayDto.java index fbc237e..d7670e1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CachPayDto.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/CachPayDto.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; @@ -14,12 +16,15 @@ public class CachPayDto implements Serializable { @ApiModelProperty(value = "支付类型:1.银行、2.现金") + @NotNull(message = "支付类型不能为空") private Integer payType; @ApiModelProperty(value = "账单ID") + @NotEmpty(message = "账单ID不能为空") private String billId; - @ApiModelProperty(value = "金额") + @ApiModelProperty(value = "实付金额") + @NotNull(message = "实付金额不能为空") private BigDecimal amount; @ApiModelProperty(value = "付款人姓名") @@ -28,6 +33,6 @@ @ApiModelProperty(value = "银行支付的付款凭证") private String voucher; - @ApiModelProperty("银行支付的银行流水") - private TBankFlow tBankFlow; + @ApiModelProperty(value = "银行流水ID") + private String flowId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java index 97d1159..8a78c2d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java @@ -17,9 +17,6 @@ /** * 账单ID列表 */ - @ApiModelProperty("账单ID列表,管理员处理后的") - @NotEmpty(message = "账单列表不能为空") - private List<String> billIds; @ApiModelProperty(value = "账单ID") @NotEmpty(message = "账单ID不能为空") @@ -40,8 +37,8 @@ private LocalDateTime payTime; @ApiModelProperty("支付凭证") private String voucher; - - @ApiModelProperty("银行流水") - private TBankFlow tBankFlow; + @ApiModelProperty("银行流水ID") + @NotEmpty(message = "银行流水ID不能为空") + private String flowId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 753944f..82743d4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -61,6 +61,8 @@ @Autowired private SysUserPostMapper userPostMapper; @Autowired + private TDeptToUserService deptToUserService; + @Autowired private TDeptToUserMapper deptToUserMapper; @Autowired @@ -495,7 +497,7 @@ deptToUser.setDeptId(deptId); deptToUserList.add(deptToUser); } - deptToUserMapper.insertBatchUserDept(deptToUserList); + deptToUserService.saveBatch(deptToUserList); } } @@ -670,7 +672,7 @@ List<Long> userIds = list.stream().map(SysUserVO::getUserId).collect(Collectors.toList()); // 查询所有部门 List<TDept> depts = deptMapper.selectList(Wrappers.lambdaQuery(TDept.class)); - List<TDeptToUser> tDeptToUsers = deptToUserMapper.selectList(Wrappers.lambdaQuery(TDeptToUser.class) + List<TDeptToUser> tDeptToUsers = deptToUserService.list(Wrappers.lambdaQuery(TDeptToUser.class) .in(TDeptToUser::getUserId, userIds)); for (SysUserVO sysUserVO : list) { tDeptToUsers.stream().filter(tDeptToUser -> tDeptToUser.getUserId().equals(sysUserVO.getUserId())).forEach(tDeptToUser -> { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java index dd43535..996410a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java @@ -18,10 +18,7 @@ import com.ruoyi.system.query.TBillQuery; import com.ruoyi.system.query.TInvoiceToBillQuery; import com.ruoyi.system.service.*; -import com.ruoyi.system.vo.TBillVO; import com.taxi591.bankapi.dto.ChargeBillRequest; -import com.tencentcloudapi.sms.v20190711.SmsClient; -import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.beans.BeanUtils; @@ -31,12 +28,15 @@ import javax.annotation.Resource; import javax.validation.constraints.NotEmpty; -import java.util.*; -import java.util.stream.Collectors; import java.math.BigDecimal; import java.text.ParseException; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * <p> @@ -171,7 +171,7 @@ BigDecimal result = presist.getPayFeesMoney().add(tBill.getPayFeesMoney()); save.setPayFeesMoney(result); //缴费后的欠费 =(应缴费+违约金)-已缴费金额 - BigDecimal outstand = save.getPayableFeesMoney() + BigDecimal outstand = presist.getPayableFeesMoney() .add(presist.getPayableFeesPenalty()) .subtract(save.getPayFeesMoney()); save.setOutstandingMoney(outstand); @@ -243,7 +243,7 @@ @Override @Transactional(rollbackFor = Exception.class) public boolean checkOfflinePay(OfflinePayCheckDto dto) { - TBankFlow bankflow = tBankFlowService.getById(dto.getTBankFlow().getId()); + TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId()); TBillDto bill = getDetailByBillId(dto.getBillId()); if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ throw new ServiceException("该流水已无可抵扣剩余金额"); @@ -259,8 +259,8 @@ TBill billSave = new TBill(); billSave.setId(bill.getId()); billSave.setPayFeesMoney(dto.getAmount()); - billSave.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); - billSave.setPayFeesTime(dto.getTBankFlow().getPayTime()); + billSave.setBankSerialNumber(bankflow.getBankSerialNumber()); + billSave.setPayFeesTime(bankflow.getPayTime()); billSave.setVoucher(dto.getVoucher()); billSave.setPayFeesType(2); TBill back = lockAndUpdateInfo(billSave, 2); @@ -275,8 +275,8 @@ TFlowManagement save = new TFlowManagement(); save.setPayType(3); save.setPayer(dto.getPayer()); - save.setPayTime(dto.getTBankFlow().getPayTime()); - save.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); + save.setPayTime(bankflow.getPayTime()); + save.setBankSerialNumber(bankflow.getBankSerialNumber()); save.setFlowType(2); save.setPaymentBillId(back.getId()); save.setDeductionMoney(back.getDeductionMoney()); @@ -452,7 +452,10 @@ TBill back = null; TBankFlow bankflow = null; if (dto.getPayType()==1){ - bankflow = tBankFlowService.getById(dto.getTBankFlow().getId()); + if (StringUtils.isEmpty(dto.getFlowId())){ + throw new ServiceException("银行流水不能为空"); + } + bankflow = tBankFlowService.getById(dto.getFlowId()); TBillDto bill = getDetailByBillId(dto.getBillId()); if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ throw new ServiceException("该流水已无可抵扣剩余金额"); @@ -469,8 +472,8 @@ TBill billSave = new TBill(); billSave.setId(bill.getId()); billSave.setPayFeesMoney(dto.getAmount()); - billSave.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); - billSave.setPayFeesTime(dto.getTBankFlow().getPayTime()); + billSave.setBankSerialNumber(bankflow!=null?bankflow.getBankSerialNumber():null); + billSave.setPayFeesTime(bankflow!=null?bankflow.getPayTime():DateUtils.dateToLocalDateTime(new Date())); billSave.setVoucher(dto.getVoucher()); billSave.setPayFeesType(2); back = lockAndUpdateInfo(billSave, 2); @@ -486,8 +489,8 @@ TFlowManagement save = new TFlowManagement(); save.setPayType(3); save.setPayer(dto.getPayer()); - save.setPayTime(dto.getTBankFlow().getPayTime()); - save.setBankSerialNumber(dto.getTBankFlow().getBankSerialNumber()); + save.setPayTime(bankflow!=null?bankflow.getPayTime():DateUtils.dateToLocalDateTime(new Date())); + save.setBankSerialNumber(bankflow!=null?bankflow.getBankSerialNumber():null); save.setFlowType(dto.getPayType()==1?2:1); save.setPaymentBillId(back.getId()); save.setDeductionMoney(back.getDeductionMoney()); diff --git a/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml index 5c90e07..c6177a6 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml @@ -63,7 +63,7 @@ and t.id = #{query.userId} </if> </where> - order by b.payable_fees_time desc + order by b.create_time desc </select> <select id="getBillList" resultType="com.ruoyi.system.dto.TBillDto"> SELECT -- Gitblit v1.7.1