From d7b8bfefa75d90b56182478032551646c7526a9d Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 19 Feb 2025 05:48:10 +0800 Subject: [PATCH] //offline --- .../db/migration/V202501000000001.sql | 64 ++++ .../po/WxOfflineActivityAwardsModel.java | 83 +++++ .../po/WxOfflineActivityGrantCashBack.java | 6 - .../po/WxOfflineActivityGrantItemRecord.java | 43 +++ .../domain/po/WxOfflineActivityItem.java | 37 +- .../domain/po/WxOfflineActivityRecord.java | 2 + .../EnumOfflineActivityAwardsModeType.java | 37 ++ .../EnumOfflineActivityCalculationMode.java | 74 ++-- .../enums/EnumOfflineActivityCountMode.java | 37 ++ .../enums/EnumOfflineActivityMode.java | 38 ++ .../WxOfflineActivityAwardsModelMapper.java | 28 ++ ...xOfflineActivityGrantItemRecordMapper.java | 25 ++ .../WxOfflineActivityAwardsModelService.java | 21 ++ ...OfflineActivityGrantItemRecordService.java | 13 + ...xOfflineActivityAwardsItemServiceImpl.java | 1 + ...OfflineActivityAwardsModelServiceImpl.java | 82 ++++ ...xOfflineActivityGrantAwardServiceImpl.java | 352 ++++++++++++------ ...ineActivityGrantItemRecordServiceImpl.java | 53 +++ .../WxOfflineActivityItemServiceImpl.java | 16 +- .../WxOfflineActivityRecordServiceImpl.java | 5 + .../WxOfflineActivityAwardsModelMapper.xml | 79 ++++ .../WxOfflineActivityGrantCashBackMapper.xml | 5 +- ...WxOfflineActivityGrantItemRecordMapper.xml | 33 ++ .../mapper/WxOfflineActivityItemMapper.xml | 10 +- 24 files changed, 969 insertions(+), 175 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsModel.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItemRecord.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsModeType.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCountMode.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMode.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsModelMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemRecordMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsModelService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemRecordService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsModelServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemRecordServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsModelMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemRecordMapper.xml diff --git a/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql b/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql new file mode 100644 index 000000000..a4b2a9ece --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql @@ -0,0 +1,64 @@ +ALTER TABLE `wx_offline_activity_item` + ADD COLUMN `mode_type` smallint(1) NULL DEFAULT NULL COMMENT '活动项模式' AFTER `name`; + +update wx_offline_activity_item set mode_type = 2 where type = 1; +update wx_offline_activity_item set mode_type = 2 where type = 2; + +update wx_offline_activity_item set mode_type = calculation_mode where type = 3; +update wx_offline_activity_item set mode_type = 2 where type = 3 and mode_type is null; + +ALTER TABLE `wx_offline_activity_item` + MODIFY COLUMN `mode_type` smallint(1) NOT NULL COMMENT '活动项模式' AFTER `name`; + +ALTER TABLE `wx_offline_activity_item` + DROP COLUMN `calculation_mode`; + +ALTER TABLE `wx_offline_activity_item` + ADD COLUMN `business_order_count` int(11) NULL COMMENT '业态订单限制' AFTER `awards_item_price`; + +ALTER TABLE `wx_offline_activity_item` + ADD COLUMN `count_model` smallint(1) NULL COMMENT '联单模式' AFTER `tax_points`; + +update wx_offline_activity_item set count_model = 1 where type = 3 + and id in(select distinct activity_item_id form wx_offline_activity_awards_item where `type` = 2); + + + +DROP TABLE IF EXISTS `wx_offline_activity_awards_model`; +CREATE TABLE `wx_offline_activity_awards_model` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_item_id` bigint(20) NOT NULL COMMENT '活动项id', + `model_type` smallint(1) NOT NULL COMMENT '模式类型', + `merchant_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数', + `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '最小金额', + `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '最大金额', + `awards_count` int(11) NULL DEFAULT NULL COMMENT '奖项数量', + `awards_grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `activity_item_id`(`activity_item_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动奖项模式' ROW_FORMAT = DYNAMIC; + + +insert into `wx_offline_activity_awards_model`(`id`,`tenant_id`,`parent_tenant_id`,`activity_item_id`,`model_type`,`merchant_count`,`min_amount`,`max_amount`,`awards_count`,`awards_grade`,`create_date`,`update_date`) +select id,tenant_id,parent_tenant_id,activity_item_id,type,null,min_amount,max_amount,null,grade,create_date,update_date from wx_offline_activity_awards_item +where activity_item_id in (select id from wx_offline_activity_item where type = 2); + + +DROP TABLE IF EXISTS `wx_offline_activity_grant_item_record`; +CREATE TABLE `wx_offline_activity_grant_item_record` ( + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_item_id` bigint(20) NOT NULL COMMENT '活动项id', + `record_id` bigint(20) NOT NULL COMMENT '参与记录id', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + INDEX `activity_id`(`activity_id`, `record_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '活动发放筛选订单金额关系表' ROW_FORMAT = DYNAMIC; + + +ALTER TABLE `wx_offline_activity_grant_cash_back` + DROP COLUMN `calculation_mode`; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsModel.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsModel.java new file mode 100644 index 000000000..0283ec86a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsModel.java @@ -0,0 +1,83 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 线下活动奖项模式 + * @TableName wx_offline_activity_awards_model + */ +@TableName(value ="wx_offline_activity_awards_model") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityAwardsModel extends TenantEntity { + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 活动项id + */ + @TableField(value = "activity_item_id") + private Long activityItemId; + + /** + * 模式类型(金额or联单) + */ + @TableField(value = "model_type") + private Integer modelType; + + /** + * 联单笔数 + */ + @TableField(value = "merchant_count") + private Integer merchantCount; + + /** + * 限制最小金额 + */ + @TableField(value = "min_amount") + private BigDecimal minAmount; + + /** + * 限制最大金额 + */ + @TableField(value = "max_amount") + private BigDecimal maxAmount; + + /** + * 奖项数量 + */ + @TableField(value = "awards_count") + private Integer awardsCount; + + /** + * 奖项等级 + */ + @TableField(value = "awards_grade") + private Integer awardsGrade; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java index 22ae0a1ae..7cc0de2f3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java @@ -68,12 +68,6 @@ public class WxOfflineActivityGrantCashBack extends TenantEntity { @TableField(value = "awards_item_rule") private Integer awardsItemRule; - /** - * 返现计算模式 - */ - @TableField(value = "calculation_mode") - private Integer calculationMode; - /** * 返现封顶金额 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItemRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItemRecord.java new file mode 100644 index 000000000..4db57baea --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItemRecord.java @@ -0,0 +1,43 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 活动发放筛选订单金额关系表 + * @TableName wx_offline_activity_grant_item_record + */ +@TableName(value ="wx_offline_activity_grant_item_record") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityGrantItemRecord extends TenantEntity { + + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 活动项id + */ + @TableField(value = "activity_item_id") + private Long activityItemId; + + /** + * 参与记录id + */ + @TableField(value = "record_id") + private Long recordId; + + /** + * 发放id + */ + @TableField(value = "grant_id") + private Long grantId; +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 4781a9440..49351e60c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -46,6 +46,12 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "name") private String name; + /** + * 活动项模式 + */ + @TableField(value = "mode_type") + private Integer modeType; + /** * 参与金额 */ @@ -58,6 +64,20 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "awards_item_price") private BigDecimal awardsItemPrice; + /** + * 业态限制 + */ + @TableField(value = "business_order_count") + private Integer businessOrderCount; + + /** + * 模式规则 + */ + @TableField(exist = false) + private List activityAwardsModelList; + @TableField(exist = false) + private List activityAwardsModelSecondList; + /** * 奖项数量限制(为0时无限制) */ @@ -76,12 +96,6 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "awards_item_rule") private Integer awardsItemRule; - /** - * 返现计算模式 - */ - @TableField(value = "calculation_mode") - private Integer calculationMode; - /** * 返现封顶金额 */ @@ -100,6 +114,12 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "tax_points") private BigDecimal taxPoints; + /** + * 联单模式 + */ + @TableField(value = "count_model") + private Integer countModel; + /** * 创建时间 */ @@ -154,4 +174,9 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(exist = false) private String cashBackMsg; + @TableField(exist = false) + private List recordIds; + @TableField(exist = false) + private List recordList; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index 64869810f..505d9013b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -152,6 +152,8 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(value = "business_id") private Integer businessId; + @TableField(exist = false) + private String businessName; /** * 创建时间 diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsModeType.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsModeType.java new file mode 100644 index 000000000..7aaedf71f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsModeType.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityAwardsModeType { + + AMOUNT(1, "金额"), + COUNT(2, "联单"), + ; + + public static EnumOfflineActivityAwardsModeType getEnum(Integer code) { + for (EnumOfflineActivityAwardsModeType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityAwardsModeType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java index 7073d9a5f..31c697ad2 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java @@ -1,37 +1,37 @@ -package com.iformall.enums; - - -/** - * @author gongbiao - */ -public enum EnumOfflineActivityCalculationMode { - - ONE(1, "单笔订单计算"), - SUM(2, "订单总额计算"), - ; - - public static EnumOfflineActivityCalculationMode getEnum(Integer code) { - for (EnumOfflineActivityCalculationMode value : values()) { - if (value.getCode().equals(code)) { - return value; - } - } - return null; - } - - private Integer code; - private String message; - - EnumOfflineActivityCalculationMode(Integer code, String message) { - this.code = code; - this.message = message; - } - - public Integer getCode() { - return code; - } - - public String getMessage() { - return message; - } -} +//package com.iformall.enums; +// +// +///** +// * @author gongbiao +// */ +//public enum EnumOfflineActivityCalculationMode { +// +// ONE(1, "单笔订单计算"), +// SUM(2, "订单总额计算"), +// ; +// +// public static EnumOfflineActivityCalculationMode getEnum(Integer code) { +// for (EnumOfflineActivityCalculationMode value : values()) { +// if (value.getCode().equals(code)) { +// return value; +// } +// } +// return null; +// } +// +// private Integer code; +// private String message; +// +// EnumOfflineActivityCalculationMode(Integer code, String message) { +// this.code = code; +// this.message = message; +// } +// +// public Integer getCode() { +// return code; +// } +// +// public String getMessage() { +// return message; +// } +//} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCountMode.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCountMode.java new file mode 100644 index 000000000..75f26a93b --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCountMode.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityCountMode { + + MERCHANT_MODEL(1, "商户联单"), + BUSINESS_MODEL(2, "业态联单"), + ; + + public static EnumOfflineActivityCountMode getEnum(Integer code) { + for (EnumOfflineActivityCountMode value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityCountMode(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMode.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMode.java new file mode 100644 index 000000000..b0b15df98 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMode.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityMode { + + ONE(1, "单笔订单计算"), + SUM(2, "订单总额计算"), + CONDITION_SUM(3, "筛选订单总额计算"), + ; + + public static EnumOfflineActivityMode getEnum(Integer code) { + for (EnumOfflineActivityMode value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityMode(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsModelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsModelMapper.java new file mode 100644 index 000000000..090f81c77 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsModelMapper.java @@ -0,0 +1,28 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityAwardsModel; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_awards_model()】的数据库操作Mapper +* @createDate 2024-08-06 13:20:56 +* @Entity com.iformall.domain.po.WxOfflineActivityAwardsModel +*/ +public interface WxOfflineActivityAwardsModelMapper extends CommonMapper { + + WxOfflineActivityAwardsModel selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel); + + Integer itemCount(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel); + + void delete(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel); +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemRecordMapper.java new file mode 100644 index 000000000..7263a6650 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemRecordMapper.java @@ -0,0 +1,25 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantItemRecord; +import com.iformall.domain.po.WxOfflineActivityRecordGrant; +import com.iformall.domain.vo.OfflineActivityGrantRecord; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item_record(线下活动参与登记与发放关联表)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityGrantItemRecord +*/ +public interface WxOfflineActivityGrantItemRecordMapper extends CommonMapper { + + void insertList(@Param("grantItemRecordList")List grantItemRecordList); + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsModelService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsModelService.java new file mode 100644 index 000000000..8da751274 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsModelService.java @@ -0,0 +1,21 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityAwardsItem; +import com.iformall.domain.po.WxOfflineActivityAwardsModel; +import com.iformall.domain.po.WxOfflineActivityItem; + +import java.util.List; +import java.util.Map; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_awards_model(线下活动奖项)】的数据库操作Service +* @createDate 2024-08-06 13:20:56 +*/ +public interface WxOfflineActivityAwardsModelService { + + void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsModelList, List activityAwardsModelSecondList); + + List getActivityAwardsModelList(Long activityItemId, String tenantId); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemRecordService.java new file mode 100644 index 000000000..71a300a2f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemRecordService.java @@ -0,0 +1,13 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityGrantAward; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item_record(线下活动参与登记与发放关联表)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityGrantItemRecordService { + + void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index 452a760e3..8f8a0a450 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -35,6 +35,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity activityAwardsItemDel.updateTenantInfo(activityItem); activityAwardsItemDel.setActivityItemId(activityItem.getId()); wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); + final IdWorker idWorker = IdWorker.get(); for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { if(awaItem.getId() == null){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsModelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsModelServiceImpl.java new file mode 100644 index 000000000..204fed93e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsModelServiceImpl.java @@ -0,0 +1,82 @@ +package com.iformall.service.impl; + +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxOfflineActivityAwardsModel; +import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.enums.EnumOfflineActivityAwardsModeType; +import com.iformall.mapper.WxOfflineActivityAwardsModelMapper; +import com.iformall.service.WxOfflineActivityAwardsModelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_awards_model(线下活动奖项)】的数据库操作Service实现 +* @createDate 2024-08-06 13:20:56 +*/ +@Service +public class WxOfflineActivityAwardsModelServiceImpl implements WxOfflineActivityAwardsModelService { + + @Autowired + WxOfflineActivityAwardsModelMapper wxOfflineActivityAwardsModelMapper; + + @Override + public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsModelList, + List activityAwardsModelSecondList) { + WxOfflineActivityAwardsModel activityAwardsModelDel = new WxOfflineActivityAwardsModel(); + activityAwardsModelDel.updateTenantInfo(activityItem); + activityAwardsModelDel.setActivityItemId(activityItem.getId()); + wxOfflineActivityAwardsModelMapper.delete(activityAwardsModelDel); + + final IdWorker idWorker = IdWorker.get(); + if(activityAwardsModelList != null && !activityAwardsModelList.isEmpty()) { + for (WxOfflineActivityAwardsModel awaModel : activityAwardsModelList) { + if(awaModel.getId() == null){ + awaModel.setId(idWorker.nextId()); + } + awaModel.updateTenantInfo(activityItem); + awaModel.setActivityItemId(activityItem.getId()); + awaModel.setModelType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + + if(awaModel.getCreateDate() == null){ + awaModel.setCreateDate(activityItem.getUpdateDate()); + } + awaModel.setUpdateDate(activityItem.getUpdateDate()); + wxOfflineActivityAwardsModelMapper.insert(awaModel); + } + } + + if(activityAwardsModelSecondList != null && !activityAwardsModelSecondList.isEmpty()){ + for (WxOfflineActivityAwardsModel secondAwaModel : activityAwardsModelSecondList) { + if(secondAwaModel.getId() == null){ + secondAwaModel.setId(idWorker.nextId()); + } + secondAwaModel.updateTenantInfo(activityItem); + secondAwaModel.setActivityItemId(activityItem.getId()); + secondAwaModel.setModelType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + + if(secondAwaModel.getCreateDate() == null){ + secondAwaModel.setCreateDate(activityItem.getUpdateDate()); + } + secondAwaModel.setUpdateDate(activityItem.getUpdateDate()); + wxOfflineActivityAwardsModelMapper.insert(secondAwaModel); + } + } + } + + @Override + public List getActivityAwardsModelList(Long activityItemId, String tenantId) { + WxOfflineActivityAwardsModel activityAwardsModelQuery = new WxOfflineActivityAwardsModel(); + activityAwardsModelQuery.setActivityItemId(activityItemId); + activityAwardsModelQuery.setTenantId(tenantId); + List activityAwardsModelList = wxOfflineActivityAwardsModelMapper.findList(activityAwardsModelQuery); + return activityAwardsModelList; + } + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 8a82aa967..bbdc58aba 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1,11 +1,9 @@ package com.iformall.service.impl; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; import com.alibaba.fastjson.JSON; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.domain.po.*; @@ -17,7 +15,6 @@ import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; import com.iformall.utils.DateUtils; -import com.iformall.utils.DownFileUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -28,8 +25,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; -import java.net.MalformedURLException; -import java.net.URL; import java.text.NumberFormat; import java.util.*; import java.util.function.Function; @@ -77,6 +72,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityRecordGrantService wxOfflineActivityRecordGrantService; + @Autowired + WxOfflineActivityGrantItemRecordService wxOfflineActivityGrantItemRecordService; + @Autowired WxOfflineActivityItemService wxOfflineActivityItemService; @@ -178,79 +176,56 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){ throw new MallinkException(Result.ERROR, "请检查活动状态"); } - //订单合并 + //订单合并计算 handlerGrantData(activity,wxOfflineActivityGrantAward,true); //奖项处理 List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); + if(wxOfflineActivityGrantAward.getActivityItemList() != null && !wxOfflineActivityGrantAward.getActivityItemList().isEmpty()){ + Map> ActivityItemRecordMap = wxOfflineActivityGrantAward.getActivityItemList().stream().collect(toMap(WxOfflineActivityItem::getId, WxOfflineActivityItem::getRecordIds)); + for (WxOfflineActivityItem activityItem : activityItemList) { + List records = ActivityItemRecordMap.get(activityItem.getId()); + if(records != null && !records.isEmpty()){ + activityItem.setRecordIds(records); + } + } + } wxOfflineActivityGrantAward.setActivityItemList(activityItemList); + // for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + //计算商户商管分别承担金额 + handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); - if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ - activityItem.setIsMeet(false); - continue; - } + //处理发奖数量 activityItem.setIsMeet(true); - //奖项限制数量 - int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ - limitCount = wxOfflineActivityGrantAward.getOrderMoneySum().divide(activityItem.getAwardsItemPrice(),0,BigDecimal.ROUND_HALF_DOWN).intValue(); - } - if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 - && activityItem.getAwardsItemLimit() < limitCount){ - limitCount = activityItem.getAwardsItemLimit(); + handleLotteryDrawCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); + if(activityItem.getRealAwardsItemLimit() == 0){ + activityItem.setIsMeet(false); } - activityItem.setRealAwardsItemLimit(limitCount); - //计算商户商管分别承担金额 - handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + //计算商户商管分别承担金额 handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); - List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); - WxOfflineActivityAwardsItem grantAwardsItem = null; - for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ - if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) - && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ - grantAwardsItem = awardsItem; - } - } - if(grantAwardsItem == null){ + //处理发放奖项 + handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList()); + activityItem.setIsMeet(true); + if(activityItem.getActivityGrantItemList() == null || activityItem.getActivityGrantItemList().isEmpty()){ activityItem.setIsMeet(false); - continue; } - activityItem.setIsMeet(true); - activityItem.setRealAwardsItemLimit(1); - - WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); - grantItem.setActivityItemId(activityItem.getId()); - grantItem.setActivityItemName(activityItem.getName()); - grantItem.setActivityItemType(activityItem.getType()); - grantItem.setAwardItamId(grantAwardsItem.getId()); - grantItem.setAwardName(grantAwardsItem.getName()); - grantItem.setAwardGrade(grantAwardsItem.getGrade()); - grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); - grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); - grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); - grantItem.setAwardCount(1); - grantItem.setAwardPrice(grantAwardsItem.getPrice()); - grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); - grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); - grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); - grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); - grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); - activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + BigDecimal cashBackPriceTotal = BigDecimal.ZERO; List grantItemList = new ArrayList<>(); List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 - if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ + if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ + for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ @@ -300,27 +275,33 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } }else{ + BigDecimal orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ + orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() + .filter(record -> activityItem.getRecordIds().contains(record.getId())) + .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + } WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ - if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) - && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ + if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ grantAwardsItem = awardsItem; } } if(grantAwardsItem != null){ //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + BigDecimal cashBackPrice = orderMoneySum .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } } - if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ - List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); - Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); - WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); + Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); + if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ + Map jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); + WxOfflineActivityAwardsItem grantAwardsSecondItem = jointCountMap.get(jointCount); if(grantAwardsSecondItem != null){ //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() @@ -348,7 +329,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setActivityItemName(activityItem.getName()); activityGrantCashBack.setActivityItemType(activityItem.getType()); activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); - activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); @@ -385,6 +365,150 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } + private void handleLotteryDrawCount(WxOfflineActivityItem activityItem, List recordList){ + + int limitCount = 0; + if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ + for(WxOfflineActivityRecord record :recordList){ + Integer record_count = 0; + for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ + if((activityAwardsModel.getMinAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMinAmount()) >= 0) + && (activityAwardsModel.getMaxAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMaxAmount()) <= 0)){ + record_count = activityAwardsModel.getAwardsCount(); + } + } + limitCount += record_count; + } + + }else{ + BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ + orderMoneySum = recordList.stream() + .filter(record -> activityItem.getRecordIds().contains(record.getId())) + .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + } + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ + limitCount = orderMoneySum.divide(activityItem.getAwardsItemPrice(),0, RoundingMode.HALF_DOWN).intValue(); + } + + } + + Integer jointCount = getJointCount(activityItem,recordList); + if(jointCount != 0){ + Map jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); + WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); + limitCount += activityAwardsModel.getAwardsCount(); + } + + if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 + && activityItem.getAwardsItemLimit() < limitCount){ + limitCount = activityItem.getAwardsItemLimit(); + } + activityItem.setRealAwardsItemLimit(limitCount); + } + + private void handleGiftAwards(WxOfflineActivityItem activityItem, List recordList){ + Map grantItemMap = new HashMap<>(); + + Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getGrade, Function.identity())); + + if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ + for(WxOfflineActivityRecord record :recordList){ + Integer awardsGrade = null; + for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ + if((activityAwardsModel.getMinAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMinAmount()) >= 0) + && (activityAwardsModel.getMaxAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMaxAmount()) <= 0)){ + awardsGrade = activityAwardsModel.getAwardsGrade(); + } + } + if(awardsGrade == null){ + break; + } + WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(awardsGrade); + if(wxOfflineActivityGrantItem != null){ + wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); + }else{ + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); + wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); + grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); + } + } + }else{ + BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ + orderMoneySum = recordList.stream() + .filter(record -> activityItem.getRecordIds().contains(record.getId())) + .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + } + Integer awardsGrade = null; + for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ + if((activityAwardsModel.getMinAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMinAmount()) >= 0) + && (activityAwardsModel.getMaxAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMaxAmount()) <= 0)){ + awardsGrade = activityAwardsModel.getAwardsGrade(); + } + } + if(awardsGrade != null){ + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); + WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); + grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); + } + } + + Integer jointCount = getJointCount(activityItem,recordList); + if(jointCount != 0){ + Map jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); + WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); + + WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade()); + if(wxOfflineActivityGrantItem != null){ + wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); + }else{ + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); + wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); + grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem); + } + } + + if(!grantItemMap.isEmpty()){ + activityItem.setActivityGrantItemList(new ArrayList<>(grantItemMap.values())); + } + } + + private Integer getJointCount(WxOfflineActivityItem activityItem, List recordList){ + Integer jointCount = 0; + if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(activityItem.getCountModel())){ + //商户联单 + List merchantIds = recordList.stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); + jointCount = merchantIds.size(); + }else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(activityItem.getCountModel())){ + //业态联单 + List businessIds = recordList.stream().map(WxOfflineActivityRecord::getBusinessId).distinct().collect(toList()); + jointCount = businessIds.size(); + } + return jointCount; + } + + private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem grantAwardsItem){ + WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); + grantItem.setActivityItemId(activityItem.getId()); + grantItem.setActivityItemName(activityItem.getName()); + grantItem.setActivityItemType(activityItem.getType()); + grantItem.setAwardItamId(grantAwardsItem.getId()); + grantItem.setAwardName(grantAwardsItem.getName()); + grantItem.setAwardGrade(grantAwardsItem.getGrade()); + grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); + grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); + grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); + grantItem.setAwardCount(1); + grantItem.setAwardPrice(grantAwardsItem.getPrice()); + grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); + grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); + grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); + grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); + grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); + return grantItem; + } + private WxOfflineActivityGrantCashBack getLastActivityGrantCashBack(WxOfflineActivityGrantAward wxOfflineActivityGrantAward,Long activityId,Long activityItemId){ Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); if(grantId == null){ @@ -424,6 +548,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } handlerGrantData(activity,wxOfflineActivityGrantAward,false); + Date now = new Date(); final IdWorker idWorker = IdWorker.get(); wxOfflineActivityGrantAward.setId(idWorker.nextId()); @@ -441,7 +566,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity upd.setUpdateDate(now); wxOfflineActivityGrantAwardMapper.updateStatusNo(upd); + //创建订单关联 wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); + wxOfflineActivityGrantItemRecordService.insertFromGrantAward(wxOfflineActivityGrantAward); //处理奖项 handlerGrantItem(activity,wxOfflineActivityGrantAward); @@ -518,6 +645,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); + int i = 0;//检查活动奖项 for (WxOfflineActivityItem activityItem : activityItemList) { @@ -530,13 +658,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantItemList = grantActivityItem.getActivityGrantItemList(); } - if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType()) + || EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ continue; } - if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ - throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); - } +// if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ +// throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); +// } boolean isRepeat = activityGrantItemList.stream() .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) @@ -545,20 +674,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); } - //奖项限制数量 - int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ - limitCount = wxOfflineActivityGrantAward.getOrderMoneySum().divide(activityItem.getAwardsItemPrice(),0,BigDecimal.ROUND_HALF_DOWN).intValue(); - } - if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 - && activityItem.getAwardsItemLimit() < limitCount){ - limitCount = activityItem.getAwardsItemLimit(); - } - if(limitCount != 0 && activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ - throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"奖券超过限制"); - } - - for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { if(grantGrantItem.getAwardItamId() == null){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); @@ -573,42 +688,40 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setActivityGrantItemList(activityGrantItemList); } - else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ - if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ - continue; - } - - if(activityGrantItemList.size() != 1){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); - } - WxOfflineActivityGrantItem grantGrantItem = activityGrantItemList.get(0); - if(grantGrantItem.getAwardItamId() == null){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); - } - WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); - if(awardsItem == null){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); - } -// if(awardsItem.getMinAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) < 0){ -// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数(金额不在范围类)"); +// else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ +// if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ +// continue; // } - if((awardsItem.getMinAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) < 0) - || (awardsItem.getMaxAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) > 0)){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数(金额不在范围类)"); - } - - handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); - - activityItem.setActivityGrantItemList(activityGrantItemList); - - } +// +// boolean isRepeat = activityGrantItemList.stream() +// .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) +// .entrySet().stream().anyMatch(e -> e.getValue() > 1); +// if(isRepeat){ +// throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); +// } +// +// for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { +// if(grantGrantItem.getAwardItamId() == null){ +// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); +// } +// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); +// if(awardsItem == null){ +// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); +// } +// +// handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); +// } +// +// activityItem.setActivityGrantItemList(activityGrantItemList); +// +// } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { BigDecimal cashBackPriceTotal = BigDecimal.ZERO; activityGrantItemList = new ArrayList<>(); List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 - if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ + if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ @@ -634,18 +747,24 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } }else{ + BigDecimal orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ + orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() + .filter(record -> activityItem.getRecordIds().contains(record.getId())) + .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + } WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ - if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) - && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ + if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ grantAwardsItem = awardsItem; } } if(grantAwardsItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + BigDecimal cashBackPrice = orderMoneySum .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); @@ -653,13 +772,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - } - if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ - List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); - Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); - WxOfflineActivityAwardsItem awardsSecondItem = collect.get(merchantIds.size()); + Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); + if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ + Map jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); + WxOfflineActivityAwardsItem awardsSecondItem = jointCountMap.get(jointCount); if(awardsSecondItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); //计算返现金额 @@ -671,7 +789,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - } BigDecimal prop = BigDecimal.ONE; @@ -707,7 +824,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setActivityItemName(activityItem.getName()); activityGrantCashBack.setActivityItemType(activityItem.getType()); activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); - activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemRecordServiceImpl.java new file mode 100644 index 000000000..8825aafb8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemRecordServiceImpl.java @@ -0,0 +1,53 @@ +package com.iformall.service.impl; + +import com.iformall.domain.po.*; +import com.iformall.mapper.WxOfflineActivityGrantItemRecordMapper; +import com.iformall.service.WxOfflineActivityGrantItemRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +import static java.util.stream.Collectors.toMap; + + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item_record(线下活动参与登记与发放关联表)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityGrantItemRecordServiceImpl implements WxOfflineActivityGrantItemRecordService { + + @Autowired + private WxOfflineActivityGrantItemRecordMapper wxOfflineActivityGrantItemRecordMapper; + + @Override + public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + List grantItemRecordList = new ArrayList<>(); + Map recordMap = wxOfflineActivityGrantAward.getRecordList().stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); + for (WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()) { + if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()) { + for(Long recordId : activityItem.getRecordIds()) { + WxOfflineActivityRecord record = recordMap.get(recordId); + WxOfflineActivityGrantItemRecord grantItemRecord = new WxOfflineActivityGrantItemRecord(); + grantItemRecord.updateTenantInfo(wxOfflineActivityGrantAward); + grantItemRecord.setActivityId(wxOfflineActivityGrantAward.getActivityId()); + grantItemRecord.setActivityItemId(activityItem.getId()); + grantItemRecord.setRecordId(record.getId()); + grantItemRecord.setGrantId(wxOfflineActivityGrantAward.getId()); + grantItemRecordList.add(grantItemRecord); + } + } + } + + wxOfflineActivityGrantItemRecordMapper.insertList(grantItemRecordList); + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java index 912c9896f..925e4ffaa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -3,18 +3,20 @@ package com.iformall.service.impl; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxOfflineActivity; import com.iformall.domain.po.WxOfflineActivityAwardsItem; +import com.iformall.domain.po.WxOfflineActivityAwardsModel; import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.enums.EnumOfflineActivityAwardsModeType; import com.iformall.enums.EnumOfflineActivityAwardsItemType; import com.iformall.enums.EnumOfflineActivityAwardsRule; import com.iformall.enums.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityAwardsItemService; +import com.iformall.service.WxOfflineActivityAwardsModelService; import com.iformall.service.WxOfflineActivityItemService; import com.iformall.mapper.WxOfflineActivityItemMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -33,6 +35,9 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe @Autowired WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; + @Autowired + WxOfflineActivityAwardsModelService wxOfflineActivityAwardsModelService; + @Override public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List activityItemList) { WxOfflineActivityItem activityItemDel = new WxOfflineActivityItem(); @@ -70,6 +75,9 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe activityItem.setUpdateDate(wxOfflineActivity.getUpdateDate()); wxOfflineActivityItemMapper.insert(activityItem); + //处理奖项模式 + wxOfflineActivityAwardsModelService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsModelList(),activityItem.getActivityAwardsModelSecondList()); + //处理奖项 wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList(),activityItem.getActivityAwardsItemSecondList()); } @@ -89,7 +97,13 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode())); }else{ item.setActivityAwardsItemList(activityAwardsItemList); + + List activityAwardsModelList = wxOfflineActivityAwardsModelService.getActivityAwardsModelList(item.getId(), tenantId); + Map> collect = activityAwardsModelList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsModel::getModelType)); + item.setActivityAwardsModelList(collect.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); + item.setActivityAwardsModelSecondList(collect.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); } + } return itemList; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index d29219dd9..8fe6041bd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -156,6 +156,8 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco userMap = mallUserInfoService.getUserMap(userInfoQ); } + Map bussinessMap = wxBusinessService.findAllMap(tenantEntity); + for (WxOfflineActivityRecord record : recordList) { if(record.getMerchantId() != null){ record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); @@ -164,6 +166,9 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco if(record.getAuditBy() != null){ record.setAuditByName(userMap.get(record.getAuditBy()).getName()); } + if(record.getBusinessId() != null){ + record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle()); + } if(activityId != null){ record.setGrantStatus(EnumYesOrNo.NO.getCode()); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsModelMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsModelMapper.xml new file mode 100644 index 000000000..fa113cb39 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsModelMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + activity_item_id,`model_type`,merchant_count, + min_amount,max_amount, + awards_count,awards_grade, + create_date,update_date + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `activity_item_id` = #{activityItemId} + + + + and `model_type` = #{modelType} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + delete from wx_offline_activity_awards_model + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml index c78fce734..badb1206f 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml @@ -16,7 +16,6 @@ - @@ -30,7 +29,7 @@ id,tenant_id,parent_tenant_id, grant_id,activity_id,activity_name, - activity_item_id,activity_item_name,activity_item_type,awards_item_rule,calculation_mode, + activity_item_id,activity_item_name,activity_item_type,awards_item_rule, create_date,update_date,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount @@ -78,7 +77,7 @@ (id, grant_id,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, - awards_item_rule,calculation_mode, + awards_item_rule, create_date,update_date ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) values diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemRecordMapper.xml new file mode 100644 index 000000000..7e40f3e99 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemRecordMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + tenant_id,parent_tenant_id,activity_id,activity_item_id, + record_id,grant_id + + + + insert into wx_offline_activity_grant_item_record + (`activity_id`,`activity_item_id`,`record_id`,`grant_id`) + values + + (#{item.activityId,jdbcType=BIGINT}, + #{item.activityItemId,jdbcType=BIGINT}, + #{item.recordId,jdbcType=BIGINT}, + #{item.grantId,jdbcType=BIGINT}) + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index 35490ea2f..1b8108a73 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -11,24 +11,26 @@ + + - + id,tenant_id,parent_tenant_id, - activity_id,`type`,`name`, - limit_money,awards_item_price,awards_item_limit,awards_item_count, - awards_item_rule,calculation_mode,max_amount,starting_tax_point,tax_points,create_date,update_date + activity_id,`type`,`name`,`mode_type`, + limit_money,awards_item_price,business_order_count,awards_item_limit,awards_item_count, + awards_item_rule,max_amount,starting_tax_point,tax_points,count_model,create_date,update_date