From 1582adad85898e246fbd0cbdabde9ac6b990bb8e Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 17 二月 2025 14:41:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java     |  156 +++++++++++++++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/MyToDoVO.java                     |   23 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBannerMapper.java            |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBannerServiceImpl.java |    6 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/MyHouseVO.java                    |   38 +++++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/PayListVO.java                    |   20 ++++
 ruoyi-system/src/main/resources/mapper/system/TBannerMapper.xml                  |    7 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/THouse.java                    |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TBannerService.java          |    3 
 9 files changed, 258 insertions(+), 1 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java
new file mode 100644
index 0000000..e2da95d
--- /dev/null
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java
@@ -0,0 +1,156 @@
+package com.ruoyi.web.controller.api;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.constant.DictConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.model.LoginUserApplet;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.TBillDto;
+import com.ruoyi.system.dto.TInvoiceDTO;
+import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.TBannerQuery;
+import com.ruoyi.system.query.TBillQuery;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.MyHouseVO;
+import com.ruoyi.system.vo.MyToDoVO;
+import com.ruoyi.system.vo.PayListVO;
+import com.ruoyi.system.vo.TBillVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import jdk.nashorn.internal.parser.Token;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 租金账单 前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2025-01-17
+ */
+@Api(tags = "首页")
+@RestController
+@RequestMapping("/t-index")
+public class IndexController {
+
+    @Autowired
+    private TBannerService bannerService;
+    @Autowired
+    private TokenService tokenService;
+    @Autowired
+    private TContractService contractService;
+    @Autowired
+    private TBillService billService;
+    @Autowired
+    private THouseService houseService;
+
+
+    /**
+     * 获取轮播图管理列表
+     */
+    @ApiOperation(value = "获取轮播图列表")
+    @PostMapping(value = "/list")
+    public R<List<TBanner>> list(@RequestBody TBannerQuery query) {
+        return R.ok(bannerService.list(query));
+    }    /**
+     * 获取轮播图管理列表
+     */
+    @ApiOperation(value = "租户-我的待办")
+    @PostMapping(value = "/tenant/myToDo")
+    public R<MyToDoVO> tenantMyToDo() {
+        MyToDoVO myToDoVO = new MyToDoVO();
+        LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet();
+        if (loginUserApplet!=null){
+            long contractCount = contractService.count(new LambdaQueryWrapper<TContract>()
+                    .eq(TContract::getStatus, 3).eq(TContract::getTenantId, loginUserApplet.getUserId()));
+            myToDoVO.setContractCount((int) contractCount);
+            List<String> contractIds = contractService.lambdaQuery().eq(TContract::getTenantId, loginUserApplet.getUserId()).list()
+                    .stream().map(TContract::getId).collect(Collectors.toList());
+            int billCount = billService.lambdaQuery().in(TBill::getContractId, contractIds).eq(TBill::getPayFeesStatus, 1).list().size();
+            myToDoVO.setBillCount(billCount);
+        }else {
+            myToDoVO.setBillCount(0);
+            myToDoVO.setContractCount(0);
+        }
+        return R.ok(myToDoVO);
+    }
+    @ApiOperation(value = "租户-当前在租房源")
+    @PostMapping(value = "/tenant/myHouse")
+    public R<List<MyHouseVO>> myHouse() {
+        List<MyHouseVO> myHouseVOS = new ArrayList<>();
+        LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet();
+
+        if (loginUserApplet!=null){
+            List<TContract> contractList = contractService.lambdaQuery().eq(TContract::getTenantId, loginUserApplet.getUserId())
+                    .eq(TContract::getStatus, 4).list();
+            List<THouse> houseList = houseService.list();
+            List<TBill> bills = billService.lambdaQuery().eq(TBill::getPayFeesStatus,3).orderByDesc(TBill::getPayFeesTime).list();
+            for (TContract contract : contractList) {
+                THouse tHouse = houseList.stream().filter(e -> e.getId().equals(contract.getHouseId())).findFirst().orElse(null);
+                TBill bill = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).findFirst().orElse(null);
+                if (tHouse!=null&& bill!=null){
+                    MyHouseVO myToDoVO = new MyHouseVO();
+                    myToDoVO.setHouseAddress(tHouse.getHouseAddress());
+                    myToDoVO.setMonthRent(contract.getMonthRent());
+                    myToDoVO.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,contract.getPayType()));
+                    myToDoVO.setMonth(bill.getPayFeesTime().getMonth()+"");
+                    myToDoVO.setHouseArea(tHouse.getHouseArea());
+                    myToDoVO.setHouseType(tHouse.getHouseType());
+                    myToDoVO.setEndTime(DateUtils.localDateTimeToStringYear(contract.getEndTime()));
+                    myToDoVO.setStartTime(DateUtils.localDateTimeToStringYear(contract.getStartTime()));
+                    myToDoVO.setPropertyRightPerson(tHouse.getPropertyRightPerson());
+                    myToDoVO.setPhone(tHouse.getPhone());
+                    List<TBill> billList = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).collect(Collectors.toList());
+                    List<PayListVO> payList = new ArrayList<>();
+                    for (TBill tBill : billList) {
+                        PayListVO payListVO = new PayListVO();
+                        payListVO.setPayFeesTime(DateUtils.localDateTimeToStringYear(tBill.getPayFeesTime()));
+                        payListVO.setPayFeesMoney("-"+tBill.getPayFeesMoney()+"元");
+                        payList.add(payListVO);
+                    }
+                    myToDoVO.setPayList(payList);
+                    myHouseVOS.add(myToDoVO);
+                }
+
+            }
+            return R.ok(myHouseVOS);
+        }else {
+            return R.ok(myHouseVOS);
+        }
+    }
+    @ApiOperation(value = "管理员-我的待办")
+    @PostMapping(value = "/admin/myToDo")
+    public R<MyToDoVO> adminMyToDo() {
+        MyToDoVO myToDoVO = new MyToDoVO();
+        LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet();
+        if (loginUserApplet!=null){
+            long examineCount = contractService.count(new LambdaQueryWrapper<TContract>()
+                    .eq(TContract::getStatus, 2));
+            myToDoVO.setExamineCount((int) examineCount);
+            List<String> contractIds = billService.lambdaQuery().eq(TBill::getPayFeesStatus, 4).list()
+                    .stream().map(TBill::getContractId).collect(Collectors.toList());
+            int overdueCount = contractService.lambdaQuery().in(TContract::getId, contractIds).list()
+                    .stream().map(TContract::getTenantId).distinct().collect(Collectors.toList()).size();
+            myToDoVO.setOverdueCount(overdueCount);
+        }else {
+            myToDoVO.setExamineCount(0);
+            myToDoVO.setOverdueCount(0);
+        }
+        return R.ok(myToDoVO);
+    }
+
+}
+
+
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBannerMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBannerMapper.java
index b258375..800c3c6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBannerMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBannerMapper.java
@@ -25,5 +25,6 @@
      * @return
      */
     List<TBanner> pageList(@Param("query") TBannerQuery query, @Param("pageInfo")PageInfo<TBanner> pageInfo);
+    List<TBanner> list(@Param("query") TBannerQuery query);
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/THouse.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/THouse.java
index 50fd212..9a03ab2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/THouse.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/THouse.java
@@ -47,7 +47,7 @@
 
     @ApiModelProperty(value = "建筑面积")
     @TableField("house_area")
-    private Integer houseArea;
+    private String houseArea;
 
     @ApiModelProperty(value = "户型")
     @TableField("house_type")
@@ -87,6 +87,9 @@
     @ApiModelProperty(value = "房号")
     @TableField("room_number")
     private String roomNumber;
+    @ApiModelProperty(value = "产权人联系方式")
+    @TableField("phone")
+    private String phone;
 
     @ApiModelProperty(value = "住户类型 1月租 2季租 3年租")
     @TableField(exist = false)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TBannerService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TBannerService.java
index b2ed584..9b7b161 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TBannerService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TBannerService.java
@@ -5,6 +5,8 @@
 import com.ruoyi.system.model.TBanner;
 import com.ruoyi.system.query.TBannerQuery;
 
+import java.util.List;
+
 /**
  * <p>
  * 轮播图管理 服务类
@@ -21,4 +23,5 @@
      * @return
      */
     PageInfo<TBanner> pageList(TBannerQuery query);
+    List<TBanner> list(TBannerQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBannerServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBannerServiceImpl.java
index 6dae322..7da7f08 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBannerServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBannerServiceImpl.java
@@ -29,4 +29,10 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public List<TBanner> list(TBannerQuery query) {
+        List<TBanner> list = this.baseMapper.list(query);
+        return list;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/MyHouseVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/MyHouseVO.java
new file mode 100644
index 0000000..d77dbca
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/MyHouseVO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.system.model.TBill;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel(value = "我的在租VO")
+public class MyHouseVO {
+    @ApiModelProperty(value = "地址")
+    private String houseAddress;
+    @ApiModelProperty(value = "月付租金")
+    private BigDecimal monthRent;
+    @ApiModelProperty(value = "支付方式 月付、季付、年付")
+    private String payType;
+    @ApiModelProperty(value = "付款当月月份")
+    private String month;
+    @ApiModelProperty(value = "建筑面积")
+    private String houseArea;
+    @ApiModelProperty(value = "户型")
+    private String houseType;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+    @ApiModelProperty(value = "房东")
+    private String propertyRightPerson;
+    @ApiModelProperty(value = "房东联系方式")
+    private String phone;
+    @ApiModelProperty(value = "交租记录")
+    private List<PayListVO> payList;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/MyToDoVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/MyToDoVO.java
new file mode 100644
index 0000000..944177e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/MyToDoVO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.TBill;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "我的待办VO")
+public class MyToDoVO  {
+
+    @ApiModelProperty(value = "租户-待缴费订单数量")
+    private Integer billCount;
+
+    @ApiModelProperty(value = "租户-待签订合同数量")
+    private Integer contractCount;
+
+    @ApiModelProperty(value = "管理员-待审批数量")
+    private Integer examineCount;
+
+    @ApiModelProperty(value = "管理员-账单逾期租户数量数量")
+    private Integer overdueCount;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/PayListVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/PayListVO.java
new file mode 100644
index 0000000..4bbb7b9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/PayListVO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.system.model.TBill;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel(value = "我的在租-交租记录VO")
+public class PayListVO {
+    @ApiModelProperty(value = "时间")
+    private String payFeesTime;
+    @ApiModelProperty(value = "缴费金额 (处理了负号和元 直接展示就行)")
+    private String payFeesMoney;
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TBannerMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TBannerMapper.xml
index d9bd46a..3cfee87 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TBannerMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TBannerMapper.xml
@@ -25,5 +25,12 @@
         where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         order by sort_by, create_time desc
     </select>
+    <select id="list" resultType="com.ruoyi.system.model.TBanner">
+        select
+        <include refid="Base_Column_List"/>
+        from t_banner
+        where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        order by sort_by, create_time desc
+    </select>
 
 </mapper>

--
Gitblit v1.7.1