Browse Source

//OfflineActivity

release_toaliyun_real
xiaohu 1 year ago
parent
commit
0c628f3114
23 changed files with 350 additions and 96 deletions
  1. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java
  2. +18
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java
  3. +29
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java
  5. +25
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java
  6. +15
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java
  7. +3
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java
  8. +4
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java
  9. +2
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java
  10. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java
  11. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java
  12. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java
  13. +1
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java
  14. +9
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  15. +13
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java
  16. +2
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java
  17. +47
    -10
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java
  18. +49
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java
  19. +28
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml
  20. +53
    -38
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml
  21. +2
    -2
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml
  22. +1
    -1
      mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml
  23. +39
    -30
      mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml

+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java View File

@@ -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,"请选择活动");
}


+ 18
- 4
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java View File

@@ -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);
}

}

+ 29
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java View File

@@ -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;

/**
* 发放订单数
*/


+ 2
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java View File

@@ -85,6 +85,8 @@ public class WxOfflineActivityGrantAward extends TenantEntity{
*/
@TableField(value = "create_by")
private Long createBy;
@TableField(exist = false)
private List<Long> createByIds;

/**
* 创建时间


+ 25
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java View File

@@ -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;



+ 15
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java View File

@@ -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)


+ 3
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java View File

@@ -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<WxOfflin

Integer getCusCount(WxOfflineActivityGrantAward grantAwardQ);

List<Long> getRecordIdList(WxOfflineActivityGrantAward grantAwardQ);
}




+ 4
- 1
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java View File

@@ -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<WxOfflineActivityGrantItem, Long> {

void insertList(List<WxOfflineActivityGrantItem> rantItemList);
void insertList(@Param("grantItemList")List<WxOfflineActivityGrantItem> grantItemList);

Integer getSumAwardCount(WxOfflineActivityGrantItem grantItemQ);
}




+ 2
- 1
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java View File

@@ -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<WxOfflineActivityGrantSettlement, Long> {

void insertList(List<WxOfflineActivityGrantSettlement> settlementList);
void insertList(@Param("settlementList")List<WxOfflineActivityGrantSettlement> settlementList);

OfflineActivitySettlementStatistics settlementStatistics(WxOfflineActivityGrantSettlement settlement);



+ 1
- 1
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordGrantMapper.java View File

@@ -17,7 +17,7 @@ public interface WxOfflineActivityRecordGrantMapper extends CommonMapper<WxOffli

Integer selectGrantCount(@Param("tenantId")String tenantId, @Param("activityId")Long activityId, @Param("recordId")Long recordId);

void insertList(List<WxOfflineActivityRecordGrant> recordGrantList);
void insertList(@Param("recordGrantList")List<WxOfflineActivityRecordGrant> recordGrantList);
}




+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java View File

@@ -27,6 +27,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper<WxOfflineAct
WxOfflineActivityRecord selectLimitOne(WxOfflineActivityRecord wxOfflineActivityRecord);

Integer getCount(WxOfflineActivityRecord recordQ);

Integer getMerchantCount(WxOfflineActivityRecord recordQ);
}




+ 4
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java View File

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivitySettlement;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

@@ -27,4 +29,6 @@ public interface WxOfflineActivityGrantSettlementService {
List<OfflineActivitySettlement> getActivitySettlement(WxOfflineActivityGrantSettlement grantSettlement);

List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement grantSettlement);

void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement);
}

+ 1
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java View File

@@ -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());


+ 9
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java View File

@@ -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<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId());
Map<Long, WxOfflineActivityItem> 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<WxOfflineActivityGrantItem> activityGrantItemList = grantActivityItem.getActivityGrantItemList();
if(activityGrantItemList == null || activityGrantItemList.isEmpty()){
continue;
// throw new MallinkException(Result.ERROR, "请检查活动奖项参数");
}

Map<Long, WxOfflineActivityAwardsItem> 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){


+ 13
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java View File

@@ -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<WxOfflineActivityGrantSettlement> 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<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement grantSettlement) {
return wxOfflineActivityGrantSettlementMapper.findList(grantSettlement);
}

@Override
public void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement) {
List<WxOfflineActivityGrantSettlement> list = wxOfflineActivityGrantSettlementMapper.findList(grantSettlement);
excelService.exportExcel(list, null, "活动商户结算", WxOfflineActivityGrantSettlement.class, "活动商户结算.xlsx", response, false);
}
}




+ 2
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java View File

@@ -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);


+ 47
- 10
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java View File

@@ -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<WxOfflineActivityRecord> 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<Long> 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<Long> rids = wxOfflineActivityGrantAwardMapper.getRecordIdList(awardQ);
if (null == rids || rids.size() <= 0 ) {
record.setId(-1L);
}else{
record.setIds(rids);
}
}
}

private void handlerRecordList(TenantEntity tenantEntity,List<WxOfflineActivityRecord> recordList) {
if (recordList != null && recordList.size() > 0) {
WxMerchant merchantQ = new WxMerchant();
merchantQ.updateTenantInfo(tenantEntity);
Map<Long, String> 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<Long, String> idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ);
for (WxOfflineActivityRecord record : recordList) {
record.setMerchantName(idAndNamesMap.get(record.getMerchantId()));
}
}



+ 49
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java View File

@@ -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<WxOfflineActivity> 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<Long> merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId());
wxOfflineActivityRecord.setMerchantIdList(merchantIds);
}else if(EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(activity.getAllMerchant())){
List<Long> merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId());
wxOfflineActivityRecord.setNotMerchantIdList(merchantIds);
}
List<OfflineActivityRecordStatistics> 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));

}
}


+ 28
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml View File

@@ -52,4 +52,32 @@
and `create_date` &lt;= #{createDateEnd}
</if>
</select>


<select id="getRecordIdList" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" resultType="Long">
SELECT DISTINCT rg.record_id
FROM wx_offline_activity_grant_award ga
left join wx_offline_activity_record_grant rg
where 1 = 1
<if test=" null != tenantId and '' != tenantId">
and ga.`tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and ga.`parent_tenant_id` = #{parentTenantId}
</if>

<if test=" null != createDateBegin">
and ga.`create_date` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and ga.`create_date` &lt;= #{createDateEnd}
</if>
<if test=" null != createByIds ">
and ga.create_by in
<foreach collection="createByIds" index="index" item="sendItem" open="(" separator="," close=")">
#{sendItem}
</foreach>
</if>
</select>
</mapper>

+ 53
- 38
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml View File

@@ -5,54 +5,54 @@
<mapper namespace="com.iformall.mapper.WxOfflineActivityGrantItemMapper">

<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityGrantItem">
<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="awardItamId" column="award_itam_id" jdbcType="BIGINT"/>
<result property="awardName" column="award_name" jdbcType="VARCHAR"/>
<result property="awardGrade" column="award_grade" jdbcType="INTEGER"/>
<result property="awardMinAmount" column="award_min_amount" jdbcType="INTEGER"/>
<result property="awardMaxAmount" column="award_max_amount" jdbcType="INTEGER"/>
<result property="awardsItemRule" column="awards_item_rule" jdbcType="INTEGER"/>
<result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/>
<result property="awardPrice" column="award_price" jdbcType="INTEGER"/>
<result property="awardCount" column="award_count" jdbcType="INTEGER"/>
<result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/>
<result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
<result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
<result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
<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="awardItamId" column="award_itam_id" jdbcType="BIGINT"/>
<result property="awardName" column="award_name" jdbcType="VARCHAR"/>
<result property="awardGrade" column="award_grade" jdbcType="INTEGER"/>
<result property="awardMinAmount" column="award_min_amount" jdbcType="INTEGER"/>
<result property="awardMaxAmount" column="award_max_amount" jdbcType="INTEGER"/>
<result property="awardsItemRule" column="awards_item_rule" jdbcType="INTEGER"/>
<result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/>
<result property="awardPrice" column="award_price" jdbcType="INTEGER"/>
<result property="awardCount" column="award_count" jdbcType="INTEGER"/>
<result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/>
<result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
<result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
<result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
</resultMap>

<sql id="allColumns">
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
</sql>

<insert id="insertList" parameterType="java.util.List">
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
</sql>

<insert id="insertList" parameterType="java.util.List">
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
<foreach collection="addList" item="item" index="index" separator=",">
<foreach collection="grantItemList" item="item" index="index" separator=",">
(#{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})
</foreach>
</insert>

<select id="getSumAwardCount" parameterType="com.iformall.domain.po.WxOfflineActivityGrantItem" resultType="Integer">
SELECT COUNT(1) FROM wx_offline_activity_grant_item
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>
</select>

</mapper>

+ 2
- 2
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml View File

@@ -111,7 +111,7 @@
real_grant_price,real_mall_share_price,real_merchant_share_price,
create_date,update_date)
values
<foreach collection="addList" item="item" index="index" separator=",">
<foreach collection="settlementList" item="item" index="index" separator=",">
(#{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 @@
<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',
count(record_id) as 'recordCount',
IFNULL(sum(order_money),0) as 'sumOrderMoney',
IFNULL(sum(real_grant_price),0) as 'sumGrantPrice',
IFNULL(sum(real_mall_share_price),0) as 'sumMallPrice',


+ 1
- 1
mallinkService/src/main/resources/mapper/WxOfflineActivityRecordGrantMapper.xml View File

@@ -27,7 +27,7 @@
insert into wx_offline_activity_record_grant
(`tenant_id`,`parent_tenant_id`,`activity_id`,`record_id`,`grant_id`)
values
<foreach collection="addList" item="item" index="index" separator=",">
<foreach collection="recordGrantList" item="item" index="index" separator=",">
(#{item.tenantId,jdbcType=VARCHAR},
#{item.parentTenantId,jdbcType=VARCHAR},
#{item.activityId,jdbcType=BIGINT},


+ 39
- 30
mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml View File

@@ -136,35 +136,7 @@
count(1) as 'count',
IFNULL(sum(order_money),0) as 'sumMoney'
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 != merchantId ">
and `merchant_id` = #{merchantId}
</if>
<if test=" null != businessId ">
and `business_id` = #{businessId}
</if>
<if test=" null != cusPhone and cusPhone != '' ">
and `cus_phone` = #{cusPhone}
</if>

<if test=" null != createDateBegin">
and `create_date` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{createDateEnd}
</if>

<if test=" null != auditStatus ">
and `audit_status` = #{auditStatus}
</if>

<include refid="statisticsWhereConditions" />
GROUP BY audit_status
</select>

@@ -203,6 +175,15 @@

<select id="getCount" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="Integer">
SELECT COUNT(1) FROM wx_offline_activity_record
<include refid="statisticsWhereConditions" />
</select>

<select id="getMerchantCount" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="Integer">
SELECT COUNT(distinct merchant_id) FROM wx_offline_activity_record
<include refid="statisticsWhereConditions" />
</select>

<sql id="statisticsWhereConditions">
where 1 = 1
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
@@ -210,6 +191,15 @@
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}
</if>
<if test=" null != businessId ">
and `business_id` = #{businessId}
</if>
<if test=" null != cusPhone and cusPhone != '' ">
and `cus_phone` = #{cusPhone}
</if>

<if test=" null != createDateBegin">
and `create_date` &gt;= #{createDateBegin}
@@ -218,6 +208,25 @@
<if test=" null != createDateEnd">
and `create_date` &lt;= #{createDateEnd}
</if>
</select>

<if test=" null != auditStatus ">
and `audit_status` = #{auditStatus}
</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 != notMerchantIdList ">
and merchant_id not in
<foreach collection="notMerchantIdList" index="index" item="midItem" open="(" separator="," close=")">
#{midItem}
</foreach>
</if>

</sql>

</mapper>

Loading…
Cancel
Save