diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index 2ef812b6f..29e56db56 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -58,7 +58,7 @@ public class WxOfflineActivityGrantController extends BaseController { @ApiOperation("参加活动用户订单列表") @GetMapping("recordList") @ApiImplicitParams({}) - public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + public ResultData recordList(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { if(wxOfflineActivityRecord.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java index 47d47dda5..d1fb8f257 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -4,13 +4,11 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.WxOfflineActivity; -import com.iformall.domain.po.WxOfflineActivityGrantAward; -import com.iformall.domain.po.WxOfflineActivityGrantSettlement; -import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivitySettlement; +import com.iformall.exception.MallinkException; import com.iformall.service.WxOfflineActivityGrantAwardService; import com.iformall.service.WxOfflineActivityGrantSettlementService; import com.iformall.service.WxOfflineActivityRecordService; @@ -24,6 +22,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -117,4 +117,18 @@ public class WxOfflineActivitySettlementController extends BaseController { return new ResultData(recordList); } + @ApiOperation("单个活动单个门店结算记录导出") + @GetMapping("/merchantSettlementExport") + public void exportData(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement, HttpServletRequest request, HttpServletResponse response) { + if(grantSettlement.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"请选择活动"); + } + if(grantSettlement.getMerchantId() == null){ + throw new MallinkException(Result.ERROR,"请选择门店"); + } + TenantEntity tenantInfo = getTenantInfo(); + grantSettlement.updateTenantInfo(tenantInfo); + wxOfflineActivityGrantSettlementService.exportData(request,response,grantSettlement); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java index 7eac3b3ad..af96ea769 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java @@ -85,12 +85,40 @@ public class WxOfflineActivity extends TenantEntity { @TableField(exist = false) private Integer validStatus; + /** + * 参与订单数量 + */ + @TableField(exist = false) + private Integer recordCount; + /** + * 参与待审核订单数量 + */ + @TableField(exist = false) + private Integer waitRecordCount; + /** + * 参与已审核订单数量 + */ + @TableField(exist = false) + private Integer successRecordCount; /** - * 参与订单数 + * 参与商户数量 + */ + @TableField(exist = false) + private Integer mershantCount; + + /** + * 发放商户数量 */ @TableField(exist = false) private Integer grantMershantCount; + + /** + * 发放奖项数量 + */ + @TableField(exist = false) + private Integer grantItemCount; + /** * 发放订单数 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index f3984ebd7..a98313161 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -85,6 +85,8 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ */ @TableField(value = "create_by") private Long createBy; + @TableField(exist = false) + private List createByIds; /** * 创建时间 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index 3103dfbc8..fd2b8f1be 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -39,6 +40,7 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 订单编号 */ + @Excel(name = "订单号", width = 20, orderNum = "1") @TableField(value = "order_no") private String orderNo; @@ -47,6 +49,12 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { */ @TableField(value = "order_money") private Integer orderMoney; + @Excel(name = "订单金额(元)", width = 20, orderNum = "3") + @TableField(exist = false) + private String orderMoneyStr; + public String getOrderMoneyStr() { + return orderMoney != null ? new BigDecimal(orderMoney).divide(new BigDecimal(100)).toPlainString(): orderMoneyStr; + } /** * 商户id @@ -111,22 +119,39 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { */ @TableField(value = "real_grant_price") private Integer realGrantPrice; + @TableField(exist = false) + @Excel(name = "发放价值(元)", width = 20, orderNum = "4") + private String realGrantPriceStr; + public String getRealGrantPriceStr() { + return realGrantPrice != null ? new BigDecimal(realGrantPrice).divide(new BigDecimal(100)).toPlainString(): realGrantPriceStr; + } /** * 实际商管承担总金额 */ @TableField(value = "real_mall_share_price") private Integer realMallSharePrice; + @Excel(name = "商管承担金额(元)", width = 20, orderNum = "5") + private String realMallSharePriceStr; + public String getRealMallSharePriceStr() { + return realMallSharePrice != null ? new BigDecimal(realMallSharePrice).divide(new BigDecimal(100)).toPlainString(): realMallSharePriceStr; + } /** * 实际商户承担总金额 */ @TableField(value = "real_merchant_share_price") private Integer realMerchantSharePrice; + @Excel(name = "商户承担金额(元)", width = 20, orderNum = "6") + private String realMerchantSharePriceStr; + public String getRealMerchantSharePriceStr() { + return realMerchantSharePrice != null ? new BigDecimal(realMerchantSharePrice).divide(new BigDecimal(100)).toPlainString(): realMerchantSharePriceStr; + } /** * 创建时间 */ + @Excel(name = "发放时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "2") @TableField(value = "create_date") private Date createDate; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index 0d7d3ac7f..0764e02e7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -33,6 +34,7 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 订单号 */ + @Excel(name = "订单号", width = 20, orderNum = "1") @TableField(value = "order_no") private String orderNo; @@ -41,10 +43,17 @@ public class WxOfflineActivityRecord extends TenantEntity { */ @TableField(value = "order_money") private Integer orderMoney; + @Excel(name = "订单金额(元)", width = 20, orderNum = "7") + @TableField(exist = false) + private String orderMoneyStr; + public String getOrderMoneyStr() { + return orderMoney != null ? new BigDecimal(orderMoney).divide(new BigDecimal(100)).toPlainString(): orderMoneyStr; + } /** * 客户姓名 */ + @Excel(name = "客户姓名", width = 20, orderNum = "3") @TableField(value = "cus_name") private String cusName; @@ -57,12 +66,14 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 客户电话 */ + @Excel(name = "客户电话", width = 20, orderNum = "4") @TableField(value = "cus_phone") private String cusPhone; /** * 客户地址 */ + @Excel(name = "客户地址", width = 20, orderNum = "5") @TableField(value = "cus_address") private String cusAddress; @@ -102,6 +113,7 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(value = "merchant_id") private Long merchantId; + @Excel(name = "商户名称", width = 20, orderNum = "6") @TableField(exist = false) private String merchantName; @@ -116,6 +128,7 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 创建时间 */ + @Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "2") @TableField(value = "create_date") private Date createDate; @@ -139,6 +152,7 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 审批状态 */ + @Excel(name = "审核状态", width = 20, orderNum = "8", replace = {"审核中_0", "已审批_1", "已驳回_2", "已发奖_10"}) @TableField(value = "audit_status") private Integer auditStatus; @@ -163,7 +177,7 @@ public class WxOfflineActivityRecord extends TenantEntity { private Date auditTimeEnd; @TableField(exist = false) - private Long sendByName; + private String sendByName; @TableField(exist = false) private Date sendTimeBegin; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index fa628473b..4102f49eb 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -3,6 +3,8 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Mapper @@ -13,6 +15,7 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper getRecordIdList(WxOfflineActivityGrantAward grantAwardQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java index 90b7f2d4e..c1bfd5ddb 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java @@ -3,6 +3,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -14,7 +15,9 @@ import java.util.List; */ public interface WxOfflineActivityGrantItemMapper extends CommonMapper { - void insertList(List rantItemList); + void insertList(@Param("grantItemList")List grantItemList); + + Integer getSumAwardCount(WxOfflineActivityGrantItem grantItemQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index da6eb6014..607084668 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.iformall.domain.vo.OfflineActivitySettlement; import com.iformall.domain.vo.OfflineActivitySettlementStatistics; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,7 +17,7 @@ import java.util.List; */ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper { - void insertList(List settlementList); + void insertList(@Param("settlementList")List settlementList); OfflineActivitySettlementStatistics settlementStatistics(WxOfflineActivityGrantSettlement settlement); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java index 6625643f7..15b90cd46 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java @@ -17,7 +17,7 @@ public interface WxOfflineActivityRecordGrantMapper extends CommonMapper recordGrantList); + void insertList(@Param("recordGrantList")List recordGrantList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java index 3c61d9d22..b1abb9fd2 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -27,6 +27,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper getActivitySettlement(WxOfflineActivityGrantSettlement grantSettlement); List findList(WxOfflineActivityGrantSettlement grantSettlement); + + void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index 195d05383..b228e181d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -52,6 +52,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity awaItem.setGrade(-1); awaItem.setMinAmount(0); awaItem.setMaxAmount(-1); + awaItem.setPrice(0); } if(awaItem.getCreateDate() == null){ awaItem.setCreateDate(activityItem.getUpdateDate()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 334e5a437..65a37e564 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -195,6 +195,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(record.getCreateDate().before(activity.getStartTime()) || record.getCreateDate().after(activity.getEndTime())){ throw new MallinkException(Result.ERROR, "请检查活动时间"); } + if(wxOfflineActivityRecordGrantMapper.selectGrantCount(activity.getTenantId(),activity.getId(),record.getId()) > 0){ + throw new MallinkException(Result.ERROR, "请检查订单是否已参与活动"); + } } wxOfflineActivityGrantAward.setRecordList(wxOfflineActivityRecords); wxOfflineActivityGrantAward.setActivityName(activity.getName()); @@ -209,6 +212,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); Map activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity())); + int i = 0; for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { if(grantActivityItem.getId() == null){ throw new MallinkException(Result.ERROR, "请检查活动项参数"); @@ -220,11 +224,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List activityGrantItemList = grantActivityItem.getActivityGrantItemList(); if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ continue; +// throw new MallinkException(Result.ERROR, "请检查活动奖项参数"); } Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(Collectors.toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { + i++; if(grantGrantItem.getAwardCount() == null){ grantGrantItem.setAwardCount(1); } @@ -296,6 +302,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } + if(i == 0){ + throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); + } } private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 2310329a3..7a6e718b5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -13,6 +13,7 @@ import com.iformall.enums.EnumOfflineActivityStatus; import com.iformall.enums.EnumYesOrNo; import com.iformall.mapper.WxMerchantMapper; import com.iformall.mapper.WxOfflineActivityMapper; +import com.iformall.service.ExcelService; import com.iformall.service.WxMerchantService; import com.iformall.service.WxOfflineActivityGrantSettlementService; import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; @@ -20,6 +21,8 @@ import com.iformall.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; @@ -45,6 +48,9 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct @Autowired WxMerchantService wxMerchantService; + @Autowired + ExcelService excelService; + @Override public void settlement(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { List settlementList = new ArrayList<>(); @@ -209,6 +215,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct if(new Date().before(activity.getStartTime())){ activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); } + //获取结算相关 WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); settlement.updateTenantInfo(activity); @@ -256,6 +263,12 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct public List findList(WxOfflineActivityGrantSettlement grantSettlement) { return wxOfflineActivityGrantSettlementMapper.findList(grantSettlement); } + + @Override + public void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement) { + List list = wxOfflineActivityGrantSettlementMapper.findList(grantSettlement); + excelService.exportExcel(list, null, "活动商户结算", WxOfflineActivityGrantSettlement.class, "活动商户结算.xlsx", response, false); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java index e5b4e29d9..de2e4df9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java @@ -31,6 +31,8 @@ public class WxOfflineActivityRecordGrantServiceImpl implements WxOfflineActivit recordGrant.setActivityId(wxOfflineActivityGrantAward.getActivityId()); recordGrant.setRecordId(recordId); recordGrant.setGrantId(wxOfflineActivityGrantAward.getId()); + + recordGrantList.add(recordGrant); }); wxOfflineActivityRecordGrantMapper.insertList(recordGrantList); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index 5815c737e..03b34820c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -4,13 +4,13 @@ import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxOfflineActivityGrantAward; -import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivityRecordStatistics; import com.iformall.enums.EnumOfflineActivityRecordStatus; import com.iformall.mapper.WxMerchantMapper; +import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; +import com.iformall.service.MallUserInfoService; import com.iformall.service.WxMerchantService; import com.iformall.service.WxOfflineActivityRecordService; import com.iformall.mapper.WxOfflineActivityRecordMapper; @@ -32,10 +32,15 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco @Autowired private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; + @Autowired + WxOfflineActivityGrantAwardMapper wxOfflineActivityGrantAwardMapper; + @Autowired WxMerchantMapper wxMerchantMapper; @Autowired WxMerchantService wxMerchantService; + @Autowired + MallUserInfoService mallUserInfoService; @Override public PageInfo listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { @@ -58,16 +63,48 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco record.setMerchantIdList(mids); } } + //发奖处理(多对多关系) + WxOfflineActivityGrantAward awardQ = null; + if(StringUtils.isNotBlank(record.getSendByName())){ + MallUserInfo userInfo = new MallUserInfo(); + userInfo.updateTenantInfo(record); + userInfo.setUsername(record.getSendByName()); + List mids = mallUserInfoService.getUserIdList(userInfo); + if (null == mids || mids.size() <= 0 ) { + record.setId(-1L); + }else { + awardQ = new WxOfflineActivityGrantAward(); + awardQ.updateTenantInfo(record); + awardQ.setCreateByIds(mids); + } + } + if(record.getSendTimeBegin() != null || record.getSendTimeEnd() != null){ + if(awardQ == null){ + awardQ = new WxOfflineActivityGrantAward(); + awardQ.updateTenantInfo(record); + awardQ.setCreateDateBegin(record.getSendTimeBegin()); + awardQ.setCreateDateEnd(record.getSendTimeEnd()); + } + } + if(awardQ != null){ + List rids = wxOfflineActivityGrantAwardMapper.getRecordIdList(awardQ); + if (null == rids || rids.size() <= 0 ) { + record.setId(-1L); + }else{ + record.setIds(rids); + } + } } private void handlerRecordList(TenantEntity tenantEntity,List recordList) { - if (recordList != null && recordList.size() > 0) { - WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(tenantEntity); - Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); - for (WxOfflineActivityRecord record : recordList) { - record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); - } + if (recordList == null || recordList.size() <= 0) { + return; + } + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + Map idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + for (WxOfflineActivityRecord record : recordList) { + record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index 1444c87eb..ce42442b6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -3,13 +3,15 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; -import com.iformall.domain.po.WxOfflineActivity; -import com.iformall.domain.po.WxOfflineActivityItem; -import com.iformall.domain.po.WxOfflineActivityMerchant; -import com.iformall.domain.po.WxRaffleActivity; +import com.iformall.domain.po.*; +import com.iformall.domain.vo.OfflineActivityRecordStatistics; import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityRecordStatus; import com.iformall.enums.EnumOfflineActivityStatus; import com.iformall.enums.EnumYesOrNo; +import com.iformall.mapper.WxOfflineActivityGrantItemMapper; +import com.iformall.mapper.WxOfflineActivityMerchantMapper; +import com.iformall.mapper.WxOfflineActivityRecordMapper; import com.iformall.service.WxOfflineActivityItemService; import com.iformall.service.WxOfflineActivityMerchantService; import com.iformall.service.WxOfflineActivityService; @@ -19,7 +21,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -35,7 +39,13 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ @Autowired WxOfflineActivityItemService wxOfflineActivityItemService; @Autowired + WxOfflineActivityMerchantMapper wxOfflineActivityMerchantMapper; + @Autowired WxOfflineActivityMerchantService wxOfflineActivityMerchantService; + @Autowired + WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; + @Autowired + WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; @Override public PageInfo listAsPage(WxOfflineActivity record, Integer pageIndex, Integer pageSize) { @@ -66,7 +76,41 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ if(now.before(activity.getStartTime())){ activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); } - //获取发奖订单数 + //参与订单数 + WxOfflineActivityRecord wxOfflineActivityRecord = new WxOfflineActivityRecord(); + wxOfflineActivityRecord.updateTenantInfo(activity); + wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); + wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); + if(EnumOfflineActivityMerchantType.ADD.getCode().equals(activity.getAllMerchant())){ + List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); + wxOfflineActivityRecord.setMerchantIdList(merchantIds); + }else if(EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(activity.getAllMerchant())){ + List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); + wxOfflineActivityRecord.setNotMerchantIdList(merchantIds); + } + List auditStatusStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); + Integer audting = 0, audi_success = 0, audt_fail = 0; + for(OfflineActivityRecordStatistics statistics : auditStatusStatistics){ + if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ + audting = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { + audi_success = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { + audt_fail = statistics.getCount(); + } + } + activity.setRecordCount(audting+audi_success+audt_fail); + activity.setWaitRecordCount(audting); + activity.setSuccessRecordCount(audi_success); + + //参与商户数 + activity.setMershantCount(wxOfflineActivityRecordMapper.getMerchantCount(wxOfflineActivityRecord)); + + //发放奖项数量 + WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); + grantItemQ.updateTenantInfo(activity); + grantItemQ.setActivityId(activity.getId()); + activity.setGrantItemCount(wxOfflineActivityGrantItemMapper.getSumAwardCount(grantItemQ)); } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index fad13a011..704a949e2 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -52,4 +52,32 @@ and `create_date` <= #{createDateEnd} + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index e002d4749..4a50b47c4 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -5,54 +5,54 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - id,tenant_id,parent_tenant_id, + id,tenant_id,parent_tenant_id, + grant_id,activity_id,activity_name, + activity_item_id,activity_item_name,activity_item_type, + award_itam_id,award_name,award_grade, + award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, + award_price,award_count,money_rule, + mall_share_rate,merchant_share_rate, + create_date,update_date + + + + insert into wx_offline_activity_grant_item + (id,tenant_id,parent_tenant_id, grant_id,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, award_itam_id,award_name,award_grade, award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, award_price,award_count,money_rule, mall_share_rate,merchant_share_rate, - create_date,update_date - - - - insert into wx_offline_activity_grant_item - (`id`,`tenant_id`,`parent_tenant_id`, - `grant_id`,`activity_id`,`activity_name`, - `activity_item_id`,`activity_item_name`,`activity_item_type`, - `award_itam_id`,`award_name`,`award_grade`, - `award_min_amount`,`award_max_amount`,`awards_item_rule`,`cash_back_ratio`, - `award_price`,`award_count`,`money_rule`, - `mall_share_rate`,`merchant_share_rate`, - `create_date`,`update_date`) + create_date,update_date) values - + (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, @@ -63,4 +63,19 @@ #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index b62af6a07..12f7d3939 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -111,7 +111,7 @@ real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date) values - + (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, @@ -155,7 +155,7 @@ @@ -203,6 +175,15 @@ + + + + where 1 = 1 and `tenant_id` = #{tenantId} @@ -210,6 +191,15 @@ and `parent_tenant_id` = #{parentTenantId} + + and `merchant_id` = #{merchantId} + + + and `business_id` = #{businessId} + + + and `cus_phone` = #{cusPhone} + and `create_date` >= #{createDateBegin} @@ -218,6 +208,25 @@ and `create_date` <= #{createDateEnd} - + + + and `audit_status` = #{auditStatus} + + + + and merchant_id in + + #{midItem} + + + + + and merchant_id not in + + #{midItem} + + + +