| @@ -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卡号"); | |||
| } | |||
| @@ -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; | |||
| @@ -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; | |||
| @@ -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){ | |||
| @@ -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(); | |||
| @@ -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; | |||
| @@ -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<WxVtwoActivityOrder> 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<String,Object> statisticsMap = wxVtwoActivityOrderService.orderStatistics(getTenantInfo()); | |||
| return new ResultData(statisticsMap); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivitySpecialTopic> 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)); | |||
| } | |||
| } | |||
| @@ -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<String,Object> 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<WxVtwoActivityOrder> 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); | |||
| } | |||
| } | |||
| @@ -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<String,Object> 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<WxVtwoActivityOrder> 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); | |||
| } | |||
| } | |||
| @@ -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<String,Object> 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<WxVtwoActivityOrder> 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); | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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; | |||
| @@ -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; | |||
| @@ -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(); | |||
| @@ -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(); | |||
| @@ -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<WxOfflineActivityRecord> 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<String,Integer> 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<WxOfflineActivityRecord> 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<String,Integer> statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); | |||
| // return new ResultData(statisticsMap); | |||
| // } | |||
| // | |||
| // | |||
| // | |||
| //} | |||
| @@ -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<WxVtwoActivityOrder> 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<String,Object> statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); | |||
| return new ResultData(statisticsMap); | |||
| } | |||
| } | |||
| @@ -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<String> lotteryNumList; | |||
| public List<String> getLotteryNumList() { | |||
| if(StringUtils.isNotBlank(lotteryNum)){ | |||
| try { | |||
| List<String> 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<String> anniversaryLotteryNumList; | |||
| public List<String> getAnniversaryLotteryNumList() { | |||
| if(StringUtils.isNotBlank(anniversaryLotteryNum)){ | |||
| try { | |||
| List<String> 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<WxVtwoActivityGrantAward> grantAwardList; | |||
| @TableField(exist = false) | |||
| private List<Long> orderIdList; | |||
| @TableField(exist = false) | |||
| private List<Long> orderFilterIdList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityOrder> orderList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityGrantRule> ruleList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityAward> awardList; | |||
| @TableField(exist = false) | |||
| private Integer awardLimit; | |||
| } | |||
| @@ -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; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @@ -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; | |||
| /** | |||
| @@ -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 | |||
| */ | |||
| @@ -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<Long> activityIdList; | |||
| @TableField(exist = false) | |||
| private List<Long> merchantIdList; | |||
| @TableField(exist = false) | |||
| private List<Long> awardIdList; | |||
| } | |||
| @@ -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<String> lotteryNumList; | |||
| public List<String> getLotteryNumList() { | |||
| if(StringUtils.isNotBlank(lotteryNum)){ | |||
| try { | |||
| List<String> 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; | |||
| } | |||
| @@ -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<WxVtwoSpecialTopicActivity> 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; | |||
| } | |||
| @@ -101,7 +101,7 @@ public class WxVtwoAmountGiftActivity extends TenantEntity { | |||
| private List<Long> merchantIdList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityMerchant> merchanList; | |||
| private List<WxVtwoActivityMerchant> merchantList; | |||
| /** | |||
| * 活动状态 | |||
| @@ -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<Long> merchantIdList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityMerchant> merchanList; | |||
| private List<WxVtwoActivityMerchant> merchantList; | |||
| /** | |||
| * 活动状态 | |||
| @@ -68,7 +68,7 @@ public class WxVtwoCashBackAward extends TenantEntity { | |||
| * 返现金额限制 | |||
| */ | |||
| @TableField(value = "cash_back_limit") | |||
| private Integer cashBackLimit; | |||
| private BigDecimal cashBackLimit; | |||
| /** | |||
| * 分担规则(0-商管 1-商户 2-分担) | |||
| @@ -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<String> lotteryNumList; | |||
| public List<String> getLotteryNumList() { | |||
| if(StringUtils.isNotBlank(lotteryNum)){ | |||
| try { | |||
| List<String> 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<String> anniversaryLotteryNumList; | |||
| public List<String> getAnniversaryLotteryNumList() { | |||
| if(StringUtils.isNotBlank(anniversaryLotteryNum)){ | |||
| try { | |||
| List<String> 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<WxVtwoCashBackGrantAward> grantAwardList; | |||
| @TableField(exist = false) | |||
| private List<Long> orderIdList; | |||
| @TableField(exist = false) | |||
| private List<Long> orderFilterIdList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityOrder> orderList; | |||
| } | |||
| @@ -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; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @@ -107,7 +107,7 @@ public class WxVtwoPrizeDrawActivity extends TenantEntity { | |||
| private List<Long> merchantIdList; | |||
| @TableField(exist = false) | |||
| private List<WxVtwoActivityMerchant> merchanList; | |||
| private List<WxVtwoActivityMerchant> merchantList; | |||
| /** | |||
| * 活动状态 | |||
| @@ -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; | |||
| } | |||
| /** | |||
| * 活动名称 | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -12,5 +12,5 @@ public class WxVtwoActivityOrderStatistics implements Serializable { | |||
| private Integer auditStatus; | |||
| private Integer count; | |||
| private BigDecimal sumAmount; | |||
| private BigDecimal sumMoney; | |||
| } | |||
| @@ -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<Long> activityIdList; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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;//联单返现* | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -14,6 +14,6 @@ public class WxVtwoOrderCountStatistics implements Serializable { | |||
| private Integer userCount; | |||
| private Integer orderCount; | |||
| private BigDecimal sumAmount; | |||
| private BigDecimal orderMoney; | |||
| private Integer merchantCount; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivityGrantAward, Long> { | |||
| void insertList(@Param("grantAwardList")List<WxVtwoActivityGrantAward> grantAwardList); | |||
| WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityGrantAward grantAward); | |||
| List<WxVtwoAwardStatistics> activityAwardCountStatisticsChart(WxVtwoActivityGrantAward grantAward); | |||
| List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityGrantAward grantAward); | |||
| } | |||
| @@ -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<WxVtwoActivityGrantExport, Long> { | |||
| void insertList(@Param("grantExportList")List<WxVtwoActivityGrantExport> grantExportList); | |||
| List<WxVtwoActivityGrantExport> findList(WxVtwoActivityGrantExport exportQ); | |||
| } | |||
| @@ -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<WxVtwoActivityGrant, Long> { | |||
| WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrant activityGrant); | |||
| List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityGrant activityGrant); | |||
| } | |||
| @@ -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<WxVtwoActivityGrantOrder, Long> { | |||
| void insertList(@Param("grantOrderList")List<WxVtwoActivityGrantOrder> grantOrderList); | |||
| } | |||
| @@ -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<WxVtwo | |||
| Integer getOrderCount(WxVtwoActivityGrantSettlement record); | |||
| void insertList(@Param("settlementList")List<WxVtwoActivityGrantSettlement> settlementList); | |||
| WxVtwoSettlementStatistics settlementStatistics(WxVtwoActivityGrantSettlement record); | |||
| List<WxVtwoMerchantSettlementStatistics> merchantSettlementStatistics(WxVtwoActivityGrantSettlement record); | |||
| WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrantSettlement record); | |||
| List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityGrantSettlement record); | |||
| } | |||
| @@ -40,6 +40,7 @@ public interface WxVtwoActivityOrderMapper extends CommonMapper<WxVtwoActivityOr | |||
| List<WxVtwoOrderBusinessStatistics> getBusinessStatistics(WxVtwoActivityOrder record); | |||
| List<WxVtwoActivityOrder> findAuditDetailList(WxVtwoActivityOrder orderQ); | |||
| } | |||
| @@ -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<WxVtwoActivitySpecialTopic, Long> { | |||
| List<WxVtwoActivitySpecialTopic> 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); | |||
| } | |||
| @@ -16,7 +16,7 @@ import java.util.List; | |||
| */ | |||
| public interface WxVtwoCashBackAwardMapper extends CommonMapper<WxVtwoCashBackAward, Long> { | |||
| void insertList(@Param("awardList") List<WxVtwoActivityAward> awardList); | |||
| void insertList(@Param("awardList") List<WxVtwoCashBackAward> awardList); | |||
| List<WxVtwoCashBackAward> findList(WxVtwoCashBackAward cashBackAward); | |||
| } | |||
| @@ -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<WxVtwoCashBackGrantAward, Long> { | |||
| void insertList(@Param("grantAwardList") List<WxVtwoCashBackGrantAward> grantAwardList); | |||
| List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoCashBackGrantAward grantAward); | |||
| } | |||
| @@ -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<WxVtwoCashBackGrant, Long> { | |||
| WxVtwoAwardStatistics activityAwardStatistics(WxVtwoCashBackGrant wxVtwoCashBackGrant); | |||
| List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoCashBackGrant wxVtwoCashBackGrant); | |||
| } | |||
| @@ -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<WxVtwoSpecialTopicActivity, Long> { | |||
| void insertList(@Param("activityList") List<WxVtwoSpecialTopicActivity> activityList); | |||
| List<WxVtwoSpecialTopicActivity> findList(WxVtwoSpecialTopicActivity specialTopicActivity); | |||
| void updateByActivity(WxVtwoSpecialTopicActivity specialTopicActivity); | |||
| } | |||
| @@ -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<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity); | |||
| // void handleOfflineConfig(WxLegionActivity wxLegionActivity); | |||
| // | |||
| // List<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity); | |||
| void syncOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder); | |||
| void syncOfflineActivityRecord(List<WxLegionActivityOrder> wxLegionActivityOrders); | |||
| void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map<Long, String> legionConfigMap); | |||
| } | |||
| @@ -36,4 +36,5 @@ public interface WxOfflineActivityGrantSettlementService { | |||
| void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement); | |||
| OfflineActivitySettlementStatistics activitySettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement); | |||
| } | |||
| @@ -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<WxVtwoActivityAward> { | |||
| void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoActivityAward> awardList); | |||
| List<WxVtwoActivityAward> findActivityAwardList(Long activityId, String tenantId); | |||
| Map<Long, WxVtwoActivityAward> findActivityAwardMap(Long activityId, String tenantId); | |||
| } | |||
| @@ -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<WxVtwoActivityGrantAward> { | |||
| void saveGrantAward(WxVtwoActivityGrant activityGrant,List<WxVtwoActivityAward> awardList); | |||
| WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoAwardStatistics> activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| } | |||
| @@ -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<WxVtwoActivityGrantExport> { | |||
| void saveGrantExport(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList); | |||
| void saveGrantExport(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList); | |||
| List<WxVtwoActivityGrantExport> findActivityGrantList(Long activityId, String tenantId); | |||
| List<ExcelExportEntity> getExportHeadList(); | |||
| } | |||
| @@ -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<WxVtwoActivityGrantOrder> { | |||
| void saveGrantOrder(Long grantId, Long activityId, List<WxVtwoActivityOrder> orderList); | |||
| } | |||
| @@ -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<WxVtwoActivityGrant> { | |||
| void handleFromOrder(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant); | |||
| WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | |||
| } | |||
| @@ -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<WxVtwoActivityGrantSettlement> { | |||
| void saveGrantSettlement(WxVtwoActivityGrant activityGrant); | |||
| void saveGrantSettlement(WxVtwoCashBackGrant activityGrant); | |||
| WxVtwoSettlementStatistics activitySettlementStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| WxVtwoAwardStatistics activityAmountCashBackStatistics(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList); | |||
| List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoAwardStatistics> activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList); | |||
| } | |||
| @@ -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<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| } | |||
| @@ -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<WxVtwoActivityOrder> { | |||
| PageInfo<WxVtwoActivityOrder> listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize); | |||
| List<WxVtwoActivityOrder> findList(WxVtwoActivityOrder record, Long activityId); | |||
| WxVtwoActivityOrder getById(Long id, String tenantId); | |||
| WxVtwoActivityOrder getInfoById(Long id, String tenantId); | |||
| Map<String, Object> getStatistics(WxVtwoActivityOrder record); | |||
| void auditRecord(WxVtwoActivityOrder record, Long userId); | |||
| void saveCreditHistory(WxVtwoActivityOrder record); | |||
| Map<String, Object> orderStatistics(TenantEntity tenantInfo); | |||
| void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId); | |||
| Integer getWaitAudiCount(TenantEntity tenantInfo); | |||
| WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder); | |||
| List<WxVtwoActivityOrder> findGrantOrder(TenantEntity tenantInfo, List<Long> idList, List<Long> filterIdList); | |||
| Integer getJointCount(Integer relatedModel, List<WxVtwoActivityOrder> orderList); | |||
| /** | |||
| * 只查询审核信息 | |||
| * @param ids | |||
| * @param tenantId | |||
| * @return | |||
| */ | |||
| Map<Long, WxVtwoActivityOrder> findAuditDetailMap(List<Long> ids, String tenantId); | |||
| WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| } | |||
| @@ -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<WxVtwoActivitySpecialTopic> { | |||
| PageInfo<WxVtwoActivitySpecialTopic> 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); | |||
| } | |||
| @@ -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<WxVtwoAmountGi | |||
| WxVtwoAmountGiftActivity getInfoById(Long id, String tenantId); | |||
| WxVtwoAmountGiftActivity getById(Long id, String tenantId); | |||
| void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity); | |||
| void handlerGrantAwardPage(WxVtwoAmountGiftActivity amountGiftActivity, WxVtwoActivityGrant activityGrant); | |||
| void grantAward(WxVtwoAmountGiftActivity amountGiftActivity,WxVtwoActivityGrant activityGrant); | |||
| void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant); | |||
| } | |||
| @@ -1,9 +1,12 @@ | |||
| package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxVtwoAmountGiftActivity; | |||
| import com.iformall.domain.po.WxVtwoCashBackActivity; | |||
| import com.iformall.domain.po.*; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| 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 WxVtwoCashBackActivityService extends IService<WxVtwoCashBackAc | |||
| WxVtwoCashBackActivity getInfoById(Long id, String tenantId); | |||
| WxVtwoCashBackActivity getById(Long id, String tenantId); | |||
| void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity); | |||
| void handlerGrantAwardPage(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant); | |||
| void grantAward(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant); | |||
| void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoCashBackGrant activityGrant); | |||
| } | |||
| @@ -6,6 +6,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 | |||
| @@ -15,4 +16,10 @@ import java.util.List; | |||
| public interface WxVtwoCashBackAwardService extends IService<WxVtwoCashBackAward> { | |||
| void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoCashBackAward> amountRulesObject, List<WxVtwoCashBackAward> relatedRulesObject); | |||
| List<WxVtwoCashBackAward> findActivityAwardList(Long activityId, String tenantId); | |||
| Map<Long, WxVtwoCashBackAward> findActivityAwardMap(Long activityId, String tenantId); | |||
| List<Long> getAmountAwardIdList(Long activityId, String tenantId); | |||
| } | |||
| @@ -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<WxVtwoCashBackGrantAward> { | |||
| void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList); | |||
| void saveGrantAward(WxVtwoCashBackGrant activityGrant); | |||
| List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| } | |||
| @@ -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<WxVtwoCashBackGrant> { | |||
| void handleFromOrder(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant); | |||
| WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); | |||
| List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | |||
| } | |||
| @@ -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<WxVtwoPrizeDraw | |||
| PageInfo<WxVtwoPrizeDrawActivity> 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); | |||
| } | |||
| @@ -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<WxVtwoSpecialTopicActivity> { | |||
| void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List<WxVtwoSpecialTopicActivity> activityList); | |||
| } | |||
| @@ -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<WxLegionActivityOfflineConfig> 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<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity) { | |||
| List<Long> 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<WxLegionActivityOfflineConfig> 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<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity) { | |||
| // | |||
| // List<Long> 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<Long, String> 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); | |||
| } | |||
| } | |||
| @@ -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<Long, String> 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<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); | |||
| List<Long> 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 | |||
| @@ -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); | |||
| @@ -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<WxVtwoActivityAw | |||
| } | |||
| wxVtwoActivityAwardMapper.insertList(awardList); | |||
| } | |||
| @Override | |||
| public List<WxVtwoActivityAward> findActivityAwardList(Long activityId, String tenantId) { | |||
| WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); | |||
| activityAwardQ.setTenantId(tenantId); | |||
| activityAwardQ.setActivityId(activityId); | |||
| return wxVtwoActivityAwardMapper.findList(activityAwardQ); | |||
| } | |||
| @Override | |||
| public Map<Long, WxVtwoActivityAward> findActivityAwardMap(Long activityId, String tenantId) { | |||
| List<WxVtwoActivityAward> activityAwardList = this.findActivityAwardList(activityId, tenantId); | |||
| return activityAwardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivityGrantAwardMapper, WxVtwoActivityGrantAward> | |||
| implements WxVtwoActivityGrantAwardService{ | |||
| @Autowired | |||
| private WxVtwoActivityGrantAwardMapper wxVtwoActivityGrantAwardMapper; | |||
| @Override | |||
| public void saveGrantAward(WxVtwoActivityGrant activityGrant,List<WxVtwoActivityAward> awardList) { | |||
| Map<Long, WxVtwoActivityAward> activityAwardMap = awardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); | |||
| List<WxVtwoActivityGrantAward> 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<WxVtwoAwardStatistics> activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); | |||
| return wxVtwoActivityGrantAwardMapper.activityAwardCountStatisticsChart(grantAward); | |||
| } | |||
| @Override | |||
| public List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); | |||
| return wxVtwoActivityGrantAwardMapper.awardItemStatistics(grantAward); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivityGrantExportMapper, WxVtwoActivityGrantExport> | |||
| implements WxVtwoActivityGrantExportService{ | |||
| @Autowired | |||
| private WxVtwoActivityGrantExportMapper wxVtwoActivityGrantExportMapper; | |||
| @Autowired | |||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||
| @Override | |||
| public void saveGrantExport(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList) { | |||
| Map<Long, List<WxVtwoActivityGrantSettlement>> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId)); | |||
| Map<Long, WxVtwoActivityOrder> orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); | |||
| List<WxVtwoActivityGrantExport> grantExportList = new ArrayList<>(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| orderSettlementMap.keySet().forEach(orderId -> { | |||
| List<WxVtwoActivityGrantSettlement> 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<WxVtwoActivityGrantSettlement> 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<WxVtwoActivityGrantSettlement> settlementList) { | |||
| Map<Long, List<WxVtwoActivityGrantSettlement>> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId)); | |||
| Map<Long, WxVtwoActivityOrder> orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); | |||
| List<WxVtwoActivityGrantExport> grantExportList = new ArrayList<>(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| orderSettlementMap.keySet().forEach(orderId -> { | |||
| List<WxVtwoActivityGrantSettlement> 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<WxVtwoActivityGrantExport> findActivityGrantList(Long activityId, String tenantId) { | |||
| WxVtwoActivityGrantExport exportQ = new WxVtwoActivityGrantExport(); | |||
| exportQ.setTenantId(tenantId); | |||
| exportQ.setActivityId(activityId); | |||
| List<WxVtwoActivityGrantExport> exportList = wxVtwoActivityGrantExportMapper.findList(exportQ); | |||
| if(exportList != null && !exportList.isEmpty()){ | |||
| List<Long> orderIds = exportList.stream().map(e -> e.getOrderId()).distinct().collect(Collectors.toList()); | |||
| Map<Long,WxVtwoActivityOrder> 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<ExcelExportEntity> getExportHeadList() { | |||
| List<ExcelExportEntity> 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; | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivityGrantOrderMapper, WxVtwoActivityGrantOrder> | |||
| implements WxVtwoActivityGrantOrderService{ | |||
| @Autowired | |||
| private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper; | |||
| @Override | |||
| public void saveGrantOrder(Long grantId, Long activityId, List<WxVtwoActivityOrder> orderList) { | |||
| List<WxVtwoActivityGrantOrder> 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); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivityGrantMapper, WxVtwoActivityGrant> | |||
| implements WxVtwoActivityGrantService{ | |||
| @Autowired | |||
| private WxVtwoActivityGrantMapper wxVtwoActivityGrantMapper; | |||
| @Override | |||
| public void handleFromOrder(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant) { | |||
| activityGrant.setOrderList(orderList); | |||
| BigDecimal orderMoneySum = BigDecimal.ZERO; | |||
| List<String> lotteryNumList = new ArrayList<>(); | |||
| int lotteryCount = 0; | |||
| List<String> 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<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo); | |||
| return wxVtwoActivityGrantMapper.activityAwardStatisticsChart(activityGrant); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivityGrantSettlementMapper, WxVtwoActivityGrantSettlement> | |||
| implements WxVtwoActivityGrantSettlementService{ | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; | |||
| @Autowired | |||
| private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService; | |||
| @Override | |||
| public void saveGrantSettlement(WxVtwoActivityGrant activityGrant) { | |||
| List<WxVtwoActivityOrder> amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) | |||
| .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); | |||
| List<WxVtwoActivityOrder> cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); | |||
| List<WxVtwoActivityGrantAward> grantAwardList = activityGrant.getGrantAwardList(); | |||
| Map<Integer, List<WxVtwoActivityGrantAward>> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantAward::getModeType)); | |||
| List<WxVtwoActivityGrantAward> amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||
| List<WxVtwoActivityGrantAward> countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); | |||
| List<WxVtwoActivityGrantSettlement> settlementList = new ArrayList<>(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ | |||
| handleOrderRatio(amountOrderList); | |||
| Map<Long, WxVtwoActivityOrder> 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<WxVtwoActivityOrder> 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<size; i++){ | |||
| WxVtwoActivityOrder order = orderList.get(i); | |||
| BigDecimal orderRatio = order.getOrderMoney() | |||
| .divide(orderSumMoney,4, RoundingMode.HALF_UP) | |||
| .multiply(new BigDecimal(100)); | |||
| order.setOrderRatio(orderRatio); | |||
| lastRatio = lastRatio.subtract(orderRatio); | |||
| } | |||
| orderList.get(size).setOrderRatio(lastRatio); | |||
| } | |||
| @Override | |||
| public void saveGrantSettlement(WxVtwoCashBackGrant activityGrant) { | |||
| List<WxVtwoActivityOrder> amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) | |||
| .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); | |||
| List<WxVtwoActivityOrder> cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); | |||
| List<WxVtwoCashBackGrantAward> grantAwardList = activityGrant.getGrantAwardList(); | |||
| Map<Integer, List<WxVtwoCashBackGrantAward>> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackGrantAward::getModeType)); | |||
| List<WxVtwoCashBackGrantAward> amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||
| List<WxVtwoCashBackGrantAward> countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); | |||
| List<WxVtwoActivityGrantSettlement> settlementList = new ArrayList<>(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ | |||
| handleOrderRatio(amountOrderList); | |||
| Map<Long, WxVtwoActivityOrder> 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<Long> 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<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); | |||
| return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); | |||
| } | |||
| @Override | |||
| public List<WxVtwoAwardStatistics> activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList) { | |||
| WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); | |||
| if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){ | |||
| grantSettlement.setAwardIdList(amountAwardIdList); | |||
| }else{ | |||
| grantSettlement.setAwardIdList(Collections.singletonList((long) -1)); | |||
| } | |||
| return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); | |||
| } | |||
| } | |||
| @@ -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<Long> 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<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| List<WxVtwoAwardStatistics> activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatisticsChart(statisticsVo); | |||
| Map<String, WxVtwoAwardStatistics> activityAwardStatisticsMap = new HashMap<>(); | |||
| if(activityAwardStatistics != null && !activityAwardStatistics.isEmpty()){ | |||
| activityAwardStatisticsMap = activityAwardStatistics.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); | |||
| } | |||
| Map<String, WxVtwoAwardStatistics> activityGrantStatisticsMap = new HashMap<>(); | |||
| Map<String, WxVtwoAwardStatistics> activityAmountCashBackStatisticsMap = new HashMap<>(); | |||
| Map<String, WxVtwoAwardStatistics> activityAwardCountStatisticsMap = new HashMap<>(); | |||
| if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ | |||
| List<WxVtwoAwardStatistics> activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatisticsChart(statisticsVo); | |||
| if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ | |||
| activityGrantStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); | |||
| } | |||
| List<Long> amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId()); | |||
| List<WxVtwoAwardStatistics> 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<WxVtwoAwardStatistics> activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatisticsChart(statisticsVo); | |||
| if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ | |||
| activityGrantStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); | |||
| } | |||
| List<WxVtwoAwardStatistics> activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatisticsChart(statisticsVo); | |||
| if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){ | |||
| activityAwardCountStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); | |||
| } | |||
| } | |||
| List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(statisticsVo.getCreateDateBegin(),"yyyy-MM-dd"), | |||
| DateUtils.date2String(statisticsVo.getCreateDateEnd(),"yyyy-MM-dd"), "0"); | |||
| List<WxVtwoAwardStatistics> 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<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| List<WxVtwoAwardGrantStatistics> awardGrantStatisticsList = new ArrayList<>(); | |||
| if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ | |||
| List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); | |||
| List<WxVtwoAwardGrantStatistics> awardGrantStatistics = wxVtwoCashBackGrantAwardService.awardItemStatistics(statisticsVo); | |||
| Map<Long,WxVtwoAwardGrantStatistics> 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<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); | |||
| List<WxVtwoAwardGrantStatistics> awardGrantStatistics = wxVtwoActivityGrantAwardService.awardItemStatistics(statisticsVo); | |||
| Map<Long,WxVtwoAwardGrantStatistics> 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()); | |||
| } | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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<WxVtwoActivityOrderMapper, WxVtwoActivityOrder> | |||
| 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<WxVtwoActivityOrder> listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize) { | |||
| handlerQuery(record); | |||
| PageInfo<WxVtwoActivityOrder> recordPage = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivityOrderMapper.findList(record)); | |||
| handlerList(record,recordPage.getList()); | |||
| return recordPage; | |||
| } | |||
| @Override | |||
| public List<WxVtwoActivityOrder> findList(WxVtwoActivityOrder record, Long activityId) { | |||
| handlerQuery(record); | |||
| List<WxVtwoActivityOrder> 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<Long> mids = wxMerchantService.findIdList(merchant); | |||
| if (null == mids || mids.size() <= 0 ) { | |||
| record.setId(-1L); | |||
| }else { | |||
| record.setMerchantIdList(mids); | |||
| } | |||
| } | |||
| } | |||
| private void handlerList(TenantEntity tenantEntity, List<WxVtwoActivityOrder> recordList) { | |||
| if (recordList == null || recordList.size() <= 0) { | |||
| return; | |||
| } | |||
| List<Long> merchantIds = recordList.stream().map(WxVtwoActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | |||
| List<Long> userIds = recordList.stream().map(WxVtwoActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | |||
| Map<Long, String> idAndNamesMap = new HashMap<>(); | |||
| Map<Long,String> 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<Long, MallUserInfo> userMap = new HashMap<>(); | |||
| if(!userIds.isEmpty()){ | |||
| MallUserInfo userInfoQ = new MallUserInfo(); | |||
| userInfoQ.updateTenantInfo(tenantEntity); | |||
| userMap = mallUserInfoService.getUserMap(userInfoQ); | |||
| } | |||
| Map<Integer, WxBusiness> 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<WxVtwoActivityOrder> 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<String, Object> getStatistics(WxVtwoActivityOrder record) { | |||
| List<WxVtwoActivityOrderStatistics> auditStatusStatistics = wxVtwoActivityOrderMapper.auditStatusStatistics(record); | |||
| Map<String, Object> 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<String, Object> orderStatistics(TenantEntity tenantInfo) { | |||
| //最近30天 | |||
| Date now = new Date(); | |||
| String monthStartdate = DateUtils.getTimeBefore(30, now); | |||
| String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 | |||
| String weekStartdate = DateUtils.getTimeBefore(7, now); | |||
| String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 | |||
| String yesterdayDate = DateUtils.getTimeBefore(1, now); | |||
| String today = DateUtils.getTimeBefore(0, now); | |||
| //最近30天数据 | |||
| 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<String, Object> result = new HashMap<>(); | |||
| result.put("monthCount",monthCount); | |||
| NumberFormat nf = NumberFormat.getPercentInstance(); | |||
| nf.setMinimumFractionDigits(2); | |||
| String dayPercentage = "--"; | |||
| if (yesYesCount > 0) { | |||
| Integer count = yesCount - yesYesCount; | |||
| dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue()); | |||
| } | |||
| result.put("dayPercentage",dayPercentage); | |||
| String weekPercentage = "--"; | |||
| if (yesWeekCount > 0) { | |||
| Integer count = yesCount - yesWeekCount; | |||
| weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue()); | |||
| } | |||
| result.put("weekPercentage",weekPercentage); | |||
| return result; | |||
| } | |||
| @Override | |||
| public void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId) { | |||
| List<WxVtwoActivityOrder> 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<WxVtwoActivityOrder> findGrantOrder(TenantEntity tenantInfo, List<Long> idList, List<Long> filterIdList) { | |||
| WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); | |||
| orderQ.updateTenantInfo(tenantInfo); | |||
| orderQ.setIds(idList); | |||
| List<WxVtwoActivityOrder> 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<WxVtwoActivityOrder> orderList) { | |||
| Integer jointCount = 0; | |||
| if(orderList == null || orderList.isEmpty()){ | |||
| return jointCount; | |||
| } | |||
| if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(relatedModel)){ | |||
| //商户联单 | |||
| List<Long> merchantIds = orderList.stream().map(WxVtwoActivityOrder::getMerchantId).distinct().collect(toList()); | |||
| jointCount = merchantIds.size(); | |||
| }else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(relatedModel)){ | |||
| //业态联单 | |||
| List<Integer> businessIds = orderList.stream().map(WxVtwoActivityOrder::getBusinessId).distinct().collect(toList()); | |||
| jointCount = businessIds.size(); | |||
| } | |||
| return jointCount; | |||
| } | |||
| @Override | |||
| public Map<Long, WxVtwoActivityOrder> findAuditDetailMap(List<Long> ids, String tenantId) { | |||
| WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); | |||
| orderQ.setTenantId(tenantId); | |||
| orderQ.setIds(ids); | |||
| List<WxVtwoActivityOrder> auditDetailList = wxVtwoActivityOrderMapper.findAuditDetailList(orderQ); | |||
| MallUserInfo userInfoQ = new MallUserInfo(); | |||
| userInfoQ.setTenantId(tenantId); | |||
| Map<Long, MallUserInfo> 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<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); | |||
| List<WxVtwoOrderCountStatistics> countStatisticsChart = wxVtwoActivityOrderMapper.getCountStatisticsChart(activityOrder); | |||
| Map<String, WxVtwoOrderCountStatistics> countStatisticsChartMap = new HashMap<>(); | |||
| if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){ | |||
| countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(WxVtwoOrderCountStatistics::getXTime, Function.identity())); | |||
| } | |||
| List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityOrder.getCreateDateBegin(),"yyyy-MM-dd"), | |||
| DateUtils.date2String(activityOrder.getCreateDateEnd(),"yyyy-MM-dd"), "0"); | |||
| List<WxVtwoOrderCountStatistics> 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<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); | |||
| List<WxVtwoOrderBusinessStatistics> businessStatistics = wxVtwoActivityOrderMapper.getBusinessStatistics(activityOrder); | |||
| if(businessStatistics != null && !businessStatistics.isEmpty()){ | |||
| Map<Integer, WxBusiness> 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(); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoActivitySpecialTopicMapper, WxVtwoActivitySpecialTopic> | |||
| implements WxVtwoActivitySpecialTopicService{ | |||
| @Autowired | |||
| private WxVtwoActivitySpecialTopicMapper wxVtwoActivitySpecialTopicMapper; | |||
| @Autowired | |||
| private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; | |||
| @Autowired | |||
| private WxVtwoSpecialTopicActivityService wxVtwoSpecialTopicActivityService; | |||
| @Override | |||
| public PageInfo<WxVtwoActivitySpecialTopic> listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) { | |||
| handlerQuery(specialTopic); | |||
| PageInfo<WxVtwoActivitySpecialTopic> 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<WxVtwoActivitySpecialTopic> 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<WxVtwoSpecialTopicActivity> 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<Long> activityIdList = specialTopic.getActivityList().stream().map(a -> a.getActivityId()).collect(Collectors.toList()); | |||
| statisticsVo.setActivityIdList(activityIdList); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoAmoun | |||
| @Autowired | |||
| private WxVtwoAmountGiftActivityMapper wxVtwoAmountGiftActivityMapper; | |||
| @Autowired | |||
| private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper; | |||
| @Autowired | |||
| private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | |||
| @@ -49,12 +53,36 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; | |||
| @Autowired | |||
| private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; | |||
| @Autowired | |||
| private WxVtwoActivityAwardService wxVtwoActivityAwardService; | |||
| @Autowired | |||
| private WxVtwoActivityMerchantService wxVtwoActivityMerchantService; | |||
| @Autowired | |||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantService wxVtwoActivityGrantService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantOrderService wxVtwoActivityGrantOrderService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService; | |||
| @Autowired | |||
| private ExcelService excelService; | |||
| @Override | |||
| public PageInfo<WxVtwoAmountGiftActivity> listAsPage(WxVtwoAmountGiftActivity amountGiftActivity, Integer pageNum, Integer pageSize) { | |||
| handlerQuery(amountGiftActivity); | |||
| @@ -154,6 +182,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun | |||
| } | |||
| wxVtwoActivityMerchantService.saveFromActivity(amountGiftActivity,amountGiftActivity.getId(),amountGiftActivity.getMerchantIdList()); | |||
| } | |||
| updateSpecialTopicActivity(amountGiftActivity); | |||
| return true; | |||
| } | |||
| @@ -166,31 +195,197 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun | |||
| } | |||
| } | |||
| private void updateSpecialTopicActivity(WxVtwoAmountGiftActivity amountGiftActivity){ | |||
| WxVtwoSpecialTopicActivity specialTopicActivity = new WxVtwoSpecialTopicActivity(); | |||
| specialTopicActivity.updateTenantInfo(amountGiftActivity); | |||
| specialTopicActivity.setActivityId(amountGiftActivity.getId()); | |||
| specialTopicActivity.setActivityType(EnumOfflineActivityType.GIFT.getCode()); | |||
| specialTopicActivity.setActivityName(amountGiftActivity.getName()); | |||
| specialTopicActivity.setActivityCreateDate(amountGiftActivity.getCreateDate()); | |||
| specialTopicActivity.setActivityStartTime(amountGiftActivity.getStartTime()); | |||
| specialTopicActivity.setActivityEndTime(amountGiftActivity.getEndTime()); | |||
| specialTopicActivity.setActivityStatus(amountGiftActivity.getStatus()); | |||
| specialTopicActivity.setUpdateDate(amountGiftActivity.getUpdateDate()); | |||
| wxVtwoSpecialTopicActivityMapper.updateByActivity(specialTopicActivity); | |||
| } | |||
| @Override | |||
| public boolean updateById(WxVtwoAmountGiftActivity amountGiftActivity) { | |||
| amountGiftActivity.setUpdateDate(new Date()); | |||
| wxVtwoAmountGiftActivityMapper.updateById(amountGiftActivity); | |||
| updateSpecialTopicActivity(amountGiftActivity); | |||
| return true; | |||
| } | |||
| @Override | |||
| public WxVtwoAmountGiftActivity getInfoById(Long id, String tenantId) { | |||
| WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityMapper.selectById(id, tenantId); | |||
| if (amountGiftActivity == null) { | |||
| return null; | |||
| } | |||
| if(StringUtil.isNotBlank(amountGiftActivity.getAmountRules())){ | |||
| if(StringUtils.isNotBlank(amountGiftActivity.getAmountRules())){ | |||
| amountGiftActivity.setAmountRulesObject(JSONObject.parseArray(amountGiftActivity.getAmountRules(), WxVtwoActivityRuleDetail.class)); | |||
| } | |||
| if(StringUtil.isNotBlank(amountGiftActivity.getRelatedRules())){ | |||
| if(StringUtils.isNotBlank(amountGiftActivity.getRelatedRules())){ | |||
| amountGiftActivity.setRelatedRulesObject(JSONObject.parseArray(amountGiftActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class)); | |||
| } | |||
| WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); | |||
| activityAwardQ.setTenantId(tenantId); | |||
| activityAwardQ.setActivityId(id); | |||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); | |||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); | |||
| amountGiftActivity.setAwardList(activityAwardList); | |||
| if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(amountGiftActivity.getMerchantRule())){ | |||
| List<WxVtwoActivityMerchant> 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<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); | |||
| wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); | |||
| activityGrant.setAwardList(amountGiftActivity.getAwardList()); | |||
| List<WxVtwoActivityGrantAward> 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<Integer, WxVtwoActivityRuleDetail> 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<WxVtwoActivityOrder> 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<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); | |||
| if(activityAwardList == null || activityAwardList.isEmpty()){ | |||
| throw new MallinkException(Result.ERROR,"未查询到活动"); | |||
| } | |||
| List<ExcelExportEntity> 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<WxVtwoActivityGrantExport> activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); | |||
| List<Map<String, Object>> grantObjectList = new ArrayList<>(); | |||
| if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ | |||
| grantObjectList = activityGrantExportList.stream().map(e -> { | |||
| Map<String, Object> map = new HashMap<>(); | |||
| try { | |||
| Map<Long, Integer> 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); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoCashBac | |||
| @Autowired | |||
| private WxVtwoCashBackActivityMapper wxVtwoCashBackActivityMapper; | |||
| @Autowired | |||
| private WxVtwoCashBackAwardMapper wxVtwoCashBackAwardMapper; | |||
| @Autowired | |||
| private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | |||
| @@ -48,12 +54,36 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; | |||
| @Autowired | |||
| private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; | |||
| @Autowired | |||
| private WxVtwoCashBackAwardService wxVtwoCashBackAwardService; | |||
| @Autowired | |||
| private WxVtwoActivityMerchantService wxVtwoActivityMerchantService; | |||
| @Autowired | |||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||
| @Autowired | |||
| private WxVtwoCashBackGrantService wxVtwoCashBackGrantService; | |||
| @Autowired | |||
| private WxVtwoCashBackGrantAwardService wxVtwoCashBackGrantAwardService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantOrderService wxVtwoActivityGrantOrderService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService; | |||
| @Autowired | |||
| private ExcelService excelService; | |||
| @Override | |||
| public PageInfo<WxVtwoCashBackActivity> listAsPage(WxVtwoCashBackActivity cashBackActivity, Integer pageNum, Integer pageSize) { | |||
| handlerQuery(cashBackActivity); | |||
| @@ -129,6 +159,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac | |||
| @Override | |||
| @Transactional(rollbackFor = Exception.class) | |||
| public boolean saveOrUpdate(WxVtwoCashBackActivity cashBackActivity) { | |||
| handlerActivityRules(cashBackActivity); | |||
| Date now = new Date(); | |||
| if(cashBackActivity.getId() == null){ | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| @@ -153,6 +184,35 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac | |||
| } | |||
| wxVtwoActivityMerchantService.saveFromActivity(cashBackActivity,cashBackActivity.getId(),cashBackActivity.getMerchantIdList()); | |||
| } | |||
| updateSpecialTopicActivity(cashBackActivity); | |||
| return true; | |||
| } | |||
| private void handlerActivityRules(WxVtwoCashBackActivity cashBackActivity) { | |||
| if(cashBackActivity.getTaxDeductionRulesObject() != null){ | |||
| cashBackActivity.setTaxDeductionRules(JSONObject.toJSONString(cashBackActivity.getTaxDeductionRulesObject())); | |||
| } | |||
| } | |||
| private void updateSpecialTopicActivity(WxVtwoCashBackActivity cashBackActivity){ | |||
| WxVtwoSpecialTopicActivity specialTopicActivity = new WxVtwoSpecialTopicActivity(); | |||
| specialTopicActivity.updateTenantInfo(cashBackActivity); | |||
| specialTopicActivity.setActivityId(cashBackActivity.getId()); | |||
| specialTopicActivity.setActivityType(EnumOfflineActivityType.CASHBACK.getCode()); | |||
| specialTopicActivity.setActivityName(cashBackActivity.getName()); | |||
| specialTopicActivity.setActivityCreateDate(cashBackActivity.getCreateDate()); | |||
| specialTopicActivity.setActivityStartTime(cashBackActivity.getStartTime()); | |||
| specialTopicActivity.setActivityEndTime(cashBackActivity.getEndTime()); | |||
| specialTopicActivity.setActivityStatus(cashBackActivity.getStatus()); | |||
| specialTopicActivity.setUpdateDate(cashBackActivity.getUpdateDate()); | |||
| wxVtwoSpecialTopicActivityMapper.updateByActivity(specialTopicActivity); | |||
| } | |||
| @Override | |||
| public boolean updateById(WxVtwoCashBackActivity cashBackActivity) { | |||
| cashBackActivity.setUpdateDate(new Date()); | |||
| wxVtwoCashBackActivityMapper.updateById(cashBackActivity); | |||
| updateSpecialTopicActivity(cashBackActivity); | |||
| return true; | |||
| } | |||
| @@ -163,21 +223,111 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac | |||
| return null; | |||
| } | |||
| WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); | |||
| cashBackAwardQ.setTenantId(tenantId); | |||
| cashBackAwardQ.setActivityId(id); | |||
| List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); | |||
| if(StringUtils.isNotBlank(cashBackActivity.getTaxDeductionRules())){ | |||
| cashBackActivity.setTaxDeductionRulesObject(JSONObject.parseObject(cashBackActivity.getTaxDeductionRules(), WxVtwoActivityTaxDeductionRule.class)); | |||
| } | |||
| List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(id,tenantId); | |||
| Map<Integer, List<WxVtwoCashBackAward>> 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<WxVtwoActivityMerchant> 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<WxVtwoActivityOrder> 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<WxVtwoActivityOrder> 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<ExcelExportEntity> 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<WxVtwoActivityGrantExport> activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); | |||
| List<Map<String, Object>> grantObjectList = new ArrayList<>(); | |||
| if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ | |||
| grantObjectList = activityGrantExportList.stream().map(e -> { | |||
| Map<String, Object> map = new HashMap<>(); | |||
| try { | |||
| map = BeanUtils.toMap(e); | |||
| } catch (Exception ex) { | |||
| } | |||
| return map; | |||
| }).collect(toList()); | |||
| } | |||
| excelService.exportExcel(headList, grantObjectList, null, "返现活动发放明细", "返现活动发放明细.xlsx",true, response); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoCashBackAw | |||
| wxVtwoCashBackAwardMapper.insertList(awardList); | |||
| } | |||
| @Override | |||
| public List<WxVtwoCashBackAward> findActivityAwardList(Long activityId, String tenantId) { | |||
| WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); | |||
| cashBackAwardQ.setTenantId(tenantId); | |||
| cashBackAwardQ.setActivityId(activityId); | |||
| return wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); | |||
| } | |||
| @Override | |||
| public Map<Long, WxVtwoCashBackAward> findActivityAwardMap(Long activityId, String tenantId) { | |||
| List<WxVtwoCashBackAward> activityAwardList = this.findActivityAwardList(activityId, tenantId); | |||
| return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity())); | |||
| } | |||
| @Override | |||
| public List<Long> getAmountAwardIdList(Long activityId, String tenantId) { | |||
| WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); | |||
| cashBackAwardQ.setTenantId(tenantId); | |||
| cashBackAwardQ.setActivityId(activityId); | |||
| cashBackAwardQ.setModelType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||
| List<WxVtwoCashBackAward> amountAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); | |||
| if(amountAwardList != null && !amountAwardList.isEmpty()){ | |||
| return amountAwardList.stream().map(WxVtwoCashBackAward::getId).collect(Collectors.toList()); | |||
| } | |||
| return Collections.emptyList(); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoCashBackGrantAwardMapper, WxVtwoCashBackGrantAward> | |||
| implements WxVtwoCashBackGrantAwardService{ | |||
| @Autowired | |||
| private WxVtwoCashBackGrantAwardMapper wxVtwoCashBackGrantAwardMapper; | |||
| @Autowired | |||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||
| @Override | |||
| public void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList) { | |||
| List<WxVtwoCashBackGrantAward> grantAwardList = new ArrayList<>(); | |||
| BigDecimal cashBackTotal = BigDecimal.ZERO; | |||
| List<WxVtwoCashBackAward> 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<Integer, WxVtwoCashBackAward> 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<WxVtwoCashBackGrantAward> 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<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoCashBackGrantAward grantAward = handleStatisticsVo(statisticsVo); | |||
| return wxVtwoCashBackGrantAwardMapper.awardItemStatistics(grantAward); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoCashBackGrantMapper, WxVtwoCashBackGrant> | |||
| implements WxVtwoCashBackGrantService{ | |||
| @Autowired | |||
| private WxVtwoCashBackGrantMapper wxVtwoCashBackGrantMapper; | |||
| @Override | |||
| public void handleFromOrder(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant) { | |||
| activityGrant.setOrderList(orderList); | |||
| BigDecimal orderMoneySum = BigDecimal.ZERO; | |||
| List<String> lotteryNumList = new ArrayList<>(); | |||
| int lotteryCount = 0; | |||
| List<String> 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<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { | |||
| WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo); | |||
| return wxVtwoCashBackGrantMapper.activityAwardStatisticsChart(wxVtwoCashBackGrant); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoPrizeD | |||
| @Autowired | |||
| private WxVtwoPrizeDrawActivityMapper wxVtwoPrizeDrawActivityMapper; | |||
| @Autowired | |||
| private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper; | |||
| @Autowired | |||
| private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | |||
| @@ -53,12 +55,36 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; | |||
| @Autowired | |||
| private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; | |||
| @Autowired | |||
| private WxVtwoActivityAwardService wxVtwoActivityAwardService; | |||
| @Autowired | |||
| private WxVtwoActivityMerchantService wxVtwoActivityMerchantService; | |||
| @Autowired | |||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantService wxVtwoActivityGrantService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantOrderService wxVtwoActivityGrantOrderService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; | |||
| @Autowired | |||
| private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService; | |||
| @Autowired | |||
| private ExcelService excelService; | |||
| @Override | |||
| public PageInfo<WxVtwoPrizeDrawActivity> listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) { | |||
| @@ -159,6 +185,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||
| } | |||
| wxVtwoActivityMerchantService.saveFromActivity(prizeDrawActivity,prizeDrawActivity.getId(),prizeDrawActivity.getMerchantIdList()); | |||
| } | |||
| updateSpecialTopicActivity(prizeDrawActivity); | |||
| return true; | |||
| } | |||
| @@ -171,30 +198,213 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||
| } | |||
| } | |||
| private void updateSpecialTopicActivity(WxVtwoPrizeDrawActivity prizeDrawActivity){ | |||
| WxVtwoSpecialTopicActivity specialTopicActivity = new WxVtwoSpecialTopicActivity(); | |||
| specialTopicActivity.updateTenantInfo(prizeDrawActivity); | |||
| specialTopicActivity.setActivityId(prizeDrawActivity.getId()); | |||
| specialTopicActivity.setActivityType(EnumOfflineActivityType.LOTTERY_DRAW.getCode()); | |||
| specialTopicActivity.setActivityName(prizeDrawActivity.getName()); | |||
| specialTopicActivity.setActivityCreateDate(prizeDrawActivity.getCreateDate()); | |||
| specialTopicActivity.setActivityStartTime(prizeDrawActivity.getStartTime()); | |||
| specialTopicActivity.setActivityEndTime(prizeDrawActivity.getEndTime()); | |||
| specialTopicActivity.setActivityStatus(prizeDrawActivity.getStatus()); | |||
| specialTopicActivity.setUpdateDate(prizeDrawActivity.getUpdateDate()); | |||
| wxVtwoSpecialTopicActivityMapper.updateByActivity(specialTopicActivity); | |||
| } | |||
| @Override | |||
| public boolean updateById(WxVtwoPrizeDrawActivity prizeDrawActivity) { | |||
| prizeDrawActivity.setUpdateDate(new Date()); | |||
| wxVtwoPrizeDrawActivityMapper.updateById(prizeDrawActivity); | |||
| updateSpecialTopicActivity(prizeDrawActivity); | |||
| return true; | |||
| } | |||
| @Override | |||
| public WxVtwoPrizeDrawActivity getInfoById(Long id, String tenantId) { | |||
| WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityMapper.selectById(id, tenantId); | |||
| if (prizeDrawActivity == null) { | |||
| return null; | |||
| } | |||
| if(StringUtil.isNotBlank(prizeDrawActivity.getAmountRules())){ | |||
| if(StringUtils.isNotBlank(prizeDrawActivity.getAmountRules())){ | |||
| prizeDrawActivity.setAmountRulesObject(JSONObject.parseObject(prizeDrawActivity.getAmountRules(), WxVtwoActivityRule.class)); | |||
| } | |||
| if(StringUtil.isNotBlank(prizeDrawActivity.getRelatedRules())){ | |||
| if(StringUtils.isNotBlank(prizeDrawActivity.getRelatedRules())){ | |||
| prizeDrawActivity.setRelatedRulesObject(JSONObject.parseArray(prizeDrawActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class)); | |||
| } | |||
| WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); | |||
| activityAwardQ.setTenantId(tenantId); | |||
| activityAwardQ.setActivityId(id); | |||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); | |||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); | |||
| prizeDrawActivity.setAwardList(activityAwardList); | |||
| if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(prizeDrawActivity.getMerchantRule())){ | |||
| List<WxVtwoActivityMerchant> 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<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); | |||
| wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); | |||
| activityGrant.setAwardList(prizeDrawActivity.getAwardList()); | |||
| int limitCount = 0; | |||
| List<WxVtwoActivityGrantRule> 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<Integer, WxVtwoActivityRuleDetail> 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<WxVtwoActivityOrder> 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<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); | |||
| if(activityAwardList == null || activityAwardList.isEmpty()){ | |||
| throw new MallinkException(Result.ERROR,"未查询到活动"); | |||
| } | |||
| List<ExcelExportEntity> 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<WxVtwoActivityGrantExport> activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); | |||
| List<Map<String, Object>> grantObjectList = new ArrayList<>(); | |||
| if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ | |||
| grantObjectList = activityGrantExportList.stream().map(e -> { | |||
| Map<String, Object> map = new HashMap<>(); | |||
| try { | |||
| Map<Long, Integer> 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); | |||
| } | |||
| } | |||
| @@ -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<WxVtwoSpecialTopicActivityMapper, WxVtwoSpecialTopicActivity> | |||
| implements WxVtwoSpecialTopicActivityService{ | |||
| @Autowired | |||
| private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; | |||
| @Override | |||
| public void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List<WxVtwoSpecialTopicActivity> 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); | |||
| } | |||
| } | |||
| @@ -12,18 +12,14 @@ | |||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | |||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||
| <result property="orderId" column="order_id" jdbcType="BIGINT"/> | |||
| <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/> | |||
| <result property="modeType" column="mode_type" jdbcType="SMALLINT"/> | |||
| <result property="minAmount" column="min_amount" jdbcType="DECIMAL"/> | |||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | |||
| <result property="relatedCount" column="related_count" jdbcType="INTEGER"/> | |||
| <result property="awardId" column="award_id" jdbcType="BIGINT"/> | |||
| <result property="awardGrade" column="award_grade" jdbcType="INTEGER"/> | |||
| <result property="awardName" column="award_name" jdbcType="VARCHAR"/> | |||
| <result property="awardPrice" column="award_price" jdbcType="DECIMAL"/> | |||
| <result property="awardCount" column="award_count" jdbcType="INTEGER"/> | |||
| <result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/> | |||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | |||
| <result property="shareRule" column="share_rule" jdbcType="SMALLINT"/> | |||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="status" column="status" jdbcType="SMALLINT"/> | |||
| @@ -34,11 +30,10 @@ | |||
| <sql id="allColumns"> | |||
| 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 | |||
| </sql> | |||
| @@ -69,6 +64,14 @@ | |||
| and `award_id` = #{awardId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| </if> | |||
| @@ -91,4 +94,50 @@ | |||
| select <include refid="allColumns" /> from wx_vtwo_activity_grant_award | |||
| where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <insert id="insertList" parameterType="java.util.List"> | |||
| 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 | |||
| <foreach collection="grantAwardList" item="item" index="index" separator=","> | |||
| (#{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}) | |||
| </foreach> | |||
| </insert> | |||
| <select id="activityAwardCountStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantAward" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics"> | |||
| SELECT | |||
| IFNULL(sum(award_count),0) as 'awardCount', | |||
| IFNULL(sum(grant_price),0) as 'awardPrice' | |||
| FROM wx_vtwo_activity_grant_award | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="activityAwardCountStatisticsChart" parameterType="com.iformall.domain.po.WxVtwoActivityGrantAward" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics"> | |||
| SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| IFNULL(sum(award_count),0) as 'awardCount', | |||
| IFNULL(sum(grant_price),0) as 'awardPrice' | |||
| FROM wx_vtwo_activity_grant_award | |||
| <include refid="dynamicWhereConditions" /> | |||
| group by xTime | |||
| </select> | |||
| <select id="awardItemStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantAward" resultType="com.iformall.domain.vo.WxVtwoAwardGrantStatistics"> | |||
| SELECT award_id as 'awardId', | |||
| IFNULL(sum(award_count),0) as 'awardCount', | |||
| IFNULL(sum(grant_price),0) as 'awardPrice' | |||
| FROM wx_vtwo_activity_grant_award | |||
| <include refid="dynamicWhereConditions" /> | |||
| group by award_id | |||
| </select> | |||
| </mapper> | |||
| @@ -9,6 +9,8 @@ | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="activityType" column="activity_type" jdbcType="SMALLINT"/> | |||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | |||
| <result property="orderId" column="order_id" jdbcType="BIGINT"/> | |||
| <result property="orderNo" column="order_no" jdbcType="VARCHAR"/> | |||
| <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/> | |||
| @@ -21,11 +23,6 @@ | |||
| <result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/> | |||
| <result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="VARCHAR"/> | |||
| <result property="orderCreateTime" column="order_create_time" jdbcType="TIMESTAMP"/> | |||
| <result property="orderAuditStatus" column="order_audit_status" jdbcType="INTEGER"/> | |||
| <result property="orderAuditBy" column="order_audit_by" jdbcType="BIGINT"/> | |||
| <result property="orderAuditName" column="order_audit_name" jdbcType="VARCHAR"/> | |||
| <result property="orderAuditRemark" column="order_audit_remark" jdbcType="VARCHAR"/> | |||
| <result property="orderAuditTime" column="order_audit_time" jdbcType="TIMESTAMP"/> | |||
| <result property="vipNum" column="vip_num" jdbcType="VARCHAR"/> | |||
| <result property="cusName" column="cus_name" jdbcType="VARCHAR"/> | |||
| <result property="cusPhone" column="cus_phone" jdbcType="VARCHAR"/> | |||
| @@ -55,12 +52,11 @@ | |||
| <sql id="allColumns"> | |||
| 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 @@ | |||
| <if test=" null != activityId "> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityType "> | |||
| and `activity_type` = #{activityType} | |||
| </if> | |||
| <if test=" null != orderId "> | |||
| and `order_id` = #{orderId} | |||
| </if> | |||
| @@ -98,7 +97,8 @@ | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||
| <!--<if test=" null != sortColumns"> order by ${sortColumns} </if>--> | |||
| order by grant_time desc | |||
| </sql> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxVtwoActivityGrantExport" resultMap="BaseResultMap"> | |||
| @@ -110,4 +110,39 @@ | |||
| select <include refid="allColumns" /> from wx_vtwo_activity_grant_export | |||
| where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <insert id="insertList" parameterType="java.util.List"> | |||
| 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 | |||
| <foreach collection="grantExportList" item="item" index="index" separator=","> | |||
| (#{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}) | |||
| </foreach> | |||
| </insert> | |||
| </mapper> | |||
| @@ -9,6 +9,7 @@ | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="activityType" column="activity_type" jdbcType="SMALLINT"/> | |||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | |||
| <result property="orderMoneySum" column="order_money_sum" jdbcType="DECIMAL"/> | |||
| <result property="orderCount" column="order_count" jdbcType="INTEGER"/> | |||
| @@ -29,7 +30,7 @@ | |||
| <sql id="allColumns"> | |||
| 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 @@ | |||
| <if test=" null != activityId "> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityType "> | |||
| and `activity_type` = #{activityType} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| @@ -76,4 +88,23 @@ | |||
| select <include refid="allColumns" /> from wx_vtwo_activity_grant | |||
| where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="activityAwardStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrant" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics"> | |||
| SELECT count(1) as 'grantCount', | |||
| IFNULL(sum(order_count),0) as 'orderCount', | |||
| IFNULL(sum(order_money_sum),0) as 'orderMoney' | |||
| FROM wx_vtwo_activity_grant | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="activityAwardStatisticsChart" parameterType="com.iformall.domain.po.WxVtwoActivityGrant" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics"> | |||
| SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| count(1) as 'grantCount', | |||
| IFNULL(sum(order_count),0) as 'orderCount', | |||
| IFNULL(sum(order_money_sum),0) as 'orderMoney' | |||
| FROM wx_vtwo_activity_grant | |||
| <include refid="dynamicWhereConditions" /> | |||
| group by xTime | |||
| </select> | |||
| </mapper> | |||
| @@ -9,6 +9,7 @@ | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="orderId" column="order_id" jdbcType="BIGINT"/> | |||
| <result property="isAmount" column="is_amount" jdbcType="SMALLINT"/> | |||
| <result property="status" column="status" jdbcType="SMALLINT"/> | |||
| @@ -16,8 +17,8 @@ | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| grant_id,order_id,is_amount, | |||
| status | |||
| grant_id,activity_id,order_id, | |||
| is_amount, status | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| @@ -34,6 +35,9 @@ | |||
| <if test=" null != grantId "> | |||
| and `grant_id` = #{grantId} | |||
| </if> | |||
| <if test=" null != activityId "> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != orderId "> | |||
| and `order_id` = #{orderId} | |||
| </if> | |||
| @@ -60,4 +64,17 @@ | |||
| select <include refid="allColumns" /> from wx_vtwo_activity_grant_order | |||
| where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <insert id="insertList" parameterType="java.util.List"> | |||
| insert into wx_vtwo_activity_grant_order | |||
| (id, | |||
| grant_id,activity_id,order_id, | |||
| is_amount) | |||
| values | |||
| <foreach collection="grantOrderList" item="item" index="index" separator=","> | |||
| (#{item.id,jdbcType=BIGINT}, | |||
| #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT}, | |||
| #{item.isAmount,jdbcType=SMALLINT}) | |||
| </foreach> | |||
| </insert> | |||
| </mapper> | |||
| @@ -64,10 +64,43 @@ | |||
| and `award_id` = #{awardId} | |||
| </if> | |||
| <if test=" null != merchantId "> | |||
| and `merchant_id` = #{merchantId} | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != activityIdList "> | |||
| and activity_id in | |||
| <foreach collection="activityIdList" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != merchantIdList "> | |||
| and merchant_id in | |||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||
| #{midItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != awardIdList "> | |||
| and award_id in | |||
| <foreach collection="awardIdList" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| @@ -92,4 +125,74 @@ | |||
| FROM wx_vtwo_activity_grant_settlement | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <insert id="insertList" parameterType="java.util.List"> | |||
| 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 | |||
| <foreach collection="settlementList" item="item" index="index" separator=","> | |||
| (#{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}) | |||
| </foreach> | |||
| </insert> | |||
| <select id="settlementStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement" | |||
| resultType="com.iformall.domain.vo.WxVtwoSettlementStatistics"> | |||
| SELECT | |||
| IFNULL(sum(order_grant_price),0) as 'grantPrice', | |||
| count(DISTINCT order_id) as 'orderCount', | |||
| count(DISTINCT merchant_id) as 'merchantCount', | |||
| IFNULL(sum(order_mall_share_price),0) as 'mallPrice', | |||
| IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice' | |||
| FROM wx_vtwo_activity_grant_settlement | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="merchantSettlementStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement" | |||
| resultType="com.iformall.domain.vo.WxVtwoMerchantSettlementStatistics"> | |||
| SELECT | |||
| merchant_id as 'merchantId', | |||
| count(DISTINCT order_id) as 'orderCount', | |||
| IFNULL(sum(order_grant_price),0) as 'grantPrice', | |||
| IFNULL(sum(order_mall_share_price),0) as 'mallPrice', | |||
| IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice' | |||
| FROM wx_vtwo_activity_grant_settlement | |||
| <include refid="dynamicWhereConditions" /> | |||
| group by merchant_id | |||
| </select> | |||
| <select id="activityAwardStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement" | |||
| resultType="com.iformall.domain.vo.WxVtwoAwardStatistics"> | |||
| SELECT count(DISTINCT grant_id) as 'grantCount', | |||
| IFNULL(sum(order_grant_price),0) as 'awardPrice', | |||
| IFNULL(sum(order_mall_share_price),0) as 'mallPrice', | |||
| IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice' | |||
| FROM wx_vtwo_activity_grant_settlement | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="activityAwardStatisticsChart" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement" | |||
| resultType="com.iformall.domain.vo.WxVtwoAwardStatistics"> | |||
| SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| count(DISTINCT grant_id) as 'grantCount', | |||
| IFNULL(sum(order_grant_price),0) as 'awardPrice', | |||
| IFNULL(sum(order_mall_share_price),0) as 'mallPrice', | |||
| IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice' | |||
| FROM wx_vtwo_activity_grant_settlement | |||
| <include refid="dynamicWhereConditions" /> | |||
| group by xTime | |||
| </select> | |||
| </mapper> | |||
| @@ -21,7 +21,7 @@ | |||
| <result property="unionName" column="union_name" jdbcType="VARCHAR"/> | |||
| <result property="fromOrderId" column="from_order_id" jdbcType="BIGINT"/> | |||
| <result property="orderNo" column="order_no" jdbcType="VARCHAR"/> | |||
| <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/> | |||
| <result property="orderMoney" column="order_money" jdbcType="DECIMAL"/> | |||
| <result property="merchantId" column="merchant_id" jdbcType="BIGINT"/> | |||
| <result property="businessId" column="business_id" jdbcType="INTEGER"/> | |||
| <result property="lotteryNum" column="lottery_num" jdbcType="VARCHAR"/> | |||
| @@ -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 id="auditStatusStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultType="com.iformall.domain.vo.WxVtwoActivityOrderStatistics"> | |||
| SELECT audit_status as 'auditStatus', | |||
| count(1) as 'count', | |||
| IFNULL(sum(order_amount),0) as 'sumAmount' | |||
| IFNULL(sum(order_money),0) as 'sumMoney' | |||
| FROM wx_vtwo_activity_order | |||
| <include refid="dynamicWhereConditions" /> | |||
| GROUP BY audit_status | |||
| @@ -188,7 +188,7 @@ | |||
| <select id="getCountStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultType="com.iformall.domain.vo.WxVtwoOrderCountStatistics"> | |||
| 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 | |||
| <include refid="dynamicWhereConditions" /> | |||
| @@ -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 | |||
| <include refid="dynamicWhereConditions" /> | |||
| @@ -206,7 +206,7 @@ | |||
| <select id="getBusinessStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultType="com.iformall.domain.vo.WxVtwoOrderBusinessStatistics"> | |||
| select business_id businessId, | |||
| count(1) businessCount, | |||
| IFNULL(sum(order_amount),0) sumAmount | |||
| IFNULL(sum(order_money),0) orderMoney | |||
| from wx_vtwo_activity_order | |||
| <include refid="dynamicWhereConditions" /> | |||
| group by business_id | |||
| @@ -219,7 +219,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, | |||
| @@ -231,7 +231,7 @@ | |||
| #{item.realCusName,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.fromOrderId,jdbcType=BIGINT}, | |||
| #{item.orderNo,jdbcType=VARCHAR},#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT}, | |||
| #{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT}, | |||
| #{item.businessId,jdbcType=INTEGER},#{item.lotteryNum,jdbcType=VARCHAR},#{item.lotteryCount,jdbcType=INTEGER}, | |||
| #{item.anniversaryLotteryNum,jdbcType=VARCHAR},#{item.auditStatus,jdbcType=INTEGER},#{item.auditRemark,jdbcType=VARCHAR}, | |||
| #{item.auditBy,jdbcType=BIGINT},#{item.auditTime,jdbcType=TIMESTAMP},#{item.increasedPoints,jdbcType=INTEGER}, | |||
| @@ -250,4 +250,13 @@ | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| </update> | |||
| <select id="findAuditDetailList" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultMap="BaseResultMap"> | |||
| select | |||
| id,tenant_id,parent_tenant_id, | |||
| audit_status,audit_remark, | |||
| audit_by,audit_time | |||
| from wx_vtwo_activity_order | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| </mapper> | |||
| @@ -54,6 +54,14 @@ | |||
| and `credit_on_off` = #{creditOnOff} | |||
| </if> | |||
| <!-- 未过期 --> | |||
| <if test=" 0 == validStatus"> | |||
| and end_time >= now() | |||
| </if> | |||
| <!-- 已过期 --> | |||
| <if test=" 1 == validStatus"> | |||
| and end_time <= now() | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| </if> | |||
| @@ -76,4 +84,30 @@ | |||
| select <include refid="allColumns" /> from wx_vtwo_activity_special_topic | |||
| where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="selectCreditCount" parameterType="com.iformall.domain.po.WxVtwoActivitySpecialTopic" resultType="integer"> | |||
| select count(1) from wx_vtwo_activity_special_topic | |||
| where credit_on_off = #{creditOnOff} | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != id"> | |||
| and `id` != #{id} | |||
| </if> | |||
| and ((`start_time` <= #{startTime} and `end_time` >= #{startTime}) | |||
| or (`start_time` <= #{endTime} and `end_time` >= #{endTime})) | |||
| </select> | |||
| <select id="selectCreditOne" parameterType="java.util.HashMap" resultType="com.iformall.domain.po.WxVtwoActivitySpecialTopic"> | |||
| select <include refid="allColumns" /> from wx_vtwo_activity_special_topic | |||
| where `tenant_id` = #{tenantId} | |||
| and credit_on_off = #{creditOnOff} | |||
| and `start_time` <= #{orderDate} | |||
| and `end_time` >= #{orderDate} | |||
| and `status` = #{status} | |||
| limit 1 | |||
| </select> | |||
| </mapper> | |||
| @@ -14,7 +14,7 @@ | |||
| <result property="amountModel" column="amount_model" jdbcType="SMALLINT"/> | |||
| <result property="businessOrderLimit" column="business_order_limit" jdbcType="INTEGER"/> | |||
| <result property="relatedModel" column="related_model" jdbcType="SMALLINT"/> | |||
| <result property="cashBackLimit" column="cash_back_limit" jdbcType="INTEGER"/> | |||
| <result property="cashBackLimit" column="cash_back_limit" jdbcType="DECIMAL"/> | |||
| <result property="cashBackRule" column="cash_back_rule" jdbcType="SMALLINT"/> | |||
| <result property="taxDeductionRules" column="tax_deduction_rules" jdbcType="VARCHAR"/> | |||
| <result property="merchantRule" column="merchant_rule" jdbcType="SMALLINT"/> | |||