From ead65cd9b15cd574f4e37c3376c7447efea53935 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期一, 09 九月 2024 20:27:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master-v2

---
 src/main/resources/application-local.yml                                        |    2 
 src/main/java/com/mzl/flower/service/supplier/SupplierService.java              |   15 +
 src/main/java/com/mzl/flower/dto/request/flower/FlowerBatchDTO.java             |   14 +
 src/main/java/com/mzl/flower/constant/Constants.java                            |   16 +
 src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java           |    3 
 src/main/java/com/mzl/flower/service/flower/FlowerService.java                  |  145 +++++++++++
 src/main/resources/application-prod.yml                                         |    2 
 src/main/java/com/mzl/flower/entity/flower/Flower.java                          |    4 
 src/main/java/com/mzl/flower/web/login/SupplierLoginController.java             |   13 +
 src/main/java/com/mzl/flower/web/customer/CustomerController.java               |   12 
 src/main/java/com/mzl/flower/entity/partner/Partner.java                        |    2 
 src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesQueryDTO.java    |    2 
 src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java         |    1 
 src/main/resources/mapper/flower/FlowerMapper.xml                               |   29 ++
 src/main/java/com/mzl/flower/web/login/CustomerLoginController.java             |   14 +
 src/main/java/com/mzl/flower/web/supplier/FlowerSupplierController.java         |   21 +
 src/main/resources/application-dev.yml                                          |    2 
 src/main/resources/mapper/customer/CustomerMapper.xml                           |    3 
 src/main/resources/mapper/payment/OrderItemSalesMapper.xml                      |    8 
 src/main/java/com/mzl/flower/service/flower/FlowerDeleteService.java            |   16 +
 src/main/java/com/mzl/flower/web/partner/PartnerController.java                 |    7 
 src/main/java/com/mzl/flower/entity/payment/OrderItemSales.java                 |    2 
 src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java               |    3 
 src/main/java/com/mzl/flower/service/impl/FlowerDeleteServiceImpl.java          |   20 +
 src/main/java/com/mzl/flower/service/partner/PartnerService.java                |   16 +
 src/main/java/com/mzl/flower/dto/response/supplier/SupplierDTO.java             |    3 
 src/main/resources/application-test.yml                                         |    2 
 src/main/java/com/mzl/flower/mapper/flower/FlowerMapper.java                    |    9 
 src/main/java/com/mzl/flower/service/customer/CustomerService.java              |   14 +
 src/main/resources/mapper/partner/PartnerMapper.xml                             |    3 
 src/main/java/com/mzl/flower/web/login/PartnerLoginController.java              |   13 +
 src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesCreateDTO.java   |    2 
 src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java             |    3 
 src/main/java/com/mzl/flower/dto/request/supplier/QuerySupplierDTO.java         |    3 
 src/main/java/com/mzl/flower/web/supplier/SupplierController.java               |    7 
 src/main/java/com/mzl/flower/dto/request/customer/QueryCustomerDTO.java         |    3 
 src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java |    5 
 src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierListDTO.java     |    3 
 src/main/java/com/mzl/flower/mapper/FlowerDeleteMapper.java                     |   16 +
 src/main/resources/mapper/flower/FlowerDeleteMapper.xml                         |   37 +++
 src/main/java/com/mzl/flower/entity/FlowerDeleteDO.java                         |  152 ++++++++++++
 src/main/java/com/mzl/flower/entity/supplier/Supplier.java                      |    2 
 src/main/resources/mapper/supplier/SupplierMapper.xml                           |    3 
 src/main/java/com/mzl/flower/entity/customer/Customer.java                      |    3 
 src/main/resources/application.yml                                              |   16 
 45 files changed, 647 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/mzl/flower/constant/Constants.java b/src/main/java/com/mzl/flower/constant/Constants.java
index 5e55cf9..bdfa1af 100644
--- a/src/main/java/com/mzl/flower/constant/Constants.java
+++ b/src/main/java/com/mzl/flower/constant/Constants.java
@@ -555,4 +555,20 @@
             return desc;
         }
     }
+    public enum after_sale_type {
+        barters("换货"),
+        returns("退货"),
+        ;
+
+        after_sale_type(String desc) {
+            this.desc = desc;
+        }
+
+        private String desc;
+
+        public String getDesc() {
+            return desc;
+        }
+    }
+
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/customer/QueryCustomerDTO.java b/src/main/java/com/mzl/flower/dto/request/customer/QueryCustomerDTO.java
index c8eaca9..7ee97d2 100644
--- a/src/main/java/com/mzl/flower/dto/request/customer/QueryCustomerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/customer/QueryCustomerDTO.java
@@ -28,4 +28,7 @@
 
     @ApiModelProperty(hidden = true)
     private String partnerUserId;
+
+    @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)")
+    private Integer isEnabled;
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/flower/FlowerBatchDTO.java b/src/main/java/com/mzl/flower/dto/request/flower/FlowerBatchDTO.java
new file mode 100644
index 0000000..318314b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/flower/FlowerBatchDTO.java
@@ -0,0 +1,14 @@
+package com.mzl.flower.dto.request.flower;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+public class FlowerBatchDTO {
+    @ApiModelProperty(value = "ids")
+    @NotNull(message = "传入的IDS不能为空")
+    private List<Long> ids;
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java b/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
index b83eb27..94cee52 100644
--- a/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
@@ -34,4 +34,7 @@
 
     @ApiModelProperty(value = "申请时间(yyyy-mm-dd)", hidden = true)
     private LocalDateTime createDateEnd;
+
+    @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)")
+    private Integer isEnabled;
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesCreateDTO.java b/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesCreateDTO.java
index c43c68e..c665e2d 100644
--- a/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesCreateDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesCreateDTO.java
@@ -23,4 +23,6 @@
     @ApiModelProperty(value = "理由")
     private String reason;
 
+    @ApiModelProperty(value = "售后类型")
+    private String salesType;
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesQueryDTO.java
index 4d23a14..63adac0 100644
--- a/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesQueryDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/payment/OrderItemSalesQueryDTO.java
@@ -67,4 +67,6 @@
 
     @ApiModelProperty(hidden = true)
     private LocalDateTime salesEndDate;
+
+    private String salesType;//售后类型
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/supplier/QuerySupplierDTO.java b/src/main/java/com/mzl/flower/dto/request/supplier/QuerySupplierDTO.java
index db948e4..aea17e6 100644
--- a/src/main/java/com/mzl/flower/dto/request/supplier/QuerySupplierDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/supplier/QuerySupplierDTO.java
@@ -29,4 +29,7 @@
 
     @ApiModelProperty(value = "申请时间(yyyy-mm-dd)", hidden = true)
     private LocalDateTime createDateEnd;
+
+    @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)")
+    private Integer isEnabled;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java b/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java
index fdb8747..25442ff 100644
--- a/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java
@@ -54,5 +54,8 @@
     @ApiModelProperty("更新时间")
     private LocalDateTime updateTime;
 
+    @ApiModelProperty("启用/禁用")
+    private Boolean isEnabled;
+
     private UserGrowthRecordDTO userGrowthRecord;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierListDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierListDTO.java
index b47226e..a433584 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierListDTO.java
@@ -47,4 +47,7 @@
     private String statusStr;
 
     private Integer realSales;//真实销量
+
+    @ApiModelProperty(value = "价格排序")
+    private Integer typeRank;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java b/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
index 9d292a0..f57ed7c 100644
--- a/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
@@ -64,4 +64,7 @@
 
     @ApiModelProperty("更新时间")
     private LocalDateTime updateTime;
+
+    @ApiModelProperty("启用/禁用")
+    private Boolean isEnabled;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java
index 26f7399..0a30d16 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java
@@ -96,4 +96,9 @@
 
     @ApiModelProperty(value = "审核时间")
     private LocalDateTime auditTime;
+
+    @ApiModelProperty(value = "售后类型")
+    @DictTrans(target = "salesTypeStr", codeType = "after_sale_type")
+    private String salesType;
+    private String salesTypeStr;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/supplier/SupplierDTO.java b/src/main/java/com/mzl/flower/dto/response/supplier/SupplierDTO.java
index 282f638..71fb6c8 100644
--- a/src/main/java/com/mzl/flower/dto/response/supplier/SupplierDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/supplier/SupplierDTO.java
@@ -93,4 +93,7 @@
 
     @ApiModelProperty("是否显示商品")
     private Boolean showed;
+
+    @ApiModelProperty("启用/禁用")
+    private Boolean isEnabled;
 }
diff --git a/src/main/java/com/mzl/flower/entity/FlowerDeleteDO.java b/src/main/java/com/mzl/flower/entity/FlowerDeleteDO.java
new file mode 100644
index 0000000..ca91623
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/FlowerDeleteDO.java
@@ -0,0 +1,152 @@
+package com.mzl.flower.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @author @TaoJie
+ * @since 2024-09-09
+ */
+@Data
+@Accessors(chain = true)
+@TableName("t_flower_delete")
+public class FlowerDeleteDO{
+
+    @TableId(value = "id")
+    private Long id;
+
+    @TableField("create_by")
+    private String createBy;
+
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @TableField("update_by")
+    private String updateBy;
+
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @TableField("deleted")
+    @TableLogic
+    private Boolean deleted;
+
+    /**
+     * 分类id
+     */
+    private Long category;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 颜色
+     */
+    private String color;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 封面
+     */
+    private String cover;
+
+    /**
+     * 轮播图
+     */
+    private String banners;
+
+    /**
+     * 视频
+     */
+    private String video;
+
+    /**
+     * 级别; FLOWER_LEVEL
+     */
+    private String level;
+
+    /**
+     * 所属供应商
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商价格
+     */
+    private BigDecimal price;
+
+    /**
+     * 库存
+     */
+    private Integer stock;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 标签
+     */
+    private String tags;
+
+    /**
+     * 审核意见
+     */
+    private String auditRemarks;
+
+    /**
+     * 审核时间
+     */
+    private LocalDateTime auditTime;
+
+    /**
+     * 是否显示
+     */
+    private Boolean shown;
+
+    /**
+     * 销量
+     */
+    private Integer sales;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 是否推荐
+     */
+    private Boolean recommend;
+
+    /**
+     * 真实销量
+     */
+    private Integer realSales;
+
+    /**
+     * 推荐排序
+     */
+    private Integer recommendRank;
+
+    /**
+     * 同类排名
+     */
+    private Integer typeRank;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/entity/customer/Customer.java b/src/main/java/com/mzl/flower/entity/customer/Customer.java
index 38dd158..a62cb78 100644
--- a/src/main/java/com/mzl/flower/entity/customer/Customer.java
+++ b/src/main/java/com/mzl/flower/entity/customer/Customer.java
@@ -6,7 +6,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.time.LocalDateTime;
 
 @Data
 @TableName("t_customer_info")
@@ -42,6 +41,8 @@
     @ApiModelProperty("店铺简介")
     private String description;
 
+    @ApiModelProperty("启用/禁用")
+    private Boolean isEnabled;
     @ApiModelProperty("等级id")
     private Long levelId;
 }
diff --git a/src/main/java/com/mzl/flower/entity/flower/Flower.java b/src/main/java/com/mzl/flower/entity/flower/Flower.java
index 6519511..2728d88 100644
--- a/src/main/java/com/mzl/flower/entity/flower/Flower.java
+++ b/src/main/java/com/mzl/flower/entity/flower/Flower.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.mzl.flower.base.BaseAutoEntity;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -76,4 +75,7 @@
     @TableField("recommend_rank")
     private Integer recommendRank;//推荐排序
 
+    @TableField("type_rank")
+    private Integer typeRank;//同类排序
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/mzl/flower/entity/partner/Partner.java b/src/main/java/com/mzl/flower/entity/partner/Partner.java
index 13fbb92..805f960 100644
--- a/src/main/java/com/mzl/flower/entity/partner/Partner.java
+++ b/src/main/java/com/mzl/flower/entity/partner/Partner.java
@@ -53,4 +53,6 @@
     @ApiModelProperty("推广二维码-设计后")
     private String codeUrl;
 
+    @ApiModelProperty("启用/禁用")
+    private Boolean isEnabled;
 }
diff --git a/src/main/java/com/mzl/flower/entity/payment/OrderItemSales.java b/src/main/java/com/mzl/flower/entity/payment/OrderItemSales.java
index 8ea8905..62d2cd4 100644
--- a/src/main/java/com/mzl/flower/entity/payment/OrderItemSales.java
+++ b/src/main/java/com/mzl/flower/entity/payment/OrderItemSales.java
@@ -69,4 +69,6 @@
     @TableField("refund_id")
     private String refundId;//退款id
 
+    private String salesType;//售后类型
+
 }
diff --git a/src/main/java/com/mzl/flower/entity/supplier/Supplier.java b/src/main/java/com/mzl/flower/entity/supplier/Supplier.java
index 6b8bd2f..0b7e974 100644
--- a/src/main/java/com/mzl/flower/entity/supplier/Supplier.java
+++ b/src/main/java/com/mzl/flower/entity/supplier/Supplier.java
@@ -70,5 +70,7 @@
     @ApiModelProperty("是否显示商品")
     private Boolean showed;
 
+    @ApiModelProperty("启用/禁用")
+    private Boolean isEnabled;
 
 }
diff --git a/src/main/java/com/mzl/flower/mapper/FlowerDeleteMapper.java b/src/main/java/com/mzl/flower/mapper/FlowerDeleteMapper.java
new file mode 100644
index 0000000..837262b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/FlowerDeleteMapper.java
@@ -0,0 +1,16 @@
+package com.mzl.flower.mapper;
+
+import com.mzl.flower.entity.FlowerDeleteDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-09
+ */
+public interface FlowerDeleteMapper extends BaseMapper<FlowerDeleteDO> {
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/flower/FlowerMapper.java b/src/main/java/com/mzl/flower/mapper/flower/FlowerMapper.java
index 5dac1ce..6294161 100644
--- a/src/main/java/com/mzl/flower/mapper/flower/FlowerMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/flower/FlowerMapper.java
@@ -46,4 +46,13 @@
     void updateFlowerCategoryInfo(Long category);
 
     List<Long> searchInvalidHistory(@Param("userId") String userId);
+
+
+    void updateBatchTypeRank(@Param("list") List<Flower> flowerList);
+
+    void deleteBatchPhysics(@Param("list")  List<Long> ids);
+
+    void restoreFlowerBatch(@Param("list") List<Long> ids);
+
+    List<Flower> getDeletdFlowByIds(@Param("list") List<Long> ids);
 }
diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerService.java b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
index ba19e78..84774d7 100644
--- a/src/main/java/com/mzl/flower/service/customer/CustomerService.java
+++ b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
@@ -79,6 +79,7 @@
             }
 
             customer.create(SecurityUtils.getUserId());
+            customer.setIsEnabled(true);
             customer.setLevelId(Long.valueOf(Constants.DEFAULT_MEMBER_ID));
             customerMapper.insert(customer);
         } else {//重新修改
@@ -215,6 +216,19 @@
         }
         return null;
     }
+    public void isEnable(Long id) {
+        Customer customer = customerMapper.selectById(id);
+        if (customer == null) {
+            throw new ValidationException("商户信息不存在");
+        }
+        if (customer.getIsEnabled()) {
+            customer.setIsEnabled(false);
+        } else {
+            customer.setIsEnabled(true);
+        }
+        customer.update(SecurityUtils.getUserId());
+        customerMapper.updateById(customer);
+    }
 
     /**
      * 根据会员等级获取等级下的customer信息
diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerDeleteService.java b/src/main/java/com/mzl/flower/service/flower/FlowerDeleteService.java
new file mode 100644
index 0000000..d3cb135
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/flower/FlowerDeleteService.java
@@ -0,0 +1,16 @@
+package com.mzl.flower.service.flower;
+
+import com.mzl.flower.entity.FlowerDeleteDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-09
+ */
+public interface FlowerDeleteService extends IService<FlowerDeleteDO> {
+
+}
diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerService.java b/src/main/java/com/mzl/flower/service/flower/FlowerService.java
index 98451a5..4ad623e 100644
--- a/src/main/java/com/mzl/flower/service/flower/FlowerService.java
+++ b/src/main/java/com/mzl/flower/service/flower/FlowerService.java
@@ -6,8 +6,8 @@
 import com.mzl.flower.config.security.SecurityUtils;
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.flower.*;
-import com.mzl.flower.dto.request.flower.FlowerTagMultipleDTO;
 import com.mzl.flower.dto.response.flower.*;
+import com.mzl.flower.entity.FlowerDeleteDO;
 import com.mzl.flower.entity.customer.Collect;
 import com.mzl.flower.entity.customer.Customer;
 import com.mzl.flower.entity.flower.*;
@@ -26,6 +26,7 @@
 import com.mzl.flower.mapper.supplier.SupplierTypeMapper;
 import com.mzl.flower.service.BaseService;
 import com.mzl.flower.service.customer.BrowseService;
+import com.mzl.flower.service.payment.RedisLockService;
 import io.micrometer.core.instrument.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -33,14 +34,15 @@
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -83,6 +85,14 @@
     @Autowired
     private OrderItemMapper orderItemMapper;
 
+    @Autowired
+    private RedisLockService lockService;
+
+    @Autowired
+    private FlowerDeleteService flowerDeleteService;
+
+    private static final String FLOWER_KEY="com:mzl:flower:service:flower:%s:%s";
+
     @Async
     public synchronized void updateFlowerSales(Order order){
         List<OrderItem> items = orderItemMapper.selectList(new QueryWrapper<OrderItem>()
@@ -98,6 +108,62 @@
     public synchronized void updateCategoryInfo(Long category){
         flowerMapper.updateFlowerCategoryInfo(category);
     }
+
+    @Async
+    public  void updateFlowTypeRank(Long id,Long category,String level){
+
+        Flower flower =null;
+        // 如果 id 不为空,则 category 和 level 可以为空
+        if (Objects.nonNull(id)) {
+            flower = flowerMapper.selectById(id);
+            if (flower == null) {
+                throw new IllegalArgumentException("Flower not found for ID: " + id);
+            }
+            category = flower.getCategory();  // 使用从数据库中检索到的 category
+            level = flower.getLevel();        // 使用从数据库中检索到的 level
+        } else {
+            // 如果 id 为空,则 category 和 level 必须提供
+            if (Objects.isNull(category) || StringUtils.isEmpty(level)) {
+                throw new IllegalArgumentException("Category and level must be provided when ID is null");
+            }
+            flower=new Flower();
+            flower.setCategory(category);
+            flower.setLevel(level);
+        }
+
+        String key=String.format(FLOWER_KEY, flower.getCategory(),flower.getLevel());
+
+        boolean lock = lockService.getObjectLock(key, "");
+        if(!lock){
+            return;
+        }
+        try{
+
+            QueryWrapper<Flower> queryWrapper=new QueryWrapper<>();
+            queryWrapper.lambda().eq(Flower::getDeleted,false)
+                    .eq(Objects.nonNull(flower.getCategory()),Flower::getCategory,flower.getCategory())
+                    .eq(StringUtils.isNotEmpty(flower.getLevel()),Flower::getLevel,flower.getLevel())
+                    .orderByAsc(Flower::getPrice);
+            final List<Flower> flowerList = flowerMapper.selectList(queryWrapper);
+
+            AtomicInteger index = new AtomicInteger(1);
+            flowerList.forEach(f -> f.setTypeRank(index.getAndIncrement()));
+
+            if(!CollectionUtils.isEmpty(flowerList)){
+                flowerMapper.updateBatchTypeRank(flowerList);
+            }
+
+
+
+
+        }finally {
+            lockService.releaseObjectLock(key,"");
+        }
+
+    }
+
+
+
 
     /**
      * 花农(供应商)提交商品
@@ -129,6 +195,8 @@
             paramService.insertTableData(fc.getParamId(), g.getId(), params);
         }
 
+        // 更新商品价格在这里的分类
+        updateFlowTypeRank(null,g.getCategory(),g.getLevel());
         return g.getId();
     }
 
@@ -165,6 +233,9 @@
                 paramService.updateTableData(fc.getParamId(), g.getId(), params);
             }
         }
+
+        // 更新商品价格在这里的分类
+        updateFlowTypeRank(null,g.getCategory(),g.getLevel());
 
         return g.getId();
     }
@@ -385,10 +456,16 @@
     }
 
     public void deleteFlower(Long id){
+
+        final Flower flower = flowerMapper.selectById(id);
+
         flowerMapper.deleteById(id);
 
         //清除购物车商品
         cartMapper.delete(new QueryWrapper<Cart>().eq("flower_id", id));
+        // 更新商品价格在这里的分类
+        updateFlowTypeRank(null,flower.getCategory(),flower.getLevel());
+
     }
 
     public void restoreFlower(Long id){
@@ -408,6 +485,8 @@
         }
         f.setPrice(dto.getPrice());
         flowerMapper.updateById(f);
+        // 更新商品价格在这里的分类
+        updateFlowTypeRank(null,f.getCategory(),f.getLevel());
     }
 
     public void editFlowerStock(FlowerStockDTO dto){
@@ -730,4 +809,62 @@
         }
 
     }
+
+    @Transactional
+    public void deleteFlowerBatch(FlowerBatchDTO dto) {
+        List<Flower> flowerList = flowerMapper.getDeletdFlowByIds(dto.getIds());
+        //物理删除
+        flowerMapper.deleteBatchPhysics(dto.getIds());
+        // 备份
+        if(!CollectionUtils.isEmpty(flowerList)){
+            backupFlower(flowerList);
+        }
+    }
+
+    @Async
+    public void backupFlower(List<Flower> flowerList) {
+        // 备份
+        final List<Long> idList = flowerList.stream().map(flower -> flower.getId()).collect(Collectors.toList());
+        final List<FlowerDeleteDO> flowerDeleteList = flowerDeleteService.getBaseMapper().selectBatchIds(idList);
+        // 遍历flowerList 根据ID查找 ,如果flowerDeleteList 存在,则放入到更新列表里面去,如果flowerDeleteList不存在,则添加到新增列表里面去
+
+        // 将查询到的 flowerDeleteList 的 ID 转为 Set 以便快速查找
+        Set<Long> existingIds = flowerDeleteList.stream()
+                .map(FlowerDeleteDO::getId)
+                .collect(Collectors.toSet());
+        // 使用 Stream 进行更新和插入分类
+        List<FlowerDeleteDO> updateList = flowerList.stream()
+                .filter(flower -> existingIds.contains(flower.getId())) // 过滤出已存在的记录
+                .map(flower -> convertToFlowerDeleteDO(flower))         // 转换为 FlowerDeleteDO 对象
+                .collect(Collectors.toList());
+
+        List<FlowerDeleteDO> insertList = flowerList.stream()
+                .filter(flower -> !existingIds.contains(flower.getId())) // 过滤出不存在的记录
+                .map(flower -> convertToFlowerDeleteDO(flower))          // 转换为 FlowerDeleteDO 对象
+                .collect(Collectors.toList());
+
+        // 批量执行更新和新增操作
+        if (!updateList.isEmpty()) {
+            flowerDeleteService.updateBatchById(updateList); // 批量更新
+        }
+        if (!insertList.isEmpty()) {
+            flowerDeleteService.saveBatch(insertList); // 批量插入
+        }
+
+    }
+
+    @Transactional
+    public void restoreFlowerBatch(FlowerBatchDTO dto) {
+        flowerMapper.restoreFlowerBatch(dto.getIds());
+    }
+
+    // 方法用于将 Flower 转换为 FlowerDeleteDO
+    private FlowerDeleteDO convertToFlowerDeleteDO(Flower flower) {
+        FlowerDeleteDO flowerDeleteDO=new FlowerDeleteDO();
+        BeanUtils.copyProperties(flower,flowerDeleteDO);
+        // 其他需要备份的字段...
+        return flowerDeleteDO;
+    }
+
+
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/FlowerDeleteServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/FlowerDeleteServiceImpl.java
new file mode 100644
index 0000000..05fc095
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/impl/FlowerDeleteServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mzl.flower.service.impl;
+
+import com.mzl.flower.entity.FlowerDeleteDO;
+import com.mzl.flower.mapper.FlowerDeleteMapper;
+import com.mzl.flower.service.flower.FlowerDeleteService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-09
+ */
+@Service
+public class FlowerDeleteServiceImpl extends ServiceImpl<FlowerDeleteMapper, FlowerDeleteDO> implements FlowerDeleteService {
+
+}
diff --git a/src/main/java/com/mzl/flower/service/partner/PartnerService.java b/src/main/java/com/mzl/flower/service/partner/PartnerService.java
index 609684c..15f9a26 100644
--- a/src/main/java/com/mzl/flower/service/partner/PartnerService.java
+++ b/src/main/java/com/mzl/flower/service/partner/PartnerService.java
@@ -10,6 +10,7 @@
 import com.mzl.flower.dto.request.partner.*;
 import com.mzl.flower.dto.response.partner.PartnerDTO;
 import com.mzl.flower.entity.partner.Partner;
+import com.mzl.flower.entity.supplier.Supplier;
 import com.mzl.flower.mapper.partner.PartnerMapper;
 import com.mzl.flower.service.UploadService;
 import com.mzl.flower.utils.DateUtils;
@@ -59,6 +60,7 @@
             partner.setIdCards(JSON.toJSONString(dto.getIdCards()));
             partner.create(SecurityUtils.getUserId());
             partner.setStatus(PARTNER_STATUS_AUDIT);
+            partner.setIsEnabled(true);
             partnerMapper.insert(partner);
         }else{//重新修改
             partner = partnerMapper.selectById(dto.getId());
@@ -161,4 +163,18 @@
         partner.update(SecurityUtils.getUserId());
         partnerMapper.updateById(partner);
     }
+
+    public void isEnable(Long id) {
+        Partner partner = partnerMapper.selectById(id);
+        if (partner == null) {
+            throw new ValidationException("合伙人信息不存在");
+        }
+        if (partner.getIsEnabled()) {
+            partner.setIsEnabled(false);
+        } else {
+            partner.setIsEnabled(true);
+        }
+        partner.update(SecurityUtils.getUserId());
+        partnerMapper.updateById(partner);
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
index fb44e7d..e7f77e7 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
@@ -117,6 +117,7 @@
         s.setReason(dto.getReason());
         s.setStatus(Constants.ORDER_SALES_STATUS.PENDING.name());
         s.create(userId);
+        s.setSalesType(dto.getSalesType());
         orderItemSalesMapper.insert(s);
 
         return s.getId();
diff --git a/src/main/java/com/mzl/flower/service/supplier/SupplierService.java b/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
index c5516c6..67e2e99 100644
--- a/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
+++ b/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
@@ -50,6 +50,7 @@
             supplier.create(SecurityUtils.getUserId());
             supplier.setShowed(true);
             supplier.setStatus(SUPPLIER_STATUS_AUDIT);
+            supplier.setIsEnabled(true);
             supplierMapper.insert(supplier);
         }else{//重新修改
             supplier = supplierMapper.selectById(dto.getId());
@@ -187,4 +188,18 @@
         supplier.update(SecurityUtils.getUserId());
         supplierMapper.updateById(supplier);
     }
+
+    public void isEnable(Long id) {
+        Supplier supplier = supplierMapper.selectById(id);
+        if (supplier == null) {
+            throw new ValidationException("供应商信息不存在");
+        }
+        if (supplier.getIsEnabled()) {
+            supplier.setIsEnabled(false);
+        } else {
+            supplier.setIsEnabled(true);
+        }
+        supplier.update(SecurityUtils.getUserId());
+        supplierMapper.updateById(supplier);
+    }
 }
diff --git a/src/main/java/com/mzl/flower/web/customer/CustomerController.java b/src/main/java/com/mzl/flower/web/customer/CustomerController.java
index 4c552d3..8b870c9 100644
--- a/src/main/java/com/mzl/flower/web/customer/CustomerController.java
+++ b/src/main/java/com/mzl/flower/web/customer/CustomerController.java
@@ -4,15 +4,11 @@
 import com.mzl.flower.base.BaseController;
 import com.mzl.flower.base.R;
 import com.mzl.flower.base.ReturnDataDTO;
-import com.mzl.flower.config.exception.ValidationException;
 import com.mzl.flower.config.security.SecurityUtils;
 import com.mzl.flower.dto.request.customer.BindPartnerDTO;
 import com.mzl.flower.dto.request.customer.ChangePartnerDTO;
 import com.mzl.flower.dto.request.customer.QueryCustomerDTO;
 import com.mzl.flower.dto.request.customer.UpdateCustomerDTO;
-import com.mzl.flower.dto.request.supplier.AuditSupplierDTO;
-import com.mzl.flower.dto.request.supplier.QuerySupplierDTO;
-import com.mzl.flower.dto.request.supplier.UpdateSupplierDTO;
 import com.mzl.flower.dto.response.customer.CustomerDTO;
 import com.mzl.flower.dto.response.supplier.SupplierDTO;
 import com.mzl.flower.service.customer.CustomerService;
@@ -24,6 +20,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 @RestController
 @RequestMapping("/api/customer")
@@ -85,4 +82,11 @@
     public ResponseEntity<ReturnDataDTO<SupplierDTO>> getPartnerName(@NotBlank(message = "参数不能为空") String id) {
         return returnData(R.SUCCESS.getCode(),customerService.getPartnerName(id));
     }
+
+    @GetMapping("/page/isEnable")
+    @ApiOperation(value = "启用/禁用", notes = "启用/禁用商品")
+    public ResponseEntity<ReturnDataDTO<String>> isEnable(@NotNull(message = "id不能为空") Long id) {
+        customerService.isEnable(id);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
 }
diff --git a/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java b/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java
index 1f5b9a9..475685a 100644
--- a/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java
+++ b/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java
@@ -14,7 +14,10 @@
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.CreateWechatUserDTO;
 import com.mzl.flower.dto.request.UserLoginDTO;
+import com.mzl.flower.dto.response.customer.CustomerDTO;
 import com.mzl.flower.entity.system.User;
+import com.mzl.flower.mapper.customer.CustomerMapper;
+import com.mzl.flower.service.customer.CustomerService;
 import com.mzl.flower.service.login.LoginService;
 import com.mzl.flower.service.system.UserService;
 import com.mzl.flower.service.system.WeChatService;
@@ -33,6 +36,7 @@
 import org.springframework.security.oauth2.common.OAuth2RefreshToken;
 import org.springframework.security.oauth2.provider.token.TokenStore;
 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -60,6 +64,9 @@
 
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private CustomerMapper customerMapper;
 
 
     @Autowired
@@ -125,6 +132,13 @@
         if(user == null){
             throw new ValidationException("用户不存在");
         }
+        CustomerDTO currentCustomer = customerMapper.getCurrentCustomer(user.getId());
+        if (ObjectUtils.isEmpty(currentCustomer)) {
+            throw new ValidationException("用户不存在");
+        }
+        if (currentCustomer.getIsEnabled() == false) {
+            throw new ValidationException("用户已禁用,请联系管理员");
+        }
         String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId());
         if (StringUtils.isNotBlank(tokenCache))  {
             //强制删除token,下线
diff --git a/src/main/java/com/mzl/flower/web/login/PartnerLoginController.java b/src/main/java/com/mzl/flower/web/login/PartnerLoginController.java
index 375f43c..b7ffa9e 100644
--- a/src/main/java/com/mzl/flower/web/login/PartnerLoginController.java
+++ b/src/main/java/com/mzl/flower/web/login/PartnerLoginController.java
@@ -11,7 +11,9 @@
 import com.mzl.flower.config.security.token.PhoneAuthenticationToken;
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.UserLoginDTO;
+import com.mzl.flower.dto.response.partner.PartnerDTO;
 import com.mzl.flower.entity.system.User;
+import com.mzl.flower.mapper.partner.PartnerMapper;
 import com.mzl.flower.service.login.LoginService;
 import com.mzl.flower.service.system.UserService;
 import io.swagger.annotations.Api;
@@ -29,6 +31,7 @@
 import org.springframework.security.oauth2.common.OAuth2RefreshToken;
 import org.springframework.security.oauth2.provider.token.TokenStore;
 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -59,7 +62,8 @@
     @Autowired
     private TokenStore tokenStore;
 
-
+    @Autowired
+    private PartnerMapper partnerMapper;
 
     public static final String SMS_CODE_KEY = "SMS-CODE-KEY";
     public static final String TOKEN_KEY = "TOKEN-KEY";
@@ -82,6 +86,13 @@
         if(user == null){
             throw new ValidationException("用户不存在");
         }
+        PartnerDTO partnerDTO = partnerMapper.getCurrentPartner(user.getId());
+        if (ObjectUtils.isEmpty(partnerDTO)) {
+            throw new ValidationException("用户不存在");
+        }
+        if (partnerDTO.getIsEnabled() == false) {
+            throw new ValidationException("用户已禁用,请联系管理员");
+        }
         String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId());
         if (StringUtils.isNotBlank(tokenCache))  {
             //强制删除token,下线
diff --git a/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java b/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java
index 0147a61..0fd20e3 100644
--- a/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java
+++ b/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java
@@ -11,7 +11,9 @@
 import com.mzl.flower.config.security.token.SupAuthenticationToken;
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.UserLoginDTO;
+import com.mzl.flower.dto.response.supplier.SupplierDTO;
 import com.mzl.flower.entity.system.User;
+import com.mzl.flower.mapper.supplier.SupplierMapper;
 import com.mzl.flower.service.login.LoginService;
 import com.mzl.flower.service.system.UserService;
 import io.swagger.annotations.Api;
@@ -29,6 +31,7 @@
 import org.springframework.security.oauth2.common.OAuth2RefreshToken;
 import org.springframework.security.oauth2.provider.token.TokenStore;
 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -59,6 +62,9 @@
     @Autowired
     private TokenStore tokenStore;
 
+    @Autowired
+    private SupplierMapper supplierMapper;
+
     public static final String SMS_CODE_KEY = "SMS-CODE-KEY";
 
     public static final String TOKEN_KEY = "TOKEN-KEY";
@@ -81,6 +87,13 @@
         if(user == null){
             throw new ValidationException("用户不存在");
         }
+        SupplierDTO supplierDTO = supplierMapper.getCurrentSupplier(user.getId());
+        if (ObjectUtils.isEmpty(supplierDTO)) {
+            throw new ValidationException("用户不存在");
+        }
+        if (supplierDTO.getIsEnabled() == false) {
+            throw new ValidationException("用户已禁用,请联系管理员");
+        }
         String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId());
         if (StringUtils.isNotBlank(tokenCache))  {
             //强制删除token,下线
diff --git a/src/main/java/com/mzl/flower/web/partner/PartnerController.java b/src/main/java/com/mzl/flower/web/partner/PartnerController.java
index 9fabd8f..3a3a2c8 100644
--- a/src/main/java/com/mzl/flower/web/partner/PartnerController.java
+++ b/src/main/java/com/mzl/flower/web/partner/PartnerController.java
@@ -77,4 +77,11 @@
         return returnData(R.SUCCESS.getCode(),null);
     }
 
+    @GetMapping("/page/isEnable")
+    @ApiOperation(value = "启用/禁用", notes = "启用/禁用商品")
+    public ResponseEntity<ReturnDataDTO<String>> isEnable(@NotNull(message = "id不能为空") Long id) {
+        partnerService.isEnable(id);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
 }
diff --git a/src/main/java/com/mzl/flower/web/supplier/FlowerSupplierController.java b/src/main/java/com/mzl/flower/web/supplier/FlowerSupplierController.java
index 54e6c5b..07b0ed3 100644
--- a/src/main/java/com/mzl/flower/web/supplier/FlowerSupplierController.java
+++ b/src/main/java/com/mzl/flower/web/supplier/FlowerSupplierController.java
@@ -145,4 +145,25 @@
         flowerService.editFlowerStock(dto);
         return returnData(R.SUCCESS.getCode(), null);
     }
+
+    @PostMapping("/list/delete/batch")
+    @ApiOperation(value = "商品批量删除")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "商品ids", required = true, dataType = "Long", paramType = "query")
+    })
+    public ResponseEntity<ReturnDataDTO<?>> deleteFlowerBatch(@RequestBody FlowerBatchDTO dto) {
+        flowerService.deleteFlowerBatch(dto);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+    @PostMapping("/list/restore/batch")
+    @ApiOperation(value = "商品批量恢复")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "商品ids", required = true, dataType = "Long", paramType = "query")
+    })
+    public ResponseEntity<ReturnDataDTO<?>> restoreFlowerBatch(@RequestBody FlowerBatchDTO dto) {
+        flowerService.restoreFlowerBatch(dto);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
 }
diff --git a/src/main/java/com/mzl/flower/web/supplier/SupplierController.java b/src/main/java/com/mzl/flower/web/supplier/SupplierController.java
index 4bb7c62..c78ecb5 100644
--- a/src/main/java/com/mzl/flower/web/supplier/SupplierController.java
+++ b/src/main/java/com/mzl/flower/web/supplier/SupplierController.java
@@ -103,4 +103,11 @@
         supplierService.configShow(id);
         return returnData(R.SUCCESS.getCode(),null);
     }
+
+    @GetMapping("/page/isEnable")
+    @ApiOperation(value = "启用/禁用", notes = "启用/禁用商品")
+    public ResponseEntity<ReturnDataDTO<String>> isEnable(@NotNull(message = "id不能为空") Long id) {
+        supplierService.isEnable(id);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 31d86fa..e4c8c1d 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -3,7 +3,7 @@
     active: dev,swagger
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
-    url: jdbc:mysql://47.99.58.211:3306/flower?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
+    url: jdbc:mysql://47.99.58.211:3306/flower?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true
     username: root
     password: Hmy@2024!*@&
     druid:
diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml
index a4e627a..1366594 100644
--- a/src/main/resources/application-local.yml
+++ b/src/main/resources/application-local.yml
@@ -3,7 +3,7 @@
     active: local,swagger
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
-    url: jdbc:mysql://47.99.58.211:3306/flower?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
+    url: jdbc:mysql://47.99.58.211:3306/flower?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true
     username: root
     password: Hmy@2024!*@&
     druid:
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index f783488..34806f4 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -3,7 +3,7 @@
     active: prod
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
-    url: jdbc:mysql://127.0.0.1:3306/flower-prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
+    url: jdbc:mysql://127.0.0.1:3306/flower-prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true
     username: root
     password: Hmy@2024!*@&
     druid:
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index d747ef6..e57b439 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -3,7 +3,7 @@
     active: test,swagger
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
-    url: jdbc:mysql://47.99.58.211:3306/flower?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
+    url: jdbc:mysql://47.99.58.211:3306/flower?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true
     username: root
     password: Hmy@2024!*@&
     druid:
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 693f33e..f7facc7 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -67,8 +67,8 @@
 
 wx:
   miniapp:
-    appid: wx1441324401626290    #小程序appId 花店端
-    secret: bab595ac75f60eb33567511111a569a7    #secret花店端
+    appid: wx3203fd935a6ffe09    #小程序appId 花店端
+    secret: 9121c703fb0c416b21a8c289dd73ae9b    #secret花店端
     msgDataFormat: JSON
   mp:
     app-id: xxx   #公众号appId
@@ -77,14 +77,14 @@
 wechat:
   merchantId: 1661512517
   customer:
-      appid: wx1441324401626290    #小程序appId
-      secret: bab595ac75f60eb33567511111a569a7    #secret
+    appid: wx1441324401626290    #小程序appId
+    secret: bab595ac75f60eb33567511111a569a7    #secret
   partner:
-      appid: wx6d0ecc4e18710458    #小程序appId
-      secret: 22afb006e9b94ee97c47bbfded9151eb     #secret
+    appid: wx6d0ecc4e18710458    #小程序appId
+    secret: 22afb006e9b94ee97c47bbfded9151eb     #secret
   supplier:
-      appid: wx3203fd935a6ffe09    #小程序appId
-      secret: 9121c703fb0c416b21a8c289dd73ae9b     #secret
+    appid: wx3203fd935a6ffe09    #小程序appId
+    secret: 9121c703fb0c416b21a8c289dd73ae9b     #secret
 
 sms:
   verificationCode: SMS_301300012   #验证码通用模版
\ No newline at end of file
diff --git a/src/main/resources/mapper/customer/CustomerMapper.xml b/src/main/resources/mapper/customer/CustomerMapper.xml
index 8fbff9f..e5ac30a 100644
--- a/src/main/resources/mapper/customer/CustomerMapper.xml
+++ b/src/main/resources/mapper/customer/CustomerMapper.xml
@@ -40,6 +40,9 @@
         <if test="dto.partnerUserId != null and dto.partnerUserId != ''">
             and c.partner_user_id = #{dto.partnerUserId}
         </if>
+        <if test="dto.isEnabled!=null">
+            AND c.is_enabled = #{dto.isEnabled}
+        </if>
         order by c.create_time desc
     </select>
     <select id="getCurrentCustomer" resultType="com.mzl.flower.dto.response.customer.CustomerDTO"
diff --git a/src/main/resources/mapper/flower/FlowerDeleteMapper.xml b/src/main/resources/mapper/flower/FlowerDeleteMapper.xml
new file mode 100644
index 0000000..e935165
--- /dev/null
+++ b/src/main/resources/mapper/flower/FlowerDeleteMapper.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mzl.flower.mapper.FlowerDeleteMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mzl.flower.entity.FlowerDeleteDO">
+        <result column="id" property="id" />
+        <result column="deleted" property="deleted" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="category" property="category" />
+        <result column="unit" property="unit" />
+        <result column="color" property="color" />
+        <result column="name" property="name" />
+        <result column="cover" property="cover" />
+        <result column="banners" property="banners" />
+        <result column="video" property="video" />
+        <result column="level" property="level" />
+        <result column="supplier_id" property="supplierId" />
+        <result column="price" property="price" />
+        <result column="stock" property="stock" />
+        <result column="status" property="status" />
+        <result column="tags" property="tags" />
+        <result column="audit_remarks" property="auditRemarks" />
+        <result column="audit_time" property="auditTime" />
+        <result column="shown" property="shown" />
+        <result column="sales" property="sales" />
+        <result column="description" property="description" />
+        <result column="recommend" property="recommend" />
+        <result column="real_sales" property="realSales" />
+        <result column="recommend_rank" property="recommendRank" />
+        <result column="type_rank" property="typeRank" />
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/flower/FlowerMapper.xml b/src/main/resources/mapper/flower/FlowerMapper.xml
index 3cb549a..64eb0c7 100644
--- a/src/main/resources/mapper/flower/FlowerMapper.xml
+++ b/src/main/resources/mapper/flower/FlowerMapper.xml
@@ -1,6 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.mzl.flower.mapper.flower.FlowerMapper">
+    <delete id="deleteBatchPhysics">
+        DELETE FROM t_flower
+        WHERE id IN
+        <foreach collection="list" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
 
     <select id="selectFlowerList" resultType="com.mzl.flower.dto.response.flower.FlowerListDTO">
         SELECT f.*, s.name supplierName, st.name supplierType, fc.name categoryStr
@@ -386,10 +393,32 @@
         FROM t_browse_his c left join t_flower f on c.flower_id = f.id
         WHERE f.deleted = 0 and c.deleted = 0 and f.status != 'UP' and c.user_id = #{userId}
     </select>
+    <select id="getDeletdFlowByIds" resultType="com.mzl.flower.entity.flower.Flower">
+        select * from t_flower
+        WHERE id IN
+        <foreach collection="list" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
 
     <update id="updateFlowerCategoryInfo">
         update t_flower f, t_flower_category fc
         set f.unit = fc.unit, f.color = fc.color
         where f.category = fc.id and fc.id = #{category}
     </update>
+    <update id="updateBatchTypeRank">
+        <foreach collection="list" item="item" separator=";">
+            UPDATE t_flower
+            SET type_rank = #{item.typeRank}
+            WHERE id = #{item.id}
+        </foreach>
+    </update>
+
+    <update id="restoreFlowerBatch">
+        update t_flower set deleted = 0
+        WHERE id IN
+        <foreach collection="list" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/partner/PartnerMapper.xml b/src/main/resources/mapper/partner/PartnerMapper.xml
index be23dd8..232cb24 100644
--- a/src/main/resources/mapper/partner/PartnerMapper.xml
+++ b/src/main/resources/mapper/partner/PartnerMapper.xml
@@ -32,6 +32,9 @@
         <if test="dto.region!=null and dto.region!=''">
             AND t.region like CONCAT('%',#{dto.region}, '%')
         </if>
+        <if test="dto.isEnabled!=null">
+            AND t.is_enabled = #{dto.isEnabled}
+        </if>
         order by t.create_time desc
     </select>
     <select id="getCurrentPartner" resultType="com.mzl.flower.dto.response.partner.PartnerDTO"
diff --git a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
index 5a29bcd..eef9518 100644
--- a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
+++ b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
@@ -71,7 +71,7 @@
             , oi.flower_level, oi.flower_category, o.customer, o.customer_tel, o.customer_province, o.customer_city
             , o.customer_region, o.customer_address, oi.num flowerNum, oi.supplier_name, oi.price, oi.total
             , o.order_no, si.sales_no, si.title, si.num, si.reason, si.total_fee, si.status, si.create_time
-            , si.remarks, oi.supplier_price, oi.markup_partner, si.audit_time
+            , si.remarks, oi.supplier_price, oi.markup_partner, si.audit_time,si.sales_type
         FROM t_order_item_sales si
         join t_order_item oi on oi.id = si.order_item_id
         join t_order o on si.order_id = o.id
@@ -136,6 +136,12 @@
         <if test="condition.supplierId != null">
             AND oi.supplier_id = #{condition.supplierId}
         </if>
+        <if test="condition.supplierId != null">
+            AND oi.supplier_id = #{condition.supplierId}
+        </if>
+        <if test="condition.salesType != null">
+            AND si.sales_type = #{condition.salesType}
+        </if>
 
         ORDER BY si.create_time desc
     </select>
diff --git a/src/main/resources/mapper/supplier/SupplierMapper.xml b/src/main/resources/mapper/supplier/SupplierMapper.xml
index 2337500..7a06f2e 100644
--- a/src/main/resources/mapper/supplier/SupplierMapper.xml
+++ b/src/main/resources/mapper/supplier/SupplierMapper.xml
@@ -35,6 +35,9 @@
                AND t.create_time <= #{dto.createDateEnd}
             ]]>
         </if>
+        <if test="dto.isEnabled!=null">
+            AND t.is_enabled = #{dto.isEnabled}
+        </if>
         order by t.create_time desc
     </select>
     <select id="findSupplierDetail" resultType="com.mzl.flower.dto.response.supplier.SupplierDTO"

--
Gitblit v1.9.3