Просмотр исходного кода

feat:咨询催款/打官司催款

zhangwei 2 лет назад
Родитель
Сommit
912f2c760f

+ 13 - 3
src/main/java/com/winhc/repal/controller/RepalManageController.java

@@ -3,9 +3,7 @@ package com.winhc.repal.controller;
 import com.winhc.common.base.BeanResponse;
 import com.winhc.common.enums.CodeMsg;
 import com.winhc.common.model.base.VOPage;
-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.*;
 import com.winhc.repal.model.vo.RepalManageBillDetailVO;
 import com.winhc.repal.model.vo.RepalManageBillInfoVO;
 import com.winhc.repal.model.vo.RepalManageBillPageVO;
@@ -77,4 +75,16 @@ public class RepalManageController {
     public BeanResponse<Boolean> urgeByLawyerLetter(@RequestBody RepalLetterDTO dto){
         return BeanResponse.success(CodeMsg.SUCCESS,repalDynamicService.urgeByLawyerLetter(dto));
     }
+
+    @ApiOperation("咨询催款")
+    @PostMapping("/consult/urge")
+    public BeanResponse<Boolean> urgeByConsult(@RequestBody RepalConsultDTO dto){
+        return BeanResponse.success(CodeMsg.SUCCESS,repalDynamicService.urgeByConsult(dto));
+    }
+
+    @ApiOperation("诉讼催款")
+    @PostMapping("/law/urge")
+    public BeanResponse<Boolean> urgeByLawsuit(@RequestBody RepalLawDTO dto){
+        return BeanResponse.success(CodeMsg.SUCCESS,repalDynamicService.urgeByLawsuit(dto));
+    }
 }

+ 1 - 1
src/main/java/com/winhc/repal/entity/RepalDynamic.java

@@ -56,7 +56,7 @@ public class RepalDynamic implements Serializable {
 
     @ApiModelProperty(value = "订单id")
     @TableField("ORDER_ID")
-    private Long orderId;
+    private String orderId;
 
 
 }

+ 32 - 0
src/main/java/com/winhc/repal/model/dto/RepalConsultDTO.java

@@ -0,0 +1,32 @@
+package com.winhc.repal.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Aaron
+ * @date 2022/5/11 13:07
+ * @description
+ */
+@Data
+@ApiModel("咨询催款")
+public class RepalConsultDTO {
+    @ApiModelProperty(value = "账款编号",required = true)
+    private Long repalBillId;
+
+    @ApiModelProperty("问题描述")
+    private String serviceDesc;
+
+    @ApiModelProperty("省份")
+    private String province;
+
+    @ApiModelProperty("市")
+    private String city;
+
+    @ApiModelProperty("咨询类型")
+    private Integer serviceType;
+
+    @ApiModelProperty("是否接受其他地区律师 1同意,默认  2不同意")
+    private Integer otherArea = 1;
+}

+ 40 - 0
src/main/java/com/winhc/repal/model/dto/RepalLawDTO.java

@@ -0,0 +1,40 @@
+package com.winhc.repal.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Aaron
+ * @date 2022/5/11 13:07
+ * @description
+ */
+@Data
+@ApiModel("起诉催款")
+public class RepalLawDTO {
+    @ApiModelProperty(value = "账款编号",required = true)
+    private Long repalBillId;
+
+    @ApiModelProperty("案件基本情况")
+    private String serviceDesc;
+
+    @ApiModelProperty("省份")
+    private String province;
+
+    @ApiModelProperty("市")
+    private String city;
+
+    @ApiModelProperty("咨询类型")
+    private Integer serviceType;
+
+    @ApiModelProperty("是否接受其他地区律师 1同意,默认  2不同意")
+    private Integer otherArea = 1;
+
+    @ApiModelProperty("欠款金额")
+    private BigDecimal caseAmt;
+
+    @ApiModelProperty("案件阶段 1未起诉。2已起诉。3已申请执行。")
+    private Integer caseStage;
+}

+ 15 - 3
src/main/java/com/winhc/repal/service/RepalDynamicService.java

@@ -2,9 +2,7 @@ package com.winhc.repal.service;
 
 import com.winhc.repal.entity.RepalDynamic;
 import com.baomidou.mybatisplus.extension.service.IService;
-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.*;
 import com.winhc.repal.model.vo.RepalSmsTemplateVO;
 
 import java.util.List;
@@ -42,4 +40,18 @@ public interface RepalDynamicService extends IService<RepalDynamic> {
      * @return
      */
     Boolean urgeByLawyerLetter(RepalLetterDTO dto);
+
+    /**
+     * 咨询催款
+     * @param dto
+     * @return
+     */
+    Boolean urgeByConsult(RepalConsultDTO dto);
+
+    /**
+     * 起诉催款
+     * @param dto
+     * @return
+     */
+    Boolean urgeByLawsuit(RepalLawDTO dto);
 }

+ 108 - 3
src/main/java/com/winhc/repal/service/impl/RepalDynamicServiceImpl.java

@@ -11,13 +11,12 @@ 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.RepalCustomer;
 import com.winhc.repal.entity.RepalDynamic;
 import com.winhc.repal.entity.RepalGroup;
 import com.winhc.repal.enums.*;
 import com.winhc.repal.model.bo.UserContextBO;
-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.*;
 import com.winhc.repal.model.vo.RepalLinkVO;
 import com.winhc.repal.model.vo.RepalSmsTemplateVO;
 import com.winhc.repal.repository.RepalDynamicMapper;
@@ -55,6 +54,9 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
     @Autowired
     private WinCoinService winCoinService;
 
+    @Autowired
+    private RepalCustomerService repalCustomerService;
+
     @Override
     public Boolean addDynamic(DynamicContentDTO dto) {
         UserContextBO userContextBO = UserContextUtil.getUser();
@@ -147,6 +149,7 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
                 dynamic.setDynamicType(RepalDynamicTypeEnum.短信.getCode());
                 dynamic.setMemberId(userContextBO.getUserId());
                 dynamic.setLinkMan(JSON.toJSONString(dto.getLinks()));
+                dynamic.setOrderId(rsp.getBody().getOrderId());
                 save(dynamic);
             }
         }
@@ -161,6 +164,7 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
         if(!allFlag){
             throw new CommonException(CodeMsg.FORBIDDEN,"暂无此权限,可联系超级管理员在我的-成员管理页面开通");
         }
+        //todo 扣减vip次数
         RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
         if(ObjectUtil.isNull(repalBill)){
             throw new CommonException(CodeMsg.FAILED,"发送失败,账款不存在");
@@ -186,6 +190,107 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
         dynamic.setDynamicType(RepalDynamicTypeEnum.律师函.getCode());
         dynamic.setMemberId(userContextBO.getUserId());
         dynamic.setLinkMan(JSON.toJSONString(dto.getLinks()));
+        dynamic.setOrderId(rsp.getBody().getOrderId());
+        save(dynamic);
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public Boolean urgeByConsult(RepalConsultDTO dto) {
+        //校验权限
+        UserContextBO userContextBO = UserContextUtil.getUser();
+        boolean allFlag = repalRolePermissionService.checkUserPermission(userContextBO.getUserId(),PermissionEnum.URGE_BILL.getCode());
+        if(!allFlag){
+            throw new CommonException(CodeMsg.FORBIDDEN,"暂无此权限,可联系超级管理员在我的-成员管理页面开通");
+        }
+        //todo 扣减vip次数
+        RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
+        if(ObjectUtil.isNull(repalBill)){
+            throw new CommonException(CodeMsg.FAILED,"参数有误");
+        }
+
+        Map<String,Object> paraMap = new HashMap<>();
+        paraMap.put("province",dto.getProvince());
+        paraMap.put("city",dto.getCity());
+        paraMap.put("serviceType",dto.getServiceType());
+        paraMap.put("lawyerServiceSubType",102);
+        paraMap.put("lawyerServiceType",1);
+        paraMap.put("serviceDesc",dto.getServiceDesc());
+        paraMap.put("otherArea",dto.getOtherArea());
+        paraMap.put("source","REPAL");
+        WinCoinOrderFormDTO winCoinOrderFormDTO = new WinCoinOrderFormDTO();
+        winCoinOrderFormDTO.setUserId(userContextBO.getUserId());
+        winCoinOrderFormDTO.setProductCode("phone_consult");
+        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.setOrderId(rsp.getBody().getOrderId());
+        save(dynamic);
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public Boolean urgeByLawsuit(RepalLawDTO dto) {
+        //校验权限
+        UserContextBO userContextBO = UserContextUtil.getUser();
+        boolean allFlag = repalRolePermissionService.checkUserPermission(userContextBO.getUserId(),PermissionEnum.URGE_BILL.getCode());
+        if(!allFlag){
+            throw new CommonException(CodeMsg.FORBIDDEN,"暂无此权限,可联系超级管理员在我的-成员管理页面开通");
+        }
+        //todo 扣减vip次数
+        RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
+        RepalCustomer repalCustomer = repalCustomerService.getById(repalBill.getCustomerId());
+        if(ObjectUtil.isNull(repalBill) || ObjectUtil.isNull(repalCustomer)){
+            throw new CommonException(CodeMsg.FAILED,"参数有误");
+        }
+        String productCode = "205";
+        if(RepalBillStageEnum.NON_PROSECUTE.getCode().equals(dto.getCaseStage())){
+            productCode = "203";
+        }
+        Map<String,Object> defendantMap = new HashMap<>();
+        defendantMap.put("defendantName",repalCustomer.getCustName());
+        defendantMap.put("defendantType",1);
+        if(StrUtil.isNotBlank(repalCustomer.getCompanyId())){
+            defendantMap.put("companyId",repalCustomer.getCompanyId());
+            defendantMap.put("defendantType",2);
+        }
+
+        Map<String,Object> paraMap = new HashMap<>();
+        paraMap.put("province",dto.getProvince());
+        paraMap.put("city",dto.getCity());
+        paraMap.put("serviceType",dto.getServiceType());
+        paraMap.put("lawyerServiceSubType",productCode);
+        paraMap.put("lawyerServiceType",2);
+        paraMap.put("caseAmt",dto.getCaseAmt());
+        paraMap.put("caseStage",dto.getCaseStage());
+        paraMap.put("serviceDesc",dto.getServiceDesc());
+        paraMap.put("defendantList", Collections.singletonList(defendantMap));
+        paraMap.put("source","REPAL");
+        WinCoinOrderFormDTO winCoinOrderFormDTO = new WinCoinOrderFormDTO();
+        winCoinOrderFormDTO.setUserId(userContextBO.getUserId());
+        winCoinOrderFormDTO.setProductCode(productCode);
+        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.setOrderId(rsp.getBody().getOrderId());
         save(dynamic);
         return Boolean.TRUE;
     }