From 1ca3637cc1aae06b5a8f4a3f1754264c50f0795f Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 7 Aug 2024 20:21:52 +0800 Subject: [PATCH 01/36] //OfflineActivity --- .../market/WxOfflineActivityController.java | 133 ++++++++++++++++++ .../iformall/domain/po/WxOfflineActivity.java | 88 ++++++++++++ .../po/WxOfflineActivityAwardsItem.java | 95 +++++++++++++ .../domain/po/WxOfflineActivityItem.java | 86 +++++++++++ .../domain/po/WxOfflineActivityMerchant.java | 62 ++++++++ .../EnumOfflineActivityAwardsMoneyRule.java | 37 +++++ .../enums/EnumOfflineActivityAwardsRule.java | 37 +++++ .../EnumOfflineActivityMerchantType.java | 38 +++++ .../enums/EnumOfflineActivityStatus.java | 38 +++++ .../enums/EnumOfflineActivityType.java | 38 +++++ .../WxOfflineActivityAwardsItemMapper.java | 28 ++++ .../mapper/WxOfflineActivityItemMapper.java | 28 ++++ .../mapper/WxOfflineActivityMapper.java | 28 ++++ .../WxOfflineActivityMerchantMapper.java | 30 ++++ .../WxOfflineActivityAwardsItemService.java | 19 +++ .../service/WxOfflineActivityItemService.java | 18 +++ .../WxOfflineActivityMerchantService.java | 19 +++ .../service/WxOfflineActivityService.java | 28 ++++ ...xOfflineActivityAwardsItemServiceImpl.java | 74 ++++++++++ .../WxOfflineActivityItemServiceImpl.java | 85 +++++++++++ .../WxOfflineActivityMerchantServiceImpl.java | 81 +++++++++++ .../impl/WxOfflineActivityServiceImpl.java | 117 +++++++++++++++ .../WxOfflineActivityAwardsItemMapper.xml | 81 +++++++++++ .../mapper/WxOfflineActivityItemMapper.xml | 79 +++++++++++ .../mapper/WxOfflineActivityMapper.xml | 107 ++++++++++++++ .../WxOfflineActivityMerchantMapper.xml | 84 +++++++++++ 26 files changed, 1558 insertions(+) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityMerchant.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsMoneyRule.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMerchantType.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityStatus.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityType.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsItemMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityItemMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityMerchantService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityMerchantServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityMerchantMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java new file mode 100644 index 000000000..a9fa6ada6 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -0,0 +1,133 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.*; +import com.iformall.service.*; +import com.iformall.utils.DateUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.*; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/offline") +@Api(description = "线下活动相关接口") +public class WxOfflineActivityController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxOfflineActivityService wxOfflineActivityService; + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize) { + if (null == wxOfflineActivity) wxOfflineActivity = new WxOfflineActivity(); + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantInfo); + wxOfflineActivity.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxOfflineActivityService.listAsPage(wxOfflineActivity, pageNum, pageSize); + + return new ResultData(page); + } + + + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxOfflineActivity wxOfflineActivity) { + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantEntity); + if(wxOfflineActivity.getActivityItemList() == null || wxOfflineActivity.getActivityItemList().size() == 0){ + return new ResultData(Result.ERROR,"活动项不能为空"); + } + if(wxOfflineActivity.getAllMerchant() == null){ + return new ResultData(Result.ERROR,"活动商户不能为空"); + } + for (WxOfflineActivityItem activityItem:wxOfflineActivity.getActivityItemList()){ + if(activityItem.getActivityAwardsItemList() == null || activityItem.getActivityAwardsItemList().size() == 0){ + return new ResultData(Result.ERROR,"活动["+activityItem.getName()+"]奖项不能为空"); + } + for (WxOfflineActivityAwardsItem activityAwardsItem :activityItem.getActivityAwardsItemList()){ + if(EnumOfflineActivityAwardsMoneyRule.MALL_ONLY.getCode().equals(activityAwardsItem.getMoneyRule())){ + activityAwardsItem.setMallShareRate(new BigDecimal(100)); + activityAwardsItem.setMerchantShareRate(new BigDecimal(0)); + } + else if (EnumOfflineActivityAwardsMoneyRule.MERCHANT_ONLY.getCode().equals(activityAwardsItem.getMoneyRule())){ + activityAwardsItem.setMallShareRate(new BigDecimal(0)); + activityAwardsItem.setMerchantShareRate(new BigDecimal(100)); + } + else if (EnumOfflineActivityAwardsMoneyRule.SHARE.getCode().equals(activityAwardsItem.getMoneyRule())) { + if (activityAwardsItem.getMallShareRate().add(activityAwardsItem.getMerchantShareRate()).intValue() != 100) { + return new ResultData(Result.ERROR,"分担规则下,商户和商管的比例总和需要为100%"); + } + } + + } + } + if(EnumOfflineActivityMerchantType.ADD.getCode().equals(wxOfflineActivity.getAllMerchant())){ + if(wxOfflineActivity.getActivityMerchantList() == null || wxOfflineActivity.getActivityMerchantList().size() == 0){ + return new ResultData(Result.ERROR,"活动参加商户不能为空"); + } + } + else if (EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(wxOfflineActivity.getAllMerchant())) { + if(wxOfflineActivity.getActivityMerchantList() == null || wxOfflineActivity.getActivityMerchantList().size() == 0){ + return new ResultData(Result.ERROR,"活动不参加商户不能为空"); + } + } + wxOfflineActivityService.saveOrUpdate(wxOfflineActivity); + return new ResultData(wxOfflineActivity); + } + + @ApiOperation("上架") + @PostMapping("online") + public ResultData online(@RequestBody WxOfflineActivity wxOfflineActivity) { + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantEntity); + wxOfflineActivity.setStatus(EnumOfflineActivityStatus.ON_LINE.getCode()); + wxOfflineActivityService.updateStatus(wxOfflineActivity); + return new ResultData(); + } + + @ApiOperation("下架") + @PostMapping("offline") + public ResultData offline(@RequestBody WxOfflineActivity wxOfflineActivity) { + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantEntity); + wxOfflineActivity.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); + wxOfflineActivityService.updateStatus(wxOfflineActivity); + return new ResultData(); + } + + @ApiOperation("查询详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxOfflineActivity activity = wxOfflineActivityService.getInfoById(id, tenantInfo.getTenantId()); + return new ResultData(activity); + } + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java new file mode 100644 index 000000000..d6353184f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java @@ -0,0 +1,88 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import java.util.List; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动 + * @TableName wx_offline_activity + */ +@TableName(value ="wx_offline_activity") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivity extends TenantEntity { + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 活动名称 + */ + @TableField(value = "name") + private String name; + + /** + * 开始时间 + */ + @TableField(value = "start_time") + private Date startTime; + + /** + * 结束时间 + */ + @TableField(value = "end_time") + private Date endTime; + + /** + * 状态(0:未上架 1:已上架) + */ + @TableField(value = "status") + private Integer status; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + + /** + * 是否全部商户 + */ + @TableField(value = "all_merchant") + private Integer allMerchant; + + @TableField(exist = false) + private List activityItemList; + + @TableField(exist = false) + private List activityMerchantList; + + @TableField(exist = false) + private Date begin; + @TableField(exist = false) + private Date end; + + /** + * 是否过期 + */ + @TableField(exist = false) + private Integer validStatus; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java new file mode 100644 index 000000000..5f798ade9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -0,0 +1,95 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.math.BigDecimal; +import java.util.Date; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动奖项 + * @TableName wx_offline_activity_awards_item + */ +@TableName(value ="wx_offline_activity_awards_item") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityAwardsItem extends TenantEntity { + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 活动项id + */ + @TableField(value = "activity_item_id") + private Long activityItemId; + + /** + * 奖项名称 + */ + @TableField(value = "name") + private String name; + + /** + * 奖项等级 + */ + @TableField(value = "grade") + private Integer grade; + + /** + * 限制最小金额 + */ + @TableField(value = "min_amount") + private Integer minAmount; + + /** + * 限制最大金额 + */ + @TableField(value = "max_amount") + private Integer maxAmount; + + /** + * 奖项价值 + */ + @TableField(value = "price") + private Integer price; + + /** + * 分担规则(0-商管 1-商户 2-分担) + */ + @TableField(value = "money_rule") + private Integer moneyRule; + + /** + * 商管分担比例 + */ + @TableField(value = "mall_share_rate") + private BigDecimal mallShareRate; + + /** + * 商户分担比例 + */ + @TableField(value = "merchant_share_rate") + private BigDecimal merchantShareRate; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java new file mode 100644 index 000000000..12b81a1bd --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -0,0 +1,86 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import java.util.List; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动项目 + * @TableName wx_offline_activity_item + */ +@TableName(value ="wx_offline_activity_item") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityItem extends TenantEntity { + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 活动项类型 + */ + @TableField(value = "type") + private Integer type; + + /** + * 活动项名称 + */ + @TableField(value = "name") + private String name; + + /** + * 参与金额 + */ + @TableField(value = "limit_money") + private Integer limitMoney; + + /** + * 奖项单价 + */ + @TableField(value = "awards_item_price") + private Integer awardsItemPrice; + + /** + * 奖项总数量 + */ + @TableField(value = "awards_item_count") + private Integer awardsItemCount; + + /** + * 奖项计算规则(0代表无规则) + */ + @TableField(value = "awards_item_rule") + private Integer awardsItemRule; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + + @TableField(exist = false) + private List activityAwardsItemList; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityMerchant.java new file mode 100644 index 000000000..5ecf592ae --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityMerchant.java @@ -0,0 +1,62 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动商户 + * @TableName wx_offline_activity_merchant + */ +@TableName(value ="wx_offline_activity_merchant") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityMerchant extends TenantEntity { + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 活动编号 + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 商户编号 + */ + @TableField(value = "merchant_id") + private Long merchantId; + + /** + * + */ + @TableField(value = "whether_in") + private Integer whetherIn; + + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + + @TableField(exist = false) + private WxMerchant merchant; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsMoneyRule.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsMoneyRule.java new file mode 100644 index 000000000..3bee1a91d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsMoneyRule.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityAwardsMoneyRule { + + MALL_ONLY(0, "商管承担全部"), + MERCHANT_ONLY(1, "商户承担全部"), + SHARE(2, "商管商户分担"); + + public static EnumOfflineActivityAwardsMoneyRule getEnum(Integer code) { + for (EnumOfflineActivityAwardsMoneyRule value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityAwardsMoneyRule(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java new file mode 100644 index 000000000..54d12d581 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityAwardsRule { + + YUAN(1, "四舍五入(元)"), + FEN(2, "四舍五入(分)"), + ; + + public static EnumOfflineActivityAwardsRule getEnum(Integer code) { + for (EnumOfflineActivityAwardsRule value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityAwardsRule(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMerchantType.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMerchantType.java new file mode 100644 index 000000000..1c937d5ea --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityMerchantType.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityMerchantType { + + ALL(0, "全部商户"), + ADD(1, "参加商户"), + UN_ADD(2, "不参加商户") + ; + + public static EnumOfflineActivityMerchantType getEnum(Integer code) { + for (EnumOfflineActivityMerchantType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityMerchantType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityStatus.java new file mode 100644 index 000000000..1aac7fb23 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityStatus.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityStatus { + + OFF_LINE(0, "未上架"), + ON_LINE(1, "已上架"), + EXPIRE(2, "已过期") + ; + + public static EnumOfflineActivityStatus getEnum(Integer code) { + for (EnumOfflineActivityStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityType.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityType.java new file mode 100644 index 000000000..b42d5bd9c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityType.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityType { + + LOTTERY_DRAW(1, "抽奖活动"), + GIFT(2, "满额赠礼"), + CASHBACK(3, "返现活动") + ; + + public static EnumOfflineActivityType getEnum(Integer code) { + for (EnumOfflineActivityType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsItemMapper.java new file mode 100644 index 000000000..117a5559c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityAwardsItemMapper.java @@ -0,0 +1,28 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityAwardsItem; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_awards_item(线下活动奖项)】的数据库操作Mapper +* @createDate 2024-08-06 13:20:56 +* @Entity com.iformall.domain.po.WxOfflineActivityAwardsItem +*/ +public interface WxOfflineActivityAwardsItemMapper extends CommonMapper { + + WxOfflineActivityAwardsItem selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem); + + Integer itemCount(WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem); + + void delete(WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem); +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityItemMapper.java new file mode 100644 index 000000000..077d55007 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityItemMapper.java @@ -0,0 +1,28 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityItem; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_item(线下活动项目)】的数据库操作Mapper +* @createDate 2024-08-06 13:20:56 +* @Entity com.iformall.domain.po.WxOfflineActivityItem +*/ +public interface WxOfflineActivityItemMapper extends CommonMapper { + + WxOfflineActivityItem selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivityItem wxOfflineActivityItem); + + List findIds(WxOfflineActivityItem wxOfflineActivityItem); + + void delete(WxOfflineActivityItem wxOfflineActivityItem); +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMapper.java new file mode 100644 index 000000000..3ea3df513 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMapper.java @@ -0,0 +1,28 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivity; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity(线下活动)】的数据库操作Mapper +* @createDate 2024-08-06 13:20:56 +* @Entity com.iformall.domain.po.WxOfflineActivity +*/ +public interface WxOfflineActivityMapper extends CommonMapper { + + WxOfflineActivity selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivity wxOfflineActivity); + + void updateStatus(WxOfflineActivity wxOfflineActivity); + + List findIds(WxOfflineActivity wxOfflineActivity); +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java new file mode 100644 index 000000000..a9dde663f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java @@ -0,0 +1,30 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityMerchant; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_merchant(线下活动商户)】的数据库操作Mapper +* @createDate 2024-08-06 13:20:56 +* @Entity com.iformall.domain.po.WxOfflineActivityMerchant +*/ +public interface WxOfflineActivityMerchantMapper extends CommonMapper { + + WxOfflineActivityMerchant selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivityMerchant wxOfflineActivityMerchant); + + void delete(WxOfflineActivityMerchant wxOfflineActivityMerchant); + + int merchantCount(WxOfflineActivityMerchant wxOfflineActivityMerchant); + + List findActivityIdList(@Param("merchantId")Long merchantId,@Param("tenantId")String tenantId); +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java new file mode 100644 index 000000000..9e5dbc3b5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java @@ -0,0 +1,19 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityAwardsItem; +import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxOfflineActivityItem; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_awards_item(线下活动奖项)】的数据库操作Service +* @createDate 2024-08-06 13:20:56 +*/ +public interface WxOfflineActivityAwardsItemService { + + void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList); + + List getActivityAwardsItemList(Long activityItemId, String tenantId); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemService.java new file mode 100644 index 000000000..162f950fe --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemService.java @@ -0,0 +1,18 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivity; +import com.iformall.domain.po.WxOfflineActivityItem; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_item(线下活动项目)】的数据库操作Service +* @createDate 2024-08-06 13:20:56 +*/ +public interface WxOfflineActivityItemService { + + void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List activityItemList); + + List getActivityItemList(Long activityId, String tenantId); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityMerchantService.java new file mode 100644 index 000000000..1cdc03a97 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityMerchantService.java @@ -0,0 +1,19 @@ +package com.iformall.service; + + +import com.iformall.domain.po.WxOfflineActivity; +import com.iformall.domain.po.WxOfflineActivityMerchant; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_merchant(线下活动商户)】的数据库操作Service +* @createDate 2024-08-06 13:20:56 +*/ +public interface WxOfflineActivityMerchantService { + + void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List activityMerchantList); + + List getActivityMerchantList(Long activityId, String tenantId); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityService.java new file mode 100644 index 000000000..9dbdf9bb8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityService.java @@ -0,0 +1,28 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxOfflineActivity; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity(线下活动)】的数据库操作Service +* @createDate 2024-08-06 13:20:56 +*/ +public interface WxOfflineActivityService{ + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(WxOfflineActivity record, Integer pageIndex, Integer pageSize); + + void saveOrUpdate(WxOfflineActivity wxOfflineActivity); + + void updateStatus(WxOfflineActivity wxOfflineActivity); + + WxOfflineActivity getInfoById(Long id, String tenantId); +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java new file mode 100644 index 000000000..16ba07063 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -0,0 +1,74 @@ +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.EnumOfflineActivityType; +import com.iformall.service.WxOfflineActivityAwardsItemService; +import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_awards_item(线下活动奖项)】的数据库操作Service实现 +* @createDate 2024-08-06 13:20:56 +*/ +@Service +public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivityAwardsItemService{ + + @Autowired + WxOfflineActivityAwardsItemMapper wxOfflineActivityAwardsItemMapper; + + @Override + public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList) { + WxOfflineActivityAwardsItem activityAwardsItemDel = new WxOfflineActivityAwardsItem(); + activityAwardsItemDel.updateTenantInfo(activityItem); + activityAwardsItemDel.setActivityItemId(activityItem.getId()); + wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); + + for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { + if(awaItem.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + awaItem.setId(idWorker.nextId()); + } + awaItem.updateTenantInfo(activityItem); + awaItem.setActivityItemId(activityItem.getId()); + + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + awaItem.setGrade(-1); + awaItem.setMinAmount(0); + awaItem.setMaxAmount(-1); + } + else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { + + } + else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + awaItem.setGrade(-1); + awaItem.setMinAmount(0); + awaItem.setMaxAmount(-1); + } + if(awaItem.getCreateDate() == null){ + awaItem.setCreateDate(activityItem.getUpdateDate()); + } + awaItem.setUpdateDate(activityItem.getUpdateDate()); + wxOfflineActivityAwardsItemMapper.insert(awaItem); + } + } + + @Override + public List getActivityAwardsItemList(Long activityItemId, String tenantId) { + WxOfflineActivityAwardsItem activityAwardsItemQuery = new WxOfflineActivityAwardsItem(); + activityAwardsItemQuery.setActivityItemId(activityItemId); + activityAwardsItemQuery.setTenantId(tenantId); + List activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQuery); + return activityAwardsItemList; + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java new file mode 100644 index 000000000..8581143bf --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -0,0 +1,85 @@ +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.WxOfflineActivityItem; +import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.service.WxOfflineActivityAwardsItemService; +import com.iformall.service.WxOfflineActivityItemService; +import com.iformall.mapper.WxOfflineActivityItemMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_item(线下活动项目)】的数据库操作Service实现 +* @createDate 2024-08-06 13:20:56 +*/ +@Service +public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemService{ + + @Autowired + WxOfflineActivityItemMapper wxOfflineActivityItemMapper; + + @Autowired + WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; + + @Override + public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List activityItemList) { + WxOfflineActivityItem activityItemDel = new WxOfflineActivityItem(); + activityItemDel.updateTenantInfo(wxOfflineActivity); + activityItemDel.setActivityId(wxOfflineActivity.getId()); + wxOfflineActivityItemMapper.delete(activityItemDel); + + for (WxOfflineActivityItem activityItem : activityItemList) { + if(activityItem.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityItem.setId(idWorker.nextId()); + } + + activityItem.updateTenantInfo(wxOfflineActivity); + activityItem.setActivityId(wxOfflineActivity.getId()); + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + activityItem.setAwardsItemRule(0); + } + else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { + activityItem.setLimitMoney(0); + activityItem.setAwardsItemPrice(0); + activityItem.setAwardsItemRule(0); + } + else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + activityItem.setAwardsItemPrice(0); + activityItem.setAwardsItemCount(0); + } + if(activityItem.getCreateDate() == null){ + activityItem.setCreateDate(wxOfflineActivity.getUpdateDate()); + } + activityItem.setUpdateDate(wxOfflineActivity.getUpdateDate()); + wxOfflineActivityItemMapper.insert(activityItem); + + //处理奖项 + wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList()); + } + } + + @Override + public List getActivityItemList(Long activityId, String tenantId) { + WxOfflineActivityItem activityItemQuery = new WxOfflineActivityItem(); + activityItemQuery.setActivityId(activityId); + activityItemQuery.setTenantId(tenantId); + List itemList = wxOfflineActivityItemMapper.findList(activityItemQuery); + for (WxOfflineActivityItem item : itemList) { + List activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId); + item.setActivityAwardsItemList(activityAwardsItemList); + } + return itemList; + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityMerchantServiceImpl.java new file mode 100644 index 000000000..6c3bee21d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityMerchantServiceImpl.java @@ -0,0 +1,81 @@ +package com.iformall.service.impl; + +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxOfflineActivity; +import com.iformall.domain.po.WxOfflineActivityMerchant; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.service.WxMerchantService; +import com.iformall.service.WxOfflineActivityMerchantService; +import com.iformall.mapper.WxOfflineActivityMerchantMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_merchant(线下活动商户)】的数据库操作Service实现 +* @createDate 2024-08-06 13:20:56 +*/ +@Service +public class WxOfflineActivityMerchantServiceImpl implements WxOfflineActivityMerchantService{ + + @Autowired + private WxOfflineActivityMerchantMapper wxOfflineActivityMerchantMapper; + + @Autowired + WxMerchantService wxMerchantService; + + @Override + public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List activityMerchantList) { + WxOfflineActivityMerchant activityMerchantDel = new WxOfflineActivityMerchant(); + activityMerchantDel.updateTenantInfo(wxOfflineActivity); + activityMerchantDel.setActivityId(wxOfflineActivity.getId()); + wxOfflineActivityMerchantMapper.delete(activityMerchantDel); + + if(EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ + return; + } + for (WxOfflineActivityMerchant wxOfflineActivityMerchant : activityMerchantList) { + if(wxOfflineActivityMerchant.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + wxOfflineActivityMerchant.setId(idWorker.nextId()); + } + + wxOfflineActivityMerchant.updateTenantInfo(wxOfflineActivity); + wxOfflineActivityMerchant.setActivityId(wxOfflineActivity.getId()); + if(EnumOfflineActivityMerchantType.ADD.getCode().equals(wxOfflineActivity.getAllMerchant())){ + wxOfflineActivityMerchant.setWhetherIn(EnumYesOrNo.YES.getCode()); + } + else if (EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(wxOfflineActivity.getAllMerchant())) { + wxOfflineActivityMerchant.setWhetherIn(EnumYesOrNo.NO.getCode()); + } + wxOfflineActivityMerchantMapper.insert(wxOfflineActivityMerchant); + } + } + + @Override + public List getActivityMerchantList(Long activityId, String tenantId) { + WxOfflineActivityMerchant activityMerchantQuery = new WxOfflineActivityMerchant(); + activityMerchantQuery.setActivityId(activityId); + activityMerchantQuery.setTenantId(tenantId); + List activityMerchantList = wxOfflineActivityMerchantMapper.findList(activityMerchantQuery); + + WxMerchant merchantQ = new WxMerchant(); + merchantQ.setTenantId(tenantId); + Map merchantMap = wxMerchantService.findMerchantMap(merchantQ); + + for (WxOfflineActivityMerchant wxOfflineActivityMerchant : activityMerchantList) { + wxOfflineActivityMerchant.setMerchant(merchantMap.get(wxOfflineActivityMerchant.getMerchantId())); + } + return activityMerchantList; + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java new file mode 100644 index 000000000..83b600a09 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -0,0 +1,117 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxOfflineActivity; +import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.domain.po.WxOfflineActivityMerchant; +import com.iformall.domain.po.WxRaffleActivity; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.service.WxOfflineActivityItemService; +import com.iformall.service.WxOfflineActivityMerchantService; +import com.iformall.service.WxOfflineActivityService; +import com.iformall.mapper.WxOfflineActivityMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity(线下活动)】的数据库操作Service实现 +* @createDate 2024-08-06 13:20:56 +*/ +@Service +public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ + + @Autowired + WxOfflineActivityMapper wxOfflineActivityMapper; + + @Autowired + WxOfflineActivityItemService wxOfflineActivityItemService; + @Autowired + WxOfflineActivityMerchantService wxOfflineActivityMerchantService; + + @Override + public PageInfo listAsPage(WxOfflineActivity record, Integer pageIndex, Integer pageSize) { + handlerQuery(record); + PageInfo activityPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOfflineActivityMapper.findList(record)); + handlerReturnList(activityPageInfo.getList()); + return activityPageInfo; + } + + private void handlerQuery(WxOfflineActivity record) { + if (null != record.getStatus()) { + //已上架 + if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(record.getStatus())){ + record.setValidStatus(EnumYesOrNo.NO.getCode()); + } + //已过期 + else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(record.getStatus())){ + record.setStatus(null); + record.setValidStatus(EnumYesOrNo.YES.getCode()); + } + } + } + + private void handlerReturnList(List list) { + if (null != list && !list.isEmpty()) { + Date now = new Date(); + for (WxOfflineActivity activity : list) { + if(now.before(activity.getEndTime())){ + activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); + } + //获取发奖订单数 + + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveOrUpdate(WxOfflineActivity wxOfflineActivity) { + Date now = new Date(); + if(wxOfflineActivity.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + wxOfflineActivity.setId(idWorker.nextId()); + wxOfflineActivity.setCreateDate(now); + wxOfflineActivity.setCreateDate(now); + wxOfflineActivity.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); + wxOfflineActivityMapper.insert(wxOfflineActivity); + } + else{ + wxOfflineActivity.setUpdateDate(now); + wxOfflineActivityMapper.updateStatus(wxOfflineActivity); + } + //处理活动项 + wxOfflineActivityItemService.saveOrUpdateFromActivity(wxOfflineActivity,wxOfflineActivity.getActivityItemList()); + //处理活动商户 + wxOfflineActivityMerchantService.saveOrUpdateFromActivity(wxOfflineActivity,wxOfflineActivity.getActivityMerchantList()); + } + + @Override + public void updateStatus(WxOfflineActivity wxOfflineActivity) { + wxOfflineActivityMapper.updateStatus(wxOfflineActivity); + } + + @Override + public WxOfflineActivity getInfoById(Long id, String tenantId) { + WxOfflineActivity wxOfflineActivity = wxOfflineActivityMapper.selectById(id, tenantId); + List activityItemList = wxOfflineActivityItemService.getActivityItemList(wxOfflineActivity.getId(),tenantId); + wxOfflineActivity.setActivityItemList(activityItemList); + if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ + List activityMerchantList = wxOfflineActivityMerchantService.getActivityMerchantList(wxOfflineActivity.getId(),tenantId); + wxOfflineActivity.setActivityMerchantList(activityMerchantList); + } + return wxOfflineActivity; + } +} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml new file mode 100644 index 000000000..d27452476 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + activity_item_id,`name`,grade, + min_amount,max_amount,price, + money_rule,mall_share_rate,merchant_share_rate, + create_date,update_date + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `activity_item_id` = #{activityItemId} + + + + and `name` like concat('%', #{name},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + delete from wx_offline_activity_awards_item + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml new file mode 100644 index 000000000..8ee759c51 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + activity_id,`type`,`name`, + limit_money,awards_item_price,awards_item_count, + awards_item_rule,create_date,update_date + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `activity_id` = #{activityId} + + + + and `name` like concat('%', #{name},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + delete from wx_offline_activity_item + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityMapper.xml new file mode 100644 index 000000000..235ea3f2d --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + `name`,start_time,end_time, + status,create_date,update_date, + all_merchant + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `start_time` >= #{begin} + + + + and `end_time` <= #{end} + + + + and `all_merchant` = #{allMerchant} + + + + + and end_time >= now() + + + + + and end_time <= now() + + + + and `name` like concat('%', #{name},'%') + + + + and `status` = #{status} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + update wx_offline_activity + set `status` = #{status}, + `update_date` = #{updateDate} + where id=#{id} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityMerchantMapper.xml new file mode 100644 index 000000000..81138e986 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityMerchantMapper.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + activity_id,merchant_id,whether_in,create_date, + update_date + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `activity_id` = #{activityId} + + + + and `merchant_id` = #{merchantId} + + + + and `whether_in` = #{whetherIn} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + delete from wx_offline_activity_merchant + where `activity_id` = #{activityId} + + and `merchant_id` = #{merchantId} + + + + + + + From cd1dfe041b344a7d5395f8530110eb78924cda65 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 8 Aug 2024 14:21:16 +0800 Subject: [PATCH 02/36] //OfflineActivity --- .../java/com/iformall/domain/po/WxOfflineActivityItem.java | 3 +++ .../src/main/resources/mapper/WxOfflineActivityItemMapper.xml | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 12b81a1bd..5dd7b366e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -56,6 +56,9 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "awards_item_price") private Integer awardsItemPrice; + @TableField(value = "awards_item_limit") + private Integer awardsItemLimit; + /** * 奖项总数量 */ diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index 8ee759c51..f979a89e4 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -13,6 +13,7 @@ + @@ -22,7 +23,7 @@ id,tenant_id,parent_tenant_id, activity_id,`type`,`name`, - limit_money,awards_item_price,awards_item_count, + limit_money,awards_item_price,awards_item_limit,awards_item_count, awards_item_rule,create_date,update_date From 336c2667ea26ecad6aaefd45f476fff27c02853d Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 8 Aug 2024 14:26:03 +0800 Subject: [PATCH 03/36] //OfflineActivity --- .../java/com/iformall/domain/po/WxOfflineActivityItem.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 5dd7b366e..2be2632e5 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -56,6 +56,9 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "awards_item_price") private Integer awardsItemPrice; + /** + * 奖项数量限制 + */ @TableField(value = "awards_item_limit") private Integer awardsItemLimit; From 7748cfdfe9b28b8f584dee7c49be8d5937488c78 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 8 Aug 2024 22:56:39 +0800 Subject: [PATCH 04/36] //OfflineActivity --- .../com/iformall/domain/po/WxOfflineActivityAwardsItem.java | 6 ++++++ .../com/iformall/enums/EnumOfflineActivityAwardsRule.java | 3 ++- .../impl/WxOfflineActivityAwardsItemServiceImpl.java | 4 +++- .../service/impl/WxOfflineActivityItemServiceImpl.java | 5 +++-- .../resources/mapper/WxOfflineActivityAwardsItemMapper.xml | 5 +++-- .../main/resources/mapper/WxOfflineActivityItemMapper.xml | 2 +- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index 5f798ade9..77864fb56 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -56,6 +56,12 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { @TableField(value = "max_amount") private Integer maxAmount; + /** + * 返现比例(与奖项价值2选1) + */ + @TableField(value = "max_amount") + private BigDecimal cashBackRatio; + /** * 奖项价值 */ diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java index 54d12d581..c24a2d57e 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsRule.java @@ -6,8 +6,9 @@ package com.iformall.enums; */ public enum EnumOfflineActivityAwardsRule { + DEF(0, "四舍五入(分)"), YUAN(1, "四舍五入(元)"), - FEN(2, "四舍五入(分)"), + TEN(2, "四舍五入(十)"), ; public static EnumOfflineActivityAwardsRule getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index 16ba07063..195d05383 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -9,6 +9,7 @@ import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.Collections; import java.util.List; @@ -39,12 +40,13 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity awaItem.setActivityItemId(activityItem.getId()); if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + awaItem.setCashBackRatio(BigDecimal.ZERO); awaItem.setGrade(-1); awaItem.setMinAmount(0); awaItem.setMaxAmount(-1); } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { - + awaItem.setCashBackRatio(BigDecimal.ZERO); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { awaItem.setGrade(-1); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java index 8581143bf..fa1fff94d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -4,6 +4,7 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxOfflineActivity; import com.iformall.domain.po.WxOfflineActivityAwardsItem; import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.enums.EnumOfflineActivityAwardsRule; import com.iformall.enums.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityAwardsItemService; import com.iformall.service.WxOfflineActivityItemService; @@ -44,12 +45,12 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe activityItem.updateTenantInfo(wxOfflineActivity); activityItem.setActivityId(wxOfflineActivity.getId()); if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - activityItem.setAwardsItemRule(0); + activityItem.setAwardsItemRule(EnumOfflineActivityAwardsRule.DEF.getCode()); } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { activityItem.setLimitMoney(0); activityItem.setAwardsItemPrice(0); - activityItem.setAwardsItemRule(0); + activityItem.setAwardsItemRule(EnumOfflineActivityAwardsRule.DEF.getCode()); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { activityItem.setAwardsItemPrice(0); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index d27452476..ec009646b 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -13,8 +13,9 @@ + - + @@ -24,7 +25,7 @@ id,tenant_id,parent_tenant_id, activity_item_id,`name`,grade, - min_amount,max_amount,price, + min_amount,max_amount,cash_back_ratio,price, money_rule,mall_share_rate,merchant_share_rate, create_date,update_date diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index f979a89e4..68f37591e 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -15,7 +15,7 @@ - + From 25215c3bec0f7d37eddb6e9699978a1a8a4dfd0b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 9 Aug 2024 02:03:22 +0800 Subject: [PATCH 05/36] //OfflineActivity --- .../com/iformall/service/impl/WxOfflineActivityServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index 83b600a09..9709c53a4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -86,7 +86,7 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ } else{ wxOfflineActivity.setUpdateDate(now); - wxOfflineActivityMapper.updateStatus(wxOfflineActivity); + wxOfflineActivityMapper.updateById(wxOfflineActivity); } //处理活动项 wxOfflineActivityItemService.saveOrUpdateFromActivity(wxOfflineActivity,wxOfflineActivity.getActivityItemList()); From fc05608e70c314487f8a8ef7c936b6833daac202 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 9 Aug 2024 18:55:10 +0800 Subject: [PATCH 06/36] //OfflineActivity --- .../WxOfflineActivityGrantController.java | 75 +++++++ .../WxOfflineActivityRecordController.java | 94 +++++++++ .../WxOfflineActivityRecordController.java | 90 +++++++++ .../po/WxOfflineActivityGrantAward.java | 113 +++++++++++ .../domain/po/WxOfflineActivityGrantItem.java | 157 +++++++++++++++ .../po/WxOfflineActivityGrantSettlement.java | 133 +++++++++++++ .../domain/po/WxOfflineActivityRecord.java | 164 ++++++++++++++++ .../po/WxOfflineActivityRecordGrant.java | 41 ++++ .../vo/OfflineActivityRecordStatistics.java | 15 ++ .../EnumOfflineActivityRecordStatus.java | 38 ++++ .../WxOfflineActivityGrantAwardMapper.java | 19 ++ .../WxOfflineActivityGrantItemMapper.java | 19 ++ ...xOfflineActivityGrantSettlementMapper.java | 19 ++ .../WxOfflineActivityRecordGrantMapper.java | 22 +++ .../mapper/WxOfflineActivityRecordMapper.java | 30 +++ .../WxOfflineActivityGrantAwardService.java | 20 ++ .../WxOfflineActivityGrantItemService.java | 13 ++ ...OfflineActivityGrantSettlementService.java | 13 ++ .../WxOfflineActivityRecordGrantService.java | 13 ++ .../WxOfflineActivityRecordService.java | 28 +++ ...xOfflineActivityGrantAwardServiceImpl.java | 119 +++++++++++ ...WxOfflineActivityGrantItemServiceImpl.java | 21 ++ ...ineActivityGrantSettlementServiceImpl.java | 21 ++ ...OfflineActivityRecordGrantServiceImpl.java | 21 ++ .../WxOfflineActivityRecordServiceImpl.java | 120 ++++++++++++ .../WxOfflineActivityGrantAwardMapper.xml | 35 ++++ .../WxOfflineActivityGrantItemMapper.xml | 44 +++++ ...WxOfflineActivityGrantSettlementMapper.xml | 39 ++++ .../WxOfflineActivityRecordGrantMapper.xml | 26 +++ .../mapper/WxOfflineActivityRecordMapper.xml | 185 ++++++++++++++++++ 30 files changed, 1747 insertions(+) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java create mode 100644 mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecordGrant.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityRecordStatus.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java new file mode 100644 index 000000000..59c796489 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -0,0 +1,75 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.service.WxOfflineActivityGrantAwardService; +import com.iformall.service.WxOfflineActivityRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/offlineGrant") +@Api(description = "线下活动登记相关接口") +public class WxOfflineActivityGrantController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxOfflineActivityGrantAwardService wxOfflineActivityGrantAwardService; + + @ApiOperation("参加活动用户订单统计") + @GetMapping("recordStatistics") + public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + if(wxOfflineActivityRecord.getActivityId() == null){ + return new ResultData(Result.ERROR,"请选择活动"); + } + if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + Map statisticsMap = wxOfflineActivityGrantAwardService.getRecordStatistics(wxOfflineActivityRecord.getActivityId(),wxOfflineActivityRecord); + return new ResultData(statisticsMap); + } + + @ApiOperation("参加活动用户订单列表") + @GetMapping("recordList") + @ApiImplicitParams({}) + public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + if(wxOfflineActivityRecord.getActivityId() == null){ + return new ResultData(Result.ERROR,"请选择活动"); + } + if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); + List recordList = wxOfflineActivityGrantAwardService.getRecordList(wxOfflineActivityRecord.getActivityId(),wxOfflineActivityRecord); + + return new ResultData(recordList); + } + + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java new file mode 100644 index 000000000..2058cd839 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -0,0 +1,94 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxOfflineActivity; +import com.iformall.domain.po.WxOfflineActivityAwardsItem; +import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.service.WxOfflineActivityRecordService; +import com.iformall.service.WxOfflineActivityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/offlineRecord") +@Api(description = "线下活动登记相关接口") +public class WxOfflineActivityRecordController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxOfflineActivityRecordService wxOfflineActivityRecordService; + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { + if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); + + return new ResultData(page); + } + + @ApiOperation("审核通过") + @PostMapping("audiPass") + public ResultData audiPass(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantEntity); + wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + wxOfflineActivityRecordService.auditRecord(wxOfflineActivityRecord,getUserId()); + return new ResultData(); + } + + @ApiOperation("审核驳回") + @PostMapping("audtFail") + public ResultData audtFail(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { + + if(StringUtil.isBlank(wxOfflineActivityRecord.getAuditRemark())){ + return new ResultData(Result.ERROR,"驳回意见不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantEntity); + wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode()); + wxOfflineActivityRecordService.auditRecord(wxOfflineActivityRecord,getUserId()); + return new ResultData(); + } + + @ApiOperation("查询详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxOfflineActivityRecord record = wxOfflineActivityRecordService.getInfoById(id, tenantInfo.getTenantId()); + return new ResultData(record); + } + + +} diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java new file mode 100644 index 000000000..9bdacbd63 --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java @@ -0,0 +1,90 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/api/offlineRecord") +@Api(description = "线下活动登记相关接口") +public class WxOfflineActivityRecordController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxOfflineActivityRecordService wxOfflineActivityRecordService; + + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { + if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); + wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); + final PageInfo page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { + if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + return new ResultData(Result.ERROR,"客户手机号不能为空"); + } + if (null == wxOfflineActivityRecord.getOrderMoney() ) { + return new ResultData(Result.ERROR,"订单金额不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantEntity); + wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); + wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); + wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord); + return new ResultData(); + } + + @ApiOperation("查询当前信息详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId()); + return new ResultData(activity); + } + + @ApiOperation("查询当前信息统计") + @GetMapping("statistics") + public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); + Map statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); + return new ResultData(statisticsMap); + } + + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java new file mode 100644 index 000000000..8df625d6b --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -0,0 +1,113 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动发放奖励 + * @TableName wx_offline_activity_grant_award + */ +@TableName(value ="wx_offline_activity_grant_award") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityGrantAward extends TenantEntity{ + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 活动ID + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 订单总金额 + */ + @TableField(value = "order_money_sum") + private Integer orderMoneySum; + + /** + * 订单数量 + */ + @TableField(value = "order_count") + private Integer orderCount; + + /** + * 客户姓名 + */ + @TableField(value = "cus_name") + private String cusName; + + /** + * 客户电话 + */ + @TableField(value = "cus_phone") + private String cusPhone; + + /** + * 实际领奖人 + */ + @TableField(value = "real_name") + private String realName; + + /** + * 实际领奖人身份证号 + */ + @TableField(value = "real_card") + private String realCard; + + /** + * 签名图片 + */ + @TableField(value = "sign_img") + private String signImg; + + /** + * + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + + /** + * 抽奖券编码 + */ + @TableField(value = "lottery_num") + private Object lotteryNum; + + /** + * 抽奖券数量 + */ + @TableField(value = "lottery_count") + private Integer lotteryCount; + + /** + * 周年庆抽奖编码 + */ + @TableField(value = "anniversary_lottery_num") + private Object anniversaryLotteryNum; +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java new file mode 100644 index 000000000..b2d182145 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -0,0 +1,157 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动发放奖励 + * @TableName wx_offline_activity_grant_item + */ +@TableName(value ="wx_offline_activity_grant_item") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityGrantItem extends TenantEntity { + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 发放id + */ + @TableField(value = "grant_id") + private Long grantId; + + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 活动名称 + */ + @TableField(value = "activity_name") + private String activityName; + + /** + * 活动项id + */ + @TableField(value = "activity_item_id") + private Long activityItemId; + + /** + * 活动项名称 + */ + @TableField(value = "activity_item_name") + private Integer activityItemName; + + /** + * 活动项类型 + */ + @TableField(value = "activity_item_type") + private Integer activityItemType; + + /** + * 奖项id + */ + @TableField(value = "award_itam_id") + private Long awardItamId; + + /** + * 奖项名称 + */ + @TableField(value = "award_name") + private String awardName; + + /** + * 奖项等级 + */ + @TableField(value = "award_grade") + private Integer awardGrade; + + /** + * 奖项限制最小金额 + */ + @TableField(value = "award_min_amount") + private Integer awardMinAmount; + + /** + * 奖项限制最大金额 + */ + @TableField(value = "award_max_amount") + private Integer awardMaxAmount; + + /** + * 返现比例 + */ + @TableField(value = "cash_back_ratio") + private BigDecimal cashBackRatio; + + /** + * 奖项价值 + */ + @TableField(value = "award_price") + private Integer awardPrice; + + /** + * 奖项数量 + */ + @TableField(value = "award_count") + private Integer awardCount; + + /** + * 分担规则(0-商管 1-商户 2-分担) + */ + @TableField(value = "money_rule") + private Integer moneyRule; + + /** + * 商管分担比例 + */ + @TableField(value = "mall_share_rate") + private BigDecimal mallShareRate; + + /** + * + */ + @TableField(value = "mall_share_price") + private Integer mallSharePrice; + + /** + * 商户分担比例 + */ + @TableField(value = "merchant_share_rate") + private BigDecimal merchantShareRate; + + /** + * + */ + @TableField(value = "merchant_share_price") + private Integer merchantSharePrice; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java new file mode 100644 index 000000000..c8c580b36 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -0,0 +1,133 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动发放奖励结算 + * @TableName wx_offline_activity_grant_settlement + */ +@TableName(value ="wx_offline_activity_grant_settlement") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityGrantSettlement extends TenantEntity { + + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 参与记录id + */ + @TableField(value = "record_id") + private Long recordId; + + /** + * 订单编号 + */ + @TableField(value = "order_no") + private String orderNo; + + /** + * 订单金额 + */ + @TableField(value = "order_money") + private Integer orderMoney; + + /** + * 商户id + */ + @TableField(value = "merchant_id") + private Long merchantId; + + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 活动项id + */ + @TableField(value = "activity_item_id") + private Long activityItemId; + + /** + * 奖项id + */ + @TableField(value = "award_itam_id") + private Long awardItamId; + + /** + * 发放id + */ + @TableField(value = "grant_id") + private Long grantId; + + /** + * 发放总价值 + */ + @TableField(value = "grant_price") + private Integer grantPrice; + + /** + * 商管承担总金额 + */ + @TableField(value = "mall_share_price") + private Integer mallSharePrice; + + /** + * 商户承担总金额 + */ + @TableField(value = "merchant_share_price") + private Integer merchantSharePrice; + + /** + * 订单占比 + */ + @TableField(value = "order_ratio") + private BigDecimal orderRatio; + + /** + * 实际发放总价值 + */ + @TableField(value = "real_grant_price") + private Integer realGrantPrice; + + /** + * 实际商管承担总金额 + */ + @TableField(value = "real_mall_share_price") + private BigDecimal realMallSharePrice; + + /** + * 实际商户承担总金额 + */ + @TableField(value = "real_merchant_share_price") + private BigDecimal realMerchantSharePrice; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java new file mode 100644 index 000000000..c2749348d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -0,0 +1,164 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动参与登记 + * @TableName wx_offline_activity_record + */ +@TableName(value ="wx_offline_activity_record") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityRecord extends TenantEntity { + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 订单号 + */ + @TableField(value = "order_no") + private String orderNo; + + /** + * 订单金额 + */ + @TableField(value = "order_money") + private Integer orderMoney; + + /** + * 客户姓名 + */ + @TableField(value = "cus_name") + private String cusName; + + /** + * + */ + @TableField(value = "real_cus_name") + private String realCusName; + + /** + * 客户电话 + */ + @TableField(value = "cus_phone") + private String cusPhone; + + /** + * 客户地址 + */ + @TableField(value = "cus_address") + private String cusAddress; + + /** + * 身份证号 + */ + @TableField(value = "cus_card") + private String cusCard; + + /** + * 抽奖券编码 + */ + @TableField(value = "lottery_num") + private String lotteryNum; + + /** + * 抽奖券数量 + */ + @TableField(value = "lottery_count") + private Integer lotteryCount; + + /** + * 周年庆抽奖编码 + */ + @TableField(value = "anniversary_lottery_num") + private String anniversaryLotteryNum; + + /** + * + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 商户编号 + */ + @TableField(value = "merchant_id") + private Long merchantId; + + @TableField(exist = false) + private String merchantName; + + @TableField(exist = false) + private List merchantIdList; + + @TableField(value = "business_id") + private Integer businessId; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + + /** + * 审批意见 + */ + @TableField(value = "audit_remark") + private String auditRemark; + + /** + * 审批状态 + */ + @TableField(value = "audit_status") + private Integer auditStatus; + + /** + * 审核人 + */ + @TableField(value = "audit_by") + private Long auditBy; + + @TableField(exist = false) + private String auditByName; + + /** + * 审核时间 + */ + @TableField(value = "audit_time") + private Date auditTime; + + @TableField(exist = false) + private Date auditTimeBegin; + @TableField(exist = false) + private Date auditTimeEnd; + + @TableField(exist = false) + private Long activityId; +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecordGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecordGrant.java new file mode 100644 index 000000000..4142ef748 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecordGrant.java @@ -0,0 +1,41 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 线下活动参与登记与发放关联表 + * @TableName wx_offline_activity_record_grant + */ +@TableName(value ="wx_offline_activity_record_grant") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityRecordGrant extends TenantEntity { + + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 参与记录id + */ + @TableField(value = "record_id") + private Long recordId; + + /** + * 发放id + */ + @TableField(value = "grant_id") + private Long grantId; +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java new file mode 100644 index 000000000..8c8c69376 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java @@ -0,0 +1,15 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class OfflineActivityRecordStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer auditStatus; + private Integer count; + private Integer sumMoney; +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityRecordStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityRecordStatus.java new file mode 100644 index 000000000..f35718ac5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityRecordStatus.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityRecordStatus { + + AUDTING(0, "审核中"), + AUDI_SUCCESS(1, "审批通过"), + AUDT_FAIL(2, "审批拒绝"), + IS_GRANT(10, "已发奖"),; + + public static EnumOfflineActivityRecordStatus getEnum(Integer code) { + for (EnumOfflineActivityRecordStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityRecordStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java new file mode 100644 index 000000000..9b49f77ad --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -0,0 +1,19 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityGrantAward +*/ +public interface WxOfflineActivityGrantAwardMapper extends CommonMapper { + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java new file mode 100644 index 000000000..07b70c38f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java @@ -0,0 +1,19 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityGrantItem +*/ +public interface WxOfflineActivityGrantItemMapper extends CommonMapper { + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java new file mode 100644 index 000000000..4e6658dc0 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -0,0 +1,19 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantSettlement; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityGrantSettlement +*/ +public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper { + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java new file mode 100644 index 000000000..e1082caec --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java @@ -0,0 +1,22 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityRecordGrant; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityRecordGrant +*/ +public interface WxOfflineActivityRecordGrantMapper extends CommonMapper { + + Integer selectGrantCount(@Param("tenantId")String tenantId, @Param("activityId")Long activityId, @Param("recordId")Long recordId); + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java new file mode 100644 index 000000000..44dd1192a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -0,0 +1,30 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.OfflineActivityRecordStatistics; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityRecord +*/ +public interface WxOfflineActivityRecordMapper extends CommonMapper { + + List findList(WxOfflineActivityRecord record); + + WxOfflineActivityRecord selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List auditStatusStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); + + void updateAuditStatus(WxOfflineActivityRecord record); +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java new file mode 100644 index 000000000..90cf05b2c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -0,0 +1,20 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxOfflineActivityRecord; + +import java.util.List; +import java.util.Map; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityGrantAwardService { + + Map getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); + + List getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java new file mode 100644 index 000000000..b25751e15 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java @@ -0,0 +1,13 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityGrantItem; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityGrantItemService { + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java new file mode 100644 index 000000000..87ba6a884 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -0,0 +1,13 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityGrantSettlement; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityGrantSettlementService { + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java new file mode 100644 index 000000000..b7b103304 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java @@ -0,0 +1,13 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxOfflineActivityRecordGrant; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityRecordGrantService{ + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java new file mode 100644 index 000000000..6cb92467f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java @@ -0,0 +1,28 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxRaffleActivityRecord; + +import java.util.Map; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityRecordService { + + PageInfo listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize); + + void saveOrUpdate(WxOfflineActivityRecord wxOfflineActivityRecord); + + WxOfflineActivityRecord getById(Long id, String tenantId); + WxOfflineActivityRecord getInfoById(Long id, String tenantId); + + Map getStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); + + void auditRecord(WxOfflineActivityRecord wxOfflineActivityRecord, Long userId); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java new file mode 100644 index 000000000..e46313296 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -0,0 +1,119 @@ +package com.iformall.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineActivityRecordStatistics; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.mapper.WxOfflineActivityMapper; +import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; +import com.iformall.mapper.WxOfflineActivityRecordMapper; +import com.iformall.service.MallUserInfoService; +import com.iformall.service.WxMerchantService; +import com.iformall.service.WxOfflineActivityGrantAwardService; +import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivityGrantAwardService{ + + @Autowired + private WxOfflineActivityGrantAwardMapper wxOfflineActivityGrantAwardMapper; + + @Autowired + WxOfflineActivityMapper wxOfflineActivityMapper; + + @Autowired + WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; + + @Autowired + WxOfflineActivityRecordGrantMapper wxOfflineActivityRecordGrantMapper; + + @Autowired + WxMerchantService wxMerchantService; + @Autowired + MallUserInfoService mallUserInfoService; + + @Override + public Map getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord) { + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityId, wxOfflineActivityRecord.getTenantId()); + if (activity == null) { + return Collections.emptyMap(); + } + wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); + wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); + List recordStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); + + Map result = new HashMap<>(); + Integer audting = 0, audi_success = 0, audt_fail = 0,sum_success = 0, sum_fail = 0; + for(OfflineActivityRecordStatistics statistics : recordStatistics){ + if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ + audting = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { + audi_success = statistics.getCount(); + sum_success = statistics.getSumMoney(); + } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { + audt_fail = statistics.getCount(); + } + } + result.put("audting",audting); + result.put("audi_success",audi_success); + result.put("sum_success",sum_success); + result.put("audt_fail",audt_fail); + result.put("sum_count",audting+audi_success+audt_fail); + return result; + } + + @Override + public List getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord) { + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityId, wxOfflineActivityRecord.getTenantId()); + if (activity == null) { + return Collections.emptyList(); + } + wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); + wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); + List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); + handleRecordList(wxOfflineActivityRecord,activity,recordList); + return recordList; + } + + private void handleRecordList(TenantEntity tenantEntity, WxOfflineActivity activity, List recordList) { + if (recordList == null || recordList.isEmpty()) { + return; + } + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(tenantEntity); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + + for (WxOfflineActivityRecord record : recordList) { + record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } + //判断订单是否发奖 + Integer grantCount = wxOfflineActivityRecordGrantMapper.selectGrantCount(tenantEntity.getTenantId(),activity.getId(),record.getId()); + if(grantCount >= 1){ + record.setAuditStatus(EnumOfflineActivityRecordStatus.IS_GRANT.getCode()); + } + + } + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java new file mode 100644 index 000000000..08c5e95ee --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -0,0 +1,21 @@ +package com.iformall.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.domain.po.WxOfflineActivityGrantItem; +import com.iformall.service.WxOfflineActivityGrantItemService; +import com.iformall.mapper.WxOfflineActivityGrantItemMapper; +import org.springframework.stereotype.Service; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityGrantItemService{ + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java new file mode 100644 index 000000000..4ea64a791 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -0,0 +1,21 @@ +package com.iformall.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.domain.po.WxOfflineActivityGrantSettlement; +import com.iformall.service.WxOfflineActivityGrantSettlementService; +import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; +import org.springframework.stereotype.Service; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineActivityGrantSettlementService{ + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java new file mode 100644 index 000000000..86a3ff4b2 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java @@ -0,0 +1,21 @@ +package com.iformall.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.domain.po.WxOfflineActivityRecordGrant; +import com.iformall.service.WxOfflineActivityRecordGrantService; +import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; +import org.springframework.stereotype.Service; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityRecordGrantServiceImpl implements WxOfflineActivityRecordGrantService{ + +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java new file mode 100644 index 000000000..c869b773c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -0,0 +1,120 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineActivityRecordStatistics; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.service.WxMerchantService; +import com.iformall.service.WxOfflineActivityRecordService; +import com.iformall.mapper.WxOfflineActivityRecordMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityRecordService{ + + @Autowired + private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; + + @Autowired + WxMerchantService wxMerchantService; + + @Override + public PageInfo listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { + PageInfo recordPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityRecordMapper.findList(record)); + handlerRecordList(record,recordPageInfo.getList()); + return recordPageInfo; + } + + private void handlerRecordList(TenantEntity tenantEntity,List recordList) { + if (recordList != null && recordList.size() > 0) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + for (WxOfflineActivityRecord record : recordList) { + record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); + } + } + } + + @Override + public void saveOrUpdate(WxOfflineActivityRecord wxOfflineActivityRecord) { + if(wxOfflineActivityRecord.getMerchantId() != null){ + WxMerchant merchant = wxMerchantService.selectById(wxOfflineActivityRecord.getMerchantId()); + wxOfflineActivityRecord.setBusinessId(merchant.getBusinessId()); + } + Date now = new Date(); + if(wxOfflineActivityRecord.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + wxOfflineActivityRecord.setId(idWorker.nextId()); + wxOfflineActivityRecord.setCreateDate(now); + wxOfflineActivityRecord.setUpdateDate(now); + wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + wxOfflineActivityRecordMapper.insert(wxOfflineActivityRecord); + } + else{ + wxOfflineActivityRecord.setUpdateDate(now); + wxOfflineActivityRecordMapper.updateById(wxOfflineActivityRecord); + } + } + + @Override + public WxOfflineActivityRecord getById(Long id, String tenantId) { + return wxOfflineActivityRecordMapper.selectById(id,tenantId); + } + + @Override + public WxOfflineActivityRecord getInfoById(Long id, String tenantId) { + WxOfflineActivityRecord record = wxOfflineActivityRecordMapper.selectById(id, tenantId); + if(record != null){ + WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId()); + record.setMerchantName(merchant.getName()); + } + return record; + } + + @Override + public Map getStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) { + List auditStatusStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); + Map result = new HashMap<>(); + Integer audting = 0, audi_success = 0, audt_fail = 0; + for(OfflineActivityRecordStatistics statistics : auditStatusStatistics){ + if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ + audting = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { + audi_success = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { + audt_fail = statistics.getCount(); + } + } + result.put("audting",audting); + result.put("audi_success",audi_success); + result.put("audt_fail",audt_fail); + result.put("sum_count",audting+audi_success+audt_fail); + return result; + } + + @Override + public void auditRecord(WxOfflineActivityRecord record, Long userId) { + Date now = new Date(); + record.setUpdateDate(now); + record.setAuditTime(now); + record.setAuditBy(userId); + wxOfflineActivityRecordMapper.updateAuditStatus(record); + } +} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml new file mode 100644 index 000000000..3c0c995aa --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + activity_id,order_money_sum,order_count, + cus_name,cus_phone,real_name, + real_card,sign_img,create_by, + create_date,update_date,lottery_num, + lottery_count,anniversary_lottery_num + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml new file mode 100644 index 000000000..b8d898e2f --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + grant_id,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,cash_back_ratio, + award_price,award_count,money_rule, + mall_share_rate,mall_share_price,merchant_share_rate, + merchant_share_price,create_date,update_date + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml new file mode 100644 index 000000000..eba0b006c --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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, + mall_share_price,merchant_share_price,order_ratio, + real_grant_price,real_mall_share_price,real_merchant_share_price, + create_date,update_date + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml new file mode 100644 index 000000000..b3c7a757f --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + tenant_id,parent_tenant_id,activity_id, + record_id,grant_id + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml new file mode 100644 index 000000000..89ff9f663 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + order_no,order_money,cus_name, + real_cus_name,cus_phone,cus_address, + cus_card,lottery_num,lottery_count, + anniversary_lottery_num,create_by,merchant_id,business_id, + create_date,update_date,audit_remark, + audit_status,audit_by,audit_time + + + + where 1 = 1 + + + and `id` = #{id} + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + and `merchant_id` = #{merchantId} + + + and `business_id` = #{businessId} + + + + and `cus_name` like concat('%', #{cusName},'%') + + + + and `cus_phone` = #{cusPhone} + + + + and `order_no` like concat('%', #{orderNo},'%') + + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and `audit_time` >= #{auditTimeBegin} + + + + and `audit_time` <= #{auditTimeEnd} + + + + and `audit_status` = #{auditStatus} + + + + and merchant_id in + + #{midItem} + + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + + update wx_offline_activity_record + set `audit_status` = #{auditStatus}, + + + `lottery_num` = #{lotteryNum}, + + + `lottery_Count` = #{lotteryCount}, + + + `anniversary_lottery_num` = #{anniversaryLotteryNum}, + + + + `audit_remark` = #{auditRemark}, + + + `audit_time` = #{auditTime}, + + + `audit_by` = #{auditBy}, + + `update_date` = #{updateDate} + where id=#{id} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + From 27bedace009f3417d5b1fe86333a11b2dfb76cc0 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 10 Aug 2024 12:06:05 +0800 Subject: [PATCH 07/36] //OfflineActivity --- .../com/iformall/domain/po/WxOfflineActivityAwardsItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index 77864fb56..8807d8fbf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -59,7 +59,7 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { /** * 返现比例(与奖项价值2选1) */ - @TableField(value = "max_amount") + @TableField(value = "cash_back_ratio") private BigDecimal cashBackRatio; /** From 00fdf687b8ae8b19c3f29b18dd147cd28439718b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 10 Aug 2024 14:59:00 +0800 Subject: [PATCH 08/36] //OfflineActivity --- .../com/iformall/service/impl/WxOfflineActivityServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index 9709c53a4..1444c87eb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -63,7 +63,7 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ if (null != list && !list.isEmpty()) { Date now = new Date(); for (WxOfflineActivity activity : list) { - if(now.before(activity.getEndTime())){ + if(now.before(activity.getStartTime())){ activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); } //获取发奖订单数 From eb929e6597d6b51822ddd7e947f0b5c40c0d2878 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 10 Aug 2024 18:57:16 +0800 Subject: [PATCH 09/36] //OfflineActivity --- .../WxOfflineActivityGrantController.java | 24 +- .../po/WxOfflineActivityGrantAward.java | 17 +- .../domain/po/WxOfflineActivityGrantItem.java | 8 +- .../po/WxOfflineActivityGrantSettlement.java | 11 +- .../domain/po/WxOfflineActivityItem.java | 11 +- .../domain/po/WxOfflineActivityRecord.java | 12 + .../WxOfflineActivityGrantItemMapper.java | 3 + ...xOfflineActivityGrantSettlementMapper.java | 3 + .../WxOfflineActivityRecordGrantMapper.java | 3 + .../mapper/WxOfflineActivityRecordMapper.java | 2 + .../WxOfflineActivityGrantAwardService.java | 2 + .../WxOfflineActivityGrantItemService.java | 2 + ...OfflineActivityGrantSettlementService.java | 2 + .../WxOfflineActivityRecordGrantService.java | 2 + ...xOfflineActivityGrantAwardServiceImpl.java | 234 ++++++++++++++++-- ...WxOfflineActivityGrantItemServiceImpl.java | 51 ++++ ...ineActivityGrantSettlementServiceImpl.java | 65 ++++- .../WxOfflineActivityItemServiceImpl.java | 3 +- ...OfflineActivityRecordGrantServiceImpl.java | 21 ++ .../WxOfflineActivityGrantAwardMapper.xml | 4 +- .../WxOfflineActivityGrantItemMapper.xml | 26 +- ...WxOfflineActivityGrantSettlementMapper.xml | 28 ++- .../WxOfflineActivityRecordGrantMapper.xml | 13 + .../mapper/WxOfflineActivityRecordMapper.xml | 11 + 24 files changed, 524 insertions(+), 34 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index 59c796489..2ef812b6f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -4,9 +4,11 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; +import com.iformall.enums.EnumOfflineActivityMerchantType; import com.iformall.enums.EnumOfflineActivityRecordStatus; import com.iformall.service.WxOfflineActivityGrantAwardService; import com.iformall.service.WxOfflineActivityRecordService; @@ -20,6 +22,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -71,5 +74,24 @@ public class WxOfflineActivityGrantController extends BaseController { return new ResultData(recordList); } + @ApiOperation("活动发放") + @PostMapping("grantAward") + public ResultData grantAward(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + if(wxOfflineActivityGrantAward.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID未空"); + } + if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){ + return new ResultData(Result.ERROR,"签名为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivityGrantAward.updateTenantInfo(tenantEntity); + wxOfflineActivityGrantAward.setCreateBy(getUserId()); + wxOfflineActivityGrantAwardService.grantAward(wxOfflineActivityGrantAward); + return new ResultData(); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index 8df625d6b..2d55dc5e6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; +import java.util.List; + import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -33,6 +35,9 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(value = "activity_id") private Long activityId; + @TableField(exist = false) + private String activityName; + /** * 订单总金额 */ @@ -97,7 +102,7 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ * 抽奖券编码 */ @TableField(value = "lottery_num") - private Object lotteryNum; + private String lotteryNum; /** * 抽奖券数量 @@ -109,5 +114,13 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ * 周年庆抽奖编码 */ @TableField(value = "anniversary_lottery_num") - private Object anniversaryLotteryNum; + private String anniversaryLotteryNum; + + @TableField(exist = false) + private List recordIds; + @TableField(exist = false) + private List recordList; + + @TableField(exist = false) + private List activityItemList; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index b2d182145..8836dab8d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -56,7 +56,7 @@ public class WxOfflineActivityGrantItem extends TenantEntity { * 活动项名称 */ @TableField(value = "activity_item_name") - private Integer activityItemName; + private String activityItemName; /** * 活动项类型 @@ -94,6 +94,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity { @TableField(value = "award_max_amount") private Integer awardMaxAmount; + /** + * 奖项计算规则 + */ + @TableField(value = "awards_item_rule") + private Integer awardsItemRule; + /** * 返现比例 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index c8c580b36..73b20e091 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -77,6 +77,13 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "grant_id") private Long grantId; + + /** + * 发放订单总金额 + */ + @TableField(value = "grant_money") + private Integer grantMoney; + /** * 发放总价值 */ @@ -111,13 +118,13 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { * 实际商管承担总金额 */ @TableField(value = "real_mall_share_price") - private BigDecimal realMallSharePrice; + private Integer realMallSharePrice; /** * 实际商户承担总金额 */ @TableField(value = "real_merchant_share_price") - private BigDecimal realMerchantSharePrice; + private Integer realMerchantSharePrice; /** * 创建时间 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 2be2632e5..192b233d5 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -51,7 +51,7 @@ public class WxOfflineActivityItem extends TenantEntity { private Integer limitMoney; /** - * 奖项单价 + * 奖项价值(用来计算奖券数量) */ @TableField(value = "awards_item_price") private Integer awardsItemPrice; @@ -86,7 +86,16 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(value = "update_date") private Date updateDate; + /** + * 奖项集合 + */ @TableField(exist = false) private List activityAwardsItemList; + /** + * 发放奖项 + */ + @TableField(exist = false) + private List activityGrantItemList; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index c2749348d..8290b3195 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -159,6 +160,17 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(exist = false) private Date auditTimeEnd; + @TableField(exist = false) + private Long sendByName; + @TableField(exist = false) + private Date sendTimeBegin; + @TableField(exist = false) + private Date sendTimeEnd; + @TableField(exist = false) private Long activityId; + + @TableField(exist = false) + private BigDecimal orderRatio; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java index 07b70c38f..90b7f2d4e 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java @@ -4,6 +4,8 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Mapper @@ -12,6 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxOfflineActivityGrantItemMapper extends CommonMapper { + void insertList(List rantItemList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index 4e6658dc0..93b8c66c4 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -4,6 +4,8 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Mapper @@ -12,6 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper { + void insertList(List settlementList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java index e1082caec..6625643f7 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java @@ -5,6 +5,8 @@ import com.iformall.domain.po.WxOfflineActivityRecordGrant; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Mapper @@ -15,6 +17,7 @@ public interface WxOfflineActivityRecordGrantMapper extends CommonMapper recordGrantList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java index 44dd1192a..8d36ccb6f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -23,6 +23,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper auditStatusStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); void updateAuditStatus(WxOfflineActivityRecord record); + + WxOfflineActivityRecord selectLimitOne(WxOfflineActivityRecord wxOfflineActivityRecord); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 90cf05b2c..a9097c5fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -17,4 +17,6 @@ public interface WxOfflineActivityGrantAwardService { Map getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); List getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); + + void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java index b25751e15..ec98eb2f4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantItemService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantItem; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxOfflineActivityGrantItemService { + void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 87ba6a884..8db5e3cb9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxOfflineActivityGrantSettlementService { + void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java index b7b103304..f7647467c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordGrantService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityRecordGrant; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxOfflineActivityRecordGrantService{ + void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index e46313296..8e0f15c96 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1,24 +1,29 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; +import com.iformall.common.Result; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivityRecordStatistics; +import com.iformall.enums.EnumOfflineActivityAwardsRule; import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.exception.MallinkException; import com.iformall.mapper.WxOfflineActivityMapper; import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; import com.iformall.mapper.WxOfflineActivityRecordMapper; -import com.iformall.service.MallUserInfoService; -import com.iformall.service.WxMerchantService; -import com.iformall.service.WxOfflineActivityGrantAwardService; +import com.iformall.service.*; import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author xiaohu @@ -40,6 +45,18 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityRecordGrantMapper wxOfflineActivityRecordGrantMapper; + @Autowired + WxOfflineActivityGrantItemService wxOfflineActivityGrantItemService; + + @Autowired + WxOfflineActivityRecordGrantService wxOfflineActivityRecordGrantService; + + @Autowired + WxOfflineActivityItemService wxOfflineActivityItemService; + + @Autowired + WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; + @Autowired WxMerchantService wxMerchantService; @Autowired @@ -53,20 +70,30 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); - List recordStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); - + WxOfflineActivityRecord limitOne = wxOfflineActivityRecordMapper.selectLimitOne(wxOfflineActivityRecord); Map result = new HashMap<>(); Integer audting = 0, audi_success = 0, audt_fail = 0,sum_success = 0, sum_fail = 0; - for(OfflineActivityRecordStatistics statistics : recordStatistics){ - if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ - audting = statistics.getCount(); - } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { - audi_success = statistics.getCount(); - sum_success = statistics.getSumMoney(); - } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { - audt_fail = statistics.getCount(); + if (limitOne == null) { + result.put("cus_name","查无此人"); + result.put("cus_phone",wxOfflineActivityRecord.getCusPhone()); + }else{ + result.put("cus_name",limitOne.getCusName()); + result.put("cus_phone",limitOne.getCusPhone()); + + List recordStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); + + for(OfflineActivityRecordStatistics statistics : recordStatistics){ + if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ + audting = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { + audi_success = statistics.getCount(); + sum_success = statistics.getSumMoney(); + } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { + audt_fail = statistics.getCount(); + } } } + result.put("audting",audting); result.put("audi_success",audi_success); result.put("sum_success",sum_success); @@ -84,11 +111,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); - handleRecordList(wxOfflineActivityRecord,activity,recordList); + handlerRecordList(wxOfflineActivityRecord,activity,recordList); return recordList; } - private void handleRecordList(TenantEntity tenantEntity, WxOfflineActivity activity, List recordList) { + private void handlerRecordList(TenantEntity tenantEntity, WxOfflineActivity activity, List recordList) { if (recordList == null || recordList.isEmpty()) { return; } @@ -112,6 +139,175 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } + + @Override + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(wxOfflineActivityGrantAward.getActivityId(), wxOfflineActivityGrantAward.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR, "未查询到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + + handlerGrantData(activity,wxOfflineActivityGrantAward); + Date now = new Date(); + final IdWorker idWorker = IdWorker.get(); + wxOfflineActivityGrantAward.setId(idWorker.nextId()); + wxOfflineActivityGrantAward.setCreateDate(now); + wxOfflineActivityGrantAward.setUpdateDate(now); + wxOfflineActivityGrantAwardMapper.insert(wxOfflineActivityGrantAward); + + wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); + + //处理奖项 + handlerGrantItem(activity,wxOfflineActivityGrantAward); + wxOfflineActivityGrantItemService.insertFromGrantAward(wxOfflineActivityGrantAward); + + //结算 + wxOfflineActivityGrantSettlementService.settlement(wxOfflineActivityGrantAward); + } + + private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ + + List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); + if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { + throw new MallinkException(Result.ERROR, "未查询到活动订单"); + } + if(wxOfflineActivityRecords.stream().map(WxOfflineActivityRecord::getCusPhone).distinct().count() != 1){ + throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人"); + } + for (WxOfflineActivityRecord record : wxOfflineActivityRecords) { + if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动订单审核状态"); + } + if(record.getCreateDate().before(activity.getStartTime()) || record.getCreateDate().after(activity.getEndTime())){ + throw new MallinkException(Result.ERROR, "请检查活动时间"); + } + } + wxOfflineActivityGrantAward.setRecordList(wxOfflineActivityRecords); + wxOfflineActivityGrantAward.setActivityName(activity.getName()); + wxOfflineActivityGrantAward.setCusName(wxOfflineActivityRecords.get(0).getCusName()); + wxOfflineActivityGrantAward.setCusPhone(wxOfflineActivityRecords.get(0).getCusPhone()); + wxOfflineActivityGrantAward.setOrderCount(wxOfflineActivityRecords.size()); + wxOfflineActivityGrantAward.setOrderMoneySum(wxOfflineActivityRecords.stream().mapToInt(WxOfflineActivityRecord::getOrderMoney).sum()); + } + + private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ + + List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); + Map activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity())); + + for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { + if(grantActivityItem.getId() == null){ + throw new MallinkException(Result.ERROR, "请检查活动项参数"); + } + WxOfflineActivityItem activityItem = activityItemMap.get(grantActivityItem.getId()); + if(activityItem == null){ + throw new MallinkException(Result.ERROR, "请检查活动项参数"); + } + List activityGrantItemList = grantActivityItem.getActivityGrantItemList(); + if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ + continue; + } + + Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(Collectors.toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + + for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { + if(grantGrantItem.getAwardCount() == null){ + grantGrantItem.setAwardCount(1); + } + } + + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + + if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){ + throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); + } + //奖项限制数量 + int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + if(activityItem.getAwardsItemLimit() < limitCount){ + limitCount = activityItem.getAwardsItemLimit(); + } + if(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()+"奖项参数"); + } + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); + if(awardsItem == null){ + throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); + } + + handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + } + + } + else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + 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(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMaxAmount() + || wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMinAmount()){ + throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数(金额不在范围类)"); + } + + handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + + } + else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + 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()+"奖项参数"); + } + + handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + + } + + } + } + + private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ +// grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); + grantGrantItem.setActivityId(activity.getId()); + grantGrantItem.setActivityName(activity.getName()); + grantGrantItem.setActivityItemId(activityItem.getId()); + grantGrantItem.setActivityItemName(activityItem.getName()); + grantGrantItem.setActivityItemType(activityItem.getType()); + grantGrantItem.setAwardItamId(awardsItem.getId()); + grantGrantItem.setAwardName(awardsItem.getName()); + grantGrantItem.setAwardGrade(awardsItem.getGrade()); + grantGrantItem.setAwardMinAmount(awardsItem.getMinAmount()); + grantGrantItem.setAwardMaxAmount(awardsItem.getMaxAmount()); + grantGrantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); + grantGrantItem.setCashBackRatio(awardsItem.getCashBackRatio()); + grantGrantItem.setAwardPrice(awardsItem.getPrice()*grantGrantItem.getAwardCount()); + grantGrantItem.setMoneyRule(awardsItem.getMoneyRule()); + grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); + grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 08c5e95ee..4f81fb9aa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -1,11 +1,23 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantItem; +import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; +import com.iformall.enums.EnumOfflineActivityAwardsRule; +import com.iformall.enums.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityGrantItemService; import com.iformall.mapper.WxOfflineActivityGrantItemMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Service实现 @@ -14,6 +26,45 @@ import org.springframework.stereotype.Service; @Service public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityGrantItemService{ + @Autowired + private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; + + @Override + public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + List rantItemList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + Date now = new Date(); + for (WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()) { + if(activityItem.getActivityGrantItemList() == null){ + continue; + } + for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { + grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); + grantGrantItem.setId(idWorker.nextId()); + grantGrantItem.updateTenantInfo(wxOfflineActivityGrantAward); + grantGrantItem.setCreateDate(now); + grantGrantItem.setUpdateDate(now); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ + BigDecimal awardPrice = new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum()).multiply(grantGrantItem.getCashBackRatio()); + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ + grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { + int awardPriceYuan = awardPrice.divide(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); + grantGrantItem.setAwardPrice(awardPriceYuan*100); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ + int awardPriceTen = awardPrice.divide(new BigDecimal(1000)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); + grantGrantItem.setAwardPrice(awardPriceTen*1000); + } + } + grantGrantItem.setMallSharePrice(new BigDecimal(grantGrantItem.getAwardPrice()).multiply(grantGrantItem.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + grantGrantItem.setMerchantSharePrice(grantGrantItem.getAwardPrice() - grantGrantItem.getMallSharePrice()); + rantItemList.add(grantGrantItem); + } + } + wxOfflineActivityGrantItemMapper.insertList(rantItemList); + + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 4ea64a791..8167f692d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -1,11 +1,21 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.iformall.domain.po.WxOfflineActivityGrantSettlement; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.*; import com.iformall.service.WxOfflineActivityGrantSettlementService; import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + /** * @author xiaohu * @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现 @@ -14,6 +24,59 @@ import org.springframework.stereotype.Service; @Service public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineActivityGrantSettlementService{ + @Autowired + private WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; + + @Override + public void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + List settlementList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + Date now = new Date(); + //获取订单占比(占比最少的订单用减法,尽量减少误差) + List recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); + int size = recordDescList.size() - 1; + BigDecimal lastRatio = BigDecimal.ONE; + for(int i=0; i recordGrantList = new ArrayList<>(); + wxOfflineActivityGrantAward.getRecordIds().forEach(recordId ->{ + WxOfflineActivityRecordGrant recordGrant = new WxOfflineActivityRecordGrant(); + recordGrant.updateTenantInfo(wxOfflineActivityGrantAward); + recordGrant.setActivityId(wxOfflineActivityGrantAward.getActivityId()); + recordGrant.setRecordId(recordId); + recordGrant.setGrantId(wxOfflineActivityGrantAward.getId()); + }); + + wxOfflineActivityRecordGrantMapper.insertList(recordGrantList); + } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 3c0c995aa..bef2c6f97 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -19,9 +19,9 @@ - + - + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index b8d898e2f..3a9c6641a 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -19,6 +19,7 @@ + @@ -36,9 +37,32 @@ grant_id,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,cash_back_ratio, + award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, award_price,award_count,money_rule, mall_share_rate,mall_share_price,merchant_share_rate, merchant_share_price,create_date,update_date + + + insert into wx_offline_activity_grant_item + (`id`,`tenant_id`,`parent_tenant_id`, + `grant_id`,`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`, + `award_price`,`award_count`,`money_rule`, + `mall_share_rate`,`mall_share_price`,`merchant_share_rate`, + `merchant_share_price`,`create_date`,`update_date`) + values + + (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, + #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, + #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, + #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, + #{item.awardMinAmount,jdbcType=INTEGER},#{item.awardMaxAmount,jdbcType=INTEGER},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, + #{item.awardPrice,jdbcType=INTEGER},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, + #{item.mallShareRate,jdbcType=DECIMAL},#{item.mallSharePrice,jdbcType=INTEGER},#{item.merchantShareRate,jdbcType=DECIMAL}, + #{item.merchantSharePrice,jdbcType=INTEGER},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index eba0b006c..dd10576e3 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -16,13 +16,14 @@ + - - + + @@ -31,9 +32,30 @@ 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_money,grant_price, mall_share_price,merchant_share_price,order_ratio, real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date + + + insert into wx_offline_activity_grant_item + (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_money,grant_price, + mall_share_price,merchant_share_price,order_ratio, + real_grant_price,real_mall_share_price,real_merchant_share_price, + create_date,update_date) + values + + (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, + #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, + #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, + #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantMoney,jdbcType=INTEGER},#{item.grantPrice,jdbcType=INTEGER}, + #{item.mallSharePrice,jdbcType=INTEGER},#{item.merchantSharePrice,jdbcType=INTEGER},#{item.orderRatio,jdbcType=DECIMAL}, + #{item.realGrantPrice,jdbcType=INTEGER},#{item.realMallSharePrice,jdbcType=INTEGER},#{item.realMerchantSharePrice,jdbcType=INTEGER}, + #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml index b3c7a757f..273eb2690 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml @@ -23,4 +23,17 @@ where activity_id = #{activityId} and record_id = #{recordId} and tenant_id=#{tenantId} + + insert into wx_offline_activity_record_grant + (`tenant_id`,`parent_tenant_id`,`activity_id`,`record_id`,`grant_id`) + values + + (#{item.tenantId,jdbcType=VARCHAR}, + #{item.parentTenantId,jdbcType=VARCHAR}, + #{item.activityId,jdbcType=BIGINT}, + #{item.recordId,jdbcType=BIGINT}, + #{item.grantId,jdbcType=BIGINT}) + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml index 89ff9f663..1737088bb 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -113,6 +113,13 @@ + + + @@ -146,6 +153,10 @@ and `create_date` <= #{createDateEnd} + + and `audit_status` = #{auditStatus} + + GROUP BY audit_status From bef492637115d9e7bef30d1b153912c9c58216cf Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 10 Aug 2024 20:02:48 +0800 Subject: [PATCH 10/36] //OfflineActivity --- .../po/WxOfflineActivityGrantSettlement.java | 15 +++------- ...ineActivityGrantSettlementServiceImpl.java | 30 +++++++++++++++---- ...WxOfflineActivityGrantSettlementMapper.xml | 17 +++++------ 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index 73b20e091..6fd5018d3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -77,13 +77,6 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "grant_id") private Long grantId; - - /** - * 发放订单总金额 - */ - @TableField(value = "grant_money") - private Integer grantMoney; - /** * 发放总价值 */ @@ -93,14 +86,14 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 商管承担总金额 */ - @TableField(value = "mall_share_price") - private Integer mallSharePrice; + @TableField(value = "mall_share_rate") + private BigDecimal mallShareRate; /** * 商户承担总金额 */ - @TableField(value = "merchant_share_price") - private Integer merchantSharePrice; + @TableField(value = "merchant_share_rate") + private BigDecimal merchantShareRate; /** * 订单占比 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 8167f692d..21db14b54 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -49,6 +49,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct continue; } for (WxOfflineActivityGrantItem wxOfflineActivityGrantItem : activityItem.getActivityGrantItemList()) { + List itemSettlementList = new ArrayList<>(); for (WxOfflineActivityRecord record : recordDescList){ WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); settlement.setId(idWorker.nextId()); @@ -63,14 +64,33 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); - settlement.setGrantMoney(wxOfflineActivityGrantAward.getOrderMoneySum()); settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); - settlement.setMallSharePrice(wxOfflineActivityGrantItem.getMallSharePrice()); - settlement.setMerchantSharePrice(wxOfflineActivityGrantItem.getMerchantSharePrice()); -//todo + settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); + settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); + settlement.setOrderRatio(record.getOrderRatio()); - settlementList.add(settlement); + settlement.setCreateDate(now); + settlement.setUpdateDate(now); + itemSettlementList.add(settlement); } + //计算订单分担金额,(占比最少的订单用减法,尽量减少误差) + int itemSize = itemSettlementList.size() - 1; + Integer lastGrantPrice = wxOfflineActivityGrantItem.getAwardPrice(); + for (int i = 0; i < itemSize; i++) { + WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); + int realGrantPrice = new BigDecimal(wxOfflineActivityGrantItem.getAwardPrice()).multiply(settlement.getOrderRatio()).setScale(0, RoundingMode.HALF_UP).intValue(); + settlement.setRealGrantPrice(realGrantPrice); + settlement.setRealMallSharePrice(new BigDecimal(settlement.getRealGrantPrice()).multiply(settlement.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice() - settlement.getRealMallSharePrice()); + + lastGrantPrice = lastGrantPrice - realGrantPrice; + } + WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); + lastSettlement.setRealGrantPrice(lastGrantPrice); + lastSettlement.setRealMallSharePrice(new BigDecimal(lastSettlement.getRealGrantPrice()).multiply(lastSettlement.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice() - lastSettlement.getRealMallSharePrice()); + + settlementList.addAll(itemSettlementList); } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index dd10576e3..2f0546e3f 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -16,10 +16,9 @@ - - - + + @@ -32,8 +31,8 @@ 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_money,grant_price, - mall_share_price,merchant_share_price,order_ratio, + award_itam_id,grant_id,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 @@ -43,8 +42,8 @@ (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_money,grant_price, - mall_share_price,merchant_share_price,order_ratio, + award_itam_id,grant_id,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) values @@ -52,8 +51,8 @@ (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, - #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantMoney,jdbcType=INTEGER},#{item.grantPrice,jdbcType=INTEGER}, - #{item.mallSharePrice,jdbcType=INTEGER},#{item.merchantSharePrice,jdbcType=INTEGER},#{item.orderRatio,jdbcType=DECIMAL}, + #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=INTEGER}, + #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, #{item.realGrantPrice,jdbcType=INTEGER},#{item.realMallSharePrice,jdbcType=INTEGER},#{item.realMerchantSharePrice,jdbcType=INTEGER}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) From 3ab78f83821c7004e7a6c79badcb6d2e9d613750 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 11 Aug 2024 01:11:35 +0800 Subject: [PATCH 11/36] //OfflineActivity --- ...WxOfflineActivitySettlementController.java | 120 +++++++++++++ .../iformall/domain/po/WxOfflineActivity.java | 21 +++ .../po/WxOfflineActivityGrantAward.java | 5 + .../domain/po/WxOfflineActivityGrantItem.java | 12 -- .../po/WxOfflineActivityGrantSettlement.java | 14 +- .../domain/vo/OfflineActivitySettlement.java | 21 +++ .../OfflineActivitySettlementStatistics.java | 17 ++ .../WxOfflineActivityGrantAwardMapper.java | 3 +- ...xOfflineActivityGrantSettlementMapper.java | 8 + .../mapper/WxOfflineActivityRecordMapper.java | 2 + .../WxOfflineActivityGrantAwardService.java | 3 + ...OfflineActivityGrantSettlementService.java | 15 ++ .../WxOfflineActivityRecordService.java | 2 + ...xOfflineActivityGrantAwardServiceImpl.java | 54 ++++++ ...WxOfflineActivityGrantItemServiceImpl.java | 2 - ...ineActivityGrantSettlementServiceImpl.java | 167 +++++++++++++++++- .../WxOfflineActivityRecordServiceImpl.java | 72 ++++++++ .../WxOfflineActivityGrantAwardMapper.xml | 20 +++ .../WxOfflineActivityGrantItemMapper.xml | 14 +- ...WxOfflineActivityGrantSettlementMapper.xml | 135 +++++++++++++- .../mapper/WxOfflineActivityRecordMapper.xml | 19 ++ 21 files changed, 696 insertions(+), 30 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java new file mode 100644 index 000000000..47d47dda5 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -0,0 +1,120 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxOfflineActivity; +import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.iformall.domain.po.WxOfflineActivityGrantSettlement; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineActivitySettlement; +import com.iformall.service.WxOfflineActivityGrantAwardService; +import com.iformall.service.WxOfflineActivityGrantSettlementService; +import com.iformall.service.WxOfflineActivityRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/offlineSettlement") +@Api(description = "线下活动结算相关接口") +public class WxOfflineActivitySettlementController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxOfflineActivityGrantAwardService wxOfflineActivityGrantAwardService; + + @Autowired + private WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; + + @Autowired + private WxOfflineActivityRecordService wxOfflineActivityRecordService; + + @ApiOperation("中奖会员相关统计") + @GetMapping("cusStatistics") + public ResultData cusStatistics() { + Map statisticsMap = wxOfflineActivityGrantAwardService.cusStatistics(getTenantInfo()); + return new ResultData(statisticsMap); + } + + @ApiOperation("发奖结算相关统计") + @GetMapping("settlementStatistics") + public ResultData settlementStatistics() { + Map statisticsMap = wxOfflineActivityGrantSettlementService.settlementStatistics(getTenantInfo()); + return new ResultData(statisticsMap); + } + + @ApiOperation("订单相关统计") + @GetMapping("recordStatistics") + public ResultData recordStatistics() { + Map statisticsMap = wxOfflineActivityRecordService.orderStatistics(getTenantInfo()); + return new ResultData(statisticsMap); + } + + @ApiOperation("活动结算分页列表接口") + @GetMapping("activityList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData activityList(@ModelAttribute WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize) { + if (null == wxOfflineActivity) wxOfflineActivity = new WxOfflineActivity(); + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantInfo); + wxOfflineActivity.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxOfflineActivityGrantSettlementService.activityListAsPage(wxOfflineActivity, pageNum, pageSize); + + return new ResultData(page); + } + + @ApiOperation("单个活动结算列表") + @GetMapping("activitySettlement") + @ApiImplicitParams({}) + public ResultData activitySettlement(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { + + if(grantSettlement.getActivityId() == null){ + return new ResultData(Result.ERROR,"请选择活动"); + } + + TenantEntity tenantInfo = getTenantInfo(); + grantSettlement.updateTenantInfo(tenantInfo); + List recordList = wxOfflineActivityGrantSettlementService.getActivitySettlement(grantSettlement); + + return new ResultData(recordList); + } + + @ApiOperation("单个活动单个门店结算列表") + @GetMapping("merchantSettlement") + @ApiImplicitParams({}) + public ResultData merchantSettlement(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { + + if(grantSettlement.getActivityId() == null){ + return new ResultData(Result.ERROR,"请选择活动"); + } + if(grantSettlement.getMerchantId() == null){ + return new ResultData(Result.ERROR,"请选择门店"); + } + + TenantEntity tenantInfo = getTenantInfo(); + grantSettlement.updateTenantInfo(tenantInfo); + List recordList = wxOfflineActivityGrantSettlementService.findList(grantSettlement); + + return new ResultData(recordList); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java index d6353184f..7eac3b3ad 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java @@ -85,4 +85,25 @@ public class WxOfflineActivity extends TenantEntity { @TableField(exist = false) private Integer validStatus; + + /** + * 参与订单数 + */ + @TableField(exist = false) + private Integer grantMershantCount; + /** + * 发放订单数 + */ + @TableField(exist = false) + private Integer grantRecordCount; + /** + * 发放总额 + */ + @TableField(exist = false) + private Integer grantPrice; + /** + * 商户结算总额 + */ + @TableField(exist = false) + private Integer merchantSettlmentPrice; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index 2d55dc5e6..f3984ebd7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -92,6 +92,11 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index 8836dab8d..a227f1703 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -130,24 +130,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity { @TableField(value = "mall_share_rate") private BigDecimal mallShareRate; - /** - * - */ - @TableField(value = "mall_share_price") - private Integer mallSharePrice; - /** * 商户分担比例 */ @TableField(value = "merchant_share_rate") private BigDecimal merchantShareRate; - /** - * - */ - @TableField(value = "merchant_share_price") - private Integer merchantSharePrice; - /** * 创建时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index 6fd5018d3..3103dfbc8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; @@ -52,6 +53,10 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { */ @TableField(value = "merchant_id") private Long merchantId; + @TableField(exist = false) + private String merchantName; + @TableField(exist = false) + private List merchantIdList; /** * 活动id @@ -84,13 +89,13 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { private Integer grantPrice; /** - * 商管承担总金额 + * 商管承担z占比 */ @TableField(value = "mall_share_rate") private BigDecimal mallShareRate; /** - * 商户承担总金额 + * 商户承担占比 */ @TableField(value = "merchant_share_rate") private BigDecimal merchantShareRate; @@ -125,6 +130,11 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java new file mode 100644 index 000000000..e6d3dae17 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java @@ -0,0 +1,21 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class OfflineActivitySettlement extends TenantEntity { + + private Long activityId; + private Long merchantId; + private String merchantName; + + private Integer recordCount; + private Integer sumOrderMoney; + private Integer sumGrantPrice; + private Integer sumMallPrice; + private Integer sumMerchantPrice; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java new file mode 100644 index 000000000..7ed851435 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java @@ -0,0 +1,17 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class OfflineActivitySettlementStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer sumGrantPrice; + private Integer recordCount; + private Integer merchantCount; + private Integer sumMallPrice; + private Integer sumMerchantPrice; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index 9b49f77ad..fa628473b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -2,7 +2,6 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @author xiaohu @@ -12,6 +11,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper { + Integer getCusCount(WxOfflineActivityGrantAward grantAwardQ); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index 93b8c66c4..da6eb6014 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -3,6 +3,8 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.OfflineActivitySettlement; +import com.iformall.domain.vo.OfflineActivitySettlementStatistics; import java.util.List; @@ -15,6 +17,12 @@ import java.util.List; public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper { void insertList(List settlementList); + + OfflineActivitySettlementStatistics settlementStatistics(WxOfflineActivityGrantSettlement settlement); + + List getActivitySettlement(WxOfflineActivityGrantSettlement settlement); + + List findList(WxOfflineActivityGrantSettlement settlement); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java index 8d36ccb6f..3c61d9d22 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -25,6 +25,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + + Map cusStatistics(TenantEntity tenantInfo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 8db5e3cb9..7e40a8a7c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -1,8 +1,15 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxOfflineActivity; import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineActivitySettlement; + +import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -12,4 +19,12 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface WxOfflineActivityGrantSettlementService { void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + + Map settlementStatistics(TenantEntity tenantInfo); + + PageInfo activityListAsPage(WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize); + + List getActivitySettlement(WxOfflineActivityGrantSettlement grantSettlement); + + List findList(WxOfflineActivityGrantSettlement grantSettlement); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java index 6cb92467f..d93f24e71 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxOfflineActivityRecord; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxRaffleActivityRecord; +import com.iformall.domain.po.base.TenantEntity; import java.util.Map; @@ -25,4 +26,5 @@ public interface WxOfflineActivityRecordService { void auditRecord(WxOfflineActivityRecord wxOfflineActivityRecord, Long userId); + Map orderStatistics(TenantEntity tenantInfo); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 8e0f15c96..77c4e98a5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -16,11 +16,13 @@ import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; import com.iformall.mapper.WxOfflineActivityRecordMapper; import com.iformall.service.*; import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; +import com.iformall.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.text.NumberFormat; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -170,6 +172,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity wxOfflineActivityGrantSettlementService.settlement(wxOfflineActivityGrantAward); } + private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); @@ -308,6 +311,57 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); } + + + @Override + public Map cusStatistics(TenantEntity tenantInfo) { + //最近30天 + Date now = new Date(); + String monthStartdate = DateUtils.getTimeBefore(30, now); + String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 + String weekStartdate = DateUtils.getTimeBefore(7, now); + String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 + String yesterdayDate = DateUtils.getTimeBefore(1, now); + String today = DateUtils.getTimeBefore(0, now); + + //最近30天数据 + WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); + grantAwardQ.updateTenantInfo(tenantInfo); + grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); + Integer monthCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); + //一周前的昨天 + grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); + grantAwardQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); + Integer yesWeekCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); + //昨天的昨天 + grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); + grantAwardQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); + Integer yesYesCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); + //昨天 + grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); + grantAwardQ.setCreateDateEnd(DateUtils.stringToDate(today)); + Integer yesCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); + + Map result = new HashMap<>(); + result.put("monthCount",monthCount); + + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); + String dayPercentage = "--"; + if (yesYesCount > 0) { + Integer count = yesCount - yesYesCount; + dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue()); + } + result.put("dayPercentage",dayPercentage); + String weekPercentage = "--"; + if (yesWeekCount > 0) { + Integer count = yesCount - yesWeekCount; + weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue()); + } + result.put("weekPercentage",weekPercentage); + return result; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 4f81fb9aa..2445e11ab 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -56,8 +56,6 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG grantGrantItem.setAwardPrice(awardPriceTen*1000); } } - grantGrantItem.setMallSharePrice(new BigDecimal(grantGrantItem.getAwardPrice()).multiply(grantGrantItem.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); - grantGrantItem.setMerchantSharePrice(grantGrantItem.getAwardPrice() - grantGrantItem.getMallSharePrice()); rantItemList.add(grantGrantItem); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 21db14b54..2310329a3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -1,19 +1,29 @@ package com.iformall.service.impl; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; 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.EnumOfflineActivityStatus; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.mapper.WxMerchantMapper; +import com.iformall.mapper.WxOfflineActivityMapper; +import com.iformall.service.WxMerchantService; import com.iformall.service.WxOfflineActivityGrantSettlementService; import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; +import com.iformall.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.List; +import java.text.NumberFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -27,6 +37,14 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct @Autowired private WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; + @Autowired + WxOfflineActivityMapper wxOfflineActivityMapper; + + @Autowired + WxMerchantMapper wxMerchantMapper; + @Autowired + WxMerchantService wxMerchantService; + @Override public void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { List settlementList = new ArrayList<>(); @@ -97,6 +115,147 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct wxOfflineActivityGrantSettlementMapper.insertList(settlementList); } + + @Override + public Map settlementStatistics(TenantEntity tenantInfo) { + //最近30天 + Date now = new Date(); + String monthStartdate = DateUtils.getTimeBefore(30, now); + String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 + String weekStartdate = DateUtils.getTimeBefore(7, now); + String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 + String yesterdayDate = DateUtils.getTimeBefore(1, now); + String today = DateUtils.getTimeBefore(0, now); + + //最近30天 + WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); + settlement.updateTenantInfo(tenantInfo); + settlement.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); + OfflineActivitySettlementStatistics monthStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); + //一周前的昨天 + settlement.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); + settlement.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); + OfflineActivitySettlementStatistics yesWeekStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); + //昨天的昨天 + settlement.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); + settlement.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); + OfflineActivitySettlementStatistics yesYesStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); + //昨天 + settlement.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); + settlement.setCreateDateEnd(DateUtils.stringToDate(today)); + OfflineActivitySettlementStatistics yesStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); + + Map result = new HashMap<>(); + result.put("monthGrantPrice",monthStatistics.getSumGrantPrice()); + result.put("grantPriceDayPercentage",getPercentage(yesStatistics.getSumGrantPrice(),yesYesStatistics.getSumGrantPrice())); + result.put("grantPriceWeekPercentage",getPercentage(yesStatistics.getSumGrantPrice(),yesWeekStatistics.getSumGrantPrice())); + + result.put("monthRecordCount",monthStatistics.getRecordCount()); + result.put("recordCountDayPercentage",getPercentage(yesStatistics.getRecordCount(),yesYesStatistics.getRecordCount())); + result.put("recordCountWeekPercentage",getPercentage(yesStatistics.getRecordCount(),yesWeekStatistics.getRecordCount())); + + result.put("monthMallPrice",monthStatistics.getSumMallPrice()); + result.put("mallPriceDayPercentage",getPercentage(yesStatistics.getSumMallPrice(),yesYesStatistics.getSumMallPrice())); + result.put("mallPriceWeekPercentage",getPercentage(yesStatistics.getSumMallPrice(),yesWeekStatistics.getSumMallPrice())); + + result.put("monthMerchantPrice",monthStatistics.getSumMerchantPrice()); + result.put("merchantPriceDayPercentage",getPercentage(yesStatistics.getSumMerchantPrice(),yesYesStatistics.getSumMerchantPrice())); + result.put("merchantPriceWeekPercentage",getPercentage(yesStatistics.getSumMerchantPrice(),yesWeekStatistics.getSumMerchantPrice())); + + return result; + } + + + private String getPercentage(Integer yes, Integer yesYes){ + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); + + String percentage = "--"; + if(yes > 0){ + Integer count = yes - yesYes; + percentage = nf.format(count.doubleValue() / new Double(yesYes).doubleValue()); + } + return percentage; + } + + @Override + public PageInfo activityListAsPage(WxOfflineActivity activity, Integer pageNum, Integer pageSize) { + handlerQuery(activity); + PageInfo activityPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityMapper.findList(activity)); + handlerReturnList(activityPageInfo.getList()); + return activityPageInfo; + } + + private void handlerQuery(WxOfflineActivity record) { + if (null != record.getStatus()) { + //已上架 + if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(record.getStatus())){ + record.setValidStatus(EnumYesOrNo.NO.getCode()); + } + //已过期 + else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(record.getStatus())){ + record.setStatus(null); + record.setValidStatus(EnumYesOrNo.YES.getCode()); + } + } + } + + private void handlerReturnList(List list) { + if (list == null || list.isEmpty()) { + return; + } + + for (WxOfflineActivity activity : list) { + if(new Date().before(activity.getStartTime())){ + activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); + } + //获取结算相关 + WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); + settlement.updateTenantInfo(activity); + settlement.setActivityId(activity.getId()); + OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); + activity.setGrantMershantCount(settlementStatistics.getMerchantCount()); + activity.setGrantPrice(settlementStatistics.getSumGrantPrice()); + activity.setGrantRecordCount(settlementStatistics.getRecordCount()); + activity.setMerchantSettlmentPrice(settlementStatistics.getSumMerchantPrice()); + + } + } + + @Override + public List getActivitySettlement(WxOfflineActivityGrantSettlement record) { + + if (StringUtils.isNotBlank(record.getMerchantName())) { + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(record); + merchant.setName(record.getMerchantName()); + List mids = wxMerchantMapper.findIdList(merchant); + if (null == mids || mids.size() <= 0 ) { + record.setId(-1L); + }else { + record.setMerchantIdList(mids); + } + } + + List activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(record); + if (activitySettlementList != null && !activitySettlementList.isEmpty()) { + + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(record); + Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + + for (OfflineActivitySettlement activitySettlement : activitySettlementList) { + activitySettlement.setMerchantName(idAndNamesMap.get(activitySettlement.getMerchantId())); + + } + } + return activitySettlementList; + } + + @Override + public List findList(WxOfflineActivityGrantSettlement grantSettlement) { + return wxOfflineActivityGrantSettlementMapper.findList(grantSettlement); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index c869b773c..5815c737e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -1,19 +1,24 @@ package com.iformall.service.impl; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityRecord; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivityRecordStatistics; import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.mapper.WxMerchantMapper; import com.iformall.service.WxMerchantService; import com.iformall.service.WxOfflineActivityRecordService; import com.iformall.mapper.WxOfflineActivityRecordMapper; +import com.iformall.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.NumberFormat; import java.util.*; /** @@ -27,16 +32,34 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco @Autowired private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; + @Autowired + WxMerchantMapper wxMerchantMapper; @Autowired WxMerchantService wxMerchantService; @Override public PageInfo listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { + handlerQuery(record); PageInfo recordPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityRecordMapper.findList(record)); handlerRecordList(record,recordPageInfo.getList()); return recordPageInfo; } + private void handlerQuery(WxOfflineActivityRecord record) { + //商户处理 + if (StringUtils.isNotBlank(record.getMerchantName())) { + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(record); + merchant.setName(record.getMerchantName()); + List mids = wxMerchantMapper.findIdList(merchant); + if (null == mids || mids.size() <= 0 ) { + record.setId(-1L); + }else { + record.setMerchantIdList(mids); + } + } + } + private void handlerRecordList(TenantEntity tenantEntity,List recordList) { if (recordList != null && recordList.size() > 0) { WxMerchant merchantQ = new WxMerchant(); @@ -113,6 +136,55 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco record.setAuditBy(userId); wxOfflineActivityRecordMapper.updateAuditStatus(record); } + + @Override + public Map orderStatistics(TenantEntity tenantInfo) { + //最近30天 + Date now = new Date(); + String monthStartdate = DateUtils.getTimeBefore(30, now); + String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 + String weekStartdate = DateUtils.getTimeBefore(7, now); + String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 + String yesterdayDate = DateUtils.getTimeBefore(1, now); + String today = DateUtils.getTimeBefore(0, now); + + //最近30天数据 + WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); + recordQ.updateTenantInfo(tenantInfo); + recordQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); + Integer monthCount = wxOfflineActivityRecordMapper.getCount(recordQ); + //一周前的昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); + Integer yesWeekCount = wxOfflineActivityRecordMapper.getCount(recordQ); + //昨天的昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); + Integer yesYesCount = wxOfflineActivityRecordMapper.getCount(recordQ); + //昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(today)); + Integer yesCount = wxOfflineActivityRecordMapper.getCount(recordQ); + + Map result = new HashMap<>(); + result.put("monthCount",monthCount); + + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); + String dayPercentage = "--"; + if (yesYesCount > 0) { + Integer count = yesCount - yesYesCount; + dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue()); + } + result.put("dayPercentage",dayPercentage); + String weekPercentage = "--"; + if (yesWeekCount > 0) { + Integer count = yesCount - yesWeekCount; + weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue()); + } + result.put("weekPercentage",weekPercentage); + return result; + } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index bef2c6f97..fad13a011 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -32,4 +32,24 @@ create_date,update_date,lottery_num, lottery_count,anniversary_lottery_num + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 3a9c6641a..e002d4749 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -25,9 +25,7 @@ - - @@ -39,8 +37,8 @@ award_itam_id,award_name,award_grade, award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, award_price,award_count,money_rule, - mall_share_rate,mall_share_price,merchant_share_rate, - merchant_share_price,create_date,update_date + mall_share_rate,merchant_share_rate, + create_date,update_date @@ -51,8 +49,8 @@ `award_itam_id`,`award_name`,`award_grade`, `award_min_amount`,`award_max_amount`,`awards_item_rule`,`cash_back_ratio`, `award_price`,`award_count`,`money_rule`, - `mall_share_rate`,`mall_share_price`,`merchant_share_rate`, - `merchant_share_price`,`create_date`,`update_date`) + `mall_share_rate`,`merchant_share_rate`, + `create_date`,`update_date`) values (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, @@ -61,8 +59,8 @@ #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, #{item.awardMinAmount,jdbcType=INTEGER},#{item.awardMaxAmount,jdbcType=INTEGER},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, #{item.awardPrice,jdbcType=INTEGER},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, - #{item.mallShareRate,jdbcType=DECIMAL},#{item.mallSharePrice,jdbcType=INTEGER},#{item.merchantShareRate,jdbcType=DECIMAL}, - #{item.merchantSharePrice,jdbcType=INTEGER},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, + #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 2f0546e3f..b903347b5 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -37,8 +37,72 @@ create_date,update_date + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `record_id` = #{recordId} + + + and `order_no` like concat('%', #{orderNo},'%') + + + + and `merchant_id` = #{merchantId} + + + and `activity_id` = #{activityId} + + + and `activity_item_id` = #{activityItemId} + + + and `award_itam_id` = #{awardItamId} + + + and `grant_id` = #{grantId} + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + and merchant_id in + + #{midItem} + + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + - insert into wx_offline_activity_grant_item + insert into wx_offline_activity_grant_settlement (id,tenant_id,parent_tenant_id, record_id,order_no,order_money, merchant_id,activity_id,activity_item_id, @@ -57,4 +121,73 @@ #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml index 1737088bb..ed7676fe6 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -193,4 +193,23 @@ + + From 2bac1b0b4c82d62bbf9270d1ba52a8d34bb20936 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 11 Aug 2024 02:09:37 +0800 Subject: [PATCH 12/36] //OfflineActivity --- .../domain/po/WxOfflineActivityRecord.java | 2 ++ .../WxOfflineActivityMerchantMapper.java | 5 +---- ...xOfflineActivityGrantAwardServiceImpl.java | 22 ++++++++++++------- ...WxOfflineActivityGrantSettlementMapper.xml | 14 ++++++------ .../WxOfflineActivityMerchantMapper.xml | 12 ++-------- .../mapper/WxOfflineActivityRecordMapper.xml | 10 ++++++++- 6 files changed, 35 insertions(+), 30 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index 8290b3195..0d7d3ac7f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -107,6 +107,8 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(exist = false) private List merchantIdList; + @TableField(exist = false) + private List notMerchantIdList; @TableField(value = "business_id") private Integer businessId; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java index a9dde663f..bf69b7fa8 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityMerchantMapper.java @@ -14,15 +14,12 @@ import java.util.List; */ public interface WxOfflineActivityMerchantMapper extends CommonMapper { - WxOfflineActivityMerchant selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + List getMerchantIdList(@Param("activityId")Long activityId, @Param("tenantId")String tenantId); List findList(WxOfflineActivityMerchant wxOfflineActivityMerchant); void delete(WxOfflineActivityMerchant wxOfflineActivityMerchant); - int merchantCount(WxOfflineActivityMerchant wxOfflineActivityMerchant); - - List findActivityIdList(@Param("merchantId")Long merchantId,@Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 77c4e98a5..334e5a437 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -6,16 +6,10 @@ import com.iformall.common.Result; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivityRecordStatistics; -import com.iformall.enums.EnumOfflineActivityAwardsRule; -import com.iformall.enums.EnumOfflineActivityRecordStatus; -import com.iformall.enums.EnumOfflineActivityStatus; -import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; -import com.iformall.mapper.WxOfflineActivityMapper; -import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; -import com.iformall.mapper.WxOfflineActivityRecordMapper; +import com.iformall.mapper.*; import com.iformall.service.*; -import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; import com.iformall.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,6 +35,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityMapper wxOfflineActivityMapper; + @Autowired + WxOfflineActivityMerchantMapper wxOfflineActivityMerchantMapper; + @Autowired WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; @@ -112,6 +109,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); + + if(EnumOfflineActivityMerchantType.ADD.getCode().equals(activity.getAllMerchant())){ + List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); + wxOfflineActivityRecord.setMerchantIdList(merchantIds); + }else if(EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(activity.getAllMerchant())){ + List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); + wxOfflineActivityRecord.setNotMerchantIdList(merchantIds); + } + List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); handlerRecordList(wxOfflineActivityRecord,activity,recordList); return recordList; diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index b903347b5..b62af6a07 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -123,11 +123,11 @@ - select from wx_offline_activity_merchant where id = #{id} and tenant_id=#{tenantId} - - - select count(1) from wx_offline_activity_merchant - + - diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml index ed7676fe6..de57d1af4 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -98,6 +98,13 @@ + + and merchant_id not in + + #{midItem} + + + and id in @@ -126,7 +133,8 @@ + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index e002d4749..4a50b47c4 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -5,54 +5,54 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - id,tenant_id,parent_tenant_id, + id,tenant_id,parent_tenant_id, + grant_id,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, + award_price,award_count,money_rule, + mall_share_rate,merchant_share_rate, + create_date,update_date + + + + insert into wx_offline_activity_grant_item + (id,tenant_id,parent_tenant_id, grant_id,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, award_price,award_count,money_rule, mall_share_rate,merchant_share_rate, - create_date,update_date - - - - insert into wx_offline_activity_grant_item - (`id`,`tenant_id`,`parent_tenant_id`, - `grant_id`,`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`, - `award_price`,`award_count`,`money_rule`, - `mall_share_rate`,`merchant_share_rate`, - `create_date`,`update_date`) + create_date,update_date) values - + (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, @@ -63,4 +63,19 @@ #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index b62af6a07..12f7d3939 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -111,7 +111,7 @@ real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date) values - + (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, @@ -155,7 +155,7 @@ @@ -203,6 +175,15 @@ + + + + where 1 = 1 and `tenant_id` = #{tenantId} @@ -210,6 +191,15 @@ and `parent_tenant_id` = #{parentTenantId} + + and `merchant_id` = #{merchantId} + + + and `business_id` = #{businessId} + + + and `cus_phone` = #{cusPhone} + and `create_date` >= #{createDateBegin} @@ -218,6 +208,25 @@ and `create_date` <= #{createDateEnd} - + + + and `audit_status` = #{auditStatus} + + + + and merchant_id in + + #{midItem} + + + + + and merchant_id not in + + #{midItem} + + + + From e92e361067dae941b8c94438983a1a25b4c24d70 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Mon, 12 Aug 2024 00:04:41 +0800 Subject: [PATCH 14/36] //OfflineActivity --- .../WxOfflineActivityGrantController.java | 29 +++++++---- .../WxOfflineActivityRecordController.java | 18 +++++-- .../WxOfflineActivityGrantAwardService.java | 8 +++- .../WxOfflineActivityRecordService.java | 4 ++ ...xOfflineActivityGrantAwardServiceImpl.java | 48 ++++++++++++------- ...ineActivityGrantSettlementServiceImpl.java | 1 - .../WxOfflineActivityRecordServiceImpl.java | 14 ++++++ 7 files changed, 89 insertions(+), 33 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index 29e56db56..b4c01ee8d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -7,13 +7,9 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.exception.MallinkException; import com.iformall.service.WxOfflineActivityGrantAwardService; -import com.iformall.service.WxOfflineActivityRecordService; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import jodd.util.StringUtil; @@ -22,7 +18,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.math.BigDecimal; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -51,7 +48,7 @@ public class WxOfflineActivityGrantController extends BaseController { TenantEntity tenantInfo = getTenantInfo(); wxOfflineActivityRecord.updateTenantInfo(tenantInfo); - Map statisticsMap = wxOfflineActivityGrantAwardService.getRecordStatistics(wxOfflineActivityRecord.getActivityId(),wxOfflineActivityRecord); + Map statisticsMap = wxOfflineActivityGrantAwardService.getRecordStatistics(wxOfflineActivityRecord); return new ResultData(statisticsMap); } @@ -69,11 +66,27 @@ public class WxOfflineActivityGrantController extends BaseController { TenantEntity tenantInfo = getTenantInfo(); wxOfflineActivityRecord.updateTenantInfo(tenantInfo); wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); - List recordList = wxOfflineActivityGrantAwardService.getRecordList(wxOfflineActivityRecord.getActivityId(),wxOfflineActivityRecord); + List recordList = wxOfflineActivityGrantAwardService.getRecordList(wxOfflineActivityRecord); return new ResultData(recordList); } + @ApiOperation("参加活动用户订单导出") + @GetMapping("/recordExport") + public void recordExport(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, HttpServletRequest request, HttpServletResponse response) { + if(wxOfflineActivityRecord.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"请选择活动"); + } + if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); + wxOfflineActivityGrantAwardService.recordExport(request,response,wxOfflineActivityRecord); + } + @ApiOperation("活动发放") @PostMapping("grantAward") public ResultData grantAward(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java index 2058cd839..f1f62100a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -4,16 +4,14 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.WxOfflineActivity; -import com.iformall.domain.po.WxOfflineActivityAwardsItem; -import com.iformall.domain.po.WxOfflineActivityItem; -import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; import com.iformall.enums.EnumOfflineActivityMerchantType; import com.iformall.enums.EnumOfflineActivityRecordStatus; import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.exception.MallinkException; import com.iformall.service.WxOfflineActivityRecordService; import com.iformall.service.WxOfflineActivityService; import io.swagger.annotations.Api; @@ -26,6 +24,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; /** @@ -55,6 +55,16 @@ public class WxOfflineActivityRecordController extends BaseController { return new ResultData(page); } + + @ApiOperation("导出") + @GetMapping("/export") + public void export(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, HttpServletRequest request, HttpServletResponse response) { + if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); + wxOfflineActivityRecordService.exportData(request,response,wxOfflineActivityRecord); + } @ApiOperation("审核通过") @PostMapping("audiPass") diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index b0ce33cee..8f1f2c72e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxOfflineActivityRecord; import com.iformall.domain.po.base.TenantEntity; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -15,11 +17,13 @@ import java.util.Map; */ public interface WxOfflineActivityGrantAwardService { - Map getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); + Map getRecordStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); - List getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); + List getRecordList(WxOfflineActivityRecord wxOfflineActivityRecord); void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); Map cusStatistics(TenantEntity tenantInfo); + + void recordExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java index d93f24e71..982ac649a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxRaffleActivityRecord; import com.iformall.domain.po.base.TenantEntity; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -27,4 +29,6 @@ public interface WxOfflineActivityRecordService { void auditRecord(WxOfflineActivityRecord wxOfflineActivityRecord, Long userId); Map orderStatistics(TenantEntity tenantInfo); + + void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 65a37e564..aaa6c81cf 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -15,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.text.NumberFormat; import java.util.*; @@ -61,14 +63,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired MallUserInfoService mallUserInfoService; + @Autowired + ExcelService excelService; + @Override - public Map getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord) { - WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityId, wxOfflineActivityRecord.getTenantId()); - if (activity == null) { - return Collections.emptyMap(); - } - wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); - wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); + public Map getRecordStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) { + handlerRecordQuery(wxOfflineActivityRecord); WxOfflineActivityRecord limitOne = wxOfflineActivityRecordMapper.selectLimitOne(wxOfflineActivityRecord); Map result = new HashMap<>(); Integer audting = 0, audi_success = 0, audt_fail = 0,sum_success = 0, sum_fail = 0; @@ -102,10 +102,18 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } @Override - public List getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord) { - WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityId, wxOfflineActivityRecord.getTenantId()); + public List getRecordList(WxOfflineActivityRecord wxOfflineActivityRecord) { + handlerRecordQuery(wxOfflineActivityRecord); + List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); + handlerRecordList(wxOfflineActivityRecord,recordList); + return recordList; + } + + private void handlerRecordQuery(WxOfflineActivityRecord wxOfflineActivityRecord){ + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(wxOfflineActivityRecord.getActivityId(), wxOfflineActivityRecord.getTenantId()); if (activity == null) { - return Collections.emptyList(); + wxOfflineActivityRecord.setId(-1l); + return; } wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); @@ -117,21 +125,17 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); wxOfflineActivityRecord.setNotMerchantIdList(merchantIds); } - - List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); - handlerRecordList(wxOfflineActivityRecord,activity,recordList); - return recordList; } - private void handlerRecordList(TenantEntity tenantEntity, WxOfflineActivity activity, List recordList) { + private void handlerRecordList(WxOfflineActivityRecord wxOfflineActivityRecord, List recordList) { if (recordList == null || recordList.isEmpty()) { return; } WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(tenantEntity); + merchantQ.updateTenantInfo(wxOfflineActivityRecord); Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); MallUserInfo userInfoQ = new MallUserInfo(); - userInfoQ.updateTenantInfo(tenantEntity); + userInfoQ.updateTenantInfo(wxOfflineActivityRecord); Map userMap = mallUserInfoService.getUserMap(userInfoQ); for (WxOfflineActivityRecord record : recordList) { @@ -140,7 +144,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity record.setAuditByName(userMap.get(record.getAuditBy()).getName()); } //判断订单是否发奖 - Integer grantCount = wxOfflineActivityRecordGrantMapper.selectGrantCount(tenantEntity.getTenantId(),activity.getId(),record.getId()); + Integer grantCount = wxOfflineActivityRecordGrantMapper.selectGrantCount(wxOfflineActivityRecord.getTenantId(),wxOfflineActivityRecord.getActivityId(),record.getId()); if(grantCount >= 1){ record.setAuditStatus(EnumOfflineActivityRecordStatus.IS_GRANT.getCode()); } @@ -377,6 +381,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return result; } + @Override + public void recordExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord) { + handlerRecordQuery(wxOfflineActivityRecord); + List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); + handlerRecordList(wxOfflineActivityRecord,recordList); + excelService.exportExcel(recordList, null, "用户参加活动订单列表", WxOfflineActivityGrantSettlement.class, "用户参加活动订单列表.xlsx", response, false); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 7a6e718b5..4d1ca7af4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -1,7 +1,6 @@ package com.iformall.service.impl; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index 03b34820c..ee80c7a02 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -10,6 +10,7 @@ import com.iformall.domain.vo.OfflineActivityRecordStatistics; import com.iformall.enums.EnumOfflineActivityRecordStatus; import com.iformall.mapper.WxMerchantMapper; import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; +import com.iformall.service.ExcelService; import com.iformall.service.MallUserInfoService; import com.iformall.service.WxMerchantService; import com.iformall.service.WxOfflineActivityRecordService; @@ -18,6 +19,8 @@ import com.iformall.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.text.NumberFormat; import java.util.*; @@ -42,6 +45,9 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco @Autowired MallUserInfoService mallUserInfoService; + @Autowired + ExcelService excelService; + @Override public PageInfo listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { handlerQuery(record); @@ -222,6 +228,14 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco result.put("weekPercentage",weekPercentage); return result; } + + @Override + public void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord record) { + handlerQuery(record); + List list = wxOfflineActivityRecordMapper.findList(record); + handlerRecordList(record,list); + excelService.exportExcel(list, null, "活动订单列表", WxOfflineActivityRecord.class, "活动订单列表.xlsx", response, false); + } } From 2f9f88b5f01e2227a803b54da12d6625632775c6 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Mon, 12 Aug 2024 18:24:24 +0800 Subject: [PATCH 15/36] //OfflineActivity --- ...WxOfflineActivitySettlementController.java | 19 ++++++++++ ...OfflineActivityGrantSettlementService.java | 3 ++ ...ineActivityGrantSettlementServiceImpl.java | 35 +++++++++++++++++++ ...WxOfflineActivityGrantSettlementMapper.xml | 3 ++ 4 files changed, 60 insertions(+) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java index d1fb8f257..354eddbbe 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -98,6 +98,25 @@ public class WxOfflineActivitySettlementController extends BaseController { return new ResultData(recordList); } + @ApiOperation("单个活动单个门店结算汇总") + @GetMapping("merchantSettlementStatistics") + @ApiImplicitParams({}) + public ResultData merchantSettlementStatistics(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { + + if(grantSettlement.getActivityId() == null){ + return new ResultData(Result.ERROR,"请选择活动"); + } + if(grantSettlement.getMerchantId() == null){ + return new ResultData(Result.ERROR,"请选择门店"); + } + + TenantEntity tenantInfo = getTenantInfo(); + grantSettlement.updateTenantInfo(tenantInfo); + Map recordList = wxOfflineActivityGrantSettlementService.merchantSettlementStatistics(grantSettlement); + + return new ResultData(recordList); + } + @ApiOperation("单个活动单个门店结算列表") @GetMapping("merchantSettlement") @ApiImplicitParams({}) diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 781dce69f..3fb8993ad 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -28,7 +28,10 @@ public interface WxOfflineActivityGrantSettlementService { List getActivitySettlement(WxOfflineActivityGrantSettlement grantSettlement); + Map merchantSettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement); + List findList(WxOfflineActivityGrantSettlement grantSettlement); void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 4d1ca7af4..92c1c5d88 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -258,6 +258,41 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct return activitySettlementList; } + @Override + public Map merchantSettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement) { + Map result = new HashMap<>(); + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(grantSettlement.getActivityId(),grantSettlement.getTenantId()); + if(activity == null){ + result.put("activityName","查无此活动"); + }else{ + result.put("activityName",activity.getName()); + } + WxMerchant merchant = wxMerchantMapper.selectById(grantSettlement.getMerchantId()); + if(merchant == null){ + result.put("merchantName","查无此门店"); + }else{ + result.put("merchantName",merchant.getName()); + } + List activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(grantSettlement); + if (activitySettlementList != null && !activitySettlementList.isEmpty()) { + result.put("recordCount",0); + result.put("sumOrderMoney",0); + result.put("sumGrantPrice",0); + result.put("sumMallPrice",0); + result.put("sumMerchantPrice",0); + return result; + }else{ + OfflineActivitySettlement offlineActivitySettlement = activitySettlementList.get(0); + result.put("recordCount",offlineActivitySettlement.getRecordCount()); + result.put("sumOrderMoney",offlineActivitySettlement.getRecordCount()); + result.put("sumGrantPrice",offlineActivitySettlement.getRecordCount()); + result.put("sumMallPrice",offlineActivitySettlement.getRecordCount()); + result.put("sumMerchantPrice",offlineActivitySettlement.getRecordCount()); + } + + return result; + } + @Override public List findList(WxOfflineActivityGrantSettlement grantSettlement) { return wxOfflineActivityGrantSettlementMapper.findList(grantSettlement); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 12f7d3939..521b81499 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -179,6 +179,9 @@ and `create_date` <= #{createDateEnd} + + and `merchant_id` = #{merchantId} + and merchant_id in From ee8b4074d1322387f224fca5ab7006c47ebeddcc Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Mon, 12 Aug 2024 18:43:01 +0800 Subject: [PATCH 16/36] //OfflineActivity --- .../WxOfflineActivityGrantItemServiceImpl.java | 3 ++- ...OfflineActivityGrantSettlementServiceImpl.java | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 2445e11ab..7b889b2dc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -45,7 +45,8 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG grantGrantItem.setCreateDate(now); grantGrantItem.setUpdateDate(now); if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ - BigDecimal awardPrice = new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum()).multiply(grantGrantItem.getCashBackRatio()); + BigDecimal awardPrice = new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum()) + .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 92c1c5d88..1af3ff51a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -58,10 +58,13 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct //获取订单占比(占比最少的订单用减法,尽量减少误差) List recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); int size = recordDescList.size() - 1; - BigDecimal lastRatio = BigDecimal.ONE; + BigDecimal lastRatio = new BigDecimal(100); for(int i=0; i Date: Mon, 12 Aug 2024 23:32:11 +0800 Subject: [PATCH 17/36] //OfflineActivity --- .../WxOfflineActivityGrantController.java | 19 +++- .../domain/po/WxOfflineActivityItem.java | 12 ++- .../domain/po/WxOfflineActivityRecord.java | 12 +++ .../WxOfflineActivityGrantAwardService.java | 2 + ...xOfflineActivityGrantAwardServiceImpl.java | 102 +++++++++++++++++- 5 files changed, 139 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index b4c01ee8d..970221b55 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -87,11 +87,27 @@ public class WxOfflineActivityGrantController extends BaseController { wxOfflineActivityGrantAwardService.recordExport(request,response,wxOfflineActivityRecord); } + @ApiOperation("活动发放页面处理") + @PostMapping("grantAwardPage") + public ResultData grantAwardPage(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + if(wxOfflineActivityGrantAward.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivityGrantAward.updateTenantInfo(tenantEntity); + wxOfflineActivityGrantAwardService.handlerGrantAwardPage(wxOfflineActivityGrantAward); + return new ResultData(wxOfflineActivityGrantAward); + } + + @ApiOperation("活动发放") @PostMapping("grantAward") public ResultData grantAward(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { if(wxOfflineActivityGrantAward.getActivityId() == null){ - return new ResultData(Result.ERROR,"活动ID未空"); + return new ResultData(Result.ERROR,"活动ID为空"); } if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ return new ResultData(Result.ERROR,"请选择订单"); @@ -106,5 +122,4 @@ public class WxOfflineActivityGrantController extends BaseController { return new ResultData(); } - } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 192b233d5..edfc671be 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -57,7 +57,7 @@ public class WxOfflineActivityItem extends TenantEntity { private Integer awardsItemPrice; /** - * 奖项数量限制 + * 奖项数量限制(为0时无限制) */ @TableField(value = "awards_item_limit") private Integer awardsItemLimit; @@ -91,6 +91,16 @@ public class WxOfflineActivityItem extends TenantEntity { */ @TableField(exist = false) private List activityAwardsItemList; + /** + * 是否满足活动条件 + */ + @TableField(exist = false) + private Boolean isMeet; + /** + * 实际获得奖项限制(为0时无限制) + */ + @TableField(exist = false) + private Integer realAwardsItemLimit; /** * 发放奖项 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index 0764e02e7..f5c708989 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -1,6 +1,8 @@ package com.iformall.domain.po; import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -88,6 +90,16 @@ public class WxOfflineActivityRecord extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + lotteryNumList = JSON.parseArray(lotteryNum, String.class); + }catch(Exception e){} + } + return lotteryNumList; + } /** * 抽奖券数量 diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 8f1f2c72e..698b70b66 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -21,6 +21,8 @@ public interface WxOfflineActivityGrantAwardService { List getRecordList(WxOfflineActivityRecord wxOfflineActivityRecord); + void handlerGrantAwardPage(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); Map cusStatistics(TenantEntity tenantInfo); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index aaa6c81cf..c7e566139 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1,5 +1,7 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iformall.common.IdWorker; import com.iformall.common.Result; @@ -152,6 +154,77 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } + @Override + public void handlerGrantAwardPage(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(wxOfflineActivityGrantAward.getActivityId(), wxOfflineActivityGrantAward.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR, "未查询到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + //订单合并 + handlerGrantData(activity,wxOfflineActivityGrantAward,true); + + //奖项处理 + List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); + wxOfflineActivityGrantAward.setActivityItemList(activityItemList); + for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + + if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){ + activityItem.setIsMeet(false); + continue; + } + activityItem.setIsMeet(true); + //奖项限制数量 + int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 + && activityItem.getAwardsItemLimit() < limitCount){ + limitCount = activityItem.getAwardsItemLimit(); + } + activityItem.setRealAwardsItemLimit(limitCount); + } + else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparingInt(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); + WxOfflineActivityAwardsItem grantAwardsItem = null; + for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ + if(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMinAmount() + && wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMaxAmount()){ + grantAwardsItem = awardsItem; + } + } + if(grantAwardsItem == null){ + 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.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); + activityItem.setActivityGrantItemList(Arrays.asList(grantItem)); + } + else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + activityItem.setIsMeet(true); + activityItem.setRealAwardsItemLimit(1); + } + } + } + @Override @Transactional(rollbackFor = Exception.class) public void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { @@ -164,7 +237,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查活动状态"); } - handlerGrantData(activity,wxOfflineActivityGrantAward); + handlerGrantData(activity,wxOfflineActivityGrantAward,false); Date now = new Date(); final IdWorker idWorker = IdWorker.get(); wxOfflineActivityGrantAward.setId(idWorker.nextId()); @@ -183,7 +256,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } - private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ + private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward,boolean isForPage){ List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { @@ -192,6 +265,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(wxOfflineActivityRecords.stream().map(WxOfflineActivityRecord::getCusPhone).distinct().count() != 1){ throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人"); } + + Integer orderMoneySum = 0; + List lotteryNumList = new ArrayList<>(); + List anniversaryLotteryNumList = new ArrayList<>(); for (WxOfflineActivityRecord record : wxOfflineActivityRecords) { if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){ throw new MallinkException(Result.ERROR, "请检查活动订单审核状态"); @@ -202,13 +279,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(wxOfflineActivityRecordGrantMapper.selectGrantCount(activity.getTenantId(),activity.getId(),record.getId()) > 0){ throw new MallinkException(Result.ERROR, "请检查订单是否已参与活动"); } + + orderMoneySum += record.getOrderMoney(); + if(record.getLotteryNumList() != null && !record.getLotteryNumList().isEmpty()){ + lotteryNumList.addAll(record.getLotteryNumList()); + } + if(StringUtils.isNotBlank(record.getAnniversaryLotteryNum())){ + anniversaryLotteryNumList.add(record.getAnniversaryLotteryNum()); + } + } wxOfflineActivityGrantAward.setRecordList(wxOfflineActivityRecords); wxOfflineActivityGrantAward.setActivityName(activity.getName()); wxOfflineActivityGrantAward.setCusName(wxOfflineActivityRecords.get(0).getCusName()); wxOfflineActivityGrantAward.setCusPhone(wxOfflineActivityRecords.get(0).getCusPhone()); wxOfflineActivityGrantAward.setOrderCount(wxOfflineActivityRecords.size()); - wxOfflineActivityGrantAward.setOrderMoneySum(wxOfflineActivityRecords.stream().mapToInt(WxOfflineActivityRecord::getOrderMoney).sum()); + wxOfflineActivityGrantAward.setOrderMoneySum(orderMoneySum); + + if(isForPage){ + wxOfflineActivityGrantAward.setLotteryNum(JSON.toJSONString(lotteryNumList)); + wxOfflineActivityGrantAward.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList)); + } } private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ @@ -216,7 +307,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); Map activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity())); - int i = 0; + int i = 0;//检查活动奖项 for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { if(grantActivityItem.getId() == null){ throw new MallinkException(Result.ERROR, "请检查活动项参数"); @@ -247,7 +338,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } //奖项限制数量 int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); - if(activityItem.getAwardsItemLimit() < limitCount){ + if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 + && activityItem.getAwardsItemLimit() < limitCount){ limitCount = activityItem.getAwardsItemLimit(); } if(activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ From bae63dd4fd4f9f919a1eac87c96bb4762cba8a45 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Mon, 12 Aug 2024 23:39:59 +0800 Subject: [PATCH 18/36] //OfflineActivity --- .../impl/WxOfflineActivityGrantAwardServiceImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index c7e566139..ed4948c2f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -178,7 +178,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } activityItem.setIsMeet(true); //奖项限制数量 - int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + int limitCount = 0; + if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ + limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 && activityItem.getAwardsItemLimit() < limitCount){ limitCount = activityItem.getAwardsItemLimit(); @@ -337,12 +340,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); } //奖项限制数量 - int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + int limitCount = 0; + if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ + limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 && activityItem.getAwardsItemLimit() < limitCount){ limitCount = activityItem.getAwardsItemLimit(); } - if(activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ + if(limitCount != 0 && activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"奖券超过限制"); } From 682612b3f59a72fe89a0aa369bc1c615d63a7586 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Mon, 12 Aug 2024 23:55:32 +0800 Subject: [PATCH 19/36] //OfflineActivity --- .../com/iformall/service/impl/WxOfflineActivityServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index ce42442b6..1c8dbfdf6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -73,7 +73,7 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ if (null != list && !list.isEmpty()) { Date now = new Date(); for (WxOfflineActivity activity : list) { - if(now.before(activity.getStartTime())){ + if(now.after(activity.getEndTime())){ activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); } //参与订单数 From 6861c50f5094ef401e5838d123653fe017f45a98 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 13 Aug 2024 13:59:57 +0800 Subject: [PATCH 20/36] //OfflineActivity --- .../WxOfflineActivityGrantController.java | 16 +++++++ .../po/WxOfflineActivityGrantAward.java | 2 + .../WxOfflineActivityGrantAwardMapper.java | 3 ++ .../WxOfflineActivityGrantItemMapper.java | 2 + .../WxOfflineActivityRecordGrantMapper.java | 2 + .../WxOfflineActivityGrantAwardService.java | 2 + ...xOfflineActivityGrantAwardServiceImpl.java | 32 ++++++++++++++ .../WxOfflineActivityGrantAwardMapper.xml | 4 ++ .../WxOfflineActivityGrantItemMapper.xml | 42 +++++++++++++++++++ .../WxOfflineActivityRecordGrantMapper.xml | 6 ++- 10 files changed, 110 insertions(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index 970221b55..a256a0134 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -122,4 +122,20 @@ public class WxOfflineActivityGrantController extends BaseController { return new ResultData(); } + @ApiOperation("活动发奖详情") + @GetMapping("grantAwardDetail") + @ApiImplicitParams({}) + public ResultData grantAwardDetail(@ModelAttribute WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + if(wxOfflineActivityGrantAward.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(wxOfflineActivityGrantAward.getRecordId() == null){ + return new ResultData(Result.ERROR,"订单ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityGrantAward.updateTenantInfo(tenantInfo); + WxOfflineActivityGrantAward grantAward = wxOfflineActivityGrantAwardService.grantAwardDetail(wxOfflineActivityGrantAward); + return new ResultData(grantAward); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index a98313161..e51a70fd1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -123,6 +123,8 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; + @TableField(exist = false) + private Long recordId; @TableField(exist = false) private List recordIds; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index 4102f49eb..4b02d1624 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -2,6 +2,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,6 +17,8 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper getRecordIdList(WxOfflineActivityGrantAward grantAwardQ); + + WxOfflineActivityGrantAward selectById(@Param("id")Long id, @Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java index c1bfd5ddb..991ed2d0e 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java @@ -18,6 +18,8 @@ public interface WxOfflineActivityGrantItemMapper extends CommonMapper grantItemList); Integer getSumAwardCount(WxOfflineActivityGrantItem grantItemQ); + + List findList(WxOfflineActivityGrantItem grantItemQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java index 15b90cd46..ae5feed7f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java @@ -18,6 +18,8 @@ public interface WxOfflineActivityRecordGrantMapper extends CommonMapper recordGrantList); + + Long selectGrantId(@Param("tenantId")String tenantId, @Param("activityId")Long activityId, @Param("recordId")Long recordId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 698b70b66..00999c067 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -28,4 +28,6 @@ public interface WxOfflineActivityGrantAwardService { Map cusStatistics(TenantEntity tenantInfo); void recordExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord); + + WxOfflineActivityGrantAward grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index ed4948c2f..e6222f299 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -36,6 +36,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired private WxOfflineActivityGrantAwardMapper wxOfflineActivityGrantAwardMapper; + @Autowired + private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; + @Autowired WxOfflineActivityMapper wxOfflineActivityMapper; @@ -68,6 +71,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired ExcelService excelService; + @Override public Map getRecordStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) { handlerRecordQuery(wxOfflineActivityRecord); @@ -487,6 +491,34 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity excelService.exportExcel(recordList, null, "用户参加活动订单列表", WxOfflineActivityGrantSettlement.class, "用户参加活动订单列表.xlsx", response, false); } + @Override + public WxOfflineActivityGrantAward grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { + Long grantId = wxOfflineActivityRecordGrantMapper.selectGrantId(wxOfflineActivityGrantAward.getTenantId(),wxOfflineActivityGrantAward.getActivityId(),wxOfflineActivityGrantAward.getRecordId()); + if(grantId == null){ + return null; + } + WxOfflineActivityGrantAward grantAward = wxOfflineActivityGrantAwardMapper.selectById(grantId,wxOfflineActivityGrantAward.getTenantId()); + //获取奖项 + List activityItemList = wxOfflineActivityItemService.getActivityItemList(grantAward.getActivityId(), grantAward.getTenantId()); + grantAward.setActivityItemList(activityItemList); + //获取实际获得奖项 + WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); + grantItemQ.updateTenantInfo(grantAward); + grantItemQ.setGrantId(grantId); + List grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); + Map> activityItemGrantMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); + for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { + List grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); + if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { + activityItem.setIsMeet(false); + continue; + } + activityItem.setIsMeet(true); + activityItem.setActivityGrantItemList(grantActivityItemList); + } + return grantAward; + } + } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 704a949e2..57a4f31c4 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -80,4 +80,8 @@ + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 4a50b47c4..6de34aea3 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -41,6 +41,48 @@ create_date,update_date + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `grant_id` = #{grantId} + + + + and `activityId` = #{activityId} + + + and `activity_item_id` = #{activityItemId} + + + and `award_itam_id` = #{awardItamId} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + insert into wx_offline_activity_grant_item (id,tenant_id,parent_tenant_id, diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml index a6ccc058c..48de481a1 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml @@ -17,7 +17,6 @@ record_id,grant_id - + select grant_id from wx_offline_activity_record_grant + where activity_id = #{activityId} and record_id = #{recordId} and tenant_id=#{tenantId} + + From cd8ffc5ceb5e41cc2394f0fe1080006f37a85507 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 13 Aug 2024 16:57:03 +0800 Subject: [PATCH 21/36] //OfflineActivity --- .../market/WxOfflineActivityRecordController.java | 9 +++++++++ .../iformall/service/WxOfflineActivityRecordService.java | 2 ++ .../service/impl/WxOfflineActivityRecordServiceImpl.java | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java index f1f62100a..7db661c8a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -56,6 +56,15 @@ public class WxOfflineActivityRecordController extends BaseController { return new ResultData(page); } + @ApiOperation("获取待审批数量") + @GetMapping("waitAudiCount") + public ResultData waitAudiCount() { + Integer waitAudiCount = wxOfflineActivityRecordService.getWaitAudiCount(getTenantInfo()); + return new ResultData(waitAudiCount); + } + + + @ApiOperation("导出") @GetMapping("/export") public void export(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, HttpServletRequest request, HttpServletResponse response) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java index 982ac649a..c50d602d0 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java @@ -31,4 +31,6 @@ public interface WxOfflineActivityRecordService { Map orderStatistics(TenantEntity tenantInfo); void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord); + + Integer getWaitAudiCount(TenantEntity tenantInfo); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index ee80c7a02..1e99684e6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -130,6 +130,7 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco wxOfflineActivityRecordMapper.insert(wxOfflineActivityRecord); } else{ + wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); wxOfflineActivityRecord.setUpdateDate(now); wxOfflineActivityRecordMapper.updateById(wxOfflineActivityRecord); } @@ -236,6 +237,14 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco handlerRecordList(record,list); excelService.exportExcel(list, null, "活动订单列表", WxOfflineActivityRecord.class, "活动订单列表.xlsx", response, false); } + + @Override + public Integer getWaitAudiCount(TenantEntity tenantInfo) { + WxOfflineActivityRecord record = new WxOfflineActivityRecord(); + record.updateTenantInfo(tenantInfo); + record.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + return wxOfflineActivityRecordMapper.getCount(record); + } } From 7de4a7a9b1a35d8a6c16881879ad556e5798b1ea Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 01:39:01 +0800 Subject: [PATCH 22/36] //OfflineActivity --- .../market/WxOfflineActivityController.java | 19 +- .../WxOfflineActivityRecordController.java | 2 - .../po/WxOfflineActivityGrantAward.java | 2 + .../WxOfflineActivityGrantAwardMapper.java | 2 + .../mapper/WxOfflineActivityRecordMapper.java | 2 + .../WxOfflineActivityGrantAwardService.java | 4 + .../service/impl/WxGameServiceImpl.java | 2 +- ...xOfflineActivityGrantAwardServiceImpl.java | 166 +++++++++++++++++- .../impl/WxOfflineActivityServiceImpl.java | 3 + .../java/com/iformall/utils/DownFileUtil.java | 14 ++ .../WxOfflineActivityGrantAwardMapper.xml | 40 +++++ .../WxOfflineActivityGrantItemMapper.xml | 2 +- .../mapper/WxOfflineActivityRecordMapper.xml | 13 ++ 13 files changed, 263 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java index a9fa6ada6..5f038950b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -10,17 +10,21 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.utils.DateUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; @@ -37,6 +41,9 @@ public class WxOfflineActivityController extends BaseController { @Autowired private WxOfflineActivityService wxOfflineActivityService; + @Autowired + private WxOfflineActivityGrantAwardService wxOfflineActivityGrantAwardService; + @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -52,7 +59,6 @@ public class WxOfflineActivityController extends BaseController { return new ResultData(page); } - @ApiOperation("新增修改接口") @PostMapping("saveOrUpdate") public ResultData saveOrUpdate(@RequestBody WxOfflineActivity wxOfflineActivity) { @@ -129,5 +135,16 @@ public class WxOfflineActivityController extends BaseController { return new ResultData(activity); } + @ApiOperation("活动奖品发放明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxOfflineActivity wxOfflineActivity, HttpServletRequest request, HttpServletResponse response) { + if(wxOfflineActivity.getId() == null){ + throw new MallinkException(Result.ERROR,"ID 为空"); + } + + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantInfo); + wxOfflineActivityGrantAwardService.activityGrantExport(request,response,wxOfflineActivity); + } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java index 7db661c8a..606ebc417 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -63,8 +63,6 @@ public class WxOfflineActivityRecordController extends BaseController { return new ResultData(waitAudiCount); } - - @ApiOperation("导出") @GetMapping("/export") public void export(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, HttpServletRequest request, HttpServletResponse response) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index e51a70fd1..465909c78 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -86,6 +86,8 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(value = "create_by") private Long createBy; @TableField(exist = false) + private List createByName; + @TableField(exist = false) private List createByIds; /** diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index 4b02d1624..1699085fa 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -19,6 +19,8 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper getRecordIdList(WxOfflineActivityGrantAward grantAwardQ); WxOfflineActivityGrantAward selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivityGrantAward grantAwardQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java index b1abb9fd2..4e972f736 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -29,6 +29,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper findGrantList(@Param("grantId")Long grantId, @Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 00999c067..246bd646c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.iformall.domain.po.WxOfflineActivity; import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxOfflineActivityRecord; @@ -7,6 +8,7 @@ import com.iformall.domain.po.base.TenantEntity; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.net.MalformedURLException; import java.util.List; import java.util.Map; @@ -30,4 +32,6 @@ public interface WxOfflineActivityGrantAwardService { void recordExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord); WxOfflineActivityGrantAward grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + + void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index 8db7cc74b..c82ab143a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -451,7 +451,7 @@ public class WxGameServiceImpl implements WxGameService { List couponIdsList = wxGame.getCouponIdsList(); int x = (int)(Math.random()*100+1); int y = 0; - if(couponIdsList != null || couponIdsList.size() > 0){ + if(couponIdsList != null && !couponIdsList.isEmpty()){ for (Object a:couponIdsList) { int weight = 0; if(a instanceof WxCouponChannelVo){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index e6222f299..9b064c531 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1,5 +1,7 @@ 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.extension.service.impl.ServiceImpl; @@ -13,6 +15,7 @@ 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.net.URL; import java.text.NumberFormat; import java.util.*; import java.util.function.Function; @@ -60,6 +65,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityItemService wxOfflineActivityItemService; + @Autowired + WxOfflineActivityService wxOfflineActivityService; + @Autowired WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; @@ -183,7 +191,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setIsMeet(true); //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 @@ -345,7 +353,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 @@ -406,7 +414,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); } - } if(i == 0){ throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); @@ -519,6 +526,159 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return grantAward; } + @Override + public void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity) { + WxOfflineActivity activity = wxOfflineActivityService.getInfoById(wxOfflineActivity.getId(), wxOfflineActivity.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR, "未查询到活动"); + } + List headList = getActivityGrantExportHead(activity); + + List> activityGrantObjectList = new ArrayList<>(); + + WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); + grantAwardQ.updateTenantInfo(wxOfflineActivity); + grantAwardQ.setActivityId(wxOfflineActivity.getId()); + List grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); + if(grantAwardList != null){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(wxOfflineActivity); + Map merchantMap = wxMerchantService.getIdAndNamesMap(merchantQ); + + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(wxOfflineActivity); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + // + WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); + grantItemQ.updateTenantInfo(wxOfflineActivity); + grantItemQ.setActivityId(wxOfflineActivity.getId()); + List grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); + Map> grantItemMap = grantItem.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getGrantId)); + for (WxOfflineActivityGrantAward grantAward : grantAwardList) { + List recordList = wxOfflineActivityRecordMapper.findGrantList(grantAward.getId(),grantAward.getTenantId()); + List grantItemList = grantItemMap.get(grantAward.getId()); + Map activityGrantObject = new HashMap<>(); + activityGrantObject.put("activityName",activity.getName()); + List merchantOrder = new ArrayList<>(); + for (WxOfflineActivityRecord record : recordList) { + merchantOrder.add(record.getOrderNo()+"["+merchantMap.get(record.getMerchantId())+"]"); + } + activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(Collectors.joining(";"))); + activityGrantObject.put("orderMoneySum",grantAward.getOrderMoneySum()); + activityGrantObject.put("cusName",grantAward.getCusName()); + activityGrantObject.put("cusPhone",grantAward.getCusPhone()); + activityGrantObject.put("realName",grantAward.getRealName()); + activityGrantObject.put("realCard",grantAward.getRealCard()); + activityGrantObject.put("createByName",grantAward.getCreateBy()!=null?userMap.get(grantAward.getCreateBy()).getName():""); + activityGrantObject.put("createDate",DateUtils.date2String(grantAward.getCreateDate())); + Map> granActivityItemMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); + for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { + List granActivityItemList = granActivityItemMap.get(activityItem.getId()); + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + Map granAwardItamMap = new HashMap<>(); + if(granActivityItemList != null && !granActivityItemList.isEmpty()){ + granAwardItamMap = granActivityItemList.stream().collect(Collectors.toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); + } + for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { + WxOfflineActivityGrantItem grantAwardsItem = granAwardItamMap.get(awardsItem.getId()); + if(grantAwardsItem != null){ + activityGrantObject.put(String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),grantAwardsItem.getAwardCount()); + } else { + activityGrantObject.put(String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),0); + } + } + }else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + if(granActivityItemList != null && !granActivityItemList.isEmpty()){ + activityGrantObject.put(String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardName()); + } + }else if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())){ + if(granActivityItemList != null && !granActivityItemList.isEmpty()){ + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio()); + activityGrantObject.put("p"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardPrice()); + }else{ + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),0); + activityGrantObject.put("p"+String.valueOf(activityItem.getId()),0); + } + } + } + activityGrantObject.put("lotteryNum",grantAward.getLotteryNum()); + activityGrantObject.put("lotteryCount",grantAward.getLotteryCount()); + activityGrantObject.put("anniversaryLotteryNum",grantAward.getAnniversaryLotteryNum()); +// if(StringUtils.isNotBlank(grantAward.getSignImg())){ +// try{ +// activityGrantObject.put("signImg",DownFileUtil.url2byte(grantAward.getSignImg())); +// }catch (Exception e){} +// } + activityGrantObjectList.add(activityGrantObject); + } + } + + excelService.exportExcel(headList, activityGrantObjectList, null, "活动奖品发放明细", "活动奖品发放明细.xlsx",true, response); + } + + private List getActivityGrantExportHead(WxOfflineActivity activity){ + List headList = new ArrayList<>(); + ExcelExportEntity entity1 = new ExcelExportEntity("活动名称","activityName",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("订单[门店]","merchantOrder",20); + headList.add(entity2); + ExcelExportEntity entity3 = new ExcelExportEntity("订单总金额","orderMoneySum",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("客户姓名","cusName",20); + headList.add(entity4); + ExcelExportEntity entity5 = new ExcelExportEntity("客户电话","cusPhone",20); + headList.add(entity5); + ExcelExportEntity entity6 = new ExcelExportEntity("实际领奖人","realName",20); + headList.add(entity6); + ExcelExportEntity entity7 = new ExcelExportEntity("实际领奖人身份证号","realCard",20); + headList.add(entity7); + ExcelExportEntity entity8 = new ExcelExportEntity("发奖人","createByName",20); + headList.add(entity8); + ExcelExportEntity entity9 = new ExcelExportEntity("发奖时间","createDate",20); + headList.add(entity9); + + for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { + //抽奖活动 + //【活动项名称】【奖项名称】数量 + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { + ExcelExportEntity entity10 = new ExcelExportEntity("【"+activityItem.getName()+"】【"+awardsItem.getName()+"】数量", + String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),20); + headList.add(entity10); + } + } + //满额赠礼活动 + //【活动项名称】奖项 + else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { + ExcelExportEntity entity11 = new ExcelExportEntity("【"+activityItem.getName()+"】奖项", + String.valueOf(activityItem.getId()),20); + headList.add(entity11); + } + //返现活动 + //【活动项名称】返现比例 + //【活动项名称】返现金额 + else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + ExcelExportEntity entity12 = new ExcelExportEntity("【"+activityItem.getName()+"】返现比例", + "r"+String.valueOf(activityItem.getId()),20); + headList.add(entity12); + ExcelExportEntity entity13 = new ExcelExportEntity("【"+activityItem.getName()+"】返现金额", + "p"+String.valueOf(activityItem.getId()),20); + headList.add(entity13); + } + } + ExcelExportEntity entity14 = new ExcelExportEntity("抽奖券编码","lotteryNum",20); + headList.add(entity14); + ExcelExportEntity entity15 = new ExcelExportEntity("抽奖券数量","lotteryCount",20); + headList.add(entity15); + ExcelExportEntity entity16 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); + headList.add(entity16); + ExcelExportEntity entity17 = new ExcelExportEntity("签名图片","signImg",20); +// entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); + headList.add(entity17); + + return headList; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index 1c8dbfdf6..9813fa9b7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -146,6 +146,9 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ @Override public WxOfflineActivity getInfoById(Long id, String tenantId) { WxOfflineActivity wxOfflineActivity = wxOfflineActivityMapper.selectById(id, tenantId); + if (wxOfflineActivity == null) { + return null; + } List activityItemList = wxOfflineActivityItemService.getActivityItemList(wxOfflineActivity.getId(),tenantId); wxOfflineActivity.setActivityItemList(activityItemList); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ diff --git a/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java b/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java index 362b72ed6..8aa397097 100644 --- a/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java @@ -82,4 +82,18 @@ public class DownFileUtil { return bos.toByteArray(); } + public static byte[] url2byte(String urlStr) throws IOException { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + //设置超时间为3秒 + conn.setConnectTimeout(3 * 1000); + //防止屏蔽程序抓取而返回403错误 + conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); + + //得到输入流 + InputStream inputStream = conn.getInputStream(); + //获取自己数组 + return readInputStream(inputStream); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 57a4f31c4..10b6f60ba 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -33,6 +33,46 @@ lottery_count,anniversary_lottery_num + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `activity_id` = #{activityId} + + + + and `cus_name` like concat('%', #{cusName},'%') + + + + and `cus_phone` = #{cusPhone} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + select r.id,r.tenant_id,r.parent_tenant_id, + r.order_no,r.order_money,r.cus_name, + r.real_cus_name,r.cus_phone,r.cus_address, + r.cus_card,r.lottery_num,r.lottery_count, + r.anniversary_lottery_num,r.create_by,r.merchant_id,r.business_id, + r.create_date,r.update_date,r.audit_remark, + r.audit_status,r.audit_by,audit_time + from wx_offline_activity_record_grant rg + left join wx_offline_activity_record r on rg.record_id = r.id + where rg.grant_id = #{grantId} and rg.tenant_id=#{tenantId} + + From c7d47b7126b869dee418cd5b43c1cbd41a1d33bf Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 03:08:02 +0800 Subject: [PATCH 23/36] //OfflineActivity --- .../iformall/domain/po/WxOfflineActivity.java | 6 ++- .../po/WxOfflineActivityAwardsItem.java | 6 +-- .../po/WxOfflineActivityGrantAward.java | 3 +- .../domain/po/WxOfflineActivityGrantItem.java | 6 +-- .../po/WxOfflineActivityGrantSettlement.java | 37 +++++-------------- .../domain/po/WxOfflineActivityItem.java | 6 ++- .../domain/po/WxOfflineActivityRecord.java | 9 +---- .../vo/OfflineActivityRecordStatistics.java | 3 +- .../domain/vo/OfflineActivitySettlement.java | 9 +++-- .../OfflineActivitySettlementStatistics.java | 7 ++-- ...xOfflineActivityAwardsItemServiceImpl.java | 10 ++--- ...xOfflineActivityGrantAwardServiceImpl.java | 35 +++++++++--------- ...WxOfflineActivityGrantItemServiceImpl.java | 12 +++--- ...ineActivityGrantSettlementServiceImpl.java | 34 +++++++++++------ .../WxOfflineActivityItemServiceImpl.java | 7 ++-- .../WxOfflineActivityAwardsItemMapper.xml | 6 +-- .../WxOfflineActivityGrantAwardMapper.xml | 2 +- .../WxOfflineActivityGrantItemMapper.xml | 10 ++--- ...WxOfflineActivityGrantSettlementMapper.xml | 16 ++++---- .../mapper/WxOfflineActivityItemMapper.xml | 4 +- .../mapper/WxOfflineActivityRecordMapper.xml | 2 +- 21 files changed, 114 insertions(+), 116 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java index af96ea769..0f962cf43 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java @@ -3,6 +3,8 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -128,10 +130,10 @@ public class WxOfflineActivity extends TenantEntity { * 发放总额 */ @TableField(exist = false) - private Integer grantPrice; + private BigDecimal grantPrice; /** * 商户结算总额 */ @TableField(exist = false) - private Integer merchantSettlmentPrice; + private BigDecimal merchantSettlmentPrice; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index 8807d8fbf..f2511929b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -48,13 +48,13 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { * 限制最小金额 */ @TableField(value = "min_amount") - private Integer minAmount; + private BigDecimal minAmount; /** * 限制最大金额 */ @TableField(value = "max_amount") - private Integer maxAmount; + private BigDecimal maxAmount; /** * 返现比例(与奖项价值2选1) @@ -66,7 +66,7 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { * 奖项价值 */ @TableField(value = "price") - private Integer price; + private BigDecimal price; /** * 分担规则(0-商管 1-商户 2-分担) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index 465909c78..967af5db7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -42,7 +43,7 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ * 订单总金额 */ @TableField(value = "order_money_sum") - private Integer orderMoneySum; + private BigDecimal orderMoneySum; /** * 订单数量 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index a227f1703..3b5f84b3d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -86,13 +86,13 @@ public class WxOfflineActivityGrantItem extends TenantEntity { * 奖项限制最小金额 */ @TableField(value = "award_min_amount") - private Integer awardMinAmount; + private BigDecimal awardMinAmount; /** * 奖项限制最大金额 */ @TableField(value = "award_max_amount") - private Integer awardMaxAmount; + private BigDecimal awardMaxAmount; /** * 奖项计算规则 @@ -110,7 +110,7 @@ public class WxOfflineActivityGrantItem extends TenantEntity { * 奖项价值 */ @TableField(value = "award_price") - private Integer awardPrice; + private BigDecimal awardPrice; /** * 奖项数量 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index fd2b8f1be..71430bf2a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -47,14 +47,9 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 订单金额 */ - @TableField(value = "order_money") - private Integer orderMoney; @Excel(name = "订单金额(元)", width = 20, orderNum = "3") - @TableField(exist = false) - private String orderMoneyStr; - public String getOrderMoneyStr() { - return orderMoney != null ? new BigDecimal(orderMoney).divide(new BigDecimal(100)).toPlainString(): orderMoneyStr; - } + @TableField(value = "order_money") + private BigDecimal orderMoney; /** * 商户id @@ -94,7 +89,7 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { * 发放总价值 */ @TableField(value = "grant_price") - private Integer grantPrice; + private BigDecimal grantPrice; /** * 商管承担z占比 @@ -117,36 +112,23 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 实际发放总价值 */ - @TableField(value = "real_grant_price") - private Integer realGrantPrice; - @TableField(exist = false) @Excel(name = "发放价值(元)", width = 20, orderNum = "4") - private String realGrantPriceStr; - public String getRealGrantPriceStr() { - return realGrantPrice != null ? new BigDecimal(realGrantPrice).divide(new BigDecimal(100)).toPlainString(): realGrantPriceStr; - } + @TableField(value = "real_grant_price") + private BigDecimal realGrantPrice; /** * 实际商管承担总金额 */ - @TableField(value = "real_mall_share_price") - private Integer realMallSharePrice; @Excel(name = "商管承担金额(元)", width = 20, orderNum = "5") - private String realMallSharePriceStr; - public String getRealMallSharePriceStr() { - return realMallSharePrice != null ? new BigDecimal(realMallSharePrice).divide(new BigDecimal(100)).toPlainString(): realMallSharePriceStr; - } + @TableField(value = "real_mall_share_price") + private BigDecimal realMallSharePrice; /** * 实际商户承担总金额 */ - @TableField(value = "real_merchant_share_price") - private Integer realMerchantSharePrice; @Excel(name = "商户承担金额(元)", width = 20, orderNum = "6") - private String realMerchantSharePriceStr; - public String getRealMerchantSharePriceStr() { - return realMerchantSharePrice != null ? new BigDecimal(realMerchantSharePrice).divide(new BigDecimal(100)).toPlainString(): realMerchantSharePriceStr; - } + @TableField(value = "real_merchant_share_price") + private BigDecimal realMerchantSharePrice; /** * 创建时间 @@ -165,4 +147,5 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index edfc671be..16c1978d2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -3,6 +3,8 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -48,13 +50,13 @@ public class WxOfflineActivityItem extends TenantEntity { * 参与金额 */ @TableField(value = "limit_money") - private Integer limitMoney; + private BigDecimal limitMoney; /** * 奖项价值(用来计算奖券数量) */ @TableField(value = "awards_item_price") - private Integer awardsItemPrice; + private BigDecimal awardsItemPrice; /** * 奖项数量限制(为0时无限制) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index f5c708989..a782fd0a0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -43,14 +43,9 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 订单金额 */ - @TableField(value = "order_money") - private Integer orderMoney; @Excel(name = "订单金额(元)", width = 20, orderNum = "7") - @TableField(exist = false) - private String orderMoneyStr; - public String getOrderMoneyStr() { - return orderMoney != null ? new BigDecimal(orderMoney).divide(new BigDecimal(100)).toPlainString(): orderMoneyStr; - } + @TableField(value = "order_money") + private BigDecimal orderMoney; /** * 客户姓名 diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java index 8c8c69376..5f1c313a9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java @@ -3,6 +3,7 @@ package com.iformall.domain.vo; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; @Data public class OfflineActivityRecordStatistics implements Serializable { @@ -11,5 +12,5 @@ public class OfflineActivityRecordStatistics implements Serializable { private Integer auditStatus; private Integer count; - private Integer sumMoney; + private BigDecimal sumMoney; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java index e6d3dae17..7f6f80cdc 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java @@ -4,6 +4,7 @@ import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.util.List; @Data @@ -14,8 +15,8 @@ public class OfflineActivitySettlement extends TenantEntity { private String merchantName; private Integer recordCount; - private Integer sumOrderMoney; - private Integer sumGrantPrice; - private Integer sumMallPrice; - private Integer sumMerchantPrice; + private BigDecimal sumOrderMoney; + private BigDecimal sumGrantPrice; + private BigDecimal sumMallPrice; + private BigDecimal sumMerchantPrice; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java index 7ed851435..8f892a920 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java @@ -3,15 +3,16 @@ package com.iformall.domain.vo; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; @Data public class OfflineActivitySettlementStatistics implements Serializable { private static final long serialVersionUID = 1L; - private Integer sumGrantPrice; + private BigDecimal sumGrantPrice; private Integer recordCount; private Integer merchantCount; - private Integer sumMallPrice; - private Integer sumMerchantPrice; + private BigDecimal sumMallPrice; + private BigDecimal sumMerchantPrice; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index b228e181d..66e7b9597 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -42,17 +42,17 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ awaItem.setCashBackRatio(BigDecimal.ZERO); awaItem.setGrade(-1); - awaItem.setMinAmount(0); - awaItem.setMaxAmount(-1); + awaItem.setMinAmount(null); + awaItem.setMaxAmount(null); } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { awaItem.setCashBackRatio(BigDecimal.ZERO); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { awaItem.setGrade(-1); - awaItem.setMinAmount(0); - awaItem.setMaxAmount(-1); - awaItem.setPrice(0); + awaItem.setMinAmount(null); + awaItem.setMaxAmount(null); + awaItem.setPrice(BigDecimal.ZERO); } if(awaItem.getCreateDate() == null){ awaItem.setCreateDate(activityItem.getUpdateDate()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 9b064c531..f893048b2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -85,7 +85,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerRecordQuery(wxOfflineActivityRecord); WxOfflineActivityRecord limitOne = wxOfflineActivityRecordMapper.selectLimitOne(wxOfflineActivityRecord); Map result = new HashMap<>(); - Integer audting = 0, audi_success = 0, audt_fail = 0,sum_success = 0, sum_fail = 0; + Integer audting = 0, audi_success = 0, audt_fail = 0; + BigDecimal sum_success = BigDecimal.ZERO, sum_fail = BigDecimal.ZERO; if (limitOne == null) { result.put("cus_name","查无此人"); result.put("cus_phone",wxOfflineActivityRecord.getCusPhone()); @@ -184,15 +185,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){ + if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ activityItem.setIsMeet(false); continue; } activityItem.setIsMeet(true); //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ - limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + 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){ @@ -201,11 +202,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setRealAwardsItemLimit(limitCount); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ - List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparingInt(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ - if(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMinAmount() - && wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMaxAmount()){ + if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ grantAwardsItem = awardsItem; } } @@ -281,7 +282,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人"); } - Integer orderMoneySum = 0; + BigDecimal orderMoneySum = BigDecimal.ZERO; List lotteryNumList = new ArrayList<>(); List anniversaryLotteryNumList = new ArrayList<>(); for (WxOfflineActivityRecord record : wxOfflineActivityRecords) { @@ -295,7 +296,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查订单是否已参与活动"); } - orderMoneySum += record.getOrderMoney(); + orderMoneySum = orderMoneySum.add(record.getOrderMoney()); if(record.getLotteryNumList() != null && !record.getLotteryNumList().isEmpty()){ lotteryNumList.addAll(record.getLotteryNumList()); } @@ -348,13 +349,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){ + if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); } //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ - limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + 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){ @@ -390,8 +391,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(awardsItem == null){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); } - if(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMaxAmount() - || wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMinAmount()){ + 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()+"奖项参数(金额不在范围类)"); } @@ -434,7 +435,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantGrantItem.setAwardMaxAmount(awardsItem.getMaxAmount()); grantGrantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); grantGrantItem.setCashBackRatio(awardsItem.getCashBackRatio()); - grantGrantItem.setAwardPrice(awardsItem.getPrice()*grantGrantItem.getAwardCount()); + grantGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(grantGrantItem.getAwardCount())).setScale(2, BigDecimal.ROUND_HALF_UP)); grantGrantItem.setMoneyRule(awardsItem.getMoneyRule()); grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); @@ -593,10 +594,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } }else if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())){ if(granActivityItemList != null && !granActivityItemList.isEmpty()){ - activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio()); + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio().toString()+"%"); activityGrantObject.put("p"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardPrice()); }else{ - activityGrantObject.put("r"+String.valueOf(activityItem.getId()),0); + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),"%"); activityGrantObject.put("p"+String.valueOf(activityItem.getId()),0); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 7b889b2dc..a114806a2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -45,16 +45,16 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG grantGrantItem.setCreateDate(now); grantGrantItem.setUpdateDate(now); if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ - BigDecimal awardPrice = new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum()) + BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ - grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { - int awardPriceYuan = awardPrice.divide(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); - grantGrantItem.setAwardPrice(awardPriceYuan*100); + BigDecimal awardPriceYuan = awardPrice.divide(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP); + grantGrantItem.setAwardPrice(awardPriceYuan.multiply(new BigDecimal(100))); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ - int awardPriceTen = awardPrice.divide(new BigDecimal(1000)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); - grantGrantItem.setAwardPrice(awardPriceTen*1000); + BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(1000)).setScale(0, BigDecimal.ROUND_HALF_UP); + grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(1000))); } } rantItemList.add(grantGrantItem); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 1af3ff51a..1bf5835e4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -56,13 +56,13 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct final IdWorker idWorker = IdWorker.get(); Date now = new Date(); //获取订单占比(占比最少的订单用减法,尽量减少误差) - List recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); + List 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 0){ + BigDecimal count = yes.subtract(yesYes); + percentage = count.divide(yesYes,2,BigDecimal.ROUND_HALF_UP).toString(); + } + return percentage; + } + private String getPercentage(Integer yes, Integer yesYes){ NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java index 745c37d9e..574f51ed8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -12,6 +12,7 @@ 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; @@ -49,12 +50,12 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe activityItem.setAwardsItemRule(EnumOfflineActivityAwardsRule.DEF.getCode()); } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { - activityItem.setLimitMoney(0); - activityItem.setAwardsItemPrice(0); + activityItem.setLimitMoney(BigDecimal.ZERO); + activityItem.setAwardsItemPrice(BigDecimal.ZERO); activityItem.setAwardsItemRule(EnumOfflineActivityAwardsRule.DEF.getCode()); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { - activityItem.setAwardsItemPrice(0); + activityItem.setAwardsItemPrice(BigDecimal.ZERO); activityItem.setAwardsItemCount(0); } if(activityItem.getCreateDate() == null){ diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index ec009646b..89779a391 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -11,10 +11,10 @@ - - + + - + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 10b6f60ba..9298cb5a6 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -9,7 +9,7 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 093a95723..c8bf083d2 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -17,11 +17,11 @@ - - + + - + @@ -99,8 +99,8 @@ #{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.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, - #{item.awardMinAmount,jdbcType=INTEGER},#{item.awardMaxAmount,jdbcType=INTEGER},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, - #{item.awardPrice,jdbcType=INTEGER},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, + #{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, + #{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 521b81499..5ad579722 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -10,19 +10,19 @@ - + - + - - - + + + @@ -113,11 +113,11 @@ values (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, - #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, + #{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=INTEGER}, + #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL}, #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, - #{item.realGrantPrice,jdbcType=INTEGER},#{item.realMallSharePrice,jdbcType=INTEGER},#{item.realMerchantSharePrice,jdbcType=INTEGER}, + #{item.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index 68f37591e..24d7fae53 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -11,8 +11,8 @@ - - + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml index e236c38ff..cc83f9efa 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -9,7 +9,7 @@ - + From ff511676851316a4dfeecf37714f108e81b02e44 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 13:30:02 +0800 Subject: [PATCH 24/36] //OfflineActivity --- .../WxOfflineActivityGrantController.java | 6 ++-- ...xOfflineActivityGrantAwardServiceImpl.java | 29 +++++++++++++------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index a256a0134..7d75661c8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -112,9 +112,9 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ return new ResultData(Result.ERROR,"请选择订单"); } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){ - return new ResultData(Result.ERROR,"签名为空"); - } +// if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){ +// return new ResultData(Result.ERROR,"签名为空"); +// } TenantEntity tenantEntity = getTenantInfo(); wxOfflineActivityGrantAward.updateTenantInfo(tenantEntity); wxOfflineActivityGrantAward.setCreateBy(getUserId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index f893048b2..524c4ab10 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -30,6 +30,8 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import static java.util.stream.Collectors.*; + /** * @author xiaohu * @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 @@ -199,10 +201,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity && activityItem.getAwardsItemLimit() < limitCount){ limitCount = activityItem.getAwardsItemLimit(); } + if(limitCount == 0){ + activityItem.setIsMeet(false); + } activityItem.setRealAwardsItemLimit(limitCount); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ - List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) @@ -321,7 +326,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); - Map activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity())); + Map activityItemMap = activityItemList.stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); int i = 0;//检查活动奖项 for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { @@ -337,8 +342,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity continue; // throw new MallinkException(Result.ERROR, "请检查活动奖项参数"); } + boolean isRepeat = activityGrantItemList.stream() + .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) + .entrySet().stream().anyMatch(e -> e.getValue() > 1); + if(isRepeat){ + throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); + } - Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(Collectors.toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { i++; @@ -361,7 +372,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity && activityItem.getAwardsItemLimit() < limitCount){ limitCount = activityItem.getAwardsItemLimit(); } - if(limitCount != 0 && activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ + if(activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"奖券超过限制"); } @@ -514,7 +525,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantItemQ.updateTenantInfo(grantAward); grantItemQ.setGrantId(grantId); List grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); - Map> activityItemGrantMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); + Map> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { List grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { @@ -554,7 +565,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantItemQ.updateTenantInfo(wxOfflineActivity); grantItemQ.setActivityId(wxOfflineActivity.getId()); List grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); - Map> grantItemMap = grantItem.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getGrantId)); + Map> grantItemMap = grantItem.stream().collect(groupingBy(WxOfflineActivityGrantItem::getGrantId)); for (WxOfflineActivityGrantAward grantAward : grantAwardList) { List recordList = wxOfflineActivityRecordMapper.findGrantList(grantAward.getId(),grantAward.getTenantId()); List grantItemList = grantItemMap.get(grantAward.getId()); @@ -564,7 +575,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity for (WxOfflineActivityRecord record : recordList) { merchantOrder.add(record.getOrderNo()+"["+merchantMap.get(record.getMerchantId())+"]"); } - activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(Collectors.joining(";"))); + activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(joining(";"))); activityGrantObject.put("orderMoneySum",grantAward.getOrderMoneySum()); activityGrantObject.put("cusName",grantAward.getCusName()); activityGrantObject.put("cusPhone",grantAward.getCusPhone()); @@ -572,13 +583,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantObject.put("realCard",grantAward.getRealCard()); activityGrantObject.put("createByName",grantAward.getCreateBy()!=null?userMap.get(grantAward.getCreateBy()).getName():""); activityGrantObject.put("createDate",DateUtils.date2String(grantAward.getCreateDate())); - Map> granActivityItemMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); + Map> granActivityItemMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { List granActivityItemList = granActivityItemMap.get(activityItem.getId()); if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ Map granAwardItamMap = new HashMap<>(); if(granActivityItemList != null && !granActivityItemList.isEmpty()){ - granAwardItamMap = granActivityItemList.stream().collect(Collectors.toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); + granAwardItamMap = granActivityItemList.stream().collect(toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); } for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { WxOfflineActivityGrantItem grantAwardsItem = granAwardItamMap.get(awardsItem.getId()); From 0180eb9b18bf46a638422dbc211c9fd1745407b6 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 13:42:36 +0800 Subject: [PATCH 25/36] //insertList --- .../resources/mapper/WxOfflineActivityGrantItemMapper.xml | 4 ++-- .../mapper/WxOfflineActivityGrantSettlementMapper.xml | 4 ++-- .../resources/mapper/WxOfflineActivityRecordGrantMapper.xml | 6 ++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index c8bf083d2..e1d55ecc4 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -85,7 +85,7 @@ insert into wx_offline_activity_grant_item - (id,tenant_id,parent_tenant_id, + (id, grant_id,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, award_itam_id,award_name,award_grade, @@ -95,7 +95,7 @@ create_date,update_date) values - (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, + (#{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.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 5ad579722..ca0775a34 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -103,7 +103,7 @@ insert into wx_offline_activity_grant_settlement - (id,tenant_id,parent_tenant_id, + (id, record_id,order_no,order_money, merchant_id,activity_id,activity_item_id, award_itam_id,grant_id,grant_price, @@ -112,7 +112,7 @@ create_date,update_date) values - (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, + (#{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}, diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml index 48de481a1..20a3c9a5c 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml @@ -24,12 +24,10 @@ insert into wx_offline_activity_record_grant - (`tenant_id`,`parent_tenant_id`,`activity_id`,`record_id`,`grant_id`) + (`activity_id`,`record_id`,`grant_id`) values - (#{item.tenantId,jdbcType=VARCHAR}, - #{item.parentTenantId,jdbcType=VARCHAR}, - #{item.activityId,jdbcType=BIGINT}, + (#{item.activityId,jdbcType=BIGINT}, #{item.recordId,jdbcType=BIGINT}, #{item.grantId,jdbcType=BIGINT}) From 7e6867761c0454bc65baa0a79d13956e02d49b79 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 16:42:25 +0800 Subject: [PATCH 26/36] //OfflineActivity --- ...WxOfflineActivityGrantAwardServiceImpl.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 524c4ab10..0c5fbbc68 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -324,6 +324,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ + if(wxOfflineActivityGrantAward.getActivityItemList() == null){ + throw new MallinkException(Result.ERROR, "请检查活动项参数"); + } List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); Map activityItemMap = activityItemList.stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); @@ -402,10 +405,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(awardsItem == null){ 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)){ + 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()+"奖项参数(金额不在范围类)"); +// } handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); @@ -621,6 +627,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity // activityGrantObject.put("signImg",DownFileUtil.url2byte(grantAward.getSignImg())); // }catch (Exception e){} // } + activityGrantObject.put("signImg",grantAward.getSignImg()); activityGrantObjectList.add(activityGrantObject); } } @@ -632,7 +639,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List headList = new ArrayList<>(); ExcelExportEntity entity1 = new ExcelExportEntity("活动名称","activityName",20); headList.add(entity1); - ExcelExportEntity entity2 = new ExcelExportEntity("订单[门店]","merchantOrder",20); + ExcelExportEntity entity2 = new ExcelExportEntity("订单[门店]","merchantOrder",30); headList.add(entity2); ExcelExportEntity entity3 = new ExcelExportEntity("订单总金额","orderMoneySum",20); headList.add(entity3); @@ -685,7 +692,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity ExcelExportEntity entity16 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); headList.add(entity16); ExcelExportEntity entity17 = new ExcelExportEntity("签名图片","signImg",20); -// entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); + entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); + entity17.setExportImageType(1); + entity17.setHeight(20); + headList.add(entity17); return headList; From 84c70e9942b224668964dfa17ec2c7ce1b930b5f Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 17:17:48 +0800 Subject: [PATCH 27/36] //OfflineActivity --- .../impl/WxOfflineActivityGrantSettlementServiceImpl.java | 5 ++--- .../service/impl/WxOfflineActivityRecordServiceImpl.java | 1 + .../resources/mapper/WxOfflineActivityGrantAwardMapper.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 1bf5835e4..1896b5034 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -62,9 +62,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct for(int i=0; i SELECT DISTINCT rg.record_id - FROM wx_offline_activity_grant_award ga - left join wx_offline_activity_record_grant rg + from wx_offline_activity_record_grant rg + left join wx_offline_activity_grant_award ga on ga.id = rg.grant_id where 1 = 1 and ga.`tenant_id` = #{tenantId} From 507972e26991f1096037080c67c22eea0c394798 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 17:29:59 +0800 Subject: [PATCH 28/36] //OfflineActivity --- .../impl/WxOfflineActivityGrantItemServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index a114806a2..305101b0f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -48,13 +48,13 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ - grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); + grantGrantItem.setAwardPrice(awardPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { - BigDecimal awardPriceYuan = awardPrice.divide(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP); + BigDecimal awardPriceYuan = awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP); grantGrantItem.setAwardPrice(awardPriceYuan.multiply(new BigDecimal(100))); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ - BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(1000)).setScale(0, BigDecimal.ROUND_HALF_UP); - grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(1000))); + BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(10)).setScale(0, BigDecimal.ROUND_HALF_UP); + grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); } } rantItemList.add(grantGrantItem); From b959970dc6634a9d95130d1653c6c2906e01b75f Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 17:58:17 +0800 Subject: [PATCH 29/36] //OfflineActivity --- .../impl/WxOfflineActivityGrantSettlementServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 1896b5034..ec619c647 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -290,7 +290,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct result.put("merchantName",merchant.getName()); } List activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(grantSettlement); - if (activitySettlementList != null && !activitySettlementList.isEmpty()) { + if (activitySettlementList == null || activitySettlementList.isEmpty()) { result.put("recordCount",0); result.put("sumOrderMoney",0); result.put("sumGrantPrice",0); From 1c9fdde2f464e02ee14beb12fdb0b5a9f2870b6c Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 22:12:48 +0800 Subject: [PATCH 30/36] //OfflineActivity --- .../WxOfflineActivitySettlementController.java | 4 ++-- .../iformall/domain/po/WxOfflineActivityRecord.java | 3 +++ .../domain/vo/OfflineActivitySettlement.java | 9 +++++++++ .../WxOfflineActivityGrantSettlementMapper.java | 2 +- .../WxOfflineActivityGrantSettlementService.java | 4 ++-- .../impl/WxOfflineActivityGrantAwardServiceImpl.java | 2 +- .../WxOfflineActivityGrantSettlementServiceImpl.java | 12 ++++++------ .../impl/WxOfflineActivityRecordServiceImpl.java | 7 +++++++ .../WxOfflineActivityGrantSettlementMapper.xml | 10 +--------- 9 files changed, 32 insertions(+), 21 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java index 354eddbbe..e299767f3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -85,7 +85,7 @@ public class WxOfflineActivitySettlementController extends BaseController { @ApiOperation("单个活动结算列表") @GetMapping("activitySettlement") @ApiImplicitParams({}) - public ResultData activitySettlement(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { + public ResultData activitySettlement(@ModelAttribute OfflineActivitySettlement grantSettlement) { if(grantSettlement.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); @@ -101,7 +101,7 @@ public class WxOfflineActivitySettlementController extends BaseController { @ApiOperation("单个活动单个门店结算汇总") @GetMapping("merchantSettlementStatistics") @ApiImplicitParams({}) - public ResultData merchantSettlementStatistics(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { + public ResultData merchantSettlementStatistics(@ModelAttribute OfflineActivitySettlement grantSettlement) { if(grantSettlement.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index a782fd0a0..b53e6fbc8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -153,6 +153,7 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 审批意见 */ + @Excel(name = "审核意见", width = 20, orderNum = "9") @TableField(value = "audit_remark") private String auditRemark; @@ -169,12 +170,14 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(value = "audit_by") private Long auditBy; + @Excel(name = "审核人", width = 20, orderNum = "11") @TableField(exist = false) private String auditByName; /** * 审核时间 */ + @Excel(name = "审核意见", width = 20, format = "yyyy-MM-dd HH:mm:ss", orderNum = "10") @TableField(value = "audit_time") private Date auditTime; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java index 7f6f80cdc..c1cd8cd96 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java @@ -1,5 +1,6 @@ package com.iformall.domain.vo; +import com.iformall.common.SortColumn; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; @@ -10,13 +11,21 @@ import java.util.List; @Data public class OfflineActivitySettlement extends TenantEntity { + private Long id; + private List merchantIdList; + private Long activityId; private Long merchantId; private String merchantName; + @SortColumn(column = "recordCount") private Integer recordCount; + @SortColumn(column = "sumOrderMoney") private BigDecimal sumOrderMoney; + @SortColumn(column = "sumGrantPrice") private BigDecimal sumGrantPrice; + @SortColumn(column = "sumMallPrice") private BigDecimal sumMallPrice; + @SortColumn(column = "sumMerchantPrice") private BigDecimal sumMerchantPrice; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index 607084668..659345249 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -21,7 +21,7 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper getActivitySettlement(WxOfflineActivityGrantSettlement settlement); + List getActivitySettlement(OfflineActivitySettlement settlement); List findList(WxOfflineActivityGrantSettlement settlement); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 3fb8993ad..dbea00751 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -26,9 +26,9 @@ public interface WxOfflineActivityGrantSettlementService { PageInfo activityListAsPage(WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize); - List getActivitySettlement(WxOfflineActivityGrantSettlement grantSettlement); + List getActivitySettlement(OfflineActivitySettlement grantSettlement); - Map merchantSettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement); + Map merchantSettlementStatistics(OfflineActivitySettlement grantSettlement); List findList(WxOfflineActivityGrantSettlement grantSettlement); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 0c5fbbc68..7befddf3f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -513,7 +513,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerRecordQuery(wxOfflineActivityRecord); List recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); handlerRecordList(wxOfflineActivityRecord,recordList); - excelService.exportExcel(recordList, null, "用户参加活动订单列表", WxOfflineActivityGrantSettlement.class, "用户参加活动订单列表.xlsx", response, false); + excelService.exportExcel(recordList, null, "用户参加活动订单列表", WxOfflineActivityRecord.class, "用户参加活动订单列表.xlsx", response, false); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index ec619c647..9671d8546 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -245,7 +245,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct } @Override - public List getActivitySettlement(WxOfflineActivityGrantSettlement record) { + public List getActivitySettlement(OfflineActivitySettlement record) { if (StringUtils.isNotBlank(record.getMerchantName())) { WxMerchant merchant = new WxMerchant(); @@ -275,7 +275,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct } @Override - public Map merchantSettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement) { + public Map merchantSettlementStatistics(OfflineActivitySettlement grantSettlement) { Map result = new HashMap<>(); WxOfflineActivity activity = wxOfflineActivityMapper.selectById(grantSettlement.getActivityId(),grantSettlement.getTenantId()); if(activity == null){ @@ -300,10 +300,10 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct }else{ OfflineActivitySettlement offlineActivitySettlement = activitySettlementList.get(0); result.put("recordCount",offlineActivitySettlement.getRecordCount()); - result.put("sumOrderMoney",offlineActivitySettlement.getRecordCount()); - result.put("sumGrantPrice",offlineActivitySettlement.getRecordCount()); - result.put("sumMallPrice",offlineActivitySettlement.getRecordCount()); - result.put("sumMerchantPrice",offlineActivitySettlement.getRecordCount()); + result.put("sumOrderMoney",offlineActivitySettlement.getSumOrderMoney()); + result.put("sumGrantPrice",offlineActivitySettlement.getSumGrantPrice()); + result.put("sumMallPrice",offlineActivitySettlement.getSumMallPrice()); + result.put("sumMerchantPrice",offlineActivitySettlement.getSumMerchantPrice()); } return result; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index 8c8c70f1e..c6ca2ad68 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -109,8 +109,15 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco WxMerchant merchantQ = new WxMerchant(); merchantQ.updateTenantInfo(tenantEntity); Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(tenantEntity); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + for (WxOfflineActivityRecord record : recordList) { record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index ca0775a34..dca024453 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -152,7 +152,7 @@ - SELECT merchant_id as 'merchantId', activity_id as 'activityId', count(record_id) as 'recordCount', @@ -171,14 +171,6 @@ and `parent_tenant_id` = #{parentTenantId} - - - and `create_date` >= #{createDateBegin} - - - - and `create_date` <= #{createDateEnd} - and `merchant_id` = #{merchantId} From 4d75e9588078d3c5b7acdff72753d7aef84e1bb7 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 15 Aug 2024 10:29:45 +0800 Subject: [PATCH 31/36] //OfflineActivity --- .../impl/WxOfflineActivityGrantAwardServiceImpl.java | 8 ++++---- .../impl/WxOfflineActivityGrantSettlementServiceImpl.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 7befddf3f..f794f5470 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -691,10 +691,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity headList.add(entity15); ExcelExportEntity entity16 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); headList.add(entity16); - ExcelExportEntity entity17 = new ExcelExportEntity("签名图片","signImg",20); - entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); - entity17.setExportImageType(1); - entity17.setHeight(20); + ExcelExportEntity entity17 = new ExcelExportEntity("签名图片","signImg",40); +// entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); +// entity17.setExportImageType(1); +// entity17.setHeight(20); headList.add(entity17); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 9671d8546..1f2dacfa9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -180,7 +180,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct private String getPercentage(BigDecimal yes, BigDecimal yesYes){ String percentage = "--"; - if(yes.compareTo(BigDecimal.ZERO) > 0){ + if(yesYes.compareTo(BigDecimal.ZERO) > 0){ BigDecimal count = yes.subtract(yesYes); percentage = count.divide(yesYes,2,BigDecimal.ROUND_HALF_UP).toString(); } @@ -192,7 +192,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct nf.setMinimumFractionDigits(2); String percentage = "--"; - if(yes > 0){ + if(yesYes > 0){ Integer count = yes - yesYes; percentage = nf.format(count.doubleValue() / new Double(yesYes).doubleValue()); } From c01b744c471e2509bca485c869c16c0671ac6e9e Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 15 Aug 2024 11:46:40 +0800 Subject: [PATCH 32/36] //OfflineActivity --- .../impl/WxOfflineActivityGrantAwardServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index f794f5470..531a5bdca 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -237,7 +237,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); - activityItem.setActivityGrantItemList(Arrays.asList(grantItem)); + activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { activityItem.setIsMeet(true); @@ -405,13 +405,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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)){ +// 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()+"奖项参数(金额不在范围类)"); + } handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); From 8045f04e969e30e6a04eb4b46b8e0cb3aad0788b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 15 Aug 2024 12:40:12 +0800 Subject: [PATCH 33/36] //OfflineActivity --- .../po/WxOfflineActivityGrantAward.java | 26 +++++++++++++++++++ .../domain/po/WxOfflineActivityRecord.java | 4 ++- ...xOfflineActivityGrantAwardServiceImpl.java | 10 ++++--- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index 967af5db7..ef02730a5 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -113,6 +115,18 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + }catch(Exception e){} + } + return lotteryNumList; + } /** * 抽奖券数量 @@ -125,6 +139,18 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ */ @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; + @TableField(exist = false) + private List anniversaryLotteryNumList; + public List getAnniversaryLotteryNumList() { + if(StringUtils.isNotBlank(anniversaryLotteryNum)){ + try { + List stringList = JSON.parseArray(anniversaryLotteryNum, String.class); + stringList.removeIf(String::isEmpty); + anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList; + }catch(Exception e){} + } + return anniversaryLotteryNumList; + } @TableField(exist = false) private Long recordId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index b53e6fbc8..16e97a2bc 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -90,7 +90,9 @@ public class WxOfflineActivityRecord extends TenantEntity { public List getLotteryNumList() { if(StringUtils.isNotBlank(lotteryNum)){ try { - lotteryNumList = JSON.parseArray(lotteryNum, String.class); + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; }catch(Exception e){} } return lotteryNumList; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 531a5bdca..38b7f91b5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -581,7 +581,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity for (WxOfflineActivityRecord record : recordList) { merchantOrder.add(record.getOrderNo()+"["+merchantMap.get(record.getMerchantId())+"]"); } - activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(joining(";"))); + activityGrantObject.put("merchantOrder", String.join(";", merchantOrder)); activityGrantObject.put("orderMoneySum",grantAward.getOrderMoneySum()); activityGrantObject.put("cusName",grantAward.getCusName()); activityGrantObject.put("cusPhone",grantAward.getCusPhone()); @@ -619,9 +619,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } } - activityGrantObject.put("lotteryNum",grantAward.getLotteryNum()); + if(grantAward.getLotteryNumList() != null && !grantAward.getLotteryNumList().isEmpty()){ + activityGrantObject.put("lotteryNum",String.join(";", grantAward.getLotteryNumList())); + } activityGrantObject.put("lotteryCount",grantAward.getLotteryCount()); - activityGrantObject.put("anniversaryLotteryNum",grantAward.getAnniversaryLotteryNum()); + if(grantAward.getAnniversaryLotteryNumList() != null && !grantAward.getAnniversaryLotteryNumList().isEmpty()){ + activityGrantObject.put("anniversaryLotteryNum",String.join(";", grantAward.getAnniversaryLotteryNumList())); + } // if(StringUtils.isNotBlank(grantAward.getSignImg())){ // try{ // activityGrantObject.put("signImg",DownFileUtil.url2byte(grantAward.getSignImg())); From 52653fef62a375fd514e77d09c3a969e2c05b14d Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 15 Aug 2024 13:46:35 +0800 Subject: [PATCH 34/36] //OfflineActivity --- .../WxOfflineActivityGrantAwardServiceImpl.java | 17 +++++++++++++++++ .../WxOfflineActivityGrantItemServiceImpl.java | 3 +-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 38b7f91b5..8d7dee101 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -240,8 +240,25 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ + activityItem.setIsMeet(false); + continue; + } activityItem.setIsMeet(true); activityItem.setRealAwardsItemLimit(1); + for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(awardsItem.getCashBackRatio().divide(new BigDecimal(100))); + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + awardsItem.setPrice(cashBackPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + awardsItem.setPrice(cashBackPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + BigDecimal cashBackPriceTen = cashBackPrice.divide(new BigDecimal(10)).setScale(0, BigDecimal.ROUND_HALF_UP); + awardsItem.setPrice(cashBackPriceTen.multiply(new BigDecimal(10))); + } + } } } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 305101b0f..5d1ff180e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -50,8 +50,7 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ grantGrantItem.setAwardPrice(awardPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { - BigDecimal awardPriceYuan = awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP); - grantGrantItem.setAwardPrice(awardPriceYuan.multiply(new BigDecimal(100))); + grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(10)).setScale(0, BigDecimal.ROUND_HALF_UP); grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); From 4dc8de5e85f999742b406fbbda150ac1d9ae7a01 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 15 Aug 2024 15:29:58 +0800 Subject: [PATCH 35/36] //OfflineActivity.sql --- .../db/migration/V202408000000004.sql | 226 ++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql b/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql new file mode 100644 index 000000000..caa51f9f2 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql @@ -0,0 +1,226 @@ +/* + Navicat Premium Dump SQL + + Source Server : 101.200.130.134 + Source Server Type : MySQL + Source Server Version : 50728 (5.7.28) + Source Host : 101.200.130.134:3306 + Source Schema : mallink + + Target Server Type : MySQL + Target Server Version : 50728 (5.7.28) + File Encoding : 65001 + + Date: 15/08/2024 15:28:13 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for wx_offline_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity`; +CREATE TABLE `wx_offline_activity` ( + `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', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `status` smallint(2) NOT NULL DEFAULT 0 COMMENT '状态(0:未上架 1:已上架)', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `all_merchant` smallint(1) NOT NULL DEFAULT 0 COMMENT '是否全部商户', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_awards_item +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_awards_item`; +CREATE TABLE `wx_offline_activity_awards_item` ( + `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', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖项名称', + `grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级', + `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最小金额', + `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最大金额', + `cash_back_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现比例', + `price` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项价值', + `money_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) 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 +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动奖项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_grant_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_grant_award`; +CREATE TABLE `wx_offline_activity_grant_award` ( + `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_id` bigint(20) NOT NULL COMMENT '活动ID', + `order_money_sum` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单总金额', + `order_count` int(11) NULL DEFAULT NULL COMMENT '订单数量', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `create_by` bigint(20) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_grant_item +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_grant_item`; +CREATE TABLE `wx_offline_activity_grant_item` ( + `id` bigint(20) NOT NULL, + `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', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `activity_item_id` bigint(20) NOT NULL COMMENT '活动项id', + `activity_item_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动项名称', + `activity_item_type` smallint(1) NULL DEFAULT NULL COMMENT '活动项类型', + `award_itam_id` bigint(20) NOT NULL COMMENT '奖项id', + `award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称', + `award_grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级', + `award_min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最小金额', + `award_max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最大金额', + `awards_item_rule` smallint(1) NULL DEFAULT NULL COMMENT '奖项计算规则', + `cash_back_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现比例', + `award_price` decimal(10, 2) NOT NULL COMMENT '奖项价值', + `award_count` int(11) NULL DEFAULT NULL COMMENT '奖项数量', + `money_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) 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, + UNIQUE INDEX `activity_id`(`grant_id`, `activity_item_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_grant_settlement +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_grant_settlement`; +CREATE TABLE `wx_offline_activity_grant_settlement` ( + `id` bigint(20) NOT NULL, + `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', + `record_id` bigint(20) NOT NULL COMMENT '参与记录id', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单编号', + `order_money` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户id', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_item_id` bigint(20) NOT NULL COMMENT '活动项id', + `award_itam_id` bigint(20) NOT NULL COMMENT '奖项id', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '发放总价值', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率', + `order_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单占比', + `real_grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '实际发放总价值', + `real_mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '实际商管承担总金额', + `real_merchant_share_price` decimal(10, 2) 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 +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励结算' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_item +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_item`; +CREATE TABLE `wx_offline_activity_item` ( + `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_id` bigint(20) NOT NULL COMMENT '活动id', + `type` smallint(1) NOT NULL COMMENT '活动项类型', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动项名称', + `limit_money` decimal(10, 2) NOT NULL COMMENT '参与金额', + `awards_item_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项单价', + `awards_item_limit` int(11) NULL DEFAULT NULL COMMENT '奖项限制', + `awards_item_count` int(11) NULL DEFAULT NULL COMMENT '奖项总数量', + `awards_item_rule` smallint(1) 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 +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动项目' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_merchant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_merchant`; +CREATE TABLE `wx_offline_activity_merchant` ( + `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_id` bigint(20) NOT NULL COMMENT '活动编号', + `merchant_id` bigint(20) NOT NULL COMMENT '商户编号', + `whether_in` smallint(1) NOT NULL COMMENT '是否参加', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动商户' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_record +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_record`; +CREATE TABLE `wx_offline_activity_record` ( + `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', + `order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号', + `order_money` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `real_cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址', + `cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码', + `create_by` bigint(11) NULL DEFAULT NULL, + `merchant_id` bigint(20) NOT NULL COMMENT '商户编号', + `business_id` int(11) NULL DEFAULT NULL COMMENT '业态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `audit_remark` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批意见', + `audit_status` int(1) NOT NULL DEFAULT 0 COMMENT '审批状态', + `audit_by` bigint(20) NULL DEFAULT NULL COMMENT '审核人', + `audit_time` datetime NULL DEFAULT NULL COMMENT '审核时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动参与登记' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_offline_activity_record_grant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_offline_activity_record_grant`; +CREATE TABLE `wx_offline_activity_record_grant` ( + `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', + `record_id` bigint(20) NOT NULL COMMENT '参与记录id', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + UNIQUE INDEX `activity_id`(`activity_id`, `record_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动参与登记与发放关联表' ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1; From b2325b14437ca8f94743762aaec6093d482700f0 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 15 Aug 2024 15:53:32 +0800 Subject: [PATCH 36/36] //OfflineActivity.sql --- .../src/main/resources/db/migration/V202408000000004.sql | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql b/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql index caa51f9f2..c389302f9 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202408000000004.sql @@ -224,3 +224,8 @@ CREATE TABLE `wx_offline_activity_record_grant` ( ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动参与登记与发放关联表' ROW_FORMAT = DYNAMIC; SET FOREIGN_KEY_CHECKS = 1; + + + +ALTER TABLE `mallink`.`wx_offline_activity_grant_item` +DROP INDEX `activity_id`; \ No newline at end of file