diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java index 8c7ffdc5c..89423202c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java @@ -22,7 +22,7 @@ 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.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -122,7 +122,7 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder == null){ return new ResultData(Result.ERROR,"id 不能为空"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getAuditRemark())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getAuditRemark())){ return new ResultData(Result.ERROR,"驳回意见不能为空"); } TenantEntity tenantEntity = getTenantInfo(); @@ -153,8 +153,8 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getCusPhone()) - && StringUtil.isBlank(wxLegionActivityOrder.getCusVipNum())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getCusPhone()) + && StringUtils.isBlank(wxLegionActivityOrder.getCusVipNum())){ return new ResultData(Result.ERROR,"请输入用户手机号或vip卡号"); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java index cdca4e1ce..9f7cdfcac 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java @@ -19,7 +19,6 @@ 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; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java index b7276ff13..d6654f9c3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -19,7 +19,6 @@ 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; 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 adf27a1c5..84e16b7f7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -13,7 +13,7 @@ import com.iformall.service.WxOfflineActivityGrantAwardService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -43,7 +43,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityRecord.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ return new ResultData(Result.ERROR,"请输入用户手机号"); } @@ -60,7 +60,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityRecord.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ return new ResultData(Result.ERROR,"请输入用户手机号"); } @@ -78,7 +78,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityRecord.getActivityId() == null){ throw new MallinkException(Result.ERROR,"请选择活动"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ throw new MallinkException(Result.ERROR,"请输入用户手机号"); } @@ -97,7 +97,7 @@ public class WxOfflineActivityGrantController extends BaseController { // if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ // return new ResultData(Result.ERROR,"请选择订单"); // } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户手机号为空"); } TenantEntity tenantEntity = getTenantInfo(); @@ -124,10 +124,10 @@ public class WxOfflineActivityGrantController extends BaseController { // if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ // return new ResultData(Result.ERROR,"请选择订单"); // } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户手机号为空"); } -// if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){ +// if(StringUtils.isBlank(wxOfflineActivityGrantAward.getSignImg())){ // return new ResultData(Result.ERROR,"签名为空"); // } TenantEntity tenantEntity = getTenantInfo(); @@ -152,7 +152,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityGrantAward.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID为空"); } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户手机号为空"); } // if(wxOfflineActivityGrantAward.getRecordId() == null){ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java index 2f4fd23b1..c107814b1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -18,7 +18,7 @@ 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.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -119,7 +119,7 @@ public class WxOfflineActivityRecordController extends BaseController { if(wxOfflineActivityRecord == null){ return new ResultData(Result.ERROR,"id 不能为空"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getAuditRemark())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getAuditRemark())){ return new ResultData(Result.ERROR,"驳回意见不能为空"); } TenantEntity tenantEntity = getTenantInfo(); 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 717f92204..df55e8396 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -17,7 +17,6 @@ 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; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java new file mode 100644 index 000000000..ca6af8552 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java @@ -0,0 +1,155 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.service.WxVtwoActivityOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +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.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/activityOrder") +@Api(description = "线下活动登记相关接口") +public class WxVtwoActivityOrderController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxVtwoActivityOrder activityOrder, Integer pageNum, Integer pageSize) { + if (null == activityOrder) activityOrder = new WxVtwoActivityOrder(); + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxVtwoActivityOrderService.listAsPage(activityOrder, pageNum, pageSize); + + return new ResultData(page); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxVtwoActivityOrder activityOrder) { + if(activityOrder.getId() == null){ + return new ResultData(Result.ERROR,"id不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + wxVtwoActivityOrderService.saveOrUpdate(activityOrder); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取待审批数量") + @GetMapping("waitAudiCount") + public ResultData waitAudiCount() { + Integer waitAudiCount = wxVtwoActivityOrderService.getWaitAudiCount(getTenantInfo()); + return new ResultData(waitAudiCount); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("导出") + @GetMapping("/export") + public void export(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + if (null == activityOrder) activityOrder = new WxVtwoActivityOrder(); + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,null); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("审核通过") + @PostMapping("audiPass") + public ResultData audiPass(@RequestBody WxVtwoActivityOrder activityOrder) { + + if(activityOrder.getId() == null){ + return new ResultData(Result.ERROR,"id 不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId()); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("审核驳回") + @PostMapping("audtFail") + public ResultData audtFail(@RequestBody WxVtwoActivityOrder activityOrder) { + if(activityOrder.getId() == null){ + return new ResultData(Result.ERROR,"id 不能为空"); + } + + if(StringUtils.isBlank(activityOrder.getAuditRemark())){ + return new ResultData(Result.ERROR,"驳回意见不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode()); + wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId()); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("失效") + @PostMapping("invalid") + public ResultData invalid(@RequestBody WxVtwoActivityOrder activityOrder) { + if(activityOrder == null){ + return new ResultData(Result.ERROR,"id 不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.INVALID.getCode()); + wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId()); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderService.getInfoById(id, tenantInfo.getTenantId()); + return new ResultData(activityOrder); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("订单相关统计") + @GetMapping("statistics") + public ResultData statistics() { + Map statisticsMap = wxVtwoActivityOrderService.orderStatistics(getTenantInfo()); + return new ResultData(statisticsMap); + } + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java new file mode 100644 index 000000000..8feec54bb --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java @@ -0,0 +1,306 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; +import com.iformall.common.ErrorCode; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; +import com.iformall.controller.base.BaseController; +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.*; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/specialTopic") +@Api(description = "线下活动专题活动相关接口") +public class WxVtwoActivitySpecialTopicController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService; + + @Autowired + private WxVtwoPrizeDrawActivityService wxVtwoPrizeDrawActivityService; + + @Autowired + private WxVtwoAmountGiftActivityService wxVtwoAmountGiftActivityService; + + @Autowired + private WxVtwoCashBackActivityService wxVtwoCashBackActivityService; + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @Autowired + private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; + + @Autowired + private WxVtwoActivityGrantStatisticsService wxVtwoActivityGrantStatisticsService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) { + if (null == specialTopic) specialTopic = new WxVtwoActivitySpecialTopic(); + TenantEntity tenantInfo = getTenantInfo(); + specialTopic.updateTenantInfo(tenantInfo); + specialTopic.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxVtwoActivitySpecialTopicService.listAsPage(specialTopic, pageNum, pageSize); + return new ResultData(page); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("判断积分按钮状态") + @PostMapping("getCreditStatus") + public ResultData getCreditStatus(@RequestBody WxVtwoActivitySpecialTopic specialTopic) { + TenantEntity tenantEntity = getTenantInfo(); + specialTopic.updateTenantInfo(tenantEntity); + if(specialTopic.getStartTime() == null || specialTopic.getEndTime() == null){ + return new ResultData(Result.ERROR,"活动时间为空"); + } + if(wxVtwoActivitySpecialTopicService.selectCreditCount(specialTopic) > 0){ + return new ResultData(false); + } + return new ResultData(true); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxVtwoActivitySpecialTopic specialTopic) { + TenantEntity tenantEntity = getTenantInfo(); + specialTopic.updateTenantInfo(tenantEntity); + if(specialTopic.getStartTime() == null || specialTopic.getEndTime() == null){ + return new ResultData(Result.ERROR,"活动时间为空"); + } + if(specialTopic.getCreditOnOff() == null){ + specialTopic.setCreditOnOff(EnumYesOrNo.NO.getCode()); + } + if(EnumYesOrNo.YES.getCode().equals(specialTopic.getCreditOnOff())){ + WxVtwoActivityCreditRule creditConfigObject = specialTopic.getCreditConfigObject(); + if(creditConfigObject == null){ + return new ResultData(Result.ERROR,"积分配置错误"); + } + if(creditConfigObject.getStep().compareTo(BigDecimal.ZERO) <= 0 + || creditConfigObject.getScore() <= 0){ + return new ResultData(Result.ERROR,"积分配置不能为0"); + } + if(wxVtwoActivitySpecialTopicService.selectCreditCount(specialTopic) > 0){ + return new ResultData(Result.ERROR,"活动时间内存在积分开启的活动"); + } + }else{ + specialTopic.setCreditConfig("{}"); + } + + if(specialTopic.getActivityList() == null || specialTopic.getActivityList().isEmpty()){ + return new ResultData(Result.ERROR,"包含活动不能为空"); + } + for (WxVtwoSpecialTopicActivity activity:specialTopic.getActivityList()){ + if(activity.getActivityId() == null || activity.getActivityType() == null){ + return new ResultData(Result.ERROR,"活动参数为空"); + } + EnumOfflineActivityType activityType = EnumOfflineActivityType.getEnum(activity.getActivityType()); + if(activityType == null){ + return new ResultData(Result.ERROR,"活动参数异常"); + } + switch (activityType) { + case LOTTERY_DRAW: + wxVtwoPrizeDrawActivityService.handleSpecialTopicActivity(tenantEntity, activity); + break; + case GIFT: + wxVtwoAmountGiftActivityService.handleSpecialTopicActivity(tenantEntity, activity); + break; + case CASHBACK: + wxVtwoCashBackActivityService.handleSpecialTopicActivity(tenantEntity, activity); + break; + default: + return new ResultData(Result.ERROR,"活动参数异常"); + } + } + try{ + wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic); + return new ResultData(specialTopic); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("上架") + @PostMapping("online") + public ResultData online(@RequestBody WxVtwoActivitySpecialTopic specialTopic) { + if(specialTopic.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + specialTopic.updateTenantInfo(tenantEntity); + specialTopic.setStatus(EnumOfflineActivityStatus.ON_LINE.getCode()); + wxVtwoActivitySpecialTopicService.updateById(specialTopic); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("下架") + @PostMapping("offline") + public ResultData offline(@RequestBody WxVtwoActivitySpecialTopic specialTopic) { + if(specialTopic.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + specialTopic.updateTenantInfo(tenantEntity); + specialTopic.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); + wxVtwoActivitySpecialTopicService.updateById(specialTopic); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicService.getInfoById(id, tenantInfo.getTenantId()); + return new ResultData(specialTopic); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取参与订单数据报表") + @GetMapping("orderStatistics") + public ResultData recordStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityOrderService.orderCountStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取参与订单数据折线图") + @GetMapping("orderStatisticsChart") + public ResultData recordStatisticsChart(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityOrderService.orderCountStatisticsChart(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动营销费用") + @GetMapping("settlementStatistics") + public ResultData settlementStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityGrantSettlementService.activitySettlementStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取参与订单品类分布") + @GetMapping("orderBusinessStatistics") + public ResultData orderBusinessStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityOrderService.orderBusinessStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动项数据统计") + @GetMapping("activityAwardStatistics") + public ResultData activityAwardStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + if(statisticsVo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){ + return new ResultData(Result.ERROR,"活动类型为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + + return new ResultData(wxVtwoActivityGrantStatisticsService.activityAwardStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动项数据统计折现图") + @GetMapping("activityAwardStatisticsChart") + public ResultData activityAwardStatisticsChart(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + if(statisticsVo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){ + return new ResultData(Result.ERROR,"活动类型为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + + return new ResultData(wxVtwoActivityGrantStatisticsService.activityAwardStatisticsChart(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动项奖品分布") + @GetMapping("awardItemStatistics") + public ResultData awardItemStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + if(statisticsVo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){ + return new ResultData(Result.ERROR,"活动类型为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + + return new ResultData(wxVtwoActivityGrantStatisticsService.awardItemStatistics(statisticsVo)); + } + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 0c8316a3b..ee33f8f83 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -2,30 +2,36 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.WxVtwoActivityAward; -import com.iformall.domain.po.WxVtwoAmountGiftActivity; -import com.iformall.domain.po.WxVtwoPrizeDrawActivity; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.service.WxVtwoActivityGrantService; +import com.iformall.service.WxVtwoActivityOrderService; import com.iformall.service.WxVtwoAmountGiftActivityService; import com.iformall.service.WxVtwoPrizeDrawActivityService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; 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.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author alascor @@ -40,6 +46,9 @@ public class WxVtwoAmountGiftActivityController extends BaseController { @Autowired private WxVtwoAmountGiftActivityService wxVtwoAmountGiftActivityService; + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -93,7 +102,7 @@ public class WxVtwoAmountGiftActivityController extends BaseController { } } wxVtwoAmountGiftActivityService.saveOrUpdate(amountGiftActivity); - return new ResultData(); + return new ResultData(amountGiftActivity); } @ApiVersion(group = SwaggerConstant.V_A_2_0) @@ -135,4 +144,188 @@ public class WxVtwoAmountGiftActivityController extends BaseController { return new ResultData(amountGiftActivity); } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单统计") + @GetMapping("orderStatistics") + public ResultData orderStatistics(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime()); + + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); + if(orderOne == null){ + statisticsMap.put("cus_name","查无此人"); + statisticsMap.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(statisticsMap); + } + + statisticsMap.put("cus_name",orderOne.getCusName()); + statisticsMap.put("cus_phone",orderOne.getCusPhone()); + return new ResultData(statisticsMap); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单列表") + @GetMapping("orderList") + @ApiImplicitParams({}) + public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + List orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId()); + + return new ResultData(orderList); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单导出") + @GetMapping("/orderExport") + public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + + if(activityOrder.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发放页面处理") + @PostMapping("grantAwardPage") + public ResultData grantAwardPage(@RequestBody WxVtwoActivityGrant activityGrant) { + TenantEntity tenantEntity = getTenantInfo(); + activityGrant.updateTenantInfo(tenantEntity); + if(activityGrant.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(amountGiftActivity == null){ + return new ResultData(Result.ERROR,"查询不到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(amountGiftActivity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(amountGiftActivity.getAmountModel())){ + if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请筛选订单"); + } + }else{ + activityGrant.setOrderFilterIdList(null); + } + try{ + wxVtwoAmountGiftActivityService.handlerGrantAwardPage(amountGiftActivity,activityGrant); + return new ResultData(activityGrant); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发放") + @PostMapping("grantAward") + public ResultData grantAward(@RequestBody WxVtwoActivityGrant activityGrant) { + TenantEntity tenantEntity = getTenantInfo(); + activityGrant.updateTenantInfo(tenantEntity); + if(activityGrant.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(amountGiftActivity == null){ + return new ResultData(Result.ERROR,"查询不到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(amountGiftActivity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(amountGiftActivity.getAmountModel())){ + if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请筛选订单"); + } + }else{ + activityGrant.setOrderFilterIdList(null); + } + if(activityGrant.getGrantAwardList() == null || activityGrant.getGrantAwardList().isEmpty()){ + return new ResultData(Result.ERROR,"奖励项为空"); + } +// if(StringUtils.isBlank(activityGrant.getSignImg())){ +// return new ResultData(Result.ERROR,"签名为空"); +// } + activityGrant.setActivityType(EnumOfflineActivityType.GIFT.getCode()); + activityGrant.setActivityName(amountGiftActivity.getName()); + activityGrant.setCreateBy(getUserId()); + activityGrant.setCreateByName(getUser().getName()); + try{ + wxVtwoAmountGiftActivityService.grantAward(amountGiftActivity, activityGrant); + return new ResultData(); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发奖明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxVtwoActivityGrant activityGrant, HttpServletRequest request, HttpServletResponse response) { + + if(activityGrant.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + activityGrant.updateTenantInfo(getTenantInfo()); + wxVtwoAmountGiftActivityService.grantExport(request,response,activityGrant); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index c9766c2bb..ddef39978 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -2,38 +2,43 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.WxVtwoActivityAward; -import com.iformall.domain.po.WxVtwoAmountGiftActivity; -import com.iformall.domain.po.WxVtwoCashBackActivity; -import com.iformall.domain.po.WxVtwoCashBackAward; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.service.WxVtwoActivityOrderService; import com.iformall.service.WxVtwoAmountGiftActivityService; import com.iformall.service.WxVtwoCashBackActivityService; +import com.iformall.service.WxVtwoCashBackGrantService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; 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.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author alascor * */ @RestController -@RequestMapping("/amountGift") +@RequestMapping("/cashBack") @Api(description = "线下返现活动相关接口") public class WxVtwoCashBackActivityController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -41,6 +46,10 @@ public class WxVtwoCashBackActivityController extends BaseController { @Autowired private WxVtwoCashBackActivityService wxVtwoCashBackActivityService; + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -116,7 +125,7 @@ public class WxVtwoCashBackActivityController extends BaseController { } } wxVtwoCashBackActivityService.saveOrUpdate(cashBackActivity); - return new ResultData(); + return new ResultData(cashBackActivity); } @ApiVersion(group = SwaggerConstant.V_A_2_0) @@ -158,4 +167,188 @@ public class WxVtwoCashBackActivityController extends BaseController { return new ResultData(cashBackActivity); } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单统计") + @GetMapping("orderStatistics") + public ResultData orderStatistics(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getInfoById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime()); + + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); + if(orderOne == null){ + statisticsMap.put("cus_name","查无此人"); + statisticsMap.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(statisticsMap); + } + + statisticsMap.put("cus_name",orderOne.getCusName()); + statisticsMap.put("cus_phone",orderOne.getCusPhone()); + return new ResultData(statisticsMap); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单列表") + @GetMapping("orderList") + @ApiImplicitParams({}) + public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getInfoById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + List orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId()); + + return new ResultData(orderList); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单导出") + @GetMapping("/orderExport") + public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + + if(activityOrder.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发放页面处理") + @PostMapping("grantAwardPage") + public ResultData grantAwardPage(@RequestBody WxVtwoCashBackGrant activityGrant) { + TenantEntity tenantEntity = getTenantInfo(); + activityGrant.updateTenantInfo(tenantEntity); + if(activityGrant.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(cashBackActivity == null){ + return new ResultData(Result.ERROR,"查询不到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(cashBackActivity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(cashBackActivity.getAmountModel())){ + if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请筛选订单"); + } + }else{ + activityGrant.setOrderFilterIdList(null); + } + try{ + wxVtwoCashBackActivityService.handlerGrantAwardPage(cashBackActivity,activityGrant); + return new ResultData(activityGrant); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发放") + @PostMapping("grantAward") + public ResultData grantAward(@RequestBody WxVtwoCashBackGrant activityGrant) { + TenantEntity tenantEntity = getTenantInfo(); + activityGrant.updateTenantInfo(tenantEntity); + if(activityGrant.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(cashBackActivity == null){ + return new ResultData(Result.ERROR,"查询不到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(cashBackActivity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(cashBackActivity.getAmountModel())){ + if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请筛选订单"); + } + }else{ + activityGrant.setOrderFilterIdList(null); + } + if(activityGrant.getGrantAwardList() == null || activityGrant.getGrantAwardList().isEmpty()){ + return new ResultData(Result.ERROR,"奖励项为空"); + } +// if(StringUtils.isBlank(activityGrant.getSignImg())){ +// return new ResultData(Result.ERROR,"签名为空"); +// } + activityGrant.setActivityType(EnumOfflineActivityType.CASHBACK.getCode()); + activityGrant.setActivityName(cashBackActivity.getName()); + activityGrant.setCreateBy(getUserId()); + activityGrant.setCreateByName(getUser().getName()); + try{ + wxVtwoCashBackActivityService.grantAward(cashBackActivity, activityGrant); + return new ResultData(); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发奖明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxVtwoCashBackGrant activityGrant, HttpServletRequest request, HttpServletResponse response) { + + if(activityGrant.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + activityGrant.updateTenantInfo(getTenantInfo()); + wxVtwoCashBackActivityService.grantExport(request,response,activityGrant); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index 598736fc2..f8e5dbffc 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -3,6 +3,7 @@ package com.iformall.controller.market; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; @@ -11,15 +12,17 @@ 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.OfflineActivityAwardsItemVo; +import com.iformall.domain.vo.OfflineActivityItemStatistics; +import com.iformall.domain.vo.OfflineGantItemStatistics; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; -import com.iformall.service.WxOfflineActivityGrantAwardService; -import com.iformall.service.WxOfflineActivityService; -import com.iformall.service.WxVtwoPrizeDrawActivityService; +import com.iformall.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +31,9 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author alascor @@ -42,6 +48,9 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { @Autowired private WxVtwoPrizeDrawActivityService wxVtwoPrizeDrawActivityService; + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -95,7 +104,7 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { } } wxVtwoPrizeDrawActivityService.saveOrUpdate(prizeDrawActivity); - return new ResultData(); + return new ResultData(prizeDrawActivity); } @ApiVersion(group = SwaggerConstant.V_A_2_0) @@ -137,4 +146,187 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { return new ResultData(prizeDrawActivity); } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单统计") + @GetMapping("orderStatistics") + public ResultData orderStatistics(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime()); + + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); + if(orderOne == null){ + statisticsMap.put("cus_name","查无此人"); + statisticsMap.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(statisticsMap); + } + + statisticsMap.put("cus_name",orderOne.getCusName()); + statisticsMap.put("cus_phone",orderOne.getCusPhone()); + return new ResultData(statisticsMap); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单列表") + @GetMapping("orderList") + @ApiImplicitParams({}) + public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + List orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId()); + + return new ResultData(orderList); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单导出") + @GetMapping("/orderExport") + public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + + if(activityOrder.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发放页面处理") + @PostMapping("grantAwardPage") + public ResultData grantAwardPage(@RequestBody WxVtwoActivityGrant activityGrant) { + TenantEntity tenantEntity = getTenantInfo(); + activityGrant.updateTenantInfo(tenantEntity); + if(activityGrant.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(prizeDrawActivity == null){ + return new ResultData(Result.ERROR,"查询不到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(prizeDrawActivity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(prizeDrawActivity.getAmountModel())){ + if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请筛选订单"); + } + }else{ + activityGrant.setOrderFilterIdList(null); + } + try{ + wxVtwoPrizeDrawActivityService.handlerGrantAwardPage(prizeDrawActivity,activityGrant); + return new ResultData(activityGrant); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发放") + @PostMapping("grantAward") + public ResultData grantAward(@RequestBody WxVtwoActivityGrant activityGrant) { + TenantEntity tenantEntity = getTenantInfo(); + activityGrant.updateTenantInfo(tenantEntity); + if(activityGrant.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请选择订单"); + } + WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(prizeDrawActivity == null){ + return new ResultData(Result.ERROR,"查询不到活动"); + } + if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(prizeDrawActivity.getStatus())){ + throw new MallinkException(Result.ERROR, "请检查活动状态"); + } + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(prizeDrawActivity.getAmountModel())){ + if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ + return new ResultData(Result.ERROR,"请筛选订单"); + } + }else{ + activityGrant.setOrderFilterIdList(null); + } + if(activityGrant.getGrantAwardList() == null || activityGrant.getGrantAwardList().isEmpty()){ + return new ResultData(Result.ERROR,"奖励项为空"); + } +// if(StringUtils.isBlank(activityGrant.getSignImg())){ +// return new ResultData(Result.ERROR,"签名为空"); +// } + activityGrant.setActivityType(EnumOfflineActivityType.LOTTERY_DRAW.getCode()); + activityGrant.setActivityName(prizeDrawActivity.getName()); + activityGrant.setCreateBy(getUserId()); + activityGrant.setCreateByName(getUser().getName()); + try{ + wxVtwoPrizeDrawActivityService.grantAward(prizeDrawActivity, activityGrant); + return new ResultData(); + }catch(MallinkException e){ + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + }catch(Exception e){ + logger.error("异常:" + e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发奖明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxVtwoActivityGrant activityGrant, HttpServletRequest request, HttpServletResponse response) { + + if(activityGrant.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + activityGrant.updateTenantInfo(getTenantInfo()); + wxVtwoPrizeDrawActivityService.grantExport(request,response,activityGrant); + } + } diff --git a/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql b/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql index 077dbcf60..a6daeee34 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql @@ -8,5 +8,5 @@ INSERT INTO `mallink`.`mall_permission` (`id`, `name`, `parent_id`, `available`, -UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 71102]' WHERE `id` = 1; -UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 223, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 676, 680, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 61202, 61501, 61502, 71102]' WHERE `id` = 12; +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 71102]' WHERE `id` = 1; +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 223, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 676, 680, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 61202, 61501, 61502, 71102]' WHERE `id` = 12; diff --git a/mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql b/mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql new file mode 100644 index 000000000..8f1d0a4aa --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql @@ -0,0 +1,448 @@ +/* + Navicat Premium Dump SQL + + Source Server : 101.200.130.134 + Source Server Type : MySQL + Source Server Version : 50728 (5.7.28) + Source Host : 101.200.130.134:3306 + Source Schema : mallink + + Target Server Type : MySQL + Target Server Version : 50728 (5.7.28) + File Encoding : 65001 + + Date: 29/05/2025 17:32:02 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_award`; +CREATE TABLE `wx_vtwo_activity_award` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `grade` int(11) NOT NULL COMMENT '奖项等级', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖项名称', + `price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '奖项价值', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动奖项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant`; +CREATE TABLE `wx_vtwo_activity_grant` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `activity_type` smallint(1) NOT NULL, + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `order_money_sum` decimal(10, 2) NOT NULL COMMENT '订单总金额', + `order_count` int(11) NOT NULL COMMENT '订单数量', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码', + `real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_by` bigint(20) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发奖' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_award`; +CREATE TABLE `wx_vtwo_activity_grant_award` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `order_id` bigint(20) NULL DEFAULT NULL, + `mode_type` smallint(1) NOT NULL COMMENT '金额/联单', + `award_id` bigint(20) NOT NULL COMMENT '奖项id', + `award_grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级', + `award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称', + `award_price` decimal(10, 2) NOT NULL COMMENT '奖项价值', + `award_count` int(11) NOT NULL COMMENT '奖项数量', + `grant_price` decimal(10, 2) NOT NULL COMMENT '实际发放价值', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_export +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_export`; +CREATE TABLE `wx_vtwo_activity_grant_export` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_type` smallint(1) NOT NULL, + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `order_id` bigint(20) NOT NULL COMMENT '订单id', + `order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号', + `order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户编号', + `merchant_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `merchant_shop_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `business_id` int(11) NULL DEFAULT NULL COMMENT '业态', + `business_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `lottery_num` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码', + `order_create_time` datetime NULL DEFAULT NULL, + `vip_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '会员卡号', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号', + `cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址', + `legion_id` bigint(11) NULL DEFAULT NULL COMMENT '所属军团', + `legion_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `union_id` bigint(11) NULL DEFAULT NULL COMMENT '所属联盟', + `union_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `grant_id` bigint(20) NOT NULL COMMENT '发奖id', + `grant_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `grant_user_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `grant_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `sign_img` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `grant_by` bigint(20) NULL DEFAULT NULL COMMENT '发奖人', + `grant_by_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `grant_time` datetime NULL DEFAULT NULL COMMENT '发奖时间', + `grant_detail` json NULL COMMENT '发放结算详情', + `grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '发放总价值', + `mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商管承担总金额', + `merchant_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商户承担总金额', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率', + `tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额', + `status` smallint(1) NOT NULL DEFAULT 1, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励导出' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_order +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_order`; +CREATE TABLE `wx_vtwo_activity_grant_order` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `order_id` bigint(20) NOT NULL COMMENT '订单id', + `is_amount` smallint(1) NOT NULL COMMENT '是否参与总金额计算', + `status` smallint(1) NOT NULL DEFAULT 1, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发奖订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_settlement +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_settlement`; +CREATE TABLE `wx_vtwo_activity_grant_settlement` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `grant_id` bigint(20) NOT NULL COMMENT '发奖id', + `grant_award_id` bigint(20) NOT NULL COMMENT '发放奖励记录id', + `award_id` bigint(20) NOT NULL COMMENT '奖项id', + `grant_price` decimal(10, 2) NOT NULL COMMENT '发放总价值', + `order_id` bigint(20) NOT NULL COMMENT '订单id', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单编号', + `order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户id', + `order_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单占比', + `order_grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单发放总价值', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率', + `order_mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商管承担总金额', + `order_merchant_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商户承担总金额', + `tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励结算' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_merchant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_merchant`; +CREATE TABLE `wx_vtwo_activity_merchant` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `merchant_id` bigint(20) NOT NULL COMMENT '商户ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动商户' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_order +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_order`; +CREATE TABLE `wx_vtwo_activity_order` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `from_user_id` bigint(20) NULL DEFAULT NULL COMMENT '来源用户ID', + `vip_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '会员卡号', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `real_cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号', + `cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址', + `legion_id` bigint(11) NULL DEFAULT NULL COMMENT '所属军团', + `legion_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `union_id` bigint(11) NULL DEFAULT NULL COMMENT '所属联盟', + `union_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `from_order_id` bigint(20) NULL DEFAULT 0 COMMENT '来源订单ID', + `order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号', + `order_money` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户编号', + `business_id` int(11) NULL DEFAULT NULL COMMENT '业态', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码', + `audit_status` int(1) NOT NULL DEFAULT 0 COMMENT '审批状态', + `audit_remark` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批意见', + `audit_by` bigint(20) NULL DEFAULT NULL COMMENT '审核人', + `audit_time` datetime NULL DEFAULT NULL COMMENT '审核时间', + `increased_points` int(11) NOT NULL DEFAULT 0 COMMENT '积分变动值', + `create_by` bigint(11) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动参与登记' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_special_topic +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_special_topic`; +CREATE TABLE `wx_vtwo_activity_special_topic` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '专题名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `credit_on_off` smallint(1) NOT NULL DEFAULT 0 COMMENT '积分开关', + `credit_config` json NULL COMMENT '积分配置', + `status` smallint(2) NOT NULL DEFAULT 0 COMMENT '状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动专题' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_amount_gift_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_amount_gift_activity`; +CREATE TABLE `wx_vtwo_amount_gift_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `amount_model` smallint(1) NOT NULL COMMENT '计算模式', + `business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制', + `amount_rules` json NULL, + `related_model` smallint(1) NOT NULL COMMENT '联单模式', + `related_rules` json NULL, + `awards_count` int(11) NULL DEFAULT NULL COMMENT '礼品总数量', + `merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则', + `status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下满额赠礼活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_activity`; +CREATE TABLE `wx_vtwo_cash_back_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `amount_model` smallint(1) NOT NULL COMMENT '计算模式', + `business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制', + `related_model` smallint(1) NOT NULL COMMENT '联单模式', + `cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现总金额限制', + `cash_back_rule` smallint(1) NULL DEFAULT NULL COMMENT '返现计算规则', + `tax_deduction_rules` json NULL COMMENT '扣税规则', + `merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则', + `status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_award`; +CREATE TABLE `wx_vtwo_cash_back_award` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `model_type` smallint(1) NOT NULL COMMENT '金额/联单', + `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最小金额', + `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最大金额', + `related_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖品名称', + `cash_back_ratio` decimal(10, 2) NOT NULL COMMENT '返现比例', + `cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额限制', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动奖项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_grant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_grant`; +CREATE TABLE `wx_vtwo_cash_back_grant` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `activity_type` smallint(1) NOT NULL, + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `order_money_sum` decimal(10, 2) NOT NULL COMMENT '订单总金额', + `order_count` int(11) NOT NULL COMMENT '订单数量', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码', + `real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额限制', + `cash_back` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额', + `tax_deduction_rules` json NULL COMMENT '扣税规则', + `tax_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '税点金额', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_by` bigint(20) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动发奖' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_grant_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_grant_award`; +CREATE TABLE `wx_vtwo_cash_back_grant_award` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `order_id` bigint(20) NULL DEFAULT NULL, + `order_amount` decimal(10, 2) NOT NULL COMMENT '订单金额/总金额', + `mode_type` smallint(1) NOT NULL COMMENT '金额/联单', + `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最小金额', + `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最大金额', + `related_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数', + `award_id` bigint(20) NOT NULL COMMENT '奖项id', + `award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称', + `cash_back_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现比例', + `cash_back_rule` smallint(1) NULL DEFAULT NULL COMMENT '返现计算规则', + `cash_back` decimal(10, 2) NOT NULL COMMENT '返现金额', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `tax_deduction_rules` json NULL COMMENT '扣税规则', + `tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动发放奖励' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_prize_draw_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_prize_draw_activity`; +CREATE TABLE `wx_vtwo_prize_draw_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `amount_model` smallint(1) NOT NULL COMMENT '计算模式', + `business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制', + `amount_rules` json NULL, + `related_model` smallint(1) NOT NULL COMMENT '联单模式', + `related_rules` json NULL, + `awards_limit` int(11) NULL DEFAULT NULL COMMENT '奖项数量限制', + `awards_count` int(11) NULL DEFAULT NULL COMMENT '奖项总数量', + `merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则', + `status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下抽奖活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_special_topic_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_special_topic_activity`; +CREATE TABLE `wx_vtwo_special_topic_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `special_topic_id` bigint(20) NOT NULL COMMENT '专题ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `activity_type` smallint(1) NOT NULL COMMENT '活动类型', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `activity_create_date` datetime NULL DEFAULT NULL, + `activity_start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `activity_end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `activity_status` smallint(2) NOT NULL DEFAULT 0 COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下专题下的活动' ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java index 74c8c7c24..86ea640af 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java @@ -15,7 +15,6 @@ 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; diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java index bbb360d50..47e80cdf2 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java @@ -17,7 +17,7 @@ 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.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -64,7 +64,7 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getOrderNo())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getOrderNo())){ return new ResultData(Result.ERROR,"订单号不能为空"); } if (null == wxLegionActivityOrder.getOrderMoney() ) { @@ -73,7 +73,7 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder.getCusId() == null){ return new ResultData(Result.ERROR,"未查询到用户,请先进行VIP卡绑定"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getCusPhone())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getCusPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } TenantEntity tenantEntity = getTenantInfo(); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java index 52395fa29..254f1d93f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java @@ -18,7 +18,7 @@ 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.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -66,10 +66,10 @@ public class WxLegionActivityUserController extends BaseController { if(wxLegionActivityUser.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityUser.getPhone())){ + if(StringUtils.isBlank(wxLegionActivityUser.getPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } - if(StringUtil.isBlank(wxLegionActivityUser.getVipNum())){ + if(StringUtils.isBlank(wxLegionActivityUser.getVipNum())){ return new ResultData(Result.ERROR,"vip卡号不能为空"); } TenantEntity tenantEntity = getTenantInfo(); @@ -122,7 +122,7 @@ public class WxLegionActivityUserController extends BaseController { if(wxLegionActivityUser.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityUser.getPhone())){ + if(StringUtils.isBlank(wxLegionActivityUser.getPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } TenantEntity tenantInfo = getTenantInfo(); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java index ba81c0a51..363fe1e6f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java @@ -1,101 +1,101 @@ -package com.iformall.controller; - -import com.github.pagehelper.PageInfo; -import com.iformall.common.Result; -import com.iformall.common.ResultData; -import com.iformall.domain.po.WxOfflineActivityRecord; -import com.iformall.domain.po.base.BaseEntity.SortField; -import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityRecordStatus; -import com.iformall.exception.MallinkException; -import com.iformall.service.*; -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.Map; - -/** - * @author alascor - * - */ -@RestController -@RequestMapping("/api/offlineRecord") -@Api(description = "线下活动登记相关接口") -public class WxOfflineActivityRecordController extends BaseController { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Autowired - private WxOfflineActivityRecordService wxOfflineActivityRecordService; - - - @ApiOperation("分页列表接口") - @GetMapping("list") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), - @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { - if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); - TenantEntity tenantInfo = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantInfo); - wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); - wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); - final PageInfo page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); - return new ResultData(page); - } - - @ApiOperation("新增修改接口") - @PostMapping("saveOrUpdate") - public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ - return new ResultData(Result.ERROR,"客户手机号不能为空"); - } - if (null == wxOfflineActivityRecord.getOrderMoney() ) { - return new ResultData(Result.ERROR,"订单金额不能为空"); - } - TenantEntity tenantEntity = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantEntity); - - if(wxOfflineActivityRecord.getId() != null){ - WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId()); - if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ - throw new MallinkException(Result.ERROR,"订单状态不允许修改"); - } - wxOfflineActivityRecord.setAuditRemark(""); - } - wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); - wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); - wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); - wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord); - return new ResultData(); - } - - @ApiOperation("查询当前信息详情") - @GetMapping("getInfoById") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) - public ResultData getInfoById(Long id) { - TenantEntity tenantInfo = getTenantInfo(); - WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId()); - return new ResultData(activity); - } - - @ApiOperation("查询当前信息统计") - @GetMapping("statistics") - public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { - TenantEntity tenantInfo = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantInfo); - wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); - Map statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); - return new ResultData(statisticsMap); - } - - - -} +//package com.iformall.controller; +// +//import com.github.pagehelper.PageInfo; +//import com.iformall.common.Result; +//import com.iformall.common.ResultData; +//import com.iformall.domain.po.WxOfflineActivityRecord; +//import com.iformall.domain.po.base.BaseEntity.SortField; +//import com.iformall.domain.po.base.TenantEntity; +//import com.iformall.enums.EnumOfflineActivityRecordStatus; +//import com.iformall.exception.MallinkException; +//import com.iformall.service.*; +//import io.swagger.annotations.Api; +//import io.swagger.annotations.ApiImplicitParam; +//import io.swagger.annotations.ApiImplicitParams; +//import io.swagger.annotations.ApiOperation; +//import org.apache.commons.lang3.StringUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +///** +// * @author alascor +// * +// */ +//@RestController +//@RequestMapping("/api/offlineRecord") +//@Api(description = "线下活动登记相关接口") +//public class WxOfflineActivityRecordController extends BaseController { +// private final Logger logger = LoggerFactory.getLogger(this.getClass()); +// +// @Autowired +// private WxOfflineActivityRecordService wxOfflineActivityRecordService; +// +// +// @ApiOperation("分页列表接口") +// @GetMapping("list") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), +// @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) +// public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { +// if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); +// TenantEntity tenantInfo = getTenantInfo(); +// wxOfflineActivityRecord.updateTenantInfo(tenantInfo); +// wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); +// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); +// final PageInfo page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); +// return new ResultData(page); +// } +// +// @ApiOperation("新增修改接口") +// @PostMapping("saveOrUpdate") +// public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { +// if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ +// return new ResultData(Result.ERROR,"客户手机号不能为空"); +// } +// if (null == wxOfflineActivityRecord.getOrderMoney() ) { +// return new ResultData(Result.ERROR,"订单金额不能为空"); +// } +// TenantEntity tenantEntity = getTenantInfo(); +// wxOfflineActivityRecord.updateTenantInfo(tenantEntity); +// +// if(wxOfflineActivityRecord.getId() != null){ +// WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId()); +// if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ +// throw new MallinkException(Result.ERROR,"订单状态不允许修改"); +// } +// wxOfflineActivityRecord.setAuditRemark(""); +// } +// wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); +// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); +// wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); +// wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord); +// return new ResultData(); +// } +// +// @ApiOperation("查询当前信息详情") +// @GetMapping("getInfoById") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) +// public ResultData getInfoById(Long id) { +// TenantEntity tenantInfo = getTenantInfo(); +// WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId()); +// return new ResultData(activity); +// } +// +// @ApiOperation("查询当前信息统计") +// @GetMapping("statistics") +// public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { +// TenantEntity tenantInfo = getTenantInfo(); +// wxOfflineActivityRecord.updateTenantInfo(tenantInfo); +// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); +// Map statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); +// return new ResultData(statisticsMap); +// } +// +// +// +//} diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java new file mode 100644 index 000000000..d4b6ebbcb --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java @@ -0,0 +1,106 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.exception.MallinkException; +import com.iformall.service.WxVtwoActivityOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/api/offlineRecord") +@Api(description = "线下活动订单相关接口") +public class WxVtwoActivityOrderController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxVtwoActivityOrder activityOrder, Integer pageNum, Integer pageSize) { + if (null == activityOrder) activityOrder = new WxVtwoActivityOrder(); + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setSortColumns(SortField.CreateDate_DESC); + activityOrder.setMerchantId(getLoginBUser().getMerchantId()); + final PageInfo page = wxVtwoActivityOrderService.listAsPage(activityOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxVtwoActivityOrder activityOrder) { + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"客户手机号不能为空"); + } + if (null == activityOrder.getOrderMoney() ) { + return new ResultData(Result.ERROR,"订单金额不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + + if(activityOrder.getId() != null){ + WxVtwoActivityOrder record = wxVtwoActivityOrderService.getById(activityOrder.getId(),activityOrder.getTenantId()); + if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ + throw new MallinkException(Result.ERROR,"订单状态不允许修改"); + } + activityOrder.setAuditRemark(""); + } + activityOrder.setCreateBy(getMerchantBUserId()); + activityOrder.setMerchantId(getLoginBUser().getMerchantId()); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + wxVtwoActivityOrderService.saveOrUpdate(activityOrder); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询当前信息详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderService.getById(id, tenantInfo.getTenantId()); + return new ResultData(activityOrder); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询当前信息统计") + @GetMapping("statistics") + public ResultData statisticsCount(@ModelAttribute WxVtwoActivityOrder activityOrder) { + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setMerchantId(getLoginBUser().getMerchantId()); + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + return new ResultData(statisticsMap); + } + + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java index 9f715896f..da5e1831e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -7,6 +9,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + +import com.iformall.domain.vo.WxVtwoActivityGrantRule; import lombok.Data; /** @@ -28,6 +33,9 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + @TableField(value = "activity_type") + private Integer activityType; + /** * */ @@ -63,6 +71,18 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return lotteryNumList; + } /** * 抽奖券数量 @@ -75,6 +95,18 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; + @TableField(exist = false) + private List anniversaryLotteryNumList; + public List getAnniversaryLotteryNumList() { + if(StringUtils.isNotBlank(anniversaryLotteryNum)){ + try { + List stringList = JSON.parseArray(anniversaryLotteryNum, String.class); + stringList.removeIf(String::isEmpty); + anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return anniversaryLotteryNumList; + } /** * 实际领奖人 @@ -111,6 +143,8 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "create_by") private Long createBy; + @TableField(exist = false) + private String createByName; /** * 创建时间 @@ -118,9 +152,35 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List grantAwardList; + + @TableField(exist = false) + private List orderIdList; + + @TableField(exist = false) + private List orderFilterIdList; + + @TableField(exist = false) + private List orderList; + + @TableField(exist = false) + private List ruleList; + + @TableField(exist = false) + private List awardList; + + @TableField(exist = false) + private Integer awardLimit; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java index 5cbb5612b..77568d6a8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java @@ -16,6 +16,10 @@ import lombok.Data; @TableName(value ="wx_vtwo_activity_grant_award") @Data public class WxVtwoActivityGrantAward extends TenantEntity { + + @TableField(exist = false) + private String name; + /** * */ @@ -46,36 +50,12 @@ public class WxVtwoActivityGrantAward extends TenantEntity { @TableField(value = "order_id") private Long orderId; - /** - * 订单金额/总金额 - */ - @TableField(value = "order_amount") - private BigDecimal orderAmount; - /** * 金额/联单 */ @TableField(value = "mode_type") private Integer modeType; - /** - * 奖项限制最小金额 - */ - @TableField(value = "min_amount") - private BigDecimal minAmount; - - /** - * 奖项限制最大金额 - */ - @TableField(value = "max_amount") - private BigDecimal maxAmount; - - /** - * 联单笔数 - */ - @TableField(value = "related_count") - private Integer relatedCount; - /** * 奖项id */ @@ -115,8 +95,8 @@ public class WxVtwoActivityGrantAward extends TenantEntity { /** * 分担规则(0-商管 1-商户 2-分担) */ - @TableField(value = "money_rule") - private Integer moneyRule; + @TableField(value = "share_rule") + private Integer shareRule; /** * 商管分担比例 @@ -142,6 +122,11 @@ public class WxVtwoActivityGrantAward extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java index ff86eccab..e06f1f0e2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java @@ -28,6 +28,15 @@ public class WxVtwoActivityGrantExport extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + /** + * + */ + @TableField(value = "activity_type") + private Integer activityType; + + @TableField(value = "activity_name") + private String activityName; + /** * 订单id */ @@ -103,31 +112,31 @@ public class WxVtwoActivityGrantExport extends TenantEntity { /** * 审批状态 */ - @TableField(value = "order_audit_status") + @TableField(exist = false) private Integer orderAuditStatus; /** * 审核人 */ - @TableField(value = "order_audit_by") + @TableField(exist = false) private Long orderAuditBy; /** * */ - @TableField(value = "order_audit_name") + @TableField(exist = false) private String orderAuditName; /** * 审批意见 */ - @TableField(value = "order_audit_remark") + @TableField(exist = false) private String orderAuditRemark; /** * 审核时间 */ - @TableField(value = "order_audit_time") + @TableField(exist = false) private Date orderAuditTime; /** diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java index 8d28526a6..c4518e9fd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java @@ -26,6 +26,12 @@ public class WxVtwoActivityGrantOrder extends TenantEntity { @TableField(value = "grant_id") private Long grantId; + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + /** * 订单id */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java index 61298405b..61dd5464d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import lombok.Data; /** @@ -46,6 +48,9 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity { @TableField(value = "award_id") private Long awardId; + @TableField(exist = false) + private Integer awardCount; + /** * 发放总价值 */ @@ -130,9 +135,23 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List activityIdList; + + @TableField(exist = false) + private List merchantIdList; + + @TableField(exist = false) + private List awardIdList; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java index 8fdf8b65f..849dea992 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java @@ -1,6 +1,8 @@ package com.iformall.domain.po; import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -34,12 +36,14 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 会员卡号 */ + @Excel(name = "Vip卡号", width = 20, orderNum = "17") @TableField(value = "vip_num") private String vipNum; /** * 客户姓名 */ + @Excel(name = "客户姓名", width = 20, orderNum = "15") @TableField(value = "cus_name") private String cusName; @@ -52,6 +56,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 客户电话 */ + @Excel(name = "客户电话", width = 20, orderNum = "16") @TableField(value = "cus_phone") private String cusPhone; @@ -64,6 +69,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 客户地址 */ + @Excel(name = "订单地址", width = 20, orderNum = "4") @TableField(value = "cus_address") private String cusAddress; @@ -76,6 +82,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * */ + @Excel(name = "所属军团", width = 20, orderNum = "18") @TableField(value = "legion_name") private String legionName; @@ -88,6 +95,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * */ + @Excel(name = "所属联盟", width = 20, orderNum = "19") @TableField(value = "union_name") private String unionName; @@ -100,14 +108,16 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 订单号 */ + @Excel(name = "订单号", width = 20, orderNum = "1") @TableField(value = "order_no") private String orderNo; /** * 订单金额 */ - @TableField(value = "order_amount") - private BigDecimal orderAmount; + @Excel(name = "订单金额(元)", width = 20, orderNum = "2") + @TableField(value = "order_money") + private BigDecimal orderMoney; /** * 商户编号 @@ -115,10 +125,10 @@ public class WxVtwoActivityOrder extends TenantEntity { @TableField(value = "merchant_id") private Long merchantId; -// @Excel(name = "商户名称", width = 20, orderNum = "6") + @Excel(name = "商户名称", width = 20, orderNum = "5") @TableField(exist = false) private String merchantName; -// @Excel(name="商铺号",width = 20,orderNum = "7") + @Excel(name="商铺号",width = 20,orderNum = "6") @TableField(exist = false) private String shopNumber; @@ -132,6 +142,7 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "business_id") private Integer businessId; + @Excel(name="业态",width = 20,orderNum = "7") @TableField(exist = false) private String businessName; @@ -140,28 +151,54 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + }catch(Exception e){} + } + return lotteryNumList; + } + + @Excel(name = "抽奖券编码", width = 20, orderNum = "8") + @TableField(exist = false) + private String lotteryNumStr; + public String getLotteryNumStr() { + if(this.getLotteryNumList() != null && !lotteryNumList.isEmpty()){ + lotteryNumStr = String.join(",", lotteryNumList); + } + return lotteryNumStr; + } /** * 抽奖券数量 */ + @Excel(name = "抽奖券数量", width = 20, orderNum = "9") @TableField(value = "lottery_count") private Integer lotteryCount; /** * 周年庆抽奖编码 */ + @Excel(name = "周年庆抽奖编码", width = 20, orderNum = "10") @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; /** * 审批状态 */ + @Excel(name = "订单状态", width = 20, orderNum = "3", replace = {"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"}) @TableField(value = "audit_status") private Integer auditStatus; /** * 审批意见 */ + @Excel(name = "审核意见", width = 20, orderNum = "14") @TableField(value = "audit_remark") private String auditRemark; @@ -170,16 +207,21 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "audit_by") private Long auditBy; + @Excel(name = "审核人", width = 20, orderNum = "12") + @TableField(exist = false) + private String auditByName; /** * 审核时间 */ + @Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13") @TableField(value = "audit_time") private Date auditTime; /** * 积分变动值 */ + @Excel(name = "积分变动值", width = 20, orderNum = "20") @TableField(value = "increased_points") private Integer increasedPoints; @@ -188,13 +230,11 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "create_by") private Long createBy; - @Excel(name = "审核人", width = 20, orderNum = "14") - @TableField(exist = false) - private String auditByName; /** * 创建时间 */ + @Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "11") @TableField(value = "create_date") private Date createDate; @@ -208,4 +248,22 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private Long activityId; + + /** + * 是否可以发奖 + */ + @TableField(exist = false) + private Integer grantStatus; + + /** + * 是否参与总金额计算 + */ + @TableField(exist = false) + private Integer isAmount; + + @TableField(exist = false) + private BigDecimal orderRatio; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java index 96c24671d..1505087c7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java @@ -1,11 +1,15 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.util.Date; +import java.util.List; + +import com.iformall.domain.vo.WxVtwoActivityCreditRule; import lombok.Data; /** @@ -47,10 +51,17 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity { /** * 积分配置 + * + * "step":, + * "score": + * */ @TableField(value = "credit_config") private String creditConfig; + @TableField(exist = false) + private WxVtwoActivityCreditRule creditConfigObject; + /** * 状态 */ @@ -68,4 +79,23 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List activityList; + + @TableField(exist = false) + private Date begin; + @TableField(exist = false) + private Date end; + + @TableField(exist = false) + private Long activityId; + /** + * 是否过期 + */ + @TableField(exist = false) + private Integer validStatus; + + @TableField(exist = false) + private Integer activityCount; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java index eb1490619..68025bdc1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java @@ -101,7 +101,7 @@ public class WxVtwoAmountGiftActivity extends TenantEntity { private List merchantIdList; @TableField(exist = false) - private List merchanList; + private List merchantList; /** * 活动状态 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java index 0e5f8c4af..9cb30519f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -70,7 +72,7 @@ public class WxVtwoCashBackActivity extends TenantEntity { * 返现总金额限制 */ @TableField(value = "cash_back_limit") - private Integer cashBackLimit; + private BigDecimal cashBackLimit; /** * 返现计算规则 @@ -100,7 +102,7 @@ public class WxVtwoCashBackActivity extends TenantEntity { private List merchantIdList; @TableField(exist = false) - private List merchanList; + private List merchantList; /** * 活动状态 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java index 30259427d..79d6b22cb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java @@ -68,7 +68,7 @@ public class WxVtwoCashBackAward extends TenantEntity { * 返现金额限制 */ @TableField(value = "cash_back_limit") - private Integer cashBackLimit; + private BigDecimal cashBackLimit; /** * 分担规则(0-商管 1-商户 2-分担) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java index b6b3a8c4b..3be121d84 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -7,6 +9,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + +import com.iformall.domain.vo.WxVtwoActivityGrantRule; import lombok.Data; /** @@ -28,6 +33,9 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + @TableField(value = "activity_type") + private Integer activityType; + /** * */ @@ -63,6 +71,18 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return lotteryNumList; + } /** * 抽奖券数量 @@ -75,6 +95,18 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; + @TableField(exist = false) + private List anniversaryLotteryNumList; + public List getAnniversaryLotteryNumList() { + if(StringUtils.isNotBlank(anniversaryLotteryNum)){ + try { + List stringList = JSON.parseArray(anniversaryLotteryNum, String.class); + stringList.removeIf(String::isEmpty); + anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return anniversaryLotteryNumList; + } /** * 实际领奖人 @@ -94,12 +126,6 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "cash_back_limit") private BigDecimal cashBackLimit; - /** - * 返现金额计算规则 - */ - @TableField(value = "cash_back_rule") - private Integer cashBackRule; - /** * 返现金额 */ @@ -121,7 +147,7 @@ public class WxVtwoCashBackGrant extends TenantEntity { /** * 实际返现金额 */ - @TableField(value = "real_cash_back") + @TableField(exist = false) private BigDecimal realCashBack; /** @@ -147,6 +173,8 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "create_by") private Long createBy; + @TableField(exist = false) + private String createByName; /** * 创建时间 @@ -154,9 +182,27 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List grantAwardList; + + @TableField(exist = false) + private List orderIdList; + + @TableField(exist = false) + private List orderFilterIdList; + + @TableField(exist = false) + private List orderList; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java index 3369cb687..daeae0cfd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java @@ -16,6 +16,10 @@ import lombok.Data; @TableName(value ="wx_vtwo_cash_back_grant_award") @Data public class WxVtwoCashBackGrantAward extends TenantEntity { + + @TableField(exist = false) + private String name; + /** * */ @@ -43,8 +47,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { /** * */ - @TableField(value = "record_id") - private Long recordId; + @TableField(value = "order_id") + private Long orderId; /** * 订单金额/总金额 @@ -109,8 +113,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { /** * 分担规则(0-商管 1-商户 2-分担) */ - @TableField(value = "money_rule") - private Integer moneyRule; + @TableField(value = "share_rule") + private Integer shareRule; /** * 商管分担比例 @@ -148,6 +152,11 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java index d966d8452..8f0bdc038 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java @@ -107,7 +107,7 @@ public class WxVtwoPrizeDrawActivity extends TenantEntity { private List merchantIdList; @TableField(exist = false) - private List merchanList; + private List merchantList; /** * 活动状态 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java index 6bc020cab..9f37ff1e8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.util.Date; + +import com.iformall.enums.EnumOfflineActivityType; import lombok.Data; /** @@ -38,6 +40,14 @@ public class WxVtwoSpecialTopicActivity extends TenantEntity { */ @TableField(value = "activity_type") private Integer activityType; + @TableField(exist = false) + private String activityTypeName; + public String getActivityTypeName() { + if (null != activityType) { + return EnumOfflineActivityType.getEnum(activityType).getMessage(); + } + return null; + } /** * 活动名称 diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java new file mode 100644 index 000000000..1e7208faa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java @@ -0,0 +1,27 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 线下活动中奖规则 + */ +@Data +public class WxVtwoActivityCreditRule implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 金额 + */ + private BigDecimal step; + + /** + * 积分 + */ + private Integer score; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java new file mode 100644 index 000000000..66cb2253a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java @@ -0,0 +1,16 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.WxOfflineActivityRecord; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WxVtwoActivityGrantRule implements Serializable { + + private Long orderId; + private Integer modeType; + private String name; + private Integer awardLimit; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java index e20663f3a..946d03bb7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java @@ -12,5 +12,5 @@ public class WxVtwoActivityOrderStatistics implements Serializable { private Integer auditStatus; private Integer count; - private BigDecimal sumAmount; + private BigDecimal sumMoney; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java new file mode 100644 index 000000000..dfa5facd4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java @@ -0,0 +1,22 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumYesOrNo; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class WxVtwoActivityStatisticsVo extends TenantEntity { + + private Long id; + private Long activityId; + private Integer activityType; + + private Date createDateBegin; + private Date createDateEnd; + + private List activityIdList; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java new file mode 100644 index 000000000..c9ed78b82 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java @@ -0,0 +1,23 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class WxVtwoAwardGrantStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long awardId; + private String awardName; + private BigDecimal cashBackRatio; + + private Integer awardCount; + private BigDecimal awardPrice; + + private Double priceRatio; + private Double countRatio; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java new file mode 100644 index 000000000..e76032969 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java @@ -0,0 +1,28 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class WxVtwoAwardStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private String xTime; + + private Integer grantCount;//发奖人数(次数) + private Integer orderCount;//订单数量 + private BigDecimal orderMoney;//订单总金额 + + private Integer awardCount;//奖品总个数 + private BigDecimal awardPrice;//奖品(返现)总价值 + + private BigDecimal mallPrice;//商场承担 + private BigDecimal merchantPrice;//商户承担 + + private BigDecimal amountCashBack;//金额返现* + private BigDecimal relatedCashBack;//联单返现* + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java new file mode 100644 index 000000000..8fad169c1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java @@ -0,0 +1,22 @@ +package com.iformall.domain.vo; + +import com.iformall.common.SortColumn; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class WxVtwoMerchantSettlementStatistics extends TenantEntity { + + private Long merchantId; + private String merchantName; + + private Integer orderCount; +// private BigDecimal orderMoney; + private BigDecimal grantPrice; + private BigDecimal mallPrice; + private BigDecimal merchantPrice; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java index 5b4027e2b..0e3de0717 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java @@ -14,8 +14,8 @@ public class WxVtwoOrderBusinessStatistics implements Serializable { private String businessName; private Integer businessCount; - private BigDecimal sumAmount; + private BigDecimal orderMoney; + private Double countRatio; private Double moneyRatio; - } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java index 9e93a76d0..9bd01fb3a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java @@ -14,6 +14,6 @@ public class WxVtwoOrderCountStatistics implements Serializable { private Integer userCount; private Integer orderCount; - private BigDecimal sumAmount; + private BigDecimal orderMoney; private Integer merchantCount; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java new file mode 100644 index 000000000..d17ba7c2a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java @@ -0,0 +1,21 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class WxVtwoSettlementStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private BigDecimal grantPrice; + private Integer orderCount; + private Integer merchantCount; + private BigDecimal mallPrice; + private BigDecimal merchantPrice; + + private double mallRatio; + private double merchantRatio; +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java new file mode 100644 index 000000000..afd336177 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumVtwoActivityGrantStatus { + + VALID(1, "有效"), + NOT_VALID(0, "无效") + ; + + public static EnumVtwoActivityGrantStatus getEnum(Integer code) { + for (EnumVtwoActivityGrantStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumVtwoActivityGrantStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java index b68f4c1f4..817c09d13 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java @@ -3,6 +3,11 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantAward; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +17,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantAwardMapper extends CommonMapper { + void insertList(@Param("grantAwardList")List grantAwardList); + + WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityGrantAward grantAward); + + List activityAwardCountStatisticsChart(WxVtwoActivityGrantAward grantAward); + + List awardItemStatistics(WxVtwoActivityGrantAward grantAward); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java index f439564c0..ffec39e70 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantExport; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantExportMapper extends CommonMapper { + void insertList(@Param("grantExportList")List grantExportList); + + List findList(WxVtwoActivityGrantExport exportQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java index 9858cf78a..35114dc1d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrant; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantMapper extends CommonMapper { + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrant activityGrant); + + List activityAwardStatisticsChart(WxVtwoActivityGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java index 1f11b61ae..b3b283049 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantOrderMapper extends CommonMapper { + void insertList(@Param("grantOrderList")List grantOrderList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java index 54a0971df..b9b40450d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java @@ -2,7 +2,12 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantSettlement; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.domain.vo.WxVtwoMerchantSettlementStatistics; +import com.iformall.domain.vo.WxVtwoSettlementStatistics; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -14,6 +19,16 @@ public interface WxVtwoActivityGrantSettlementMapper extends CommonMapper settlementList); + + WxVtwoSettlementStatistics settlementStatistics(WxVtwoActivityGrantSettlement record); + + List merchantSettlementStatistics(WxVtwoActivityGrantSettlement record); + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrantSettlement record); + + List activityAwardStatisticsChart(WxVtwoActivityGrantSettlement record); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java index 7b9af184b..0647a3697 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java @@ -40,6 +40,7 @@ public interface WxVtwoActivityOrderMapper extends CommonMapper getBusinessStatistics(WxVtwoActivityOrder record); + List findAuditDetailList(WxVtwoActivityOrder orderQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java index d9084abb4..19f5d9395 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java @@ -3,6 +3,10 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; /** * @author xiaohu @@ -12,6 +16,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivitySpecialTopicMapper extends CommonMapper { + List findList(WxVtwoActivitySpecialTopic specialTopic); + + int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic); + + WxVtwoActivitySpecialTopic selectById(@Param("id") Long id, @Param("tenantId")String tenantId); + + WxVtwoActivitySpecialTopic selectCreditOne(@Param("tenantId")String tenantId,@Param("creditOnOff") Integer creditOnOff, + @Param("orderDate") Date orderDate,@Param("status") Integer status); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java index 6d02ffd4f..11c6758eb 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java @@ -16,7 +16,7 @@ import java.util.List; */ public interface WxVtwoCashBackAwardMapper extends CommonMapper { - void insertList(@Param("awardList") List awardList); + void insertList(@Param("awardList") List awardList); List findList(WxVtwoCashBackAward cashBackAward); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java index 87fed5391..a39eb038b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java @@ -1,8 +1,13 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxVtwoActivityGrantAward; import com.iformall.domain.po.WxVtwoCashBackGrantAward; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +17,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper { + void insertList(@Param("grantAwardList") List grantAwardList); + + List awardItemStatistics(WxVtwoCashBackGrantAward grantAward); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java index 0014b8f79..edc071318 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoCashBackGrant; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoCashBackGrantMapper extends CommonMapper { + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoCashBackGrant wxVtwoCashBackGrant); + + List activityAwardStatisticsChart(WxVtwoCashBackGrant wxVtwoCashBackGrant); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java index e0fd7c71b..84456b556 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoSpecialTopicActivity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoSpecialTopicActivityMapper extends CommonMapper { + void insertList(@Param("activityList") List activityList); + + List findList(WxVtwoSpecialTopicActivity specialTopicActivity); + + void updateByActivity(WxVtwoSpecialTopicActivity specialTopicActivity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java b/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java index 57a1adf1f..adfc45dcb 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java @@ -1,12 +1,10 @@ package com.iformall.service; -import com.iformall.domain.po.WxLegionActivity; -import com.iformall.domain.po.WxLegionActivityOfflineConfig; +import com.iformall.domain.po.*; import com.baomidou.mybatisplus.extension.service.IService; -import com.iformall.domain.po.WxLegionActivityOrder; -import com.iformall.domain.po.WxOfflineActivity; import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -15,11 +13,13 @@ import java.util.List; */ public interface WxLegionActivityOfflineConfigService { - void handleOfflineConfig(WxLegionActivity wxLegionActivity); - - List getOfflineActivityList(WxLegionActivity wxLegionActivity); +// void handleOfflineConfig(WxLegionActivity wxLegionActivity); +// +// List getOfflineActivityList(WxLegionActivity wxLegionActivity); void syncOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder); void syncOfflineActivityRecord(List wxLegionActivityOrders); + + void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map legionConfigMap); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 0656ce9c8..a33cf2932 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -36,4 +36,5 @@ public interface WxOfflineActivityGrantSettlementService { void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement); OfflineActivitySettlementStatistics activitySettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java index a9e9a66b5..61df79e3d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.base.TenantEntity; import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -14,4 +15,8 @@ import java.util.List; public interface WxVtwoActivityAwardService extends IService { void saveFromActivity(TenantEntity tenantEntity, Long activityId, List awardList); + + List findActivityAwardList(Long activityId, String tenantId); + + Map findActivityAwardMap(Long activityId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java index f19945b91..ca1eb37f6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java @@ -1,7 +1,14 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivityAward; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantAward; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import java.util.List; /** * @author xiaohu @@ -10,4 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantAwardService extends IService { + void saveGrantAward(WxVtwoActivityGrant activityGrant,List awardList); + + WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java index 79c2bb3a1..0e30365d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java @@ -1,7 +1,13 @@ package com.iformall.service; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantExport; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoActivityGrantSettlement; +import com.iformall.domain.po.WxVtwoCashBackGrant; + +import java.util.List; /** * @author xiaohu @@ -10,4 +16,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantExportService extends IService { + void saveGrantExport(WxVtwoActivityGrant activityGrant, List settlementList); + + void saveGrantExport(WxVtwoCashBackGrant activityGrant, List settlementList); + + List findActivityGrantList(Long activityId, String tenantId); + + List getExportHeadList(); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java index c095aaffc..5c61483a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java @@ -2,6 +2,9 @@ package com.iformall.service; import com.iformall.domain.po.WxVtwoActivityGrantOrder; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoActivityOrder; + +import java.util.List; /** * @author xiaohu @@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantOrderService extends IService { + void saveGrantOrder(Long grantId, Long activityId, List orderList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java index 62010e0cf..72db56c72 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java @@ -2,6 +2,13 @@ package com.iformall.service; import com.iformall.domain.po.WxVtwoActivityGrant; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * @author xiaohu @@ -10,4 +17,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantService extends IService { + void handleFromOrder(WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java index d8038ba11..c6a44532b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java @@ -1,7 +1,14 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantSettlement; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoCashBackGrant; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.domain.vo.WxVtwoSettlementStatistics; + +import java.util.List; /** * @author xiaohu @@ -10,4 +17,17 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantSettlementService extends IService { + void saveGrantSettlement(WxVtwoActivityGrant activityGrant); + + void saveGrantSettlement(WxVtwoCashBackGrant activityGrant); + + WxVtwoSettlementStatistics activitySettlementStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + WxVtwoAwardStatistics activityAmountCashBackStatistics(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java new file mode 100644 index 000000000..7c420305f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java @@ -0,0 +1,22 @@ +package com.iformall.service; + +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_vtwo_activity_grant(线下活动发奖)】的数据库操作Service +* @createDate 2025-05-16 00:37:31 +*/ +public interface WxVtwoActivityGrantStatisticsService { + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index 834e70850..5c27ab05e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -1,7 +1,18 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityOrder; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoOrderBusinessStatistics; +import com.iformall.domain.vo.WxVtwoOrderCountStatistics; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -10,4 +21,42 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityOrderService extends IService { + PageInfo listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize); + + List findList(WxVtwoActivityOrder record, Long activityId); + + WxVtwoActivityOrder getById(Long id, String tenantId); + WxVtwoActivityOrder getInfoById(Long id, String tenantId); + + Map getStatistics(WxVtwoActivityOrder record); + + void auditRecord(WxVtwoActivityOrder record, Long userId); + + void saveCreditHistory(WxVtwoActivityOrder record); + + Map orderStatistics(TenantEntity tenantInfo); + + void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId); + + Integer getWaitAudiCount(TenantEntity tenantInfo); + + WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder); + + List findGrantOrder(TenantEntity tenantInfo, List idList, List filterIdList); + + Integer getJointCount(Integer relatedModel, List orderList); + + /** + * 只查询审核信息 + * @param ids + * @param tenantId + * @return + */ + Map findAuditDetailMap(List ids, String tenantId); + + WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java index ee91172aa..6123c6118 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java @@ -1,7 +1,13 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; + +import java.util.Date; /** * @author xiaohu @@ -10,4 +16,15 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivitySpecialTopicService extends IService { + PageInfo listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize); + + int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic); + + WxVtwoActivitySpecialTopic getInfoById(Long id, String tenantId); + + WxVtwoActivitySpecialTopic getById(Long id, String tenantId); + + WxVtwoActivitySpecialTopic selectCreditOne(TenantEntity tenantEntity, Date createDate); + + void handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java index d0f6c7d7b..bae8ebf87 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java @@ -1,9 +1,12 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; -import com.iformall.domain.po.WxVtwoAmountGiftActivity; +import com.iformall.domain.po.*; import com.baomidou.mybatisplus.extension.service.IService; -import com.iformall.domain.po.WxVtwoPrizeDrawActivity; +import com.iformall.domain.po.base.TenantEntity; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @author xiaohu @@ -16,4 +19,13 @@ public interface WxVtwoAmountGiftActivityService extends IService { void saveFromActivity(TenantEntity tenantEntity, Long activityId, List amountRulesObject, List relatedRulesObject); + + List findActivityAwardList(Long activityId, String tenantId); + + Map findActivityAwardMap(Long activityId, String tenantId); + + List getAmountAwardIdList(Long activityId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java index 651f90b08..5b6661671 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java @@ -1,7 +1,14 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.WxVtwoCashBackActivity; +import com.iformall.domain.po.WxVtwoCashBackGrant; import com.iformall.domain.po.WxVtwoCashBackGrantAward; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; + +import java.util.List; /** * @author xiaohu @@ -10,4 +17,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoCashBackGrantAwardService extends IService { + void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List orderList); + + void saveGrantAward(WxVtwoCashBackGrant activityGrant); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java index 0df527b6e..c1c4c119f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java @@ -1,7 +1,12 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.domain.po.WxVtwoCashBackGrant; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import java.util.List; /** * @author xiaohu @@ -10,4 +15,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoCashBackGrantService extends IService { + void handleFromOrder(WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant); + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java index ba5152404..0f3b51a60 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java @@ -1,8 +1,16 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxVtwoActivityGrant; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.domain.po.WxVtwoPrizeDrawActivity; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoSpecialTopicActivity; +import com.iformall.domain.po.base.TenantEntity; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * @author xiaohu @@ -14,4 +22,14 @@ public interface WxVtwoPrizeDrawActivityService extends IService listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize); WxVtwoPrizeDrawActivity getInfoById(Long id, String tenantId); + + WxVtwoPrizeDrawActivity getById(Long id, String tenantId); + + void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity); + + void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity, WxVtwoActivityGrant activityGrant); + + void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant); + + void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java index d9a256880..0884c00d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java @@ -1,7 +1,11 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.iformall.domain.po.WxVtwoSpecialTopicActivity; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.base.TenantEntity; + +import java.util.List; /** * @author xiaohu @@ -10,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoSpecialTopicActivityService extends IService { + void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List activityList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOfflineConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOfflineConfigServiceImpl.java index 390ac77ca..0e39605d9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOfflineConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOfflineConfigServiceImpl.java @@ -7,11 +7,8 @@ import com.iformall.enums.EnumOfflineActivityRecordStatus; import com.iformall.mapper.WxLegionActivityOrderMapper; import com.iformall.mapper.WxOfflineActivityMapper; import com.iformall.mapper.WxOfflineActivityRecordMapper; -import com.iformall.service.WxLegionActivityOfflineConfigService; +import com.iformall.service.*; import com.iformall.mapper.WxLegionActivityOfflineConfigMapper; -import com.iformall.service.WxMerchantService; -import com.iformall.service.WxOfflineActivityRecordService; -import com.iformall.service.WxOfflineActivityService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,11 +24,11 @@ import java.util.stream.Collectors; @Service public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivityOfflineConfigService{ - @Autowired - private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper; - - @Autowired - private WxOfflineActivityMapper wxOfflineActivityMapper; +// @Autowired +// private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper; +// +// @Autowired +// private WxOfflineActivityMapper wxOfflineActivityMapper; @Autowired private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; @@ -40,41 +37,44 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit private WxOfflineActivityRecordService wxOfflineActivityRecordService; @Autowired - private WxMerchantService wxMerchantService; - - @Override - public void handleOfflineConfig(WxLegionActivity wxLegionActivity) { - wxLegionActivityOfflineConfigMapper.deleteByLegionActivity(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); - if(wxLegionActivity.getOfflineActivityList() == null || wxLegionActivity.getOfflineActivityList().isEmpty()){ - return; - } - final IdWorker idWorker = IdWorker.get(); - List legionActivityOfflineConfigList = new ArrayList<>(); - for (WxOfflineActivity wxOfflineActivity : wxLegionActivity.getOfflineActivityList()) { - WxLegionActivityOfflineConfig wxLegionActivityOfflineConfig = new WxLegionActivityOfflineConfig(); - wxLegionActivityOfflineConfig.setId(idWorker.nextId()); - wxLegionActivityOfflineConfig.updateTenantInfo(wxLegionActivity); - wxLegionActivityOfflineConfig.setLegionActivityId(wxLegionActivity.getId()); - wxLegionActivityOfflineConfig.setOfflineActivityId(wxOfflineActivity.getId()); - legionActivityOfflineConfigList.add(wxLegionActivityOfflineConfig); - } + private WxVtwoActivityOrderService wxVtwoActivityOrderService; - wxLegionActivityOfflineConfigMapper.insertList(legionActivityOfflineConfigList); - } - - @Override - public List getOfflineActivityList(WxLegionActivity wxLegionActivity) { - - List OfflineActivityIds = wxLegionActivityOfflineConfigMapper.getOfflineActivityIds(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); - if(OfflineActivityIds == null || OfflineActivityIds.isEmpty()){ - return Collections.emptyList(); - } - WxOfflineActivity wxOfflineActivity = new WxOfflineActivity(); - wxOfflineActivity.updateTenantInfo(wxLegionActivity); - wxOfflineActivity.setIds(OfflineActivityIds); + @Autowired + private WxMerchantService wxMerchantService; - return wxOfflineActivityMapper.findList(wxOfflineActivity); - } +// @Override +// public void handleOfflineConfig(WxLegionActivity wxLegionActivity) { +// wxLegionActivityOfflineConfigMapper.deleteByLegionActivity(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); +// if(wxLegionActivity.getOfflineActivityList() == null || wxLegionActivity.getOfflineActivityList().isEmpty()){ +// return; +// } +// final IdWorker idWorker = IdWorker.get(); +// List legionActivityOfflineConfigList = new ArrayList<>(); +// for (WxOfflineActivity wxOfflineActivity : wxLegionActivity.getOfflineActivityList()) { +// WxLegionActivityOfflineConfig wxLegionActivityOfflineConfig = new WxLegionActivityOfflineConfig(); +// wxLegionActivityOfflineConfig.setId(idWorker.nextId()); +// wxLegionActivityOfflineConfig.updateTenantInfo(wxLegionActivity); +// wxLegionActivityOfflineConfig.setLegionActivityId(wxLegionActivity.getId()); +// wxLegionActivityOfflineConfig.setOfflineActivityId(wxOfflineActivity.getId()); +// legionActivityOfflineConfigList.add(wxLegionActivityOfflineConfig); +// } +// +// wxLegionActivityOfflineConfigMapper.insertList(legionActivityOfflineConfigList); +// } +// +// @Override +// public List getOfflineActivityList(WxLegionActivity wxLegionActivity) { +// +// List OfflineActivityIds = wxLegionActivityOfflineConfigMapper.getOfflineActivityIds(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); +// if(OfflineActivityIds == null || OfflineActivityIds.isEmpty()){ +// return Collections.emptyList(); +// } +// WxOfflineActivity wxOfflineActivity = new WxOfflineActivity(); +// wxOfflineActivity.updateTenantInfo(wxLegionActivity); +// wxOfflineActivity.setIds(OfflineActivityIds); +// +// return wxOfflineActivityMapper.findList(wxOfflineActivity); +// } @Override @Transactional(rollbackFor = Exception.class) @@ -126,7 +126,6 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit } - private WxOfflineActivityRecord createOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder) { WxOfflineActivityRecord activityRecord = new WxOfflineActivityRecord(); activityRecord.updateTenantInfo(legionActivityOrder); @@ -155,6 +154,48 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit return activityRecord; } + @Override + public void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map legionConfigMap) { + WxVtwoActivityOrder order = new WxVtwoActivityOrder(); + order.updateTenantInfo(legionActivityOrder); + order.setFromUserId(user.getId()); + order.setVipNum(user.getVipNum()); + order.setCusName(legionActivityOrder.getCusName()); + order.setRealCusName(user.getName()); + order.setCusPhone(user.getPhone()); + order.setCusAddress(legionActivityOrder.getCusAddress()); + order.setLegionId(user.getLegionId()); + if(order.getLegionId() == null || order.getLegionId() == 0){ + order.setLegionName("无军团"); + }else{ + order.setLegionName(legionConfigMap.get(order.getLegionId())); + } + order.setUnionId(user.getUnionId()); + if(order.getUnionId() == null || order.getUnionId() == 0){ + order.setUnionName("无联盟"); + }else{ + order.setUnionName(legionConfigMap.get(order.getUnionId())); + } + order.setFromOrderId(legionActivityOrder.getId()); + order.setOrderNo(legionActivityOrder.getOrderNo()); + order.setOrderMoney(legionActivityOrder.getOrderMoney()); + order.setMerchantId(legionActivityOrder.getMerchantId()); + order.setLotteryNum(legionActivityOrder.getLotteryNum()); + order.setLotteryCount(legionActivityOrder.getLotteryCount()); + order.setAnniversaryLotteryNum(legionActivityOrder.getAnniversaryLotteryNum()); + order.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + order.setAuditRemark(legionActivityOrder.getAuditRemark()); + order.setAuditBy(legionActivityOrder.getAuditBy()); + order.setAuditTime(legionActivityOrder.getAuditTime()); + order.setCreateBy(legionActivityOrder.getCreateBy()); + order.setCreateDate(legionActivityOrder.getCreateDate()); + order.setUpdateDate(legionActivityOrder.getUpdateDate()); + + wxVtwoActivityOrderService.saveOrUpdate(order); + + wxVtwoActivityOrderService.saveCreditHistory(order); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java index 384c18f09..059cc9e87 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java @@ -1,6 +1,5 @@ package com.iformall.service.impl; -import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; @@ -16,7 +15,7 @@ import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; import com.iformall.utils.DateUtils; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -199,10 +198,10 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe if(!user.getPhone().equals(wxLegionActivityOrder.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户信息错误"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getCusName())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getCusName())){ wxLegionActivityOrder.setCusName(user.getName()); } - if(StringUtil.isBlank(wxLegionActivityOrder.getCusAddress())){ + if(org.apache.commons.lang3.StringUtils.isBlank(wxLegionActivityOrder.getCusAddress())){ wxLegionActivityOrder.setCusAddress(user.getAddress()); } wxLegionActivityOrder.setCusMerchantId(user.getMerchantId()); @@ -369,8 +368,15 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrder); if(upd == 1 && EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode().equals(wxLegionActivityOrder.getAuditStatus())){ + //同步订单 WxLegionActivityOrder legionActivityOrder = wxLegionActivityOrderMapper.selectById(wxLegionActivityOrder.getId(), wxLegionActivityOrder.getTenantId()); + + WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); + legionConfigQ.updateTenantInfo(legionActivityOrder); + legionConfigQ.setActivityId(legionActivityOrder.getActivityId()); + Map legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); + WxLegionActivityUser user = wxLegionActivityUserMapper.selectById(legionActivityOrder.getCusId(), legionActivityOrder.getTenantId()); legionActivityOrder.setCusPhone(user.getPhone()); legionActivityOrder.setCusVipNum(user.getVipNum()); @@ -383,7 +389,7 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe legionActivityOrder.setAuditTime(wxLegionActivityOrder.getAuditTime()); legionActivityOrder.setUpdateDate(wxLegionActivityOrder.getUpdateDate()); - wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(legionActivityOrder); + wxLegionActivityOfflineConfigService.syncOfflineActivityOrder(user,legionActivityOrder,legionConfigMap); } } @@ -702,6 +708,11 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe wxLegionActivityOrderUpd.setUpdateDate(now); Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrderUpd); + WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); + legionConfigQ.updateTenantInfo(syncOrders.get(0)); + legionConfigQ.setActivityId(syncOrders.get(0).getActivityId()); + Map legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); + List userIds = syncOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); WxLegionActivityUser userQ = new WxLegionActivityUser(); userQ.updateTenantInfo(tenantEntity); @@ -715,8 +726,9 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe legionActivityOrder.setAuditBy(userId); legionActivityOrder.setAuditTime(now); legionActivityOrder.setUpdateDate(now); + + wxLegionActivityOfflineConfigService.syncOfflineActivityOrder(user,legionActivityOrder,legionConfigMap); } - wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(syncOrders); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java index 690dda55f..6689ca46a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java @@ -48,11 +48,8 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ @Autowired private WxLegionActivityMerchantConfigService wxLegionActivityMerchantConfigService; - @Autowired - private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper; - - @Autowired - private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService; +// @Autowired +// private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService; @Autowired private WxLegionActivityOrderService wxLegionActivityOrderService; @@ -187,7 +184,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ wxLegionActivityMapper.updateById(wxLegionActivity); } //处理线下活动配置 - wxLegionActivityOfflineConfigService.handleOfflineConfig(wxLegionActivity); +// wxLegionActivityOfflineConfigService.handleOfflineConfig(wxLegionActivity); //处理军团配置 wxLegionActivityConfigService.handleLegionConfig(wxLegionActivity); @@ -205,7 +202,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ return activity; } //获取活动发奖配置 - activity.setOfflineActivityList(wxLegionActivityOfflineConfigService.getOfflineActivityList(activity)); +// activity.setOfflineActivityList(wxLegionActivityOfflineConfigService.getOfflineActivityList(activity)); //获取军团配置 WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); legionConfigQ.updateTenantInfo(activity); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityAwardServiceImpl.java index 7bfb5d8ec..f22a3d14f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityAwardServiceImpl.java @@ -14,8 +14,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author xiaohu @@ -51,6 +55,20 @@ public class WxVtwoActivityAwardServiceImpl extends ServiceImpl findActivityAwardList(Long activityId, String tenantId) { + WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); + activityAwardQ.setTenantId(tenantId); + activityAwardQ.setActivityId(activityId); + return wxVtwoActivityAwardMapper.findList(activityAwardQ); + } + + @Override + public Map findActivityAwardMap(Long activityId, String tenantId) { + List activityAwardList = this.findActivityAwardList(activityId, tenantId); + return activityAwardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java index 3008a1bdb..cdd6eb3a9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java @@ -1,11 +1,34 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; +import com.iformall.common.Result; +import com.iformall.domain.po.WxVtwoActivityAward; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantAward; +import com.iformall.domain.po.WxVtwoCashBackGrant; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.exception.MallinkException; +import com.iformall.service.WxVtwoActivityAwardService; import com.iformall.service.WxVtwoActivityGrantAwardService; import com.iformall.mapper.WxVtwoActivityGrantAwardMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.counting; +import static java.util.stream.Collectors.groupingBy; + /** * @author xiaohu * @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 @@ -15,6 +38,86 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl implements WxVtwoActivityGrantAwardService{ + @Autowired + private WxVtwoActivityGrantAwardMapper wxVtwoActivityGrantAwardMapper; + + @Override + public void saveGrantAward(WxVtwoActivityGrant activityGrant,List awardList) { + + Map activityAwardMap = awardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); + + List grantAwardList = activityGrant.getGrantAwardList(); + boolean isAwardId = grantAwardList.stream().anyMatch(grantAward -> grantAward.getAwardId() == null); + if(isAwardId){ + throw new MallinkException(Result.ERROR, "请检查是否都选择奖项"); + } + boolean isModeType = grantAwardList.stream().anyMatch(grantAward -> grantAward.getModeType() == null); + if(isModeType){ + throw new MallinkException(Result.ERROR, "请检查奖项参数"); + } + //所得奖项不能重复, 后续计算问题 + boolean isRepeat = grantAwardList.stream() + .collect(groupingBy(e -> String.valueOf(e.getAwardId())+String.valueOf(e.getModeType())+String.valueOf(e.getOrderId()), counting())) + .entrySet().stream().anyMatch(e -> e.getValue() > 1); + if(isRepeat){ + throw new MallinkException(Result.ERROR, "请检查奖项存在重复"); + } + + final IdWorker idWorker = IdWorker.get(); + for(WxVtwoActivityGrantAward grantAward : grantAwardList){ + grantAward.setId(idWorker.nextId()); + grantAward.updateTenantInfo(activityGrant); + grantAward.setActivityId(activityGrant.getActivityId()); + grantAward.setActivityName(activityGrant.getActivityName()); + grantAward.setGrantId(activityGrant.getId()); + WxVtwoActivityAward activityAward = activityAwardMap.get(grantAward.getAwardId()); + grantAward.setAwardGrade(activityAward.getGrade()); + grantAward.setAwardName(activityAward.getName()); + grantAward.setAwardPrice(activityAward.getPrice()); + if(grantAward.getAwardCount() == null){ + grantAward.setAwardCount(1); + } + grantAward.setGrantPrice(grantAward.getAwardPrice() + .multiply(new BigDecimal(grantAward.getAwardCount())) + .setScale(2, RoundingMode.HALF_UP)); + grantAward.setShareRule(activityAward.getShareRule()); + grantAward.setMallShareRate(activityAward.getMallShareRate()); + grantAward.setMerchantShareRate(activityAward.getMerchantShareRate()); + grantAward.setCreateDate(activityAward.getUpdateDate()); + grantAward.setUpdateDate(activityAward.getUpdateDate()); + } + + wxVtwoActivityGrantAwardMapper.insertList(grantAwardList); + activityGrant.setGrantAwardList(grantAwardList); + } + + private WxVtwoActivityGrantAward handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){ + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.updateTenantInfo(statisticsVo); + grantAward.setActivityId(statisticsVo.getActivityId()); + grantAward.setCreateDateBegin(statisticsVo.getCreateDateBegin()); + grantAward.setCreateDateEnd(statisticsVo.getCreateDateEnd()); + grantAward.setStatus(EnumYesOrNo.YES.getCode()); + return grantAward; + } + + @Override + public WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.activityAwardCountStatistics(grantAward); + } + + @Override + public List activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.activityAwardCountStatisticsChart(grantAward); + } + + @Override + public List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.awardItemStatistics(grantAward); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java index 68e87cb01..f88a2d049 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java @@ -1,11 +1,26 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.iformall.domain.po.WxVtwoActivityGrantExport; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseEntity; import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.mapper.WxVtwoActivityGrantExportMapper; +import com.iformall.service.WxVtwoActivityOrderService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + /** * @author xiaohu * @description 针对表【wx_vtwo_activity_grant_export(线下活动发放奖励导出)】的数据库操作Service实现 @@ -15,6 +30,202 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl implements WxVtwoActivityGrantExportService{ + @Autowired + private WxVtwoActivityGrantExportMapper wxVtwoActivityGrantExportMapper; + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @Override + public void saveGrantExport(WxVtwoActivityGrant activityGrant, List settlementList) { + + Map> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId)); + Map orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + List grantExportList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + orderSettlementMap.keySet().forEach(orderId -> { + List orderSettlementList = orderSettlementMap.get(orderId); + WxVtwoActivityOrder order = orderMap.get(orderId); + + WxVtwoActivityGrantExport grantExport = getGrantExport(order,orderSettlementList); + grantExport.setId(idWorker.nextId()); + grantExport.setActivityId(activityGrant.getActivityId()); + grantExport.setActivityType(activityGrant.getActivityType()); + grantExport.setActivityName(activityGrant.getActivityName()); + grantExport.setGrantId(activityGrant.getId()); + grantExport.setGrantUserName(activityGrant.getRealName()); + grantExport.setGrantUserCard(activityGrant.getRealCard()); + grantExport.setGrantBy(activityGrant.getCreateBy()); + grantExport.setGrantByName(activityGrant.getCreateByName()); + grantExport.setGrantTime(activityGrant.getCreateDate()); + grantExport.setGrantRemark(activityGrant.getRemark()); + grantExport.setSignImg(activityGrant.getSignImg()); + + grantExportList.add(grantExport); + }); + wxVtwoActivityGrantExportMapper.insertList(grantExportList); + } + + private WxVtwoActivityGrantExport getGrantExport(WxVtwoActivityOrder order,List orderSettlementList){ + WxVtwoActivityGrantExport grantExport = new WxVtwoActivityGrantExport(); + grantExport.updateTenantInfo(order); + grantExport.setOrderId(order.getId()); + grantExport.setOrderNo(order.getOrderNo()); + grantExport.setOrderAmount(order.getOrderMoney()); + grantExport.setMerchantId(order.getMerchantId()); + grantExport.setMerchantName(order.getMerchantName()); + grantExport.setMerchantShopNum(order.getShopNumber()); + grantExport.setBusinessId(order.getBusinessId()); + grantExport.setBusinessName(order.getBusinessName()); + grantExport.setLotteryNum(order.getLotteryNumStr()); + grantExport.setLotteryNum(order.getLotteryNum()); + grantExport.setAnniversaryLotteryNum(order.getAnniversaryLotteryNum()); + grantExport.setOrderCreateTime(order.getCreateDate()); + grantExport.setVipNum(order.getVipNum()); + grantExport.setCusName(order.getCusName()); + grantExport.setCusPhone(order.getCusPhone()); + grantExport.setCusAddress(order.getCusAddress()); + grantExport.setLegionId(order.getLegionId()); + grantExport.setLegionName(order.getLegionName()); + grantExport.setUnionId(order.getUnionId()); + grantExport.setUnionName(order.getUnionName()); + + grantExport.setGrantDetail(JSONObject.toJSONString(orderSettlementList)); + BigDecimal grantPrice = BigDecimal.ZERO; + BigDecimal mallSharePrice = BigDecimal.ZERO; + BigDecimal merchantSharePrice = BigDecimal.ZERO; + BigDecimal taxAmount = BigDecimal.ZERO; + for (WxVtwoActivityGrantSettlement grantSettlement:orderSettlementList){ + grantPrice = grantPrice.add(grantSettlement.getOrderGrantPrice()); + mallSharePrice = mallSharePrice.add(grantSettlement.getOrderMallSharePrice()); + merchantSharePrice = merchantSharePrice.add(grantSettlement.getOrderMerchantSharePrice()); + if(grantSettlement.getTaxAmount() != null ){ + taxAmount = taxAmount.add(grantSettlement.getTaxAmount()); + } + } + grantExport.setGrantPrice(grantPrice); + grantExport.setMallSharePrice(mallSharePrice); + grantExport.setMerchantSharePrice(merchantSharePrice); + grantExport.setMallShareRate(mallSharePrice.divide(grantPrice,4, RoundingMode.HALF_UP) + .multiply(new BigDecimal(100))); + grantExport.setMerchantShareRate(merchantSharePrice.divide(grantPrice,4, RoundingMode.HALF_UP) + .multiply(new BigDecimal(100))); + grantExport.setTaxAmount(taxAmount); + return grantExport; + } + + @Override + public void saveGrantExport(WxVtwoCashBackGrant activityGrant, List settlementList) { + Map> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId)); + Map orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + List grantExportList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + orderSettlementMap.keySet().forEach(orderId -> { + List orderSettlementList = orderSettlementMap.get(orderId); + WxVtwoActivityOrder order = orderMap.get(orderId); + + WxVtwoActivityGrantExport grantExport = getGrantExport(order,orderSettlementList); + grantExport.setId(idWorker.nextId()); + grantExport.setActivityId(activityGrant.getActivityId()); + grantExport.setActivityType(activityGrant.getActivityType()); + grantExport.setActivityName(activityGrant.getActivityName()); + grantExport.setGrantId(activityGrant.getId()); + grantExport.setGrantUserName(activityGrant.getRealName()); + grantExport.setGrantUserCard(activityGrant.getRealCard()); + grantExport.setGrantBy(activityGrant.getCreateBy()); + grantExport.setGrantByName(activityGrant.getCreateByName()); + grantExport.setGrantTime(activityGrant.getCreateDate()); + grantExport.setGrantRemark(activityGrant.getRemark()); + grantExport.setSignImg(activityGrant.getSignImg()); + + grantExportList.add(grantExport); + }); + wxVtwoActivityGrantExportMapper.insertList(grantExportList); + } + + @Override + public List findActivityGrantList(Long activityId, String tenantId) { + WxVtwoActivityGrantExport exportQ = new WxVtwoActivityGrantExport(); + exportQ.setTenantId(tenantId); + exportQ.setActivityId(activityId); + List exportList = wxVtwoActivityGrantExportMapper.findList(exportQ); + + if(exportList != null && !exportList.isEmpty()){ + List orderIds = exportList.stream().map(e -> e.getOrderId()).distinct().collect(Collectors.toList()); + Map auditDetailMap = wxVtwoActivityOrderService.findAuditDetailMap(orderIds,tenantId); + for(WxVtwoActivityGrantExport export : exportList){ + WxVtwoActivityOrder order = auditDetailMap.get(export.getOrderId()); + export.setOrderAuditStatus(order.getAuditStatus()); + export.setOrderAuditRemark(order.getAuditRemark()); + export.setOrderAuditBy(order.getAuditBy()); + export.setOrderAuditName(order.getAuditByName()); + export.setOrderAuditTime(order.getAuditTime()); + } + } + return exportList; + } + + @Override + public List getExportHeadList() { + List headList = new ArrayList<>(); + ExcelExportEntity entity1 = new ExcelExportEntity("订单编号","orderNo",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("订单金额","orderAmount",20); + headList.add(entity2); + ExcelExportEntity entity3 = new ExcelExportEntity("订单地址","cusAddress",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商户名称","merchantName",20); + headList.add(entity4); + ExcelExportEntity entity5 = new ExcelExportEntity("铺位号","merchantShopNum",20); + headList.add(entity5); + ExcelExportEntity entity6 = new ExcelExportEntity("业态","businessName",20); + headList.add(entity6); + ExcelExportEntity entity7 = new ExcelExportEntity("抽奖券编码","lotteryNum",20); + headList.add(entity7); + ExcelExportEntity entity8 = new ExcelExportEntity("抽奖券数量","lotteryCount",20); + headList.add(entity8); + ExcelExportEntity entity9 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); + headList.add(entity9); + ExcelExportEntity entity10 = new ExcelExportEntity("提交时间","orderCreateTime",20); + entity10.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity10); + ExcelExportEntity entity11 = new ExcelExportEntity("订单状态","orderAuditStatus",20); + entity11.setReplace(new String[]{"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"}); + headList.add(entity11); + ExcelExportEntity entity12 = new ExcelExportEntity("审核人","orderAuditName",20); + headList.add(entity12); + ExcelExportEntity entity13 = new ExcelExportEntity("审核时间","orderAuditTime",20); + entity13.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity13); + + ExcelExportEntity entity21 = new ExcelExportEntity("客户姓名","cusName",20); + headList.add(entity21); + ExcelExportEntity entity22 = new ExcelExportEntity("客户电话","cusPhone",20); + headList.add(entity22); + ExcelExportEntity entity23 = new ExcelExportEntity("vip卡","vipNum",20); + headList.add(entity23); + ExcelExportEntity entity24 = new ExcelExportEntity("所属军团","legionName",20); + headList.add(entity24); + ExcelExportEntity entity25 = new ExcelExportEntity("所属联盟","unionName",20); + headList.add(entity25); + + + ExcelExportEntity entity31 = new ExcelExportEntity("领奖人","grantUserName",20); + headList.add(entity31); + ExcelExportEntity entity32 = new ExcelExportEntity("领奖人身份证号","grantUserCard",20); + headList.add(entity32); + ExcelExportEntity entity33 = new ExcelExportEntity("发奖人","grantByName",20); + headList.add(entity33); + ExcelExportEntity entity34 = new ExcelExportEntity("发奖时间","grantTime",20); + entity34.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity34); + ExcelExportEntity entity35 = new ExcelExportEntity("签名图片","signImg",40); +// entity35.setType(BaseEntityTypeConstants.IMAGE_TYPE); +// entity35.setExportImageType(1); +// entity35.setHeight(20); + headList.add(entity35); + return headList; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java index d728db204..dbed20563 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java @@ -1,11 +1,17 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; import com.iformall.domain.po.WxVtwoActivityGrantOrder; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.service.WxVtwoActivityGrantOrderService; import com.iformall.mapper.WxVtwoActivityGrantOrderMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_activity_grant_order(线下活动发奖订单)】的数据库操作Service实现 @@ -15,6 +21,25 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantOrderServiceImpl extends ServiceImpl implements WxVtwoActivityGrantOrderService{ + @Autowired + private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper; + + @Override + public void saveGrantOrder(Long grantId, Long activityId, List orderList) { + List grantOrderList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + for (WxVtwoActivityOrder order : orderList) { + WxVtwoActivityGrantOrder grantOrder = new WxVtwoActivityGrantOrder(); + grantOrder.setId(idWorker.nextId()); + grantOrder.updateTenantInfo(order); + grantOrder.setGrantId(grantId); + grantOrder.setActivityId(activityId); + grantOrder.setOrderId(order.getId()); + grantOrder.setIsAmount(order.getIsAmount()); + grantOrderList.add(grantOrder); + } + wxVtwoActivityGrantOrderMapper.insertList(grantOrderList); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java index 2d0a1c68f..976d17527 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java @@ -1,10 +1,31 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; import com.iformall.domain.po.WxVtwoActivityGrant; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.WxVtwoCashBackGrant; +import com.iformall.domain.po.WxVtwoPrizeDrawActivity; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxVtwoActivityGrantService; import com.iformall.mapper.WxVtwoActivityGrantMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; /** * @author xiaohu @@ -15,6 +36,79 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantServiceImpl extends ServiceImpl implements WxVtwoActivityGrantService{ + @Autowired + private WxVtwoActivityGrantMapper wxVtwoActivityGrantMapper; + + @Override + public void handleFromOrder(WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant) { + activityGrant.setOrderList(orderList); + BigDecimal orderMoneySum = BigDecimal.ZERO; + List lotteryNumList = new ArrayList<>(); + int lotteryCount = 0; + List anniversaryLotteryNumList = new ArrayList<>(); + for (WxVtwoActivityOrder order : orderList) { + orderMoneySum = orderMoneySum.add(order.getOrderMoney()); + if(order.getLotteryNumList() != null && !order.getLotteryNumList().isEmpty()){ + lotteryNumList.addAll(order.getLotteryNumList()); + } + if(order.getLotteryCount() != null){ + lotteryCount = lotteryCount + order.getLotteryCount(); + } + if(StringUtils.isNotBlank(order.getAnniversaryLotteryNum())){ + anniversaryLotteryNumList.add(order.getAnniversaryLotteryNum()); + } + } + activityGrant.setOrderMoneySum(orderMoneySum); + activityGrant.setOrderCount(orderList.size()); + activityGrant.setCusName(orderList.get(0).getCusName()); + activityGrant.setCusPhone(orderList.get(0).getCusPhone()); + if(!isGrant){ + activityGrant.setLotteryNum(JSON.toJSONString(lotteryNumList)); + activityGrant.setLotteryCount(lotteryCount); + activityGrant.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList)); + } + } + + + @Override + public boolean saveOrUpdate(WxVtwoActivityGrant activityGrant) { + Date now = new Date(); + if(activityGrant.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityGrant.setId(idWorker.nextId()); + activityGrant.setCreateDate(now); + activityGrant.setCreateDate(now); + wxVtwoActivityGrantMapper.insert(activityGrant); + } + else{ + activityGrant.setUpdateDate(now); + wxVtwoActivityGrantMapper.updateById(activityGrant); + } + return true; + } + + private WxVtwoActivityGrant handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){ + WxVtwoActivityGrant activityGrant = new WxVtwoActivityGrant(); + activityGrant.updateTenantInfo(statisticsVo); + activityGrant.setActivityId(statisticsVo.getActivityId()); + activityGrant.setCreateDateBegin(statisticsVo.getCreateDateBegin()); + activityGrant.setCreateDateEnd(statisticsVo.getCreateDateEnd()); + activityGrant.setStatus(EnumYesOrNo.YES.getCode()); + return activityGrant; + } + + @Override + public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantMapper.activityAwardStatistics(activityGrant); + } + + @Override + public List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantMapper.activityAwardStatisticsChart(activityGrant); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index d80a9213c..22b25dfae 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -1,11 +1,25 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.iformall.domain.po.WxVtwoActivityGrantSettlement; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.domain.vo.WxVtwoSettlementStatistics; +import com.iformall.enums.EnumOfflineActivityAwardsModeType; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.service.WxVtwoActivityGrantSettlementService; import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + /** * @author xiaohu * @description 针对表【wx_vtwo_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现 @@ -15,6 +29,244 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl implements WxVtwoActivityGrantSettlementService{ + @Autowired + private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; + + @Autowired + private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService; + + @Override + public void saveGrantSettlement(WxVtwoActivityGrant activityGrant) { + List amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) + .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + List cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + + List grantAwardList = activityGrant.getGrantAwardList(); + Map> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantAward::getModeType)); + List amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + List settlementList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ + handleOrderRatio(amountOrderList); + Map amountOrderMap = amountOrderList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + for (WxVtwoActivityGrantAward grant : amountGrantAwardList) { + if(grant.getOrderId() != null){ + WxVtwoActivityOrder order = amountOrderMap.get(grant.getOrderId()); + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,true); + settlementList.add(settlement); + }else{ + for (WxVtwoActivityOrder order : amountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + } + if(countGrantAwardList != null && !countGrantAwardList.isEmpty()){ + handleOrderRatio(cmountOrderList); + for (WxVtwoActivityGrantAward grant : countGrantAwardList) { + for (WxVtwoActivityOrder order : cmountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + + wxVtwoActivityGrantSettlementMapper.insertList(settlementList); + + wxVtwoActivityGrantExportService.saveGrantExport(activityGrant,settlementList); + } + + private WxVtwoActivityGrantSettlement getGrantSettlement(WxVtwoActivityGrantAward grant,WxVtwoActivityOrder order,IdWorker idWorker,boolean isOneOrder){ + WxVtwoActivityGrantSettlement settlement = new WxVtwoActivityGrantSettlement(); + settlement.setId(idWorker.nextId()); + settlement.updateTenantInfo(grant); + settlement.setActivityId(grant.getActivityId()); + settlement.setGrantId(grant.getGrantId()); + settlement.setGrantAwardId(grant.getId()); + settlement.setAwardId(grant.getAwardId()); + settlement.setAwardCount(grant.getAwardCount()); + settlement.setGrantPrice(grant.getGrantPrice()); + settlement.setOrderId(order.getId()); + settlement.setOrderNo(order.getOrderNo()); + settlement.setOrderAmount(order.getOrderMoney()); + settlement.setMerchantId(order.getMerchantId()); + if(isOneOrder){ + settlement.setOrderRatio(new BigDecimal(100)); + }else{ + settlement.setOrderRatio(order.getOrderRatio()); + } + settlement.setOrderGrantPrice(settlement.getGrantPrice() + .multiply(settlement.getOrderRatio().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + settlement.setMallShareRate(grant.getMallShareRate()); + settlement.setMerchantShareRate(grant.getMerchantShareRate()); + settlement.setOrderMallSharePrice(settlement.getOrderGrantPrice() + .multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + settlement.setOrderMerchantSharePrice(settlement.getOrderGrantPrice().subtract(settlement.getOrderMallSharePrice())); + settlement.setTaxAmount(BigDecimal.ZERO); + settlement.setCreateDate(grant.getUpdateDate()); + settlement.setUpdateDate(grant.getUpdateDate()); + return settlement; + } + + + private void handleOrderRatio(List orderList){ + BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + int size = orderList.size() - 1; + BigDecimal lastRatio = new BigDecimal(100); + for(int i=0; i amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) + .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + List cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + + List grantAwardList = activityGrant.getGrantAwardList(); + Map> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackGrantAward::getModeType)); + List amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + List settlementList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ + handleOrderRatio(amountOrderList); + Map amountOrderMap = amountOrderList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + for (WxVtwoCashBackGrantAward grant : amountGrantAwardList) { + if(grant.getOrderId() != null){ + WxVtwoActivityOrder order = amountOrderMap.get(grant.getOrderId()); + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,true); + settlementList.add(settlement); + }else{ + for (WxVtwoActivityOrder order : amountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + } + if(countGrantAwardList != null && !countGrantAwardList.isEmpty()){ + handleOrderRatio(cmountOrderList); + for (WxVtwoCashBackGrantAward grant : countGrantAwardList) { + for (WxVtwoActivityOrder order : cmountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + + wxVtwoActivityGrantSettlementMapper.insertList(settlementList); + + wxVtwoActivityGrantExportService.saveGrantExport(activityGrant,settlementList); + } + + private WxVtwoActivityGrantSettlement getGrantSettlement(WxVtwoCashBackGrantAward grant,WxVtwoActivityOrder order,IdWorker idWorker,boolean isOneOrder){ + WxVtwoActivityGrantSettlement settlement = new WxVtwoActivityGrantSettlement(); + settlement.setId(idWorker.nextId()); + settlement.updateTenantInfo(grant); + settlement.setActivityId(grant.getActivityId()); + settlement.setGrantId(grant.getGrantId()); + settlement.setGrantAwardId(grant.getId()); + settlement.setAwardId(grant.getAwardId()); + settlement.setGrantPrice(grant.getCashBack()); + settlement.setOrderId(order.getId()); + settlement.setOrderNo(order.getOrderNo()); + settlement.setOrderAmount(order.getOrderMoney()); + settlement.setMerchantId(order.getMerchantId()); + if(isOneOrder){ + settlement.setOrderRatio(new BigDecimal(100)); + }else{ + settlement.setOrderRatio(order.getOrderRatio()); + } + settlement.setOrderGrantPrice(settlement.getGrantPrice() + .multiply(settlement.getOrderRatio().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + settlement.setMallShareRate(grant.getMallShareRate()); + settlement.setMerchantShareRate(grant.getMerchantShareRate()); + settlement.setOrderMallSharePrice(settlement.getOrderGrantPrice() + .multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + settlement.setOrderMerchantSharePrice(settlement.getOrderGrantPrice().subtract(settlement.getOrderMallSharePrice())); + settlement.setTaxAmount(grant.getTaxAmount() + .multiply(settlement.getOrderRatio().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + settlement.setCreateDate(grant.getUpdateDate()); + settlement.setUpdateDate(grant.getUpdateDate()); + return settlement; + } + + private WxVtwoActivityGrantSettlement handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){ + WxVtwoActivityGrantSettlement grantSettlement = new WxVtwoActivityGrantSettlement(); + grantSettlement.updateTenantInfo(statisticsVo); + grantSettlement.setActivityId(statisticsVo.getActivityId()); + grantSettlement.setCreateDateBegin(statisticsVo.getCreateDateBegin()); + grantSettlement.setCreateDateEnd(statisticsVo.getCreateDateEnd()); + grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); + grantSettlement.setActivityIdList(statisticsVo.getActivityIdList()); + return grantSettlement; + } + + @Override + public WxVtwoSettlementStatistics activitySettlementStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + WxVtwoSettlementStatistics settlementStatistics = wxVtwoActivityGrantSettlementMapper.settlementStatistics(grantSettlement); + if(settlementStatistics.getGrantPrice() != null && settlementStatistics.getGrantPrice().compareTo(BigDecimal.ZERO) > 0){ + settlementStatistics.setMallRatio(settlementStatistics.getMallPrice().divide(settlementStatistics.getGrantPrice(),4,RoundingMode.HALF_UP).doubleValue()); + settlementStatistics.setMerchantRatio(1-settlementStatistics.getMallRatio()); + }else{ + settlementStatistics.setMallRatio(0); + settlementStatistics.setMerchantRatio(0); + } + return settlementStatistics; + } + + @Override + public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantSettlementMapper.activityAwardStatistics(grantSettlement); + } + + @Override + public WxVtwoAwardStatistics activityAmountCashBackStatistics(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){ + grantSettlement.setAwardIdList(amountAwardIdList); + }else{ + grantSettlement.setAwardIdList(Collections.singletonList((long) -1)); + } + return wxVtwoActivityGrantSettlementMapper.activityAwardStatistics(grantSettlement); + } + + @Override + public List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); + } + + @Override + public List activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){ + grantSettlement.setAwardIdList(amountAwardIdList); + }else{ + grantSettlement.setAwardIdList(Collections.singletonList((long) -1)); + } + return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java new file mode 100644 index 000000000..dd6565157 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java @@ -0,0 +1,216 @@ +package com.iformall.service.impl; + + +import com.iformall.domain.po.WxVtwoActivityAward; +import com.iformall.domain.po.WxVtwoCashBackAward; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; +import com.iformall.domain.vo.WxVtwoOrderBusinessStatistics; +import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.service.*; +import com.iformall.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** +* @author xiaohu +* @description +* @createDate 2025-05-16 00:37:31 +*/ +@Service +public class WxVtwoActivityGrantStatisticsServiceImpl implements WxVtwoActivityGrantStatisticsService { + + @Autowired + private WxVtwoActivityAwardService wxVtwoActivityAwardService; + + @Autowired + private WxVtwoCashBackAwardService wxVtwoCashBackAwardService; + + @Autowired + private WxVtwoActivityGrantService wxVtwoActivityGrantService; + + @Autowired + private WxVtwoCashBackGrantService wxVtwoCashBackGrantService; + + @Autowired + private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService; + + @Autowired + private WxVtwoCashBackGrantAwardService wxVtwoCashBackGrantAwardService; + + @Autowired + private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; + + + @Override + public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoAwardStatistics activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatistics(statisticsVo); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + WxVtwoAwardStatistics activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatistics(statisticsVo); + activityAwardStatistics.setGrantCount(activityAwardStatistics_1.getGrantCount()); + activityAwardStatistics.setOrderCount(activityAwardStatistics_1.getOrderCount()); + activityAwardStatistics.setOrderMoney(activityAwardStatistics_1.getOrderMoney()); + List amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId()); + WxVtwoAwardStatistics activityAwardStatistics_2 = wxVtwoActivityGrantSettlementService.activityAmountCashBackStatistics(statisticsVo,amountAwardIdList); + activityAwardStatistics.setAmountCashBack(activityAwardStatistics_2.getAwardPrice()); + activityAwardStatistics.setRelatedCashBack(activityAwardStatistics.getAwardPrice().subtract(activityAwardStatistics.getAmountCashBack())); + }else{ + WxVtwoAwardStatistics activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatistics(statisticsVo); + activityAwardStatistics.setGrantCount(activityAwardStatistics_1.getGrantCount()); + activityAwardStatistics.setOrderCount(activityAwardStatistics_1.getOrderCount()); + activityAwardStatistics.setOrderMoney(activityAwardStatistics_1.getOrderMoney()); + WxVtwoAwardStatistics activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatistics(statisticsVo); + activityAwardStatistics.setAwardCount(activityAwardStatistics_2.getAwardCount()); + } + return activityAwardStatistics; + } + + @Override + public List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + List activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatisticsChart(statisticsVo); + Map activityAwardStatisticsMap = new HashMap<>(); + if(activityAwardStatistics != null && !activityAwardStatistics.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + Map activityGrantStatisticsMap = new HashMap<>(); + Map activityAmountCashBackStatisticsMap = new HashMap<>(); + Map activityAwardCountStatisticsMap = new HashMap<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + List activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatisticsChart(statisticsVo); + if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ + activityGrantStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + List amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId()); + List activityAwardStatistics_2 = wxVtwoActivityGrantSettlementService.activityAmountCashBackStatisticsChart(statisticsVo,amountAwardIdList); + if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){ + activityAmountCashBackStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + + }else{ + List activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatisticsChart(statisticsVo); + if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ + activityGrantStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + List activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatisticsChart(statisticsVo); + if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){ + activityAwardCountStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + } + + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(statisticsVo.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(statisticsVo.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List newActivityAwardStatistics = new ArrayList<>(); + for (String date : tjTimeList) { + WxVtwoAwardStatistics awardStatistics = activityAwardStatisticsMap.get(date); + if(awardStatistics == null){ + awardStatistics = new WxVtwoAwardStatistics(); + awardStatistics.setAwardPrice(BigDecimal.ZERO); + awardStatistics.setMallPrice(BigDecimal.ZERO); + awardStatistics.setMerchantPrice(BigDecimal.ZERO); + } + WxVtwoAwardStatistics grantStatistics = activityGrantStatisticsMap.get(date); + if(grantStatistics == null){ + awardStatistics.setGrantCount(0); + awardStatistics.setOrderCount(0); + awardStatistics.setOrderMoney(BigDecimal.ZERO); + }else{ + awardStatistics.setGrantCount(grantStatistics.getGrantCount()); + awardStatistics.setOrderCount(grantStatistics.getOrderCount()); + awardStatistics.setOrderMoney(grantStatistics.getOrderMoney()); + } + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + WxVtwoAwardStatistics amountCashBackStatistics = activityAmountCashBackStatisticsMap.get(date); + if(amountCashBackStatistics == null){ + awardStatistics.setAmountCashBack(BigDecimal.ZERO); + awardStatistics.setRelatedCashBack(BigDecimal.ZERO); + }else { + awardStatistics.setAmountCashBack(amountCashBackStatistics.getAwardPrice()); + awardStatistics.setRelatedCashBack(awardStatistics.getAwardPrice().subtract(awardStatistics.getAmountCashBack())); + } + }else{ + WxVtwoAwardStatistics awardSettlementStatistics = activityAwardCountStatisticsMap.get(date); + if(awardSettlementStatistics == null){ + awardStatistics.setAwardCount(0); + }else{ + awardStatistics.setAwardCount(awardSettlementStatistics.getAwardCount()); + } + } + + awardStatistics.setXTime(date.substring(5).replace("-", "/")); + newActivityAwardStatistics.add(awardStatistics); + } + return newActivityAwardStatistics; + } + + @Override + public List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + List awardGrantStatisticsList = new ArrayList<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + List activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); + List awardGrantStatistics = wxVtwoCashBackGrantAwardService.awardItemStatistics(statisticsVo); + Map awardGrantStatisticsMap = new HashMap<>(); + BigDecimal totalPrice = BigDecimal.ZERO; + if (awardGrantStatistics != null && !awardGrantStatistics.isEmpty()) { + awardGrantStatisticsMap = awardGrantStatistics.stream().collect(Collectors.toMap(WxVtwoAwardGrantStatistics::getAwardId, Function.identity())); + totalPrice = awardGrantStatistics.stream().map(WxVtwoAwardGrantStatistics::getAwardPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + for (WxVtwoCashBackAward award : activityAwardList) { + WxVtwoAwardGrantStatistics awardGrantStatisticsItem = awardGrantStatisticsMap.get(award.getId()); + if(awardGrantStatisticsItem == null){ + awardGrantStatisticsItem = new WxVtwoAwardGrantStatistics(); + awardGrantStatisticsItem.setAwardId(award.getId()); + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setCashBackRatio(award.getCashBackRatio()); + awardGrantStatisticsItem.setAwardPrice(BigDecimal.ZERO); + awardGrantStatisticsItem.setPriceRatio((double) 0); + }else{ + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setCashBackRatio(award.getCashBackRatio()); + awardGrantStatisticsItem.setPriceRatio(awardGrantStatisticsItem.getAwardPrice().divide(totalPrice,4, RoundingMode.HALF_UP).doubleValue()); + } + awardGrantStatisticsList.add(awardGrantStatisticsItem); + } + return awardGrantStatisticsList.stream().sorted(Comparator.comparing(WxVtwoAwardGrantStatistics::getPriceRatio).reversed()).collect(Collectors.toList()); + }else{ + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); + List awardGrantStatistics = wxVtwoActivityGrantAwardService.awardItemStatistics(statisticsVo); + Map awardGrantStatisticsMap = new HashMap<>(); + BigDecimal totalPrice = BigDecimal.ZERO; + Integer totalCount = 0; + if (awardGrantStatistics != null && !awardGrantStatistics.isEmpty()) { + awardGrantStatisticsMap = awardGrantStatistics.stream().collect(Collectors.toMap(WxVtwoAwardGrantStatistics::getAwardId, Function.identity())); + totalPrice = awardGrantStatistics.stream().map(WxVtwoAwardGrantStatistics::getAwardPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + totalCount = awardGrantStatistics.stream().mapToInt(WxVtwoAwardGrantStatistics::getAwardCount).sum(); + } + for (WxVtwoActivityAward award : activityAwardList) { + WxVtwoAwardGrantStatistics awardGrantStatisticsItem = awardGrantStatisticsMap.get(award.getId()); + if(awardGrantStatisticsItem == null){ + awardGrantStatisticsItem = new WxVtwoAwardGrantStatistics(); + awardGrantStatisticsItem.setAwardId(award.getId()); + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setAwardCount(0); + awardGrantStatisticsItem.setAwardPrice(BigDecimal.ZERO); + awardGrantStatisticsItem.setPriceRatio((double) 0); + awardGrantStatisticsItem.setCountRatio((double) 0); + }else{ + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setPriceRatio(awardGrantStatisticsItem.getAwardPrice().divide(totalPrice,4, RoundingMode.HALF_UP).doubleValue()); + awardGrantStatisticsItem.setCountRatio(new BigDecimal(awardGrantStatisticsItem.getAwardCount()).divide(new BigDecimal(totalCount),4,RoundingMode.HALF_UP).doubleValue()); + } + awardGrantStatisticsList.add(awardGrantStatisticsItem); + } + return awardGrantStatisticsList.stream().sorted(Comparator.comparing(WxVtwoAwardGrantStatistics::getCountRatio).reversed()).collect(Collectors.toList()); + } + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java index 4ccace442..ec5fac926 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java @@ -7,8 +7,6 @@ import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxOfflineActivityMerchant; import com.iformall.domain.po.WxVtwoActivityMerchant; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxMerchantService; import com.iformall.service.WxVtwoActivityMerchantService; import com.iformall.mapper.WxVtwoActivityMerchantMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java index 982d86a5c..e9c5ae97a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -1,10 +1,34 @@ package com.iformall.service.impl; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.iformall.domain.po.WxVtwoActivityOrder; -import com.iformall.service.WxVtwoActivityOrderService; -import com.iformall.mapper.WxVtwoActivityOrderMapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.*; +import com.iformall.enums.*; +import com.iformall.mapper.*; +import com.iformall.service.*; +import com.iformall.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.NumberFormat; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.toList; /** * @author xiaohu @@ -15,6 +39,467 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityOrderServiceImpl extends ServiceImpl implements WxVtwoActivityOrderService{ + @Autowired + private WxVtwoActivityOrderMapper wxVtwoActivityOrderMapper; + + @Autowired + private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper; + + @Autowired + private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService; + + @Autowired + private WxMerchantService wxMerchantService; + @Autowired + private WxShopService wxShopService; + @Autowired + private MallUserInfoService mallUserInfoService; + @Autowired + private WxBusinessService wxBusinessService; + + @Autowired + private WxCUserBasicInfoService wxCUserBasicInfoService; + @Autowired + private WxCreditHistoryService wxCreditHistoryService; + + @Autowired + private ExcelService excelService; + + @Override + public PageInfo listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize) { + handlerQuery(record); + PageInfo recordPage = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivityOrderMapper.findList(record)); + handlerList(record,recordPage.getList()); + return recordPage; + } + + @Override + public List findList(WxVtwoActivityOrder record, Long activityId) { + handlerQuery(record); + List recordList = wxVtwoActivityOrderMapper.findList(record); + handlerList(record,recordList); + handlerOrderStatus(activityId,recordList); + return recordList; + } + + private void handlerQuery(WxVtwoActivityOrder record) { + //商户处理 + if (StringUtils.isNotBlank(record.getMerchantName())) { + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(record); + merchant.setName(record.getMerchantName()); + List mids = wxMerchantService.findIdList(merchant); + if (null == mids || mids.size() <= 0 ) { + record.setId(-1L); + }else { + record.setMerchantIdList(mids); + } + } + } + + private void handlerList(TenantEntity tenantEntity, List recordList) { + if (recordList == null || recordList.size() <= 0) { + return; + } + List merchantIds = recordList.stream().map(WxVtwoActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + List userIds = recordList.stream().map(WxVtwoActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + Map idAndNamesMap = new HashMap<>(); + Map merchantShopNumberMap = new HashMap<>(); + if(!merchantIds.isEmpty()){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setIds(merchantIds); + idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(tenantEntity, merchantIds, EnumYesOrNo.NO.getCode()); + } + Map userMap = new HashMap<>(); + if(!userIds.isEmpty()){ + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(tenantEntity); + userMap = mallUserInfoService.getUserMap(userInfoQ); + } + + Map bussinessMap = wxBusinessService.findAllMap(tenantEntity); + + for (WxVtwoActivityOrder record : recordList) { + if(record.getMerchantId() != null){ + record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); + record.setShopNumber(merchantShopNumberMap.get(record.getMerchantId())); + } + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } + if(record.getBusinessId() != null){ + record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle()); + } + } + } + + private void handlerOrderStatus(Long activityId, List recordList){ + if(activityId == null){ + return; + } + if (recordList == null || recordList.size() <= 0) { + return; + } + for (WxVtwoActivityOrder record : recordList) { + if(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){ + record.setGrantStatus(EnumYesOrNo.YES.getCode()); + }else{ + record.setGrantStatus(EnumYesOrNo.NO.getCode()); + } + WxVtwoActivityGrantOrder grantOrder = new WxVtwoActivityGrantOrder(); + grantOrder.updateTenantInfo(record); + grantOrder.setActivityId(activityId); + grantOrder.setOrderId(record.getId()); + grantOrder.setStatus(EnumVtwoActivityGrantStatus.VALID.getCode()); + Integer orderGrantCount = wxVtwoActivityGrantOrderMapper.selectCount(new QueryWrapper<>(grantOrder)); + if(orderGrantCount > 0){ + record.setAuditStatus(EnumOfflineActivityRecordStatus.IS_GRANT.getCode()); + } + } + } + + @Override + public boolean saveOrUpdate(WxVtwoActivityOrder activityOrder) { + if(activityOrder.getMerchantId() != null){ + WxMerchant merchant = wxMerchantService.selectById(activityOrder.getMerchantId()); + activityOrder.setBusinessId(merchant.getBusinessId()); + } + Date now = new Date(); + if(activityOrder.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityOrder.setId(idWorker.nextId()); + if(activityOrder.getAuditStatus() == null){ + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + } + activityOrder.setCreateDate(now); + activityOrder.setUpdateDate(now); + wxVtwoActivityOrderMapper.insert(activityOrder); + } + else{ + activityOrder.setUpdateDate(now); + wxVtwoActivityOrderMapper.updateById(activityOrder); + } + return true; + } + + @Override + public WxVtwoActivityOrder getById(Long id, String tenantId) { + return wxVtwoActivityOrderMapper.selectById(id,tenantId); + } + + @Override + public WxVtwoActivityOrder getInfoById(Long id, String tenantId) { + WxVtwoActivityOrder record = getById(id, tenantId); + if(record != null){ + WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId()); + record.setMerchantName(merchant.getName()); + } + return record; + } + + @Override + public Map getStatistics(WxVtwoActivityOrder record) { + List auditStatusStatistics = wxVtwoActivityOrderMapper.auditStatusStatistics(record); + Map result = new HashMap<>(); + Integer audting = 0, audi_success = 0, audt_fail = 0, invalid = 0; + BigDecimal sum_success = BigDecimal.ZERO, sum_fail = BigDecimal.ZERO; + for(WxVtwoActivityOrderStatistics 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(); + sum_success = statistics.getSumMoney(); + } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { + audt_fail = statistics.getCount(); + sum_fail = statistics.getSumMoney(); + } else if (EnumOfflineActivityRecordStatus.INVALID.getCode().equals(statistics.getAuditStatus())) { + invalid = statistics.getCount(); + } + } + result.put("audting",audting); + result.put("audi_success",audi_success); + result.put("sum_success",sum_success); + result.put("audt_fail",audt_fail); + result.put("sum_fail",sum_fail); + result.put("invalid",invalid); + result.put("sum_count",audting+audi_success+audt_fail+invalid); + return result; + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + public void auditRecord(WxVtwoActivityOrder record, Long userId) { + Date now = new Date(); + record.setUpdateDate(now); + record.setAuditTime(now); + record.setAuditBy(userId); + wxVtwoActivityOrderMapper.updateAuditStatus(record); + + WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderMapper.selectById(record.getId(), record.getTenantId()); + activityOrder.setAuditBy(record.getAuditBy()); + activityOrder.setAuditStatus(record.getAuditStatus()); + activityOrder.setAuditBy(record.getAuditBy()); + saveCreditHistory(activityOrder); + } + + @Override + public void saveCreditHistory(WxVtwoActivityOrder record){ + if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus()) + && !EnumOfflineActivityRecordStatus.INVALID.getCode().equals(record.getAuditStatus())){ + return; + } + + WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicService.selectCreditOne(record,record.getCreateDate()); + if(specialTopic == null){ + return; + } + + WxCreditHistory creditHistory = new WxCreditHistory(); + creditHistory.setTenantId(record.getFinalTenantId()); + creditHistory.setOperatorType(EnumUserType.MALLUSER.getCode()); + creditHistory.setOperatorId(record.getAuditBy()); + creditHistory.setCreateDate(record.getAuditTime()); + + creditHistory.setCouponId(record.getId()); + creditHistory.setBusinessId(record.getBusinessId()); + creditHistory.setMerchantId(record.getMerchantId()); + + WxCUserBasicInfo cuser = wxCUserBasicInfoService.findInfoByPhone(record, record.getCusPhone()); + if(cuser == null){ + return; + } + creditHistory.setCUserId(cuser.getId()); + creditHistory.setCreditType(EnumScoreType.POINT_CHANGE.getCode()); + + Integer increasedPoints = record.getIncreasedPoints(); + if(increasedPoints == null){ + increasedPoints = 0; + } + if(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){ + if(increasedPoints > 0){ + return; + } + //计算积分 + WxVtwoActivityCreditRule creditConfigObject = specialTopic.getCreditConfigObject(); + BigDecimal priceCondition = creditConfigObject.getStep(); + int baseScore = creditConfigObject.getScore(); + + if (record.getOrderMoney().compareTo(priceCondition) > 0) { + increasedPoints = record.getOrderMoney().divide(priceCondition,0, RoundingMode.DOWN) + .multiply(BigDecimal.valueOf(baseScore)).intValue(); + } + if(increasedPoints == 0){ + return; + } + creditHistory.setCreditNum(increasedPoints); + }else if(EnumOfflineActivityRecordStatus.INVALID.getCode().equals(record.getAuditStatus())){ + if(increasedPoints == 0){ + return; + } + creditHistory.setCreditNum(-increasedPoints); + increasedPoints = 0; + } + if(creditHistory.getCreditNum() > 0){ + creditHistory.setChangePurpose("活动订单("+record.getOrderNo()+")新增积分"+creditHistory.getCreditNum()); + }else if(creditHistory.getCreditNum() < 0){ + creditHistory.setChangePurpose("活动订单("+record.getOrderNo()+")退单-积分扣减"+creditHistory.getCreditNum()); + } + creditHistory = wxCreditHistoryService.saveOrUpdate(creditHistory,record); + + record.setIncreasedPoints(increasedPoints); + wxVtwoActivityOrderMapper.updateIncreasedPoints(record); + } + + @Override + public Map 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天数据 + WxVtwoActivityOrder recordQ = new WxVtwoActivityOrder(); + recordQ.updateTenantInfo(tenantInfo); + recordQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); + Integer monthCount = wxVtwoActivityOrderMapper.getCount(recordQ); + //一周前的昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); + Integer yesWeekCount = wxVtwoActivityOrderMapper.getCount(recordQ); + //昨天的昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); + Integer yesYesCount = wxVtwoActivityOrderMapper.getCount(recordQ); + //昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(today)); + Integer yesCount = wxVtwoActivityOrderMapper.getCount(recordQ); + + Map 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; + } + + @Override + public void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId) { + List list = this.findList(record, activityId); + excelService.exportExcel(list, null, "活动订单列表", WxVtwoActivityOrder.class, "活动订单列表.xlsx", response, false); + } + + @Override + public Integer getWaitAudiCount(TenantEntity tenantInfo) { + WxVtwoActivityOrder record = new WxVtwoActivityOrder(); + record.updateTenantInfo(tenantInfo); + record.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + return wxVtwoActivityOrderMapper.getCount(record); + } + + @Override + public WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder) { + activityOrder.setSortColumns(BaseEntity.SortField.CreateDate_DESC); + return wxVtwoActivityOrderMapper.selectLimitOne(activityOrder); + } + + @Override + public List findGrantOrder(TenantEntity tenantInfo, List idList, List filterIdList) { + WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); + orderQ.updateTenantInfo(tenantInfo); + orderQ.setIds(idList); + List list = this.findList(orderQ, null); + if(filterIdList == null || filterIdList.isEmpty()){ + for (WxVtwoActivityOrder order : list) { + order.setIsAmount(EnumYesOrNo.YES.getCode()); + } + }else{ + for (WxVtwoActivityOrder order : list) { + if(filterIdList.contains(order.getId())) { + order.setIsAmount(EnumYesOrNo.YES.getCode()); + }else{ + order.setIsAmount(EnumYesOrNo.NO.getCode()); + } + } + } + return this.findList(orderQ,null); + } + + @Override + public Integer getJointCount(Integer relatedModel, List orderList) { + Integer jointCount = 0; + if(orderList == null || orderList.isEmpty()){ + return jointCount; + } + if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(relatedModel)){ + //商户联单 + List merchantIds = orderList.stream().map(WxVtwoActivityOrder::getMerchantId).distinct().collect(toList()); + jointCount = merchantIds.size(); + }else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(relatedModel)){ + //业态联单 + List businessIds = orderList.stream().map(WxVtwoActivityOrder::getBusinessId).distinct().collect(toList()); + jointCount = businessIds.size(); + } + return jointCount; + } + + @Override + public Map findAuditDetailMap(List ids, String tenantId) { + WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); + orderQ.setTenantId(tenantId); + orderQ.setIds(ids); + List auditDetailList = wxVtwoActivityOrderMapper.findAuditDetailList(orderQ); + + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.setTenantId(tenantId); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + + for (WxVtwoActivityOrder record : auditDetailList) { + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } + } + + return auditDetailList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + } + + private WxVtwoActivityOrder handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){ + WxVtwoActivityOrder activityOrder = new WxVtwoActivityOrder(); + activityOrder.updateTenantInfo(statisticsVo); + activityOrder.setCreateDateBegin(statisticsVo.getCreateDateBegin()); + activityOrder.setCreateDateEnd(statisticsVo.getCreateDateEnd()); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + return activityOrder; + } + + @Override + public WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + return wxVtwoActivityOrderMapper.getCountStatistics(activityOrder); + } + + @Override + public List orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + List countStatisticsChart = wxVtwoActivityOrderMapper.getCountStatisticsChart(activityOrder); + Map countStatisticsChartMap = new HashMap<>(); + if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){ + countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(WxVtwoOrderCountStatistics::getXTime, Function.identity())); + } + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityOrder.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(activityOrder.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List newCountStatisticsChart = new ArrayList<>(); + for (String date : tjTimeList) { + WxVtwoOrderCountStatistics countStatistics = countStatisticsChartMap.get(date); + if(countStatistics == null){ + countStatistics = new WxVtwoOrderCountStatistics(); + countStatistics.setUserCount(0); + countStatistics.setOrderCount(0); + countStatistics.setOrderMoney(BigDecimal.ZERO); + countStatistics.setMerchantCount(0); + } + countStatistics.setXTime(date.substring(5).replace("-", "/")); + newCountStatisticsChart.add(countStatistics); + } + return newCountStatisticsChart; + } + + @Override + public List orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + List businessStatistics = wxVtwoActivityOrderMapper.getBusinessStatistics(activityOrder); + if(businessStatistics != null && !businessStatistics.isEmpty()){ + Map bussinessMap = wxBusinessService.findAllMap(activityOrder); + BigDecimal totalMoney = businessStatistics.stream().map(WxVtwoOrderBusinessStatistics::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + int totalCount = businessStatistics.size(); + for (WxVtwoOrderBusinessStatistics statistics : businessStatistics){ + statistics.setBusinessName(statistics.getBusinessId() == null?"其他":bussinessMap.get(statistics.getBusinessId()).getTitle()); + statistics.setMoneyRatio(statistics.getOrderMoney().divide(totalMoney,4, RoundingMode.HALF_UP).doubleValue()); + statistics.setCountRatio(new BigDecimal(statistics.getBusinessCount()).divide(new BigDecimal(totalCount),4, RoundingMode.HALF_UP).doubleValue()); + } + return businessStatistics.stream().sorted(Comparator.comparing(WxVtwoOrderBusinessStatistics::getMoneyRatio).reversed()).collect(Collectors.toList()); + } + return Collections.emptyList(); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java index 1df7b4407..a3a3ad9d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -1,10 +1,32 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.iformall.domain.po.WxVtwoActivitySpecialTopic; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; +import com.iformall.common.Result; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.*; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxVtwoSpecialTopicActivityMapper; import com.iformall.service.WxVtwoActivitySpecialTopicService; import com.iformall.mapper.WxVtwoActivitySpecialTopicMapper; +import com.iformall.service.WxVtwoSpecialTopicActivityService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * @author xiaohu @@ -15,6 +37,154 @@ import org.springframework.stereotype.Service; public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl implements WxVtwoActivitySpecialTopicService{ + @Autowired + private WxVtwoActivitySpecialTopicMapper wxVtwoActivitySpecialTopicMapper; + + @Autowired + private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; + + @Autowired + private WxVtwoSpecialTopicActivityService wxVtwoSpecialTopicActivityService; + + @Override + public PageInfo listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) { + handlerQuery(specialTopic); + PageInfo activityPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivitySpecialTopicMapper.findList(specialTopic)); + handlerReturnList(activityPageInfo.getList()); + return activityPageInfo; + } + + private void handlerQuery(WxVtwoActivitySpecialTopic specialTopic) { + if (null != specialTopic.getStatus()) { + //已上架 + if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(specialTopic.getStatus())){ + specialTopic.setValidStatus(EnumYesOrNo.NO.getCode()); + } + //已过期 + else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(specialTopic.getStatus())){ + specialTopic.setStatus(null); + specialTopic.setValidStatus(EnumYesOrNo.YES.getCode()); + } + } + } + + private void handlerReturnList(List list) { + if (null != list && !list.isEmpty()) { + Date now = new Date(); + for (WxVtwoActivitySpecialTopic specialTopic : list) { + if(now.after(specialTopic.getEndTime())){ + specialTopic.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); + } + WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); + specialTopicActivityQ.updateTenantInfo(specialTopic); + specialTopicActivityQ.setSpecialTopicId(specialTopic.getId()); + Integer activityCount = wxVtwoSpecialTopicActivityMapper.selectCount(new QueryWrapper<>(specialTopicActivityQ)); + specialTopic.setActivityCount(activityCount); + } + } + } + + @Override + public int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic) { + specialTopic.setCreditOnOff(EnumYesOrNo.YES.getCode()); + return wxVtwoActivitySpecialTopicMapper.selectCreditCount(specialTopic); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean saveOrUpdate(WxVtwoActivitySpecialTopic specialTopic) { + handlerActivityRules(specialTopic); + Date now = new Date(); + if(specialTopic.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + specialTopic.setId(idWorker.nextId()); + specialTopic.setCreateDate(now); + specialTopic.setCreateDate(now); + specialTopic.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); + wxVtwoActivitySpecialTopicMapper.insert(specialTopic); + } + else{ + specialTopic.setUpdateDate(now); + wxVtwoActivitySpecialTopicMapper.updateById(specialTopic); + } + if(specialTopic.getActivityList() != null && !specialTopic.getActivityList().isEmpty()){ + wxVtwoSpecialTopicActivityService.saveFromSpecialTopic(specialTopic,specialTopic.getActivityList()); + } + return true; + } + + private void handlerActivityRules(WxVtwoActivitySpecialTopic specialTopic) { + if(specialTopic.getCreditConfigObject() != null){ + specialTopic.setCreditConfig(JSONObject.toJSONString(specialTopic.getCreditConfigObject())); + } + } + + @Override + public WxVtwoActivitySpecialTopic getInfoById(Long id, String tenantId) { + WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicMapper.selectById(id, tenantId); + if (specialTopic == null) { + return null; + } + if(StringUtils.isNotBlank(specialTopic.getCreditConfig())){ + specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class)); + } + + WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); + specialTopicActivityQ.updateTenantInfo(specialTopic); + specialTopicActivityQ.setSpecialTopicId(id); + List activityList = wxVtwoSpecialTopicActivityMapper.findList(specialTopicActivityQ); + specialTopic.setActivityList(activityList); + return specialTopic; + } + + @Override + public WxVtwoActivitySpecialTopic getById(Long id, String tenantId) { + WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicMapper.selectById(id, tenantId); + if (specialTopic == null) { + return null; + } + if(StringUtils.isNotBlank(specialTopic.getCreditConfig())){ + specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class)); + } + return specialTopic; + } + + @Override + public WxVtwoActivitySpecialTopic selectCreditOne(TenantEntity tenantEntity, Date orderDate) { + WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicMapper.selectCreditOne(tenantEntity.getTenantId(),EnumYesOrNo.YES.getCode(), + orderDate,EnumOfflineActivityStatus.ON_LINE.getCode()); + if (specialTopic == null) { + return null; + } + specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class)); + return specialTopic; + } + + @Override + public void handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo) { + + WxVtwoActivitySpecialTopic specialTopic = this.getInfoById(statisticsVo.getId(), statisticsVo.getTenantId()); + if (specialTopic == null) { + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + if(statisticsVo.getCreateDateBegin() == null || statisticsVo.getCreateDateBegin().before(specialTopic.getStartTime())){ + statisticsVo.setCreateDateBegin(specialTopic.getStartTime()); + } + if(statisticsVo.getCreateDateEnd() == null || statisticsVo.getCreateDateEnd().after(specialTopic.getEndTime())){ + statisticsVo.setCreateDateEnd(specialTopic.getEndTime()); + } + Date now = new Date(); + if(statisticsVo.getCreateDateEnd().after(now)){ + statisticsVo.setCreateDateEnd(now); + } + if(statisticsVo.getCreateDateBegin().after(statisticsVo.getCreateDateEnd())){ + throw new MallinkException(Result.ERROR,"筛选时间不在活动时间范围内"); + } + + List activityIdList = specialTopic.getActivityList().stream().map(a -> a.getActivityId()).collect(Collectors.toList()); + statisticsVo.setActivityIdList(activityIdList); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index 00ca3ab2f..bb2215625 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -1,29 +1,36 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import com.alibaba.fastjson.JSONObject; 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.Result; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.WxVtwoActivityGrantRule; import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; -import com.iformall.domain.vo.WxVtwoActivityRule; import com.iformall.domain.vo.WxVtwoActivityRuleDetail; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityRecordStatus; -import com.iformall.enums.EnumOfflineActivityStatus; -import com.iformall.enums.EnumYesOrNo; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.mapper.*; -import com.iformall.service.WxVtwoActivityAwardService; -import com.iformall.service.WxVtwoActivityMerchantService; -import com.iformall.service.WxVtwoAmountGiftActivityService; -import jodd.util.StringUtil; +import com.iformall.service.*; +import com.iformall.utils.BeanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; + +import static java.util.stream.Collectors.*; +import static java.util.stream.Collectors.toList; /** * @author xiaohu @@ -37,9 +44,6 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl listAsPage(WxVtwoAmountGiftActivity amountGiftActivity, Integer pageNum, Integer pageSize) { handlerQuery(amountGiftActivity); @@ -154,6 +182,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); amountGiftActivity.setAwardList(activityAwardList); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(amountGiftActivity.getMerchantRule())){ List activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); - amountGiftActivity.setMerchanList(activityMerchantList); + amountGiftActivity.setMerchantList(activityMerchantList); } return amountGiftActivity; } + @Override + public WxVtwoAmountGiftActivity getById(Long id, String tenantId) { + return wxVtwoAmountGiftActivityMapper.selectById(id, tenantId); + } + + @Override + public void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity) { + WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityMapper.selectById(activity.getActivityId(), tenantEntity.getTenantId()); + if(amountGiftActivity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activity.setActivityId(amountGiftActivity.getId()); + activity.setActivityType(EnumOfflineActivityType.GIFT.getCode()); + activity.setActivityName(amountGiftActivity.getName()); + activity.setActivityCreateDate(amountGiftActivity.getCreateDate()); + activity.setActivityStartTime(amountGiftActivity.getStartTime()); + activity.setActivityEndTime(amountGiftActivity.getEndTime()); + activity.setActivityStatus(amountGiftActivity.getStatus()); + } + + @Override + public void handlerGrantAwardPage(WxVtwoAmountGiftActivity amountGiftActivity,WxVtwoActivityGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); + + activityGrant.setAwardList(amountGiftActivity.getAwardList()); + + List grantAwardList = new ArrayList<>(); + if(EnumOfflineActivityMode.ONE.getCode().equals(amountGiftActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + Integer awardGrade = 0; + for (WxVtwoActivityRuleDetail rule :amountGiftActivity.getAmountRulesObject()){ + if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0) + && (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){ + awardGrade = rule.getAwardGrade(); + } + } + if(awardGrade != null){ + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.setOrderId(order.getId()); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setName("订单赠礼("+order.getOrderNo()+")"); + grantAward.setAwardGrade(awardGrade); + grantAwardList.add(grantAward); + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + Integer awardGrade = 0; + for (WxVtwoActivityRuleDetail rule :amountGiftActivity.getAmountRulesObject()){ + if((rule.getMinAmount() == null || orderMoneySum.compareTo(rule.getMinAmount()) >= 0) + && (rule.getMaxAmount() == null || orderMoneySum.compareTo(rule.getMaxAmount()) <= 0)){ + awardGrade = rule.getAwardGrade(); + } + } + if(awardGrade != null){ + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setName("订单金额赠礼"); + grantAward.setAwardGrade(awardGrade); + grantAwardList.add(grantAward); + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(amountGiftActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = amountGiftActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity())); + WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount); + if(relatedRule != null && relatedRule.getAwardGrade() != null){ + Integer awardGrade = relatedRule.getAwardGrade(); + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantAward.setName("联单赠礼"); + grantAward.setAwardGrade(awardGrade); + grantAwardList.add(grantAward); + } + } + activityGrant.setGrantAwardList(grantAwardList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxVtwoAmountGiftActivity amountGiftActivity,WxVtwoActivityGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); + + wxVtwoActivityGrantService.saveOrUpdate(activityGrant); + + wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); + + wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant,amountGiftActivity.getAwardList()); + + wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + } + + @Override + public void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant) { + + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(activityAwardList == null || activityAwardList.isEmpty()){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + + List headList = wxVtwoActivityGrantExportService.getExportHeadList(); + for (WxVtwoActivityAward activityAward:activityAwardList){ + ExcelExportEntity entity_ = new ExcelExportEntity(activityAward.getName(),String.valueOf(activityAward.getId())+"_count",20); + headList.add(entity_); + } + + ExcelExportEntity entity1 = new ExcelExportEntity("奖品总价值","grantPrice",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20); + headList.add(entity2); + ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallSharePrice",20); + headList.add(entity4); + ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantSharePrice",20); + headList.add(entity5); + ExcelExportEntity entity6= new ExcelExportEntity("备注","grantRemark",20); + headList.add(entity6); + + List activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); + List> grantObjectList = new ArrayList<>(); + if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ + grantObjectList = activityGrantExportList.stream().map(e -> { + Map map = new HashMap<>(); + try { + Map awardCountMap = JSONObject.parseArray(e.getGrantDetail(), WxVtwoActivityGrantSettlement.class).stream().collect(groupingBy(WxVtwoActivityGrantSettlement::getAwardId, summingInt(WxVtwoActivityGrantSettlement::getAwardCount))); + map = BeanUtils.toMap(e); + for (Long awardId : awardCountMap.keySet()) { + map.put(String.valueOf(awardId) + "_count", awardCountMap.get(awardId)); + } + } catch (Exception ex) { + } + return map; + }).collect(toList()); + } + excelService.exportExcel(headList, grantObjectList, null, "赠礼活动发放明细", "赠礼活动发放明细.xlsx",true, response); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index 9439eac32..a5a219962 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -1,29 +1,38 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import com.alibaba.fastjson.JSONObject; 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.Result; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; import com.iformall.domain.vo.WxVtwoActivityRuleDetail; +import com.iformall.domain.vo.WxVtwoActivityTaxDeductionRule; import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.mapper.*; -import com.iformall.service.WxVtwoActivityAwardService; -import com.iformall.service.WxVtwoActivityMerchantService; -import com.iformall.service.WxVtwoCashBackActivityService; -import com.iformall.service.WxVtwoCashBackAwardService; -import jodd.util.StringUtil; +import com.iformall.service.*; +import com.iformall.utils.BeanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; +import static java.util.stream.Collectors.*; +import static java.util.stream.Collectors.summingInt; + /** * @author xiaohu * @description 针对表【wx_vtwo_cash_back_activity(线下返现活动)】的数据库操作Service实现 @@ -36,9 +45,6 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl listAsPage(WxVtwoCashBackActivity cashBackActivity, Integer pageNum, Integer pageSize) { handlerQuery(cashBackActivity); @@ -129,6 +159,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + if(StringUtils.isNotBlank(cashBackActivity.getTaxDeductionRules())){ + cashBackActivity.setTaxDeductionRulesObject(JSONObject.parseObject(cashBackActivity.getTaxDeductionRules(), WxVtwoActivityTaxDeductionRule.class)); + } + + List activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(id,tenantId); Map> activityAwardMap = activityAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackAward::getModelType)); cashBackActivity.setAmountRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); cashBackActivity.setRelatedRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(cashBackActivity.getMerchantRule())){ List activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); - cashBackActivity.setMerchanList(activityMerchantList); + cashBackActivity.setMerchantList(activityMerchantList); } return cashBackActivity; } + @Override + public WxVtwoCashBackActivity getById(Long id, String tenantId) { + return wxVtwoCashBackActivityMapper.selectById(id, tenantId); + } + + @Override + public void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity) { + WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityMapper.selectById(activity.getActivityId(), tenantEntity.getTenantId()); + if(cashBackActivity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activity.setActivityId(cashBackActivity.getId()); + activity.setActivityType(EnumOfflineActivityType.CASHBACK.getCode()); + activity.setActivityName(cashBackActivity.getName()); + activity.setActivityCreateDate(cashBackActivity.getCreateDate()); + activity.setActivityStartTime(cashBackActivity.getStartTime()); + activity.setActivityEndTime(cashBackActivity.getEndTime()); + activity.setActivityStatus(cashBackActivity.getStatus()); + } + + @Override + public void handlerGrantAwardPage(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false); + + wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); + + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false); + + wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); + + wxVtwoCashBackGrantService.saveOrUpdate(activityGrant); + + wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); + + wxVtwoCashBackGrantAwardService.saveGrantAward(activityGrant); + + wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + } + + @Override + public void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoCashBackGrant activityGrant) { + WxVtwoCashBackActivity activity = this.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + + List headList = wxVtwoActivityGrantExportService.getExportHeadList(); + + ExcelExportEntity entity1 = new ExcelExportEntity("返现总金额","grantPrice",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20); + headList.add(entity2); + ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20); + headList.add(entity4); + ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20); + headList.add(entity5); + ExcelExportEntity entity6= new ExcelExportEntity("税金额","taxAmount",20); + headList.add(entity6); + ExcelExportEntity entity10= new ExcelExportEntity("备注","grantRemark",20); + headList.add(entity10); + + List activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); + List> grantObjectList = new ArrayList<>(); + if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ + grantObjectList = activityGrantExportList.stream().map(e -> { + Map map = new HashMap<>(); + try { + map = BeanUtils.toMap(e); + } catch (Exception ex) { + } + return map; + }).collect(toList()); + } + excelService.exportExcel(headList, grantObjectList, null, "返现活动发放明细", "返现活动发放明细.xlsx",true, response); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java index 6a502da7a..c55504842 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java @@ -12,9 +12,9 @@ import com.iformall.mapper.WxVtwoCashBackAwardMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author xiaohu @@ -71,6 +71,33 @@ public class WxVtwoCashBackAwardServiceImpl extends ServiceImpl findActivityAwardList(Long activityId, String tenantId) { + WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); + cashBackAwardQ.setTenantId(tenantId); + cashBackAwardQ.setActivityId(activityId); + return wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + } + + @Override + public Map findActivityAwardMap(Long activityId, String tenantId) { + List activityAwardList = this.findActivityAwardList(activityId, tenantId); + return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity())); + } + + @Override + public List getAmountAwardIdList(Long activityId, String tenantId) { + WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); + cashBackAwardQ.setTenantId(tenantId); + cashBackAwardQ.setActivityId(activityId); + cashBackAwardQ.setModelType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List amountAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + if(amountAwardList != null && !amountAwardList.isEmpty()){ + return amountAwardList.stream().map(WxVtwoCashBackAward::getId).collect(Collectors.toList()); + } + return Collections.emptyList(); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java index bc5f36931..1b9ac735d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java @@ -1,11 +1,29 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.iformall.domain.po.WxVtwoCashBackGrantAward; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoActivityTaxDeductionRule; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; +import com.iformall.enums.EnumOfflineActivityAwardsModeType; +import com.iformall.enums.EnumOfflineActivityAwardsRule; +import com.iformall.enums.EnumOfflineActivityMode; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.service.WxVtwoActivityOrderService; import com.iformall.service.WxVtwoCashBackGrantAwardService; import com.iformall.mapper.WxVtwoCashBackGrantAwardMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; + +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; + /** * @author xiaohu * @description 针对表【wx_vtwo_cash_back_grant_award(线下返现活动发放奖励)】的数据库操作Service实现 @@ -15,6 +33,206 @@ import org.springframework.stereotype.Service; public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl implements WxVtwoCashBackGrantAwardService{ + @Autowired + private WxVtwoCashBackGrantAwardMapper wxVtwoCashBackGrantAwardMapper; + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @Override + public void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List orderList) { + List grantAwardList = new ArrayList<>(); + BigDecimal cashBackTotal = BigDecimal.ZERO; + List sortAmountAwardList = cashBackActivity.getAmountRulesObject().stream().sorted(Comparator.comparing(WxVtwoCashBackAward::getMinAmount)).collect(toList()); + if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + WxVtwoCashBackAward cashBackAward = null; + for(WxVtwoCashBackAward award:sortAmountAwardList){ + if((award.getMinAmount() == null || order.getOrderMoney().compareTo(award.getMinAmount()) >= 0) + && (award.getMaxAmount() == null || order.getOrderMoney().compareTo(award.getMaxAmount()) <= 0)){ + cashBackAward = award; + } + } + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal cashBackPrice = order.getOrderMoney().multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + if(cashBackAward.getCashBackLimit() != null && cashBackAward.getCashBackLimit().compareTo(BigDecimal.ZERO) > 0 + && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ + cashBackPrice = cashBackAward.getCashBackLimit(); + } + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("订单返现("+order.getOrderNo()+")"); + grantAward.setOrderId(order.getId()); + grantAward.setOrderAmount(order.getOrderMoney()); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + WxVtwoCashBackAward cashBackAward = null; + for(WxVtwoCashBackAward award:sortAmountAwardList){ + if((award.getMinAmount() == null || orderMoneySum.compareTo(award.getMinAmount()) >= 0) + && (award.getMaxAmount() == null || orderMoneySum.compareTo(award.getMaxAmount()) <= 0)){ + cashBackAward = award; + } + } + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("订单金额返现"); + grantAward.setOrderAmount(orderMoneySum); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(cashBackActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = cashBackActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoCashBackAward::getRelatedCount, Function.identity())); + WxVtwoCashBackAward cashBackAward = jointCountMap.get(jointCount); + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("联单返现"); + grantAward.setOrderAmount(orderMoneySum); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + + //计算返现金额最大限制 + BigDecimal prop = BigDecimal.ONE; + if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ + prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP); + } + BigDecimal realCashBackTotal = BigDecimal.ZERO; + if(prop.compareTo(BigDecimal.ONE) < 0){ + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); + } + } + + if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ + //单独算税点 + BigDecimal taxAmount = BigDecimal.ZERO; + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); + grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); + grantAward.setTaxAmount(BigDecimal.ZERO); + WxVtwoActivityTaxDeductionRule taxDeductionRulesObject = cashBackActivity.getTaxDeductionRulesObject(); + if(taxDeductionRulesObject.getStartingTax() != null && grantAward.getCashBack().compareTo(taxDeductionRulesObject.getStartingTax()) > 0 + && taxDeductionRulesObject.getTaxPoints() != null){ + grantAward.setTaxAmount(grantAward.getCashBack().multiply(taxDeductionRulesObject.getTaxPoints()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); + taxAmount = taxAmount.add(grantAward.getTaxAmount()); + } + } + activityGrant.setTaxAmount(taxAmount); + }else{ + activityGrant.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); + activityGrant.setTaxAmount(BigDecimal.ZERO); + WxVtwoActivityTaxDeductionRule taxDeductionRulesObject = cashBackActivity.getTaxDeductionRulesObject(); + if(taxDeductionRulesObject.getStartingTax() != null && activityGrant.getCashBack().compareTo(taxDeductionRulesObject.getStartingTax()) > 0 + && taxDeductionRulesObject.getTaxPoints() != null){ + activityGrant.setTaxAmount(activityGrant.getCashBack().multiply(taxDeductionRulesObject.getTaxPoints()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); + } + //税点分摊到发奖上面 + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); + BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; + grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); + } + } + activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); + activityGrant.setCashBack(realCashBackTotal); + activityGrant.setGrantAwardList(grantAwardList); + } + + private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){ + BigDecimal awardsRulePrice = BigDecimal.ZERO; + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){ + awardsRulePrice = awardsPrice.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(awardsRule)) { + awardsRulePrice = awardsPrice.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(awardsRule)){ + awardsRulePrice = awardsPrice.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); + } + return awardsRulePrice; + } + + private void handleGrantAward(WxVtwoCashBackGrantAward grantAward,WxVtwoCashBackAward cashBackAward){ + grantAward.setMinAmount(cashBackAward.getMinAmount()); + grantAward.setMaxAmount(cashBackAward.getMaxAmount()); + grantAward.setAwardId(cashBackAward.getId()); + grantAward.setAwardName(cashBackAward.getName()); + grantAward.setCashBackRatio(cashBackAward.getCashBackRatio()); + + grantAward.setShareRule(cashBackAward.getShareRule()); + grantAward.setMallShareRate(cashBackAward.getMallShareRate()); + grantAward.setMerchantShareRate(cashBackAward.getMerchantShareRate()); + } + + @Override + public void saveGrantAward(WxVtwoCashBackGrant activityGrant) { + List grantAwardList = activityGrant.getGrantAwardList(); + final IdWorker idWorker = IdWorker.get(); + for (WxVtwoCashBackGrantAward grantAward : grantAwardList) { + grantAward.setId(idWorker.nextId()); + grantAward.updateTenantInfo(activityGrant); + grantAward.setActivityId(activityGrant.getActivityId()); + grantAward.setActivityName(activityGrant.getActivityName()); + grantAward.setGrantId(activityGrant.getId()); + + grantAward.setCreateDate(activityGrant.getUpdateDate()); + grantAward.setUpdateDate(activityGrant.getUpdateDate()); + } + wxVtwoCashBackGrantAwardMapper.insertList(grantAwardList); + activityGrant.setGrantAwardList(grantAwardList); + } + + private WxVtwoCashBackGrantAward handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){ + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.updateTenantInfo(statisticsVo); + grantAward.setActivityId(statisticsVo.getActivityId()); + grantAward.setCreateDateBegin(statisticsVo.getCreateDateBegin()); + grantAward.setCreateDateEnd(statisticsVo.getCreateDateEnd()); + grantAward.setStatus(EnumYesOrNo.YES.getCode()); + return grantAward; + } + + @Override + public List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantAwardMapper.awardItemStatistics(grantAward); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java index 974061879..a932286d0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java @@ -1,11 +1,26 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxVtwoActivityGrant; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.domain.po.WxVtwoCashBackGrant; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxVtwoCashBackGrantService; import com.iformall.mapper.WxVtwoCashBackGrantMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_cash_back_grant(线下返现活动发奖)】的数据库操作Service实现 @@ -15,6 +30,77 @@ import org.springframework.stereotype.Service; public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl implements WxVtwoCashBackGrantService{ + @Autowired + private WxVtwoCashBackGrantMapper wxVtwoCashBackGrantMapper; + + @Override + public void handleFromOrder(WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant) { + activityGrant.setOrderList(orderList); + BigDecimal orderMoneySum = BigDecimal.ZERO; + List lotteryNumList = new ArrayList<>(); + int lotteryCount = 0; + List anniversaryLotteryNumList = new ArrayList<>(); + for (WxVtwoActivityOrder order : orderList) { + orderMoneySum = orderMoneySum.add(order.getOrderMoney()); + if(order.getLotteryNumList() != null && !order.getLotteryNumList().isEmpty()){ + lotteryNumList.addAll(order.getLotteryNumList()); + } + if(order.getLotteryCount() != null){ + lotteryCount = lotteryCount + order.getLotteryCount(); + } + if(StringUtils.isNotBlank(order.getAnniversaryLotteryNum())){ + anniversaryLotteryNumList.add(order.getAnniversaryLotteryNum()); + } + } + activityGrant.setOrderMoneySum(orderMoneySum); + activityGrant.setOrderCount(orderList.size()); + activityGrant.setCusName(orderList.get(0).getCusName()); + activityGrant.setCusPhone(orderList.get(0).getCusPhone()); + if(!isGrant){ + activityGrant.setLotteryNum(JSON.toJSONString(lotteryNumList)); + activityGrant.setLotteryCount(lotteryCount); + activityGrant.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList)); + } + } + + @Override + public boolean saveOrUpdate(WxVtwoCashBackGrant activityGrant) { + Date now = new Date(); + if(activityGrant.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityGrant.setId(idWorker.nextId()); + activityGrant.setCreateDate(now); + activityGrant.setUpdateDate(now); + wxVtwoCashBackGrantMapper.insert(activityGrant); + } + else{ + activityGrant.setUpdateDate(now); + wxVtwoCashBackGrantMapper.updateById(activityGrant); + } + return true; + } + + private WxVtwoCashBackGrant handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){ + WxVtwoCashBackGrant cashBackGrant = new WxVtwoCashBackGrant(); + cashBackGrant.updateTenantInfo(statisticsVo); + cashBackGrant.setActivityId(statisticsVo.getActivityId()); + cashBackGrant.setCreateDateBegin(statisticsVo.getCreateDateBegin()); + cashBackGrant.setCreateDateEnd(statisticsVo.getCreateDateEnd()); + cashBackGrant.setStatus(EnumYesOrNo.YES.getCode()); + return cashBackGrant; + } + + @Override + public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantMapper.activityAwardStatistics(wxVtwoCashBackGrant); + } + + @Override + public List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantMapper.activityAwardStatisticsChart(wxVtwoCashBackGrant); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index 8d554c17b..63d3342fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -8,26 +9,30 @@ 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.Result; import com.iformall.domain.po.*; -import com.iformall.domain.vo.OfflineActivityRecordStatistics; -import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; -import com.iformall.domain.vo.WxVtwoActivityRule; -import com.iformall.domain.vo.WxVtwoActivityRuleDetail; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityRecordStatus; -import com.iformall.enums.EnumOfflineActivityStatus; -import com.iformall.enums.EnumYesOrNo; +import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.*; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.mapper.*; -import com.iformall.service.WxVtwoActivityAwardService; -import com.iformall.service.WxVtwoActivityMerchantService; -import com.iformall.service.WxVtwoPrizeDrawActivityService; -import jodd.util.StringUtil; +import com.iformall.service.*; +import com.iformall.utils.BeanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.*; /** * @author xiaohu @@ -41,9 +46,6 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) { @@ -159,6 +185,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); prizeDrawActivity.setAwardList(activityAwardList); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(prizeDrawActivity.getMerchantRule())){ List activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); - prizeDrawActivity.setMerchanList(activityMerchantList); + prizeDrawActivity.setMerchantList(activityMerchantList); } return prizeDrawActivity; } + + @Override + public WxVtwoPrizeDrawActivity getById(Long id, String tenantId) { + return wxVtwoPrizeDrawActivityMapper.selectById(id, tenantId); + } + + @Override + public void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity) { + WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityMapper.selectById(activity.getActivityId(), tenantEntity.getTenantId()); + if(prizeDrawActivity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activity.setActivityId(prizeDrawActivity.getId()); + activity.setActivityType(EnumOfflineActivityType.LOTTERY_DRAW.getCode()); + activity.setActivityName(prizeDrawActivity.getName()); + activity.setActivityCreateDate(prizeDrawActivity.getCreateDate()); + activity.setActivityStartTime(prizeDrawActivity.getStartTime()); + activity.setActivityEndTime(prizeDrawActivity.getEndTime()); + activity.setActivityStatus(prizeDrawActivity.getStatus()); + } + + @Override + public void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); + + activityGrant.setAwardList(prizeDrawActivity.getAwardList()); + + int limitCount = 0; + List grantRuleList = new ArrayList<>(); + if(EnumOfflineActivityMode.ONE.getCode().equals(prizeDrawActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + Integer order_limit = 0; + for (WxVtwoActivityRuleDetail rule :prizeDrawActivity.getAmountRulesObject().getRuleList()){ + if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0) + && (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){ + order_limit = rule.getAwardCount(); + } + } + if(order_limit != null && order_limit > 0){ + WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); + grantRule.setOrderId(order.getId()); + grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantRule.setName("订单抽奖("+order.getOrderNo()+")"); + grantRule.setAwardLimit(order_limit); + grantRuleList.add(grantRule); + + limitCount += order_limit; + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal limitAmount = prizeDrawActivity.getAmountRulesObject().getLimitAmount(); + BigDecimal awardAmount = prizeDrawActivity.getAmountRulesObject().getAwardAmount(); + if(limitAmount == null || orderMoneySum.compareTo(limitAmount) > 0){ + if(awardAmount != null && awardAmount.compareTo(BigDecimal.ZERO) > 0){ + Integer order_limit = orderMoneySum.divide(awardAmount,0, RoundingMode.HALF_DOWN).intValue(); + if(order_limit > 0){ + WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); + grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantRule.setName("订单金额抽奖"); + grantRule.setAwardLimit(order_limit); + grantRuleList.add(grantRule); + + limitCount += order_limit; + } + } + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(prizeDrawActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = prizeDrawActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity())); + WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount); + if(relatedRule != null && relatedRule.getAwardCount() != null){ + Integer joint_limit = relatedRule.getAwardCount(); + if(joint_limit > 0){ + WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); + grantRule.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantRule.setName("联单抽奖"); + grantRule.setAwardLimit(joint_limit); + grantRuleList.add(grantRule); + + limitCount += joint_limit; + } + } + } + + if(prizeDrawActivity.getAwardsLimit() != null && prizeDrawActivity.getAwardsLimit() > 0 + && prizeDrawActivity.getAwardsLimit() < limitCount){ + limitCount = prizeDrawActivity.getAwardsLimit(); + } + + activityGrant.setAwardLimit(limitCount); + activityGrant.setRuleList(grantRuleList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); + + wxVtwoActivityGrantService.saveOrUpdate(activityGrant); + + wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); + + wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant,prizeDrawActivity.getAwardList()); + + wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + } + + @Override + public void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant) { + + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(activityAwardList == null || activityAwardList.isEmpty()){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + + List headList = wxVtwoActivityGrantExportService.getExportHeadList(); + for (WxVtwoActivityAward activityAward:activityAwardList){ + ExcelExportEntity entity_ = new ExcelExportEntity(activityAward.getName(),String.valueOf(activityAward.getId())+"_count",20); + headList.add(entity_); + } + + ExcelExportEntity entity1 = new ExcelExportEntity("奖品总价值","grantPrice",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20); + headList.add(entity2); + ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20); + headList.add(entity4); + ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20); + headList.add(entity5); + ExcelExportEntity entity6= new ExcelExportEntity("备注","grantRemark",20); + headList.add(entity6); + + List activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); + List> grantObjectList = new ArrayList<>(); + if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ + grantObjectList = activityGrantExportList.stream().map(e -> { + Map map = new HashMap<>(); + try { + Map awardCountMap = JSONObject.parseArray(e.getGrantDetail(), WxVtwoActivityGrantSettlement.class).stream().collect(groupingBy(WxVtwoActivityGrantSettlement::getAwardId, summingInt(WxVtwoActivityGrantSettlement::getAwardCount))); + map = BeanUtils.toMap(e); + for (Long awardId : awardCountMap.keySet()) { + map.put(String.valueOf(awardId) + "_count", awardCountMap.get(awardId)); + } + } catch (Exception ex) { + } + return map; + }).collect(toList()); + } + excelService.exportExcel(headList, grantObjectList, null, "抽奖活动发放明细", "抽奖活动发放明细.xlsx",true, response); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java index 46e7352c3..54b7aaefe 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java @@ -1,11 +1,23 @@ package com.iformall.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; +import com.iformall.common.Result; +import com.iformall.domain.po.WxVtwoActivityAward; +import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.iformall.domain.po.WxVtwoSpecialTopicActivity; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoSpecialTopicActivityService; import com.iformall.mapper.WxVtwoSpecialTopicActivityMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_special_topic_activity(线下专题下的活动)】的数据库操作Service实现 @@ -15,6 +27,36 @@ import org.springframework.stereotype.Service; public class WxVtwoSpecialTopicActivityServiceImpl extends ServiceImpl implements WxVtwoSpecialTopicActivityService{ + @Autowired + private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; + + @Override + public void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List activityList) { + WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); + specialTopicActivityQ.updateTenantInfo(specialTopic); + specialTopicActivityQ.setSpecialTopicId(specialTopic.getId()); + wxVtwoSpecialTopicActivityMapper.delete(new QueryWrapper<>(specialTopicActivityQ)); + + final IdWorker idWorker = IdWorker.get(); + Date now = new Date(); + for (WxVtwoSpecialTopicActivity specialTopicActivity : activityList) { + if(specialTopicActivity.getActivityStartTime().before(specialTopic.getStartTime()) + || specialTopicActivity.getActivityEndTime().after(specialTopic.getEndTime())){ + throw new MallinkException(Result.ERROR, specialTopicActivity.getActivityName()+"活动时间未在主题范围内"); + + } + if(specialTopicActivity.getId() == null){ + specialTopicActivity.setId(idWorker.nextId()); + } + specialTopicActivity.updateTenantInfo(specialTopic); + specialTopicActivity.setSpecialTopicId(specialTopic.getId()); + if(specialTopicActivity.getCreateDate() == null){ + specialTopicActivity.setCreateDate(now); + } + specialTopicActivity.setUpdateDate(now); + } + wxVtwoSpecialTopicActivityMapper.insertList(activityList); + } } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml index 037fb6ac0..b113cc889 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml @@ -12,18 +12,14 @@ - - - - - + @@ -34,11 +30,10 @@ id,tenant_id,parent_tenant_id, activity_id,activity_name,grant_id, - order_id,order_amount,mode_type, - min_amount,max_amount,related_count, + order_id,mode_type, award_id,award_grade,award_name, award_price,award_count,grant_price, - money_rule,mall_share_rate,merchant_share_rate, + share_rule,mall_share_rate,merchant_share_rate, status,create_date,update_date @@ -69,6 +64,14 @@ and `award_id` = #{awardId} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + and `status` = #{status} @@ -91,4 +94,50 @@ select from wx_vtwo_activity_grant_award where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_activity_grant_award + (id, + activity_id,activity_name,grant_id, + order_id,mode_type, + award_id,award_grade,award_name, + award_price,award_count,grant_price, + share_rule,mall_share_rate,merchant_share_rate, + create_date,update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT}, + #{item.orderId,jdbcType=BIGINT},#{item.modeType,jdbcType=SMALLINT}, + #{item.awardId,jdbcType=BIGINT},#{item.awardGrade,jdbcType=INTEGER},#{item.awardName,jdbcType=VARCHAR}, + #{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL}, + #{item.shareRule,jdbcType=SMALLINT},#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, + #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml index 21030bdd9..f7e2135cc 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml @@ -9,6 +9,8 @@ + + @@ -21,11 +23,6 @@ - - - - - @@ -55,12 +52,11 @@ id,tenant_id,parent_tenant_id, - activity_id,order_id,order_no, + activity_id,activity_type,activity_name,order_id,order_no, order_amount,merchant_id,merchant_name, merchant_shop_num,business_id,business_name, lottery_num,lottery_count,anniversary_lottery_num, - order_create_time,order_audit_status,order_audit_by, - order_audit_name,order_audit_remark,order_audit_time, + order_create_time, vip_num,cus_name,cus_phone, cus_card,cus_address,legion_id, legion_name,union_id,union_name, @@ -85,6 +81,9 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + and `order_id` = #{orderId} @@ -98,7 +97,8 @@ #{idItem} - order by ${sortColumns} + + order by grant_time desc + + + insert into wx_vtwo_activity_grant_export + (id, + activity_id,activity_type,activity_name,order_id,order_no, + order_amount,merchant_id,merchant_name, + merchant_shop_num,business_id,business_name, + lottery_num,lottery_count,anniversary_lottery_num, + order_create_time, + vip_num,cus_name,cus_phone, + cus_card,cus_address,legion_id, + legion_name,union_id,union_name, + grant_id,grant_user_name,grant_user_card, + grant_by,grant_by_name,grant_time,grant_remark, + sign_img,grant_detail,grant_price, + mall_share_price,merchant_share_price,mall_share_rate, + merchant_share_rate,tax_amount) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.activityType,jdbcType=SMALLINT},#{item.activityName,jdbcType=VARCHAR},#{item.orderId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR}, + #{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT},#{item.merchantName,jdbcType=VARCHAR}, + #{item.merchantShopNum,jdbcType=VARCHAR},#{item.businessId,jdbcType=INTEGER},#{item.businessName,jdbcType=VARCHAR}, + #{item.lotteryNum,jdbcType=VARCHAR},#{item.lotteryCount,jdbcType=INTEGER},#{item.anniversaryLotteryNum,jdbcType=VARCHAR}, + #{item.orderCreateTime,jdbcType=TIMESTAMP}, + #{item.vipNum,jdbcType=VARCHAR},#{item.cusName,jdbcType=VARCHAR},#{item.cusPhone,jdbcType=VARCHAR}, + #{item.cusCard,jdbcType=VARCHAR},#{item.cusAddress,jdbcType=VARCHAR},#{item.legionId,jdbcType=BIGINT}, + #{item.legionName,jdbcType=VARCHAR},#{item.unionId,jdbcType=BIGINT},#{item.unionName,jdbcType=VARCHAR}, + #{item.grantId,jdbcType=BIGINT},#{item.grantUserName,jdbcType=VARCHAR},#{item.grantUserCard,jdbcType=VARCHAR}, + #{item.grantBy,jdbcType=BIGINT},#{item.grantByName,jdbcType=VARCHAR},#{item.grantTime,jdbcType=TIMESTAMP},#{item.grantRemark,jdbcType=VARCHAR}, + #{item.signImg,jdbcType=VARCHAR},#{item.grantDetail,jdbcType=VARCHAR},#{item.grantPrice,jdbcType=DECIMAL}, + #{item.mallSharePrice,jdbcType=DECIMAL},#{item.merchantSharePrice,jdbcType=DECIMAL},#{item.mallShareRate,jdbcType=DECIMAL}, + #{item.merchantShareRate,jdbcType=DECIMAL},#{item.taxAmount,jdbcType=DECIMAL}) + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml index 8f4eb52e8..a9783b81b 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml @@ -9,6 +9,7 @@ + @@ -29,7 +30,7 @@ id,tenant_id,parent_tenant_id, - activity_id,activity_name,order_money_sum, + activity_id,activity_type,activity_name,order_money_sum, order_count,cus_name,cus_phone, lottery_num,lottery_count,anniversary_lottery_num, real_name,real_card,remark,sign_img, @@ -53,6 +54,17 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + and `status` = #{status} @@ -76,4 +88,23 @@ select from wx_vtwo_activity_grant where id = #{id} and tenant_id=#{tenantId} + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml index 922fdd191..3dceb1350 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml @@ -9,6 +9,7 @@ + @@ -16,8 +17,8 @@ id,tenant_id,parent_tenant_id, - grant_id,order_id,is_amount, - status + grant_id,activity_id,order_id, + is_amount, status @@ -34,6 +35,9 @@ and `grant_id` = #{grantId} + + and `activity_id` = #{activityId} + and `order_id` = #{orderId} @@ -60,4 +64,17 @@ select from wx_vtwo_activity_grant_order where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_activity_grant_order + (id, + grant_id,activity_id,order_id, + is_amount) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT}, + #{item.isAmount,jdbcType=SMALLINT}) + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml index fadd21e2d..6d001d806 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml @@ -64,10 +64,43 @@ and `award_id` = #{awardId} + + and `merchant_id` = #{merchantId} + + and `status` = #{status} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and activity_id in + + #{idItem} + + + + + and merchant_id in + + #{midItem} + + + + + and award_id in + + #{idItem} + + + and id in @@ -92,4 +125,74 @@ FROM wx_vtwo_activity_grant_settlement + + + insert into wx_vtwo_activity_grant_settlement + (id, + activity_id,grant_id,grant_award_id, + award_id,grant_price,order_id, + order_no,order_amount,merchant_id, + order_ratio,order_grant_price,mall_share_rate, + merchant_share_rate,order_mall_share_price,order_merchant_share_price, + tax_amount,create_date, + update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantAwardId,jdbcType=BIGINT}, + #{item.awardId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL},#{item.orderId,jdbcType=BIGINT}, + #{item.orderNo,jdbcType=VARCHAR},#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT}, + #{item.orderRatio,jdbcType=DECIMAL},#{item.orderGrantPrice,jdbcType=DECIMAL},#{item.mallShareRate,jdbcType=DECIMAL}, + #{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderMallSharePrice,jdbcType=DECIMAL},#{item.orderMerchantSharePrice,jdbcType=DECIMAL}, + #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP}, + #{item.updateDate,jdbcType=TIMESTAMP}) + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml index 57a00db86..1312f1b1f 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml @@ -21,7 +21,7 @@ - + @@ -43,7 +43,7 @@ real_cus_name,cus_phone,cus_card, cus_address,legion_id,legion_name, union_id,union_name,from_order_id, - order_no,order_amount,merchant_id, + order_no,order_money,merchant_id, business_id,lottery_num,lottery_count, anniversary_lottery_num,audit_status,audit_remark, audit_by,audit_time,increased_points, @@ -136,7 +136,7 @@ select count(DISTINCT cus_phone) userCount, count(1) orderCount, - IFNULL(sum(order_amount),0) sumAmount, + IFNULL(sum(order_money),0) orderMoney, count(DISTINCT merchant_id) merchantCount from wx_vtwo_activity_order @@ -197,7 +197,7 @@ select DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, count(DISTINCT cus_phone) userCount, count(1) orderCount, - IFNULL(sum(order_amount),0) sumAmount, + IFNULL(sum(order_money),0) orderMoney, count(DISTINCT merchant_id) merchantCount from wx_vtwo_activity_order @@ -206,7 +206,7 @@ + select + id,tenant_id,parent_tenant_id, + audit_status,audit_remark, + audit_by,audit_time + from wx_vtwo_activity_order + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml index 6e9272955..41dff0053 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml @@ -54,6 +54,14 @@ and `credit_on_off` = #{creditOnOff} + + + and end_time >= now() + + + + and end_time <= now() + and `status` = #{status} @@ -76,4 +84,30 @@ select from wx_vtwo_activity_special_topic where id = #{id} and tenant_id=#{tenantId} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml index 1c7bbc601..e60da9d1c 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml @@ -14,7 +14,7 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml index c836fd795..8abb585d5 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml @@ -15,7 +15,7 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml index be65499e0..3e68372ca 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml @@ -11,7 +11,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -35,10 +35,10 @@ id,tenant_id,parent_tenant_id, activity_id,activity_name,grant_id, - record_id,order_amount,mode_type, + order_id,order_amount,mode_type, min_amount,max_amount,related_count, award_id,award_name,cash_back_ratio, - cash_back_rule,cash_back,money_rule, + cash_back_rule,cash_back,share_rule, mall_share_rate,merchant_share_rate,tax_deduction_rules, tax_amount,status,create_date, update_date @@ -61,8 +61,20 @@ and `grant_id` = #{grantId} - - and `record_id` = #{recordId} + + and `order_id` = #{orderId} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and `status` = #{status} @@ -83,4 +95,37 @@ select from wx_vtwo_cash_back_grant_award where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_cash_back_grant_award + (id, + activity_id,activity_name,grant_id, + order_id,order_amount,mode_type, + min_amount,max_amount,related_count, + award_id,award_name,cash_back_ratio, + cash_back_rule,cash_back,share_rule, + mall_share_rate,merchant_share_rate,tax_deduction_rules, + tax_amount,create_date, + update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT}, + #{item.orderId,jdbcType=BIGINT},#{item.orderAmount,jdbcType=DECIMAL},#{item.modeType,jdbcType=SMALLINT}, + #{item.minAmount,jdbcType=DECIMAL},#{item.maxAmount,jdbcType=DECIMAL},#{item.relatedCount,jdbcType=INTEGER}, + #{item.awardId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.cashBackRatio,jdbcType=DECIMAL}, + #{item.cashBackRule,jdbcType=SMALLINT},#{item.cashBack,jdbcType=DECIMAL},#{item.shareRule,jdbcType=SMALLINT}, + #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.taxDeductionRules,jdbcType=VARCHAR}, + #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml index f090237b5..c67b7630e 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml @@ -9,6 +9,7 @@ + @@ -20,11 +21,9 @@ - - @@ -35,12 +34,12 @@ id,tenant_id,parent_tenant_id, - activity_id,activity_name,order_money_sum, + activity_id,activity_type,activity_name,order_money_sum, order_count,cus_name,cus_phone, lottery_num,lottery_count,anniversary_lottery_num, real_name,real_card,cash_back_limit, - cash_back_rule,cash_back,tax_deduction_rules, - tax_amount,real_cash_back,remark,sign_img, + cash_back,tax_deduction_rules, + tax_amount,remark,sign_img, status,create_by,create_date, update_date @@ -59,6 +58,17 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + and `status` = #{status} @@ -82,4 +92,22 @@ select from wx_vtwo_cash_back_grant where id = #{id} and tenant_id=#{tenantId} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml index 1c6664e18..cbade80ee 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml @@ -54,4 +54,46 @@ select from wx_vtwo_special_topic_activity where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_special_topic_activity + (id, + special_topic_id,activity_id,activity_type, + activity_name,activity_create_date,activity_start_time, + activity_end_time,activity_status,create_date, + update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.specialTopicId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityType,jdbcType=SMALLINT}, + #{item.activityName,jdbcType=VARCHAR},#{item.activityCreateDate,jdbcType=TIMESTAMP},#{item.activityStartTime,jdbcType=TIMESTAMP}, + #{item.activityEndTime,jdbcType=TIMESTAMP},#{item.activityStatus,jdbcType=SMALLINT},#{item.createDate,jdbcType=TIMESTAMP}, + #{item.updateDate,jdbcType=TIMESTAMP}) + + + + + update wx_vtwo_special_topic_activity + set + + `activity_name` = #{activityName}, + + + `activity_start_time` = #{activityStartTime}, + + + `activity_end_time` = #{activityEndTime}, + + + `activity_status` = #{activityStatus}, + + `update_date` = #{updateDate} + where `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + and `tenant_id` = #{tenantId} + +