Ver código fonte

增加欠费提醒

hgw 3 anos atrás
pai
commit
f462a0a533

+ 75 - 36
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantAssetsInfoServiceImpl.java

@@ -28,8 +28,7 @@ import java.util.*;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
-import static com.ym.mec.biz.dal.enums.MessageTypeEnum.EMAIL_TENANT_INSUFFICIENT_BALANCE;
-import static com.ym.mec.biz.dal.enums.MessageTypeEnum.SMS_TENANT_INSUFFICIENT_BALANCE;
+import static com.ym.mec.biz.dal.enums.MessageTypeEnum.*;
 
 /**
  * 机构资产信息(TenantAssetsInfo)表服务实现类
@@ -47,8 +46,6 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
     @Autowired
     private TenantCloudCourseRecordService tenantCloudCourseRecordService;
     @Autowired
-    private TenantInfoSendMsgService tenantInfoSendMsgService;
-    @Autowired
     private TenantInfoService tenantInfoService;
     @Autowired
     private SysMessageService sysMessageService;
@@ -156,42 +153,84 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
                 //当前余额
                 BigDecimal balance = assetsInfo.getBalance();
                 //当前余额 减 本次扣费 的剩余额度
-                BigDecimal after = balance.subtract(coursePrice).setScale(2,RoundingMode.HALF_UP);
-                //300
-                BigDecimal threeHundred = new BigDecimal(300);
-                //当前余额大于300 并且 本次扣除后剩余额度小于300 就发信息提醒
-                if (balance.compareTo(threeHundred) >= 0 && after.compareTo(threeHundred) <0) {
-                    TenantInfo t = tenantInfoService.getById(course.getTenantId());
-                    //邮件
-                    if (StringUtils.isNotBlank(t.getEmail())) {
-                        //机构名称 300 余额
-                        Object[] emailMsg = {t.getName(), 300, after.toString()};
-                        Map<Integer, String> sendPar = new HashMap<>();
-                        sendPar.put(t.getUserId(), t.getEmail());
-                        log.info("platformSendToAll>>> 余额不足 receiveUserId {} email {} objs {} sendPar {}", t.getUserId(), t.getEmail(), emailMsg, sendPar);
-                        sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.EMAIL,
-                                EMAIL_TENANT_INSUFFICIENT_BALANCE,
-                                sendPar, null, 0, null,
-                                "SYSTEM", emailMsg);
-                    }
+                BigDecimal after = balance.subtract(coursePrice).setScale(2, RoundingMode.HALF_UP);
+                //判断是否发送信息
+                sendMsg(course.getTenantId(), balance, after);
+            }
+        });
+
+    }
+
+    /**
+     * 判断是否发送信息
+     * <p>
+     * 1.判断扣费前余额大于300并在本次扣费后剩余额度小于300就发信息提醒
+     * <p>
+     * 2.当前扣费为负数后要发邮件和短信提醒
+     *
+     * @param tenantId 机构id
+     * @param balance  扣费前金额
+     * @param after    扣费后金额
+     */
+    private void sendMsg(Integer tenantId, BigDecimal balance, BigDecimal after) {
+        TenantInfo t = tenantInfoService.getById(tenantId);
+        //当前余额大于300 并且 本次扣除后剩余额度小于300
+        BigDecimal threeHundred = new BigDecimal(300);
+        if (balance.compareTo(threeHundred) >= 0 && after.compareTo(threeHundred) < 0) {
 
-                    //短信
-                    if (StringUtils.isNotBlank(t.getPhone())) {
-                        //机构名称
-                        Object[] phoneMsg = {t.getName()};
-                        Map<Integer, String> sendPar2 = new HashMap<>();
-                        sendPar2.put(t.getUserId(), t.getPhone());
-                        log.info("platformSendToAll>>> 余额不足 receiveUserId {} phone {} objs {} sendPar {}", t.getUserId(), t.getPhone(), phoneMsg, sendPar2);
-                        sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.AWSMS,
-                                SMS_TENANT_INSUFFICIENT_BALANCE,
-                                sendPar2, null, 0, null,
-                                "SYSTEM", phoneMsg);
-                    }
+            //邮件
+            if (StringUtils.isNotBlank(t.getEmail())) {
+                //机构名称 300 余额
+                Object[] emailMsg = {t.getName(), 300, after.toString()};
+                Map<Integer, String> sendPar = new HashMap<>();
+                sendPar.put(t.getUserId(), t.getEmail());
+                log.info("platformSendToAll>>> 余额不足 receiveUserId {} email {} objs {} sendPar {}", t.getUserId(), t.getEmail(), emailMsg, sendPar);
+                sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.EMAIL,
+                        EMAIL_TENANT_INSUFFICIENT_BALANCE,
+                        sendPar, null, 0, null,
+                        "SYSTEM", emailMsg);
+            }
 
-                }
+            //短信
+            if (StringUtils.isNotBlank(t.getPhone())) {
+                //机构名称
+                Object[] phoneMsg = {t.getName()};
+                Map<Integer, String> sendPar2 = new HashMap<>();
+                sendPar2.put(t.getUserId(), t.getPhone());
+                log.info("platformSendToAll>>> 余额不足 receiveUserId {} phone {} objs {} sendPar {}", t.getUserId(), t.getPhone(), phoneMsg, sendPar2);
+                sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.AWSMS,
+                        SMS_TENANT_INSUFFICIENT_BALANCE,
+                        sendPar2, null, 0, null,
+                        "SYSTEM", phoneMsg);
             }
-        });
+        }
 
+        //当前余额已经扣为负数
+        if (after.compareTo(BigDecimal.ZERO) < 0) {
+            //邮件
+            if (StringUtils.isNotBlank(t.getEmail())) {
+                //机构名称 余额
+                Object[] emailMsg = {t.getName(), after.toString()};
+                Map<Integer, String> sendPar = new HashMap<>();
+                sendPar.put(t.getUserId(), t.getEmail());
+                log.info("platformSendToAll>>> 已欠费 receiveUserId {} email {} objs {} sendPar {}", t.getUserId(), t.getEmail(), emailMsg, sendPar);
+                sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.EMAIL,
+                        EMAIL_TENANT_EXPIRE, sendPar, null, 0, null,
+                        "SYSTEM", emailMsg);
+            }
+
+            //短信
+            if (StringUtils.isNotBlank(t.getPhone())) {
+                //机构名称
+                Object[] phoneMsg = {t.getName()};
+                Map<Integer, String> sendPar2 = new HashMap<>();
+                sendPar2.put(t.getUserId(), t.getPhone());
+                log.info("platformSendToAll>>> 已欠费 receiveUserId {} phone {} objs {} sendPar {}", t.getUserId(), t.getPhone(), phoneMsg, sendPar2);
+                sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.AWSMS,
+                        SMS_TENANT_EXPIRE, sendPar2, null, 0, null,
+                        "SYSTEM", phoneMsg);
+            }
+        }
     }
 
     /**