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

Merge remote-tracking branch 'origin/test' into test

785834757 1 год назад
Родитель
Сommit
84ebd3bb6f
53 измененных файлов с 2151 добавлено и 22 удалено
  1. 25 0
      sql/Online.sql
  2. 7 0
      src/main/java/com/ydtech/modules/admin/controller/SysSwitchConfigController.java
  3. 17 0
      src/main/java/com/ydtech/modules/equity/components/EquityApiConfigurationProperties.java
  4. 132 0
      src/main/java/com/ydtech/modules/equity/components/EquityRequestApiComponents.java
  5. 126 0
      src/main/java/com/ydtech/modules/equity/controller/EquityController.java
  6. 18 0
      src/main/java/com/ydtech/modules/equity/dao/InsAreaCompanyEquityMapper.java
  7. 103 0
      src/main/java/com/ydtech/modules/equity/model/InsAreaCompanyEquity.java
  8. 17 0
      src/main/java/com/ydtech/modules/equity/model/request/BaseRequest.java
  9. 23 0
      src/main/java/com/ydtech/modules/equity/model/request/ThreeOrderVo.java
  10. 21 0
      src/main/java/com/ydtech/modules/equity/model/request/ThreePointVo.java
  11. 54 0
      src/main/java/com/ydtech/modules/equity/model/request/ThreeRightsInfoPageVo.java
  12. 36 0
      src/main/java/com/ydtech/modules/equity/model/request/ThreeUserOrderListVo.java
  13. 231 0
      src/main/java/com/ydtech/modules/equity/model/request/ThreeUserOrderVo.java
  14. 24 0
      src/main/java/com/ydtech/modules/equity/model/response/BaseResponse.java
  15. 164 0
      src/main/java/com/ydtech/modules/equity/model/response/LocalEquityPackageAssociation.java
  16. 127 0
      src/main/java/com/ydtech/modules/equity/model/response/LocalEquityPackagePage.java
  17. 25 0
      src/main/java/com/ydtech/modules/equity/model/response/PageResultResponse.java
  18. 31 0
      src/main/java/com/ydtech/modules/equity/model/response/PointRatioDto.java
  19. 23 0
      src/main/java/com/ydtech/modules/equity/model/vo/AddEquityPageQueryVo.java
  20. 53 0
      src/main/java/com/ydtech/modules/equity/model/vo/EquityPackageVo.java
  21. 40 0
      src/main/java/com/ydtech/modules/equity/model/vo/EquityPageQueryVo.java
  22. 81 0
      src/main/java/com/ydtech/modules/equity/model/vo/EquitySaveVo.java
  23. 70 0
      src/main/java/com/ydtech/modules/equity/service/EquityService.java
  24. 13 0
      src/main/java/com/ydtech/modules/equity/service/InsAreaCompanyEquityService.java
  25. 334 0
      src/main/java/com/ydtech/modules/equity/service/impl/EquityServiceImpl.java
  26. 22 0
      src/main/java/com/ydtech/modules/equity/service/impl/InsAreaCompanyEquityServiceImpl.java
  27. 92 0
      src/main/java/com/ydtech/modules/equity/utils/SMCheckDataUtils.java
  28. 1 1
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  29. 7 0
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  30. 1 0
      src/main/java/com/ydtech/modules/order/components/dajia/DaJiaRequestApiComponents.java
  31. 6 0
      src/main/java/com/ydtech/modules/order/constants/InsuranceTypeCorrespondence.java
  32. 11 2
      src/main/java/com/ydtech/modules/order/controller/ExternalOrderController.java
  33. 26 0
      src/main/java/com/ydtech/modules/order/controller/InsCrawlerOrderController.java
  34. 6 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  35. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java
  36. 4 0
      src/main/java/com/ydtech/modules/order/entity/crawler/request/TsCrawlerLoginRequest.java
  37. 5 0
      src/main/java/com/ydtech/modules/order/entity/dto/InsAreaCompanyQueryDto.java
  38. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java
  39. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java
  40. 8 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderVo.java
  41. 1 1
      src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java
  42. 14 0
      src/main/java/com/ydtech/modules/order/service/InsCrawlerOrderService.java
  43. 2 2
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  44. 47 10
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  45. 47 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  46. 3 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  47. 10 1
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  48. 4 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java
  49. 3 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java
  50. 3 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java
  51. 9 0
      src/main/resources/application-test.yml
  52. 13 3
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml
  53. 4 1
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 25 - 0
sql/Online.sql

@@ -9,3 +9,28 @@ INSERT INTO `agent`.`ins_driving_intention_insurance` ( `parent_id`, `type`, `co
 INSERT INTO `agent`.`ins_driving_intention_insurance` ( `parent_id`, `type`, `company_id`, `project_name`, `project_code`, `alias`, `risk_code`, `seat_num`, `sum_amount`, `sum_premium`, `request_data`, `api_type`, `relate_code`) VALUES ( 0, 2, 'PICC1000000', '“如意行”非营运客车方案C款(升级版)(1至1年)', 'EAD0000041', NULL, NULL, NULL, 0.00, 0.00, NULL, 2, NULL);
 INSERT INTO `agent`.`ins_driving_intention_insurance` ( `parent_id`, `type`, `company_id`, `project_name`, `project_code`, `alias`, `risk_code`, `seat_num`, `sum_amount`, `sum_premium`, `request_data`, `api_type`, `relate_code`) VALUES ( 0, 2, 'PICC1000000', '“如意行”非营运客车方案C款(升级版)(1至1年)', 'EAD0000041', NULL, NULL, NULL, 0.00, 0.00, NULL, 2, NULL);
 
 
 INSERT INTO `agent`.`ins_driving_intention_insurance_type_company` ( `company_id`, `type_id`, `is_multiple`, `is_enable`, `create_time`) VALUES ( 'PICC1000000', 2, 0, 1, '2025-04-17 16:29:17');
 INSERT INTO `agent`.`ins_driving_intention_insurance_type_company` ( `company_id`, `type_id`, `is_multiple`, `is_enable`, `create_time`) VALUES ( 'PICC1000000', 2, 0, 1, '2025-04-17 16:29:17');
+
+
+
+ALTER TABLE `agent`.`ptl_agreement_product_costs_new`
+    ADD COLUMN `ld_proportion` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '代理人留点比例' AFTER `valid_status`;
+CREATE TABLE `ins_area_company_equity`  (
+                                            `sub_order_no` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订单号',
+                                            `type` tinyint NULL DEFAULT NULL COMMENT '权益类型0.现金权益 1.权益包',
+                                            `status` tinyint NULL DEFAULT 0 COMMENT '0.未下单1.已下单2.已确认',
+                                            `equity_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权益包id',
+                                            `equity_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权益包名称',
+                                            `equity_info` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '权益包明细json',
+                                            `receive_type` tinyint NULL DEFAULT NULL COMMENT '接收人类型0.投保人 1.被保人 2.车主',
+                                            `receive_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '接收人名字',
+                                            `receive_phone` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '接收人电话',
+                                            `receive_identify` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '接收人身份证号',
+                                            `order_money` decimal(10, 2) NULL DEFAULT NULL COMMENT '返佣金额',
+                                            `point` decimal(10, 2) NULL DEFAULT NULL COMMENT '兑换积分',
+                                            PRIMARY KEY (`sub_order_no`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单权益包下单表' ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+INSERT INTO `agent`.`sys_switch_config` ( `project`, `function_name`, `keyword`, `enabled`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('权益包', '权益包开关', 'equityFlag', 1, 'admin', '2025-05-08 10:35:43', 'admin', '2025-05-19 09:15:06');
+

+ 7 - 0
src/main/java/com/ydtech/modules/admin/controller/SysSwitchConfigController.java

@@ -57,4 +57,11 @@ public class SysSwitchConfigController {
         return HttpResult.ok(display);
         return HttpResult.ok(display);
     }
     }
 
 
+    @GetMapping("/isEnabled")
+    @ApiOperation(value = "开关是否开启")
+    public HttpResult<Boolean> isEnabled(String keyWord) {
+        boolean display = sysSwitchConfigService.isEnabled(keyWord);
+        return HttpResult.ok(display);
+    }
+
 }
 }

+ 17 - 0
src/main/java/com/ydtech/modules/equity/components/EquityApiConfigurationProperties.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.equity.components;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "equity.api")
+public class EquityApiConfigurationProperties {
+
+    private String url;
+    private String appkey;
+    private String secret;
+    private String publicKey;
+    private String privateKey;
+}

+ 132 - 0
src/main/java/com/ydtech/modules/equity/components/EquityRequestApiComponents.java

@@ -0,0 +1,132 @@
+package com.ydtech.modules.equity.components;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.equity.model.request.*;
+import com.ydtech.modules.equity.model.response.BaseResponse;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import com.ydtech.modules.equity.model.response.PageResultResponse;
+import com.ydtech.modules.equity.model.response.PointRatioDto;
+import com.ydtech.modules.equity.utils.SMCheckDataUtils;
+import com.ydtech.modules.order.utils.InsuranceLog;
+import com.ydtech.utils.HttpUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 权益包接口
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class EquityRequestApiComponents {
+
+    private final EquityApiConfigurationProperties properties;
+
+    public <T extends BaseRequest, B extends BaseResponse> B post(String url, @Nullable T requestBody, Class<B> responseType) {
+
+        String busReqString = JSON.toJSONString(requestBody, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+
+        InsuranceLog.infoLog("权益包接口", "\n\t---------> URl: {} \n\t---------> 请求参数:{}", url, busReqString);
+        String privateKeyHex = properties.getPrivateKey();
+        String publicKeyHex = properties.getPublicKey();
+        String scret = properties.getSecret();
+        //加签
+        String signStr = SMCheckDataUtils.sm2SignStr(busReqString,privateKeyHex,publicKeyHex);
+        //加密
+        String dataStr = SMCheckDataUtils.sm4EncryptStr(busReqString,scret);
+
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+        Map requetBean = new HashMap();
+        requetBean.put("appKey",properties.getAppkey());
+        requetBean.put("data",dataStr);
+        requetBean.put("sign",signStr);
+        String content = JSON.toJSONString(requetBean);
+        InsuranceLog.infoLog("权益包接口", "\n\t---------> URl: {} \n\t---------> 请求参数: {}", url, content);
+        String postStr = HttpUtil.sendPost(url, content);
+        // 解密参数
+        String decryptStr = SMCheckDataUtils.sm4DecryptStr(postStr,scret);
+        B res = JSON.parseObject(decryptStr).toJavaObject(responseType);
+        if(!"200".equals(res.code)){
+            throw new SystemException(res.message);
+        }
+        System.out.println(res.getResult());
+        return res;
+    }
+
+    public <T extends BaseRequest, B extends BaseResponse> B request(String url, String apiType, T requestBody, Class<B> responseType) {
+        String apiUrl = url + apiType;
+        return this.post(apiUrl, requestBody, responseType);
+    }
+
+
+    /**
+     * 权益包分页列表
+     * @param threeRightsInfoPageVo
+     * @return
+     */
+    public PageResultResponse equityPage(ThreeRightsInfoPageVo threeRightsInfoPageVo) {
+        PageResultResponse response = request(properties.getUrl(), "getPageRightInfoList",threeRightsInfoPageVo ,PageResultResponse.class);
+        if(Objects.nonNull(response.getResult())){
+            PageResultResponse res = JSON.parseObject(response.getResult()).toJavaObject(PageResultResponse.class);
+            return res;
+        }else{
+            return response;
+        }
+    }
+
+    /**
+     * 权益包下单
+     * @param threeUserOrderVo
+     * @return
+     */
+    public BaseResponse createOrder(ThreeUserOrderVo threeUserOrderVo) {
+        BaseResponse response = request(properties.getUrl(), "addThreeUserOrder"
+                ,threeUserOrderVo ,BaseResponse.class);
+        return response;
+    }
+
+    /**
+     * 权益包确认下单
+     * @param threeOrderVo
+     */
+    public BaseResponse confirmOrder(ThreeOrderVo threeOrderVo) {
+        BaseResponse response = request(properties.getUrl(), "updateThreeOrder"
+                ,threeOrderVo ,BaseResponse.class);
+        return response;
+    }
+
+    /**
+     * 获取积分兑换比例
+     * @param threePointVo
+     * @return
+     */
+    public PointRatioDto getPointRatio(ThreePointVo threePointVo) {
+        PointRatioDto response = request(properties.getUrl(), "getPointRatio"
+                ,threePointVo ,PointRatioDto.class);
+        PointRatioDto res = JSON.parseObject(response.getResult()).toJavaObject(PointRatioDto.class);
+        return res;
+    }
+
+    public List<LocalEquityPackagePage> equityList(ThreeUserOrderListVo threeUserOrderListVo) {
+        PageResultResponse response = request(properties.getUrl(), "getRightInfoList",threeUserOrderListVo ,PageResultResponse.class);
+        if(Objects.nonNull(response.getResult())){
+            List<LocalEquityPackagePage> packagePageList = JSON.parseArray(response.getResult()).toJavaList(LocalEquityPackagePage.class);
+            return packagePageList;
+        }else{
+            return null;
+        }
+    }
+}

+ 126 - 0
src/main/java/com/ydtech/modules/equity/controller/EquityController.java

@@ -0,0 +1,126 @@
+package com.ydtech.modules.equity.controller;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.ydtech.aop.request.RequestSingleParam;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.customer.entity.vo.ReturnMessageVo;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import com.ydtech.modules.equity.model.vo.AddEquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquitySaveVo;
+import com.ydtech.modules.equity.service.EquityService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Api(tags = "权益包功能", value = "权益包功能")
+@RequestMapping("/equity")
+@RestController
+@RequiredArgsConstructor
+public class EquityController  extends BaseController {
+
+    private final EquityService equityService;
+
+    /**
+     * 权益包分页列表
+     * @param pageQueryVo
+     * @return
+     */
+    @PostMapping("/equityList")
+    public HttpResult equityList(@Validated @RequestBody EquityPageQueryVo pageQueryVo) {
+        return HttpResult.ok(equityService.equityList(pageQueryVo));
+    }
+
+    /**
+     * 权益包分页列表
+     * @param pageQueryVo
+     * @return
+     */
+    @PostMapping("/equityInfo")
+    public HttpResult equityInfo(@Validated @RequestBody EquityPageQueryVo pageQueryVo) {
+        return HttpResult.ok(equityService.equityInfo(pageQueryVo));
+    }
+
+    /**
+     * 权益包分页列表
+     * @param companyId
+     * @return
+     */
+    @PostMapping("/queryEquityInfo")
+    public HttpResult queryEquityInfo(@RequestParam String companyId) {
+        return HttpResult.ok(equityService.queryEquityInfo(companyId));
+    }
+
+    /**
+     * 补录订单权益包分页列表
+     * @param pageQueryVo
+     * @return
+     */
+    @PostMapping("/addEquityInfo")
+    public HttpResult addEquityInfo(@Validated @RequestBody AddEquityPageQueryVo pageQueryVo) {
+        return HttpResult.ok(equityService.addEquityInfo(pageQueryVo));
+    }
+
+    /**
+     * 选择保存权益类型
+     * @return
+     */
+    @PostMapping("/saveEquityType")
+    public HttpResult saveEquityType(@RequestParam String companyId,@RequestParam Integer type) {
+        equityService.saveEquityType(companyId,type);
+        return HttpResult.ok();
+    }
+
+    /**
+     * 选择保存权益
+     * @param equitySaveVo
+     * @return
+     */
+    @PostMapping("/saveEquity")
+    public HttpResult saveEquity(@Validated @RequestBody EquitySaveVo equitySaveVo) {
+        equityService.saveEquity(equitySaveVo);
+        return HttpResult.ok();
+    }
+
+    /**
+     * 放弃选中权益
+     * @param companyId
+     * @return
+     */
+    @PostMapping("/delEquity")
+    public HttpResult delEquity(@RequestParam String companyId) {
+        equityService.delEquity(companyId);
+        return HttpResult.ok();
+    }
+
+    /**
+     * 权益包下单
+     * @param companyId
+     * @return
+     */
+    @PostMapping("/createEquityOrder")
+    public HttpResult createEquityOrder(@RequestParam String companyId) {
+        InsAreaCompanyEquity equity = equityService.createEquityOrder(companyId);
+        return HttpResult.ok(equity);
+    }
+
+    /**
+     * 权益包确认下单
+     * @param companyId
+     * @return
+     */
+    @PostMapping("/confirmEquityOrder")
+    public HttpResult confirmEquityOrder(@RequestParam String companyId) {
+        equityService.confirmEquityOrder(companyId);
+        return HttpResult.ok();
+    }
+
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/equity/dao/InsAreaCompanyEquityMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.equity.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+
+/**
+* @author dongxin
+* @description 针对表【ins_area_company_equity(订单权益包下单表)】的数据库操作Mapper
+* @createDate 2025-05-07 18:24:28
+* @Entity generator.domain.InsAreaCompanyEquity
+*/
+public interface InsAreaCompanyEquityMapper extends BaseMapper<InsAreaCompanyEquity> {
+
+}
+
+
+
+

+ 103 - 0
src/main/java/com/ydtech/modules/equity/model/InsAreaCompanyEquity.java

@@ -0,0 +1,103 @@
+package com.ydtech.modules.equity.model;
+
+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 com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 订单权益包下单表
+ * @TableName ins_area_company_equity
+ */
+@TableName(value = "ins_area_company_equity")
+@Data
+public class InsAreaCompanyEquity implements Serializable {
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 订单号
+     */
+    @TableId(value = "sub_order_no")
+    private String subOrderNo;
+
+    /**
+     * 0.未下单1.已下单2.已确认
+     */
+    @TableField(value = "status")
+    private Integer status;
+
+    /**
+     * 权益包id
+     */
+    @TableField(value = "equity_id")
+    private String equityId;
+
+    /**
+     * 权益包名称
+     */
+    @TableField(value = "equity_name")
+    private String equityName;
+
+    /**
+     * 权益包明细json
+     */
+    @TableField(value = "equity_info")
+    private String equityInfo;
+
+    /**
+     * 接收人类型0.投保人 1.被保人 2.车主
+     */
+    @TableField(value = "receive_type")
+    private Integer receiveType;
+
+    /**
+     * 接收人名字
+     */
+    @TableField(value = "receive_name")
+    private String receiveName;
+
+    /**
+     * 接收人电话
+     */
+    @TableField(value = "receive_phone")
+    private String receivePhone;
+
+    /**
+     * 接收人身份证号
+     */
+    @TableField(value = "receive_identify")
+    private String receiveIdentify;
+
+    /**
+     * 返佣金额
+     */
+    @TableField(value = "order_money")
+    private BigDecimal orderMoney;
+
+    /**
+     * 兑换积分
+     */
+    @TableField(value = "point")
+    private BigDecimal point;
+
+    /**
+     * 权益类型0.现金权益 1.权益包
+     */
+    @TableField(value = "type")
+    private Integer type;
+
+    @TableField(exist = false)
+    private LocalEquityPackagePage equityInfoVo;
+
+
+}

+ 17 - 0
src/main/java/com/ydtech/modules/equity/model/request/BaseRequest.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.equity.model.request;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class BaseRequest implements Serializable {
+
+    private static final long serialVersionUID = 01744654061707132550211L;
+
+    private String appKey;
+    private String data;
+    private String sign;
+}

+ 23 - 0
src/main/java/com/ydtech/modules/equity/model/request/ThreeOrderVo.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.equity.model.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ThreeOrderVo extends BaseRequest {
+
+    @ApiModelProperty(value = "三方用戶Id")
+    @JsonProperty("threeUserId")
+    private String threeUserId;
+
+    @ApiModelProperty(value = "子订单Id")
+    @JsonProperty("orderId")
+    private String orderId;
+
+    public ThreeOrderVo(String appKey, String orderId) {
+        this.setAppKey(appKey);
+        this.setOrderId(orderId);
+    }
+
+}

+ 21 - 0
src/main/java/com/ydtech/modules/equity/model/request/ThreePointVo.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.equity.model.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2025/4/30 14:41
+ *  @Description:  积分比例
+ */
+@Data
+public class ThreePointVo extends BaseRequest {
+
+    @ApiModelProperty(value = "三方用户id")
+    @JsonProperty("threeUserId")
+    private String threeUserId;
+
+
+}

+ 54 - 0
src/main/java/com/ydtech/modules/equity/model/request/ThreeRightsInfoPageVo.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.equity.model.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.modules.equity.model.vo.AddEquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquityPageQueryVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2025/4/30 14:45
+ *  @Description: 三方权益券
+ */
+@NoArgsConstructor
+@Data
+public class ThreeRightsInfoPageVo extends BaseRequest{
+
+    @ApiModelProperty(value = "三方用戶Id")
+    @JsonProperty("threeUserId")
+    private String threeUserId;
+
+    @ApiModelProperty(value = "页码")
+    @JsonProperty("pageNo")
+    private Integer pageNo;
+
+    @ApiModelProperty(value = "页数")
+    @JsonProperty("pageSize")
+    private Integer pageSize;
+
+    // 新增字段
+    @ApiModelProperty(value = "返佣金额")
+    @JsonProperty("orderMoney")
+    private BigDecimal orderMoney;
+
+
+    public ThreeRightsInfoPageVo(EquityPageQueryVo pageRequest, String threeUserId, BigDecimal orderMoney) {
+        this.pageNo = pageRequest.getPageNum();
+        this.pageSize = pageRequest.getPageSize();
+        this.threeUserId = threeUserId;
+        this.orderMoney = orderMoney;
+    }
+
+    public ThreeRightsInfoPageVo(AddEquityPageQueryVo pageRequest, String threeUserId, BigDecimal orderMoney) {
+        this.pageNo = pageRequest.getPageNum();
+        this.pageSize = pageRequest.getPageSize();
+        this.threeUserId = threeUserId;
+        this.orderMoney = orderMoney;
+    }
+}

+ 36 - 0
src/main/java/com/ydtech/modules/equity/model/request/ThreeUserOrderListVo.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.equity.model.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.equity.model.vo.EquityPageQueryVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2025/4/30 14:41
+ *  @Description:  三方权益列表请求实体
+ */
+@NoArgsConstructor
+@Data
+public class ThreeUserOrderListVo extends BaseRequest {
+
+    @ApiModelProperty(value = "三方用戶Id")
+    @JsonProperty("threeUserId")
+    private String threeUserId;
+
+    // 新增字段
+    @ApiModelProperty(value = "返佣金额")
+    @JsonProperty("orderMoney")
+    private BigDecimal orderMoney;
+
+
+    public ThreeUserOrderListVo(String appKey,BigDecimal orderMoney){
+        this.threeUserId = appKey;
+        this.orderMoney = orderMoney;
+    }
+}

+ 231 - 0
src/main/java/com/ydtech/modules/equity/model/request/ThreeUserOrderVo.java

@@ -0,0 +1,231 @@
+package com.ydtech.modules.equity.model.request;
+
+import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.model.response.LocalEquityPackageAssociation;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2025/4/30 14:41
+ *  @Description:  三方下单实体
+ */
+@Data
+public class ThreeUserOrderVo extends BaseRequest {
+
+
+    @ApiModelProperty(value = "子订单id")
+    @JsonProperty("orderId")
+    private String orderId;
+
+    @ApiModelProperty(value = "代客下单用户id")
+    @JsonProperty("orderUserId")
+    private String orderUserId;
+
+    @ApiModelProperty(value = "代客下单用户名称")
+    @JsonProperty("orderUserName")
+    private String orderUserName;
+
+    @ApiModelProperty(value = "代客下单类型 1.渠道 2.代理人 3.电销")
+    @JsonProperty("orderUserType")
+    private Integer orderUserType;
+
+    @ApiModelProperty(value = "代客下单手机号")
+    @JsonProperty("orderUserPhone")
+    private String orderUserPhone;
+
+    @ApiModelProperty(value = "代客下单身份证号")
+    @JsonProperty("orderUserIdcard")
+    private String orderUserIdcard;
+
+    @ApiModelProperty(value = "三方用户id")
+    @JsonProperty("threeUserId")
+    private String threeUserId;
+
+    @ApiModelProperty(value = "投保人姓名")
+    @JsonProperty("applyName")
+    private String applyName;
+
+    @ApiModelProperty(value = "投保人身份证号")
+    @JsonProperty("applyIdcard")
+    private String applyIdcard;
+
+    @ApiModelProperty(value = "投保人电话")
+    @JsonProperty("applyIdcard")
+    private String applyPhone;
+
+    @ApiModelProperty(value = "被保人姓名")
+    @JsonProperty("insureName")
+    private String insureName;
+
+    @ApiModelProperty(value = "被保人身份证号")
+    @JsonProperty("insureIdcard")
+    private String insureIdcard;
+
+    @ApiModelProperty(value = "被保人电话")
+    @JsonProperty("insurePhone")
+    private String insurePhone;
+
+    @ApiModelProperty(value = "车主姓名")
+    @JsonProperty("ownerName")
+    private String ownerName;
+
+    @ApiModelProperty(value = "车主身份证号")
+    @JsonProperty("ownerIdcard")
+    private String ownerIdcard;
+
+    @ApiModelProperty(value = "车主电话")
+    @JsonProperty("ownerPhone")
+    private String ownerPhone;
+
+    @ApiModelProperty(value = "返佣金额")
+    @JsonProperty("orderMoney")
+    private BigDecimal orderMoney;
+
+    @ApiModelProperty(value = "剩余金额(抵扣积分)")
+    @JsonProperty("surplusMoney")
+    private BigDecimal surplusMoney;
+
+    // 新增 字段
+    @ApiModelProperty(value = "人员类型(1.代理人 2. 投保人 3.被保人 4.车主)")
+    @JsonProperty("type")
+    private Integer type;
+
+    @ApiModelProperty(value = "权益卷列表")
+    @JsonProperty("rightsInfoVoList")
+    private List<ThreeRightsInfoVo>  rightsInfoVoList;
+    public ThreeUserOrderVo(String companyId, InsAreaCompanyEquity equity, String appkey, SysUser user) {
+        this.orderId = companyId;
+        this.threeUserId = appkey;
+        if(equity.getReceiveType().equals(0)){
+            this.applyName = equity.getReceiveName();
+            this.applyPhone = equity.getReceivePhone();
+            this.applyIdcard = equity.getReceiveIdentify();
+            this.type = 2;
+        }else if(equity.getReceiveType().equals(1)){
+            this.insureName = equity.getReceiveName();
+            this.insurePhone = equity.getReceivePhone();
+            this.insureIdcard = equity.getReceiveIdentify();
+            this.type = 3;
+        }else if(equity.getReceiveType().equals(2)){
+            this.ownerName = equity.getReceiveName();
+            this.ownerPhone = equity.getReceivePhone();
+            this.ownerIdcard = equity.getReceiveIdentify();
+            this.type = 4;
+        }
+        this.orderMoney = equity.getOrderMoney();
+        this.surplusMoney = equity.getPoint();
+        this.rightsInfoVoList = ThreeRightsInfoVo.coverList(equity.getEquityInfo());
+        if(StringUtils.isBlank(user.getDeptType())){
+            this.orderUserType = 0;
+        }else{
+            this.orderUserType = Integer.parseInt(user.getDeptType());
+        }
+
+        this.orderUserId = user.getId();
+        this.orderUserName = user.getName();
+        this.orderUserPhone = user.getMobile();
+        this.orderUserIdcard = user.getIdentity();
+    }
+
+    @Data
+    public static class ThreeRightsInfoVo {
+
+
+        @ApiModelProperty(value = "权益卷Id")
+        @JsonProperty("rightsInfoId")
+        private String rightsInfoId;
+
+        @ApiModelProperty(value = "权益卷套餐Id")
+        @JsonProperty("courseId")
+        private String  courseId;
+
+        @ApiModelProperty(value = "权益卷个数")
+        @JsonProperty("number")
+        private Integer number;
+
+
+        @ApiModelProperty(value = "类型(1.兑换券 2.折扣卷 3.抵现劵)")
+        @JsonProperty("type")
+        private String type;
+
+        @ApiModelProperty(value = "权益名称")
+        @JsonProperty("rightsName")
+        private String rightsName;
+
+        @ApiModelProperty(value = "分类")
+        @JsonProperty("classify")
+        private String classify;
+
+        @ApiModelProperty(value = "折扣值")
+        @JsonProperty("rebate")
+        private String rebate;
+
+        @ApiModelProperty(value = "抵现金额")
+        @JsonProperty("amount")
+        private java.math.BigDecimal amount;
+
+        @ApiModelProperty(value = "权益图片")
+        @JsonProperty("rightsPicture")
+        private String rightsPicture;
+
+        @ApiModelProperty(value = "市场售价")
+        @JsonProperty("marketPrice")
+        private BigDecimal marketPrice;
+
+        @ApiModelProperty(value = "协议价")
+        @JsonProperty("contractRate")
+        private BigDecimal contractRate;
+
+        @ApiModelProperty(value = "三方结算价格")
+        @JsonProperty("settlePrice")
+        private BigDecimal settlePrice;
+
+
+        @ApiModelProperty(value = "使用有限期类型(1.用户领取后生效2.三方用户赠送时间起3.固定时间段4.长期可用)")
+        @JsonProperty("useCondition")
+        private String useCondition;
+
+        @ApiModelProperty(value = "天数")
+        @JsonProperty("dayNum")
+        private Integer dayNum;
+
+        @ApiModelProperty(value = "开始时间")
+        @JsonProperty("startTime")
+        private Date startTime;
+
+        @ApiModelProperty(value = "结束时间")
+        @JsonProperty("endTime")
+        private Date endTime;
+
+
+
+        public static List<ThreeRightsInfoVo> coverList(String equityInfo) {
+            List<ThreeRightsInfoVo> infoVoList = new ArrayList<>();
+            LocalEquityPackagePage packagevo = JSON.parseObject(equityInfo, LocalEquityPackagePage.class);
+            List<LocalEquityPackageAssociation> localEquityPackageAssociationList = packagevo.getLocalEquityPackageAssociationList();
+
+            for (LocalEquityPackageAssociation localEquityPackageAssociation : localEquityPackageAssociationList) {
+                ThreeRightsInfoVo threeRightsInfoVo = new ThreeRightsInfoVo();
+                BeanUtils.copyProperties(localEquityPackageAssociation,threeRightsInfoVo);
+                threeRightsInfoVo.setRightsInfoId(localEquityPackageAssociation.getRightsId());
+                threeRightsInfoVo.setCourseId(localEquityPackageAssociation.getRightsPackageId());
+                infoVoList.add(threeRightsInfoVo);
+            }
+            return infoVoList;
+        }
+    }
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/equity/model/response/BaseResponse.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.equity.model.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 01222613534207241613320L;
+
+    @JsonProperty("code")
+    public String code;
+
+    @JsonProperty("message")
+    public String message;
+
+    @JsonProperty("result")
+    private String result;
+}

+ 164 - 0
src/main/java/com/ydtech/modules/equity/model/response/LocalEquityPackageAssociation.java

@@ -0,0 +1,164 @@
+package com.ydtech.modules.equity.model.response;
+
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: 权益套餐关联表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-06
+ * @Version: V1.0
+ */
+@Data
+public class LocalEquityPackageAssociation implements Serializable {
+    private static final long serialVersionUID = 1L;
+    
+	/**
+	 * id
+	 */
+	@JsonProperty("id")
+	private String id;
+
+	/**
+	 * 权益id
+	 */
+	@JsonProperty("rightsId")
+	private String rightsId;
+
+	/**
+	 * 权益套餐id
+	 */
+	@JsonProperty("rightsPackageId")
+	private String rightsPackageId;
+
+	/**
+	 * 是否删除(0,:否 1:是)
+	 */
+	@JsonProperty("delFlag")
+	private Integer delFlag;
+
+	/**
+	 * 创建者
+	 */
+	@JsonProperty("createBy")
+	private String createBy;
+
+	/**
+	 * 创建时间
+	 */
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@JsonProperty("createTime")
+	private Date createTime;
+
+	/**
+	 * 修改者
+	 */
+	@JsonProperty("updateBy")
+	private String updateBy;
+
+	/**
+	 * 修改时间
+	 */
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@JsonProperty("updateTime")
+	private Date updateTime;
+
+	/**
+	 * 数量
+	 */
+	@JsonProperty("number")
+	private Integer number;
+
+	/**
+	 * 类型(1.兑换券 2.折扣卷 3.抵现劵)
+	 */
+	@JsonProperty("type")
+	private String type;
+
+	/**
+	 * 权益名称
+	 */
+	@JsonProperty("rightsName")
+	private String rightsName;
+
+	/**
+	 * 分类
+	 */
+	@JsonProperty("classify")
+	private String classify;
+
+	/**
+	 * 折扣值
+	 */
+	@JsonProperty("rebate")
+	private String rebate;
+
+
+	/**
+	 * 抵现金额
+	 */
+	@JsonProperty("amount")
+	private BigDecimal amount;
+
+	/**
+	 * 权益图片
+	 */
+	@JsonProperty("rightsPicture")
+	private String rightsPicture;
+
+	/**
+	 * 市场售价
+	 */
+	@JsonProperty("marketPrice")
+	private BigDecimal marketPrice;
+
+	/**
+	 * 协议价
+	 */
+	@JsonProperty("contractRate")
+	private BigDecimal contractRate;
+
+	/**
+	 * 三方结算价格
+	 */
+	@JsonProperty("settlePrice")
+	private BigDecimal settlePrice;
+
+
+	/**
+	 * 使用有限期类型(1.用户领取后生效2.三方用户赠送时间起3.固定时间段4.长期可用)
+	 */
+	@JsonProperty("useCondition")
+	private String useCondition;
+
+	/**
+	 * 天数
+	 */
+	@JsonProperty("dayNum")
+	private Integer dayNum;
+
+	/**
+	 * 开始时间
+	 */
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonProperty("startTime")
+	private Date startTime;
+
+	/**
+	 * 结束时间
+	 */
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonProperty("endTime")
+	private Date endTime;
+
+}

+ 127 - 0
src/main/java/com/ydtech/modules/equity/model/response/LocalEquityPackagePage.java

@@ -0,0 +1,127 @@
+package com.ydtech.modules.equity.model.response;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 权益套餐表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-06
+ * @Version: V1.0
+ */
+@Data
+public class LocalEquityPackagePage{
+	
+	/**id*/
+	@JsonProperty("id")
+	private String id;
+
+	/**
+	 * 权益券套餐名称
+	 */
+	@JsonProperty("equityPackageName")
+	private String equityPackageName;
+
+	/**
+	 * 费用最大值
+	 */
+	@JsonProperty("costPriceMax")
+	private BigDecimal costPriceMax;
+
+	/**
+	 * 费用最小值
+	 */
+	@JsonProperty("costPriceMin")
+	private BigDecimal costPriceMin;
+
+	/**
+	 * 市场价
+	 */
+	@JsonProperty("marketPrice")
+	private BigDecimal marketPrice;
+
+	/**
+	 * 协议价
+	 */
+	@JsonProperty("agreementPrice")
+	private BigDecimal agreementPrice;
+
+	/**
+	 * 三方结算价
+	 */
+	@JsonProperty("threeSettlementPrice")
+	private BigDecimal threeSettlementPrice;
+
+	/**
+	 * 套餐总价
+	 */
+	@JsonProperty("totalPackagePrice")
+	private BigDecimal totalPackagePrice;
+
+	/**
+	 * 套餐售价
+	 */
+	@JsonProperty("packagePrice")
+	private BigDecimal packagePrice;
+
+	/**
+	 * 行业id
+	 */
+	@JsonProperty("industryId")
+	private String industryId;
+
+	/**
+	 * 是否删除(0,:否 1:是)
+	 */
+	@JsonProperty("delFlag")
+	private Integer delFlag;
+
+	/**
+	 * 创建者
+	 */
+	@JsonProperty("createBy")
+	private String createBy;
+
+	/**
+	 * 创建时间
+	 */
+  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@JsonProperty("createTime")
+	private Date createTime;
+
+	/**
+	 * 修改者
+	 */
+	@JsonProperty("updateBy")
+	private String updateBy;
+
+	/**
+	 * 修改时间
+	 */
+  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@JsonProperty("updateTime")
+	private Date updateTime;
+
+	/**
+	 * 是否上架(0 未上架  1  上架)
+	 */
+	@JsonProperty("status")
+	private String status;
+
+	/**
+	 * 权益套餐关联表
+	 */
+	@JsonProperty("localEquityPackageAssociationList")
+	private List<LocalEquityPackageAssociation> localEquityPackageAssociationList;
+	
+}

+ 25 - 0
src/main/java/com/ydtech/modules/equity/model/response/PageResultResponse.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.equity.model.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.equity.model.request.ThreeRightsInfoPageVo;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class PageResultResponse extends BaseResponse {
+
+    @JsonProperty("records")
+    public List<LocalEquityPackagePage> records;
+
+    @JsonProperty("total")
+    public int total;
+
+    @JsonProperty("pages")
+    public int pages;
+
+    @JsonProperty("size")
+    public int size;
+}

+ 31 - 0
src/main/java/com/ydtech/modules/equity/model/response/PointRatioDto.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.equity.model.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2025/5/8 15:27
+ *  @Description: 现金兑换积分比例
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "现金兑换积分比例")
+public class PointRatioDto extends BaseResponse{
+
+    @ApiModelProperty("分子")
+    @JsonProperty("numerator")
+    private String  numerator;
+
+    @ApiModelProperty("分母")
+    @JsonProperty("denominator")
+    private String  denominator;
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/equity/model/vo/AddEquityPageQueryVo.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.equity.model.vo;
+
+import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@ApiModel(description = "补录订单权益包列表查询VO")
+@Data
+public class AddEquityPageQueryVo extends BasePageVO {
+
+    @NotBlank(message = "费用id不能为空")
+    @ApiModelProperty(value = "费用id")
+    private String costsId;
+
+    @NotNull(message = "总优惠不能为空")
+    @ApiModelProperty(value = "总优惠")
+    private BigDecimal totalAmount;
+}

+ 53 - 0
src/main/java/com/ydtech/modules/equity/model/vo/EquityPackageVo.java

@@ -0,0 +1,53 @@
+package com.ydtech.modules.equity.model.vo;
+
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@ApiModel(description = "权益包信息VO")
+@Data
+public class EquityPackageVo {
+
+
+    @ApiModelProperty(value = "权益包名称")
+    private String packageName;
+
+    @ApiModelProperty(value = "留点比例")
+    private String ldProportion;
+
+    @ApiModelProperty(value = "总费用")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty(value = "代理人费用")
+    private BigDecimal dlrAmount;
+
+    @ApiModelProperty(value = "客户权益费用")
+    private BigDecimal khAmount;
+
+    @ApiModelProperty(value = "权益包价格")
+    private BigDecimal qybAmount;
+
+    @ApiModelProperty(value = "客户权益明细")
+    private List<EquityPackageInfoVo> infoVoList;
+
+    @Data
+    public static class EquityPackageInfoVo {
+
+        @ApiModelProperty(value = "权益名称")
+        private String equityName;
+
+        @ApiModelProperty(value = "数量")
+        private Integer number;
+
+        @ApiModelProperty(value = "市场价")
+        private BigDecimal marketPrice;
+
+        @ApiModelProperty(value = "权益价")
+        private BigDecimal agreementPrice;
+
+    }
+}

+ 40 - 0
src/main/java/com/ydtech/modules/equity/model/vo/EquityPageQueryVo.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.equity.model.vo;
+
+import com.ydtech.core.page.BasePageVO;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@ApiModel(description = "权益包列表查询VO")
+@Data
+public class EquityPageQueryVo extends BasePageVO {
+
+    @NotBlank(message = "订单号不能为空")
+    @ApiModelProperty(value = "订单id")
+    private String companyId;
+
+    private FeeOrderNewVo feeOrderNewVo;
+
+    private PageResult pageResult;
+
+    private BigDecimal pointProportion;
+
+    private BigDecimal amount;
+
+    private BigDecimal maxPackagePrice;
+
+    private LocalEquityPackagePage equityInfoVo;
+
+    private InsAreaCompanyEquity equity;
+
+
+
+}

+ 81 - 0
src/main/java/com/ydtech/modules/equity/model/vo/EquitySaveVo.java

@@ -0,0 +1,81 @@
+package com.ydtech.modules.equity.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@ApiModel(description = "权益包新增VO")
+@Data
+public class EquitySaveVo {
+
+    @NotBlank(message = "订单号不能为空")
+    @ApiModelProperty(value = "订单id")
+    private String companyId;
+
+    @NotNull(message = "选中权益包不能为空")
+    @ApiModelProperty(value = "权益包列表")
+    private LocalEquityPackagePage equityInfo;
+
+    /**
+     * 接收人类型0.投保人 1.被保人 2.车主
+     */
+    @NotNull(message = "接收人类型不能为空")
+    @ApiModelProperty(value = "接收人类型0.投保人 1.被保人 2.车主")
+    private Integer receiveType;
+
+    /**
+     * 接收人名字
+     */
+    @NotBlank(message = "接收人名字不能为空")
+    @ApiModelProperty(value = "接收人名字")
+    private String receiveName;
+
+    /**
+     * 接收人电话
+     */
+    @NotBlank(message = "接收人电话不能为空")
+    @ApiModelProperty(value = "接收人电话")
+    private String receivePhone;
+
+    /**
+     * 接收人身份证号
+     */
+    @ApiModelProperty(value = "接收人身份证号")
+    @NotBlank(message = "接收人身份证号不能为空")
+    private String receiveIdentify;
+
+    /**
+     * 返佣金额
+     */
+    @NotNull(message = "返佣金额不能为空")
+    @ApiModelProperty(value = "返佣金额")
+    private BigDecimal orderMoney;
+
+    @NotNull(message = "兑换积分不能为空")
+    @ApiModelProperty(value = "兑换积分")
+    private BigDecimal point;
+
+    @ApiModelProperty(value = "代客下单用户id")
+    private String orderUserId;
+
+    @ApiModelProperty(value = "代客下单用户名称")
+    private String orderUserName;
+
+    @ApiModelProperty(value = "代客下单类型 1.渠道 2.代理人 3.电销")
+    private Integer orderUserType;
+
+    @ApiModelProperty(value = "代客下单手机号")
+    private String orderUserPhone;
+
+    @ApiModelProperty(value = "代客下单身份证号")
+    private String orderUserIdcard;
+
+
+}

+ 70 - 0
src/main/java/com/ydtech/modules/equity/service/EquityService.java

@@ -0,0 +1,70 @@
+package com.ydtech.modules.equity.service;
+
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.model.vo.AddEquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquitySaveVo;
+
+public interface EquityService {
+
+    /**
+     * 权益包分页列表
+     * @param pageQueryVo
+     * @return
+     */
+    EquityPageQueryVo equityInfo(EquityPageQueryVo pageQueryVo);
+
+    /**
+     * 补录订单权益包分页列表
+     * @param pageQueryVo
+     * @return
+     */
+    EquityPageQueryVo addEquityInfo(AddEquityPageQueryVo pageQueryVo);
+
+    /**
+     * 保存选中的权益包
+     * @param equitySaveVo
+     */
+    void saveEquity(EquitySaveVo equitySaveVo);
+
+    /**
+     * 权益包下单
+     *
+     * @param companyId
+     */
+    InsAreaCompanyEquity createEquityOrder(String companyId);
+
+    /**
+     * 权益包确认下单
+     * @param companyId
+     */
+    void confirmEquityOrder(String companyId);
+
+    /**
+     * 放弃选中权益
+     * @param companyId
+     */
+    void delEquity(String companyId);
+
+    /**
+     * 保存权益类型
+     * @param companyId
+     * @param type
+     */
+    void saveEquityType(String companyId, Integer type);
+
+    /**
+     * 获取权益金额
+     * @param pageQueryVo
+     * @return
+     */
+    EquityPageQueryVo equityList(EquityPageQueryVo pageQueryVo);
+
+    /**
+     * 通过订单id获取信息
+     * @param companyId
+     * @return
+     */
+    InsAreaCompanyEquity queryEquityInfo(String companyId);
+}

+ 13 - 0
src/main/java/com/ydtech/modules/equity/service/InsAreaCompanyEquityService.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.equity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+
+/**
+* @author dongxin
+* @description 针对表【ins_area_company_equity(订单权益包下单表)】的数据库操作Service
+* @createDate 2025-05-07 18:24:28
+*/
+public interface InsAreaCompanyEquityService extends IService<InsAreaCompanyEquity> {
+
+}

+ 334 - 0
src/main/java/com/ydtech/modules/equity/service/impl/EquityServiceImpl.java

@@ -0,0 +1,334 @@
+package com.ydtech.modules.equity.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.equity.components.EquityApiConfigurationProperties;
+import com.ydtech.modules.equity.components.EquityRequestApiComponents;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.model.request.*;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import com.ydtech.modules.equity.model.response.PageResultResponse;
+import com.ydtech.modules.equity.model.response.PointRatioDto;
+import com.ydtech.modules.equity.model.vo.AddEquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquityPageQueryVo;
+import com.ydtech.modules.equity.model.vo.EquitySaveVo;
+import com.ydtech.modules.equity.service.EquityService;
+import com.ydtech.modules.equity.service.InsAreaCompanyEquityService;
+import com.ydtech.modules.order.constants.BusinessConstant;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
+import com.ydtech.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+@Service
+public class EquityServiceImpl implements EquityService {
+
+    @Autowired
+    private EquityRequestApiComponents equityRequestApiComponents;
+
+    @Autowired
+    private InsFeeOrderNewService insFeeOrderNewService;
+
+    @Autowired
+    private InsAreaCompanyService insAreaCompanyService;
+
+    @Autowired
+    private InsOrdersService insOrdersService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private PtlAgreementProductCostsNewService agreementProductCostsNewService;
+
+    @Autowired
+    private InsAreaCompanyEquityService insAreaCompanyEquityService;
+
+    @Autowired
+    private EquityApiConfigurationProperties properties;
+
+    @Override
+    public EquityPageQueryVo equityList(EquityPageQueryVo pageQueryVo) {
+        // 通过订单号获取优惠信息
+        InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
+                .eq(InsFeeOrderNew::getInsOrderNo, pageQueryVo.getCompanyId()));
+        // 获取费用信息
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreementProductCostsNew::getId, insFeeOrderNew.getCostsId());
+        PtlAgreementProductCostsNew agreementProductCostsNew = agreementProductCostsNewService.getOne(wrapper);
+        if(Objects.isNull(agreementProductCostsNew)){
+            throw new SystemException("费用信息异常!");
+        }
+        if(StringUtils.isBlank(agreementProductCostsNew.getLdProportion())){
+            throw new SystemException("先去设置代理人的留点比例!");
+        }
+
+        FeeOrderNewVo feeOrderNewVo = this.newConvertOrderFeeVoData(insFeeOrderNew,agreementProductCostsNew);
+        // 获取佣金
+        List<FeeOrderNewVo.ExportFee> feeList = feeOrderNewVo.getExportFee();
+        BigDecimal totalAmount = BigDecimal.valueOf(0);
+        for (FeeOrderNewVo.ExportFee fee : feeList) {
+            if(BusinessConstant.FEE_INSURANCE_TYPE_4.equals(fee.getInsuranceType())){
+                totalAmount = fee.getTotalAmount();
+            }
+        }
+        ThreeUserOrderListVo threeUserOrderListVo = new ThreeUserOrderListVo( properties.getAppkey(), totalAmount);
+        List<LocalEquityPackagePage> packagePageList = equityRequestApiComponents.equityList(threeUserOrderListVo);
+        Optional<LocalEquityPackagePage> oldestPackage = packagePageList.stream().max(Comparator.comparingDouble(p -> p.getTotalPackagePrice().doubleValue()));
+        pageQueryVo.setAmount(totalAmount);
+        oldestPackage.ifPresent(packages -> pageQueryVo.setMaxPackagePrice(packages.getTotalPackagePrice()));
+        return pageQueryVo;
+    }
+
+    @Override
+    public InsAreaCompanyEquity queryEquityInfo(String companyId) {
+        InsAreaCompanyEquity equity = insAreaCompanyEquityService.getById(companyId);
+        return equity;
+    }
+
+    @Override
+    public EquityPageQueryVo equityInfo(EquityPageQueryVo pageQueryVo) {
+
+        // 通过订单号获取优惠信息
+        InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
+                .eq(InsFeeOrderNew::getInsOrderNo, pageQueryVo.getCompanyId()));
+        // 获取费用信息
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreementProductCostsNew::getId, insFeeOrderNew.getCostsId());
+        PtlAgreementProductCostsNew agreementProductCostsNew = agreementProductCostsNewService.getOne(wrapper);
+        if(Objects.isNull(agreementProductCostsNew)){
+            throw new SystemException("费用信息异常!");
+        }
+        if(StringUtils.isBlank(agreementProductCostsNew.getLdProportion())){
+            throw new SystemException("先去设置代理人的留点比例!");
+        }
+
+        FeeOrderNewVo feeOrderNewVo = this.newConvertOrderFeeVoData(insFeeOrderNew,agreementProductCostsNew);
+        // 获取佣金
+        List<FeeOrderNewVo.ExportFee> feeList = feeOrderNewVo.getExportFee();
+        BigDecimal totalAmount = BigDecimal.valueOf(0);
+        for (FeeOrderNewVo.ExportFee fee : feeList) {
+            if(BusinessConstant.FEE_INSURANCE_TYPE_4.equals(fee.getInsuranceType())){
+                totalAmount = fee.getTotalAmount();
+            }
+        }
+        int pageNum = pageQueryVo.getPageNum();
+        int pageSize = pageQueryVo.getPageSize();
+        PageResult pageResult = new PageResult();
+        ThreeRightsInfoPageVo threeRightsInfoPageVo = new ThreeRightsInfoPageVo(pageQueryVo, properties.getAppkey(), totalAmount);
+        PageResultResponse response = equityRequestApiComponents.equityPage(threeRightsInfoPageVo);
+        pageResult.setPageNum(pageNum);
+        pageResult.setPageSize(pageSize);
+        pageResult.setTotalSize(response.total);
+        pageResult.setContent(response.getRecords());
+        pageQueryVo.setPageResult(pageResult);
+        pageQueryVo.setFeeOrderNewVo(feeOrderNewVo);
+        // 获取积分兑换比例(接口获取)
+        ThreePointVo threePointVo = new ThreePointVo();
+        threePointVo.setThreeUserId(properties.getAppkey());
+        PointRatioDto pointRatioDto = equityRequestApiComponents.getPointRatio(threePointVo);
+        pageQueryVo.setPointProportion(new BigDecimal(pointRatioDto.getDenominator()));
+
+        // 获取权益包
+        InsAreaCompanyEquity equity = insAreaCompanyEquityService.getById(pageQueryVo.getCompanyId());
+        if(Objects.nonNull(equity)){
+            String equityInfo = equity.getEquityInfo();
+            LocalEquityPackagePage packagevo = JSON.parseObject(equityInfo, LocalEquityPackagePage.class);
+            pageQueryVo.setEquityInfoVo(packagevo);
+            pageQueryVo.setEquity(equity);
+        }
+        return pageQueryVo;
+    }
+
+    @Override
+    public EquityPageQueryVo addEquityInfo(AddEquityPageQueryVo pageQueryVo) {
+        EquityPageQueryVo pageQueryDto = new EquityPageQueryVo();
+        // 获取费用信息
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreementProductCostsNew::getId, pageQueryVo.getCostsId());
+        PtlAgreementProductCostsNew agreementProductCostsNew = agreementProductCostsNewService.getOne(wrapper);
+        if(Objects.isNull(agreementProductCostsNew)){
+            throw new SystemException("费用信息异常!");
+        }
+        if(StringUtils.isBlank(agreementProductCostsNew.getLdProportion())){
+            throw new SystemException("先去设置代理人的留点比例!");
+        }
+        BigDecimal amount = pageQueryVo.getTotalAmount().subtract(pageQueryVo.getTotalAmount().multiply(new BigDecimal(agreementProductCostsNew.getLdProportion()).divide(new BigDecimal(100))));
+        int pageNum = pageQueryVo.getPageNum();
+        int pageSize = pageQueryVo.getPageSize();
+        PageResult pageResult = new PageResult();
+        ThreeRightsInfoPageVo threeRightsInfoPageVo = new ThreeRightsInfoPageVo(pageQueryVo, properties.getAppkey(), amount);
+        PageResultResponse response = equityRequestApiComponents.equityPage(threeRightsInfoPageVo);
+        pageResult.setPageNum(pageNum);
+        pageResult.setPageSize(pageSize);
+        pageResult.setTotalSize(response.total);
+        pageResult.setContent(response.getRecords());
+        pageQueryDto.setPageResult(pageResult);
+        // 获取积分兑换比例(接口获取)
+        ThreePointVo threePointVo = new ThreePointVo();
+        threePointVo.setThreeUserId(properties.getAppkey());
+        PointRatioDto pointRatioDto = equityRequestApiComponents.getPointRatio(threePointVo);
+        pageQueryDto.setPointProportion(new BigDecimal(pointRatioDto.getDenominator()));
+        pageQueryDto.setAmount(amount);
+        return pageQueryDto;
+    }
+
+    @Override
+    public void saveEquity(EquitySaveVo equitySaveVo) {
+
+        InsAreaCompanyEquity equity = insAreaCompanyEquityService.getById(equitySaveVo.getCompanyId());
+        if (Objects.isNull(equity)) {
+            equity = new InsAreaCompanyEquity();
+            equity.setType(1);
+        }
+        BeanUtils.copyProperties(equitySaveVo, equity);
+        equity.setSubOrderNo(equitySaveVo.getCompanyId());
+        equity.setStatus(0);
+        LocalEquityPackagePage packagevo = equitySaveVo.getEquityInfo();
+        equity.setEquityInfo(JSON.toJSONString(packagevo));
+        equity.setEquityId(packagevo.getId());
+        equity.setEquityName(packagevo.getEquityPackageName());
+        insAreaCompanyEquityService.saveOrUpdate(equity);
+    }
+
+    @Override
+    public InsAreaCompanyEquity createEquityOrder(String companyId) {
+        // 获取权益包
+        InsAreaCompanyEquity equity = insAreaCompanyEquityService.getById(companyId);
+        if(Objects.isNull(equity)){
+            throw new SystemException("客户权益未保存成功!");
+        }
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(companyId);
+        InsOrders orders = insOrdersService.getById(insAreaCompany.getOrderno());
+        SysUser user = sysUserService.getByUserId(orders.getUserid());
+        if(Objects.isNull(equity)){return null;}
+        if(!equity.getStatus().equals(1)){
+            ThreeUserOrderVo threeUserOrderVo = new ThreeUserOrderVo(companyId, equity,properties.getAppkey(),user);
+            equityRequestApiComponents.createOrder(threeUserOrderVo);
+            equity.setStatus(1);
+            insAreaCompanyEquityService.updateById(equity);
+        }
+        return equity;
+    }
+
+    @Override
+    public void confirmEquityOrder(String companyId) {
+        // 获取权益包
+        InsAreaCompanyEquity equity = insAreaCompanyEquityService.getById(companyId);
+        if(Objects.isNull(equity) || !equity.getStatus().equals(1)){throw new SystemException("权益包订单异常");}
+        ThreeOrderVo threeOrderVo = new ThreeOrderVo(properties.getAppkey(), companyId);
+        equityRequestApiComponents.confirmOrder(threeOrderVo);
+        equity.setStatus(2);
+        insAreaCompanyEquityService.updateById(equity);
+    }
+
+    @Override
+    public void delEquity(String companyId) {
+        insAreaCompanyEquityService.removeById(companyId);
+    }
+
+    @Override
+    public void saveEquityType(String companyId, Integer type) {
+        InsAreaCompanyEquity equity = new InsAreaCompanyEquity();
+        equity.setSubOrderNo(companyId);
+        equity.setType(type);
+        insAreaCompanyEquityService.save(equity);
+    }
+
+
+    /**
+     * 计算费用
+     *
+     * @param insFeeOrderNew
+     * @param agreementProductCostsNew
+     * @return
+     */
+    private FeeOrderNewVo newConvertOrderFeeVoData(InsFeeOrderNew insFeeOrderNew, PtlAgreementProductCostsNew agreementProductCostsNew) {
+
+        FeeOrderNewVo feeOrderNewVo = new FeeOrderNewVo();
+        List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
+        // 出口费用
+        // 交强
+        FeeOrderNewVo.ExportFee jqExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_1,
+                insFeeOrderNew.getJqExportSuperviseCostsPremiums(), insFeeOrderNew.getJqExportOtherCostsPremiums(),
+                new BigDecimal(agreementProductCostsNew.getLdProportion())
+        );
+
+        //商业
+        FeeOrderNewVo.ExportFee syExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_2,
+                insFeeOrderNew.getSyExportSuperviseCostsPremiums(), insFeeOrderNew.getSyExportOtherCostsPremiums(),
+                new BigDecimal(agreementProductCostsNew.getLdProportion())
+        );
+
+        //非车
+        FeeOrderNewVo.ExportFee noExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_3,
+                insFeeOrderNew.getNoExportSuperviseCostsPremiums(), insFeeOrderNew.getNoExportOtherCostsPremiums(),
+                new BigDecimal(agreementProductCostsNew.getLdProportion()));
+
+        exportFeeList.add(jqExportFee);
+        exportFeeList.add(syExportFee);
+        exportFeeList.add(noExportFee);
+        //出口费用合计
+        FeeOrderNewVo.ExportFee exportFeeTotal = assignExportFeeTotal(exportFeeList);
+        exportFeeList.add(exportFeeTotal);
+
+        feeOrderNewVo.setExportFee(exportFeeList);
+        return feeOrderNewVo;
+
+    }
+
+    /**
+     * 费用合计
+     * @param exportFeeList
+     * @return
+     */
+    private FeeOrderNewVo.ExportFee assignExportFeeTotal(List<FeeOrderNewVo.ExportFee> exportFeeList) {
+        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
+        exportFee.setInsuranceType(BusinessConstant.FEE_INSURANCE_TYPE_4);
+        //总费用合计
+        BigDecimal totalAmount = exportFeeList.stream().map(FeeOrderNewVo.ExportFee::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        exportFee.setTotalAmount(Optional.of(totalAmount).orElse(BigDecimal.ZERO));
+        return exportFee;
+    }
+
+    /**
+     * 费用计算
+     *
+     * @param title
+     * @param superviseCostsPremiums
+     * @param otherCostsPremiums
+     * @param ldProportion
+     * @return
+     */
+    public FeeOrderNewVo.ExportFee assignExportFee(String title,
+                                                   BigDecimal superviseCostsPremiums,
+                                                   BigDecimal otherCostsPremiums,
+                                                   BigDecimal ldProportion) {
+        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
+        exportFee.setInsuranceType(title);
+        //手续费
+        exportFee.setSuperviseCostsPremiums(superviseCostsPremiums);
+        //跟单费
+        exportFee.setOtherCostsPremiums(otherCostsPremiums);
+        //总费用
+        BigDecimal totalAmount = superviseCostsPremiums.add(otherCostsPremiums);
+        exportFee.setTotalAmount(totalAmount.subtract(totalAmount.multiply(ldProportion.divide(new BigDecimal(100)))));
+        return exportFee;
+    }
+}

+ 22 - 0
src/main/java/com/ydtech/modules/equity/service/impl/InsAreaCompanyEquityServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.equity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.equity.dao.InsAreaCompanyEquityMapper;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.service.InsAreaCompanyEquityService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author dongxin
+* @description 针对表【ins_area_company_equity(订单权益包下单表)】的数据库操作Service实现
+* @createDate 2025-05-07 18:24:28
+*/
+@Service
+public class InsAreaCompanyEquityServiceImpl extends ServiceImpl<InsAreaCompanyEquityMapper, InsAreaCompanyEquity>
+    implements InsAreaCompanyEquityService {
+
+}
+
+
+
+

+ 92 - 0
src/main/java/com/ydtech/modules/equity/utils/SMCheckDataUtils.java

@@ -0,0 +1,92 @@
+package com.ydtech.modules.equity.utils;
+
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.crypto.SmUtil;
+import cn.hutool.crypto.asymmetric.SM2;
+import cn.hutool.crypto.symmetric.SM4;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2025/2/25 10:05
+ *  @Description: 国密算法
+ */
+public class SMCheckDataUtils {
+    public static void main(String[] args) {
+        String privateKeyHex = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgL4JFOA+0iymPbYi9ek5kHJ+BBjkdJV6GERmWnW1pAuugCgYIKoEcz1UBgi2hRANCAASfzrZzeAfaZR5nCLLA28F1sRdhUfyaQMbE+QlK62trsGH9F77GyeF7vFu4fx/BnZaCQQYA2cyBbPLXM1gL9aZV";
+        String publicKeyHex = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEn862c3gH2mUeZwiywNvBdbEXYVH8mkDGxPkJSutra7Bh/Re+xsnhe7xbuH8fwZ2WgkEGANnMgWzy1zNYC/WmVQ==";
+        String scret = "7eb6c2063bb2d2ce3bdacebc6ecad8df";
+//        User user =new User("1","张三");
+//        String userStr = JSON.toJSONString(user);
+        //加签
+//        String signStr =  sm2SignStr(userStr,privateKeyHex,publicKeyHex);
+//        //加密
+//        String dataStr = sm4EncryptStr(userStr,scret);
+//        System.out.println("sm2签名: " + signStr);
+//        System.out.println("sm4加密: " + dataStr);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/2/25 9:53
+     *  @scret  秘钥
+     *  @plainText   待解密的字符串
+     *  @Description:  sm4 解密
+     */
+    public static String sm4DecryptStr(String plainText,String scret){
+        SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(scret));
+        String decryptedText = sm4.decryptStr(plainText);
+        System.out.println("解密后的文本: " + decryptedText);
+        return decryptedText;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/2/25 9:56
+     *   @scret 秘钥
+     *   @plainText 待加密的字符串
+     *  @Description:加密
+     */
+    public  static String sm4EncryptStr(String plainText,String scret){
+        SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(scret));
+        String encryptText = sm4.encryptHex(plainText);
+        System.out.println("加密后的文本: " + encryptText);
+        return encryptText;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/2/25 9:53
+     *  @privateKeyHex  私钥
+     *  @publicKeyHex  公钥
+     *  @plainText   待加签的字符串
+     *  @Description:  sm2 加签
+     */
+    public static String sm2SignStr(String plainText,String privateKeyHex,String publicKeyHex){
+        SM2 sm2 =  SmUtil.sm2(privateKeyHex,publicKeyHex);
+        //加签
+        String signStr = sm2.signHex(HexUtil.encodeHexStr(plainText));
+        System.out.println("加签后的文本: " + signStr);
+        return signStr;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/2/25 9:53
+     *  @privateKeyHex  私钥
+     *  @publicKeyHex  公钥
+     *  @plainText   待验签的字符串
+     *  @signature  签名
+     *  @Description:  sm2 加签
+     */
+    public static boolean sm2VerifyHexStr(String plainText, String signature, String privateKeyHex, String publicKeyHex){
+        SM2 sm2 =  SmUtil.sm2(privateKeyHex,publicKeyHex);
+        //验签
+        boolean flag = sm2.verifyHex(HexUtil.encodeHexStr(plainText), signature);
+        System.out.println("验证是否通过: " + flag);
+        return flag;
+    }
+}

+ 1 - 1
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -157,7 +157,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                     }
                     }
                 }
                 }
 
 
-                //使用性质 营业  非营业
+                //使用性质 营业 非营业
                 if(attr.getAttrCode().equals("NatureOfUse")){
                 if(attr.getAttrCode().equals("NatureOfUse")){
                     String[] split = attr.getMin().split(",");
                     String[] split = attr.getMin().split(",");
                     boolean isPipei = false;
                     boolean isPipei = false;

+ 7 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -196,6 +196,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
 
             //生成机构费用
             //生成机构费用
             gene_deptfee(order, insFeeOrderNew, insAreaCompany);
             gene_deptfee(order, insFeeOrderNew, insAreaCompany);
+
+
             //结算费用生成
             //结算费用生成
             insPlyIncomeService.saveBalanceNew(order, insFeeOrderNew, insAreaCompany, user.getLeaderId(), user.getLeaderName());
             insPlyIncomeService.saveBalanceNew(order, insFeeOrderNew, insAreaCompany, user.getLeaderId(), user.getLeaderName());
 
 
@@ -248,6 +250,10 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                     sysUserAccount.setDocumentaryStatus("2");  // 收入
                     sysUserAccount.setDocumentaryStatus("2");  // 收入
                     sysUserAccount.setSuborderId(insAreaCompany.getId());  // 订单Id
                     sysUserAccount.setSuborderId(insAreaCompany.getId());  // 订单Id
                     sysUserAccountService.addOrUpdate(sysUserAccount);
                     sysUserAccountService.addOrUpdate(sysUserAccount);
+
+
+
+
                     if (insFeeOrderNew.getDistributionStatus() != null) {
                     if (insFeeOrderNew.getDistributionStatus() != null) {
                         createInsFeeOrderNewDistribution(insFeeOrderNew, insAreaCompany, order, order.getUserid(), BigDecimal.ZERO, BigDecimal.ZERO, "0");
                         createInsFeeOrderNewDistribution(insFeeOrderNew, insAreaCompany, order, order.getUserid(), BigDecimal.ZERO, BigDecimal.ZERO, "0");
                         if (insFeeOrderNew.getFirstLevelUserId() != null) {
                         if (insFeeOrderNew.getFirstLevelUserId() != null) {
@@ -433,6 +439,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             // 审核完成之后 清空锁
             // 审核完成之后 清空锁
             redisTemplate.delete("FEE_AUDIT:"+insOrderNo);
             redisTemplate.delete("FEE_AUDIT:"+insOrderNo);
         } catch (Exception e) {
         } catch (Exception e) {
+            e.printStackTrace();
             throw new SystemException("当前业务繁忙,请稍后重试");
             throw new SystemException("当前业务繁忙,请稍后重试");
         } finally {
         } finally {
             //释放锁
             //释放锁

+ 1 - 0
src/main/java/com/ydtech/modules/order/components/dajia/DaJiaRequestApiComponents.java

@@ -65,6 +65,7 @@ public class DaJiaRequestApiComponents {
 
 
         InsuranceLog.infoLog(InsuranceEnum.DJPC.getPinyin(), "\n\t---------> URl: {} \n---------> 保险公司:{} {}\n---------> 请求参数:{}", url, InsuranceEnum.DJPC.getName(), tradeCode.getDesc(), JSONObject.toJSONString(q));
         InsuranceLog.infoLog(InsuranceEnum.DJPC.getPinyin(), "\n\t---------> URl: {} \n---------> 保险公司:{} {}\n---------> 请求参数:{}", url, InsuranceEnum.DJPC.getName(), tradeCode.getDesc(), JSONObject.toJSONString(q));
         String encrypt = AESEncrypt.encrypt(JSON.toJSONString(q), encryptKey);
         String encrypt = AESEncrypt.encrypt(JSON.toJSONString(q), encryptKey);
+        System.out.println(encrypt);
         HttpEntity<String> httpEntity = new HttpEntity<>(encrypt, httpHeaders);
         HttpEntity<String> httpEntity = new HttpEntity<>(encrypt, httpHeaders);
         ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,  httpEntity, String.class);
         ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,  httpEntity, String.class);
         String body = response.getBody();
         String body = response.getBody();

+ 6 - 0
src/main/java/com/ydtech/modules/order/constants/InsuranceTypeCorrespondence.java

@@ -57,6 +57,12 @@ public class InsuranceTypeCorrespondence {
     //司机
     //司机
     protected static final String[] DRIVER = {"D3", "SY_FJ_YBW3"};
     protected static final String[] DRIVER = {"D3", "SY_FJ_YBW3"};
 
 
+    // 诚泰乘客
+    protected static final String[] CT_PASSENGER = {"D12", "YD12"};
+
+    // 诚泰司机
+    protected static final String[] CT_DRIVER = {"D11", "YD11"};
+
     // 绝对免赔
     // 绝对免赔
     protected static final String[] ABSOLUTE_DEDUCTIBLE = {"MJ1", "MJ2", "MJ3", "MJ4"};
     protected static final String[] ABSOLUTE_DEDUCTIBLE = {"MJ1", "MJ2", "MJ3", "MJ4"};
 
 

+ 11 - 2
src/main/java/com/ydtech/modules/order/controller/ExternalOrderController.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.order.controller;
 package com.ydtech.modules.order.controller;
 
 
+import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.InsuranceRisk;
@@ -78,7 +79,7 @@ public class ExternalOrderController {
     @ApiOperation("保存子订单")
     @ApiOperation("保存子订单")
     public HttpResult<QuoteRespVo> saveSubOrder(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
     public HttpResult<QuoteRespVo> saveSubOrder(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
         BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId(),quoteVo.getKinds());
         BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId(),quoteVo.getKinds());
-        boolean result = this.insAreaCompanyService.saveSubOrder(quoteInfo, quoteVo);
+        String companyId = this.insAreaCompanyService.saveSubOrder(quoteInfo, quoteVo);
         String successMsg="";
         String successMsg="";
         String errorMsg ="";
         String errorMsg ="";
         if(quoteVo.getStageFlag()==1){
         if(quoteVo.getStageFlag()==1){
@@ -88,7 +89,15 @@ public class ExternalOrderController {
             successMsg="暂存订单成功";
             successMsg="暂存订单成功";
             errorMsg="暂存订单失败";
             errorMsg="暂存订单失败";
         }
         }
-        return result  ? HttpResult.ok(successMsg) : HttpResult.error(errorMsg);
+        if(StringUtils.isNotBlank(companyId)){
+            HttpResult httpResult = new HttpResult();
+            httpResult.setData(companyId);
+            httpResult.setMsg(successMsg);
+            httpResult.setCode(200);
+            return httpResult;
+        }else{
+            return HttpResult.error(errorMsg);
+        }
     }
     }
     @PostMapping("/updateExternalOrder")
     @PostMapping("/updateExternalOrder")
     @ApiOperation("更新外部订单")
     @ApiOperation("更新外部订单")

+ 26 - 0
src/main/java/com/ydtech/modules/order/controller/InsCrawlerOrderController.java

@@ -14,6 +14,8 @@ import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.QuoteAccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.QuoteAccidentalDrivingVo;
 import com.ydtech.modules.order.service.InsCrawlerOrderService;
 import com.ydtech.modules.order.service.InsCrawlerOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
@@ -94,6 +96,18 @@ public class InsCrawlerOrderController extends BaseController {
         return HttpResult.ok("发送成功!");
         return HttpResult.ok("发送成功!");
     }
     }
 
 
+    /**
+     * 泰山发送验证码
+     * @param attributionDto
+     * @return
+     */
+    @PostMapping(value = "/sendTscode")
+    @ApiOperation(value = "泰山发送验证码")
+    public HttpResult sendTscode(@RequestBody PtlAgreementAttributionDto attributionDto) {
+        insuranceCrawlerOrderService.sendcode(attributionDto);
+        return HttpResult.ok("发送成功!");
+    }
+
     /**
     /**
      * 泰山登录
      * 泰山登录
      * @param agreementId
      * @param agreementId
@@ -107,6 +121,18 @@ public class InsCrawlerOrderController extends BaseController {
         return HttpResult.ok("登录成功!");
         return HttpResult.ok("登录成功!");
     }
     }
 
 
+    /**
+     * 泰山登录
+     * @param agreement
+     * @return
+     */
+    @PostMapping(value = "/loginTs")
+    @ApiOperation(value = "泰山登录")
+    public HttpResult loginTs(@RequestBody PtlAgreementSaveVo agreement) {
+        insuranceCrawlerOrderService.taishanLogin(agreement);
+        return HttpResult.ok("登录成功!");
+    }
+
 
 
 
 
 }
 }

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/InsOrders.java

@@ -382,6 +382,12 @@ public class InsOrders implements Serializable {
     @ApiModelProperty("更新时间")
     @ApiModelProperty("更新时间")
     @TableField(exist = false)
     @TableField(exist = false)
     private String updateStatusTime;
     private String updateStatusTime;
+
+    @ApiModelProperty("权益类型 0.现金券 1.权益包")
+    @TableField(exist = false)
+    private Integer type;
+
+
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单
         // 2. 组装订单
         this.setQuoteno(String.valueOf(quoteInfoVo.getQuoteno()));
         this.setQuoteno(String.valueOf(quoteInfoVo.getQuoteno()));

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java

@@ -279,7 +279,7 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
                 // 如果是重复投保,根据startDate调整保险期限
                 // 如果是重复投保,根据startDate调整保险期限
                 if (isRepeat) {
                 if (isRepeat) {
                     ciStartTime = LocalDateTime.parse(startDate, formatter);
                     ciStartTime = LocalDateTime.parse(startDate, formatter);
-                    ciEndTime = startDate.endsWith("00:00")
+                    ciEndTime = startDate.endsWith("00:00:00")
                             ? ciStartTime.plusYears(1).minusSeconds(1)
                             ? ciStartTime.plusYears(1).minusSeconds(1)
                             : ciStartTime.plusYears(1).minusDays(1).minusSeconds(1);
                             : ciStartTime.plusYears(1).minusDays(1).minusSeconds(1);
                 }
                 }

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/crawler/request/TsCrawlerLoginRequest.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.entity.crawler.request;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
+import com.ydtech.utils.StringUtils;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 
 
@@ -69,6 +70,9 @@ public class TsCrawlerLoginRequest  implements Serializable {
         this.username = attribution.getUsername();
         this.username = attribution.getUsername();
         this.pwd = attribution.getPassword();
         this.pwd = attribution.getPassword();
         this.smscode = sendcode;
         this.smscode = sendcode;
+        if(StringUtils.isBlank(sendcode)){
+            this.smscode = "save";
+        }
         this.token = request.getToken();
         this.token = request.getToken();
         this.secretKey = request.getSecretKey();
         this.secretKey = request.getSecretKey();
         this.pointJson = request.getPointJson();
         this.pointJson = request.getPointJson();

+ 5 - 0
src/main/java/com/ydtech/modules/order/entity/dto/InsAreaCompanyQueryDto.java

@@ -21,4 +21,9 @@ public class InsAreaCompanyQueryDto extends InsAreaCompany {
      */
      */
     private String fileStatus;
     private String fileStatus;
 
 
+    /**
+     * 权益类型
+     */
+    private Integer equityType;
+
 }
 }

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java

@@ -287,6 +287,8 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         @ApiModelProperty("接口类型")
         @ApiModelProperty("接口类型")
         private String apiType;
         private String apiType;
 
 
+        @ApiModelProperty("权益类型")
+        private Integer equityType;
 
 
 
 
         public void feeVacant() {
         public void feeVacant() {
@@ -339,6 +341,7 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
             if(!Objects.isNull(insAreaCompany.getApiType())) {
             if(!Objects.isNull(insAreaCompany.getApiType())) {
                 this.apiType = insAreaCompany.getApiType().toString();
                 this.apiType = insAreaCompany.getApiType().toString();
             }
             }
+            this.equityType = insAreaCompany.getEquityType();
         }
         }
     }
     }
 
 

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java

@@ -196,6 +196,9 @@ public class OrderQueryVo {
     @ApiModelProperty("合作公司编号")
     @ApiModelProperty("合作公司编号")
     private String partnerCompaniesId;
     private String partnerCompaniesId;
 
 
+    @ApiModelProperty("费用类型 0.现金 1.权益包")
+    private String type;
+
 
 
 
 
     public LocalDate getEndDatePlusOneDay() {
     public LocalDate getEndDatePlusOneDay() {

+ 8 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderVo.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.equity.model.vo.EquityPackageVo;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
 import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -536,4 +537,11 @@ public class OrderVo implements Serializable {
     @ApiModelProperty("录入来源")
     @ApiModelProperty("录入来源")
     private String entryStatus;
     private String entryStatus;
 
 
+    @ApiModelProperty("权益包信息")
+    private EquityPackageVo equityPackageVo;
+
+    @ApiModelProperty("权益类型")
+    private Integer equityType;
+
+
 }
 }

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -160,7 +160,7 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      *
      *
      * @return
      * @return
      */
      */
-    boolean saveSubOrder(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> quoteVo);
+    String saveSubOrder(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> quoteVo);
 
 
     /**
     /**
      * 根据订单id 获取已承保的子订单信息
      * 根据订单id 获取已承保的子订单信息

+ 14 - 0
src/main/java/com/ydtech/modules/order/service/InsCrawlerOrderService.java

@@ -6,6 +6,7 @@ import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
 
 
 public interface InsCrawlerOrderService extends BaseOrderService<Object> {
 public interface InsCrawlerOrderService extends BaseOrderService<Object> {
 
 
@@ -99,6 +100,19 @@ public interface InsCrawlerOrderService extends BaseOrderService<Object> {
      */
      */
     void sendcode(String agreementId);
     void sendcode(String agreementId);
 
 
+    /**
+     * 泰山发送验证码
+     * @param attributionDto
+     */
+    void sendcode(PtlAgreementAttributionDto attributionDto);
+
+    /**
+     * 泰山登录
+     *
+     * @param agreement
+     */
+    void taishanLogin(PtlAgreementSaveVo agreement);
+
     /**
     /**
      * 泰山登录
      * 泰山登录
      * @param agreementId
      * @param agreementId

+ 2 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -588,7 +588,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
 
     @Override
     @Override
     @Transactional
     @Transactional
-    public boolean saveSubOrder(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
+    public String saveSubOrder(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
         //添加暂存标志   add by  hxl  2024-07-10  0 暂存 1 保存
         //添加暂存标志   add by  hxl  2024-07-10  0 暂存 1 保存
         if (quoteVo.getStageFlag() == null) {
         if (quoteVo.getStageFlag() == null) {
             throw new SystemException("暂存标志为空");
             throw new SystemException("暂存标志为空");
@@ -829,7 +829,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())){
         if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())){
             insOrderPushMsgService.getPushSignInsAreaCompanyList(insAreaCompany.getId());
             insOrderPushMsgService.getPushSignInsAreaCompanyList(insAreaCompany.getId());
         }
         }
-        return true;
+        return insAreaCompany.getId();
     }
     }
 
 
     /**
     /**

+ 47 - 10
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.InsuranceOrderPdf;
 import com.ydtech.constants.enums.InsuranceOrderPdf;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
@@ -22,7 +23,6 @@ import com.ydtech.modules.order.entity.crawler.constants.CrawlerVerifyPaymentCon
 import com.ydtech.modules.order.entity.crawler.request.*;
 import com.ydtech.modules.order.entity.crawler.request.*;
 import com.ydtech.modules.order.entity.crawler.response.*;
 import com.ydtech.modules.order.entity.crawler.response.*;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
-import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import com.ydtech.modules.order.entity.po.SysQuoteRecord;
 import com.ydtech.modules.order.entity.po.SysQuoteRecord;
@@ -33,6 +33,7 @@ import com.ydtech.modules.protocol.entity.constants.PtlCrawlerApiType;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAttributionTemplateDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAttributionTemplateDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
 import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
@@ -52,14 +53,15 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
-import static com.ydtech.modules.order.constants.OrderCacheConstant.GR_SPECIAL_AGREEMENT_TIME;
-
 
 
 @Service
 @Service
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -114,7 +116,7 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         CrawlerBaseResponse response = insCrawlerOrderComponents.request(apiUrl, companyId, PtlCrawlerApiType.API_2.getDesc(),
         CrawlerBaseResponse response = insCrawlerOrderComponents.request(apiUrl, companyId, PtlCrawlerApiType.API_2.getDesc(),
                 crawlerLoginRequest, CrawlerBaseResponse.class);
                 crawlerLoginRequest, CrawlerBaseResponse.class);
 
 
-        AssertionUtils.isSucceed(response.getCode() == 200, insCompanyName + "登录用户名和密码不正确");
+        AssertionUtils.isSucceed(response.getCode() == 200, insCompanyName + ":" + response.getMessage());
     }
     }
 
 
     @Override
     @Override
@@ -234,11 +236,11 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             insAreaCompanyAccidentalDriving.setRideRiskCode(one.getProjectCode());
             insAreaCompanyAccidentalDriving.setRideRiskCode(one.getProjectCode());
             insAreaCompanyAccidentalDriving.setQuantity(1);
             insAreaCompanyAccidentalDriving.setQuantity(1);
             insAreaCompanyAccidentalDriving.setCompanyId(t.getCompanyId());
             insAreaCompanyAccidentalDriving.setCompanyId(t.getCompanyId());
-        } else if(t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("HBIC1000000")){
+        } else if (t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("HBIC1000000")) {
             JSONObject jsonObject = JSON.parseObject(t.getAccidentalDrivingVo()
             JSONObject jsonObject = JSON.parseObject(t.getAccidentalDrivingVo()
                     .toString());
                     .toString());
             Integer buynum = jsonObject.getInteger("buynum");
             Integer buynum = jsonObject.getInteger("buynum");
-            if(!quoteRespVo.getAccident().isEmpty()){
+            if (!quoteRespVo.getAccident().isEmpty()) {
                 BigDecimal price = new BigDecimal(response.getDrivingInsurances().get(0).getPrice());
                 BigDecimal price = new BigDecimal(response.getDrivingInsurances().get(0).getPrice());
                 BigDecimal total = price.multiply(BigDecimal.valueOf(buynum));
                 BigDecimal total = price.multiply(BigDecimal.valueOf(buynum));
                 BigDecimal rounded = total.setScale(2, RoundingMode.HALF_UP);
                 BigDecimal rounded = total.setScale(2, RoundingMode.HALF_UP);
@@ -843,10 +845,44 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             throw new SystemException(response.getMessage());
             throw new SystemException(response.getMessage());
         }
         }
         // 将返回参数放入redis
         // 将返回参数放入redis
+        redisTemplate.opsForValue()
+                .set(OrderCacheConstant.TS_ACCESS_TOKEN + attributionDto.getUsername(), JSON.toJSONString(response.getData()), OrderCacheConstant.TS_ACCESS_TOKEN_TIME,
+                        TimeUnit.SECONDS);
+    }
+
+    @Override
+    public void sendcode(PtlAgreementAttributionDto attributionDto) {
+        String apiUrl = ptlCrawlerApiService.getByTemplateId(attributionDto.getTemplateId(), PtlCrawlerApiType.API_11);
+        TsCrawlerLoginRequest crawlerLoginRequest = new TsCrawlerLoginRequest(attributionDto);
+        TsCrawlerBaseResponse response = insCrawlerOrderComponents.request(apiUrl, InsuranceEnum.TSBX.getCode(), "获取验证码",
+                crawlerLoginRequest, TsCrawlerBaseResponse.class);
+        if (!response.getCode().equals(200)) {
+            throw new SystemException(response.getMessage());
+        }
+        // 将返回参数放入redis
         redisTemplate.opsForValue().set(OrderCacheConstant.TS_ACCESS_TOKEN + attributionDto.getUsername(), JSON.toJSONString(response.getData()), OrderCacheConstant.TS_ACCESS_TOKEN_TIME,
         redisTemplate.opsForValue().set(OrderCacheConstant.TS_ACCESS_TOKEN + attributionDto.getUsername(), JSON.toJSONString(response.getData()), OrderCacheConstant.TS_ACCESS_TOKEN_TIME,
                 TimeUnit.SECONDS);
                 TimeUnit.SECONDS);
     }
     }
 
 
+    @Override
+    public void taishanLogin(PtlAgreementSaveVo agreement) {
+        // 获取协议的用户名密码
+
+        String apiUrl = ptlCrawlerApiService.getByTemplateId(agreement.getAttribution().getTemplateId(), PtlCrawlerApiType.API_1);
+        String token = redisTemplate.opsForValue().get(OrderCacheConstant.TS_ACCESS_TOKEN + agreement.getAttribution().getUsername());
+        if (StringUtils.isNotBlank(token)) {
+            TsCrawlerLoginRequest request = JSON.parseObject(token).toJavaObject(TsCrawlerLoginRequest.class);
+            TsCrawlerLoginRequest tsRequest = new TsCrawlerLoginRequest(agreement.getAttribution(), agreement.getAgreement().getSmsCode(), request);
+            TsCrawlerBaseResponse response = insCrawlerOrderComponents.request(apiUrl, agreement.getAgreement().getPartnerCompaniesId(), "登录",
+                    tsRequest, TsCrawlerBaseResponse.class);
+            if (!response.getCode().equals(200)) {
+                throw new SystemException("泰山登录失败:" + response.getMessage());
+            }
+        } else {
+            throw new SystemException("验证码已失效!请重新发送!");
+        }
+    }
+
     @Override
     @Override
     public void taishanLogin(String agreementId, String smscode) {
     public void taishanLogin(String agreementId, String smscode) {
         // 获取协议的用户名密码
         // 获取协议的用户名密码
@@ -854,10 +890,12 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         PtlAgreementAttributionDto attributionDto = new PtlAgreementAttributionDto();
         PtlAgreementAttributionDto attributionDto = new PtlAgreementAttributionDto();
         BeanUtils.copyProperties(attribution, attributionDto);
         BeanUtils.copyProperties(attribution, attributionDto);
 
 
-        List<PtlAttributionTemplateDto> attributionTemplateDtos = attribution.getFields().toJavaList(PtlAttributionTemplateDto.class);
+        List<PtlAttributionTemplateDto> attributionTemplateDtos = attribution.getFields()
+                .toJavaList(PtlAttributionTemplateDto.class);
         attributionDto.setFields(attributionTemplateDtos);
         attributionDto.setFields(attributionTemplateDtos);
         String apiUrl = ptlCrawlerApiService.getByTemplateId(attribution.getTemplateId(), PtlCrawlerApiType.API_1);
         String apiUrl = ptlCrawlerApiService.getByTemplateId(attribution.getTemplateId(), PtlCrawlerApiType.API_1);
-        String token = redisTemplate.opsForValue().get(OrderCacheConstant.TS_ACCESS_TOKEN + attributionDto.getUsername());
+        String token = redisTemplate.opsForValue()
+                .get(OrderCacheConstant.TS_ACCESS_TOKEN + attributionDto.getUsername());
         if (StringUtils.isNotBlank(token)) {
         if (StringUtils.isNotBlank(token)) {
             TsCrawlerLoginRequest request = JSON.parseObject(token).toJavaObject(TsCrawlerLoginRequest.class);
             TsCrawlerLoginRequest request = JSON.parseObject(token).toJavaObject(TsCrawlerLoginRequest.class);
             TsCrawlerLoginRequest tsRequest = new TsCrawlerLoginRequest(attributionDto, smscode, request);
             TsCrawlerLoginRequest tsRequest = new TsCrawlerLoginRequest(attributionDto, smscode, request);
@@ -869,6 +907,5 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         } else {
         } else {
             throw new SystemException("验证码已失效!请重新发送!");
             throw new SystemException("验证码已失效!请重新发送!");
         }
         }
-
     }
     }
 }
 }

+ 47 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -30,6 +30,11 @@ import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.equity.model.InsAreaCompanyEquity;
+import com.ydtech.modules.equity.model.response.LocalEquityPackageAssociation;
+import com.ydtech.modules.equity.model.response.LocalEquityPackagePage;
+import com.ydtech.modules.equity.model.vo.EquityPackageVo;
+import com.ydtech.modules.equity.service.InsAreaCompanyEquityService;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fee.service.CostsCalcService;
 import com.ydtech.modules.fee.service.CostsCalcService;
@@ -150,6 +155,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     @Autowired
     private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
     private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
 
 
+    @Autowired
+    private InsAreaCompanyEquityService insAreaCompanyEquityService;
+
     @Autowired
     @Autowired
     private InsAreaCompanyAccidentalDrivingService insAreaCompanyAccidentalDrivingService;
     private InsAreaCompanyAccidentalDrivingService insAreaCompanyAccidentalDrivingService;
 
 
@@ -1034,6 +1042,43 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             orderAndAreaCompany.setSumFee(sum.toString());
             orderAndAreaCompany.setSumFee(sum.toString());
             List<DistributionLevelVo> distributionLevelVoList = feeRuleSchemeService.converDistrbutionData(insFeeOrderNew);
             List<DistributionLevelVo> distributionLevelVoList = feeRuleSchemeService.converDistrbutionData(insFeeOrderNew);
             orderAndAreaCompany.setDistributionLevelVoList(distributionLevelVoList);
             orderAndAreaCompany.setDistributionLevelVoList(distributionLevelVoList);
+
+            // 获取客户权益信息
+            List<FeeOrderNewVo.ExportFee> exportFee = feeOrderNewVo.getExportFee();
+            BigDecimal totalAmount = BigDecimal.valueOf(0);
+            for (FeeOrderNewVo.ExportFee fee : exportFee) {
+                if(BusinessConstant.FEE_INSURANCE_TYPE_4.equals(fee.getInsuranceType())){
+                    totalAmount = fee.getTotalAmount();
+                }
+            }
+            // 获取权益包
+            InsAreaCompanyEquity equity = insAreaCompanyEquityService.getById(companyId);
+            if(Objects.nonNull(equity) && equity.getType().equals(1)){
+                EquityPackageVo packageVo = new EquityPackageVo();
+                packageVo.setPackageName(equity.getEquityName());
+                packageVo.setLdProportion(ptlAgreementProductCostsNew.getLdProportion());
+                packageVo.setTotalAmount(totalAmount);
+                packageVo.setKhAmount(totalAmount.subtract(
+                        totalAmount.multiply(new BigDecimal(ptlAgreementProductCostsNew.getLdProportion())
+                                .divide(new BigDecimal(100)))));
+                packageVo.setDlrAmount(totalAmount.multiply(new BigDecimal(ptlAgreementProductCostsNew.getLdProportion()).divide(new BigDecimal(100))));
+
+                String equityInfo = equity.getEquityInfo();
+                LocalEquityPackagePage packagevo = JSON.parseObject(equityInfo, LocalEquityPackagePage.class);
+                List<LocalEquityPackageAssociation> infoList = packagevo.getLocalEquityPackageAssociationList();
+                packageVo.setQybAmount(packagevo.getTotalPackagePrice());
+                List<EquityPackageVo.EquityPackageInfoVo> infoVoList = new ArrayList<>();
+                for (LocalEquityPackageAssociation localEquityPackageAssociation : infoList) {
+                    EquityPackageVo.EquityPackageInfoVo infoVo = new EquityPackageVo.EquityPackageInfoVo();
+                    infoVo.setNumber(localEquityPackageAssociation.getNumber());
+                    infoVo.setEquityName(localEquityPackageAssociation.getRightsName());
+                    infoVo.setAgreementPrice(localEquityPackageAssociation.getSettlePrice());
+                    infoVo.setMarketPrice(localEquityPackageAssociation.getMarketPrice());
+                    infoVoList.add(infoVo);
+                }
+                packageVo.setInfoVoList(infoVoList);
+                orderAndAreaCompany.setEquityPackageVo(packageVo);
+            }
         }
         }
         //查询费用审核状态
         //查询费用审核状态
         List<InsFeeAudit> feeAuditList = insFeeAuditService.query().eq("ins_order_no", companyId).list();
         List<InsFeeAudit> feeAuditList = insFeeAuditService.query().eq("ins_order_no", companyId).list();
@@ -1102,6 +1147,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         } else {
         } else {
             orderAndAreaCompany.setJqInsuranceType(new JSONArray());
             orderAndAreaCompany.setJqInsuranceType(new JSONArray());
         }
         }
+
+
         // 获取协议信息、 录入来源
         // 获取协议信息、 录入来源
         PtlAgreement ptlAgreement = ptlAgreementService.getById(orderAndAreaCompany.getAgreementId());
         PtlAgreement ptlAgreement = ptlAgreementService.getById(orderAndAreaCompany.getAgreementId());
         orderAndAreaCompany.setPtlAgreement(ptlAgreement);
         orderAndAreaCompany.setPtlAgreement(ptlAgreement);

+ 3 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java

@@ -89,4 +89,7 @@ public class PtlAgreementSaveDto implements Serializable {
 
 
     @ApiModelProperty("对接管理人")
     @ApiModelProperty("对接管理人")
     private String custodianId;
     private String custodianId;
+
+    @ApiModelProperty("验证码")
+    private String smsCode;
 }
 }

+ 10 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -125,6 +125,9 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     @Autowired
     @Autowired
     private InsUploadFilesService insUploadFilesService;
     private InsUploadFilesService insUploadFilesService;
 
 
+    @Autowired
+    private InsCrawlerOrderService insCrawlerOrderService;
+
 
 
     public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
     public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
                                    PtlAgreementAttributionService ptlAgreementAttributionService,
                                    PtlAgreementAttributionService ptlAgreementAttributionService,
@@ -907,11 +910,17 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
 
 
 
         // 验证用户名密码 python api 对接需要验证用户名
         // 验证用户名密码 python api 对接需要验证用户名
-        if (!ObjectUtils.isEmpty(attribution.getApiType()) && PtlApiType.PTL_API_2.getCode() == attribution.getApiType() && verificationLogin && !InsuranceEnum.TSBX.getCode().equals(esmInsCompany.getCode())) {
+        if (!ObjectUtils.isEmpty(attribution.getApiType()) && PtlApiType.PTL_API_2.getCode() == attribution.getApiType() && verificationLogin
+                && !InsuranceEnum.TSBX.getCode().equals(esmInsCompany.getCode())) {
             String nameSimple = esmInsCompany.getNamesimple();
             String nameSimple = esmInsCompany.getNamesimple();
             String id = esmInsCompany.getId();
             String id = esmInsCompany.getId();
             insCrawlerOrderController.isLogin(attribution, id, nameSimple);
             insCrawlerOrderController.isLogin(attribution, id, nameSimple);
         }
         }
+//        else if(!ObjectUtils.isEmpty(attribution.getApiType()) && PtlApiType.PTL_API_2.getCode() == attribution.getApiType() && verificationLogin
+//                && InsuranceEnum.TSBX.getCode().equals(esmInsCompany.getCode())){
+//            String id = esmInsCompany.getId();
+//            insCrawlerOrderService.taishanLogin(attribution,agreementSaveDto.getSmsCode(),id);
+//        }
 
 
         ptlAgreement.setCompaniesType(esmInsCompany.getType());
         ptlAgreement.setCompaniesType(esmInsCompany.getType());
         ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());
         ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());

+ 4 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java

@@ -157,6 +157,10 @@ public class PtlAgreementProductCostsNew {
     @TableField(value = "is_inquiry_now")
     @TableField(value = "is_inquiry_now")
     private String isInquiryNow;
     private String isInquiryNow;
 
 
+    @ApiModelProperty(value = "代理人留点比例")
+    @TableField(value = "ld_proportion")
+    private String ldProportion;
+
     @ApiModelProperty(value = "生成的描述")
     @ApiModelProperty(value = "生成的描述")
     @TableField(exist = false)
     @TableField(exist = false)
     private String desc;
     private String desc;

+ 3 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java

@@ -145,6 +145,9 @@ public class AgreementProductCosts implements Serializable {
     @ApiModelProperty(value = "是否现询")
     @ApiModelProperty(value = "是否现询")
     private String isInquiryNow;
     private String isInquiryNow;
 
 
+    @ApiModelProperty(value = "代理人留点比例")
+    private String ldProportion;
+
 
 
     @ApiModelProperty(value = "费用属性")
     @ApiModelProperty(value = "费用属性")
     private List<PtlAgreementProductCostsAttrLink> costsAttrLinks;
     private List<PtlAgreementProductCostsAttrLink> costsAttrLinks;

+ 3 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java

@@ -145,6 +145,9 @@ public class AgreementProductCostsSave {
     @ApiModelProperty(value = "是否现寻")
     @ApiModelProperty(value = "是否现寻")
     private String isInquiryNow;
     private String isInquiryNow;
 
 
+    @ApiModelProperty(value = "代理人留点比例")
+    private String ldProportion;
+
 
 
     @ApiModelProperty(value = "费用属性")
     @ApiModelProperty(value = "费用属性")
     private List<PtlAgreementUndwrtRulesAttr> costsAttrLinks;
     private List<PtlAgreementUndwrtRulesAttr> costsAttrLinks;

+ 9 - 0
src/main/resources/application-test.yml

@@ -501,6 +501,15 @@ chengtai:
     publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDG5XjPzLv7/LwXmDkSS2kL4JN3B9JK6mRDxgal+K7f5GY2c3TRXSIm2ot+2ZL2Tr4nSJEkZUe98ORovYnpvgeW16MFhPAkUYHVu3rv6JKuGrJhdvkfNC/TR92oey8/Qk0YwSeOzHEf1tEfMvnE3pC8xZom4Et2W9y62+RoH22uhQIDAQAB
     publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDG5XjPzLv7/LwXmDkSS2kL4JN3B9JK6mRDxgal+K7f5GY2c3TRXSIm2ot+2ZL2Tr4nSJEkZUe98ORovYnpvgeW16MFhPAkUYHVu3rv6JKuGrJhdvkfNC/TR92oey8/Qk0YwSeOzHEf1tEfMvnE3pC8xZom4Et2W9y62+RoH22uhQIDAQAB
     privateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMbleM/Mu/v8vBeYORJLaQvgk3cH0krqZEPGBqX4rt/kZjZzdNFdIibai37ZkvZOvidIkSRlR73w5Gi9iem+B5bXowWE8CRRgdW7eu/okq4asmF2+R80L9NH3ah7Lz9CTRjBJ47McR/W0R8y+cTekLzFmibgS3Zb3Lrb5Ggfba6FAgMBAAECgYByDbKajo+Zr1L4wLyxZfbl7bECR8TqWsCGMK8tS46UKvgF720khaCI4Teu1Ps2LO9TvYQld8KNA+8mtNG57NOSQx3aaI/sH3XAsWExnNupSHs3/O0m91KMCrVfhDakpW+eXu9+BTyOQeHt5e+0R6hsUZ5OPhwOGoxBlNRWqQruXQJBAPlY2r994Yq37HV0WFofIKtRqDz5mGoL7iENZ7/TB64Qe6kbLBnq0Qha6TxyudlISYSGMzIHxqZ/gClDy5VQTUsCQQDMNASRJ9CuNkgTF/LswRJQmtVG9djzwD2W5r6QqWy7cBDOB9eenAAjmmP8R43edPdrYDuqpuvjUK5ISxkDAKFvAkAuGPM3+7m6v44DmOLMpnyPr6T+wNYgpNv9WFEZ8ZW15G44MUHR+Mt0U/pSppMdTHPrADRux2k+VswG1PXKQPJJAkAZScfXAgtBx88dLjYTQ8W03bfT1dZMOV5nNaQb3h9tBu/N1ALLzZ3mytPfBi13gxyw23YIKCvGNtOeeE5cpNNZAkBRsB9I6yogNDdYQHNiPpk+M5t043LbI+v+KAwUWqkkt81PJOqzrbxtySPmRxlAZI9flXQD5eRTvkHZWPnM/2/b
     privateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMbleM/Mu/v8vBeYORJLaQvgk3cH0krqZEPGBqX4rt/kZjZzdNFdIibai37ZkvZOvidIkSRlR73w5Gi9iem+B5bXowWE8CRRgdW7eu/okq4asmF2+R80L9NH3ah7Lz9CTRjBJ47McR/W0R8y+cTekLzFmibgS3Zb3Lrb5Ggfba6FAgMBAAECgYByDbKajo+Zr1L4wLyxZfbl7bECR8TqWsCGMK8tS46UKvgF720khaCI4Teu1Ps2LO9TvYQld8KNA+8mtNG57NOSQx3aaI/sH3XAsWExnNupSHs3/O0m91KMCrVfhDakpW+eXu9+BTyOQeHt5e+0R6hsUZ5OPhwOGoxBlNRWqQruXQJBAPlY2r994Yq37HV0WFofIKtRqDz5mGoL7iENZ7/TB64Qe6kbLBnq0Qha6TxyudlISYSGMzIHxqZ/gClDy5VQTUsCQQDMNASRJ9CuNkgTF/LswRJQmtVG9djzwD2W5r6QqWy7cBDOB9eenAAjmmP8R43edPdrYDuqpuvjUK5ISxkDAKFvAkAuGPM3+7m6v44DmOLMpnyPr6T+wNYgpNv9WFEZ8ZW15G44MUHR+Mt0U/pSppMdTHPrADRux2k+VswG1PXKQPJJAkAZScfXAgtBx88dLjYTQ8W03bfT1dZMOV5nNaQb3h9tBu/N1ALLzZ3mytPfBi13gxyw23YIKCvGNtOeeE5cpNNZAkBRsB9I6yogNDdYQHNiPpk+M5t043LbI+v+KAwUWqkkt81PJOqzrbxtySPmRxlAZI9flXQD5eRTvkHZWPnM/2/b
 
 
+#权益包配置
+equity:
+  api:
+    url: https://test.baoxianzhanggui.com/locallive-java/localThreeUserOrder/localThreeUserOrder/
+    appkey: 1919577508002217985
+    secret: 9725175983056a280fe78a386ab23185
+    publicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004b7b575874a00f135b5a495ee1b314564b6272bbec1d911bf6ab38c3c0f2b90a77c2455e5faf5c1896e1204385fdf4249b5bc4e79b6774ad803b93f27cc86da93
+    privateKey: 308193020100301306072a8648ce3d020106082a811ccf5501822d04793077020101042051bffefb9021839670b2bc264b56362337e238330a1bd1ed83abbd970f1c013ca00a06082a811ccf5501822da14403420004b7b575874a00f135b5a495ee1b314564b6272bbec1d911bf6ab38c3c0f2b90a77c2455e5faf5c1896e1204385fdf4249b5bc4e79b6774ad803b93f27cc86da93
+
 ttqf:
 ttqf:
   mch-id: '000000466591593'
   mch-id: '000000466591593'
   platform-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo/PmfNo3v8+VIT2oSUMXtZJGtGiBfqjVQAeKjppXkZ9jgzNjVbRAnWdTXKifyQQa5QhGeFCjJ9RS5WwLyZMBdwbhJJ2YkVDDXDc284CuXf5J3TDodkexfDwyPf3SvSVemRej5muhju1DOzLAyvx4GRKbDOEQqNiFxmn7HnQ2U6HsnQKa/LkB4ydogauI81q/taOcLyZsxz+uiIxYHQ2kujDBYncH3ncBeNQ7rWh7trWvCZ2sbtmUjbU2FC/cpp1oFBQbiQAuVA+4NBjobT/Ig7hGT9NiJ0elzOX5vWKvZelu6zD8z/frqXKSeyDWdjE9TB53pvCCuCiZSyOEwLJ0uwIDAQAB
   platform-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo/PmfNo3v8+VIT2oSUMXtZJGtGiBfqjVQAeKjppXkZ9jgzNjVbRAnWdTXKifyQQa5QhGeFCjJ9RS5WwLyZMBdwbhJJ2YkVDDXDc284CuXf5J3TDodkexfDwyPf3SvSVemRej5muhju1DOzLAyvx4GRKbDOEQqNiFxmn7HnQ2U6HsnQKa/LkB4ydogauI81q/taOcLyZsxz+uiIxYHQ2kujDBYncH3ncBeNQ7rWh7trWvCZ2sbtmUjbU2FC/cpp1oFBQbiQAuVA+4NBjobT/Ig7hGT9NiJ0elzOX5vWKvZelu6zD8z/frqXKSeyDWdjE9TB53pvCCuCiZSyOEwLJ0uwIDAQAB

+ 13 - 3
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -80,6 +80,7 @@
                extends="BaseResultMap">
                extends="BaseResultMap">
         <result property="agreementName" column="agreement_name" jdbcType="VARCHAR"/>
         <result property="agreementName" column="agreement_name" jdbcType="VARCHAR"/>
         <result property="fileStatus" column="fileStatus" jdbcType="VARCHAR"/>
         <result property="fileStatus" column="fileStatus" jdbcType="VARCHAR"/>
+        <result property="equityType" column="equityType" jdbcType="INTEGER"/>
     </resultMap>
     </resultMap>
 
 
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
@@ -100,9 +101,11 @@
                (select IF(count(0) > 0, 'true', 'false')
                (select IF(count(0) > 0, 'true', 'false')
                 from pingan_sh_uploafile
                 from pingan_sh_uploafile
                 where sub_order_no = iac.id
                 where sub_order_no = iac.id
-                  AND status = 0) as fileStatus
+                  AND status = 0) as fileStatus,
+               iace.type as equityType
         FROM ins_area_company as iac
         FROM ins_area_company as iac
                  left join ptl_agreement as pa on pa.id = iac.agreement_id
                  left join ptl_agreement as pa on pa.id = iac.agreement_id
+                 left join ins_area_company_equity iace on iac.id = iace.sub_order_no
                  INNER JOIN (SELECT company_id, max(createtime) AS max_createtime
                  INNER JOIN (SELECT company_id, max(createtime) AS max_createtime
                              FROM ins_area_company
                              FROM ins_area_company
                              WHERE orderno = #{orderNo}
                              WHERE orderno = #{orderNo}
@@ -118,10 +121,12 @@
                (select IF(count(0) > 0, 'true', 'false')
                (select IF(count(0) > 0, 'true', 'false')
                 from pingan_sh_uploafile
                 from pingan_sh_uploafile
                 where sub_order_no = iac.id
                 where sub_order_no = iac.id
-                  AND status = 0) as fileStatus
+                  AND status = 0) as fileStatus,
+            iace.type as equityType
         FROM ins_area_company as iac
         FROM ins_area_company as iac
                  left join ptl_agreement as pa on pa.id = iac.agreement_id
                  left join ptl_agreement as pa on pa.id = iac.agreement_id
                  left join ins_orders io on iac.orderno = io.orderno
                  left join ins_orders io on iac.orderno = io.orderno
+                left join ins_area_company_equity iace on iac.id = iace.sub_order_no
         WHERE iac.orderstatus = 3
         WHERE iac.orderstatus = 3
           and iac.orderno = #{orderNo};
           and iac.orderno = #{orderNo};
     </select>
     </select>
@@ -198,7 +203,8 @@
         pa.job_description as jobDescription,
         pa.job_description as jobDescription,
         pa.agreement_title as agreementTitle,
         pa.agreement_title as agreementTitle,
         pa.docking_person as dockingPerson,
         pa.docking_person as dockingPerson,
-        io.entry_status
+        io.entry_status,
+        iace.type AS type
         FROM
         FROM
         ins_fee_audit ifa
         ins_fee_audit ifa
         LEFT JOIN ins_orders io ON io.orderno = ifa.orderno
         LEFT JOIN ins_orders io ON io.orderno = ifa.orderno
@@ -209,6 +215,7 @@
         LEFT JOIN sys_user su2 ON ifa.audituser = su2.id
         LEFT JOIN sys_user su2 ON ifa.audituser = su2.id
         LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
         LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
         LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_id
         LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_id
+        LEFT JOIN ins_area_company_equity iace ON  iace.sub_order_no = iac.id
         WHERE
         WHERE
         iac.id = ifa.ins_order_no
         iac.id = ifa.ins_order_no
         AND iac.orderstatus = 3
         AND iac.orderstatus = 3
@@ -240,6 +247,9 @@
         <if test="params.riskCode != null and params.riskCode != ''">
         <if test="params.riskCode != null and params.riskCode != ''">
             and iac.product = #{params.riskCode}
             and iac.product = #{params.riskCode}
         </if>
         </if>
+        <if test="params.type != null and params.type != ''">
+            and iace.type = #{params.type}
+        </if>
 
 
         <if test="params.attachStartDateStr != null and params.attachStartDateStr != '' and params.attachStartDateStr != null and params.attachStartDateStr != '' ">
         <if test="params.attachStartDateStr != null and params.attachStartDateStr != '' and params.attachStartDateStr != null and params.attachStartDateStr != '' ">
             and ((
             and ((

+ 4 - 1
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -133,6 +133,7 @@
         <result property="signingTime" column="signingTime" jdbcType="TIMESTAMP"/>
         <result property="signingTime" column="signingTime" jdbcType="TIMESTAMP"/>
         <result property="payDate" column="payDate" jdbcType="TIMESTAMP"/>
         <result property="payDate" column="payDate" jdbcType="TIMESTAMP"/>
         <result property="partnerCompaniesName" column="partnerCompaniesName" jdbcType="VARCHAR"/>
         <result property="partnerCompaniesName" column="partnerCompaniesName" jdbcType="VARCHAR"/>
+        <result property="equityType" column="equityType" jdbcType="INTEGER"/>
         <result property="mergecostrate" column="mergecostrate" jdbcType="DOUBLE"/>
         <result property="mergecostrate" column="mergecostrate" jdbcType="DOUBLE"/>
 
 
     </resultMap>
     </resultMap>
@@ -254,11 +255,13 @@
                o.entry_status,
                o.entry_status,
                eic.namesimple as partnerCompaniesName,
                eic.namesimple as partnerCompaniesName,
                iac.merge_cost_rate,
                iac.merge_cost_rate,
-               iac.extend_info as extendInfo1
+               iac.extend_info as extendInfo1,
+               iace.type as equityType
         from ins_orders as o
         from ins_orders as o
                  join ins_area_company iac on o.orderno = iac.orderno
                  join ins_area_company iac on o.orderno = iac.orderno
                  LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
                  LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
                  LEFT JOIN esm_ins_company eic on eic.id = pa.partner_companies_id
                  LEFT JOIN esm_ins_company eic on eic.id = pa.partner_companies_id
+                 left join ins_area_company_equity iace on iace.sub_order_no = iac.id
         where iac.id = #{companyId}
         where iac.id = #{companyId}
     </select>
     </select>