|
@@ -4,14 +4,19 @@ import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.winhc.common.base.BeanResponse;
|
|
import com.winhc.common.enums.CodeMsg;
|
|
import com.winhc.common.enums.CodeMsg;
|
|
import com.winhc.common.exception.CommonException;
|
|
import com.winhc.common.exception.CommonException;
|
|
|
|
+import com.winhc.repal.cloud.WinCoinService;
|
|
|
|
+import com.winhc.repal.cloud.dto.WinCoinOrderFormDTO;
|
|
|
|
+import com.winhc.repal.cloud.vo.WinCoinOrderFormVO;
|
|
import com.winhc.repal.entity.RepalBill;
|
|
import com.winhc.repal.entity.RepalBill;
|
|
import com.winhc.repal.entity.RepalDynamic;
|
|
import com.winhc.repal.entity.RepalDynamic;
|
|
import com.winhc.repal.entity.RepalGroup;
|
|
import com.winhc.repal.entity.RepalGroup;
|
|
import com.winhc.repal.enums.*;
|
|
import com.winhc.repal.enums.*;
|
|
import com.winhc.repal.model.bo.UserContextBO;
|
|
import com.winhc.repal.model.bo.UserContextBO;
|
|
import com.winhc.repal.model.dto.DynamicContentDTO;
|
|
import com.winhc.repal.model.dto.DynamicContentDTO;
|
|
|
|
+import com.winhc.repal.model.dto.RepalLetterDTO;
|
|
import com.winhc.repal.model.dto.RepalSmsDTO;
|
|
import com.winhc.repal.model.dto.RepalSmsDTO;
|
|
import com.winhc.repal.model.vo.RepalLinkVO;
|
|
import com.winhc.repal.model.vo.RepalLinkVO;
|
|
import com.winhc.repal.model.vo.RepalSmsTemplateVO;
|
|
import com.winhc.repal.model.vo.RepalSmsTemplateVO;
|
|
@@ -22,6 +27,7 @@ import com.winhc.repal.util.UserContextUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.text.DecimalFormat;
|
|
import java.text.DecimalFormat;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
@@ -46,6 +52,9 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
|
|
@Autowired
|
|
@Autowired
|
|
private RepalGroupService repalGroupService;
|
|
private RepalGroupService repalGroupService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private WinCoinService winCoinService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Boolean addDynamic(DynamicContentDTO dto) {
|
|
public Boolean addDynamic(DynamicContentDTO dto) {
|
|
UserContextBO userContextBO = UserContextUtil.getUser();
|
|
UserContextBO userContextBO = UserContextUtil.getUser();
|
|
@@ -74,7 +83,7 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
|
|
long dayBetween = Math.abs(LocalDate.now().toEpochDay() - repalBill.getEndDate().toEpochDay());
|
|
long dayBetween = Math.abs(LocalDate.now().toEpochDay() - repalBill.getEndDate().toEpochDay());
|
|
String overdueStr = RepalBillStatusEnum.PROGRESSING.getCode().equals(repalBill.getRepalBillStatus()) ? "还有"+dayBetween+"天即将逾期":"已逾期"+dayBetween+"天";
|
|
String overdueStr = RepalBillStatusEnum.PROGRESSING.getCode().equals(repalBill.getRepalBillStatus()) ? "还有"+dayBetween+"天即将逾期":"已逾期"+dayBetween+"天";
|
|
String content = StrUtil.format(RepalMsgTemplateEnum.短信模板一.getContent(),
|
|
String content = StrUtil.format(RepalMsgTemplateEnum.短信模板一.getContent(),
|
|
- repalBill.getCustomerName(),
|
|
|
|
|
|
+ "XXX",
|
|
repalGroup.getGroupName(),
|
|
repalGroup.getGroupName(),
|
|
df.format(repalBill.getTotalMoney()),
|
|
df.format(repalBill.getTotalMoney()),
|
|
df.format(repalBill.getReceivable()),
|
|
df.format(repalBill.getReceivable()),
|
|
@@ -93,28 +102,42 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
|
|
if(!allFlag){
|
|
if(!allFlag){
|
|
throw new CommonException(CodeMsg.FORBIDDEN,"暂无此权限,可联系超级管理员在我的-成员管理页面开通");
|
|
throw new CommonException(CodeMsg.FORBIDDEN,"暂无此权限,可联系超级管理员在我的-成员管理页面开通");
|
|
}
|
|
}
|
|
|
|
+ //todo 扣减vip次数
|
|
if(CollUtil.isEmpty(dto.getLinks())){
|
|
if(CollUtil.isEmpty(dto.getLinks())){
|
|
throw new CommonException(CodeMsg.FAILED,"请至少选择一个联系人");
|
|
throw new CommonException(CodeMsg.FAILED,"请至少选择一个联系人");
|
|
}
|
|
}
|
|
if(ObjectUtil.isNull(dto.getSmsCode())){
|
|
if(ObjectUtil.isNull(dto.getSmsCode())){
|
|
throw new CommonException(CodeMsg.FAILED,"请选择发送模板");
|
|
throw new CommonException(CodeMsg.FAILED,"请选择发送模板");
|
|
}
|
|
}
|
|
|
|
+ RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
|
|
List<RepalSmsTemplateVO> templates = getSmsTemplate(dto.getRepalBillId());
|
|
List<RepalSmsTemplateVO> templates = getSmsTemplate(dto.getRepalBillId());
|
|
- if(CollUtil.isEmpty(templates)){
|
|
|
|
|
|
+ if(ObjectUtil.isNull(repalBill) || CollUtil.isEmpty(templates)){
|
|
throw new CommonException(CodeMsg.FAILED,"发送失败");
|
|
throw new CommonException(CodeMsg.FAILED,"发送失败");
|
|
}
|
|
}
|
|
|
|
|
|
for(RepalSmsTemplateVO template:templates){
|
|
for(RepalSmsTemplateVO template:templates){
|
|
if(template.getSmsCode().equals(dto.getSmsCode())){
|
|
if(template.getSmsCode().equals(dto.getSmsCode())){
|
|
- Map<String,String> paraMap = new HashMap<>();
|
|
|
|
|
|
+ Map<String,Object> paraMap = new HashMap<>();
|
|
paraMap.put("content",template.getContent());
|
|
paraMap.put("content",template.getContent());
|
|
|
|
+ paraMap.put("company",repalBill.getCustomerName());
|
|
|
|
+ paraMap.put("links",dto.getLinks());
|
|
|
|
+ paraMap.put("source","REPAL");
|
|
List<String> names = new ArrayList<>();
|
|
List<String> names = new ArrayList<>();
|
|
for(RepalLinkVO link: dto.getLinks()){
|
|
for(RepalLinkVO link: dto.getLinks()){
|
|
if(StrUtil.isNotBlank(link.getMobileNo())) {
|
|
if(StrUtil.isNotBlank(link.getMobileNo())) {
|
|
- messageNoticeService.sendSms(link.getMobileNo(), MsgNameEnum.回款宝短信催款, paraMap);
|
|
|
|
names.add(link.getName());
|
|
names.add(link.getName());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ WinCoinOrderFormDTO winCoinOrderFormDTO = new WinCoinOrderFormDTO();
|
|
|
|
+ winCoinOrderFormDTO.setUserId(userContextBO.getUserId());
|
|
|
|
+ winCoinOrderFormDTO.setProductCode("sms_repal");
|
|
|
|
+ winCoinOrderFormDTO.setPayMode("1");
|
|
|
|
+ winCoinOrderFormDTO.setTransAmt(BigDecimal.ZERO);
|
|
|
|
+ winCoinOrderFormDTO.setGoodsJson(JSON.toJSONString(paraMap));
|
|
|
|
+ BeanResponse<WinCoinOrderFormVO> rsp = winCoinService.createOrder(JSON.toJSONString(userContextBO),userContextBO.getAppVersion(),userContextBO.getAppPackageName(),winCoinOrderFormDTO);
|
|
|
|
+ if(!rsp.getIsSuccess().equals("T")){
|
|
|
|
+ throw new CommonException(CodeMsg.FAILED,rsp.getErrorMsg());
|
|
|
|
+ }
|
|
//记录催款动态
|
|
//记录催款动态
|
|
String dynamicDesc = "接收人:"+String.join("、",names)+"\n\r";
|
|
String dynamicDesc = "接收人:"+String.join("、",names)+"\n\r";
|
|
dynamicDesc+="信息内容:"+template.getContent();
|
|
dynamicDesc+="信息内容:"+template.getContent();
|
|
@@ -129,4 +152,41 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
|
|
}
|
|
}
|
|
return Boolean.TRUE;
|
|
return Boolean.TRUE;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Boolean urgeByLawyerLetter(RepalLetterDTO dto) {
|
|
|
|
+ //校验权限
|
|
|
|
+ UserContextBO userContextBO = UserContextUtil.getUser();
|
|
|
|
+ boolean allFlag = repalRolePermissionService.checkUserPermission(userContextBO.getUserId(),PermissionEnum.URGE_BILL.getCode());
|
|
|
|
+ if(!allFlag){
|
|
|
|
+ throw new CommonException(CodeMsg.FORBIDDEN,"暂无此权限,可联系超级管理员在我的-成员管理页面开通");
|
|
|
|
+ }
|
|
|
|
+ RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
|
|
|
|
+ if(ObjectUtil.isNull(repalBill)){
|
|
|
|
+ throw new CommonException(CodeMsg.FAILED,"发送失败,账款不存在");
|
|
|
|
+ }
|
|
|
|
+ Map<String,Object> paraMap = new HashMap<>();
|
|
|
|
+ paraMap.put("company",repalBill.getCustomerName());
|
|
|
|
+ paraMap.put("links",dto.getLinks());
|
|
|
|
+ paraMap.put("source","REPAL");
|
|
|
|
+ paraMap.put("productCode","303_1");
|
|
|
|
+ WinCoinOrderFormDTO winCoinOrderFormDTO = new WinCoinOrderFormDTO();
|
|
|
|
+ winCoinOrderFormDTO.setUserId(userContextBO.getUserId());
|
|
|
|
+ winCoinOrderFormDTO.setProductCode("303");
|
|
|
|
+ winCoinOrderFormDTO.setPayMode("1");
|
|
|
|
+ winCoinOrderFormDTO.setTransAmt(BigDecimal.ZERO);
|
|
|
|
+ winCoinOrderFormDTO.setGoodsJson(JSON.toJSONString(paraMap));
|
|
|
|
+ BeanResponse<WinCoinOrderFormVO> rsp = winCoinService.createOrder(JSON.toJSONString(userContextBO),userContextBO.getAppVersion(),userContextBO.getAppPackageName(),winCoinOrderFormDTO);
|
|
|
|
+ if(!rsp.getIsSuccess().equals("T")){
|
|
|
|
+ throw new CommonException(CodeMsg.FAILED,rsp.getErrorMsg());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ RepalDynamic dynamic = new RepalDynamic();
|
|
|
|
+ dynamic.setRepalBillId(dto.getRepalBillId());
|
|
|
|
+ dynamic.setDynamicType(RepalDynamicTypeEnum.律师函.getCode());
|
|
|
|
+ dynamic.setMemberId(userContextBO.getUserId());
|
|
|
|
+ dynamic.setLinkMan(JSON.toJSONString(dto.getLinks()));
|
|
|
|
+ save(dynamic);
|
|
|
|
+ return Boolean.TRUE;
|
|
|
|
+ }
|
|
}
|
|
}
|