| @@ -0,0 +1,102 @@ | |||||
| 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`; | |||||
| ALTER TABLE `wx_offline_activity_grant_item` | |||||
| ADD COLUMN `grant_awards_mode` smallint(1) NULL COMMENT '发放奖励模式' AFTER `grant_id`; | |||||
| update wx_offline_activity_grant_item set grant_awards_mode = 2 | |||||
| where award_itam_id in (select id from wx_offline_activity_awards_item where `type` = 2); | |||||
| update wx_offline_activity_grant_item set grant_awards_mode = 1 where grant_awards_mode is null ; | |||||
| ALTER TABLE `wx_offline_activity_grant_item` | |||||
| MODIFY COLUMN `grant_awards_mode` smallint(1) NOT NULL COMMENT '发放奖励模式' AFTER `grant_id`; | |||||
| ALTER TABLE `wx_offline_activity_grant_settlement` | |||||
| ADD COLUMN `grant_item_id` bigint(20) NULL COMMENT '发放奖励记录id' AFTER `grant_id`, | |||||
| ADD COLUMN `grant_awards_mode` smallint(20) NULL COMMENT '发放奖励模式' AFTER `grant_item_id`; | |||||
| update wx_offline_activity_grant_settlement gs | |||||
| left join wx_offline_activity_grant_item gi | |||||
| on gs.grant_id = gi.grant_id and gs.activity_item_id = gi.activity_item_id and gs.award_itam_id = gi.award_itam_id | |||||
| set gs.grant_item_id = gi.id,gs.grant_awards_mode = gi.grant_awards_mode | |||||
| where gi.record_id is null; | |||||
| update wx_offline_activity_grant_settlement gs | |||||
| left join wx_offline_activity_grant_item gi | |||||
| on gs.grant_id = gi.grant_id and gs.activity_item_id = gi.activity_item_id and gs.award_itam_id = gi.award_itam_id and gs.record_id = gi.record_id | |||||
| set gs.grant_item_id = gi.id,gs.grant_awards_mode = gi.grant_awards_mode | |||||
| where gi.record_id is not null; | |||||
| ALTER TABLE `wx_offline_activity_grant_settlement` | |||||
| MODIFY COLUMN `grant_item_id` bigint(20) NOT NULL COMMENT '发放奖励记录id' AFTER `grant_id`, | |||||
| MODIFY COLUMN `grant_awards_mode` smallint(20) NOT NULL COMMENT '发放奖励模式' AFTER `grant_item_id`; | |||||
| @@ -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; | |||||
| } | |||||
| @@ -68,12 +68,6 @@ public class WxOfflineActivityGrantCashBack extends TenantEntity { | |||||
| @TableField(value = "awards_item_rule") | @TableField(value = "awards_item_rule") | ||||
| private Integer awardsItemRule; | private Integer awardsItemRule; | ||||
| /** | |||||
| * 返现计算模式 | |||||
| */ | |||||
| @TableField(value = "calculation_mode") | |||||
| private Integer calculationMode; | |||||
| /** | /** | ||||
| * 返现封顶金额 | * 返现封顶金额 | ||||
| */ | */ | ||||
| @@ -34,6 +34,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity { | |||||
| @TableField(value = "grant_id") | @TableField(value = "grant_id") | ||||
| private Long grantId; | private Long grantId; | ||||
| /** | |||||
| * 发放奖励模式 | |||||
| */ | |||||
| @TableField(value = "grant_awards_mode") | |||||
| private Integer grantAwardsMode; | |||||
| /** | /** | ||||
| * 活动id | * 活动id | ||||
| */ | */ | ||||
| @@ -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; | |||||
| } | |||||
| @@ -85,6 +85,18 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||||
| @TableField(value = "grant_id") | @TableField(value = "grant_id") | ||||
| private Long grantId; | private Long grantId; | ||||
| /** | |||||
| * 发放奖励记录id | |||||
| */ | |||||
| @TableField(value = "grant_item_id") | |||||
| private Long grantItemId; | |||||
| /** | |||||
| * 发放奖励模式 | |||||
| */ | |||||
| @TableField(value = "grant_awards_mode") | |||||
| private Integer grantAwardsMode; | |||||
| /** | /** | ||||
| * 发放总价值 | * 发放总价值 | ||||
| */ | */ | ||||
| @@ -46,6 +46,12 @@ public class WxOfflineActivityItem extends TenantEntity { | |||||
| @TableField(value = "name") | @TableField(value = "name") | ||||
| private String 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") | @TableField(value = "awards_item_price") | ||||
| private BigDecimal awardsItemPrice; | private BigDecimal awardsItemPrice; | ||||
| /** | |||||
| * 业态限制 | |||||
| */ | |||||
| @TableField(value = "business_order_count") | |||||
| private Integer businessOrderCount; | |||||
| /** | |||||
| * 模式规则 | |||||
| */ | |||||
| @TableField(exist = false) | |||||
| private List<WxOfflineActivityAwardsModel> activityAwardsModelList; | |||||
| @TableField(exist = false) | |||||
| private List<WxOfflineActivityAwardsModel> activityAwardsModelSecondList; | |||||
| /** | /** | ||||
| * 奖项数量限制(为0时无限制) | * 奖项数量限制(为0时无限制) | ||||
| */ | */ | ||||
| @@ -76,12 +96,6 @@ public class WxOfflineActivityItem extends TenantEntity { | |||||
| @TableField(value = "awards_item_rule") | @TableField(value = "awards_item_rule") | ||||
| private Integer awardsItemRule; | private Integer awardsItemRule; | ||||
| /** | |||||
| * 返现计算模式 | |||||
| */ | |||||
| @TableField(value = "calculation_mode") | |||||
| private Integer calculationMode; | |||||
| /** | /** | ||||
| * 返现封顶金额 | * 返现封顶金额 | ||||
| */ | */ | ||||
| @@ -100,6 +114,12 @@ public class WxOfflineActivityItem extends TenantEntity { | |||||
| @TableField(value = "tax_points") | @TableField(value = "tax_points") | ||||
| private BigDecimal taxPoints; | private BigDecimal taxPoints; | ||||
| /** | |||||
| * 联单模式 | |||||
| */ | |||||
| @TableField(value = "count_model") | |||||
| private Integer countModel; | |||||
| /** | /** | ||||
| * 创建时间 | * 创建时间 | ||||
| */ | */ | ||||
| @@ -154,4 +174,9 @@ public class WxOfflineActivityItem extends TenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private String cashBackMsg; | private String cashBackMsg; | ||||
| @TableField(exist = false) | |||||
| private List<Long> recordIds; | |||||
| @TableField(exist = false) | |||||
| private List<WxOfflineActivityRecord> recordList; | |||||
| } | } | ||||
| @@ -152,6 +152,8 @@ public class WxOfflineActivityRecord extends TenantEntity { | |||||
| @TableField(value = "business_id") | @TableField(value = "business_id") | ||||
| private Integer businessId; | private Integer businessId; | ||||
| @TableField(exist = false) | |||||
| private String businessName; | |||||
| /** | /** | ||||
| * 创建时间 | * 创建时间 | ||||
| @@ -22,7 +22,7 @@ public class OfflineActivityItemStatistics implements Serializable { | |||||
| private BigDecimal mallSumPrice;//商场承担 | private BigDecimal mallSumPrice;//商场承担 | ||||
| private BigDecimal merchantSumPrice;//商户承担 | private BigDecimal merchantSumPrice;//商户承担 | ||||
| private BigDecimal cashSumMoney;//订单返现* | |||||
| private BigDecimal cashSumMoney;//金额返现* | |||||
| private BigDecimal cashSecondSumMoney;//联单返现* | private BigDecimal cashSecondSumMoney;//联单返现* | ||||
| } | } | ||||
| @@ -1,37 +1,37 @@ | |||||
| package com.iformall.enums; | |||||
| /** | |||||
| * @author gongbiao | |||||
| */ | |||||
| public enum EnumOfflineActivityAwardsItemType { | |||||
| FIRST(1, "基本奖项"), | |||||
| SECOND(2, "第二奖项"), | |||||
| ; | |||||
| public static EnumOfflineActivityAwardsItemType getEnum(Integer code) { | |||||
| for (EnumOfflineActivityAwardsItemType value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumOfflineActivityAwardsItemType(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 EnumOfflineActivityAwardsItemType { | |||||
| // | |||||
| // FIRST(1, "基本奖项"), | |||||
| // SECOND(2, "第二奖项"), | |||||
| // ; | |||||
| // | |||||
| // public static EnumOfflineActivityAwardsItemType getEnum(Integer code) { | |||||
| // for (EnumOfflineActivityAwardsItemType value : values()) { | |||||
| // if (value.getCode().equals(code)) { | |||||
| // return value; | |||||
| // } | |||||
| // } | |||||
| // return null; | |||||
| // } | |||||
| // | |||||
| // private Integer code; | |||||
| // private String message; | |||||
| // | |||||
| // EnumOfflineActivityAwardsItemType(Integer code, String message) { | |||||
| // this.code = code; | |||||
| // this.message = message; | |||||
| // } | |||||
| // | |||||
| // public Integer getCode() { | |||||
| // return code; | |||||
| // } | |||||
| // | |||||
| // public String getMessage() { | |||||
| // return message; | |||||
| // } | |||||
| //} | |||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -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; | |||||
| // } | |||||
| //} | |||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -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, Long> { | |||||
| WxOfflineActivityAwardsModel selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||||
| List<WxOfflineActivityAwardsModel> findList(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel); | |||||
| Integer itemCount(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel); | |||||
| void delete(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel); | |||||
| } | |||||
| @@ -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<WxOfflineActivityGrantItemRecord, Long> { | |||||
| void insertList(@Param("grantItemRecordList")List<WxOfflineActivityGrantItemRecord> grantItemRecordList); | |||||
| } | |||||
| @@ -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<WxOfflineActivityAwardsModel> activityAwardsModelList, List<WxOfflineActivityAwardsModel> activityAwardsModelSecondList); | |||||
| List<WxOfflineActivityAwardsModel> getActivityAwardsModelList(Long activityItemId, String tenantId); | |||||
| } | |||||
| @@ -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); | |||||
| } | |||||
| @@ -3,7 +3,7 @@ package com.iformall.service.impl; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | import com.iformall.domain.po.WxOfflineActivityAwardsItem; | ||||
| import com.iformall.domain.po.WxOfflineActivityItem; | import com.iformall.domain.po.WxOfflineActivityItem; | ||||
| import com.iformall.enums.EnumOfflineActivityAwardsItemType; | |||||
| import com.iformall.enums.EnumOfflineActivityAwardsModeType; | |||||
| import com.iformall.enums.EnumOfflineActivityType; | import com.iformall.enums.EnumOfflineActivityType; | ||||
| import com.iformall.service.WxOfflineActivityAwardsItemService; | import com.iformall.service.WxOfflineActivityAwardsItemService; | ||||
| import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; | import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; | ||||
| @@ -35,6 +35,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity | |||||
| activityAwardsItemDel.updateTenantInfo(activityItem); | activityAwardsItemDel.updateTenantInfo(activityItem); | ||||
| activityAwardsItemDel.setActivityItemId(activityItem.getId()); | activityAwardsItemDel.setActivityItemId(activityItem.getId()); | ||||
| wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); | wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { | for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { | ||||
| if(awaItem.getId() == null){ | if(awaItem.getId() == null){ | ||||
| @@ -42,11 +43,10 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| awaItem.updateTenantInfo(activityItem); | awaItem.updateTenantInfo(activityItem); | ||||
| awaItem.setActivityItemId(activityItem.getId()); | awaItem.setActivityItemId(activityItem.getId()); | ||||
| awaItem.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); | |||||
| awaItem.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | ||||
| awaItem.setCashBackRatio(BigDecimal.ZERO); | awaItem.setCashBackRatio(BigDecimal.ZERO); | ||||
| awaItem.setGrade(-1); | |||||
| awaItem.setMinAmount(null); | awaItem.setMinAmount(null); | ||||
| awaItem.setMaxAmount(null); | awaItem.setMaxAmount(null); | ||||
| } | } | ||||
| @@ -73,7 +73,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| secondAwaItem.updateTenantInfo(activityItem); | secondAwaItem.updateTenantInfo(activityItem); | ||||
| secondAwaItem.setActivityItemId(activityItem.getId()); | secondAwaItem.setActivityItemId(activityItem.getId()); | ||||
| secondAwaItem.setType(EnumOfflineActivityAwardsItemType.SECOND.getCode()); | |||||
| secondAwaItem.setType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); | |||||
| if(secondAwaItem.getCreateDate() == null){ | if(secondAwaItem.getCreateDate() == null){ | ||||
| secondAwaItem.setCreateDate(activityItem.getUpdateDate()); | secondAwaItem.setCreateDate(activityItem.getUpdateDate()); | ||||
| @@ -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<WxOfflineActivityAwardsModel> activityAwardsModelList, | |||||
| List<WxOfflineActivityAwardsModel> 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<WxOfflineActivityAwardsModel> getActivityAwardsModelList(Long activityItemId, String tenantId) { | |||||
| WxOfflineActivityAwardsModel activityAwardsModelQuery = new WxOfflineActivityAwardsModel(); | |||||
| activityAwardsModelQuery.setActivityItemId(activityItemId); | |||||
| activityAwardsModelQuery.setTenantId(tenantId); | |||||
| List<WxOfflineActivityAwardsModel> activityAwardsModelList = wxOfflineActivityAwardsModelMapper.findList(activityAwardsModelQuery); | |||||
| return activityAwardsModelList; | |||||
| } | |||||
| } | |||||
| @@ -1,11 +1,9 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; | import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; | ||||
| import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; | |||||
| import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 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.IdWorker; | ||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| @@ -17,7 +15,6 @@ import com.iformall.exception.MallinkException; | |||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import com.iformall.utils.DownFileUtil; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -28,8 +25,6 @@ import javax.servlet.http.HttpServletRequest; | |||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | import java.math.RoundingMode; | ||||
| import java.net.MalformedURLException; | |||||
| import java.net.URL; | |||||
| import java.text.NumberFormat; | import java.text.NumberFormat; | ||||
| import java.util.*; | import java.util.*; | ||||
| import java.util.function.Function; | import java.util.function.Function; | ||||
| @@ -77,6 +72,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| @Autowired | @Autowired | ||||
| WxOfflineActivityRecordGrantService wxOfflineActivityRecordGrantService; | WxOfflineActivityRecordGrantService wxOfflineActivityRecordGrantService; | ||||
| @Autowired | |||||
| WxOfflineActivityGrantItemRecordService wxOfflineActivityGrantItemRecordService; | |||||
| @Autowired | @Autowired | ||||
| WxOfflineActivityItemService wxOfflineActivityItemService; | WxOfflineActivityItemService wxOfflineActivityItemService; | ||||
| @@ -178,80 +176,65 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){ | if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){ | ||||
| throw new MallinkException(Result.ERROR, "请检查活动状态"); | throw new MallinkException(Result.ERROR, "请检查活动状态"); | ||||
| } | } | ||||
| //订单合并 | |||||
| //订单合并计算 | |||||
| handlerGrantData(activity,wxOfflineActivityGrantAward,true); | handlerGrantData(activity,wxOfflineActivityGrantAward,true); | ||||
| //奖项处理 | |||||
| //订单参数处理 | |||||
| List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); | List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); | ||||
| if(wxOfflineActivityGrantAward.getActivityItemList() != null && !wxOfflineActivityGrantAward.getActivityItemList().isEmpty()){ | |||||
| Map<Long, List<Long>> ActivityItemRecordMap = wxOfflineActivityGrantAward.getActivityItemList().stream().collect(toMap(WxOfflineActivityItem::getId, WxOfflineActivityItem::getRecordIds)); | |||||
| for (WxOfflineActivityItem activityItem : activityItemList) { | |||||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||||
| List<Long> records = ActivityItemRecordMap.get(activityItem.getId()); | |||||
| if(records == null || records.isEmpty()){ | |||||
| throw new MallinkException(Result.ERROR, "发奖未选择订单"); | |||||
| } | |||||
| activityItem.setRecordIds(records); | |||||
| List<WxOfflineActivityRecord> collect = wxOfflineActivityGrantAward.getRecordList().stream() | |||||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())).collect(toList()); | |||||
| activityItem.setRecordList(collect); | |||||
| }else{ | |||||
| activityItem.setRecordList(wxOfflineActivityGrantAward.getRecordList()); | |||||
| } | |||||
| } | |||||
| } | |||||
| wxOfflineActivityGrantAward.setActivityItemList(activityItemList); | wxOfflineActivityGrantAward.setActivityItemList(activityItemList); | ||||
| // | |||||
| for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ | for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ | ||||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | 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); | 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,activityItem.getRecordList()); | |||||
| if(activityItem.getRealAwardsItemLimit() == 0){ | |||||
| activityItem.setIsMeet(false); | |||||
| } | } | ||||
| activityItem.setRealAwardsItemLimit(limitCount); | |||||
| //计算商户商管分别承担金额 | |||||
| handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); | |||||
| } | } | ||||
| else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | ||||
| //计算商户商管分别承担金额 | //计算商户商管分别承担金额 | ||||
| handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); | handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); | ||||
| List<WxOfflineActivityAwardsItem> 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); | 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())) { | else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | ||||
| BigDecimal cashBackPriceTotal = BigDecimal.ZERO; | BigDecimal cashBackPriceTotal = BigDecimal.ZERO; | ||||
| List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); | List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); | ||||
| List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); | List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); | ||||
| //单笔订单计算 | //单笔订单计算 | ||||
| if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ | |||||
| for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ | |||||
| if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ | |||||
| for (WxOfflineActivityRecord record : activityItem.getRecordList()){ | |||||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | WxOfflineActivityAwardsItem grantAwardsItem = null; | ||||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | ||||
| if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) | if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) | ||||
| @@ -300,27 +283,37 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| }else{ | }else{ | ||||
| BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| // if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||||
| // if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ | |||||
| // orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() | |||||
| // .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||||
| // .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| // }else{ | |||||
| // orderMoneySum = BigDecimal.ZERO; | |||||
| // } | |||||
| // } | |||||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | WxOfflineActivityAwardsItem grantAwardsItem = null; | ||||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | 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; | grantAwardsItem = awardsItem; | ||||
| } | } | ||||
| } | } | ||||
| if(grantAwardsItem != null){ | if(grantAwardsItem != null){ | ||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||||
| BigDecimal cashBackPrice = orderMoneySum | |||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| } | } | ||||
| if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ | |||||
| List<Long> merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); | |||||
| Map<Integer, WxOfflineActivityAwardsItem> 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<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); | |||||
| WxOfflineActivityAwardsItem grantAwardsSecondItem = jointCountMap.get(jointCount); | |||||
| if(grantAwardsSecondItem != null){ | if(grantAwardsSecondItem != null){ | ||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| @@ -348,7 +341,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| activityGrantCashBack.setActivityItemName(activityItem.getName()); | activityGrantCashBack.setActivityItemName(activityItem.getName()); | ||||
| activityGrantCashBack.setActivityItemType(activityItem.getType()); | activityGrantCashBack.setActivityItemType(activityItem.getType()); | ||||
| activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | ||||
| activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); | |||||
| activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | ||||
| activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | ||||
| activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | ||||
| @@ -385,6 +377,184 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| } | } | ||||
| private void handleLotteryDrawCount(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> 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())){ | |||||
| // if(activityItem.getRecordList() != null && !activityItem.getRecordList().isEmpty()){ | |||||
| // orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| // }else{ | |||||
| // orderMoneySum = BigDecimal.ZERO; | |||||
| // } | |||||
| // } | |||||
| 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<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); | |||||
| WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); | |||||
| if(activityAwardsModel != null && activityAwardsModel.getAwardsCount() != null){ | |||||
| 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<WxOfflineActivityRecord> recordList){ | |||||
| List<WxOfflineActivityGrantItem> grantItem = new ArrayList<>(); | |||||
| Map<Integer,WxOfflineActivityGrantItem> grantItemMap = new HashMap<>(); | |||||
| Map<Integer, WxOfflineActivityAwardsItem> 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); | |||||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); | |||||
| if(wxOfflineActivityGrantItem != null){ | |||||
| wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); | |||||
| wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount()))); | |||||
| }else{ | |||||
| if(awardsItem != null){ | |||||
| wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, 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())){ | |||||
| if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ | |||||
| orderMoneySum = recordList.stream() | |||||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||||
| .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| }else{ | |||||
| orderMoneySum = BigDecimal.ZERO; | |||||
| } | |||||
| } | |||||
| 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); | |||||
| if(awardsItem != null){ | |||||
| WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem); | |||||
| grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); | |||||
| } | |||||
| } | |||||
| } | |||||
| if(!grantItemMap.isEmpty()){ | |||||
| grantItem.addAll(grantItemMap.values()); | |||||
| } | |||||
| //这里是联单, 按所有订单计算 | |||||
| WxOfflineActivityGrantItem wxOfflineActivityGrantItem = null; | |||||
| Integer jointCount = getJointCount(activityItem,recordList); | |||||
| if(jointCount != 0){ | |||||
| Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); | |||||
| WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); | |||||
| if(activityAwardsModel != null && activityAwardsModel.getAwardsGrade() != null){ | |||||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); | |||||
| if(awardsItem != null){ | |||||
| wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, EnumOfflineActivityAwardsModeType.COUNT,awardsItem); | |||||
| } | |||||
| // WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade()); | |||||
| // WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); | |||||
| // if(wxOfflineActivityGrantItem != null){ | |||||
| // wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); | |||||
| // wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount()))); | |||||
| // }else{ | |||||
| // if(awardsItem != null){ | |||||
| // wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); | |||||
| // grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem); | |||||
| // } | |||||
| // } | |||||
| } | |||||
| } | |||||
| if(wxOfflineActivityGrantItem != null){ | |||||
| grantItem.add(wxOfflineActivityGrantItem); | |||||
| } | |||||
| activityItem.setActivityGrantItemList(grantItem); | |||||
| } | |||||
| private Integer getJointCount(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ | |||||
| Integer jointCount = 0; | |||||
| if(recordList == null || recordList.isEmpty()){ | |||||
| return jointCount; | |||||
| } | |||||
| if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(activityItem.getCountModel())){ | |||||
| //商户联单 | |||||
| List<Long> merchantIds = recordList.stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); | |||||
| jointCount = merchantIds.size(); | |||||
| }else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(activityItem.getCountModel())){ | |||||
| //业态联单 | |||||
| List<Integer> businessIds = recordList.stream().map(WxOfflineActivityRecord::getBusinessId).distinct().collect(toList()); | |||||
| jointCount = businessIds.size(); | |||||
| } | |||||
| return jointCount; | |||||
| } | |||||
| private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivityAwardsItem grantAwardsItem){ | |||||
| WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); | |||||
| grantItem.setGrantAwardsMode(modeType.getCode()); | |||||
| 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){ | private WxOfflineActivityGrantCashBack getLastActivityGrantCashBack(WxOfflineActivityGrantAward wxOfflineActivityGrantAward,Long activityId,Long activityItemId){ | ||||
| Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); | Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); | ||||
| if(grantId == null){ | if(grantId == null){ | ||||
| @@ -424,6 +594,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| handlerGrantData(activity,wxOfflineActivityGrantAward,false); | handlerGrantData(activity,wxOfflineActivityGrantAward,false); | ||||
| Date now = new Date(); | Date now = new Date(); | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| wxOfflineActivityGrantAward.setId(idWorker.nextId()); | wxOfflineActivityGrantAward.setId(idWorker.nextId()); | ||||
| @@ -441,7 +612,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| upd.setUpdateDate(now); | upd.setUpdateDate(now); | ||||
| wxOfflineActivityGrantAwardMapper.updateStatusNo(upd); | wxOfflineActivityGrantAwardMapper.updateStatusNo(upd); | ||||
| //创建订单关联 | |||||
| wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); | wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); | ||||
| wxOfflineActivityGrantItemRecordService.insertFromGrantAward(wxOfflineActivityGrantAward); | |||||
| //处理奖项 | //处理奖项 | ||||
| handlerGrantItem(activity,wxOfflineActivityGrantAward); | handlerGrantItem(activity,wxOfflineActivityGrantAward); | ||||
| @@ -518,13 +691,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); | List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); | ||||
| int i = 0;//检查活动奖项 | int i = 0;//检查活动奖项 | ||||
| for (WxOfflineActivityItem activityItem : activityItemList) { | for (WxOfflineActivityItem activityItem : activityItemList) { | ||||
| Map<Long, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); | Map<Long, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); | ||||
| //获取奖项 | |||||
| WxOfflineActivityItem grantActivityItem = grantActivityItemMap.get(activityItem.getId()); | WxOfflineActivityItem grantActivityItem = grantActivityItemMap.get(activityItem.getId()); | ||||
| //订单参数处理 | |||||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||||
| if(grantActivityItem.getRecordIds() == null || grantActivityItem.getRecordIds().isEmpty()){ | |||||
| throw new MallinkException(Result.ERROR, "发奖未选择订单"); | |||||
| } | |||||
| activityItem.setRecordIds(grantActivityItem.getRecordIds()); | |||||
| List<WxOfflineActivityRecord> collect = wxOfflineActivityGrantAward.getRecordList().stream() | |||||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())).collect(toList()); | |||||
| activityItem.setRecordList(collect); | |||||
| }else{ | |||||
| activityItem.setRecordList(wxOfflineActivityGrantAward.getRecordList()); | |||||
| } | |||||
| //获取发放奖项 | |||||
| List<WxOfflineActivityGrantItem> activityGrantItemList = null; | List<WxOfflineActivityGrantItem> activityGrantItemList = null; | ||||
| if(grantActivityItem != null){ | if(grantActivityItem != null){ | ||||
| activityGrantItemList = grantActivityItem.getActivityGrantItemList(); | activityGrantItemList = grantActivityItem.getActivityGrantItemList(); | ||||
| @@ -534,30 +721,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | ||||
| continue; | continue; | ||||
| } | } | ||||
| if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ | |||||
| throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); | |||||
| } | |||||
| boolean isRepeat = activityGrantItemList.stream() | |||||
| .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) | |||||
| .entrySet().stream().anyMatch(e -> e.getValue() > 1); | |||||
| if(isRepeat){ | |||||
| 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()+"奖券超过限制"); | |||||
| } | |||||
| // if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ | |||||
| // throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); | |||||
| // } | |||||
| // 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) { | for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { | ||||
| if(grantGrantItem.getAwardItamId() == null){ | if(grantGrantItem.getAwardItamId() == null){ | ||||
| @@ -567,40 +740,22 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| if(awardsItem == null){ | if(awardsItem == null){ | ||||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | ||||
| } | } | ||||
| grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | ||||
| } | } | ||||
| activityItem.setActivityGrantItemList(activityGrantItemList); | activityItem.setActivityGrantItemList(activityGrantItemList); | ||||
| } | } | ||||
| else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | ||||
| if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | |||||
| handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList()); | |||||
| if(activityItem.getActivityGrantItemList().isEmpty()){ | |||||
| continue; | 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()+"奖项参数(金额不在范围类)"); | |||||
| // } | |||||
| 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()+"奖项参数(金额不在范围类)"); | |||||
| for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { | |||||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); | |||||
| handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | |||||
| } | } | ||||
| handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | |||||
| activityItem.setActivityGrantItemList(activityGrantItemList); | |||||
| } | } | ||||
| else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | ||||
| BigDecimal cashBackPriceTotal = BigDecimal.ZERO; | BigDecimal cashBackPriceTotal = BigDecimal.ZERO; | ||||
| @@ -608,8 +763,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); | List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); | ||||
| //单笔订单计算 | //单笔订单计算 | ||||
| if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ | |||||
| for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ | |||||
| if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ | |||||
| for (WxOfflineActivityRecord record : activityItem.getRecordList()){ | |||||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | WxOfflineActivityAwardsItem grantAwardsItem = null; | ||||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | ||||
| if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) | if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) | ||||
| @@ -620,6 +775,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| if(grantAwardsItem != null){ | if(grantAwardsItem != null){ | ||||
| WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | ||||
| grantGrantItem.setRecordId(record.getId()); | grantGrantItem.setRecordId(record.getId()); | ||||
| grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = record.getOrderMoney() | BigDecimal cashBackPrice = record.getOrderMoney() | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| @@ -634,18 +790,29 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| }else{ | }else{ | ||||
| BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| // if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||||
| // if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ | |||||
| // orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() | |||||
| // .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||||
| // .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| // }else{ | |||||
| // orderMoneySum = BigDecimal.ZERO; | |||||
| // } | |||||
| // } | |||||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | WxOfflineActivityAwardsItem grantAwardsItem = null; | ||||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | 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; | grantAwardsItem = awardsItem; | ||||
| } | } | ||||
| } | } | ||||
| if(grantAwardsItem != null){ | if(grantAwardsItem != null){ | ||||
| WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | ||||
| grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||||
| BigDecimal cashBackPrice = orderMoneySum | |||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| grantAwardsItem.setPrice(cashBackPrice); | grantAwardsItem.setPrice(cashBackPrice); | ||||
| handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | ||||
| @@ -653,15 +820,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| activityGrantItemList.add(grantGrantItem); | activityGrantItemList.add(grantGrantItem); | ||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| } | } | ||||
| if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ | |||||
| List<Long> merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); | |||||
| Map<Integer, WxOfflineActivityAwardsItem> 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<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); | |||||
| WxOfflineActivityAwardsItem awardsSecondItem = jointCountMap.get(jointCount); | |||||
| if(awardsSecondItem != null){ | if(awardsSecondItem != null){ | ||||
| WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | ||||
| grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.COUNT.getCode()); | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| @@ -671,7 +838,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| activityGrantItemList.add(grantGrantItem); | activityGrantItemList.add(grantGrantItem); | ||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| } | } | ||||
| BigDecimal prop = BigDecimal.ONE; | BigDecimal prop = BigDecimal.ONE; | ||||
| @@ -707,7 +873,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| activityGrantCashBack.setActivityItemName(activityItem.getName()); | activityGrantCashBack.setActivityItemName(activityItem.getName()); | ||||
| activityGrantCashBack.setActivityItemType(activityItem.getType()); | activityGrantCashBack.setActivityItemType(activityItem.getType()); | ||||
| activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | ||||
| activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); | |||||
| activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | ||||
| activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | ||||
| activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | ||||
| @@ -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<WxOfflineActivityGrantItemRecord> grantItemRecordList = new ArrayList<>(); | |||||
| Map<Long, WxOfflineActivityRecord> 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); | |||||
| } | |||||
| } | |||||
| @@ -8,6 +8,7 @@ import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.OfflineActivitySettlement; | import com.iformall.domain.vo.OfflineActivitySettlement; | ||||
| import com.iformall.domain.vo.OfflineActivitySettlementStatistics; | import com.iformall.domain.vo.OfflineActivitySettlementStatistics; | ||||
| import com.iformall.enums.EnumOfflineActivityMode; | |||||
| import com.iformall.enums.EnumOfflineActivityStatus; | import com.iformall.enums.EnumOfflineActivityStatus; | ||||
| import com.iformall.enums.EnumYesOrNo; | import com.iformall.enums.EnumYesOrNo; | ||||
| import com.iformall.mapper.WxMerchantMapper; | import com.iformall.mapper.WxMerchantMapper; | ||||
| @@ -57,24 +58,46 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| Date now = new Date(); | Date now = new Date(); | ||||
| Map<Long, WxOfflineActivityRecord> recordMap = wxOfflineActivityGrantAward.getRecordList().stream().collect(Collectors.toMap(WxOfflineActivityRecord::getId, Function.identity())); | Map<Long, WxOfflineActivityRecord> recordMap = wxOfflineActivityGrantAward.getRecordList().stream().collect(Collectors.toMap(WxOfflineActivityRecord::getId, Function.identity())); | ||||
| //获取订单占比(占比最少的订单用减法,尽量减少误差) | //获取订单占比(占比最少的订单用减法,尽量减少误差) | ||||
| List<WxOfflineActivityRecord> recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparing(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); | |||||
| int size = recordDescList.size() - 1; | |||||
| BigDecimal lastRatio = new BigDecimal(100); | |||||
| for(int i=0; i<size; i++){ | |||||
| WxOfflineActivityRecord record = recordDescList.get(i); | |||||
| BigDecimal orderRatio = record.getOrderMoney() | |||||
| .divide(wxOfflineActivityGrantAward.getOrderMoneySum(),4,RoundingMode.HALF_UP) | |||||
| .multiply(new BigDecimal(100)); | |||||
| record.setOrderRatio(orderRatio); | |||||
| lastRatio = lastRatio.subtract(orderRatio); | |||||
| } | |||||
| recordDescList.get(size).setOrderRatio(lastRatio); | |||||
| // List<WxOfflineActivityRecord> recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparing(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); | |||||
| // int size = recordDescList.size() - 1; | |||||
| // BigDecimal lastRatio = new BigDecimal(100); | |||||
| // for(int i=0; i<size; i++){ | |||||
| // WxOfflineActivityRecord record = recordDescList.get(i); | |||||
| // BigDecimal orderRatio = record.getOrderMoney() | |||||
| // .divide(wxOfflineActivityGrantAward.getOrderMoneySum(),4,RoundingMode.HALF_UP) | |||||
| // .multiply(new BigDecimal(100)); | |||||
| // record.setOrderRatio(orderRatio); | |||||
| // lastRatio = lastRatio.subtract(orderRatio); | |||||
| // } | |||||
| // recordDescList.get(size).setOrderRatio(lastRatio); | |||||
| for (WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()) { | for (WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()) { | ||||
| if(activityItem.getActivityGrantItemList() == null){ | if(activityItem.getActivityGrantItemList() == null){ | ||||
| continue; | continue; | ||||
| } | } | ||||
| //获取订单占比(占比最少的订单用减法,尽量减少误差) | |||||
| List<WxOfflineActivityRecord> recordDescList = activityItem.getRecordList().stream().sorted(Comparator.comparing(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); | |||||
| // if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType()) | |||||
| // && activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ | |||||
| // recordDescList = wxOfflineActivityGrantAward.getRecordList().stream() | |||||
| // .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||||
| // .sorted(Comparator.comparing(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); | |||||
| // } | |||||
| BigDecimal orderMoneySum = recordDescList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| int size = recordDescList.size() - 1; | |||||
| BigDecimal lastRatio = new BigDecimal(100); | |||||
| for(int i=0; i<size; i++){ | |||||
| WxOfflineActivityRecord record = recordDescList.get(i); | |||||
| BigDecimal orderRatio = record.getOrderMoney() | |||||
| .divide(orderMoneySum,4,RoundingMode.HALF_UP) | |||||
| .multiply(new BigDecimal(100)); | |||||
| record.setOrderRatio(orderRatio); | |||||
| lastRatio = lastRatio.subtract(orderRatio); | |||||
| } | |||||
| recordDescList.get(size).setOrderRatio(lastRatio); | |||||
| for (WxOfflineActivityGrantItem wxOfflineActivityGrantItem : activityItem.getActivityGrantItemList()) { | for (WxOfflineActivityGrantItem wxOfflineActivityGrantItem : activityItem.getActivityGrantItemList()) { | ||||
| List<WxOfflineActivityGrantSettlement> itemSettlementList = new ArrayList<>(); | List<WxOfflineActivityGrantSettlement> itemSettlementList = new ArrayList<>(); | ||||
| if(wxOfflineActivityGrantItem.getRecordId() != null){ | if(wxOfflineActivityGrantItem.getRecordId() != null){ | ||||
| @@ -93,6 +116,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); | settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); | ||||
| settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); | settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); | ||||
| settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); | settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); | ||||
| settlement.setGrantItemId(wxOfflineActivityGrantItem.getId()); | |||||
| settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode()); | |||||
| settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); | settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); | ||||
| settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); | settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); | ||||
| settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); | settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); | ||||
| @@ -122,6 +147,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); | settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); | ||||
| settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); | settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); | ||||
| settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); | settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); | ||||
| settlement.setGrantItemId(wxOfflineActivityGrantItem.getId()); | |||||
| settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode()); | |||||
| settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); | settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); | ||||
| settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); | settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); | ||||
| settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); | settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); | ||||
| @@ -3,18 +3,19 @@ package com.iformall.service.impl; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.WxOfflineActivity; | import com.iformall.domain.po.WxOfflineActivity; | ||||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | import com.iformall.domain.po.WxOfflineActivityAwardsItem; | ||||
| import com.iformall.domain.po.WxOfflineActivityAwardsModel; | |||||
| import com.iformall.domain.po.WxOfflineActivityItem; | import com.iformall.domain.po.WxOfflineActivityItem; | ||||
| import com.iformall.enums.EnumOfflineActivityAwardsItemType; | |||||
| import com.iformall.enums.EnumOfflineActivityAwardsModeType; | |||||
| import com.iformall.enums.EnumOfflineActivityAwardsRule; | import com.iformall.enums.EnumOfflineActivityAwardsRule; | ||||
| import com.iformall.enums.EnumOfflineActivityType; | import com.iformall.enums.EnumOfflineActivityType; | ||||
| import com.iformall.service.WxOfflineActivityAwardsItemService; | import com.iformall.service.WxOfflineActivityAwardsItemService; | ||||
| import com.iformall.service.WxOfflineActivityAwardsModelService; | |||||
| import com.iformall.service.WxOfflineActivityItemService; | import com.iformall.service.WxOfflineActivityItemService; | ||||
| import com.iformall.mapper.WxOfflineActivityItemMapper; | import com.iformall.mapper.WxOfflineActivityItemMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.util.Collections; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| @@ -33,6 +34,9 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe | |||||
| @Autowired | @Autowired | ||||
| WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; | WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; | ||||
| @Autowired | |||||
| WxOfflineActivityAwardsModelService wxOfflineActivityAwardsModelService; | |||||
| @Override | @Override | ||||
| public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityItem> activityItemList) { | public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityItem> activityItemList) { | ||||
| WxOfflineActivityItem activityItemDel = new WxOfflineActivityItem(); | WxOfflineActivityItem activityItemDel = new WxOfflineActivityItem(); | ||||
| @@ -70,6 +74,9 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe | |||||
| activityItem.setUpdateDate(wxOfflineActivity.getUpdateDate()); | activityItem.setUpdateDate(wxOfflineActivity.getUpdateDate()); | ||||
| wxOfflineActivityItemMapper.insert(activityItem); | wxOfflineActivityItemMapper.insert(activityItem); | ||||
| //处理奖项模式 | |||||
| wxOfflineActivityAwardsModelService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsModelList(),activityItem.getActivityAwardsModelSecondList()); | |||||
| //处理奖项 | //处理奖项 | ||||
| wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList(),activityItem.getActivityAwardsItemSecondList()); | wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList(),activityItem.getActivityAwardsItemSecondList()); | ||||
| } | } | ||||
| @@ -85,11 +92,17 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe | |||||
| List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId); | List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId); | ||||
| if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.getType())){ | if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.getType())){ | ||||
| Map<Integer, List<WxOfflineActivityAwardsItem>> collect = activityAwardsItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsItem::getType)); | Map<Integer, List<WxOfflineActivityAwardsItem>> collect = activityAwardsItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsItem::getType)); | ||||
| item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsItemType.FIRST.getCode())); | |||||
| item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode())); | |||||
| item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); | |||||
| item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); | |||||
| }else{ | }else{ | ||||
| item.setActivityAwardsItemList(activityAwardsItemList); | item.setActivityAwardsItemList(activityAwardsItemList); | ||||
| List<WxOfflineActivityAwardsModel> activityAwardsModelList = wxOfflineActivityAwardsModelService.getActivityAwardsModelList(item.getId(), tenantId); | |||||
| Map<Integer, List<WxOfflineActivityAwardsModel>> collect = activityAwardsModelList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsModel::getModelType)); | |||||
| item.setActivityAwardsModelList(collect.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); | |||||
| item.setActivityAwardsModelSecondList(collect.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); | |||||
| } | } | ||||
| } | } | ||||
| return itemList; | return itemList; | ||||
| } | } | ||||
| @@ -3,7 +3,7 @@ package com.iformall.service.impl; | |||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.vo.*; | import com.iformall.domain.vo.*; | ||||
| import com.iformall.enums.EnumOfflineActivityAwardsItemType; | |||||
| import com.iformall.enums.EnumOfflineActivityAwardsModeType; | |||||
| import com.iformall.enums.EnumOfflineActivityType; | import com.iformall.enums.EnumOfflineActivityType; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| @@ -78,7 +78,7 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi | |||||
| WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem(); | WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem(); | ||||
| activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo); | activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo); | ||||
| activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId()); | activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId()); | ||||
| activityAwardsItemQ.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); | |||||
| activityAwardsItemQ.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQ); | List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQ); | ||||
| if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()) { | if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()) { | ||||
| return activityAwardsItemList.stream().map(WxOfflineActivityAwardsItem::getId).collect(Collectors.toList()); | return activityAwardsItemList.stream().map(WxOfflineActivityAwardsItem::getId).collect(Collectors.toList()); | ||||
| @@ -156,6 +156,8 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||||
| userMap = mallUserInfoService.getUserMap(userInfoQ); | userMap = mallUserInfoService.getUserMap(userInfoQ); | ||||
| } | } | ||||
| Map<Integer, WxBusiness> bussinessMap = wxBusinessService.findAllMap(tenantEntity); | |||||
| for (WxOfflineActivityRecord record : recordList) { | for (WxOfflineActivityRecord record : recordList) { | ||||
| if(record.getMerchantId() != null){ | if(record.getMerchantId() != null){ | ||||
| record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); | record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); | ||||
| @@ -164,6 +166,9 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||||
| if(record.getAuditBy() != null){ | if(record.getAuditBy() != null){ | ||||
| record.setAuditByName(userMap.get(record.getAuditBy()).getName()); | record.setAuditByName(userMap.get(record.getAuditBy()).getName()); | ||||
| } | } | ||||
| if(record.getBusinessId() != null){ | |||||
| record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle()); | |||||
| } | |||||
| if(activityId != null){ | if(activityId != null){ | ||||
| record.setGrantStatus(EnumYesOrNo.NO.getCode()); | record.setGrantStatus(EnumYesOrNo.NO.getCode()); | ||||
| @@ -0,0 +1,79 @@ | |||||
| <?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.iformall.mapper.WxOfflineActivityAwardsModelMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityAwardsModel"> | |||||
| <id property="id" column="id" jdbcType="BIGINT"/> | |||||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||||
| <result property="modelType" column="model_type" jdbcType="INTEGER"/> | |||||
| <result property="merchantCount" column="merchant_count" jdbcType="INTEGER"/> | |||||
| <result property="minAmount" column="min_amount" jdbcType="DECIMAL"/> | |||||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | |||||
| <result property="awardsCount" column="awards_count" jdbcType="INTEGER"/> | |||||
| <result property="awardsGrade" column="awards_grade" jdbcType="INTEGER"/> | |||||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| 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 | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != activityItemId "> | |||||
| and `activity_item_id` = #{activityItemId} | |||||
| </if> | |||||
| <if test=" null != modelType "> | |||||
| and `model_type` = #{modelType} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||||
| </sql> | |||||
| <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_offline_activity_awards_model where id = #{id} and tenant_id=#{tenantId} | |||||
| </select> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivityAwardsModel" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_offline_activity_awards_model | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </select> | |||||
| <select id="itemCount" parameterType="com.iformall.domain.po.WxOfflineActivityAwardsModel" resultType="Integer"> | |||||
| select count(1) from wx_offline_activity_awards_model where `activity_item_id` = #{activityItemId} and tenant_id=#{tenantId} | |||||
| </select> | |||||
| <delete id="delete" parameterType="com.iformall.domain.po.WxOfflineActivityAwardsModel"> | |||||
| delete from wx_offline_activity_awards_model | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </delete> | |||||
| </mapper> | |||||
| @@ -16,7 +16,6 @@ | |||||
| <result property="activityItemType" column="activity_item_type" jdbcType="SMALLINT"/> | <result property="activityItemType" column="activity_item_type" jdbcType="SMALLINT"/> | ||||
| <result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/> | <result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/> | ||||
| <result property="calculationMode" column="calculation_mode" jdbcType="SMALLINT"/> | |||||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | ||||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | ||||
| @@ -30,7 +29,7 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| id,tenant_id,parent_tenant_id, | id,tenant_id,parent_tenant_id, | ||||
| grant_id,activity_id,activity_name, | 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 | create_date,update_date,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount | ||||
| </sql> | </sql> | ||||
| @@ -78,7 +77,7 @@ | |||||
| (id, | (id, | ||||
| grant_id,activity_id,activity_name, | grant_id,activity_id,activity_name, | ||||
| activity_item_id,activity_item_name,activity_item_type, | activity_item_id,activity_item_name,activity_item_type, | ||||
| awards_item_rule,calculation_mode, | |||||
| awards_item_rule, | |||||
| create_date,update_date | create_date,update_date | ||||
| ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) | ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) | ||||
| values | values | ||||
| @@ -86,7 +85,7 @@ | |||||
| (#{item.id,jdbcType=BIGINT}, | (#{item.id,jdbcType=BIGINT}, | ||||
| #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, | #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, | ||||
| #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, | #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, | ||||
| #{item.awardsItemRule,jdbcType=INTEGER},#{item.calculationMode,jdbcType=INTEGER}, | |||||
| #{item.awardsItemRule,jdbcType=INTEGER}, | |||||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}, | #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}, | ||||
| #{item.maxAmount,jdbcType=DECIMAL},#{item.startingTaxPoint,jdbcType=DECIMAL},#{item.taxPoints,jdbcType=DECIMAL},#{item.cashBackPrice,jdbcType=DECIMAL},#{item.taxPointsAmount,jdbcType=DECIMAL}) | #{item.maxAmount,jdbcType=DECIMAL},#{item.startingTaxPoint,jdbcType=DECIMAL},#{item.taxPoints,jdbcType=DECIMAL},#{item.cashBackPrice,jdbcType=DECIMAL},#{item.taxPointsAmount,jdbcType=DECIMAL}) | ||||
| </foreach> | </foreach> | ||||
| @@ -9,6 +9,8 @@ | |||||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | ||||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | ||||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | ||||
| <result property="grantAwardsMode" column="grant_awards_mode" jdbcType="SMALLINT"/> | |||||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | ||||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | ||||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | ||||
| @@ -34,7 +36,7 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| id,tenant_id,parent_tenant_id, | id,tenant_id,parent_tenant_id, | ||||
| grant_id,activity_id,activity_name, | |||||
| grant_id,grant_awards_mode,activity_id,activity_name, | |||||
| activity_item_id,activity_item_name,activity_item_type, | activity_item_id,activity_item_name,activity_item_type, | ||||
| award_itam_id,award_name,award_grade, | award_itam_id,award_name,award_grade, | ||||
| award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, | award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, | ||||
| @@ -61,6 +63,10 @@ | |||||
| and `grant_id` = #{grantId} | and `grant_id` = #{grantId} | ||||
| </if> | </if> | ||||
| <if test=" null != grantAwardsMode"> | |||||
| and `grant_awards_mode` = #{grantAwardsMode} | |||||
| </if> | |||||
| <if test=" null != activityId"> | <if test=" null != activityId"> | ||||
| and `activity_id` = #{activityId} | and `activity_id` = #{activityId} | ||||
| </if> | </if> | ||||
| @@ -92,7 +98,7 @@ | |||||
| <insert id="insertList" parameterType="java.util.List"> | <insert id="insertList" parameterType="java.util.List"> | ||||
| insert into wx_offline_activity_grant_item | insert into wx_offline_activity_grant_item | ||||
| (id, | (id, | ||||
| grant_id,activity_id,activity_name, | |||||
| grant_id,grant_awards_mode,activity_id,activity_name, | |||||
| activity_item_id,activity_item_name,activity_item_type, | activity_item_id,activity_item_name,activity_item_type, | ||||
| award_itam_id,award_name,award_grade, | award_itam_id,award_name,award_grade, | ||||
| award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, | award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, | ||||
| @@ -102,7 +108,7 @@ | |||||
| values | values | ||||
| <foreach collection="grantItemList" item="item" index="index" separator=","> | <foreach collection="grantItemList" item="item" index="index" separator=","> | ||||
| (#{item.id,jdbcType=BIGINT}, | (#{item.id,jdbcType=BIGINT}, | ||||
| #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, | |||||
| #{item.grantId,jdbcType=BIGINT},#{item.grantAwardsMode,jdbcType=INTEGER},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, | |||||
| #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, | #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, | ||||
| #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, | #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, | ||||
| #{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, | #{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, | ||||
| @@ -0,0 +1,33 @@ | |||||
| <?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.iformall.mapper.WxOfflineActivityGrantItemRecordMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityGrantItemRecord"> | |||||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||||
| <result property="recordId" column="record_id" jdbcType="BIGINT"/> | |||||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| tenant_id,parent_tenant_id,activity_id,activity_item_id, | |||||
| record_id,grant_id | |||||
| </sql> | |||||
| <insert id="insertList" parameterType="java.util.List"> | |||||
| insert into wx_offline_activity_grant_item_record | |||||
| (`activity_id`,`activity_item_id`,`record_id`,`grant_id`) | |||||
| values | |||||
| <foreach collection="grantItemRecordList" item="item" index="index" separator=","> | |||||
| (#{item.activityId,jdbcType=BIGINT}, | |||||
| #{item.activityItemId,jdbcType=BIGINT}, | |||||
| #{item.recordId,jdbcType=BIGINT}, | |||||
| #{item.grantId,jdbcType=BIGINT}) | |||||
| </foreach> | |||||
| </insert> | |||||
| </mapper> | |||||
| @@ -16,6 +16,8 @@ | |||||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | ||||
| <result property="awardItamId" column="award_itam_id" jdbcType="BIGINT"/> | <result property="awardItamId" column="award_itam_id" jdbcType="BIGINT"/> | ||||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | ||||
| <result property="grantItemId" column="grant_item_id" jdbcType="BIGINT"/> | |||||
| <result property="grantAwardsMode" column="grant_awards_mode" jdbcType="SMALLINT"/> | |||||
| <result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/> | <result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/> | ||||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | ||||
| @@ -32,7 +34,7 @@ | |||||
| id,tenant_id,parent_tenant_id, | id,tenant_id,parent_tenant_id, | ||||
| record_id,order_no,order_money, | record_id,order_no,order_money, | ||||
| merchant_id,activity_id,activity_item_id, | merchant_id,activity_id,activity_item_id, | ||||
| award_itam_id,grant_id,grant_price, | |||||
| award_itam_id,grant_id,grant_item_id,grant_awards_mode,grant_price, | |||||
| mall_share_rate,merchant_share_rate,order_ratio, | mall_share_rate,merchant_share_rate,order_ratio, | ||||
| real_grant_price,real_mall_share_price,real_merchant_share_price, | real_grant_price,real_mall_share_price,real_merchant_share_price, | ||||
| create_date,update_date | create_date,update_date | ||||
| @@ -74,6 +76,12 @@ | |||||
| <if test=" null != grantId "> | <if test=" null != grantId "> | ||||
| and `grant_id` = #{grantId} | and `grant_id` = #{grantId} | ||||
| </if> | </if> | ||||
| <if test=" null != grantItemId "> | |||||
| and `grant_item_id` = #{grantItemId} | |||||
| </if> | |||||
| <if test=" null != grantAwardsMode"> | |||||
| and `grant_awards_mode` = #{grantAwardsMode} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | <if test=" null != createDateBegin"> | ||||
| and `create_date` >= #{createDateBegin} | and `create_date` >= #{createDateBegin} | ||||
| </if> | </if> | ||||
| @@ -110,7 +118,7 @@ | |||||
| (id, | (id, | ||||
| record_id,order_no,order_money, | record_id,order_no,order_money, | ||||
| merchant_id,activity_id,activity_item_id, | merchant_id,activity_id,activity_item_id, | ||||
| award_itam_id,grant_id,grant_price, | |||||
| award_itam_id,grant_id,grant_item_id,grant_awards_mode,grant_price, | |||||
| mall_share_rate,merchant_share_rate,order_ratio, | mall_share_rate,merchant_share_rate,order_ratio, | ||||
| real_grant_price,real_mall_share_price,real_merchant_share_price, | real_grant_price,real_mall_share_price,real_merchant_share_price, | ||||
| create_date,update_date) | create_date,update_date) | ||||
| @@ -119,7 +127,7 @@ | |||||
| (#{item.id,jdbcType=BIGINT}, | (#{item.id,jdbcType=BIGINT}, | ||||
| #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL}, | #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL}, | ||||
| #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, | #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, | ||||
| #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL}, | |||||
| #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantItemId,jdbcType=BIGINT},#{item.grantAwardsMode,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL}, | |||||
| #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, | #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, | ||||
| #{item.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL}, | #{item.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL}, | ||||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | ||||
| @@ -11,24 +11,26 @@ | |||||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | ||||
| <result property="type" column="type" jdbcType="SMALLINT"/> | <result property="type" column="type" jdbcType="SMALLINT"/> | ||||
| <result property="name" column="name" jdbcType="VARCHAR"/> | <result property="name" column="name" jdbcType="VARCHAR"/> | ||||
| <result property="modeType" column="mode_type" jdbcType="SMALLINT"/> | |||||
| <result property="limitMoney" column="limit_money" jdbcType="DECIMAL"/> | <result property="limitMoney" column="limit_money" jdbcType="DECIMAL"/> | ||||
| <result property="awardsItemPrice" column="awards_item_price" jdbcType="DECIMAL"/> | <result property="awardsItemPrice" column="awards_item_price" jdbcType="DECIMAL"/> | ||||
| <result property="businessOrderCount" column="business_order_count" jdbcType="INTEGER"/> | |||||
| <result property="awardsItemLimit" column="awards_item_limit" jdbcType="INTEGER"/> | <result property="awardsItemLimit" column="awards_item_limit" jdbcType="INTEGER"/> | ||||
| <result property="awardsItemCount" column="awards_item_count" jdbcType="INTEGER"/> | <result property="awardsItemCount" column="awards_item_count" jdbcType="INTEGER"/> | ||||
| <result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/> | <result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/> | ||||
| <result property="calculationMode" column="calculation_mode" jdbcType="SMALLINT"/> | |||||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | ||||
| <result property="startingTaxPoint" column="starting_tax_point" jdbcType="DECIMAL"/> | <result property="startingTaxPoint" column="starting_tax_point" jdbcType="DECIMAL"/> | ||||
| <result property="taxPoints" column="tax_points" jdbcType="DECIMAL"/> | <result property="taxPoints" column="tax_points" jdbcType="DECIMAL"/> | ||||
| <result property="countModel" column="count_model" jdbcType="SMALLINT"/> | |||||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | ||||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | ||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| id,tenant_id,parent_tenant_id, | 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 | |||||
| </sql> | </sql> | ||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||