张延森 2 years ago
parent
commit
a6899af4bf

+ 15
- 0
src/main/java/com/yunzhi/marketing/broker/controller/BkInviteRecordController.java View File

@@ -0,0 +1,15 @@
1
+package com.yunzhi.marketing.broker.controller;
2
+
3
+import com.yunzhi.marketing.broker.service.IBkInviteRecordService;
4
+import io.swagger.annotations.Api;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.web.bind.annotation.RequestMapping;
7
+import org.springframework.web.bind.annotation.RestController;
8
+
9
+@Api(tags = "经济人邀请记录对象功能接口")
10
+@RestController
11
+@RequestMapping("/")
12
+public class BkInviteRecordController {
13
+    @Autowired
14
+    private IBkInviteRecordService bkInviteRecordService;
15
+}

+ 7
- 2
src/main/java/com/yunzhi/marketing/broker/controller/BrokerController.java View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5 5
 import com.yunzhi.marketing.base.BaseController;
6 6
 import com.yunzhi.marketing.base.ResponseBean;
7 7
 import com.yunzhi.marketing.broker.service.IBkBankCardService;
8
+import com.yunzhi.marketing.broker.service.IBkInviteRecordService;
8 9
 import com.yunzhi.marketing.broker.vo.BrokerSummery;
9 10
 import com.yunzhi.marketing.broker.vo.BrokerVO;
10 11
 import com.yunzhi.marketing.common.CommConstant;
@@ -28,6 +29,9 @@ public class BrokerController extends BaseController {
28 29
     @Autowired
29 30
     IBkBankCardService iBkBankCardService;
30 31
 
32
+    @Autowired
33
+    IBkInviteRecordService iBkInviteRecordService;
34
+
31 35
 
32 36
     @RequestMapping(value="/admin/broker",method= RequestMethod.GET)
33 37
     @ApiOperation(value="经纪人列表", notes = "经纪人列表", httpMethod = "GET", response = ResponseBean.class)
@@ -86,12 +90,13 @@ public class BrokerController extends BaseController {
86 90
         taPerson.setSettledCommission(null);
87 91
         taPerson.setUnsettledCommission(null);
88 92
 
93
+
89 94
         // 更新数据
90 95
         if (!iTaPersonService.updateById(taPerson)) {
91 96
 
92
-            // 如果是有人推荐的, 那么需要给予推荐人一定的奖励
97
+            // 如果是有人推荐的, 那么需要生成推荐记录
93 98
             if (!StringUtils.isEmpty(brokerVO.getRecommendAgent())) {
94
-                // TODO
99
+                iBkInviteRecordService.createBy(brokerVO.getRecommendAgent(), brokerVO.getPersonId());
95 100
             }
96 101
 
97 102
             return ResponseBean.error("操作失败, 请重试", ResponseBean.ERROR_UNAVAILABLE);

+ 4
- 0
src/main/java/com/yunzhi/marketing/broker/entity/BkAgentRule.java View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
4 4
 import com.baomidou.mybatisplus.annotation.TableId;
5 5
 import io.swagger.annotations.ApiModel;
6 6
 import io.swagger.annotations.ApiModelProperty;
7
+import io.swagger.models.auth.In;
7 8
 import lombok.Data;
8 9
 import lombok.EqualsAndHashCode;
9 10
 import lombok.experimental.Accessors;
@@ -34,6 +35,9 @@ public class BkAgentRule implements Serializable {
34 35
     @ApiModelProperty(value = "规则内容")
35 36
     private String content;
36 37
 
38
+    @ApiModelProperty(value = "推荐金额")
39
+    private Integer referralFee;
40
+
37 41
     @ApiModelProperty(value = "机构ID")
38 42
     private Integer orgId;
39 43
 

+ 44
- 0
src/main/java/com/yunzhi/marketing/broker/entity/BkInviteRecord.java View File

@@ -0,0 +1,44 @@
1
+package com.yunzhi.marketing.broker.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import io.swagger.annotations.ApiModel;
6
+import io.swagger.annotations.ApiModelProperty;
7
+import lombok.Data;
8
+import lombok.EqualsAndHashCode;
9
+import lombok.experimental.Accessors;
10
+
11
+import java.io.Serializable;
12
+import java.time.LocalDateTime;
13
+
14
+@Data
15
+@EqualsAndHashCode(callSuper = false)
16
+@Accessors(chain = true)
17
+@ApiModel(value="BkInviteRecord对象", description="经济人邀请记录")
18
+public class BkInviteRecord implements Serializable {
19
+    /** ID */
20
+    @ApiModelProperty(name = "ID",notes = "")
21
+    @TableId(value = "invite_id", type = IdType.AUTO)
22
+    private Integer inviteId ;
23
+    /** 经纪人ID */
24
+    @ApiModelProperty(name = "经纪人ID",notes = "")
25
+    private String personId ;
26
+    /** 经纪人名称 */
27
+    @ApiModelProperty(name = "经纪人名称",notes = "")
28
+    private String personName ;
29
+    /** 被邀请人ID */
30
+    @ApiModelProperty(name = "被邀请人ID",notes = "")
31
+    private String invitePersonId ;
32
+    /** 被邀请人名称 */
33
+    @ApiModelProperty(name = "被邀请人名称",notes = "")
34
+    private String invitePersonName ;
35
+    /** 推荐金额 */
36
+    @ApiModelProperty(name = "推荐金额",notes = "")
37
+    private Integer referralFee ;
38
+    /** 状态 */
39
+    @ApiModelProperty(name = "状态",notes = "")
40
+    private Integer status;
41
+    /** 创建时间 */
42
+    @ApiModelProperty(name = "创建时间",notes = "")
43
+    private LocalDateTime createDate ;
44
+}

+ 2
- 0
src/main/java/com/yunzhi/marketing/broker/mapper/BkAgentRuleMapper.java View File

@@ -18,4 +18,6 @@ public interface BkAgentRuleMapper extends BaseMapper<BkAgentRule> {
18 18
 
19 19
     BkAgentRule getByOrgId(@Param("orgId") Integer orgId,
20 20
                            @Param("status") Integer status);
21
+
22
+    BkAgentRule getByCity(@Param("cityId") Integer cityId);
21 23
 }

+ 19
- 0
src/main/java/com/yunzhi/marketing/broker/mapper/BkInviteRecordMapper.java View File

@@ -0,0 +1,19 @@
1
+package com.yunzhi.marketing.broker.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.yunzhi.marketing.broker.entity.BkInviteRecord;
5
+import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+
9
+/**
10
+ * 经济人邀请记录;(bk_invite_record)表数据库访问层
11
+ * @author : http://www.chiner.pro
12
+ * @date : 2022-8-4
13
+ */
14
+@Mapper
15
+public interface BkInviteRecordMapper  extends BaseMapper<BkInviteRecord>{
16
+    BkInviteRecord getByPerson(@Param("personId") String personId, @Param("invitePersonId") String invitePersonId);
17
+
18
+    int createBy(@Param("personId") String personId, @Param("invitePersonId") String invitePersonId);
19
+}

+ 8
- 0
src/main/java/com/yunzhi/marketing/broker/service/IBkInviteRecordService.java View File

@@ -0,0 +1,8 @@
1
+package com.yunzhi.marketing.broker.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.yunzhi.marketing.broker.entity.BkInviteRecord;
5
+
6
+public interface IBkInviteRecordService  extends IService<BkInviteRecord> {
7
+    void createBy(String personId, String invitePersonId);
8
+}

+ 26
- 0
src/main/java/com/yunzhi/marketing/broker/service/impl/BkInviteRecordServiceImpl.java View File

@@ -0,0 +1,26 @@
1
+package com.yunzhi.marketing.broker.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.yunzhi.marketing.broker.entity.BkInviteRecord;
5
+import com.yunzhi.marketing.broker.mapper.BkInviteRecordMapper;
6
+import com.yunzhi.marketing.broker.service.IBkInviteRecordService;
7
+import com.yunzhi.marketing.common.StringUtils;
8
+import com.yunzhi.marketing.entity.TaPerson;
9
+import com.yunzhi.marketing.mapper.TaPersonMapper;
10
+import org.springframework.beans.factory.annotation.Autowired;
11
+import org.springframework.stereotype.Service;
12
+
13
+@Service
14
+public class BkInviteRecordServiceImpl extends ServiceImpl<BkInviteRecordMapper, BkInviteRecord> implements IBkInviteRecordService {
15
+    @Autowired
16
+    TaPersonMapper taPersonMapper;
17
+
18
+    @Override
19
+    public void createBy(String personId, String invitePersonId) {
20
+        // 先查询是否已经有记录了
21
+        BkInviteRecord bkInviteRecord = baseMapper.getByPerson(personId, invitePersonId);
22
+        if (null != bkInviteRecord) return;
23
+
24
+        baseMapper.createBy(personId, invitePersonId);
25
+    }
26
+}

+ 5
- 0
src/main/java/com/yunzhi/marketing/common/CommConstant.java View File

@@ -256,6 +256,11 @@ public class CommConstant {
256 256
      */
257 257
     public static final Integer CUSTOMER_COMMISSION = 5;
258 258
 
259
+    /**
260
+     * 全款到账
261
+     */
262
+    public static final Integer CUSTOMER_ALL_PAYMENT = 6;
263
+
259 264
     /**
260 265
      * 待审核
261 266
      */

+ 2
- 0
src/main/java/com/yunzhi/marketing/xlk/controller/ChannelCustomerController.java View File

@@ -172,6 +172,8 @@ public class ChannelCustomerController extends BaseController {
172 172
             bizStatus = CommConstant.CUSTOMER_COMMISSION;
173 173
         } else if ("signatory".equals(bizType)) {
174 174
             bizStatus = CommConstant.CUSTOMER_SIGNED;
175
+        } else if ("all-payment".equals(bizType)) {
176
+            bizStatus = CommConstant.CUSTOMER_ALL_PAYMENT;
175 177
         }
176 178
 
177 179
 //        return iChannelCustomerService.commissionCustomer(params);

+ 58
- 13
src/main/java/com/yunzhi/marketing/xlk/service/impl/ChannelCustomerServiceImpl.java View File

@@ -5,6 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 7
 import com.yunzhi.marketing.base.ResponseBean;
8
+import com.yunzhi.marketing.broker.entity.BkAgentRule;
9
+import com.yunzhi.marketing.broker.entity.BkInviteRecord;
10
+import com.yunzhi.marketing.broker.mapper.BkAgentRuleMapper;
11
+import com.yunzhi.marketing.broker.mapper.BkInviteRecordMapper;
8 12
 import com.yunzhi.marketing.center.taUser.entity.TaUser;
9 13
 import com.yunzhi.marketing.center.taUser.mapper.TaUserMapper;
10 14
 import com.yunzhi.marketing.common.CommConstant;
@@ -65,6 +69,13 @@ public class ChannelCustomerServiceImpl extends ServiceImpl<ChannelCustomerMappe
65 69
 
66 70
     @Autowired
67 71
     private InstitutionMapper institutionMapper;
72
+
73
+    @Autowired
74
+    private BkInviteRecordMapper bkInviteRecordMapper;
75
+
76
+    @Autowired
77
+    private BkAgentRuleMapper bkAgentRuleMapper;
78
+
68 79
     /**
69 80
      * 审核
70 81
      *
@@ -511,6 +522,20 @@ public class ChannelCustomerServiceImpl extends ServiceImpl<ChannelCustomerMappe
511 522
         }
512 523
         taRecommendCustomer.setStatus(bizStatus);
513 524
         taRecommendCustomerMapper.updateById(taRecommendCustomer);
525
+        //
526
+        customerSignatory.setOrgId(taRecommendCustomer.getOrgId());
527
+        customerSignatory.setBuildingId(taRecommendCustomer.getBuildingId());
528
+        TaBuilding taBuilding = taBuildingMapper.selectById(taRecommendCustomer.getBuildingId());
529
+        if (taBuilding == null) {
530
+            throw new Exception("校验客户及楼盘信息异常");
531
+        }
532
+
533
+        // 推荐人
534
+        customerSignatory.setRecommendPerson(taRecommendCustomer.getRecommendPerson());
535
+        TaPerson recommendPerson = taPersonMapper.getById(taRecommendCustomer.getRecommendPerson());
536
+        if (null != recommendPerson) {
537
+            customerSignatory.setRecommendName(recommendPerson.getName());
538
+        }
514 539
 
515 540
         // 更新报备记录
516 541
         LambdaQueryWrapper<ChannelCustomer> channelCustomerLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -532,18 +557,14 @@ public class ChannelCustomerServiceImpl extends ServiceImpl<ChannelCustomerMappe
532 557
             // 全民经纪人佣金处理
533 558
             boolean isBroker = CommConstant.PERSON_BROKER.equals(customer.getRecommendPersonType());
534 559
             if (isBroker) {
535
-                
536
-            }
537
-        }
560
+                // 处理推荐金额问题
561
+                processInviteRecord(recommendPerson, taBuilding);
562
+                //
538 563
 
539
-        // 推荐人
540
-        customerSignatory.setRecommendPerson(taRecommendCustomer.getRecommendPerson());
541
-        TaPerson recommendPerson = taPersonMapper.getById(taRecommendCustomer.getRecommendPerson());
542
-        if (null != recommendPerson) {
543
-            customerSignatory.setRecommendName(recommendPerson.getName());
564
+            }
544 565
         }
545 566
 
546
-        // 业顾问-接待人
567
+        // 置业顾问-接待人
547 568
         if (!StringUtils.isEmpty(customerSignatory.getRealtyConsultant())) {
548 569
             TaPerson realtyConsultant = taPersonMapper.getById(customerSignatory.getRealtyConsultant());
549 570
             if (null != realtyConsultant) {
@@ -551,10 +572,6 @@ public class ChannelCustomerServiceImpl extends ServiceImpl<ChannelCustomerMappe
551 572
             }
552 573
         }
553 574
 
554
-        //
555
-        customerSignatory.setOrgId(taRecommendCustomer.getOrgId());
556
-        customerSignatory.setBuildingId(taRecommendCustomer.getBuildingId());
557
-
558 575
         // 更新
559 576
         if (StringUtils.isEmpty(customerSignatory.getCustomerSignatoryId())){
560 577
             customerSignatoryMapper.insert(customerSignatory);
@@ -562,4 +579,32 @@ public class ChannelCustomerServiceImpl extends ServiceImpl<ChannelCustomerMappe
562 579
             customerSignatoryMapper.updateById(customerSignatory);
563 580
         }
564 581
     }
582
+
583
+    /**
584
+     * 处理推荐金
585
+     * @param recommendPerson
586
+     * @param taBuilding
587
+     */
588
+    private void processInviteRecord(TaPerson recommendPerson, TaBuilding taBuilding) {
589
+        // 推荐人员
590
+        String personId = recommendPerson.getRecommendAgent();
591
+        if (StringUtils.isEmpty(personId)) return;
592
+
593
+        // 查询推荐记录
594
+        BkInviteRecord bkInviteRecord = bkInviteRecordMapper.getByPerson(personId, recommendPerson.getPersonId());
595
+        if (null == bkInviteRecord) {
596
+            bkInviteRecordMapper.createBy(personId, recommendPerson.getPersonId());
597
+            bkInviteRecord = bkInviteRecordMapper.getByPerson(personId, recommendPerson.getPersonId());
598
+        }
599
+
600
+        // 大于0 代表已经计算过推荐费用
601
+        if (bkInviteRecord.getReferralFee() > 0) return;
602
+
603
+        // 查询推荐费用
604
+        BkAgentRule agentRule = bkAgentRuleMapper.getByCity(taBuilding.getCityId());
605
+        if (null == agentRule) return;
606
+
607
+        bkInviteRecord.setReferralFee(agentRule.getReferralFee());
608
+        bkInviteRecordMapper.updateById(bkInviteRecord);
609
+    }
565 610
 }

+ 12
- 0
src/main/resources/mapper/BkAgentrRuleMapper.xml View File

@@ -17,4 +17,16 @@
17 17
             t.create_date DESC
18 18
             LIMIT 1
19 19
     </select>
20
+    <select id="getByCity" resultType="com.yunzhi.marketing.broker.entity.BkAgentRule">
21
+        SELECT
22
+            *
23
+        FROM
24
+            bk_agent_rule t
25
+        WHERE
26
+            t.city_id = #{cityId}
27
+            AND t.`status` &gt; -1
28
+        ORDER BY
29
+            t.create_date DESC
30
+            LIMIT 1
31
+    </select>
20 32
 </mapper>

+ 29
- 0
src/main/resources/mapper/BkInviteRecordMapper.xml View File

@@ -0,0 +1,29 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+
4
+<mapper namespace="com.yunzhi.marketing.broker.mapper.BkInviteRecordMapper">
5
+    <insert id="createBy">
6
+        INSERT bk_invite_record ( person_id, person_name, invite_person_id, invite_person_name )
7
+        SELECT
8
+            t.person_id,
9
+            IFNULL( t.NAME, t.nickname ),
10
+            s.person_id,
11
+            IFNULL( s.NAME, s.nickname )
12
+        FROM
13
+            ta_person t,
14
+            ta_person s
15
+        WHERE
16
+            t.person_id = #{personId}
17
+          AND s.person_id = #{invitePersonId}
18
+    </insert>
19
+    <select id="getByPerson" resultType="com.yunzhi.marketing.broker.entity.BkInviteRecord">
20
+        SELECT
21
+            *
22
+        FROM
23
+            bk_invite_record t
24
+        WHERE
25
+            t.person_id = #{personId}
26
+          AND t.invite_person_id = #{invitePersonId}
27
+          AND t.`status` &gt; -1
28
+    </select>
29
+</mapper>