From d2542a6123fa6834e01ed3af23c7ba0a02696bc6 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 29 十一月 2024 16:37:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java                      |  116 +++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderFallbackFactory.java             |   39 +
 ruoyi-service/ruoyi-account/pom.xml                                                                       |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java              |   16 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java                  |   44 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java      |   28 +
 ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java                    |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/IndexConfigSetDto.java                    |   23 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java                    |   27 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java             |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/TechnicianSubscribeVO.java                     |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java            |   33 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java |    6 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java                        |   31 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java         |   55 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java  |    4 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java                     |   17 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java            |    3 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java                 |   28 +
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/StoreClient.java                  |   24 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java           |   16 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java              |   64 +++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java           |    1 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/StoreFallbackFactory.java             |   35 +
 ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java                                      |    1 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java              |   83 ++++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java     |   11 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderClient.java                  |   24 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java                  |   40 +
 ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java             |    5 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Technician.java                        |    7 
 /dev/null                                                                                                 |   75 ---
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java                     |    6 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java             |  129 +++++-
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml                   |   31 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java          |  115 +++++
 36 files changed, 1,030 insertions(+), 119 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
index 32caa3c..c93b679 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
@@ -31,6 +31,12 @@
 				throw new RuntimeException("编辑用户信息失败");
 			}
 
+			@Override
+			public R<Long> getCouponCount(Long userId, Long couponId) {
+				log.error("获取优惠券数量失败:{}", cause.getMessage());
+				throw new RuntimeException("获取优惠券数量失败");
+			}
+
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index e8178d7..8c625c3 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -28,4 +28,7 @@
 	 */
 	@PostMapping("/appUser/editAppUserById")
 	R<Void> editAppUserById(@RequestParam("appUser") AppUser appUser);
+
+	@PostMapping("/appUser/getCouponCount")
+	R<Long> getCouponCount(@RequestParam("userId")Long userId, @RequestParam("couponId") Integer couponId );
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
index c8cfc28..026c52b 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -85,10 +85,18 @@
     @ApiModelProperty(value = "推广人id")
     @TableField("invite_user_id")
     private Long inviteUserId;
+    @ApiModelProperty(value = "推广人姓名")
+    @TableField(exist = false)
+    private String inviteUserName;
+
+
 
     @ApiModelProperty(value = "绑定门店id")
     @TableField("shop_id")
     private Long shopId;
+    @ApiModelProperty(value = "绑定门店名称")
+    @TableField(exist = false)
+    private String shopName;
 
     @ApiModelProperty(value = "合伙人积分数")
     @TableField("part_point")
@@ -174,4 +182,27 @@
     @TableField("district_code")
     private String districtCode;
 
+    @ApiModelProperty("等级1会员数")
+    private Long count1;
+
+    @ApiModelProperty("等级2会员数")
+    private Long count2;
+
+    @ApiModelProperty("等级3会员数")
+    private Long count3;
+
+    @ApiModelProperty("等级4会员数")
+    private Long count4;
+
+    @ApiModelProperty("等级5会员数")
+    private Long count5;
+
+    @ApiModelProperty("等级6会员数")
+    private Long count6;
+
+    @ApiModelProperty("等级7会员数")
+    private Long count7;
+
+
+
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java
index 3ca871c..88c6de2 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.account.api.vo.CouponInfoVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -48,9 +49,25 @@
     @TableField("use_time")
     private LocalDateTime useTime;
 
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField("end_time")
+    private LocalDateTime endTime;
+
     @ApiModelProperty(value = "优惠劵id")
     @TableField("coupon_id")
     private Integer couponId;
+    @ApiModelProperty(value = "优惠劵信息")
+    @TableField(exist = false)
+    private CouponInfoVo couponInfoVo;
+
+    @ApiModelProperty(value = "1未使用2已使用3已过期")
+    @TableField(exist = false)
+    private Integer status;
+
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
index 106134c..7c0f020 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponInfoVo.java
@@ -33,4 +33,120 @@
 	private String periodEndTime;
 	@ApiModelProperty("是否可用")
 	private Boolean available;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-11-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_coupon_info")
+@ApiModel(value="CouponInfo对象", description="")
+public class CouponInfoVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "删除标志(0=否,1=是)")
+    @TableField("del_flag")
+    @TableLogic
+    private Integer delFlag;
+
+    @ApiModelProperty(value = "添加时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "优惠券名称")
+    @TableField("coupon_name")
+    private String couponName;
+
+    @ApiModelProperty(value = "优惠券类型 1'满减券',2'代金券',3'折扣券',4'商品券'")
+    @TableField("coupon_type")
+    private Integer couponType;
+
+    @ApiModelProperty(value = "满x元")
+    @TableField("condition_amount")
+    private BigDecimal conditionAmount;
+
+    @ApiModelProperty(value = "减x元")
+    @TableField("discount_amount")
+    private BigDecimal discountAmount;
+
+    @ApiModelProperty(value = "代金x元")
+    @TableField("money_amount")
+    private BigDecimal moneyAmount;
+
+    @ApiModelProperty(value = "折扣")
+    @TableField("discount")
+    private BigDecimal discount;
+
+    @ApiModelProperty(value = "适用商品ids,全部-1")
+    @TableField("for_good_ids")
+    private String forGoodIds;
+
+    @ApiModelProperty(value = "发放数量")
+    @TableField("send_num")
+    private Integer sendNum;
+
+    @ApiModelProperty(value = "可领数量")
+    @TableField("max_num")
+    private Integer maxNum;
+
+    @ApiModelProperty(value = "有效期类型 1指定时间内有效 2领取后x天有效")
+    @TableField("period_type")
+    private Integer periodType;
+
+    @ApiModelProperty(value = "有效期开始时间")
+    @TableField("period_start_time")
+    private LocalDateTime periodStartTime;
+
+    @ApiModelProperty(value = "有效期结束时间")
+    @TableField("period_end_time")
+    private LocalDateTime periodEndTime;
+
+    @ApiModelProperty(value = "领取后x天有效")
+    @TableField("period_days")
+    private Integer periodDays;
+
+    @ApiModelProperty(value = "开始发放时间")
+    @TableField("send_start_time")
+    private LocalDateTime sendStartTime;
+
+    @ApiModelProperty(value = "结束发放时间")
+    @TableField("send_end_time")
+    private LocalDateTime sendEndTime;
+
+    @ApiModelProperty(value = "1免费发放2积分兑换")
+    @TableField("send_type")
+    private Integer sendType;
+
+    @ApiModelProperty(value = "兑换所需积分")
+    @TableField("need_point")
+    private BigDecimal needPoint;
+
+    @ApiModelProperty(value = "可领用户  1全部 2指定人员 3指定会员 4 新人注册")
+    @TableField("person_type")
+    private Integer personType;
+
+    @ApiModelProperty(value = "可领取对应的ids,用find_in_set查询")
+    @TableField("person_ids")
+    private String personIds;
+
+
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java
index b4c2140..745cad0 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsEvaluate.java
@@ -10,6 +10,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -39,10 +40,13 @@
     @ApiModelProperty(value = "用户id")
     @TableField("app_user_id")
     private Long appUserId;
+    @ApiModelProperty(value = "订单id")
+    @TableField("order_id")
+    private Long orderId;
 
     @ApiModelProperty(value = "评分")
     @TableField("grade")
-    private Integer grade;
+    private BigDecimal grade;
 
     @ApiModelProperty(value = "评价内容")
     @TableField("comment")
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Technician.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Technician.java
index 5fe3b42..1b6834c 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Technician.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Technician.java
@@ -7,6 +7,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -73,6 +74,12 @@
     @ApiModelProperty(value = "添加时间")
     @TableField("create_time")
     private LocalDateTime createTime;
+    @ApiModelProperty("服务次数")
+    @TableField(exist = false)
+    private Integer serveCount;
+    @ApiModelProperty("平均分")
+    @TableField(exist = false)
+    private BigDecimal grade;
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/IndexConfigSetDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/IndexConfigSetDto.java
new file mode 100644
index 0000000..00a8f45
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/IndexConfigSetDto.java
@@ -0,0 +1,23 @@
+package com.ruoyi.other.api.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class IndexConfigSetDto {
+    @ApiModelProperty("公司理念")
+    private String companyWant;
+    @ApiModelProperty("宣传图片1")
+    private String pic1;
+    @ApiModelProperty("跳转类型1 - 1无2外部链接3商品详情4秒杀商品详情5领卷中心")
+    private Integer direct1;
+    @ApiModelProperty("宣传图片2")
+    private String pic2;
+    @ApiModelProperty("跳转类型2 - 1无2外部链接3商品详情4秒杀商品详情5领卷中心")
+    private String direct2;
+    @ApiModelProperty("公司简介")
+    private String companyInfo;
+
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java
new file mode 100644
index 0000000..8a955a1
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponClientFallbackFactory.java
@@ -0,0 +1,28 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.api.domain.GoodsVip;
+import com.ruoyi.other.api.feignClient.CouponClient;
+import com.ruoyi.other.api.feignClient.GoodsVipClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/27 20:29
+ */
+public class CouponClientFallbackFactory implements FallbackFactory<CouponClient> {
+	
+	
+	@Override
+	public CouponClient create(Throwable cause) {
+		return new CouponClient() {
+
+
+			@Override
+			public R<CouponInfo> detail(Integer id) {
+				return R.fail("查看优惠券详情失败:" + cause.getMessage());
+			}
+		};
+	}
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderFallbackFactory.java
new file mode 100644
index 0000000..762b040
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OrderFallbackFactory.java
@@ -0,0 +1,39 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ExchangeBackDto;
+import com.ruoyi.common.core.dto.ExchangeDto;
+
+import com.ruoyi.other.api.feignClient.OrderClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 充电订单服务降级处理
+ * 
+ * @author ruoyi
+ */
+@Component
+public class OrderFallbackFactory implements FallbackFactory<OrderClient>
+{
+    private static final Logger log = LoggerFactory.getLogger(OrderFallbackFactory.class);
+
+
+    @Override
+    public OrderClient create(Throwable cause) {
+        log.error("商品订单调用失败:{}", cause.getMessage());
+        return new OrderClient() {
+
+
+            @Override
+            public R getOrderIdsByTechId(Integer id) {
+                return R.fail("根据技师id查订单ids失败:" + cause.getMessage());
+            }
+
+        };
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/StoreFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/StoreFallbackFactory.java
new file mode 100644
index 0000000..5c2081e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/StoreFallbackFactory.java
@@ -0,0 +1,35 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.Shop;
+import com.ruoyi.other.api.feignClient.OrderClient;
+import com.ruoyi.other.api.feignClient.StoreClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * 充电订单服务降级处理
+ * 
+ * @author ruoyi
+ */
+@Component
+public class StoreFallbackFactory implements FallbackFactory<StoreClient>
+{
+    private static final Logger log = LoggerFactory.getLogger(StoreFallbackFactory.class);
+
+
+    @Override
+    public StoreClient create(Throwable cause) {
+        log.error("商品订单调用失败:{}", cause.getMessage());
+        return new StoreClient() {
+
+
+            @Override
+            public R<Shop> getStoreById(Long id) {
+                return R.fail("根据门店id查询详情:" + cause.getMessage());
+            }
+        };
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
new file mode 100644
index 0000000..135b501
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
@@ -0,0 +1,28 @@
+package com.ruoyi.other.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.api.domain.GoodsArea;
+import com.ruoyi.other.api.domain.GoodsVip;
+import com.ruoyi.other.api.factory.CouponClientFallbackFactory;
+import com.ruoyi.other.api.factory.GoodsVipClientFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/11/28 9:42
+ */
+@FeignClient(contextId = "GoodsVipClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = CouponClientFallbackFactory.class)
+public interface CouponClient {
+
+
+    @PostMapping("/coupon-info/detail")
+    R<CouponInfo> detail(@RequestParam("id") Integer id);
+	
+	
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderClient.java
new file mode 100644
index 0000000..75929d3
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OrderClient.java
@@ -0,0 +1,24 @@
+package com.ruoyi.other.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ExchangeBackDto;
+import com.ruoyi.common.core.dto.ExchangeDto;
+
+import com.ruoyi.other.api.factory.OrderFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 后台订单服务
+ * @author ruoyi
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = OrderFallbackFactory.class)
+public interface OrderClient {
+    @PostMapping(value = "/management/give/vip")
+    public R<List<Long>> getOrderIdsByTechId(@RequestParam("id") Integer id);
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/StoreClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/StoreClient.java
new file mode 100644
index 0000000..79cc539
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/StoreClient.java
@@ -0,0 +1,24 @@
+package com.ruoyi.other.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.Shop;
+import com.ruoyi.other.api.factory.OrderFallbackFactory;
+import com.ruoyi.other.api.factory.StoreFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 后台订单服务
+ * @author ruoyi
+ */
+@FeignClient(contextId = "StoreClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = StoreFallbackFactory.class)
+public interface StoreClient {
+    @PostMapping(value = "/shop/getDetailById")
+    public R<Shop> getStoreById(@RequestParam("id") Long id);
+
+
+}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index c443059..53ed3c5 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -14,7 +14,6 @@
 import com.ruoyi.common.core.utils.ip.IpUtils;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.system.api.RemoteUserService;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.model.LoginUser;
 
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java
index a3220ef..2d674db 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java
@@ -4,6 +4,8 @@
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.api.model.SysOperLog;
 import org.apache.commons.lang3.ArrayUtils;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
@@ -27,7 +29,7 @@
 import com.ruoyi.common.log.filter.PropertyPreExcludeFilter;
 import com.ruoyi.common.log.service.AsyncLogService;
 import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.system.api.domain.SysOperLog;
+
 
 /**
  * 操作日志记录处理
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java
index e44b648..3b712b3 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java
@@ -1,11 +1,10 @@
 package com.ruoyi.common.log.service;
 
-import org.springframework.beans.factory.annotation.Autowired;
+import com.ruoyi.system.api.model.SysOperLog;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.system.api.RemoteLogService;
-import com.ruoyi.system.api.domain.SysOperLog;
+
 
 import javax.annotation.Resource;
 
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/DictUtils.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/DictUtils.java
deleted file mode 100644
index 8282fdc..0000000
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/DictUtils.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.ruoyi.common.security.utils;
-
-import java.util.Collection;
-import java.util.List;
-import com.alibaba.fastjson2.JSONArray;
-import com.ruoyi.common.core.constant.CacheConstants;
-import com.ruoyi.common.core.utils.SpringUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.system.api.domain.SysDictData;
-
-/**
- * 字典工具类
- * 
- * @author ruoyi
- */
-public class DictUtils
-{
-    /**
-     * 设置字典缓存
-     * 
-     * @param key 参数键
-     * @param dictDatas 字典数据列表
-     */
-    public static void setDictCache(String key, List<SysDictData> dictDatas)
-    {
-        SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas);
-    }
-
-    /**
-     * 获取字典缓存
-     * 
-     * @param key 参数键
-     * @return dictDatas 字典数据列表
-     */
-    public static List<SysDictData> getDictCache(String key)
-    {
-        JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(key));
-        if (StringUtils.isNotNull(arrayCache))
-        {
-            return arrayCache.toList(SysDictData.class);
-        }
-        return null;
-    }
-
-    /**
-     * 删除指定字典缓存
-     * 
-     * @param key 字典键
-     */
-    public static void removeDictCache(String key)
-    {
-        SpringUtils.getBean(RedisService.class).deleteObject(getCacheKey(key));
-    }
-
-    /**
-     * 清空字典缓存
-     */
-    public static void clearDictCache()
-    {
-        Collection<String> keys = SpringUtils.getBean(RedisService.class).keys(CacheConstants.SYS_DICT_KEY + "*");
-        SpringUtils.getBean(RedisService.class).deleteObject(keys);
-    }
-
-    /**
-     * 设置cache key
-     * 
-     * @param configKey 参数键
-     * @return 缓存键key
-     */
-    public static String getCacheKey(String configKey)
-    {
-        return CacheConstants.SYS_DICT_KEY + configKey;
-    }
-}
diff --git a/ruoyi-service/ruoyi-account/pom.xml b/ruoyi-service/ruoyi-account/pom.xml
index 4c62224..7e756da 100644
--- a/ruoyi-service/ruoyi-account/pom.xml
+++ b/ruoyi-service/ruoyi-account/pom.xml
@@ -117,6 +117,10 @@
             <version>2.6</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
index 32e001d..1c552ce 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -1,6 +1,25 @@
 package com.ruoyi.account.controller;
+import java.time.LocalDateTime;
 
 
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.UserCancellationLog;
+import com.ruoyi.account.service.AppUserService;
+import com.ruoyi.account.service.UserCancellationLogService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.Shop;
+import com.ruoyi.other.api.feignClient.StoreClient;
+import org.junit.Test;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import javax.annotation.Resource;
+import java.util.List;
 import com.ruoyi.account.api.model.AppUser;
 import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.vo.*;
@@ -27,15 +46,19 @@
 @Api(tags = {"登录注册-小程序"})
 @RestController
 @RequestMapping("/app-user")
-public class AppUserController extends BaseController {
-	
+public class AppUserController {
+
+
+
+	@Resource
+	private TokenService tokenService;
 	@Resource
 	private AppUserService appUserService;
-	
-	
-	
-	
-	
+	@Resource
+	private StoreClient storeClient;
+
+
+
 	@ResponseBody
 	@PostMapping("/appletLogin")
 	@ApiOperation(value = "小程序一键登录")
@@ -59,17 +82,17 @@
 	public R getSMSCode(@RequestBody SMSCode smsCode){
 		return appUserService.getSMSCode(smsCode);
 	}
-	
-	
-	
+
+
+
 	@ResponseBody
 	@PostMapping("/registerAccount")
 	@ApiOperation(value = "注册新账号")
 	public R<LoginVo> registerAccount(@RequestBody RegisterAccount registerAccount){
 		return appUserService.registerAccount(registerAccount);
 	}
-	
-	
+
+
 	@ResponseBody
 	@GetMapping("/getReferrer/{id}")
 	@ApiOperation(value = "获取推荐人信息")
@@ -82,9 +105,9 @@
 		phone = phone.substring(0, 3) + "****" + phone.substring(7);
 		return R.ok(appUser.getName() + "-" + phone);
 	}
-	
-	
-	
+
+
+
 	@ResponseBody
 	@GetMapping("/getNearbyReferrer")
 	@ApiOperation(value = "获取附近推荐人列表")
@@ -93,10 +116,76 @@
 		List<NearbyReferrerVo> list = appUserService.getNearbyReferrer(nearbyReferrer);
 		return getDataTable(list);
 	}
-	
-	
-	
-	
-	
+
+
+	@ResponseBody
+	@PostMapping("/info")
+	@ApiOperation(value = "我的资料", tags = {"小程序-个人中心首页-我的资料"})
+	public R<AppUser> info(){
+		Long userId = tokenService.getLoginUserApplet().getUserid();
+		AppUser user = appUserService.getById(userId);
+		return R.ok(user);
+	}
+   @Resource
+   private UserCancellationLogService userCancellationLogService;
+
+	@ResponseBody
+	@PostMapping("/unregis")
+	@ApiOperation(value = "注销", tags = {"小程序-个人中心首页-我的资料"})
+	public R unregis(){
+		Long userId = tokenService.getLoginUserApplet().getUserid();
+		AppUser user = appUserService.getById(userId);
+
+		//添加注销记录
+		UserCancellationLog userCancellationLog = new UserCancellationLog();
+		userCancellationLog.setAppUserId(user.getId());
+		userCancellationLog.setVipId(user.getVipId());
+		userCancellationLogService.save(userCancellationLog);
+
+
+		return R.ok();
+	}
+
+
+    @PostMapping("/index")
+	@ApiOperation(value = "个人中心首页", tags = {"小程序-个人中心首页"})
+	public R<AppUser> index(){
+        System.err.println("=-====");
+        Long userId = tokenService.getLoginUserApplet().getUserid();
+		//当前用户信息
+		AppUser user = appUserService.getById(userId);
+		//当前用户的推荐人信息
+		if (user.getInviteUserId()!=null){
+			AppUser inviteUser = appUserService.getById(user.getInviteUserId());
+			user.setInviteUserName(inviteUser.getName());
+		}
+		//当前绑定门店的店铺信息
+		if (user.getShopId()!=null){
+			R<Shop> storeById = storeClient.getStoreById(user.getShopId());
+			if (storeById.getData()!=null){
+				user.setShopName(storeById.getData().getName());
+			}
+		}
+		Long count1 = appUserService.lambdaQuery().eq(AppUser::getVipId, 1).eq(AppUser::getTopInviteId, 1).count();
+		Long count2 = appUserService.lambdaQuery().eq(AppUser::getVipId, 2).eq(AppUser::getTopInviteId, userId).count();
+		Long count3 = appUserService.lambdaQuery().eq(AppUser::getVipId, 3).eq(AppUser::getTopInviteId, userId).count();
+		Long count4 = appUserService.lambdaQuery().eq(AppUser::getVipId, 4).eq(AppUser::getTopInviteId, userId).count();
+		Long count5 = appUserService.lambdaQuery().eq(AppUser::getVipId, 5).eq(AppUser::getTopInviteId, userId).count();
+		Long count6 = appUserService.lambdaQuery().eq(AppUser::getVipId, 6).eq(AppUser::getTopInviteId, userId).count();
+		Long count7 = appUserService.lambdaQuery().eq(AppUser::getVipId, 7).eq(AppUser::getTopInviteId, userId).count();
+		user.setCount1(count1);
+		user.setCount2(count2);
+		user.setCount3(count3);
+		user.setCount4(count4);
+		user.setCount5(count5);
+		user.setCount6(count6);
+		user.setCount7(count7);
+		return R.ok(user);
+
+
+	}
+
+
+
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
index c0c0621..8abf416 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
@@ -9,6 +9,16 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.account.service.UserAddressService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.service.TokenService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -24,6 +34,9 @@
 	
 	@Resource
 	private UserAddressService userAddressService;
+	
+	@Resource
+	private TokenService tokenService;
 	
 	
 	/**
@@ -45,5 +58,47 @@
 		return R.ok(userAddress);
 	}
 
+    
+    @ResponseBody
+    @PostMapping("/add")
+    @ApiOperation(value = "添加", tags = {"小程序-个人中心首页-我的地址"})
+    public R add(@RequestBody UserAddress userAddress){
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        userAddress.setAppUserId(userId);
+        userAddressService.save(userAddress);
+        return R.ok();
+    }
+    @ResponseBody
+    @PostMapping("/edit")
+    @ApiOperation(value = "编辑", tags = {"小程序-个人中心首页-我的地址"})
+    public R edit(@RequestBody UserAddress userAddress){
+        userAddressService.updateById(userAddress);
+        return R.ok();
+    }
+    @ResponseBody
+    @PostMapping("/delete")
+    @ApiOperation(value = "删除", tags = {"小程序-个人中心首页-我的地址"})
+    public R edit(@RequestParam Integer id){
+        userAddressService.removeById(id);
+        return R.ok();
+    }
+
+    @ResponseBody
+    @PostMapping("/set")
+    @ApiOperation(value = "设为默认", tags = {"小程序-个人中心首页-我的地址"})
+    public R set(@RequestParam Integer id){
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        List<UserAddress> list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).list();
+        for (UserAddress userAddress : list) {
+            userAddress.setIsDefault(0);
+        }
+        userAddressService.updateBatchById(list);
+
+        UserAddress byId = userAddressService.getById(id);
+        byId.setIsDefault(1);
+        userAddressService.updateById(byId);
+        return R.ok();
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
index 5f62eed..003c5b0 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -1,6 +1,17 @@
 package com.ruoyi.account.controller;
+import java.math.BigDecimal;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.UserCoupon;
+import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.vo.CouponInfoVo;
+import com.ruoyi.account.service.AppUserService;
+import com.ruoyi.account.service.UserCouponService;
+import com.ruoyi.account.service.UserPointService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.account.api.vo.CouponInfoVo;
 import com.ruoyi.account.api.vo.PaymentUserCoupon;
 import com.ruoyi.account.service.UserCouponService;
@@ -10,6 +21,16 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.Banner;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.api.feignClient.CouponClient;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -22,9 +43,99 @@
 @RestController
 @RequestMapping("/user-coupon")
 public class UserCouponController {
+    @Resource
+    private UserCouponService userCouponService;
+    @Resource
+    private TokenService tokenService;
 
-	@Resource
-	private UserCouponService userCouponService;
+    @Resource
+    private CouponClient couponClient;
+    @Resource
+    private AppUserService appUserService;
+
+    @Resource
+    private UserPointService userPointService;
+
+
+
+
+    @PostMapping("/mine/list")
+    @ApiOperation(value = "已领取列表", tags = {"小程序-个人中心-优惠劵"})
+    public R<Page<UserCoupon>> minelist(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @ApiParam("1未使用2已使用3已过期") Integer status) {
+        Long userid = tokenService.getLoginUserApplet().getUserid();
+        Page<UserCoupon> page = userCouponService.lambdaQuery()
+                .isNull(status!=null&&(status==1||status==3),UserCoupon::getUseTime)
+                .isNotNull(status!=null&&status==2,UserCoupon::getUseTime)
+                .lt(status!=null&&status==3,UserCoupon::getEndTime, LocalDateTime.now())
+                .eq(UserCoupon::getAppUserId, userid).page(Page.of(pageNum, pageSize));
+        for (UserCoupon record : page.getRecords()) {
+            CouponInfo data = couponClient.detail(record.getCouponId()).getData();
+            CouponInfoVo vo = new CouponInfoVo();
+            BeanUtils.copyProperties(data,vo);
+            record.setCouponInfoVo(vo);
+            if (record.getUseTime()==null){
+                record.setStatus(1);
+                if (record.getEndTime().isBefore(LocalDateTime.now())){
+                    record.setStatus(3);
+                }
+            }else {
+                record.setStatus(2);
+            }
+        }
+        return R.ok(page);
+    }
+
+
+    @PostMapping("/get")
+    @ApiOperation(value = "领取或者兑换优惠券", tags = {"小程序-个人中心-优惠劵"})
+    public R<Page<UserCoupon>> get(@RequestParam Integer couponId) {
+
+        Long userid = tokenService.getLoginUserApplet().getUserid();
+        AppUser byId = appUserService.getById(userid);
+
+        CouponInfo data = couponClient.detail(couponId).getData();
+        //检验当前优惠券是否存在
+        if (data==null){
+            return  R.fail("当前优惠券不存在,请刷新后重试");
+        }
+        if (data.getSendType()!=1&&byId.getLavePoint().compareTo(data.getNeedPoint())==-1){
+           return  R.fail("当前积分不足,兑换失败");
+        }
+        //检验发放时间
+        LocalDateTime now = LocalDateTime.now();
+        if (now.isBefore(data.getSendStartTime())||now.isAfter(data.getSendEndTime())){
+            return R.fail("领取失败,不在发放有效期");
+        }
+        //如果是积分兑换,增加积分的历史记录
+        if (data.getSendType()!=1){
+            UserPoint userPoint = new UserPoint();
+            userPoint.setType(4);
+            userPoint.setHistoricalPoint(byId.getLavePoint());
+            userPoint.setVariablePoint(data.getNeedPoint());
+            userPoint.setAppUserId(userid);
+            userPoint.setObjectId(Long.valueOf(data.getId()));
+            userPointService.save(userPoint);
+            //扣除积分
+            byId.setLavePoint(byId.getLavePoint().subtract(userPoint.getVariablePoint()));
+            appUserService.updateById(byId);
+        }
+        //增加优惠券记录,根据时间类型设置开始结束时间
+        UserCoupon userCoupon = new UserCoupon();
+        userCoupon.setAppUserId(userid);
+        if (data.getPeriodType()==1) {
+            userCoupon.setStartTime(data.getPeriodStartTime());
+            userCoupon.setEndTime(data.getPeriodEndTime());
+        }else {
+            userCoupon.setStartTime(now);
+            userCoupon.setEndTime(now.plusDays(data.getPeriodDays()));
+        }
+        userCoupon.setCouponId(data.getId());
+        userCouponService.save(userCoupon);
+        return R.ok();
+
+
+    }
+
 	
 	
 	/**
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
new file mode 100644
index 0000000..2482d4a
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
@@ -0,0 +1,44 @@
+package com.ruoyi.account.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-06
+ */
+public interface TAppUserService extends IService<TAppUser> {
+
+    /**
+     * 微信小程序登录用户封装
+     * @param appletUserDecodeData
+     * @return
+     */
+    Map<String, Object> wxLogin(AppletUserDecodeData appletUserDecodeData,Long inviteUserId);
+
+    /**
+     * 支付宝小程序登录用户封装
+     * @param response
+     * @return
+     */
+//    Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserInfoShareResponse userInfo);
+    Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,String phone,Long inviteUserId);
+
+    /**
+     * 封装用户信息和token
+     * @param appUser
+     * @return
+     */
+    Map<String, Object> getUserInfo(TAppUser appUser);
+
+    /**
+     * 账号判断
+     * @param status
+     */
+    public void throwInfo(Integer status);
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java
index d8785a1..5fe3a69 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BannerController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.other.controller;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.other.api.domain.Banner;
@@ -8,10 +9,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.ibatis.annotations.Param;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -39,6 +37,40 @@
                 .list();
         return R.ok(list);
     }
+    @PostMapping("/add")
+	@ApiOperation(value = "添加", tags = {"后台-广告管理-banner管理"})
+	public R add(@RequestBody Banner banner){
+            bannerService.save(banner);
+            return R.ok();
+      }
+      @PostMapping("/delete")
+	@ApiOperation(value = "删除", tags = {"后台-广告管理-banner管理"})
+	public R delete(@RequestParam Integer id){
+            bannerService.removeById(id);
+            return R.ok();
+      }
+      @PostMapping("/edit")
+	@ApiOperation(value = "修改", tags = {"后台-广告管理-banner管理"})
+	public R edit(@RequestBody Banner banner){
+            bannerService.updateById(banner);
+            return R.ok();
+      }
+      @PostMapping("/detail")
+	@ApiOperation(value = "详情", tags = {"后台-广告管理-banner管理"})
+	public R detail(@RequestParam Integer id){
+          Banner byId = bannerService.getById(id);
+          return R.ok(byId);
+      }
+      @PostMapping("/page/list")
+	@ApiOperation(value = "列表", tags = {"后台-广告管理--banner"})
+	public R<Page<Banner>> pagelist(String name, Integer jumpType, Integer position,Integer pageNum,Integer pageSize){
+          Page<Banner> page = bannerService.lambdaQuery().like(StringUtils.isNotEmpty(name), Banner::getName, name)
+                  .eq(Banner::getJumpType, jumpType)
+                  .eq(Banner::getPosition, position)
+                  .page(Page.of(pageNum, pageSize));
+          return R.ok(page);
+    }
+
 
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
index 75f6893..6c9c0cd 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -1,12 +1,29 @@
 package com.ruoyi.other.controller;
 
 
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.Banner;
+import com.ruoyi.other.api.domain.CouponInfo;
+import com.ruoyi.other.service.CouponInfoService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.CouponInfo;
 import com.ruoyi.other.service.CouponInfoService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -20,9 +37,52 @@
 @RestController
 @RequestMapping("/coupon-info")
 public class CouponInfoController {
+    @Resource
+    private CouponInfoService couponInfoService;
+    @Resource
+    private TokenService tokenService;
+    @Resource
+    private AppUserClient appUserClient;
+    //查看详情
+    @PostMapping("/detail")
+    @ApiOperation(value = "详情", tags = {"后台-优惠劵"})
+    public R<CouponInfo> detail(@RequestParam("id") Integer id){
+        CouponInfo byId = couponInfoService.getById(id);
+        return R.ok(byId);
+    }
 
-	@Resource
-	private CouponInfoService couponInfoService;
+
+    @PostMapping("/gift/list")
+    @ApiOperation(value = "待领取列表", tags = {"小程序-个人中心-优惠劵"})
+    public R<List<CouponInfo>> giftlist(){
+        Long userid = tokenService.getLoginUserApplet().getUserid();
+        AppUser appUserById = appUserClient.getAppUserById(userid);
+        LocalDateTime now = LocalDateTime.now();
+        //查出全部可领取的优惠劵
+        List<CouponInfo> list = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 1).list();
+        //查出指定人员可领取优惠券
+        List<CouponInfo> list1 = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 2).apply("FIND_IN_SET('" + appUserById.getId() + "', person_ids)").list();
+        //查出指定会员可领取优惠劵
+        List<CouponInfo> list2 = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 3).apply("FIND_IN_SET('" + appUserById.getVipId() + "', person_ids)").list();
+        List<CouponInfo> returnList=  new ArrayList<>();
+        count(userid, list, returnList);
+        count(userid, list1, returnList);
+        count(userid, list2, returnList);
+
+
+        return R.ok(returnList);
+    }
+
+    private void count(Long userid, List<CouponInfo> list1, List<CouponInfo> returnList) {
+        for (CouponInfo couponInfo : list1) {
+            Long count = appUserClient.getCouponCount(userid, couponInfo.getId()).getData();
+            couponInfo.setMaxNum(couponInfo.getMaxNum()-count.intValue());
+            for (int i = 0; i < couponInfo.getMaxNum(); i++) {
+                returnList.add(couponInfo);
+            }
+        }
+    }
+
 	
 	
 	/**
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java
index c60de73..3f1dfcc 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java
@@ -4,11 +4,17 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.GoodsCategory;
 import com.ruoyi.other.service.GoodsCategoryService;
+import io.swagger.annotations.ApiOperation;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.GoodsCategory;
+import com.ruoyi.other.service.GoodsCategoryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -28,6 +34,16 @@
     @Resource
     private GoodsCategoryService goodsCategoryService;
 
+    @PostMapping("/index/list")
+	@ApiOperation(value = "商品分类", tags = {"小程序-首页"})
+	public R<List<GoodsCategory>> indexlist(){
+        List<GoodsCategory> indexlist = goodsCategoryService.lambdaQuery()
+                .orderByDesc(GoodsCategory::getCreateTime)
+                .last("limit 8")
+                .list()
+                ;
+        return R.ok(indexlist);
+    }
     @GetMapping("/list")
     @ApiOperation(value = "商品分类列表", tags = {"小程序-商城-商城-首页-筛选"})
     public R<List<GoodsCategory>> list(){
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
index 9ff7b15..2751b13 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -11,6 +11,10 @@
 import com.ruoyi.other.enums.ShopStatus;
 import com.ruoyi.other.service.ShopService;
 import com.ruoyi.other.service.TechnicianService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.*;
 import com.ruoyi.other.vo.NearbyShopVO;
 import com.ruoyi.other.vo.ShopDetailVO;
 import com.ruoyi.other.vo.VerifiableShopVo;
@@ -39,6 +43,14 @@
     @Resource
     private AppUserClient appUserClient;
 
+
+    @PostMapping("/getDetailById")
+    public R<Shop> getDetailById(@RequestParam("id") Long id){
+        Shop byId = shopService.getById(id);
+        return R.ok(byId);
+    }
+
+
     /**
      * 附近门店列表
      */
@@ -52,6 +64,15 @@
     /**
      * 门店详情
      */
+    @GetMapping("/technicianList")
+    @ApiOperation(value = "技师列表", tags = {"技师列表-小程序"})
+    public AjaxResult technicianList(@ApiParam("门店id") @RequestParam String shopId){
+        return success(technicianService.list(new LambdaQueryWrapper<Technician>()
+                .eq(Technician::getShopId,shopId)
+                .eq(Technician::getStatus,2)
+                .eq(Technician::getSubscribeStatus,1)));
+    }
+
     @GetMapping("/shopDetail")
     @ApiOperation(value = "门店详情", tags = {"小程序-首页-门店详情"})
     public R<ShopDetailVO> shopDetail(@ApiParam("门店id") @RequestParam Integer shopId,
@@ -83,9 +104,9 @@
         appUserClient.editAppUserById(appUser);
         return R.ok();
     }
-    
-    
-    
+
+
+
     @ResponseBody
     @GetMapping("/getVerifiableShop")
     @ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"})
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java
index 5ae1bc6..53ff538 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SystemConfigController.java
@@ -1,14 +1,19 @@
 package com.ruoyi.other.controller;
 
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.SystemConfig;
+import com.ruoyi.other.api.dto.IndexConfigSetDto;
 import com.ruoyi.other.service.SystemConfigService;
 import org.springframework.web.bind.annotation.*;
 import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
 import io.swagger.annotations.ApiOperation;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -23,11 +28,28 @@
 public class SystemConfigController {
     @Resource
     private SystemConfigService systemConfigService;
-    @GetMapping("/byType")
-	@ApiOperation(value = "1=启动页管理,2=首页配置,3=订单包邮设置", tags = {"小程序-启动页面","小程序-首页","订单包邮配置"})
-	public R<SystemConfig> byType(Integer type){
-        SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, type).last("limit 1").one();
-        return R.ok(one);
+    @PostMapping("/index/add")
+	@ApiOperation(value = "添加", tags = {"后台-广告管理-首页配置"})
+	public R add(@RequestBody IndexConfigSetDto indexConfigSetDto){
+        //先删除type=2的数据
+        List<SystemConfig> list = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 2).list();
+        systemConfigService.removeBatchByIds(list);
+        SystemConfig  systemConfig = new SystemConfig();
+        systemConfig.setType(2);
+        systemConfig.setContent(JSON.toJSONString(indexConfigSetDto));
+        systemConfigService.save(systemConfig);
+        return R.ok();
+      }
+    @PostMapping("/index/detail")
+	@ApiOperation(value = "宣传图片-公司简介", tags = {"后台-广告管理-首页配置","小程序-首页"})
+	public R<IndexConfigSetDto> detail(){
+        SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, 2).one();
+        if (one==null){
+            return R.ok();
+        }
+        IndexConfigSetDto indexConfigSetDto = JSONObject.parseObject(one.getContent(), IndexConfigSetDto.class);
+        return R.ok(indexConfigSetDto);
+
     }
 	
 	
@@ -42,5 +64,6 @@
 		SystemConfig one = systemConfigService.lambdaQuery().eq(SystemConfig::getType, type).last("limit 1").one();
 		return R.ok(one);
 	}
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
index e7ff8cd..63bc187 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
@@ -1,6 +1,23 @@
 package com.ruoyi.other.controller;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.GoodsEvaluate;
+import com.ruoyi.other.api.domain.Technician;
+import com.ruoyi.other.api.domain.TechnicianSubscribe;
+import com.ruoyi.other.api.feignClient.OrderClient;
+import com.ruoyi.other.service.GoodsEvaluateService;
+import com.ruoyi.other.service.TechnicianService;
+import com.ruoyi.other.service.TechnicianSubscribeService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.other.service.TechnicianService;
@@ -26,9 +43,73 @@
  */
 @RestController
 @RequestMapping("/technician")
-public class TechnicianController extends BaseController {
+public class TechnicianController {
     @Resource
     private TechnicianService technicianService;
+    @Resource
+    private GoodsEvaluateService goodsEvaluateService;
+    @Resource
+    private OrderClient orderClient;
+    @Resource
+    private TechnicianSubscribeService technicianSubscribeService;
+    @Resource
+    private TokenService tokenService;
+        @PostMapping("/shop/list")
+	@ApiOperation(value = "获取门店的技师列表", tags = {"小程序-门店详情-技师预约"})
+	public R<Page<Technician>> shoplist(@RequestParam Integer shopId,@RequestParam Integer pageNum,@RequestParam Integer pageSize){
+            //查出技师列表
+            Page<Technician> page = technicianService.lambdaQuery().eq(Technician::getShopId, shopId).eq(Technician::getStatus, 2).page(Page.of(pageNum, pageSize));
+            for (Technician technician : page.getRecords()) {
+            //查出技师订单
+                R<List<Long>> orderIdsByTechId = orderClient.getOrderIdsByTechId(technician.getId());
+                if (orderIdsByTechId.getData().isEmpty()){
+                    technician.setGrade(new BigDecimal(0));
+                    technician.setServeCount(0);
+                    continue;
+                }
+                //查出技师评价
+                List<GoodsEvaluate> list = goodsEvaluateService.lambdaQuery().in(GoodsEvaluate::getOrderId, orderIdsByTechId.getData()).list();
+
+                //算出平均分并保留一位小数
+                BigDecimal avg = list.stream().map(GoodsEvaluate::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(list.size()), 1, BigDecimal.ROUND_HALF_UP);
+                technician.setGrade(avg);
+                technician.setServeCount(orderIdsByTechId.getData().size());
+
+                 }
+            return R.ok(page);
+        }
+
+                @PostMapping("/shop/detail")
+	            @ApiOperation(value = "获取门店的技师详情", tags = {"小程序-门店详情-技师预约"})
+	            public R<Technician> shopdetail(@RequestParam Integer techId){
+                //查出技师列表
+                   Technician technician = technicianService.getById(techId);
+
+                 //查出技师订单
+                R<List<Long>> orderIdsByTechId = orderClient.getOrderIdsByTechId(technician.getId());
+                if (orderIdsByTechId.getData().isEmpty()){
+                    technician.setGrade(new BigDecimal(0));
+                    technician.setServeCount(0);
+                    return R.ok(technician);
+                }
+                //查出技师评价
+                List<GoodsEvaluate> list = goodsEvaluateService.lambdaQuery().in(GoodsEvaluate::getOrderId, orderIdsByTechId.getData()).list();
+
+                //算出平均分并保留一位小数
+                BigDecimal avg = list.stream().map(GoodsEvaluate::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(list.size()), 1, BigDecimal.ROUND_HALF_UP);
+                technician.setGrade(avg);
+                technician.setServeCount(orderIdsByTechId.getData().size());
+                    return R.ok(technician);
+                 }
+           @PostMapping("/shop/tech")
+	      @ApiOperation(value = "预约操作", tags = {"小程序-门店详情-技师预约"})
+	      public R<Technician> shoptech(@RequestBody TechnicianSubscribe subscribe){
+               Long userId = tokenService.getLoginUserApplet().getUserId();
+                subscribe.setAppUserId(userId);
+                technicianSubscribeService.save(subscribe);
+                return R.ok();
+           }
+
 
     /**
      * 指定门店技师列表
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java
index b072ab6..9b6010f 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java
@@ -73,5 +73,16 @@
         return R.ok();
     }
 
+
+    @GetMapping("/home/list")
+    @ApiOperation(value = "列表", notes = "列表", tags = {"小程序-个人中心-我的预约"})
+    public TableDataInfo homelist(@ApiParam(value = "状态 0=待服务,1=已服务,2=已取消 4 已到期") @RequestParam Integer status){
+        startPage();
+        List<TechnicianSubscribeVO> list = technicianSubscribeService
+                .getTechnicianSubscribeByUser(SecurityUtils.getUserId(),status);
+        return getDataTable(list);
+    }
+
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java
index 82d8443..5543b93 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java
@@ -1,6 +1,12 @@
 package com.ruoyi.other.controller;
 
 
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.VipSetting;
+import com.ruoyi.other.service.VipSettingService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.VipSetting;
 import com.ruoyi.other.service.VipSettingService;
@@ -10,6 +16,9 @@
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
 
 import javax.annotation.Resource;
 
@@ -27,6 +36,13 @@
 public class VipSettingController {
     @Resource
     private VipSettingService vipSettingService;
+    @PostMapping("/info")
+    @ApiOperation(value = "获取各级会员信息", tags = {"小程序-个人中心首页"})
+    public R<List<VipSetting>> info(){
+        List<VipSetting> list = vipSettingService.list();
+        return R.ok(list);
+    }
+
 
     @GetMapping("getVipSettingById")
     @ApiOperation(value = "获取会员设置")
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java
index 372bfbb..b3a3294 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java
@@ -24,4 +24,6 @@
      */
     public List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(@Param("userId") Long userId,
                                                                            @Param("shopId") Long shopId);
+    public List<TechnicianSubscribeVO> getTechnicianSubscribeByUser(@Param("userId") Long userId,
+                                                                           @Param("status") Integer status);
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java
index f2e2555..b31e9a0 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java
@@ -20,6 +20,7 @@
      * 查询用于指定门店的相关预约记录
      */
     List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long userId, Long shopId);
+    List<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Long userId, Integer status);
 
     void subscribe(TechnicianSubscribe technicianSubscribe);
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java
index e1434cb..3220f8c 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java
@@ -37,6 +37,10 @@
     public List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long userId, Long shopId) {
         return technicianSubscribeMapper.getTechnicianSubscribeByUserAndShop(userId, shopId);
     }
+    @Override
+    public List<TechnicianSubscribeVO> getTechnicianSubscribeByUser(Long userId, Integer status) {
+        return technicianSubscribeMapper.getTechnicianSubscribeByUser(userId, status);
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/TechnicianSubscribeVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/TechnicianSubscribeVO.java
index 699342d..1ec6886 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/TechnicianSubscribeVO.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/TechnicianSubscribeVO.java
@@ -49,6 +49,6 @@
     /**
      * 预约状态:0=待服务,1=已服务,2=已取消
      */
-    @ApiModelProperty(value = "预约状态:0=待服务,1=已服务,2=已取消")
+    @ApiModelProperty(value = "预约状态:0=待服务,1=已服务,2=已取消 4 已到期")
     private Integer status;
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml
index df9a062..568c57a 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml
@@ -22,4 +22,35 @@
             AND tts.del_flag = 0
         ORDER BY tts.create_time DESC
     </select>
+
+    <select id="getTechnicianSubscribeByUser" resultType="com.ruoyi.other.vo.TechnicianSubscribeVO">
+        SELECT  * from (
+        SELECT
+            tts.user_address,
+            ts.`name` shopName,
+            ts.address shopAddress,
+            tt.name technicianName,
+            tts.subscribe_time,
+            tts.service_mode,
+        CASE
+        WHEN tts.subscribe_time lt; NOW()  THEN 4
+        ELSE tts.status
+        END AS status
+        FROM
+            t_technician_subscribe tts
+                LEFT JOIN t_technician tt ON tts.technician_id = tt.id AND tt.del_flag = 0
+                LEFT JOIN t_shop ts ON tt.shop_id = ts.id AND ts.del_flag = 0
+        WHERE
+            tts.app_user_id = #{userId}
+          AND tts.del_flag = 0
+        ORDER BY tts.create_time DESC
+
+        ) o
+        <where>
+           <if test="status !=null">
+               o.status = #{status}
+           </if>
+        </where>
+
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.7.1