| @@ -8,6 +8,7 @@ import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.OfflineActivitySettlement; | |||
| import com.iformall.enums.EnumYesOrNo; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.WxOfflineActivityGrantAwardService; | |||
| import com.iformall.service.WxOfflineActivityGrantSettlementService; | |||
| @@ -131,6 +132,7 @@ public class WxOfflineActivitySettlementController extends BaseController { | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| grantSettlement.updateTenantInfo(tenantInfo); | |||
| grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); | |||
| List<WxOfflineActivityGrantSettlement> recordList = wxOfflineActivityGrantSettlementService.findList(grantSettlement); | |||
| return new ResultData(recordList); | |||
| @@ -147,6 +149,7 @@ public class WxOfflineActivitySettlementController extends BaseController { | |||
| } | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| grantSettlement.updateTenantInfo(tenantInfo); | |||
| grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); | |||
| wxOfflineActivityGrantSettlementService.exportData(request,response,grantSettlement); | |||
| } | |||
| @@ -161,4 +161,10 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ | |||
| @TableField(exist = false) | |||
| 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") | |||
| private Long recordId; | |||
| /** | |||
| * 是否有效 | |||
| */ | |||
| @TableField(value = "status") | |||
| private Integer status; | |||
| } | |||
| @@ -148,4 +148,10 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| /** | |||
| * 是否有效 | |||
| */ | |||
| @TableField(value = "status") | |||
| private Integer status; | |||
| } | |||
| @@ -136,6 +136,12 @@ public class WxOfflineActivityItem extends TenantEntity { | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityGrantItem> activityGrantItemList; | |||
| /** | |||
| * 返现汇总 | |||
| */ | |||
| @TableField(exist = false) | |||
| private WxOfflineActivityGrantCashBack activityGrantCashBack; | |||
| /** | |||
| * 返现金额 | |||
| */ | |||
| @@ -28,4 +28,6 @@ public class OfflineActivitySettlement extends TenantEntity { | |||
| private BigDecimal sumMallPrice; | |||
| @SortColumn(column = "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); | |||
| 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; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| import org.apache.ibatis.annotations.Param; | |||
| @@ -20,6 +21,8 @@ public interface WxOfflineActivityGrantItemMapper extends CommonMapper<WxOffline | |||
| Integer getSumAwardCount(WxOfflineActivityGrantItem grantItemQ); | |||
| List<WxOfflineActivityGrantItem> findList(WxOfflineActivityGrantItem grantItemQ); | |||
| void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||
| } | |||
| @@ -1,6 +1,7 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| import com.iformall.domain.vo.OfflineActivitySettlement; | |||
| @@ -24,6 +25,8 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxO | |||
| List<OfflineActivitySettlement> getActivitySettlement(OfflineActivitySettlement 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 com.alibaba.fastjson.JSON; | |||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.Result; | |||
| @@ -52,6 +53,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| @Autowired | |||
| private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; | |||
| @Autowired | |||
| private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; | |||
| @Autowired | |||
| WxOfflineActivityMapper wxOfflineActivityMapper; | |||
| @@ -286,14 +290,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| //计算返现金额 | |||
| BigDecimal cashBackPrice = record.getOrderMoney() | |||
| .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); | |||
| } | |||
| }else{ | |||
| @@ -311,14 +307,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| //计算返现金额 | |||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||
| .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); | |||
| } | |||
| @@ -332,27 +320,77 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| //计算返现金额 | |||
| BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||
| .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); | |||
| } | |||
| 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){ | |||
| if(awardsItemList == null || awardsItemList.isEmpty()){ | |||
| return; | |||
| @@ -385,6 +423,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| wxOfflineActivityGrantAward.setUpdateDate(now); | |||
| 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); | |||
| //处理奖项 | |||
| @@ -401,6 +449,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| // List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); | |||
| WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); | |||
| recordQ.updateTenantInfo(wxOfflineActivityGrantAward); | |||
| recordQ.setActivityId(activity.getId()); | |||
| recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); | |||
| List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ); | |||
| if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { | |||
| @@ -613,28 +662,48 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| } | |||
| 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);; | |||
| 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){ | |||
| 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())) { | |||
| 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())){ | |||
| grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(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); | |||
| 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天数据 | |||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | |||
| grantAwardQ.updateTenantInfo(tenantInfo); | |||
| grantAwardQ.setStatus(EnumYesOrNo.YES.getCode()); | |||
| grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | |||
| Integer monthCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | |||
| //一周前的昨天 | |||
| @@ -732,18 +802,26 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| @Override | |||
| 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(); | |||
| grantAwardQ.updateTenantInfo(wxOfflineActivityGrantAward); | |||
| grantAwardQ.setIds(grantIds); | |||
| // grantAwardQ.setIds(grantIds); | |||
| grantAwardQ.setActivityId(wxOfflineActivityGrantAward.getActivityId()); | |||
| grantAwardQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); | |||
| List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | |||
| for (WxOfflineActivityGrantAward grantAward : grantAwardList) { | |||
| //获取奖项 | |||
| List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(grantAward.getActivityId(), grantAward.getTenantId()); | |||
| 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(); | |||
| grantItemQ.updateTenantInfo(grantAward); | |||
| @@ -751,6 +829,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| List<WxOfflineActivityGrantItem> grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | |||
| Map<Long, List<WxOfflineActivityGrantItem>> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); | |||
| for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { | |||
| activityItem.setActivityGrantCashBack(cashBackMap.get(activityItem.getId())); | |||
| List<WxOfflineActivityGrantItem> grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); | |||
| if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { | |||
| activityItem.setIsMeet(false); | |||
| @@ -783,6 +862,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | |||
| grantAwardQ.updateTenantInfo(wxOfflineActivity); | |||
| grantAwardQ.setActivityId(wxOfflineActivity.getId()); | |||
| grantAwardQ.setStatus(EnumYesOrNo.YES.getCode()); | |||
| List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | |||
| if(grantAwardList != null){ | |||
| WxMerchant merchantQ = new WxMerchant(); | |||
| @@ -796,6 +876,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | |||
| grantItemQ.updateTenantInfo(wxOfflineActivity); | |||
| grantItemQ.setActivityId(wxOfflineActivity.getId()); | |||
| grantItemQ.setStatus(EnumYesOrNo.YES.getCode()); | |||
| List<WxOfflineActivityGrantItem> grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | |||
| Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(groupingBy(WxOfflineActivityGrantItem::getGrantId)); | |||
| 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.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantCashBack; | |||
| 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.mapper.WxOfflineActivityGrantCashBackMapper; | |||
| import com.iformall.service.WxOfflineActivityGrantItemService; | |||
| import com.iformall.mapper.WxOfflineActivityGrantItemMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| @@ -29,21 +31,23 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG | |||
| @Autowired | |||
| private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; | |||
| @Autowired | |||
| private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; | |||
| @Override | |||
| 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(); | |||
| 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(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())){ | |||
| // BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() | |||
| // .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); | |||
| @@ -56,10 +60,25 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG | |||
| // 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.updateStatusNo(wxOfflineActivityGrantAward); | |||
| } | |||
| @Override | |||
| @@ -177,6 +178,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| //最近30天 | |||
| WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | |||
| settlement.updateTenantInfo(tenantInfo); | |||
| settlement.setStatus(EnumYesOrNo.YES.getCode()); | |||
| settlement.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | |||
| OfflineActivitySettlementStatistics monthStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||
| //一周前的昨天 | |||
| @@ -270,6 +272,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| //获取结算相关 | |||
| WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | |||
| settlement.updateTenantInfo(activity); | |||
| settlement.setStatus(EnumYesOrNo.YES.getCode()); | |||
| settlement.setActivityId(activity.getId()); | |||
| OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||
| activity.setGrantMershantCount(settlementStatistics.getMerchantCount()); | |||
| @@ -294,7 +297,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| record.setMerchantIdList(mids); | |||
| } | |||
| } | |||
| record.setStatus(EnumYesOrNo.YES.getCode()); | |||
| List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(record); | |||
| if (activitySettlementList != null && !activitySettlementList.isEmpty()) { | |||
| @@ -325,6 +328,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| }else{ | |||
| result.put("merchantName",merchant.getName()); | |||
| } | |||
| grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); | |||
| List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(grantSettlement); | |||
| if (activitySettlementList == null || activitySettlementList.isEmpty()) { | |||
| result.put("recordCount",0); | |||
| @@ -100,6 +100,7 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||
| } | |||
| } | |||
| if(awardQ != null){ | |||
| awardQ.setStatus(EnumYesOrNo.YES.getCode()); | |||
| List<Long> rids = wxOfflineActivityGrantAwardMapper.getRecordIdList(awardQ); | |||
| if (null == rids || rids.size() <= 0 ) { | |||
| record.setId(-1L); | |||
| @@ -112,6 +112,7 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ | |||
| WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | |||
| grantItemQ.updateTenantInfo(activity); | |||
| grantItemQ.setActivityId(activity.getId()); | |||
| grantItemQ.setStatus(EnumYesOrNo.YES.getCode()); | |||
| activity.setGrantItemCount(wxOfflineActivityGrantItemMapper.getSumAwardCount(grantItemQ)); | |||
| } | |||
| @@ -22,6 +22,7 @@ | |||
| <result property="lotteryNum" column="lottery_num" jdbcType="VARCHAR"/> | |||
| <result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/> | |||
| <result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="VARCHAR"/> | |||
| <result property="status" column="status" jdbcType="INTEGER"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| @@ -58,6 +59,9 @@ | |||
| <if test=" null != cusPhone and cusPhone != '' "> | |||
| and `cus_phone` = #{cusPhone} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| @@ -91,6 +95,9 @@ | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| </select> | |||
| @@ -113,6 +120,9 @@ | |||
| <if test=" null != createDateEnd"> | |||
| and ga.`create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != createByIds "> | |||
| and ga.create_by in | |||
| <foreach collection="createByIds" index="index" item="sendItem" open="(" separator="," close=")"> | |||
| @@ -124,4 +134,15 @@ | |||
| <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> | |||
| <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> | |||
| @@ -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="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| <result property="recordId" column="record_id" jdbcType="BIGINT"/> | |||
| <result property="status" column="status" jdbcType="INTEGER"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| @@ -70,6 +71,10 @@ | |||
| and `award_itam_id` = #{awardItamId} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| @@ -119,6 +124,17 @@ | |||
| <if test=" null != activityId "> | |||
| and activity_id = #{activityId} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| </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> | |||
| @@ -25,6 +25,7 @@ | |||
| <result property="realMerchantSharePrice" column="real_merchant_share_price" jdbcType="DECIMAL"/> | |||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| <result property="status" column="status" jdbcType="INTEGER"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| @@ -80,6 +81,9 @@ | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != merchantIdList "> | |||
| and merchant_id in | |||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||
| @@ -149,6 +153,10 @@ | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| </select> | |||
| @@ -174,6 +182,9 @@ | |||
| <if test=" null != merchantId "> | |||
| and `merchant_id` = #{merchantId} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != merchantIdList "> | |||
| and merchant_id in | |||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||
| @@ -185,4 +196,11 @@ | |||
| </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> | |||