| @@ -0,0 +1,120 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.WxOfflineActivity; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | |||||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.OfflineActivitySettlement; | |||||
| import com.iformall.service.WxOfflineActivityGrantAwardService; | |||||
| import com.iformall.service.WxOfflineActivityGrantSettlementService; | |||||
| import com.iformall.service.WxOfflineActivityRecordService; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import jodd.util.StringUtil; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| /** | |||||
| * @author alascor | |||||
| * | |||||
| */ | |||||
| @RestController | |||||
| @RequestMapping("/offlineSettlement") | |||||
| @Api(description = "线下活动结算相关接口") | |||||
| public class WxOfflineActivitySettlementController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxOfflineActivityGrantAwardService wxOfflineActivityGrantAwardService; | |||||
| @Autowired | |||||
| private WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; | |||||
| @Autowired | |||||
| private WxOfflineActivityRecordService wxOfflineActivityRecordService; | |||||
| @ApiOperation("中奖会员相关统计") | |||||
| @GetMapping("cusStatistics") | |||||
| public ResultData cusStatistics() { | |||||
| Map<String,Object> statisticsMap = wxOfflineActivityGrantAwardService.cusStatistics(getTenantInfo()); | |||||
| return new ResultData(statisticsMap); | |||||
| } | |||||
| @ApiOperation("发奖结算相关统计") | |||||
| @GetMapping("settlementStatistics") | |||||
| public ResultData settlementStatistics() { | |||||
| Map<String,Object> statisticsMap = wxOfflineActivityGrantSettlementService.settlementStatistics(getTenantInfo()); | |||||
| return new ResultData(statisticsMap); | |||||
| } | |||||
| @ApiOperation("订单相关统计") | |||||
| @GetMapping("recordStatistics") | |||||
| public ResultData recordStatistics() { | |||||
| Map<String,Object> statisticsMap = wxOfflineActivityRecordService.orderStatistics(getTenantInfo()); | |||||
| return new ResultData(statisticsMap); | |||||
| } | |||||
| @ApiOperation("活动结算分页列表接口") | |||||
| @GetMapping("activityList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| public ResultData activityList(@ModelAttribute WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize) { | |||||
| if (null == wxOfflineActivity) wxOfflineActivity = new WxOfflineActivity(); | |||||
| TenantEntity tenantInfo = getTenantInfo(); | |||||
| wxOfflineActivity.updateTenantInfo(tenantInfo); | |||||
| wxOfflineActivity.setSortColumns(SortField.CreateDate_DESC); | |||||
| final PageInfo<WxOfflineActivity> page = wxOfflineActivityGrantSettlementService.activityListAsPage(wxOfflineActivity, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("单个活动结算列表") | |||||
| @GetMapping("activitySettlement") | |||||
| @ApiImplicitParams({}) | |||||
| public ResultData activitySettlement(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { | |||||
| if(grantSettlement.getActivityId() == null){ | |||||
| return new ResultData(Result.ERROR,"请选择活动"); | |||||
| } | |||||
| TenantEntity tenantInfo = getTenantInfo(); | |||||
| grantSettlement.updateTenantInfo(tenantInfo); | |||||
| List<OfflineActivitySettlement> recordList = wxOfflineActivityGrantSettlementService.getActivitySettlement(grantSettlement); | |||||
| return new ResultData(recordList); | |||||
| } | |||||
| @ApiOperation("单个活动单个门店结算列表") | |||||
| @GetMapping("merchantSettlement") | |||||
| @ApiImplicitParams({}) | |||||
| public ResultData merchantSettlement(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { | |||||
| if(grantSettlement.getActivityId() == null){ | |||||
| return new ResultData(Result.ERROR,"请选择活动"); | |||||
| } | |||||
| if(grantSettlement.getMerchantId() == null){ | |||||
| return new ResultData(Result.ERROR,"请选择门店"); | |||||
| } | |||||
| TenantEntity tenantInfo = getTenantInfo(); | |||||
| grantSettlement.updateTenantInfo(tenantInfo); | |||||
| List<WxOfflineActivityGrantSettlement> recordList = wxOfflineActivityGrantSettlementService.findList(grantSettlement); | |||||
| return new ResultData(recordList); | |||||
| } | |||||
| } | |||||
| @@ -85,4 +85,25 @@ public class WxOfflineActivity extends TenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private Integer validStatus; | private Integer validStatus; | ||||
| /** | |||||
| * 参与订单数 | |||||
| */ | |||||
| @TableField(exist = false) | |||||
| private Integer grantMershantCount; | |||||
| /** | |||||
| * 发放订单数 | |||||
| */ | |||||
| @TableField(exist = false) | |||||
| private Integer grantRecordCount; | |||||
| /** | |||||
| * 发放总额 | |||||
| */ | |||||
| @TableField(exist = false) | |||||
| private Integer grantPrice; | |||||
| /** | |||||
| * 商户结算总额 | |||||
| */ | |||||
| @TableField(exist = false) | |||||
| private Integer merchantSettlmentPrice; | |||||
| } | } | ||||
| @@ -92,6 +92,11 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ | |||||
| @TableField(value = "create_date") | @TableField(value = "create_date") | ||||
| private Date createDate; | private Date createDate; | ||||
| @TableField(exist = false) | |||||
| private Date createDateBegin; | |||||
| @TableField(exist = false) | |||||
| private Date createDateEnd; | |||||
| /** | /** | ||||
| * 更新时间 | * 更新时间 | ||||
| */ | */ | ||||
| @@ -130,24 +130,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity { | |||||
| @TableField(value = "mall_share_rate") | @TableField(value = "mall_share_rate") | ||||
| private BigDecimal mallShareRate; | private BigDecimal mallShareRate; | ||||
| /** | |||||
| * | |||||
| */ | |||||
| @TableField(value = "mall_share_price") | |||||
| private Integer mallSharePrice; | |||||
| /** | /** | ||||
| * 商户分担比例 | * 商户分担比例 | ||||
| */ | */ | ||||
| @TableField(value = "merchant_share_rate") | @TableField(value = "merchant_share_rate") | ||||
| private BigDecimal merchantShareRate; | private BigDecimal merchantShareRate; | ||||
| /** | |||||
| * | |||||
| */ | |||||
| @TableField(value = "merchant_share_price") | |||||
| private Integer merchantSharePrice; | |||||
| /** | /** | ||||
| * 创建时间 | * 创建时间 | ||||
| */ | */ | ||||
| @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.List; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| @@ -52,6 +53,10 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||||
| */ | */ | ||||
| @TableField(value = "merchant_id") | @TableField(value = "merchant_id") | ||||
| private Long merchantId; | private Long merchantId; | ||||
| @TableField(exist = false) | |||||
| private String merchantName; | |||||
| @TableField(exist = false) | |||||
| private List<Long> merchantIdList; | |||||
| /** | /** | ||||
| * 活动id | * 活动id | ||||
| @@ -84,13 +89,13 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||||
| private Integer grantPrice; | private Integer grantPrice; | ||||
| /** | /** | ||||
| * 商管承担总金额 | |||||
| * 商管承担z占比 | |||||
| */ | */ | ||||
| @TableField(value = "mall_share_rate") | @TableField(value = "mall_share_rate") | ||||
| private BigDecimal mallShareRate; | private BigDecimal mallShareRate; | ||||
| /** | /** | ||||
| * 商户承担总金额 | |||||
| * 商户承担占比 | |||||
| */ | */ | ||||
| @TableField(value = "merchant_share_rate") | @TableField(value = "merchant_share_rate") | ||||
| private BigDecimal merchantShareRate; | private BigDecimal merchantShareRate; | ||||
| @@ -125,6 +130,11 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||||
| @TableField(value = "create_date") | @TableField(value = "create_date") | ||||
| private Date createDate; | private Date createDate; | ||||
| @TableField(exist = false) | |||||
| private Date createDateBegin; | |||||
| @TableField(exist = false) | |||||
| private Date createDateEnd; | |||||
| /** | /** | ||||
| * 更新时间 | * 更新时间 | ||||
| */ | */ | ||||
| @@ -0,0 +1,21 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.util.List; | |||||
| @Data | |||||
| public class OfflineActivitySettlement extends TenantEntity { | |||||
| private Long activityId; | |||||
| private Long merchantId; | |||||
| private String merchantName; | |||||
| private Integer recordCount; | |||||
| private Integer sumOrderMoney; | |||||
| private Integer sumGrantPrice; | |||||
| private Integer sumMallPrice; | |||||
| private Integer sumMerchantPrice; | |||||
| } | |||||
| @@ -0,0 +1,17 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| @Data | |||||
| public class OfflineActivitySettlementStatistics implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | |||||
| private Integer sumGrantPrice; | |||||
| private Integer recordCount; | |||||
| private Integer merchantCount; | |||||
| private Integer sumMallPrice; | |||||
| private Integer sumMerchantPrice; | |||||
| } | |||||
| @@ -2,7 +2,6 @@ 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.WxOfflineActivityGrantAward; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -12,6 +11,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
| */ | */ | ||||
| public interface WxOfflineActivityGrantAwardMapper extends CommonMapper<WxOfflineActivityGrantAward, Long> { | public interface WxOfflineActivityGrantAwardMapper extends CommonMapper<WxOfflineActivityGrantAward, Long> { | ||||
| Integer getCusCount(WxOfflineActivityGrantAward grantAwardQ); | |||||
| } | } | ||||
| @@ -3,6 +3,8 @@ package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| 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.OfflineActivitySettlementStatistics; | |||||
| import java.util.List; | import java.util.List; | ||||
| @@ -15,6 +17,12 @@ import java.util.List; | |||||
| public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxOfflineActivityGrantSettlement, Long> { | public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxOfflineActivityGrantSettlement, Long> { | ||||
| void insertList(List<WxOfflineActivityGrantSettlement> settlementList); | void insertList(List<WxOfflineActivityGrantSettlement> settlementList); | ||||
| OfflineActivitySettlementStatistics settlementStatistics(WxOfflineActivityGrantSettlement settlement); | |||||
| List<OfflineActivitySettlement> getActivitySettlement(WxOfflineActivityGrantSettlement settlement); | |||||
| List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement settlement); | |||||
| } | } | ||||
| @@ -25,6 +25,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper<WxOfflineAct | |||||
| void updateAuditStatus(WxOfflineActivityRecord record); | void updateAuditStatus(WxOfflineActivityRecord record); | ||||
| WxOfflineActivityRecord selectLimitOne(WxOfflineActivityRecord wxOfflineActivityRecord); | WxOfflineActivityRecord selectLimitOne(WxOfflineActivityRecord wxOfflineActivityRecord); | ||||
| Integer getCount(WxOfflineActivityRecord recordQ); | |||||
| } | } | ||||
| @@ -3,6 +3,7 @@ package com.iformall.service; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | import com.iformall.domain.po.WxOfflineActivityGrantAward; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.iformall.domain.po.WxOfflineActivityRecord; | import com.iformall.domain.po.WxOfflineActivityRecord; | ||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -19,4 +20,6 @@ public interface WxOfflineActivityGrantAwardService { | |||||
| List<WxOfflineActivityRecord> getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); | List<WxOfflineActivityRecord> getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); | ||||
| void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | ||||
| Map<String, Object> cusStatistics(TenantEntity tenantInfo); | |||||
| } | } | ||||
| @@ -1,8 +1,15 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxOfflineActivity; | |||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | import com.iformall.domain.po.WxOfflineActivityGrantAward; | ||||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.OfflineActivitySettlement; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -12,4 +19,12 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| public interface WxOfflineActivityGrantSettlementService { | public interface WxOfflineActivityGrantSettlementService { | ||||
| void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | ||||
| Map<String, Object> settlementStatistics(TenantEntity tenantInfo); | |||||
| PageInfo<WxOfflineActivity> activityListAsPage(WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize); | |||||
| List<OfflineActivitySettlement> getActivitySettlement(WxOfflineActivityGrantSettlement grantSettlement); | |||||
| List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement grantSettlement); | |||||
| } | } | ||||
| @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxOfflineActivityRecord; | import com.iformall.domain.po.WxOfflineActivityRecord; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.iformall.domain.po.WxRaffleActivityRecord; | import com.iformall.domain.po.WxRaffleActivityRecord; | ||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -25,4 +26,5 @@ public interface WxOfflineActivityRecordService { | |||||
| void auditRecord(WxOfflineActivityRecord wxOfflineActivityRecord, Long userId); | void auditRecord(WxOfflineActivityRecord wxOfflineActivityRecord, Long userId); | ||||
| Map<String, Object> orderStatistics(TenantEntity tenantInfo); | |||||
| } | } | ||||
| @@ -16,11 +16,13 @@ import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; | |||||
| import com.iformall.mapper.WxOfflineActivityRecordMapper; | import com.iformall.mapper.WxOfflineActivityRecordMapper; | ||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; | import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; | ||||
| import com.iformall.utils.DateUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.text.NumberFormat; | |||||
| import java.util.*; | import java.util.*; | ||||
| import java.util.function.Function; | import java.util.function.Function; | ||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| @@ -170,6 +172,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| wxOfflineActivityGrantSettlementService.settlement(wxOfflineActivityGrantAward); | wxOfflineActivityGrantSettlementService.settlement(wxOfflineActivityGrantAward); | ||||
| } | } | ||||
| private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ | private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ | ||||
| List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); | List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); | ||||
| @@ -308,6 +311,57 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); | grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); | ||||
| grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); | grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); | ||||
| } | } | ||||
| @Override | |||||
| public Map<String, Object> cusStatistics(TenantEntity tenantInfo) { | |||||
| //最近30天 | |||||
| Date now = new Date(); | |||||
| String monthStartdate = DateUtils.getTimeBefore(30, now); | |||||
| String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 | |||||
| String weekStartdate = DateUtils.getTimeBefore(7, now); | |||||
| String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 | |||||
| String yesterdayDate = DateUtils.getTimeBefore(1, now); | |||||
| String today = DateUtils.getTimeBefore(0, now); | |||||
| //最近30天数据 | |||||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | |||||
| grantAwardQ.updateTenantInfo(tenantInfo); | |||||
| grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | |||||
| Integer monthCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | |||||
| //一周前的昨天 | |||||
| grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); | |||||
| grantAwardQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); | |||||
| Integer yesWeekCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | |||||
| //昨天的昨天 | |||||
| grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); | |||||
| grantAwardQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); | |||||
| Integer yesYesCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | |||||
| //昨天 | |||||
| grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); | |||||
| grantAwardQ.setCreateDateEnd(DateUtils.stringToDate(today)); | |||||
| Integer yesCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); | |||||
| Map<String, Object> result = new HashMap<>(); | |||||
| result.put("monthCount",monthCount); | |||||
| NumberFormat nf = NumberFormat.getPercentInstance(); | |||||
| nf.setMinimumFractionDigits(2); | |||||
| String dayPercentage = "--"; | |||||
| if (yesYesCount > 0) { | |||||
| Integer count = yesCount - yesYesCount; | |||||
| dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue()); | |||||
| } | |||||
| result.put("dayPercentage",dayPercentage); | |||||
| String weekPercentage = "--"; | |||||
| if (yesWeekCount > 0) { | |||||
| Integer count = yesCount - yesWeekCount; | |||||
| weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue()); | |||||
| } | |||||
| result.put("weekPercentage",weekPercentage); | |||||
| return result; | |||||
| } | |||||
| } | } | ||||
| @@ -56,8 +56,6 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG | |||||
| grantGrantItem.setAwardPrice(awardPriceTen*1000); | grantGrantItem.setAwardPrice(awardPriceTen*1000); | ||||
| } | } | ||||
| } | } | ||||
| grantGrantItem.setMallSharePrice(new BigDecimal(grantGrantItem.getAwardPrice()).multiply(grantGrantItem.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); | |||||
| grantGrantItem.setMerchantSharePrice(grantGrantItem.getAwardPrice() - grantGrantItem.getMallSharePrice()); | |||||
| rantItemList.add(grantGrantItem); | rantItemList.add(grantGrantItem); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,19 +1,29 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.github.pagehelper.PageHelper; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.OfflineActivitySettlement; | |||||
| import com.iformall.domain.vo.OfflineActivitySettlementStatistics; | |||||
| import com.iformall.enums.EnumOfflineActivityStatus; | |||||
| import com.iformall.enums.EnumYesOrNo; | |||||
| import com.iformall.mapper.WxMerchantMapper; | |||||
| import com.iformall.mapper.WxOfflineActivityMapper; | |||||
| import com.iformall.service.WxMerchantService; | |||||
| import com.iformall.service.WxOfflineActivityGrantSettlementService; | import com.iformall.service.WxOfflineActivityGrantSettlementService; | ||||
| import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; | import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; | ||||
| import com.iformall.utils.DateUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | import java.math.RoundingMode; | ||||
| import java.util.ArrayList; | |||||
| import java.util.Comparator; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import java.text.NumberFormat; | |||||
| import java.util.*; | |||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| /** | /** | ||||
| @@ -27,6 +37,14 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| @Autowired | @Autowired | ||||
| private WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; | private WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; | ||||
| @Autowired | |||||
| WxOfflineActivityMapper wxOfflineActivityMapper; | |||||
| @Autowired | |||||
| WxMerchantMapper wxMerchantMapper; | |||||
| @Autowired | |||||
| WxMerchantService wxMerchantService; | |||||
| @Override | @Override | ||||
| public void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { | public void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { | ||||
| List<WxOfflineActivityGrantSettlement> settlementList = new ArrayList<>(); | List<WxOfflineActivityGrantSettlement> settlementList = new ArrayList<>(); | ||||
| @@ -97,6 +115,147 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||||
| wxOfflineActivityGrantSettlementMapper.insertList(settlementList); | wxOfflineActivityGrantSettlementMapper.insertList(settlementList); | ||||
| } | } | ||||
| @Override | |||||
| public Map<String, Object> settlementStatistics(TenantEntity tenantInfo) { | |||||
| //最近30天 | |||||
| Date now = new Date(); | |||||
| String monthStartdate = DateUtils.getTimeBefore(30, now); | |||||
| String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 | |||||
| String weekStartdate = DateUtils.getTimeBefore(7, now); | |||||
| String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 | |||||
| String yesterdayDate = DateUtils.getTimeBefore(1, now); | |||||
| String today = DateUtils.getTimeBefore(0, now); | |||||
| //最近30天 | |||||
| WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | |||||
| settlement.updateTenantInfo(tenantInfo); | |||||
| settlement.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | |||||
| OfflineActivitySettlementStatistics monthStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||||
| //一周前的昨天 | |||||
| settlement.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); | |||||
| settlement.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); | |||||
| OfflineActivitySettlementStatistics yesWeekStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||||
| //昨天的昨天 | |||||
| settlement.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); | |||||
| settlement.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); | |||||
| OfflineActivitySettlementStatistics yesYesStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||||
| //昨天 | |||||
| settlement.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); | |||||
| settlement.setCreateDateEnd(DateUtils.stringToDate(today)); | |||||
| OfflineActivitySettlementStatistics yesStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||||
| Map<String, Object> result = new HashMap<>(); | |||||
| result.put("monthGrantPrice",monthStatistics.getSumGrantPrice()); | |||||
| result.put("grantPriceDayPercentage",getPercentage(yesStatistics.getSumGrantPrice(),yesYesStatistics.getSumGrantPrice())); | |||||
| result.put("grantPriceWeekPercentage",getPercentage(yesStatistics.getSumGrantPrice(),yesWeekStatistics.getSumGrantPrice())); | |||||
| result.put("monthRecordCount",monthStatistics.getRecordCount()); | |||||
| result.put("recordCountDayPercentage",getPercentage(yesStatistics.getRecordCount(),yesYesStatistics.getRecordCount())); | |||||
| result.put("recordCountWeekPercentage",getPercentage(yesStatistics.getRecordCount(),yesWeekStatistics.getRecordCount())); | |||||
| result.put("monthMallPrice",monthStatistics.getSumMallPrice()); | |||||
| result.put("mallPriceDayPercentage",getPercentage(yesStatistics.getSumMallPrice(),yesYesStatistics.getSumMallPrice())); | |||||
| result.put("mallPriceWeekPercentage",getPercentage(yesStatistics.getSumMallPrice(),yesWeekStatistics.getSumMallPrice())); | |||||
| result.put("monthMerchantPrice",monthStatistics.getSumMerchantPrice()); | |||||
| result.put("merchantPriceDayPercentage",getPercentage(yesStatistics.getSumMerchantPrice(),yesYesStatistics.getSumMerchantPrice())); | |||||
| result.put("merchantPriceWeekPercentage",getPercentage(yesStatistics.getSumMerchantPrice(),yesWeekStatistics.getSumMerchantPrice())); | |||||
| return result; | |||||
| } | |||||
| private String getPercentage(Integer yes, Integer yesYes){ | |||||
| NumberFormat nf = NumberFormat.getPercentInstance(); | |||||
| nf.setMinimumFractionDigits(2); | |||||
| String percentage = "--"; | |||||
| if(yes > 0){ | |||||
| Integer count = yes - yesYes; | |||||
| percentage = nf.format(count.doubleValue() / new Double(yesYes).doubleValue()); | |||||
| } | |||||
| return percentage; | |||||
| } | |||||
| @Override | |||||
| public PageInfo<WxOfflineActivity> activityListAsPage(WxOfflineActivity activity, Integer pageNum, Integer pageSize) { | |||||
| handlerQuery(activity); | |||||
| PageInfo<WxOfflineActivity> activityPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityMapper.findList(activity)); | |||||
| handlerReturnList(activityPageInfo.getList()); | |||||
| return activityPageInfo; | |||||
| } | |||||
| private void handlerQuery(WxOfflineActivity record) { | |||||
| if (null != record.getStatus()) { | |||||
| //已上架 | |||||
| if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(record.getStatus())){ | |||||
| record.setValidStatus(EnumYesOrNo.NO.getCode()); | |||||
| } | |||||
| //已过期 | |||||
| else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(record.getStatus())){ | |||||
| record.setStatus(null); | |||||
| record.setValidStatus(EnumYesOrNo.YES.getCode()); | |||||
| } | |||||
| } | |||||
| } | |||||
| private void handlerReturnList(List<WxOfflineActivity> list) { | |||||
| if (list == null || list.isEmpty()) { | |||||
| return; | |||||
| } | |||||
| for (WxOfflineActivity activity : list) { | |||||
| if(new Date().before(activity.getStartTime())){ | |||||
| activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); | |||||
| } | |||||
| //获取结算相关 | |||||
| WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); | |||||
| settlement.updateTenantInfo(activity); | |||||
| settlement.setActivityId(activity.getId()); | |||||
| OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); | |||||
| activity.setGrantMershantCount(settlementStatistics.getMerchantCount()); | |||||
| activity.setGrantPrice(settlementStatistics.getSumGrantPrice()); | |||||
| activity.setGrantRecordCount(settlementStatistics.getRecordCount()); | |||||
| activity.setMerchantSettlmentPrice(settlementStatistics.getSumMerchantPrice()); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public List<OfflineActivitySettlement> getActivitySettlement(WxOfflineActivityGrantSettlement record) { | |||||
| if (StringUtils.isNotBlank(record.getMerchantName())) { | |||||
| WxMerchant merchant = new WxMerchant(); | |||||
| merchant.updateTenantInfo(record); | |||||
| merchant.setName(record.getMerchantName()); | |||||
| List<Long> mids = wxMerchantMapper.findIdList(merchant); | |||||
| if (null == mids || mids.size() <= 0 ) { | |||||
| record.setId(-1L); | |||||
| }else { | |||||
| record.setMerchantIdList(mids); | |||||
| } | |||||
| } | |||||
| List<OfflineActivitySettlement> activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(record); | |||||
| if (activitySettlementList != null && !activitySettlementList.isEmpty()) { | |||||
| WxMerchant merchantQ = new WxMerchant(); | |||||
| merchantQ.updateTenantInfo(record); | |||||
| Map<Long, String> idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); | |||||
| for (OfflineActivitySettlement activitySettlement : activitySettlementList) { | |||||
| activitySettlement.setMerchantName(idAndNamesMap.get(activitySettlement.getMerchantId())); | |||||
| } | |||||
| } | |||||
| return activitySettlementList; | |||||
| } | |||||
| @Override | |||||
| public List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement grantSettlement) { | |||||
| return wxOfflineActivityGrantSettlementMapper.findList(grantSettlement); | |||||
| } | |||||
| } | } | ||||
| @@ -1,19 +1,24 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.WxMerchant; | import com.iformall.domain.po.WxMerchant; | ||||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||||
| import com.iformall.domain.po.WxOfflineActivityRecord; | import com.iformall.domain.po.WxOfflineActivityRecord; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.OfflineActivityRecordStatistics; | import com.iformall.domain.vo.OfflineActivityRecordStatistics; | ||||
| import com.iformall.enums.EnumOfflineActivityRecordStatus; | import com.iformall.enums.EnumOfflineActivityRecordStatus; | ||||
| import com.iformall.mapper.WxMerchantMapper; | |||||
| import com.iformall.service.WxMerchantService; | import com.iformall.service.WxMerchantService; | ||||
| import com.iformall.service.WxOfflineActivityRecordService; | import com.iformall.service.WxOfflineActivityRecordService; | ||||
| import com.iformall.mapper.WxOfflineActivityRecordMapper; | import com.iformall.mapper.WxOfflineActivityRecordMapper; | ||||
| import com.iformall.utils.DateUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.text.NumberFormat; | |||||
| import java.util.*; | import java.util.*; | ||||
| /** | /** | ||||
| @@ -27,16 +32,34 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||||
| @Autowired | @Autowired | ||||
| private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; | private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; | ||||
| @Autowired | |||||
| WxMerchantMapper wxMerchantMapper; | |||||
| @Autowired | @Autowired | ||||
| WxMerchantService wxMerchantService; | WxMerchantService wxMerchantService; | ||||
| @Override | @Override | ||||
| public PageInfo<WxOfflineActivityRecord> listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { | public PageInfo<WxOfflineActivityRecord> listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { | ||||
| handlerQuery(record); | |||||
| PageInfo<WxOfflineActivityRecord> recordPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityRecordMapper.findList(record)); | PageInfo<WxOfflineActivityRecord> recordPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityRecordMapper.findList(record)); | ||||
| handlerRecordList(record,recordPageInfo.getList()); | handlerRecordList(record,recordPageInfo.getList()); | ||||
| return recordPageInfo; | return recordPageInfo; | ||||
| } | } | ||||
| private void handlerQuery(WxOfflineActivityRecord record) { | |||||
| //商户处理 | |||||
| if (StringUtils.isNotBlank(record.getMerchantName())) { | |||||
| WxMerchant merchant = new WxMerchant(); | |||||
| merchant.updateTenantInfo(record); | |||||
| merchant.setName(record.getMerchantName()); | |||||
| List<Long> mids = wxMerchantMapper.findIdList(merchant); | |||||
| if (null == mids || mids.size() <= 0 ) { | |||||
| record.setId(-1L); | |||||
| }else { | |||||
| record.setMerchantIdList(mids); | |||||
| } | |||||
| } | |||||
| } | |||||
| private void handlerRecordList(TenantEntity tenantEntity,List<WxOfflineActivityRecord> recordList) { | private void handlerRecordList(TenantEntity tenantEntity,List<WxOfflineActivityRecord> recordList) { | ||||
| if (recordList != null && recordList.size() > 0) { | if (recordList != null && recordList.size() > 0) { | ||||
| WxMerchant merchantQ = new WxMerchant(); | WxMerchant merchantQ = new WxMerchant(); | ||||
| @@ -113,6 +136,55 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco | |||||
| record.setAuditBy(userId); | record.setAuditBy(userId); | ||||
| wxOfflineActivityRecordMapper.updateAuditStatus(record); | wxOfflineActivityRecordMapper.updateAuditStatus(record); | ||||
| } | } | ||||
| @Override | |||||
| public Map<String, Object> orderStatistics(TenantEntity tenantInfo) { | |||||
| //最近30天 | |||||
| Date now = new Date(); | |||||
| String monthStartdate = DateUtils.getTimeBefore(30, now); | |||||
| String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 | |||||
| String weekStartdate = DateUtils.getTimeBefore(7, now); | |||||
| String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 | |||||
| String yesterdayDate = DateUtils.getTimeBefore(1, now); | |||||
| String today = DateUtils.getTimeBefore(0, now); | |||||
| //最近30天数据 | |||||
| WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); | |||||
| recordQ.updateTenantInfo(tenantInfo); | |||||
| recordQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); | |||||
| Integer monthCount = wxOfflineActivityRecordMapper.getCount(recordQ); | |||||
| //一周前的昨天 | |||||
| recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); | |||||
| recordQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); | |||||
| Integer yesWeekCount = wxOfflineActivityRecordMapper.getCount(recordQ); | |||||
| //昨天的昨天 | |||||
| recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); | |||||
| recordQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); | |||||
| Integer yesYesCount = wxOfflineActivityRecordMapper.getCount(recordQ); | |||||
| //昨天 | |||||
| recordQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); | |||||
| recordQ.setCreateDateEnd(DateUtils.stringToDate(today)); | |||||
| Integer yesCount = wxOfflineActivityRecordMapper.getCount(recordQ); | |||||
| Map<String, Object> result = new HashMap<>(); | |||||
| result.put("monthCount",monthCount); | |||||
| NumberFormat nf = NumberFormat.getPercentInstance(); | |||||
| nf.setMinimumFractionDigits(2); | |||||
| String dayPercentage = "--"; | |||||
| if (yesYesCount > 0) { | |||||
| Integer count = yesCount - yesYesCount; | |||||
| dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue()); | |||||
| } | |||||
| result.put("dayPercentage",dayPercentage); | |||||
| String weekPercentage = "--"; | |||||
| if (yesWeekCount > 0) { | |||||
| Integer count = yesCount - yesWeekCount; | |||||
| weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue()); | |||||
| } | |||||
| result.put("weekPercentage",weekPercentage); | |||||
| return result; | |||||
| } | |||||
| } | } | ||||
| @@ -32,4 +32,24 @@ | |||||
| create_date,update_date,lottery_num, | create_date,update_date,lottery_num, | ||||
| lottery_count,anniversary_lottery_num | lottery_count,anniversary_lottery_num | ||||
| </sql> | </sql> | ||||
| <select id="getCusCount" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" resultType="Integer"> | |||||
| SELECT COUNT(DISTINCT cus_phone) FROM wx_offline_activity_grant_award | |||||
| where 1 = 1 | |||||
| <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 != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -25,9 +25,7 @@ | |||||
| <result property="awardCount" column="award_count" jdbcType="INTEGER"/> | <result property="awardCount" column="award_count" jdbcType="INTEGER"/> | ||||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | ||||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="mallSharePrice" column="mall_share_price" jdbcType="INTEGER"/> | |||||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="merchantSharePrice" column="merchant_share_price" jdbcType="INTEGER"/> | |||||
| <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"/> | ||||
| </resultMap> | </resultMap> | ||||
| @@ -39,8 +37,8 @@ | |||||
| award_itam_id,award_name,award_grade, | award_itam_id,award_name,award_grade, | ||||
| award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, | award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, | ||||
| award_price,award_count,money_rule, | award_price,award_count,money_rule, | ||||
| mall_share_rate,mall_share_price,merchant_share_rate, | |||||
| merchant_share_price,create_date,update_date | |||||
| mall_share_rate,merchant_share_rate, | |||||
| create_date,update_date | |||||
| </sql> | </sql> | ||||
| <insert id="insertList" parameterType="java.util.List"> | <insert id="insertList" parameterType="java.util.List"> | ||||
| @@ -51,8 +49,8 @@ | |||||
| `award_itam_id`,`award_name`,`award_grade`, | `award_itam_id`,`award_name`,`award_grade`, | ||||
| `award_min_amount`,`award_max_amount`,`awards_item_rule`,`cash_back_ratio`, | `award_min_amount`,`award_max_amount`,`awards_item_rule`,`cash_back_ratio`, | ||||
| `award_price`,`award_count`,`money_rule`, | `award_price`,`award_count`,`money_rule`, | ||||
| `mall_share_rate`,`mall_share_price`,`merchant_share_rate`, | |||||
| `merchant_share_price`,`create_date`,`update_date`) | |||||
| `mall_share_rate`,`merchant_share_rate`, | |||||
| `create_date`,`update_date`) | |||||
| values | values | ||||
| <foreach collection="addList" item="item" index="index" separator=","> | <foreach collection="addList" item="item" index="index" separator=","> | ||||
| (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, | (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, | ||||
| @@ -61,8 +59,8 @@ | |||||
| #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, | #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, | ||||
| #{item.awardMinAmount,jdbcType=INTEGER},#{item.awardMaxAmount,jdbcType=INTEGER},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, | #{item.awardMinAmount,jdbcType=INTEGER},#{item.awardMaxAmount,jdbcType=INTEGER},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, | ||||
| #{item.awardPrice,jdbcType=INTEGER},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, | #{item.awardPrice,jdbcType=INTEGER},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, | ||||
| #{item.mallShareRate,jdbcType=DECIMAL},#{item.mallSharePrice,jdbcType=INTEGER},#{item.merchantShareRate,jdbcType=DECIMAL}, | |||||
| #{item.merchantSharePrice,jdbcType=INTEGER},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | |||||
| #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, | |||||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | |||||
| </foreach> | </foreach> | ||||
| </insert> | </insert> | ||||
| </mapper> | </mapper> | ||||
| @@ -37,8 +37,72 @@ | |||||
| create_date,update_date | create_date,update_date | ||||
| </sql> | </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 != recordId "> | |||||
| and `record_id` = #{recordId} | |||||
| </if> | |||||
| <if test=" null != orderNo and orderNo != '' "> | |||||
| and `order_no` like concat('%', #{orderNo},'%') | |||||
| </if> | |||||
| <if test=" null != merchantId "> | |||||
| and `merchant_id` = #{merchantId} | |||||
| </if> | |||||
| <if test=" null != activityId "> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != activityItemId "> | |||||
| and `activity_item_id` = #{activityItemId} | |||||
| </if> | |||||
| <if test=" null != awardItamId "> | |||||
| and `award_itam_id` = #{awardItamId} | |||||
| </if> | |||||
| <if test=" null != grantId "> | |||||
| and `grant_id` = #{grantId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != merchantIdList "> | |||||
| and merchant_id in | |||||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||||
| #{midItem} | |||||
| </foreach> | |||||
| </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.WxOfflineActivityGrantSettlement" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_offline_activity_grant_settlement | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </select> | |||||
| <insert id="insertList" parameterType="java.util.List"> | <insert id="insertList" parameterType="java.util.List"> | ||||
| insert into wx_offline_activity_grant_item | |||||
| insert into wx_offline_activity_grant_settlement | |||||
| (id,tenant_id,parent_tenant_id, | (id,tenant_id,parent_tenant_id, | ||||
| record_id,order_no,order_money, | record_id,order_no,order_money, | ||||
| merchant_id,activity_id,activity_item_id, | merchant_id,activity_id,activity_item_id, | ||||
| @@ -57,4 +121,73 @@ | |||||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | ||||
| </foreach> | </foreach> | ||||
| </insert> | </insert> | ||||
| <select id="settlementStatistics" parameterType="com.iformall.domain.po.WxOfflineActivityGrantSettlement" resultType="com.iformall.domain.vo.OfflineActivitySettlementStatistics"> | |||||
| SELECT sum(real_grant_price) as 'sumGrantPrice', | |||||
| count(DISTINCT record_id) as 'recordCount', | |||||
| count(DISTINCT merchant_id) as 'merchantCount', | |||||
| sum(real_mall_share_price) as 'sumMallPrice', | |||||
| sum(real_merchant_share_price) as 'sumMerchantPrice' | |||||
| FROM wx_offline_activity_grant_settlement | |||||
| where 1 = 1 | |||||
| <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 != activityId"> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| </select> | |||||
| <select id="getActivitySettlement" parameterType="com.iformall.domain.po.WxOfflineActivityGrantSettlement" resultType="com.iformall.domain.vo.OfflineActivitySettlement"> | |||||
| SELECT merchant_id as 'merchantId', | |||||
| activity_id as 'activityId', | |||||
| count(DISTINCT record_id) as 'recordCount', | |||||
| sum(order_money) as 'sumOrderMoney', | |||||
| sum(real_grant_price) as 'sumGrantPrice', | |||||
| sum(real_mall_share_price) as 'sumMallPrice', | |||||
| sum(real_merchant_share_price) as 'sumMerchantPrice' | |||||
| FROM wx_offline_activity_grant_settlement | |||||
| where `activity_id` = #{activityId} | |||||
| <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 != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != merchantIdList "> | |||||
| and merchant_id in | |||||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||||
| #{midItem} | |||||
| </foreach> | |||||
| </if> | |||||
| group by merchant_id | |||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -193,4 +193,23 @@ | |||||
| </if> | </if> | ||||
| </update> | </update> | ||||
| <select id="getCount" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="Integer"> | |||||
| SELECT COUNT(1) FROM wx_offline_activity_record | |||||
| where 1 = 1 | |||||
| <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 != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||