Просмотр исходного кода

Merge branch 'release_toaliyun_real_202501' of https://git.malls.iformall.com/server/formallProject into release_toaliyun_real

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
32a1ca04e6
32 измененных файлов: 1184 добавлений и 246 удалений
  1. +102
    -0
      mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql
  2. +83
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsModel.java
  3. +0
    -6
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java
  4. +6
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java
  5. +43
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItemRecord.java
  6. +12
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java
  7. +31
    -6
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java
  8. +2
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java
  9. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java
  10. +37
    -37
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java
  11. +37
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsModeType.java
  12. +37
    -37
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java
  13. +37
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCountMode.java
  14. +38
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMode.java
  15. +28
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsModelMapper.java
  16. +25
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemRecordMapper.java
  17. +21
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsModelService.java
  18. +13
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemRecordService.java
  19. +4
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java
  20. +82
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsModelServiceImpl.java
  21. +288
    -123
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  22. +53
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemRecordServiceImpl.java
  23. +39
    -12
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java
  24. +17
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java
  25. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java
  26. +5
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java
  27. +79
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsModelMapper.xml
  28. +3
    -4
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml
  29. +9
    -3
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml
  30. +33
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemRecordMapper.xml
  31. +11
    -3
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml
  32. +6
    -4
      mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml

+ 102
- 0
mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql Просмотреть файл

@@ -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`;







+ 83
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsModel.java Просмотреть файл

@@ -0,0 +1,83 @@
package com.iformall.domain.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.Date;

/**
* 线下活动奖项模式
* @TableName wx_offline_activity_awards_model
*/
@TableName(value ="wx_offline_activity_awards_model")
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class WxOfflineActivityAwardsModel extends TenantEntity {
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;

/**
* 活动项id
*/
@TableField(value = "activity_item_id")
private Long activityItemId;

/**
* 模式类型(金额or联单)
*/
@TableField(value = "model_type")
private Integer modelType;

/**
* 联单笔数
*/
@TableField(value = "merchant_count")
private Integer merchantCount;

/**
* 限制最小金额
*/
@TableField(value = "min_amount")
private BigDecimal minAmount;

/**
* 限制最大金额
*/
@TableField(value = "max_amount")
private BigDecimal maxAmount;

/**
* 奖项数量
*/
@TableField(value = "awards_count")
private Integer awardsCount;

/**
* 奖项等级
*/
@TableField(value = "awards_grade")
private Integer awardsGrade;

/**
* 创建时间
*/
@TableField(value = "create_date")
private Date createDate;

/**
* 更新时间
*/
@TableField(value = "update_date")
private Date updateDate;

}

+ 0
- 6
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java Просмотреть файл

@@ -68,12 +68,6 @@ public class WxOfflineActivityGrantCashBack extends TenantEntity {
@TableField(value = "awards_item_rule")
private Integer awardsItemRule;

/**
* 返现计算模式
*/
@TableField(value = "calculation_mode")
private Integer calculationMode;

/**
* 返现封顶金额
*/


+ 6
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java Просмотреть файл

@@ -34,6 +34,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity {
@TableField(value = "grant_id")
private Long grantId;

/**
* 发放奖励模式
*/
@TableField(value = "grant_awards_mode")
private Integer grantAwardsMode;

/**
* 活动id
*/


+ 43
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItemRecord.java Просмотреть файл

@@ -0,0 +1,43 @@
package com.iformall.domain.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
* 活动发放筛选订单金额关系表
* @TableName wx_offline_activity_grant_item_record
*/
@TableName(value ="wx_offline_activity_grant_item_record")
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class WxOfflineActivityGrantItemRecord extends TenantEntity {

/**
* 活动id
*/
@TableField(value = "activity_id")
private Long activityId;

/**
* 活动项id
*/
@TableField(value = "activity_item_id")
private Long activityItemId;

/**
* 参与记录id
*/
@TableField(value = "record_id")
private Long recordId;

/**
* 发放id
*/
@TableField(value = "grant_id")
private Long grantId;
}

+ 12
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java Просмотреть файл

@@ -85,6 +85,18 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity {
@TableField(value = "grant_id")
private Long grantId;

/**
* 发放奖励记录id
*/
@TableField(value = "grant_item_id")
private Long grantItemId;

/**
* 发放奖励模式
*/
@TableField(value = "grant_awards_mode")
private Integer grantAwardsMode;

/**
* 发放总价值
*/


+ 31
- 6
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java Просмотреть файл

@@ -46,6 +46,12 @@ public class WxOfflineActivityItem extends TenantEntity {
@TableField(value = "name")
private String name;

/**
* 活动项模式
*/
@TableField(value = "mode_type")
private Integer modeType;

/**
* 参与金额
*/
@@ -58,6 +64,20 @@ public class WxOfflineActivityItem extends TenantEntity {
@TableField(value = "awards_item_price")
private BigDecimal awardsItemPrice;

/**
* 业态限制
*/
@TableField(value = "business_order_count")
private Integer businessOrderCount;

/**
* 模式规则
*/
@TableField(exist = false)
private List<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;

}

+ 2
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java Просмотреть файл

@@ -152,6 +152,8 @@ public class WxOfflineActivityRecord extends TenantEntity {

@TableField(value = "business_id")
private Integer businessId;
@TableField(exist = false)
private String businessName;

/**
* 创建时间


+ 1
- 1
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java Просмотреть файл

@@ -22,7 +22,7 @@ public class OfflineActivityItemStatistics implements Serializable {
private BigDecimal mallSumPrice;//商场承担
private BigDecimal merchantSumPrice;//商户承担

private BigDecimal cashSumMoney;//订单返现*
private BigDecimal cashSumMoney;//金额返现*
private BigDecimal cashSecondSumMoney;//联单返现*

}

+ 37
- 37
mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java Просмотреть файл

@@ -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;
// }
//}

+ 37
- 0
mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsModeType.java Просмотреть файл

@@ -0,0 +1,37 @@
package com.iformall.enums;


/**
* @author gongbiao
*/
public enum EnumOfflineActivityAwardsModeType {

AMOUNT(1, "金额"),
COUNT(2, "联单"),
;

public static EnumOfflineActivityAwardsModeType getEnum(Integer code) {
for (EnumOfflineActivityAwardsModeType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumOfflineActivityAwardsModeType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 37
- 37
mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java Просмотреть файл

@@ -1,37 +1,37 @@
package com.iformall.enums;
/**
* @author gongbiao
*/
public enum EnumOfflineActivityCalculationMode {
ONE(1, "单笔订单计算"),
SUM(2, "订单总额计算"),
;
public static EnumOfflineActivityCalculationMode getEnum(Integer code) {
for (EnumOfflineActivityCalculationMode value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
private Integer code;
private String message;
EnumOfflineActivityCalculationMode(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
//package com.iformall.enums;
//
//
///**
// * @author gongbiao
// */
//public enum EnumOfflineActivityCalculationMode {
//
// ONE(1, "单笔订单计算"),
// SUM(2, "订单总额计算"),
// ;
//
// public static EnumOfflineActivityCalculationMode getEnum(Integer code) {
// for (EnumOfflineActivityCalculationMode value : values()) {
// if (value.getCode().equals(code)) {
// return value;
// }
// }
// return null;
// }
//
// private Integer code;
// private String message;
//
// EnumOfflineActivityCalculationMode(Integer code, String message) {
// this.code = code;
// this.message = message;
// }
//
// public Integer getCode() {
// return code;
// }
//
// public String getMessage() {
// return message;
// }
//}

+ 37
- 0
mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCountMode.java Просмотреть файл

@@ -0,0 +1,37 @@
package com.iformall.enums;


/**
* @author gongbiao
*/
public enum EnumOfflineActivityCountMode {

MERCHANT_MODEL(1, "商户联单"),
BUSINESS_MODEL(2, "业态联单"),
;

public static EnumOfflineActivityCountMode getEnum(Integer code) {
for (EnumOfflineActivityCountMode value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumOfflineActivityCountMode(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 38
- 0
mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMode.java Просмотреть файл

@@ -0,0 +1,38 @@
package com.iformall.enums;


/**
* @author gongbiao
*/
public enum EnumOfflineActivityMode {

ONE(1, "单笔订单计算"),
SUM(2, "订单总额计算"),
CONDITION_SUM(3, "筛选订单总额计算"),
;

public static EnumOfflineActivityMode getEnum(Integer code) {
for (EnumOfflineActivityMode value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumOfflineActivityMode(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 28
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsModelMapper.java Просмотреть файл

@@ -0,0 +1,28 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxOfflineActivityAwardsModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_offline_activity_awards_model()】的数据库操作Mapper
* @createDate 2024-08-06 13:20:56
* @Entity com.iformall.domain.po.WxOfflineActivityAwardsModel
*/
public interface WxOfflineActivityAwardsModelMapper extends CommonMapper<WxOfflineActivityAwardsModel, Long> {

WxOfflineActivityAwardsModel selectById(@Param("id")Long id, @Param("tenantId")String tenantId);

List<WxOfflineActivityAwardsModel> findList(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel);

Integer itemCount(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel);

void delete(WxOfflineActivityAwardsModel wxOfflineActivityAwardsModel);
}





+ 25
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemRecordMapper.java Просмотреть файл

@@ -0,0 +1,25 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxOfflineActivityGrantItemRecord;
import com.iformall.domain.po.WxOfflineActivityRecordGrant;
import com.iformall.domain.vo.OfflineActivityGrantRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_offline_activity_grant_item_record(线下活动参与登记与发放关联表)】的数据库操作Mapper
* @createDate 2024-08-09 00:13:44
* @Entity com.iformall.domain.po.WxOfflineActivityGrantItemRecord
*/
public interface WxOfflineActivityGrantItemRecordMapper extends CommonMapper<WxOfflineActivityGrantItemRecord, Long> {

void insertList(@Param("grantItemRecordList")List<WxOfflineActivityGrantItemRecord> grantItemRecordList);

}





+ 21
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsModelService.java Просмотреть файл

@@ -0,0 +1,21 @@
package com.iformall.service;

import com.iformall.domain.po.WxOfflineActivityAwardsItem;
import com.iformall.domain.po.WxOfflineActivityAwardsModel;
import com.iformall.domain.po.WxOfflineActivityItem;

import java.util.List;
import java.util.Map;

/**
* @author xiaohu
* @description 针对表【wx_offline_activity_awards_model(线下活动奖项)】的数据库操作Service
* @createDate 2024-08-06 13:20:56
*/
public interface WxOfflineActivityAwardsModelService {

void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List<WxOfflineActivityAwardsModel> activityAwardsModelList, List<WxOfflineActivityAwardsModel> activityAwardsModelSecondList);

List<WxOfflineActivityAwardsModel> getActivityAwardsModelList(Long activityItemId, String tenantId);

}

+ 13
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemRecordService.java Просмотреть файл

@@ -0,0 +1,13 @@
package com.iformall.service;

import com.iformall.domain.po.WxOfflineActivityGrantAward;

/**
* @author xiaohu
* @description 针对表【wx_offline_activity_grant_item_record(线下活动参与登记与发放关联表)】的数据库操作Service
* @createDate 2024-08-09 00:13:44
*/
public interface WxOfflineActivityGrantItemRecordService {

void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward);
}

+ 4
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java Просмотреть файл

@@ -3,7 +3,7 @@ package com.iformall.service.impl;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.WxOfflineActivityAwardsItem;
import com.iformall.domain.po.WxOfflineActivityItem;
import com.iformall.enums.EnumOfflineActivityAwardsItemType;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.service.WxOfflineActivityAwardsItemService;
import com.iformall.mapper.WxOfflineActivityAwardsItemMapper;
@@ -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){
@@ -42,11 +43,10 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity
}
awaItem.updateTenantInfo(activityItem);
awaItem.setActivityItemId(activityItem.getId());
awaItem.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode());
awaItem.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());

if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){
awaItem.setCashBackRatio(BigDecimal.ZERO);
awaItem.setGrade(-1);
awaItem.setMinAmount(null);
awaItem.setMaxAmount(null);
}
@@ -73,7 +73,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity
}
secondAwaItem.updateTenantInfo(activityItem);
secondAwaItem.setActivityItemId(activityItem.getId());
secondAwaItem.setType(EnumOfflineActivityAwardsItemType.SECOND.getCode());
secondAwaItem.setType(EnumOfflineActivityAwardsModeType.COUNT.getCode());

if(secondAwaItem.getCreateDate() == null){
secondAwaItem.setCreateDate(activityItem.getUpdateDate());


+ 82
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsModelServiceImpl.java Просмотреть файл

@@ -0,0 +1,82 @@
package com.iformall.service.impl;

import com.iformall.common.IdWorker;
import com.iformall.domain.po.WxOfflineActivityAwardsModel;
import com.iformall.domain.po.WxOfflineActivityItem;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.mapper.WxOfflineActivityAwardsModelMapper;
import com.iformall.service.WxOfflineActivityAwardsModelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_offline_activity_awards_model(线下活动奖项)】的数据库操作Service实现
* @createDate 2024-08-06 13:20:56
*/
@Service
public class WxOfflineActivityAwardsModelServiceImpl implements WxOfflineActivityAwardsModelService {

@Autowired
WxOfflineActivityAwardsModelMapper wxOfflineActivityAwardsModelMapper;

@Override
public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List<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;
}

}





+ 288
- 123
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Просмотреть файл

@@ -1,11 +1,9 @@
package com.iformall.service.impl;

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants;
import com.alibaba.fastjson.JSON;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
@@ -17,7 +15,6 @@ import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.*;
import com.iformall.utils.DateUtils;
import com.iformall.utils.DownFileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,8 +25,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.NumberFormat;
import java.util.*;
import java.util.function.Function;
@@ -77,6 +72,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
@Autowired
WxOfflineActivityRecordGrantService wxOfflineActivityRecordGrantService;

@Autowired
WxOfflineActivityGrantItemRecordService wxOfflineActivityGrantItemRecordService;

@Autowired
WxOfflineActivityItemService wxOfflineActivityItemService;

@@ -178,80 +176,65 @@ 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) {
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);

//
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,activityItem.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())){
for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){

for (WxOfflineActivityRecord record : activityItem.getRecordList()){
WxOfflineActivityAwardsItem grantAwardsItem = null;
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){
if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0)
@@ -300,27 +283,37 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

}
}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;
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 +341,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 +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){
Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward);
if(grantId == null){
@@ -424,6 +594,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 +612,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
upd.setUpdateDate(now);
wxOfflineActivityGrantAwardMapper.updateStatusNo(upd);

//创建订单关联
wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward);
wxOfflineActivityGrantItemRecordService.insertFromGrantAward(wxOfflineActivityGrantAward);

//处理奖项
handlerGrantItem(activity,wxOfflineActivityGrantAward);
@@ -518,13 +691,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId());


int i = 0;//检查活动奖项

for (WxOfflineActivityItem activityItem : activityItemList) {

Map<Long, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity()));
//获取奖项
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;
if(grantActivityItem != null){
activityGrantItemList = grantActivityItem.getActivityGrantItemList();
@@ -534,30 +721,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(activityGrantItemList == null || activityGrantItemList.isEmpty()){
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) {
if(grantGrantItem.getAwardItamId() == null){
@@ -567,40 +740,22 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(awardsItem == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
}
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem);
}
activityItem.setActivityGrantItemList(activityGrantItemList);

}
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){
if(activityGrantItemList == null || activityGrantItemList.isEmpty()){
handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList());
if(activityItem.getActivityGrantItemList().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()+"奖项参数(金额不在范围类)");
// }
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())) {
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());
//单笔订单计算
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;
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){
if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0)
@@ -620,6 +775,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(grantAwardsItem != null){
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setRecordId(record.getId());
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
//计算返现金额
BigDecimal cashBackPrice = record.getOrderMoney()
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100)));
@@ -634,18 +790,29 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

}
}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;
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();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
//计算返现金额
BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum()
BigDecimal cashBackPrice = orderMoneySum
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100)));
grantAwardsItem.setPrice(cashBackPrice);
handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem);
@@ -653,15 +820,15 @@ 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();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.COUNT.getCode());
//计算返现金额
BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum()
.multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100)));
@@ -671,7 +838,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
activityGrantItemList.add(grantGrantItem);
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice);
}

}

BigDecimal prop = BigDecimal.ONE;
@@ -707,7 +873,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());


+ 53
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemRecordServiceImpl.java Просмотреть файл

@@ -0,0 +1,53 @@
package com.iformall.service.impl;

import com.iformall.domain.po.*;
import com.iformall.mapper.WxOfflineActivityGrantItemRecordMapper;
import com.iformall.service.WxOfflineActivityGrantItemRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

import static java.util.stream.Collectors.toMap;


/**
* @author xiaohu
* @description 针对表【wx_offline_activity_grant_item_record(线下活动参与登记与发放关联表)】的数据库操作Service实现
* @createDate 2024-08-09 00:13:44
*/
@Service
public class WxOfflineActivityGrantItemRecordServiceImpl implements WxOfflineActivityGrantItemRecordService {

@Autowired
private WxOfflineActivityGrantItemRecordMapper wxOfflineActivityGrantItemRecordMapper;

@Override
public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) {
List<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);
}
}





+ 39
- 12
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java Просмотреть файл

@@ -8,6 +8,7 @@ import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivitySettlement;
import com.iformall.domain.vo.OfflineActivitySettlementStatistics;
import com.iformall.enums.EnumOfflineActivityMode;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.mapper.WxMerchantMapper;
@@ -57,24 +58,46 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct
final IdWorker idWorker = IdWorker.get();
Date now = new Date();
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()) {
if(activityItem.getActivityGrantItemList() == null){
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()) {
List<WxOfflineActivityGrantSettlement> itemSettlementList = new ArrayList<>();
if(wxOfflineActivityGrantItem.getRecordId() != null){
@@ -93,6 +116,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct
settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId());
settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId());
settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId());
settlement.setGrantItemId(wxOfflineActivityGrantItem.getId());
settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode());
settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice());
settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate());
settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate());
@@ -122,6 +147,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct
settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId());
settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId());
settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId());
settlement.setGrantItemId(wxOfflineActivityGrantItem.getId());
settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode());
settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice());
settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate());
settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate());


+ 17
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java Просмотреть файл

@@ -3,18 +3,19 @@ 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.EnumOfflineActivityAwardsItemType;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
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 +34,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 +74,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());
}
@@ -85,11 +92,17 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe
List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId);
if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.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{
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;
}


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java Просмотреть файл

@@ -3,7 +3,7 @@ package com.iformall.service.impl;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.*;
import com.iformall.enums.EnumOfflineActivityAwardsItemType;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
@@ -78,7 +78,7 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi
WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem();
activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo);
activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId());
activityAwardsItemQ.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode());
activityAwardsItemQ.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQ);
if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()) {
return activityAwardsItemList.stream().map(WxOfflineActivityAwardsItem::getId).collect(Collectors.toList());


+ 5
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java Просмотреть файл

@@ -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());


+ 79
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsModelMapper.xml Просмотреть файл

@@ -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>

+ 3
- 4
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml Просмотреть файл

@@ -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
@@ -86,7 +85,7 @@
(#{item.id,jdbcType=BIGINT},
#{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.awardsItemRule,jdbcType=INTEGER},#{item.calculationMode,jdbcType=INTEGER},
#{item.awardsItemRule,jdbcType=INTEGER},
#{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})
</foreach>


+ 9
- 3
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml Просмотреть файл

@@ -9,6 +9,8 @@
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/>
<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="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/>
@@ -34,7 +36,7 @@

<sql id="allColumns">
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,
award_itam_id,award_name,award_grade,
award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio,
@@ -61,6 +63,10 @@
and `grant_id` = #{grantId}
</if>

<if test=" null != grantAwardsMode">
and `grant_awards_mode` = #{grantAwardsMode}
</if>

<if test=" null != activityId">
and `activity_id` = #{activityId}
</if>
@@ -92,7 +98,7 @@
<insert id="insertList" parameterType="java.util.List">
insert into wx_offline_activity_grant_item
(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,
award_itam_id,award_name,award_grade,
award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio,
@@ -102,7 +108,7 @@
values
<foreach collection="grantItemList" item="item" index="index" separator=",">
(#{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.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},


+ 33
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemRecordMapper.xml Просмотреть файл

@@ -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
- 3
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml Просмотреть файл

@@ -16,6 +16,8 @@
<result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/>
<result property="awardItamId" column="award_itam_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="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
@@ -32,7 +34,7 @@
id,tenant_id,parent_tenant_id,
record_id,order_no,order_money,
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,
real_grant_price,real_mall_share_price,real_merchant_share_price,
create_date,update_date
@@ -74,6 +76,12 @@
<if test=" null != grantId ">
and `grant_id` = #{grantId}
</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">
and `create_date` &gt;= #{createDateBegin}
</if>
@@ -110,7 +118,7 @@
(id,
record_id,order_no,order_money,
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,
real_grant_price,real_mall_share_price,real_merchant_share_price,
create_date,update_date)
@@ -119,7 +127,7 @@
(#{item.id,jdbcType=BIGINT},
#{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.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.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL},
#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP})


+ 6
- 4
mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml Просмотреть файл

@@ -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">


Загрузка…
Отмена
Сохранить