傅行帆 4 lat temu
rodzic
commit
295ae28abc

+ 5
- 0
src/main/java/com/huiju/estateagents/common/CommConstant.java Wyświetl plik

944
     public static final String TP_MESSAGE_BIRTHDAY = "birthday";    // 生日
944
     public static final String TP_MESSAGE_BIRTHDAY = "birthday";    // 生日
945
     public static final String TP_MESSAGE_FESTIVAL= "festival";     // 节日
945
     public static final String TP_MESSAGE_FESTIVAL= "festival";     // 节日
946
     public static final String TP_MESSAGE_TICKET= "ticket";         // 工单
946
     public static final String TP_MESSAGE_TICKET= "ticket";         // 工单
947
+    public static final String TP_MESSAGE_PROPERTY_FEE= "property-fee";         // 工单
947
 
948
 
948
     public static  final String VERIFY_STATUS_PASS = "1";
949
     public static  final String VERIFY_STATUS_PASS = "1";
950
+
951
+    public static  final String BILL_STATUS_UNPAID = "0";
952
+
953
+
949
 }
954
 }

+ 8
- 0
src/main/java/com/huiju/estateagents/property/controller/BillInvoiceController.java Wyświetl plik

59
         return responseBean;
59
         return responseBean;
60
     }
60
     }
61
 
61
 
62
+    @RequestMapping(value = "/admin/bill/invoice/collection", method = RequestMethod.POST)
63
+    public ResponseBean collectionBillList(HttpServletRequest request, @RequestBody BillInvoice billInvoice) {
64
+        ResponseBean responseBean = new ResponseBean();
65
+        TaUser userElement = getTaUser(request);
66
+        responseBean = iBillInvoiceService.collectionBillList(billInvoice, userElement);
67
+        return responseBean;
68
+    }
69
+
62
     // @ApiOperation(value = "修改缴费项 收费项名称,缴费项说明,截止时间", notes = "修改缴费项 收费项名称,缴费项说明,截止时间")
70
     // @ApiOperation(value = "修改缴费项 收费项名称,缴费项说明,截止时间", notes = "修改缴费项 收费项名称,缴费项说明,截止时间")
63
     @ApiImplicitParams({
71
     @ApiImplicitParams({
64
             @ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "billName收费项名称,billExplain缴费项说明,endDate截止时间"),
72
             @ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "billName收费项名称,billExplain缴费项说明,endDate截止时间"),

+ 8
- 0
src/main/java/com/huiju/estateagents/property/service/IBillInvoiceService.java Wyświetl plik

106
      * @return
106
      * @return
107
      */
107
      */
108
 	List<Map<String, Object>> getPriceCount();
108
 	List<Map<String, Object>> getPriceCount();
109
+
110
+    /**
111
+     * 催缴账单
112
+     * @param billInvoice
113
+     * @param userElement
114
+     * @return
115
+     */
116
+    ResponseBean collectionBillList(BillInvoice billInvoice, TaUser userElement);
109
 }
117
 }

+ 153
- 4
src/main/java/com/huiju/estateagents/property/service/impl/BillInvoiceServiceImpl.java Wyświetl plik

1
 package com.huiju.estateagents.property.service.impl;
1
 package com.huiju.estateagents.property.service.impl;
2
 
2
 
3
 import com.alibaba.fastjson.JSONObject;
3
 import com.alibaba.fastjson.JSONObject;
4
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
 import com.baomidou.mybatisplus.core.metadata.IPage;
6
 import com.baomidou.mybatisplus.core.metadata.IPage;
6
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
8
 import com.huiju.estateagents.base.ResponseBean;
9
 import com.huiju.estateagents.base.ResponseBean;
9
 import com.huiju.estateagents.center.taUser.entity.TaUser;
10
 import com.huiju.estateagents.center.taUser.entity.TaUser;
10
 import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
11
 import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
12
+import com.huiju.estateagents.common.CommConstant;
11
 import com.huiju.estateagents.common.DateUtils;
13
 import com.huiju.estateagents.common.DateUtils;
12
 import com.huiju.estateagents.common.StringUtils;
14
 import com.huiju.estateagents.common.StringUtils;
15
+import com.huiju.estateagents.common.WxUtils;
16
+import com.huiju.estateagents.entity.TaMiniapp;
17
+import com.huiju.estateagents.entity.TaMpTemplate;
18
+import com.huiju.estateagents.entity.TaPerson;
19
+import com.huiju.estateagents.mapper.TaPersonMapper;
13
 import com.huiju.estateagents.property.common.UserElement;
20
 import com.huiju.estateagents.property.common.UserElement;
14
 import com.huiju.estateagents.property.dao.*;
21
 import com.huiju.estateagents.property.dao.*;
15
 import com.huiju.estateagents.property.exception.WisdomException;
22
 import com.huiju.estateagents.property.exception.WisdomException;
17
 import com.huiju.estateagents.property.service.IBillInvoiceService;
24
 import com.huiju.estateagents.property.service.IBillInvoiceService;
18
 import com.huiju.estateagents.property.service.IMessageService;
25
 import com.huiju.estateagents.property.service.IMessageService;
19
 import com.google.common.collect.Maps;
26
 import com.google.common.collect.Maps;
27
+import com.huiju.estateagents.redpack.entity.TaMpMiniapp;
28
+import com.huiju.estateagents.redpack.entity.TaMpPerson;
29
+import com.huiju.estateagents.redpack.mapper.TaMpMiniappMapper;
30
+import com.huiju.estateagents.redpack.mapper.TaMpPersonMapper;
31
+import com.huiju.estateagents.redpack.service.ITaMpPersonService;
32
+import com.huiju.estateagents.service.IMiniAppService;
33
+import com.huiju.estateagents.service.ITaMpTemplateService;
34
+import com.huiju.estateagents.service.ITaPersonService;
35
+import com.huiju.estateagents.third.entity.TaMpInfo;
36
+import com.huiju.estateagents.third.service.ITaMpInfoService;
37
+import me.chanjar.weixin.common.error.WxErrorException;
38
+import me.chanjar.weixin.mp.api.WxMpService;
39
+import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
40
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
20
 import org.apache.poi.hssf.usermodel.*;
41
 import org.apache.poi.hssf.usermodel.*;
21
 import org.springframework.beans.factory.annotation.Autowired;
42
 import org.springframework.beans.factory.annotation.Autowired;
22
 import org.springframework.stereotype.Service;
43
 import org.springframework.stereotype.Service;
24
 
45
 
25
 import java.text.SimpleDateFormat;
46
 import java.text.SimpleDateFormat;
26
 import java.time.LocalDateTime;
47
 import java.time.LocalDateTime;
27
-import java.util.Date;
28
-import java.util.List;
29
-import java.util.Map;
30
-import java.util.Random;
48
+import java.util.*;
31
 import java.util.stream.Collectors;
49
 import java.util.stream.Collectors;
32
 
50
 
33
 /**
51
 /**
71
     @Autowired
89
     @Autowired
72
     private TpBillOrderMapper tpBillOrderMapper;
90
     private TpBillOrderMapper tpBillOrderMapper;
73
 
91
 
92
+    @Autowired
93
+    WxUtils wxUtils;
94
+
95
+    @Autowired
96
+    ITaMpInfoService iTaMpInfoService;
97
+
98
+    @Autowired
99
+    ITaMpPersonService iTaMpPersonService;
100
+
101
+    @Autowired
102
+    ITaPersonService iTaPersonService;
103
+    @Autowired
104
+    private IMiniAppService iMiniAppService;
105
+
106
+    @Autowired
107
+    private ITaMpTemplateService iTaMpTemplateService;
108
+
109
+    @Autowired
110
+    private TaMpMiniappMapper taMpMiniappMapper;
111
+
112
+    @Autowired
113
+    private TaMpPersonMapper taMpPersonMapper;
114
+    @Autowired
115
+    private TaPersonMapper taPersonMapper;
116
+
74
     @Override
117
     @Override
75
     public ResponseBean getBillList(String parameter, TaUser userElement) {
118
     public ResponseBean getBillList(String parameter, TaUser userElement) {
76
         ResponseBean responseBean = new ResponseBean();
119
         ResponseBean responseBean = new ResponseBean();
672
     public List<Map<String, Object>> getPriceCount() {
715
     public List<Map<String, Object>> getPriceCount() {
673
         return billInvoiceMapper.getPriceCount();
716
         return billInvoiceMapper.getPriceCount();
674
     }
717
     }
718
+
719
+    /**
720
+     * 催缴账单
721
+     *
722
+     * @param billInvoice
723
+     * @param userElement
724
+     * @return
725
+     */
726
+    @Override
727
+    public ResponseBean collectionBillList(BillInvoice billInvoice, TaUser userElement) {
728
+        LambdaQueryWrapper<BillInvoice> queryWrapper = new LambdaQueryWrapper<>();
729
+        queryWrapper.eq(BillInvoice::getBillId,billInvoice.getBillId());
730
+        queryWrapper.eq(BillInvoice::getStatus,"1");
731
+        List<BillInvoice> billInvoices = billInvoiceMapper.selectList(queryWrapper);
732
+        // 发送催缴消息
733
+        billInvoices.forEach(e -> {
734
+            if (CommConstant.BILL_STATUS_UNPAID.equals(e.getBillStatus())){
735
+                // 根据房间号获取person信息
736
+                LambdaQueryWrapper<TaUserVerify> taUserVerifyLambdaQueryWrapper = new LambdaQueryWrapper<>();
737
+                taUserVerifyLambdaQueryWrapper.eq(TaUserVerify::getRoomNoId,e.getRoomNoId());
738
+                taUserVerifyLambdaQueryWrapper.eq(TaUserVerify::getRoleId,"1");
739
+                TaUserVerify taUserVerify = taUserVerifyMapper.selectOne(taUserVerifyLambdaQueryWrapper);
740
+
741
+                // 获取person
742
+                TaPerson taPerson = taPersonMapper.selectById(taUserVerify.getPersonId());
743
+                if (null != taPerson){
744
+                    LambdaQueryWrapper<TaMpMiniapp> taMpMiniappLambdaQueryWrapper = new LambdaQueryWrapper<>();
745
+                    taMpMiniappLambdaQueryWrapper.eq(TaMpMiniapp::getMiniappPersonId,taPerson.getPersonId());
746
+                    TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(taMpMiniappLambdaQueryWrapper);
747
+                    if (null != taMpMiniapp){
748
+                        TaMpPerson taMpPerson = taMpPersonMapper.selectById(taMpMiniapp.getMpPersonId());
749
+                        sendMpBillMessage(e,taMpPerson);
750
+                        try {
751
+                            // 一秒发一次
752
+                            Thread.sleep(1000);
753
+                        } catch (InterruptedException ex) {
754
+                            ex.printStackTrace();
755
+                        }
756
+                    }
757
+
758
+                }
759
+            }
760
+        });
761
+
762
+        return ResponseBean.success("ok");
763
+    }
764
+
765
+    /**
766
+     * 发送催款消息
767
+     * @param billInvoice
768
+     * @param person
769
+     */
770
+    private void sendMpBillMessage(BillInvoice billInvoice, TaMpPerson person) {
771
+        WxMpService mpService = wxUtils.getMpService(billInvoice.getOrgId());
772
+
773
+        // 对应表数据
774
+        TaMpInfo mpInfo = iTaMpInfoService.getByOrgId(billInvoice.getOrgId());
775
+
776
+        TaMiniapp taMiniapp = iMiniAppService.getAppByOrg(mpInfo.getOrgId());
777
+
778
+        WxMpKefuMessage kefuMessage = WxMpKefuMessage.MINIPROGRAMPAGE().appId(taMiniapp.getMiniappId())
779
+                .toUser(person.getMpOpenid())
780
+                .title("您有一个新的工单待处理")
781
+//                .pagePath(miniAppTicket + ticket.getId()) 无跳转页面
782
+                .thumbMediaId(mpInfo.getMiniappMedia())
783
+                .build();
784
+
785
+        try {
786
+            mpService.getKefuService().sendKefuMessage(kefuMessage);
787
+        } catch (WxErrorException e) {
788
+            e.printStackTrace();
789
+
790
+            // 如果客服消息发送失败, 则发送普通模板消息
791
+//            List<TaMpTemplate> mpTemplateList = iTaMpTemplateService.getAvailableList(ticket.getOrgId(), CommConstant.TP_MESSAGE_TICKET);
792
+//            if (null == mpTemplateList || mpTemplateList.size() < 1) {
793
+//                return;
794
+//            }
795
+            TaMpTemplate mpTemplate = iTaMpTemplateService.getByCode(billInvoice.getOrgId(), CommConstant.TP_MESSAGE_PROPERTY_FEE);
796
+            if (null == mpTemplate) {
797
+                return;
798
+            }
799
+
800
+            try {
801
+//                TaPerson propOwner = iTaPersonService.getById(ticket.getPersonId());
802
+//                String message = String.format("业主电话: %s ; 报修内容: %s", propOwner.getPhone(), ticket.getTicketTitle());
803
+                String message = "";
804
+                String remark = String.format("请及时进入【%s】小程序进行处理", taMiniapp.getName());
805
+
806
+                WxUtils.sendTemplateMessage(mpService,
807
+                        person.getMpOpenid(),
808
+                        mpTemplate.getTemplateCode(),
809
+                        null,
810
+                        new ArrayList<WxMpTemplateData>(){{
811
+                            add(new WxMpTemplateData("first", "工单提醒"));
812
+                            add(new WxMpTemplateData("keyword1", "您有一个新的工单"));
813
+                            add(new WxMpTemplateData("keyword2", DateUtils.today()));
814
+                            add(new WxMpTemplateData("keyword3", message));
815
+                            add(new WxMpTemplateData("remark", remark));
816
+                        }}
817
+                );
818
+            } catch (Exception e2) {
819
+                e2.printStackTrace();
820
+            }
821
+
822
+        }
823
+    }
675
 }
824
 }