diff --git a/db/20260930_add_mch_manage_discounts_rate.sql b/db/20260930_add_mch_manage_discounts_rate.sql new file mode 100644 index 000000000..4082b0a5c --- /dev/null +++ b/db/20260930_add_mch_manage_discounts_rate.sql @@ -0,0 +1,4 @@ +-- 商户表新增优惠折扣字段:取值 1-99,写 10 表示 1 折(值越小折扣越大),为空表示无折扣。 +-- app 端商户列表(/wallet/mch-manage/app/page-join)按"有折扣优先、折扣大(值小)优先"排序。 +ALTER TABLE mch_manage + ADD COLUMN discounts_rate int DEFAULT NULL COMMENT '优惠折扣(1-99,10=1折)' AFTER discounts_price; diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index da68e5e89..76c5c763b 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -107,6 +107,7 @@ CREATE TABLE mch_manage address_des varchar(256) DEFAULT NULL COMMENT '商户地址', sort int NOT NULL COMMENT '排序', discounts_price varchar(256) NOT NULL COMMENT '优惠价格(没实际作用)', + discounts_rate int DEFAULT NULL COMMENT '优惠折扣(1-99,10=1折)', cooperation_status varchar(64) NOT NULL COMMENT '合作状态', mch_count int NOT NULL COMMENT '分店数量', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java index 723f236f9..5b3f2044d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java @@ -147,6 +147,12 @@ public class MchManageEntity extends Model { @Schema(description = "优惠价格(没实际作用)") private String discountsPrice; + /** + * 优惠折扣(1-99,10=1折,空为无折扣) + */ + @Schema(description = "优惠折扣(1-99,10=1折,空为无折扣)") + private Integer discountsRate; + /** * 合作状态 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java index 4d32b7176..d26e5d0de 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java @@ -30,9 +30,8 @@ public interface MchManageMapper extends PjcloudBaseMapper { .likeIfExists(MchManageEntity::getName, dto.getName()) .in(ObjectUtil.isNotEmpty(dto.getDeptIds()), MchManageEntity::getDeptId, dto.getDeptIds()) .apply(ObjectUtil.isNotEmpty(dto.getType()), "FIND_IN_SET({0}, types)", dto.getType()) - .orderByDesc(MchManageEntity::getSort) - .orderByDesc(MchManageEntity::getCreateTime) - .orderByDesc(MchManageEntity::getId); + // 优惠折扣(1-99,10=1折)越小折扣越大:有折扣的排在无折扣(ifnull补100)前面,1折排在2折前面 + .last("order by ifnull(discounts_rate, 100) asc, sort desc, create_time desc, id desc"); return selectJoinPage(page, MchManageVo.class, wrapper); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java index 52de9aa35..260a952ed 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.dto.UserInfo; @@ -107,6 +108,7 @@ public class MchManageServiceImpl extends ServiceImpl() + .set(MchManageEntity::getDiscountsRate, null) + .eq(MchManageEntity::getId, dto.getId())); + } updateMchCount(orgParentId); // walletThirdZyService.syncAllMch(dto.getId(), Boolean.FALSE); } @@ -214,6 +223,16 @@ public class MchManageServiceImpl extends ServiceImpl 99) { + throw new RuntimeException("优惠折扣范围为1-99(10表示1折)"); + } + } + /** * 按 parent_id 实时统计各主店可见分店数(visible_mobile=1,逻辑删除自动过滤), * 覆盖 mch_manage.mch_count 冗余计数,避免分店增删/隐藏后计数与实际不一致 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml index 56f4396a9..3235dd17a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml @@ -16,6 +16,7 @@ + @@ -47,6 +48,7 @@ a.sort, a.sup_type, a.discounts_price, + a.discounts_rate, a.cooperation_status, a.mch_count, a.platform_ranke,