| @@ -0,0 +1,64 @@ | |||
| ALTER TABLE `wx_offline_activity_item` | |||
| ADD COLUMN `mode_type` smallint(1) NULL DEFAULT NULL COMMENT '活动项模式' AFTER `name`; | |||
| update wx_offline_activity_item set mode_type = 2 where type = 1; | |||
| update wx_offline_activity_item set mode_type = 2 where type = 2; | |||
| update wx_offline_activity_item set mode_type = calculation_mode where type = 3; | |||
| update wx_offline_activity_item set mode_type = 2 where type = 3 and mode_type is null; | |||
| ALTER TABLE `wx_offline_activity_item` | |||
| MODIFY COLUMN `mode_type` smallint(1) NOT NULL COMMENT '活动项模式' AFTER `name`; | |||
| ALTER TABLE `wx_offline_activity_item` | |||
| DROP COLUMN `calculation_mode`; | |||
| ALTER TABLE `wx_offline_activity_item` | |||
| ADD COLUMN `business_order_count` int(11) NULL COMMENT '业态订单限制' AFTER `awards_item_price`; | |||
| ALTER TABLE `wx_offline_activity_item` | |||
| ADD COLUMN `count_model` smallint(1) NULL COMMENT '联单模式' AFTER `tax_points`; | |||
| update wx_offline_activity_item set count_model = 1 where type = 3 | |||
| and id in(select distinct activity_item_id form wx_offline_activity_awards_item where `type` = 2); | |||
| DROP TABLE IF EXISTS `wx_offline_activity_awards_model`; | |||
| CREATE TABLE `wx_offline_activity_awards_model` ( | |||
| `id` bigint(20) NOT NULL COMMENT '主键ID', | |||
| `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', | |||
| `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', | |||
| `activity_item_id` bigint(20) NOT NULL COMMENT '活动项id', | |||
| `model_type` smallint(1) NOT NULL COMMENT '模式类型', | |||
| `merchant_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数', | |||
| `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '最小金额', | |||
| `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '最大金额', | |||
| `awards_count` int(11) NULL DEFAULT NULL COMMENT '奖项数量', | |||
| `awards_grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级', | |||
| `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | |||
| `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', | |||
| PRIMARY KEY (`id`) USING BTREE, | |||
| INDEX `activity_item_id`(`activity_item_id`) USING BTREE | |||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动奖项模式' ROW_FORMAT = DYNAMIC; | |||
| insert into `wx_offline_activity_awards_model`(`id`,`tenant_id`,`parent_tenant_id`,`activity_item_id`,`model_type`,`merchant_count`,`min_amount`,`max_amount`,`awards_count`,`awards_grade`,`create_date`,`update_date`) | |||
| select id,tenant_id,parent_tenant_id,activity_item_id,type,null,min_amount,max_amount,null,grade,create_date,update_date from wx_offline_activity_awards_item | |||
| where activity_item_id in (select id from wx_offline_activity_item where type = 2); | |||
| DROP TABLE IF EXISTS `wx_offline_activity_grant_item_record`; | |||
| CREATE TABLE `wx_offline_activity_grant_item_record` ( | |||
| `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', | |||
| `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', | |||
| `activity_id` bigint(20) NOT NULL COMMENT '活动id', | |||
| `activity_item_id` bigint(20) NOT NULL COMMENT '活动项id', | |||
| `record_id` bigint(20) NOT NULL COMMENT '参与记录id', | |||
| `grant_id` bigint(20) NOT NULL COMMENT '发放id', | |||
| INDEX `activity_id`(`activity_id`, `record_id`) USING BTREE | |||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '活动发放筛选订单金额关系表' ROW_FORMAT = DYNAMIC; | |||
| ALTER TABLE `wx_offline_activity_grant_cash_back` | |||
| DROP COLUMN `calculation_mode`; | |||
| @@ -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") | |||
| private Integer awardsItemRule; | |||
| /** | |||
| * 返现计算模式 | |||
| */ | |||
| @TableField(value = "calculation_mode") | |||
| private Integer calculationMode; | |||
| /** | |||
| * 返现封顶金额 | |||
| */ | |||
| @@ -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; | |||
| } | |||
| @@ -46,6 +46,12 @@ public class WxOfflineActivityItem extends TenantEntity { | |||
| @TableField(value = "name") | |||
| private String name; | |||
| /** | |||
| * 活动项模式 | |||
| */ | |||
| @TableField(value = "mode_type") | |||
| private Integer modeType; | |||
| /** | |||
| * 参与金额 | |||
| */ | |||
| @@ -58,6 +64,20 @@ public class WxOfflineActivityItem extends TenantEntity { | |||
| @TableField(value = "awards_item_price") | |||
| private BigDecimal awardsItemPrice; | |||
| /** | |||
| * 业态限制 | |||
| */ | |||
| @TableField(value = "business_order_count") | |||
| private Integer businessOrderCount; | |||
| /** | |||
| * 模式规则 | |||
| */ | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityAwardsModel> activityAwardsModelList; | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityAwardsModel> activityAwardsModelSecondList; | |||
| /** | |||
| * 奖项数量限制(为0时无限制) | |||
| */ | |||
| @@ -76,12 +96,6 @@ public class WxOfflineActivityItem extends TenantEntity { | |||
| @TableField(value = "awards_item_rule") | |||
| private Integer awardsItemRule; | |||
| /** | |||
| * 返现计算模式 | |||
| */ | |||
| @TableField(value = "calculation_mode") | |||
| private Integer calculationMode; | |||
| /** | |||
| * 返现封顶金额 | |||
| */ | |||
| @@ -100,6 +114,12 @@ public class WxOfflineActivityItem extends TenantEntity { | |||
| @TableField(value = "tax_points") | |||
| private BigDecimal taxPoints; | |||
| /** | |||
| * 联单模式 | |||
| */ | |||
| @TableField(value = "count_model") | |||
| private Integer countModel; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @@ -154,4 +174,9 @@ public class WxOfflineActivityItem extends TenantEntity { | |||
| @TableField(exist = false) | |||
| private String cashBackMsg; | |||
| @TableField(exist = false) | |||
| private List<Long> recordIds; | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityRecord> recordList; | |||
| } | |||
| @@ -152,6 +152,8 @@ public class WxOfflineActivityRecord extends TenantEntity { | |||
| @TableField(value = "business_id") | |||
| private Integer businessId; | |||
| @TableField(exist = false) | |||
| private String businessName; | |||
| /** | |||
| * 创建时间 | |||
| @@ -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); | |||
| } | |||
| @@ -35,6 +35,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity | |||
| activityAwardsItemDel.updateTenantInfo(activityItem); | |||
| activityAwardsItemDel.setActivityItemId(activityItem.getId()); | |||
| wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { | |||
| if(awaItem.getId() == null){ | |||
| @@ -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; | |||
| import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; | |||
| import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.domain.po.*; | |||
| @@ -17,7 +15,6 @@ import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.*; | |||
| import com.iformall.service.*; | |||
| import com.iformall.utils.DateUtils; | |||
| import com.iformall.utils.DownFileUtil; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| @@ -28,8 +25,6 @@ import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| import java.math.BigDecimal; | |||
| import java.math.RoundingMode; | |||
| import java.net.MalformedURLException; | |||
| import java.net.URL; | |||
| import java.text.NumberFormat; | |||
| import java.util.*; | |||
| import java.util.function.Function; | |||
| @@ -77,6 +72,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| @Autowired | |||
| WxOfflineActivityRecordGrantService wxOfflineActivityRecordGrantService; | |||
| @Autowired | |||
| WxOfflineActivityGrantItemRecordService wxOfflineActivityGrantItemRecordService; | |||
| @Autowired | |||
| WxOfflineActivityItemService wxOfflineActivityItemService; | |||
| @@ -178,79 +176,56 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动状态"); | |||
| } | |||
| //订单合并 | |||
| //订单合并计算 | |||
| handlerGrantData(activity,wxOfflineActivityGrantAward,true); | |||
| //奖项处理 | |||
| List<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) { | |||
| List<Long> records = ActivityItemRecordMap.get(activityItem.getId()); | |||
| if(records != null && !records.isEmpty()){ | |||
| activityItem.setRecordIds(records); | |||
| } | |||
| } | |||
| } | |||
| wxOfflineActivityGrantAward.setActivityItemList(activityItemList); | |||
| // | |||
| for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ | |||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | |||
| //计算商户商管分别承担金额 | |||
| handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); | |||
| if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ | |||
| activityItem.setIsMeet(false); | |||
| continue; | |||
| } | |||
| //处理发奖数量 | |||
| activityItem.setIsMeet(true); | |||
| //奖项限制数量 | |||
| int limitCount = 0; | |||
| if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ | |||
| limitCount = wxOfflineActivityGrantAward.getOrderMoneySum().divide(activityItem.getAwardsItemPrice(),0,BigDecimal.ROUND_HALF_DOWN).intValue(); | |||
| } | |||
| if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 | |||
| && activityItem.getAwardsItemLimit() < limitCount){ | |||
| limitCount = activityItem.getAwardsItemLimit(); | |||
| handleLotteryDrawCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); | |||
| if(activityItem.getRealAwardsItemLimit() == 0){ | |||
| activityItem.setIsMeet(false); | |||
| } | |||
| activityItem.setRealAwardsItemLimit(limitCount); | |||
| //计算商户商管分别承担金额 | |||
| handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); | |||
| } | |||
| else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | |||
| //计算商户商管分别承担金额 | |||
| handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); | |||
| List<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); | |||
| continue; | |||
| } | |||
| activityItem.setIsMeet(true); | |||
| activityItem.setRealAwardsItemLimit(1); | |||
| WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); | |||
| grantItem.setActivityItemId(activityItem.getId()); | |||
| grantItem.setActivityItemName(activityItem.getName()); | |||
| grantItem.setActivityItemType(activityItem.getType()); | |||
| grantItem.setAwardItamId(grantAwardsItem.getId()); | |||
| grantItem.setAwardName(grantAwardsItem.getName()); | |||
| grantItem.setAwardGrade(grantAwardsItem.getGrade()); | |||
| grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); | |||
| grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); | |||
| grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); | |||
| grantItem.setAwardCount(1); | |||
| grantItem.setAwardPrice(grantAwardsItem.getPrice()); | |||
| grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); | |||
| grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); | |||
| grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); | |||
| grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); | |||
| grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); | |||
| activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); | |||
| } | |||
| else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | |||
| BigDecimal cashBackPriceTotal = BigDecimal.ZERO; | |||
| List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); | |||
| List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); | |||
| //单笔订单计算 | |||
| if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ | |||
| if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ | |||
| for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ | |||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | |||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | |||
| @@ -300,27 +275,33 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| } | |||
| }else{ | |||
| BigDecimal orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||
| orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() | |||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||
| .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| } | |||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | |||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | |||
| if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) | |||
| && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ | |||
| if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) | |||
| && (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ | |||
| grantAwardsItem = awardsItem; | |||
| } | |||
| } | |||
| if(grantAwardsItem != null){ | |||
| //计算返现金额 | |||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||
| BigDecimal cashBackPrice = orderMoneySum | |||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | |||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | |||
| } | |||
| } | |||
| if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ | |||
| List<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){ | |||
| //计算返现金额 | |||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||
| @@ -348,7 +329,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityGrantCashBack.setActivityItemName(activityItem.getName()); | |||
| activityGrantCashBack.setActivityItemType(activityItem.getType()); | |||
| activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | |||
| activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); | |||
| activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | |||
| activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | |||
| activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | |||
| @@ -385,6 +365,150 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| } | |||
| } | |||
| private void handleLotteryDrawCount(WxOfflineActivityItem activityItem, List<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())){ | |||
| orderMoneySum = recordList.stream() | |||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||
| .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| } | |||
| if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ | |||
| limitCount = orderMoneySum.divide(activityItem.getAwardsItemPrice(),0, RoundingMode.HALF_DOWN).intValue(); | |||
| } | |||
| } | |||
| Integer jointCount = getJointCount(activityItem,recordList); | |||
| if(jointCount != 0){ | |||
| Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); | |||
| WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); | |||
| limitCount += activityAwardsModel.getAwardsCount(); | |||
| } | |||
| if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 | |||
| && activityItem.getAwardsItemLimit() < limitCount){ | |||
| limitCount = activityItem.getAwardsItemLimit(); | |||
| } | |||
| activityItem.setRealAwardsItemLimit(limitCount); | |||
| } | |||
| private void handleGiftAwards(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ | |||
| 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); | |||
| if(wxOfflineActivityGrantItem != null){ | |||
| wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); | |||
| }else{ | |||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); | |||
| wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); | |||
| grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); | |||
| } | |||
| } | |||
| }else{ | |||
| BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||
| orderMoneySum = recordList.stream() | |||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||
| .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| } | |||
| Integer awardsGrade = null; | |||
| for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ | |||
| if((activityAwardsModel.getMinAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMinAmount()) >= 0) | |||
| && (activityAwardsModel.getMaxAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMaxAmount()) <= 0)){ | |||
| awardsGrade = activityAwardsModel.getAwardsGrade(); | |||
| } | |||
| } | |||
| if(awardsGrade != null){ | |||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); | |||
| WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); | |||
| grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); | |||
| } | |||
| } | |||
| Integer jointCount = getJointCount(activityItem,recordList); | |||
| if(jointCount != 0){ | |||
| Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); | |||
| WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); | |||
| WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade()); | |||
| if(wxOfflineActivityGrantItem != null){ | |||
| wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); | |||
| }else{ | |||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); | |||
| wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); | |||
| grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem); | |||
| } | |||
| } | |||
| if(!grantItemMap.isEmpty()){ | |||
| activityItem.setActivityGrantItemList(new ArrayList<>(grantItemMap.values())); | |||
| } | |||
| } | |||
| private Integer getJointCount(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ | |||
| Integer jointCount = 0; | |||
| 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,WxOfflineActivityAwardsItem grantAwardsItem){ | |||
| WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); | |||
| grantItem.setActivityItemId(activityItem.getId()); | |||
| grantItem.setActivityItemName(activityItem.getName()); | |||
| grantItem.setActivityItemType(activityItem.getType()); | |||
| grantItem.setAwardItamId(grantAwardsItem.getId()); | |||
| grantItem.setAwardName(grantAwardsItem.getName()); | |||
| grantItem.setAwardGrade(grantAwardsItem.getGrade()); | |||
| grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); | |||
| grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); | |||
| grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); | |||
| grantItem.setAwardCount(1); | |||
| grantItem.setAwardPrice(grantAwardsItem.getPrice()); | |||
| grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); | |||
| grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); | |||
| grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); | |||
| grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); | |||
| grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); | |||
| return grantItem; | |||
| } | |||
| private WxOfflineActivityGrantCashBack getLastActivityGrantCashBack(WxOfflineActivityGrantAward wxOfflineActivityGrantAward,Long activityId,Long activityItemId){ | |||
| Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); | |||
| if(grantId == null){ | |||
| @@ -424,6 +548,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| } | |||
| handlerGrantData(activity,wxOfflineActivityGrantAward,false); | |||
| Date now = new Date(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| wxOfflineActivityGrantAward.setId(idWorker.nextId()); | |||
| @@ -441,7 +566,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| upd.setUpdateDate(now); | |||
| wxOfflineActivityGrantAwardMapper.updateStatusNo(upd); | |||
| //创建订单关联 | |||
| wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); | |||
| wxOfflineActivityGrantItemRecordService.insertFromGrantAward(wxOfflineActivityGrantAward); | |||
| //处理奖项 | |||
| handlerGrantItem(activity,wxOfflineActivityGrantAward); | |||
| @@ -518,6 +645,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); | |||
| int i = 0;//检查活动奖项 | |||
| for (WxOfflineActivityItem activityItem : activityItemList) { | |||
| @@ -530,13 +658,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityGrantItemList = grantActivityItem.getActivityGrantItemList(); | |||
| } | |||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | |||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType()) | |||
| || EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | |||
| if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | |||
| continue; | |||
| } | |||
| if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ | |||
| throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); | |||
| } | |||
| // if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ | |||
| // throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); | |||
| // } | |||
| boolean isRepeat = activityGrantItemList.stream() | |||
| .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) | |||
| @@ -545,20 +674,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); | |||
| } | |||
| //奖项限制数量 | |||
| int limitCount = 0; | |||
| if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ | |||
| limitCount = wxOfflineActivityGrantAward.getOrderMoneySum().divide(activityItem.getAwardsItemPrice(),0,BigDecimal.ROUND_HALF_DOWN).intValue(); | |||
| } | |||
| if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 | |||
| && activityItem.getAwardsItemLimit() < limitCount){ | |||
| limitCount = activityItem.getAwardsItemLimit(); | |||
| } | |||
| if(limitCount != 0 && activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ | |||
| throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"奖券超过限制"); | |||
| } | |||
| for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { | |||
| if(grantGrantItem.getAwardItamId() == null){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| @@ -573,42 +688,40 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityItem.setActivityGrantItemList(activityGrantItemList); | |||
| } | |||
| else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | |||
| if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | |||
| continue; | |||
| } | |||
| if(activityGrantItemList.size() != 1){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| } | |||
| WxOfflineActivityGrantItem grantGrantItem = activityGrantItemList.get(0); | |||
| if(grantGrantItem.getAwardItamId() == null){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| } | |||
| WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); | |||
| if(awardsItem == null){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| } | |||
| // if(awardsItem.getMinAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) < 0){ | |||
| // throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数(金额不在范围类)"); | |||
| // else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | |||
| // if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | |||
| // continue; | |||
| // } | |||
| if((awardsItem.getMinAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) < 0) | |||
| || (awardsItem.getMaxAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) > 0)){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数(金额不在范围类)"); | |||
| } | |||
| handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | |||
| activityItem.setActivityGrantItemList(activityGrantItemList); | |||
| } | |||
| // | |||
| // boolean isRepeat = activityGrantItemList.stream() | |||
| // .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) | |||
| // .entrySet().stream().anyMatch(e -> e.getValue() > 1); | |||
| // if(isRepeat){ | |||
| // throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); | |||
| // } | |||
| // | |||
| // for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { | |||
| // if(grantGrantItem.getAwardItamId() == null){ | |||
| // throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| // } | |||
| // WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); | |||
| // if(awardsItem == null){ | |||
| // throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| // } | |||
| // | |||
| // handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | |||
| // } | |||
| // | |||
| // activityItem.setActivityGrantItemList(activityGrantItemList); | |||
| // | |||
| // } | |||
| else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | |||
| BigDecimal cashBackPriceTotal = BigDecimal.ZERO; | |||
| activityGrantItemList = new ArrayList<>(); | |||
| List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); | |||
| //单笔订单计算 | |||
| if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ | |||
| if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ | |||
| for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ | |||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | |||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | |||
| @@ -634,18 +747,24 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| } | |||
| }else{ | |||
| BigDecimal orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ | |||
| orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() | |||
| .filter(record -> activityItem.getRecordIds().contains(record.getId())) | |||
| .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||
| } | |||
| WxOfflineActivityAwardsItem grantAwardsItem = null; | |||
| for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ | |||
| if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) | |||
| && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ | |||
| if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) | |||
| && (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ | |||
| grantAwardsItem = awardsItem; | |||
| } | |||
| } | |||
| if(grantAwardsItem != null){ | |||
| WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | |||
| //计算返现金额 | |||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||
| BigDecimal cashBackPrice = orderMoneySum | |||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | |||
| grantAwardsItem.setPrice(cashBackPrice); | |||
| handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | |||
| @@ -653,13 +772,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityGrantItemList.add(grantGrantItem); | |||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | |||
| } | |||
| } | |||
| if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ | |||
| List<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){ | |||
| WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); | |||
| //计算返现金额 | |||
| @@ -671,7 +789,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityGrantItemList.add(grantGrantItem); | |||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | |||
| } | |||
| } | |||
| BigDecimal prop = BigDecimal.ONE; | |||
| @@ -707,7 +824,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityGrantCashBack.setActivityItemName(activityItem.getName()); | |||
| activityGrantCashBack.setActivityItemType(activityItem.getType()); | |||
| activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | |||
| activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); | |||
| activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | |||
| activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | |||
| activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | |||
| @@ -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); | |||
| } | |||
| } | |||
| @@ -3,18 +3,20 @@ package com.iformall.service.impl; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsModel; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import com.iformall.enums.EnumOfflineActivityAwardsModeType; | |||
| import com.iformall.enums.EnumOfflineActivityAwardsItemType; | |||
| import com.iformall.enums.EnumOfflineActivityAwardsRule; | |||
| import com.iformall.enums.EnumOfflineActivityType; | |||
| import com.iformall.service.WxOfflineActivityAwardsItemService; | |||
| import com.iformall.service.WxOfflineActivityAwardsModelService; | |||
| import com.iformall.service.WxOfflineActivityItemService; | |||
| import com.iformall.mapper.WxOfflineActivityItemMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.math.BigDecimal; | |||
| import java.util.Collections; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| import java.util.stream.Collectors; | |||
| @@ -33,6 +35,9 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe | |||
| @Autowired | |||
| WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; | |||
| @Autowired | |||
| WxOfflineActivityAwardsModelService wxOfflineActivityAwardsModelService; | |||
| @Override | |||
| public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityItem> activityItemList) { | |||
| WxOfflineActivityItem activityItemDel = new WxOfflineActivityItem(); | |||
| @@ -70,6 +75,9 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe | |||
| activityItem.setUpdateDate(wxOfflineActivity.getUpdateDate()); | |||
| wxOfflineActivityItemMapper.insert(activityItem); | |||
| //处理奖项模式 | |||
| wxOfflineActivityAwardsModelService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsModelList(),activityItem.getActivityAwardsModelSecondList()); | |||
| //处理奖项 | |||
| wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList(),activityItem.getActivityAwardsItemSecondList()); | |||
| } | |||
| @@ -89,7 +97,13 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe | |||
| item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode())); | |||
| }else{ | |||
| item.setActivityAwardsItemList(activityAwardsItemList); | |||
| List<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; | |||
| } | |||
| @@ -156,6 +156,8 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||
| userMap = mallUserInfoService.getUserMap(userInfoQ); | |||
| } | |||
| Map<Integer, WxBusiness> bussinessMap = wxBusinessService.findAllMap(tenantEntity); | |||
| for (WxOfflineActivityRecord record : recordList) { | |||
| if(record.getMerchantId() != null){ | |||
| record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); | |||
| @@ -164,6 +166,9 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||
| if(record.getAuditBy() != null){ | |||
| record.setAuditByName(userMap.get(record.getAuditBy()).getName()); | |||
| } | |||
| if(record.getBusinessId() != null){ | |||
| record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle()); | |||
| } | |||
| if(activityId != null){ | |||
| record.setGrantStatus(EnumYesOrNo.NO.getCode()); | |||
| @@ -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="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="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| @@ -30,7 +29,7 @@ | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| grant_id,activity_id,activity_name, | |||
| activity_item_id,activity_item_name,activity_item_type,awards_item_rule,calculation_mode, | |||
| activity_item_id,activity_item_name,activity_item_type,awards_item_rule, | |||
| create_date,update_date,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount | |||
| </sql> | |||
| @@ -78,7 +77,7 @@ | |||
| (id, | |||
| grant_id,activity_id,activity_name, | |||
| activity_item_id,activity_item_name,activity_item_type, | |||
| awards_item_rule,calculation_mode, | |||
| awards_item_rule, | |||
| create_date,update_date | |||
| ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) | |||
| values | |||
| @@ -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> | |||
| @@ -11,24 +11,26 @@ | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="type" column="type" jdbcType="SMALLINT"/> | |||
| <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="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="awardsItemCount" column="awards_item_count" jdbcType="INTEGER"/> | |||
| <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="startingTaxPoint" column="starting_tax_point" 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="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| 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 id="dynamicWhereConditions"> | |||