| @@ -8,6 +8,7 @@ import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.BaseEntity.SortField; | import com.iformall.domain.po.base.BaseEntity.SortField; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.OfflineActivitySettlement; | import com.iformall.domain.vo.OfflineActivitySettlement; | ||||
| import com.iformall.enums.EnumYesOrNo; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.service.WxOfflineActivityGrantAwardService; | import com.iformall.service.WxOfflineActivityGrantAwardService; | ||||
| import com.iformall.service.WxOfflineActivityGrantSettlementService; | import com.iformall.service.WxOfflineActivityGrantSettlementService; | ||||
| @@ -131,6 +132,7 @@ public class WxOfflineActivitySettlementController extends BaseController { | |||||
| TenantEntity tenantInfo = getTenantInfo(); | TenantEntity tenantInfo = getTenantInfo(); | ||||
| grantSettlement.updateTenantInfo(tenantInfo); | grantSettlement.updateTenantInfo(tenantInfo); | ||||
| grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| List<WxOfflineActivityGrantSettlement> recordList = wxOfflineActivityGrantSettlementService.findList(grantSettlement); | List<WxOfflineActivityGrantSettlement> recordList = wxOfflineActivityGrantSettlementService.findList(grantSettlement); | ||||
| return new ResultData(recordList); | return new ResultData(recordList); | ||||
| @@ -147,6 +149,7 @@ public class WxOfflineActivitySettlementController extends BaseController { | |||||
| } | } | ||||
| TenantEntity tenantInfo = getTenantInfo(); | TenantEntity tenantInfo = getTenantInfo(); | ||||
| grantSettlement.updateTenantInfo(tenantInfo); | grantSettlement.updateTenantInfo(tenantInfo); | ||||
| grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| wxOfflineActivityGrantSettlementService.exportData(request,response,grantSettlement); | wxOfflineActivityGrantSettlementService.exportData(request,response,grantSettlement); | ||||
| } | } | ||||
| @@ -161,4 +161,10 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private List<WxOfflineActivityItem> activityItemList; | private List<WxOfflineActivityItem> activityItemList; | ||||
| /** | |||||
| * 是否有效 | |||||
| */ | |||||
| @TableField(value = "status") | |||||
| private Integer status; | |||||
| } | } | ||||
| @@ -0,0 +1,119 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableId; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.math.BigDecimal; | |||||
| import java.util.Date; | |||||
| /** | |||||
| * 线下活动发放奖励 | |||||
| * @TableName wx_offline_activity_grant_cash_back | |||||
| */ | |||||
| @TableName(value ="wx_offline_activity_grant_cash_back") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxOfflineActivityGrantCashBack 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 String activityItemName; | |||||
| /** | |||||
| * 活动项类型 | |||||
| */ | |||||
| @TableField(value = "activity_item_type") | |||||
| private Integer activityItemType; | |||||
| /** | |||||
| * 返现奖项计算规则(0代表无规则) | |||||
| */ | |||||
| @TableField(value = "awards_item_rule") | |||||
| private Integer awardsItemRule; | |||||
| /** | |||||
| * 返现计算模式 | |||||
| */ | |||||
| @TableField(value = "calculation_mode") | |||||
| private Integer calculationMode; | |||||
| /** | |||||
| * 返现封顶金额 | |||||
| */ | |||||
| @TableField(value = "max_amount") | |||||
| private BigDecimal maxAmount; | |||||
| /** | |||||
| * 返现起征税点金额 | |||||
| */ | |||||
| @TableField(value = "starting_tax_point") | |||||
| private BigDecimal startingTaxPoint; | |||||
| /** | |||||
| * 返现税点比例 | |||||
| */ | |||||
| @TableField(value = "tax_points") | |||||
| private BigDecimal taxPoints; | |||||
| /** | |||||
| * 返现金额 | |||||
| */ | |||||
| @TableField(value = "cash_back_price") | |||||
| private BigDecimal cashBackPrice; | |||||
| /** | |||||
| * 税收 | |||||
| */ | |||||
| @TableField(value = "tax_points_amount") | |||||
| private BigDecimal taxPointsAmount; | |||||
| /** | |||||
| * 创建时间 | |||||
| */ | |||||
| @TableField(value = "create_date") | |||||
| private Date createDate; | |||||
| /** | |||||
| * 更新时间 | |||||
| */ | |||||
| @TableField(value = "update_date") | |||||
| private Date updateDate; | |||||
| } | |||||
| @@ -155,4 +155,10 @@ public class WxOfflineActivityGrantItem extends TenantEntity { | |||||
| @TableField(value = "record_id") | @TableField(value = "record_id") | ||||
| private Long recordId; | private Long recordId; | ||||
| /** | |||||
| * 是否有效 | |||||
| */ | |||||
| @TableField(value = "status") | |||||
| private Integer status; | |||||
| } | } | ||||
| @@ -148,4 +148,10 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||||
| @TableField(value = "update_date") | @TableField(value = "update_date") | ||||
| private Date updateDate; | private Date updateDate; | ||||
| /** | |||||
| * 是否有效 | |||||
| */ | |||||
| @TableField(value = "status") | |||||
| private Integer status; | |||||
| } | } | ||||
| @@ -136,6 +136,12 @@ public class WxOfflineActivityItem extends TenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private List<WxOfflineActivityGrantItem> activityGrantItemList; | private List<WxOfflineActivityGrantItem> activityGrantItemList; | ||||
| /** | |||||
| * 返现汇总 | |||||
| */ | |||||
| @TableField(exist = false) | |||||
| private WxOfflineActivityGrantCashBack activityGrantCashBack; | |||||
| /** | /** | ||||
| * 返现金额 | * 返现金额 | ||||
| */ | */ | ||||
| @@ -28,4 +28,6 @@ public class OfflineActivitySettlement extends TenantEntity { | |||||
| private BigDecimal sumMallPrice; | private BigDecimal sumMallPrice; | ||||
| @SortColumn(column = "sumMerchantPrice") | @SortColumn(column = "sumMerchantPrice") | ||||
| private BigDecimal sumMerchantPrice; | private BigDecimal sumMerchantPrice; | ||||
| private Integer status; | |||||
| } | } | ||||
| @@ -21,6 +21,10 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper<WxOfflin | |||||
| WxOfflineActivityGrantAward selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | WxOfflineActivityGrantAward selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | ||||
| List<WxOfflineActivityGrantAward> findList(WxOfflineActivityGrantAward grantAwardQ); | List<WxOfflineActivityGrantAward> findList(WxOfflineActivityGrantAward grantAwardQ); | ||||
| void updateStatusNo(WxOfflineActivityGrantAward grantAwardUpd); | |||||
| Long getLastId(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||||
| } | } | ||||
| @@ -0,0 +1,24 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantCashBack; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | |||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| /** | |||||
| * @author xiaohu | |||||
| * @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Mapper | |||||
| * @createDate 2024-08-09 00:13:44 | |||||
| * @Entity com.iformall.domain.po.WxOfflineActivityGrantItem | |||||
| */ | |||||
| public interface WxOfflineActivityGrantCashBackMapper extends CommonMapper<WxOfflineActivityGrantCashBack, Long> { | |||||
| List<WxOfflineActivityGrantCashBack> findList(WxOfflineActivityGrantCashBack offlineActivityGrantCashBack); | |||||
| void insertList(List<WxOfflineActivityGrantCashBack> cashBackList); | |||||
| } | |||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.mapper; | package com.iformall.mapper; | ||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | import com.iformall.domain.po.WxOfflineActivityGrantItem; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import org.apache.ibatis.annotations.Param; | import org.apache.ibatis.annotations.Param; | ||||
| @@ -20,6 +21,8 @@ public interface WxOfflineActivityGrantItemMapper extends CommonMapper<WxOffline | |||||
| Integer getSumAwardCount(WxOfflineActivityGrantItem grantItemQ); | Integer getSumAwardCount(WxOfflineActivityGrantItem grantItemQ); | ||||
| List<WxOfflineActivityGrantItem> findList(WxOfflineActivityGrantItem grantItemQ); | List<WxOfflineActivityGrantItem> findList(WxOfflineActivityGrantItem grantItemQ); | ||||
| void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.mapper; | package com.iformall.mapper; | ||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import com.iformall.domain.vo.OfflineActivitySettlement; | import com.iformall.domain.vo.OfflineActivitySettlement; | ||||
| @@ -24,6 +25,8 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxO | |||||
| List<OfflineActivitySettlement> getActivitySettlement(OfflineActivitySettlement settlement); | List<OfflineActivitySettlement> getActivitySettlement(OfflineActivitySettlement settlement); | ||||
| List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement settlement); | List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement settlement); | ||||
| void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||||
| } | } | ||||
| @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; | |||||
| import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; | import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; | ||||
| import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| @@ -52,6 +53,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| @Autowired | @Autowired | ||||
| private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; | private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; | ||||
| @Autowired | |||||
| private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; | |||||
| @Autowired | @Autowired | ||||
| WxOfflineActivityMapper wxOfflineActivityMapper; | WxOfflineActivityMapper wxOfflineActivityMapper; | ||||
| @@ -286,14 +290,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = record.getOrderMoney() | BigDecimal cashBackPrice = record.getOrderMoney() | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); | |||||
| } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | |||||
| cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); | |||||
| }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) | |||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); | |||||
| } | |||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| }else{ | }else{ | ||||
| @@ -311,14 +307,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); | |||||
| } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | |||||
| cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); | |||||
| }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) | |||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); | |||||
| } | |||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| @@ -332,27 +320,77 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); | |||||
| } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | |||||
| cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); | |||||
| }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) | |||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); | |||||
| } | |||||
| cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| if(activityItem.getMaxAmount().compareTo(cashBackPriceTotal) >= 0){ | |||||
| activityItem.setCashBackPrice(cashBackPriceTotal); | |||||
| }else{ | |||||
| activityItem.setCashBackPrice(activityItem.getMaxAmount()); | |||||
| if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ | |||||
| cashBackPriceTotal = activityItem.getMaxAmount(); | |||||
| } | |||||
| if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); | |||||
| } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | |||||
| cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); | |||||
| }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) | |||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); | |||||
| } | } | ||||
| WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); | |||||
| activityGrantCashBack.setActivityId(activity.getId()); | |||||
| activityGrantCashBack.setActivityName(activity.getName()); | |||||
| activityGrantCashBack.setActivityItemId(activityItem.getId()); | |||||
| activityGrantCashBack.setActivityItemName(activityItem.getName()); | |||||
| activityGrantCashBack.setActivityItemType(activityItem.getType()); | |||||
| activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | |||||
| activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); | |||||
| activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | |||||
| activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | |||||
| activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | |||||
| activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); | |||||
| activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); | |||||
| if(activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0){ | |||||
| activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPoints()) | |||||
| .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); | |||||
| } | |||||
| activityItem.setActivityGrantCashBack(activityGrantCashBack); | |||||
| activityItem.setCashBackPrice(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPointsAmount())); | |||||
| WxOfflineActivityGrantCashBack lastActivityGrantCashBack = getLastActivityGrantCashBack(wxOfflineActivityGrantAward, activity.getId(), activityItem.getId()); | |||||
| if(lastActivityGrantCashBack != null){ | |||||
| BigDecimal subtracted = lastActivityGrantCashBack.getCashBackPrice().subtract(lastActivityGrantCashBack.getTaxPointsAmount()); | |||||
| String msg = "已返现:"+subtracted+"元 "; | |||||
| if(subtracted.compareTo(activityItem.getCashBackPrice()) > 0){ | |||||
| msg += "顾客应退:"+subtracted.subtract(activityItem.getCashBackPrice())+"元 "; | |||||
| }else{ | |||||
| msg += "应补顾客:"+activityItem.getCashBackPrice().subtract(subtracted)+"元 "; | |||||
| } | |||||
| if(lastActivityGrantCashBack.getTaxPointsAmount().compareTo(activityGrantCashBack.getTaxPointsAmount()) > 0){ | |||||
| msg += "税款退还:"+lastActivityGrantCashBack.getTaxPointsAmount().subtract(activityGrantCashBack.getTaxPointsAmount())+"元 "; | |||||
| }else{ | |||||
| msg += "顾客补税:"+activityGrantCashBack.getTaxPointsAmount().subtract(lastActivityGrantCashBack.getTaxPointsAmount())+"元 "; | |||||
| } | |||||
| activityItem.setCashBackMsg(msg); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| private WxOfflineActivityGrantCashBack getLastActivityGrantCashBack(WxOfflineActivityGrantAward wxOfflineActivityGrantAward,Long activityId,Long activityItemId){ | |||||
| Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); | |||||
| if(grantId == null){ | |||||
| return null; | |||||
| } | |||||
| WxOfflineActivityGrantCashBack cashBackQ = new WxOfflineActivityGrantCashBack(); | |||||
| cashBackQ.updateTenantInfo(wxOfflineActivityGrantAward); | |||||
| cashBackQ.setGrantId(grantId); | |||||
| cashBackQ.setActivityId(activityId); | |||||
| cashBackQ.setActivityItemId(activityItemId); | |||||
| return wxOfflineActivityGrantCashBackMapper.selectOne(new QueryWrapper<>(cashBackQ)); | |||||
| } | |||||
| private void handlerAwardsSharePrice(List<WxOfflineActivityAwardsItem> awardsItemList){ | private void handlerAwardsSharePrice(List<WxOfflineActivityAwardsItem> awardsItemList){ | ||||
| if(awardsItemList == null || awardsItemList.isEmpty()){ | if(awardsItemList == null || awardsItemList.isEmpty()){ | ||||
| return; | return; | ||||
| @@ -385,6 +423,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| wxOfflineActivityGrantAward.setUpdateDate(now); | wxOfflineActivityGrantAward.setUpdateDate(now); | ||||
| wxOfflineActivityGrantAwardMapper.insert(wxOfflineActivityGrantAward); | wxOfflineActivityGrantAwardMapper.insert(wxOfflineActivityGrantAward); | ||||
| //失效 | |||||
| WxOfflineActivityGrantAward upd = new WxOfflineActivityGrantAward(); | |||||
| upd.setId(wxOfflineActivityGrantAward.getId()); | |||||
| upd.updateTenantInfo(wxOfflineActivityGrantAward); | |||||
| upd.setStatus(EnumYesOrNo.NO.getCode()); | |||||
| upd.setActivityId(activity.getId()); | |||||
| upd.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); | |||||
| upd.setUpdateDate(now); | |||||
| wxOfflineActivityGrantAwardMapper.updateStatusNo(upd); | |||||
| wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); | wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); | ||||
| //处理奖项 | //处理奖项 | ||||
| @@ -401,6 +449,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| // List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); | // List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); | ||||
| WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); | WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); | ||||
| recordQ.updateTenantInfo(wxOfflineActivityGrantAward); | recordQ.updateTenantInfo(wxOfflineActivityGrantAward); | ||||
| recordQ.setActivityId(activity.getId()); | |||||
| recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); | recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); | ||||
| List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ); | List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ); | ||||
| if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { | if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { | ||||
| @@ -613,28 +662,48 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| } | } | ||||
| BigDecimal prop = BigDecimal.ONE; | BigDecimal prop = BigDecimal.ONE; | ||||
| if(activityItem.getMaxAmount().compareTo(cashBackPriceTotal) >= 0){ | |||||
| activityItem.setCashBackPrice(cashBackPriceTotal); | |||||
| }else{ | |||||
| if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ | |||||
| prop = activityItem.getMaxAmount().divide(cashBackPriceTotal).setScale(4, RoundingMode.HALF_UP);; | prop = activityItem.getMaxAmount().divide(cashBackPriceTotal).setScale(4, RoundingMode.HALF_UP);; | ||||
| activityItem.setCashBackPrice(activityItem.getMaxAmount()); | |||||
| cashBackPriceTotal = activityItem.getMaxAmount(); | |||||
| } | |||||
| if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); | |||||
| } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | |||||
| cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); | |||||
| }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | |||||
| cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) | |||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); | |||||
| } | } | ||||
| for (WxOfflineActivityGrantItem grantItem:grantItemList){ | for (WxOfflineActivityGrantItem grantItem:grantItemList){ | ||||
| if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ | ||||
| grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(2, RoundingMode.HALF_UP)); | |||||
| activityItem.setCashBackPrice(activityItem.getCashBackPrice().setScale(2, RoundingMode.HALF_UP)); | |||||
| grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); | |||||
| } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { | ||||
| grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(0, RoundingMode.HALF_UP)); | grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(0, RoundingMode.HALF_UP)); | ||||
| activityItem.setCashBackPrice(activityItem.getCashBackPrice().setScale(0, RoundingMode.HALF_UP)); | |||||
| }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ | ||||
| grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(new BigDecimal(10)) | grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(new BigDecimal(10)) | ||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); | .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); | ||||
| activityItem.setCashBackPrice(activityItem.getCashBackPrice().divide(new BigDecimal(10)) | |||||
| .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); | |||||
| } | } | ||||
| } | } | ||||
| grantActivityItem.setActivityGrantItemList(grantItemList); | grantActivityItem.setActivityGrantItemList(grantItemList); | ||||
| WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); | |||||
| activityGrantCashBack.setActivityId(activity.getId()); | |||||
| activityGrantCashBack.setActivityName(activity.getName()); | |||||
| activityGrantCashBack.setActivityItemId(activityItem.getId()); | |||||
| activityGrantCashBack.setActivityItemName(activityItem.getName()); | |||||
| activityGrantCashBack.setActivityItemType(activityItem.getType()); | |||||
| activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); | |||||
| activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); | |||||
| activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); | |||||
| activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); | |||||
| activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); | |||||
| activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); | |||||
| activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); | |||||
| if(activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0){ | |||||
| activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPoints()) | |||||
| .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); | |||||
| } | |||||
| grantActivityItem.setActivityGrantCashBack(activityGrantCashBack); | |||||
| } | } | ||||
| @@ -687,6 +756,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //最近30天数据 | //最近30天数据 | ||||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | ||||
| grantAwardQ.updateTenantInfo(tenantInfo); | grantAwardQ.updateTenantInfo(tenantInfo); | ||||
| grantAwardQ.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | ||||
| Integer monthCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | Integer monthCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | ||||
| //一周前的昨天 | //一周前的昨天 | ||||
| @@ -732,18 +802,26 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| @Override | @Override | ||||
| public List<WxOfflineActivityGrantAward> grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { | public List<WxOfflineActivityGrantAward> grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { | ||||
| List<Long> grantIds = wxOfflineActivityRecordGrantMapper.selectGrantId(wxOfflineActivityGrantAward.getTenantId(),wxOfflineActivityGrantAward.getActivityId(),wxOfflineActivityGrantAward.getRecordId()); | |||||
| if(grantIds == null || grantIds.isEmpty()){ | |||||
| return null; | |||||
| } | |||||
| // List<Long> grantIds = wxOfflineActivityRecordGrantMapper.selectGrantId(wxOfflineActivityGrantAward.getTenantId(),wxOfflineActivityGrantAward.getActivityId(),wxOfflineActivityGrantAward.getRecordId()); | |||||
| // if(grantIds == null || grantIds.isEmpty()){ | |||||
| // return null; | |||||
| // } | |||||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | ||||
| grantAwardQ.updateTenantInfo(wxOfflineActivityGrantAward); | grantAwardQ.updateTenantInfo(wxOfflineActivityGrantAward); | ||||
| grantAwardQ.setIds(grantIds); | |||||
| // grantAwardQ.setIds(grantIds); | |||||
| grantAwardQ.setActivityId(wxOfflineActivityGrantAward.getActivityId()); | |||||
| grantAwardQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); | |||||
| List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | ||||
| for (WxOfflineActivityGrantAward grantAward : grantAwardList) { | for (WxOfflineActivityGrantAward grantAward : grantAwardList) { | ||||
| //获取奖项 | //获取奖项 | ||||
| List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(grantAward.getActivityId(), grantAward.getTenantId()); | List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(grantAward.getActivityId(), grantAward.getTenantId()); | ||||
| grantAward.setActivityItemList(activityItemList); | grantAward.setActivityItemList(activityItemList); | ||||
| //获取返现汇总 | |||||
| WxOfflineActivityGrantCashBack cashBackQ = new WxOfflineActivityGrantCashBack(); | |||||
| cashBackQ.updateTenantInfo(grantAward); | |||||
| cashBackQ.setGrantId(grantAward.getId()); | |||||
| List<WxOfflineActivityGrantCashBack> cashBackList = wxOfflineActivityGrantCashBackMapper.findList(cashBackQ); | |||||
| Map<Long, WxOfflineActivityGrantCashBack> cashBackMap = cashBackList.stream().collect(Collectors.toMap(WxOfflineActivityGrantCashBack::getActivityItemId, Function.identity())); | |||||
| //获取实际获得奖项 | //获取实际获得奖项 | ||||
| WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | ||||
| grantItemQ.updateTenantInfo(grantAward); | grantItemQ.updateTenantInfo(grantAward); | ||||
| @@ -751,6 +829,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| List<WxOfflineActivityGrantItem> grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | List<WxOfflineActivityGrantItem> grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | ||||
| Map<Long, List<WxOfflineActivityGrantItem>> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); | Map<Long, List<WxOfflineActivityGrantItem>> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); | ||||
| for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { | for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { | ||||
| activityItem.setActivityGrantCashBack(cashBackMap.get(activityItem.getId())); | |||||
| List<WxOfflineActivityGrantItem> grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); | List<WxOfflineActivityGrantItem> grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); | ||||
| if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { | if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { | ||||
| activityItem.setIsMeet(false); | activityItem.setIsMeet(false); | ||||
| @@ -783,6 +862,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | ||||
| grantAwardQ.updateTenantInfo(wxOfflineActivity); | grantAwardQ.updateTenantInfo(wxOfflineActivity); | ||||
| grantAwardQ.setActivityId(wxOfflineActivity.getId()); | grantAwardQ.setActivityId(wxOfflineActivity.getId()); | ||||
| grantAwardQ.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | ||||
| if(grantAwardList != null){ | if(grantAwardList != null){ | ||||
| WxMerchant merchantQ = new WxMerchant(); | WxMerchant merchantQ = new WxMerchant(); | ||||
| @@ -796,6 +876,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | ||||
| grantItemQ.updateTenantInfo(wxOfflineActivity); | grantItemQ.updateTenantInfo(wxOfflineActivity); | ||||
| grantItemQ.setActivityId(wxOfflineActivity.getId()); | grantItemQ.setActivityId(wxOfflineActivity.getId()); | ||||
| grantItemQ.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| List<WxOfflineActivityGrantItem> grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | List<WxOfflineActivityGrantItem> grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | ||||
| Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(groupingBy(WxOfflineActivityGrantItem::getGrantId)); | Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(groupingBy(WxOfflineActivityGrantItem::getGrantId)); | ||||
| List<OfflineActivityGrantRecord> grantRecordList = wxOfflineActivityRecordGrantMapper.findGrantRecordList(wxOfflineActivity.getId(),wxOfflineActivity.getTenantId()); | List<OfflineActivityGrantRecord> grantRecordList = wxOfflineActivityRecordGrantMapper.findGrantRecordList(wxOfflineActivity.getId(),wxOfflineActivity.getTenantId()); | ||||
| @@ -3,11 +3,13 @@ package com.iformall.service.impl; | |||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | import com.iformall.domain.po.WxOfflineActivityGrantAward; | ||||
| import com.iformall.domain.po.WxOfflineActivityGrantCashBack; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | import com.iformall.domain.po.WxOfflineActivityGrantItem; | ||||
| import com.iformall.domain.po.WxOfflineActivityItem; | import com.iformall.domain.po.WxOfflineActivityItem; | ||||
| import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; | import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; | ||||
| import com.iformall.enums.EnumOfflineActivityAwardsRule; | import com.iformall.enums.EnumOfflineActivityAwardsRule; | ||||
| import com.iformall.enums.EnumOfflineActivityType; | import com.iformall.enums.EnumOfflineActivityType; | ||||
| import com.iformall.mapper.WxOfflineActivityGrantCashBackMapper; | |||||
| import com.iformall.service.WxOfflineActivityGrantItemService; | import com.iformall.service.WxOfflineActivityGrantItemService; | ||||
| import com.iformall.mapper.WxOfflineActivityGrantItemMapper; | import com.iformall.mapper.WxOfflineActivityGrantItemMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -29,21 +31,23 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG | |||||
| @Autowired | @Autowired | ||||
| private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; | private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; | ||||
| @Autowired | |||||
| private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; | |||||
| @Override | @Override | ||||
| public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { | public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { | ||||
| List<WxOfflineActivityGrantItem> rantItemList = new ArrayList<>(); | |||||
| List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); | |||||
| List<WxOfflineActivityGrantCashBack> cashBackList = new ArrayList<>(); | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| Date now = new Date(); | Date now = new Date(); | ||||
| for (WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()) { | 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(activityItem.getActivityGrantItemList() != null){ | |||||
| 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())){ | // if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ | ||||
| // BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | // BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | ||||
| // .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); | // .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| @@ -56,10 +60,25 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG | |||||
| // grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); | // grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); | ||||
| // } | // } | ||||
| // } | // } | ||||
| rantItemList.add(grantGrantItem); | |||||
| grantItemList.add(grantGrantItem); | |||||
| } | |||||
| } | |||||
| if(activityItem.getActivityGrantCashBack() != null){ | |||||
| WxOfflineActivityGrantCashBack activityGrantCashBack = activityItem.getActivityGrantCashBack(); | |||||
| activityGrantCashBack.setGrantId(wxOfflineActivityGrantAward.getId()); | |||||
| activityGrantCashBack.setId(idWorker.nextId()); | |||||
| activityGrantCashBack.updateTenantInfo(wxOfflineActivityGrantAward); | |||||
| activityGrantCashBack.setCreateDate(now); | |||||
| activityGrantCashBack.setUpdateDate(now); | |||||
| cashBackList.add(activityGrantCashBack); | |||||
| } | } | ||||
| } | } | ||||
| wxOfflineActivityGrantItemMapper.insertList(rantItemList); | |||||
| wxOfflineActivityGrantItemMapper.insertList(grantItemList); | |||||
| wxOfflineActivityGrantItemMapper.updateStatusNo(wxOfflineActivityGrantAward); | |||||
| if(!cashBackList.isEmpty()) wxOfflineActivityGrantCashBackMapper.insertList(cashBackList); | |||||
| } | } | ||||
| @@ -161,6 +161,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| } | } | ||||
| wxOfflineActivityGrantSettlementMapper.insertList(settlementList); | wxOfflineActivityGrantSettlementMapper.insertList(settlementList); | ||||
| wxOfflineActivityGrantSettlementMapper.updateStatusNo(wxOfflineActivityGrantAward); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -177,6 +178,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| //最近30天 | //最近30天 | ||||
| WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | ||||
| settlement.updateTenantInfo(tenantInfo); | settlement.updateTenantInfo(tenantInfo); | ||||
| settlement.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| settlement.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | settlement.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | ||||
| OfflineActivitySettlementStatistics monthStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | OfflineActivitySettlementStatistics monthStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | ||||
| //一周前的昨天 | //一周前的昨天 | ||||
| @@ -270,6 +272,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| //获取结算相关 | //获取结算相关 | ||||
| WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | ||||
| settlement.updateTenantInfo(activity); | settlement.updateTenantInfo(activity); | ||||
| settlement.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| settlement.setActivityId(activity.getId()); | settlement.setActivityId(activity.getId()); | ||||
| OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | ||||
| activity.setGrantMershantCount(settlementStatistics.getMerchantCount()); | activity.setGrantMershantCount(settlementStatistics.getMerchantCount()); | ||||
| @@ -294,7 +297,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| record.setMerchantIdList(mids); | record.setMerchantIdList(mids); | ||||
| } | } | ||||
| } | } | ||||
| record.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(record); | List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(record); | ||||
| if (activitySettlementList != null && !activitySettlementList.isEmpty()) { | if (activitySettlementList != null && !activitySettlementList.isEmpty()) { | ||||
| @@ -325,6 +328,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| }else{ | }else{ | ||||
| result.put("merchantName",merchant.getName()); | result.put("merchantName",merchant.getName()); | ||||
| } | } | ||||
| grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(grantSettlement); | List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(grantSettlement); | ||||
| if (activitySettlementList == null || activitySettlementList.isEmpty()) { | if (activitySettlementList == null || activitySettlementList.isEmpty()) { | ||||
| result.put("recordCount",0); | result.put("recordCount",0); | ||||
| @@ -100,6 +100,7 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||||
| } | } | ||||
| } | } | ||||
| if(awardQ != null){ | if(awardQ != null){ | ||||
| awardQ.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| List<Long> rids = wxOfflineActivityGrantAwardMapper.getRecordIdList(awardQ); | List<Long> rids = wxOfflineActivityGrantAwardMapper.getRecordIdList(awardQ); | ||||
| if (null == rids || rids.size() <= 0 ) { | if (null == rids || rids.size() <= 0 ) { | ||||
| record.setId(-1L); | record.setId(-1L); | ||||
| @@ -112,6 +112,7 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ | |||||
| WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | ||||
| grantItemQ.updateTenantInfo(activity); | grantItemQ.updateTenantInfo(activity); | ||||
| grantItemQ.setActivityId(activity.getId()); | grantItemQ.setActivityId(activity.getId()); | ||||
| grantItemQ.setStatus(EnumYesOrNo.YES.getCode()); | |||||
| activity.setGrantItemCount(wxOfflineActivityGrantItemMapper.getSumAwardCount(grantItemQ)); | activity.setGrantItemCount(wxOfflineActivityGrantItemMapper.getSumAwardCount(grantItemQ)); | ||||
| } | } | ||||
| @@ -22,6 +22,7 @@ | |||||
| <result property="lotteryNum" column="lottery_num" jdbcType="VARCHAR"/> | <result property="lotteryNum" column="lottery_num" jdbcType="VARCHAR"/> | ||||
| <result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/> | <result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/> | ||||
| <result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="VARCHAR"/> | <result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="VARCHAR"/> | ||||
| <result property="status" column="status" jdbcType="INTEGER"/> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| @@ -58,6 +59,9 @@ | |||||
| <if test=" null != cusPhone and cusPhone != '' "> | <if test=" null != cusPhone and cusPhone != '' "> | ||||
| and `cus_phone` = #{cusPhone} | and `cus_phone` = #{cusPhone} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != ids "> | <if test=" null != ids "> | ||||
| and id in | and id in | ||||
| @@ -91,6 +95,9 @@ | |||||
| <if test=" null != createDateEnd"> | <if test=" null != createDateEnd"> | ||||
| and `create_date` <= #{createDateEnd} | and `create_date` <= #{createDateEnd} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| </select> | </select> | ||||
| @@ -113,6 +120,9 @@ | |||||
| <if test=" null != createDateEnd"> | <if test=" null != createDateEnd"> | ||||
| and ga.`create_date` <= #{createDateEnd} | and ga.`create_date` <= #{createDateEnd} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != createByIds "> | <if test=" null != createByIds "> | ||||
| and ga.create_by in | and ga.create_by in | ||||
| <foreach collection="createByIds" index="index" item="sendItem" open="(" separator="," close=")"> | <foreach collection="createByIds" index="index" item="sendItem" open="(" separator="," close=")"> | ||||
| @@ -124,4 +134,15 @@ | |||||
| <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | ||||
| select <include refid="allColumns" /> from wx_offline_activity_grant_award where id = #{id} and tenant_id=#{tenantId} | select <include refid="allColumns" /> from wx_offline_activity_grant_award where id = #{id} and tenant_id=#{tenantId} | ||||
| </select> | </select> | ||||
| <select id="getLastId" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" resultType="Long"> | |||||
| select id from wx_offline_activity_grant_award | |||||
| where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} | |||||
| order by create_date desc limit 1 | |||||
| </select> | |||||
| <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > | |||||
| update wx_offline_activity_grant_award set status = #{status},update_date = #{updateDate} | |||||
| where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id} | |||||
| </update> | |||||
| </mapper> | </mapper> | ||||
| @@ -0,0 +1,95 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper | |||||
| PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
| "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxOfflineActivityGrantCashBackMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityGrantCashBack"> | |||||
| <id property="id" column="id" jdbcType="BIGINT"/> | |||||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | |||||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||||
| <result property="activityItemName" column="activity_item_name" jdbcType="INTEGER"/> | |||||
| <result property="activityItemType" column="activity_item_type" jdbcType="SMALLINT"/> | |||||
| <result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/> | |||||
| <result property="calculationMode" column="calculation_mode" jdbcType="SMALLINT"/> | |||||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | |||||
| <result property="startingTaxPoint" column="starting_tax_point" jdbcType="DECIMAL"/> | |||||
| <result property="taxPoints" column="tax_points" jdbcType="DECIMAL"/> | |||||
| <result property="cashBackPrice" column="cash_back_price" jdbcType="DECIMAL"/> | |||||
| <result property="taxPointsAmount" column="tax_points_amount" jdbcType="DECIMAL"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| id,tenant_id,parent_tenant_id, | |||||
| grant_id,activity_id,activity_name, | |||||
| activity_item_id,activity_item_name,activity_item_type,awards_item_rule,calculation_mode, | |||||
| create_date,update_date,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != grantId"> | |||||
| and `grant_id` = #{grantId} | |||||
| </if> | |||||
| <if test=" null != activityId"> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != activityItemId"> | |||||
| and `activity_item_id` = #{activityItemId} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||||
| </sql> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivityGrantCashBack" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_offline_activity_grant_cash_back | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </select> | |||||
| <insert id="insertList" parameterType="java.util.List"> | |||||
| insert into wx_offline_activity_grant_item | |||||
| (id, | |||||
| grant_id,activity_id,activity_name, | |||||
| activity_item_id,activity_item_name,activity_item_type, | |||||
| awards_item_rule,calculation_mode, | |||||
| create_date,update_date | |||||
| ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) | |||||
| values | |||||
| <foreach collection="grantItemList" item="item" index="index" separator=","> | |||||
| (#{item.id,jdbcType=BIGINT}, | |||||
| #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, | |||||
| #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, | |||||
| #{item.awardsItemRule,jdbcType=INTEGER},#{item.calculationMode,jdbcType=INTEGER}, | |||||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}, | |||||
| #{item.maxAmount,jdbcType=DECIMAL},#{item.startingTaxPoint,jdbcType=DECIMAL},#{item.taxPoints,jdbcType=DECIMAL},#{item.cashBackPrice,jdbcType=DECIMAL},#{item.taxPointsAmount,jdbcType=DECIMAL}) | |||||
| </foreach> | |||||
| </insert> | |||||
| </mapper> | |||||
| @@ -29,6 +29,7 @@ | |||||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | ||||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | ||||
| <result property="recordId" column="record_id" jdbcType="BIGINT"/> | <result property="recordId" column="record_id" jdbcType="BIGINT"/> | ||||
| <result property="status" column="status" jdbcType="INTEGER"/> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| @@ -70,6 +71,10 @@ | |||||
| and `award_itam_id` = #{awardItamId} | and `award_itam_id` = #{awardItamId} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != ids "> | <if test=" null != ids "> | ||||
| and id in | and id in | ||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | ||||
| @@ -119,6 +124,17 @@ | |||||
| <if test=" null != activityId "> | <if test=" null != activityId "> | ||||
| and activity_id = #{activityId} | and activity_id = #{activityId} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| </select> | </select> | ||||
| <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > | |||||
| update wx_offline_activity_grant_item set status = 0,update_date = now() | |||||
| where grant_id in ( | |||||
| select id from wx_offline_activity_grant_award | |||||
| where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id}) | |||||
| </update> | |||||
| </mapper> | </mapper> | ||||
| @@ -25,6 +25,7 @@ | |||||
| <result property="realMerchantSharePrice" column="real_merchant_share_price" jdbcType="DECIMAL"/> | <result property="realMerchantSharePrice" column="real_merchant_share_price" jdbcType="DECIMAL"/> | ||||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | ||||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | ||||
| <result property="status" column="status" jdbcType="INTEGER"/> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| @@ -80,6 +81,9 @@ | |||||
| <if test=" null != createDateEnd"> | <if test=" null != createDateEnd"> | ||||
| and `create_date` <= #{createDateEnd} | and `create_date` <= #{createDateEnd} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != merchantIdList "> | <if test=" null != merchantIdList "> | ||||
| and merchant_id in | and merchant_id in | ||||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | ||||
| @@ -149,6 +153,10 @@ | |||||
| and `create_date` <= #{createDateEnd} | and `create_date` <= #{createDateEnd} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| </select> | </select> | ||||
| @@ -174,6 +182,9 @@ | |||||
| <if test=" null != merchantId "> | <if test=" null != merchantId "> | ||||
| and `merchant_id` = #{merchantId} | and `merchant_id` = #{merchantId} | ||||
| </if> | </if> | ||||
| <if test=" null != status"> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != merchantIdList "> | <if test=" null != merchantIdList "> | ||||
| and merchant_id in | and merchant_id in | ||||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | ||||
| @@ -185,4 +196,11 @@ | |||||
| </select> | </select> | ||||
| <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > | |||||
| update wx_offline_activity_grant_settlement set status = 0,update_date = now() | |||||
| where grant_id in ( | |||||
| select id from wx_offline_activity_grant_award | |||||
| where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id}) | |||||
| </update> | |||||
| </mapper> | </mapper> | ||||