From dfc21a4bc63d287db85a0ec5cf88401189022331 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 24 May 2025 01:24:12 +0800 Subject: [PATCH] //activity v.2 --- .../market/WxVtwoActivityOrderController.java | 155 +++++++++ .../WxOfflineActivityRecordController.java | 202 +++++------ .../WxVtwoActivityOrderController.java | 106 ++++++ .../domain/po/WxVtwoActivityOrder.java | 54 ++- .../vo/WxVtwoActivityOrderStatistics.java | 2 +- .../vo/WxVtwoOrderBusinessStatistics.java | 2 +- .../domain/vo/WxVtwoOrderCountStatistics.java | 2 +- .../WxVtwoActivitySpecialTopicMapper.java | 3 + .../WxVtwoSpecialTopicActivityMapper.java | 2 + .../WxLegionActivityOfflineConfigService.java | 14 +- .../service/WxVtwoActivityOrderService.java | 26 ++ .../WxVtwoActivitySpecialTopicService.java | 6 + ...egionActivityOfflineConfigServiceImpl.java | 127 ++++--- .../WxLegionActivityOrderServiceImpl.java | 17 +- .../impl/WxLegionActivityServiceImpl.java | 11 +- .../impl/WxVtwoActivityOrderServiceImpl.java | 323 +++++++++++++++++- ...WxVtwoActivitySpecialTopicServiceImpl.java | 11 + .../WxVtwoAmountGiftActivityServiceImpl.java | 32 +- .../WxVtwoCashBackActivityServiceImpl.java | 26 ++ .../WxVtwoPrizeDrawActivityServiceImpl.java | 31 +- .../mapper/WxVtwoActivityOrderMapper.xml | 16 +- .../WxVtwoActivitySpecialTopicMapper.xml | 3 +- .../WxVtwoSpecialTopicActivityMapper.xml | 25 ++ 23 files changed, 1005 insertions(+), 191 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java create mode 100644 mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java new file mode 100644 index 000000000..3b1e07c6d --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java @@ -0,0 +1,155 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.service.WxVtwoActivityOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/activityOrder") +@Api(description = "线下活动登记相关接口") +public class WxVtwoActivityOrderController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxVtwoActivityOrder activityOrder, Integer pageNum, Integer pageSize) { + if (null == activityOrder) activityOrder = new WxVtwoActivityOrder(); + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxVtwoActivityOrderService.listAsPage(activityOrder, pageNum, pageSize); + + return new ResultData(page); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxVtwoActivityOrder activityOrder) { + if(activityOrder.getId() == null){ + return new ResultData(Result.ERROR,"id不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + wxVtwoActivityOrderService.saveOrUpdate(activityOrder); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取待审批数量") + @GetMapping("waitAudiCount") + public ResultData waitAudiCount() { + Integer waitAudiCount = wxVtwoActivityOrderService.getWaitAudiCount(getTenantInfo()); + return new ResultData(waitAudiCount); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("导出") + @GetMapping("/export") + public void export(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + if (null == activityOrder) activityOrder = new WxVtwoActivityOrder(); + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("审核通过") + @PostMapping("audiPass") + public ResultData audiPass(@RequestBody WxVtwoActivityOrder activityOrder) { + + if(activityOrder.getId() == null){ + return new ResultData(Result.ERROR,"id 不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId()); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("审核驳回") + @PostMapping("audtFail") + public ResultData audtFail(@RequestBody WxVtwoActivityOrder activityOrder) { + if(activityOrder.getId() == null){ + return new ResultData(Result.ERROR,"id 不能为空"); + } + + if(StringUtils.isBlank(activityOrder.getAuditRemark())){ + return new ResultData(Result.ERROR,"驳回意见不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode()); + wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId()); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("失效") + @PostMapping("invalid") + public ResultData invalid(@RequestBody WxVtwoActivityOrder activityOrder) { + if(activityOrder == null){ + return new ResultData(Result.ERROR,"id 不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.INVALID.getCode()); + wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId()); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderService.getInfoById(id, tenantInfo.getTenantId()); + return new ResultData(activityOrder); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("订单相关统计") + @GetMapping("statistics") + public ResultData statistics() { + Map statisticsMap = wxVtwoActivityOrderService.orderStatistics(getTenantInfo()); + return new ResultData(statisticsMap); + } + +} diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java index 67ab6e953..363fe1e6f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java @@ -1,101 +1,101 @@ -package com.iformall.controller; - -import com.github.pagehelper.PageInfo; -import com.iformall.common.Result; -import com.iformall.common.ResultData; -import com.iformall.domain.po.WxOfflineActivityRecord; -import com.iformall.domain.po.base.BaseEntity.SortField; -import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityRecordStatus; -import com.iformall.exception.MallinkException; -import com.iformall.service.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * @author alascor - * - */ -@RestController -@RequestMapping("/api/offlineRecord") -@Api(description = "线下活动登记相关接口") -public class WxOfflineActivityRecordController extends BaseController { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Autowired - private WxOfflineActivityRecordService wxOfflineActivityRecordService; - - - @ApiOperation("分页列表接口") - @GetMapping("list") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), - @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { - if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); - TenantEntity tenantInfo = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantInfo); - wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); - wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); - final PageInfo page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); - return new ResultData(page); - } - - @ApiOperation("新增修改接口") - @PostMapping("saveOrUpdate") - public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { - if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ - return new ResultData(Result.ERROR,"客户手机号不能为空"); - } - if (null == wxOfflineActivityRecord.getOrderMoney() ) { - return new ResultData(Result.ERROR,"订单金额不能为空"); - } - TenantEntity tenantEntity = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantEntity); - - if(wxOfflineActivityRecord.getId() != null){ - WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId()); - if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ - throw new MallinkException(Result.ERROR,"订单状态不允许修改"); - } - wxOfflineActivityRecord.setAuditRemark(""); - } - wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); - wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); - wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); - wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord); - return new ResultData(); - } - - @ApiOperation("查询当前信息详情") - @GetMapping("getInfoById") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) - public ResultData getInfoById(Long id) { - TenantEntity tenantInfo = getTenantInfo(); - WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId()); - return new ResultData(activity); - } - - @ApiOperation("查询当前信息统计") - @GetMapping("statistics") - public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { - TenantEntity tenantInfo = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantInfo); - wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); - Map statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); - return new ResultData(statisticsMap); - } - - - -} +//package com.iformall.controller; +// +//import com.github.pagehelper.PageInfo; +//import com.iformall.common.Result; +//import com.iformall.common.ResultData; +//import com.iformall.domain.po.WxOfflineActivityRecord; +//import com.iformall.domain.po.base.BaseEntity.SortField; +//import com.iformall.domain.po.base.TenantEntity; +//import com.iformall.enums.EnumOfflineActivityRecordStatus; +//import com.iformall.exception.MallinkException; +//import com.iformall.service.*; +//import io.swagger.annotations.Api; +//import io.swagger.annotations.ApiImplicitParam; +//import io.swagger.annotations.ApiImplicitParams; +//import io.swagger.annotations.ApiOperation; +//import org.apache.commons.lang3.StringUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +///** +// * @author alascor +// * +// */ +//@RestController +//@RequestMapping("/api/offlineRecord") +//@Api(description = "线下活动登记相关接口") +//public class WxOfflineActivityRecordController extends BaseController { +// private final Logger logger = LoggerFactory.getLogger(this.getClass()); +// +// @Autowired +// private WxOfflineActivityRecordService wxOfflineActivityRecordService; +// +// +// @ApiOperation("分页列表接口") +// @GetMapping("list") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), +// @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) +// public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { +// if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); +// TenantEntity tenantInfo = getTenantInfo(); +// wxOfflineActivityRecord.updateTenantInfo(tenantInfo); +// wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); +// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); +// final PageInfo page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); +// return new ResultData(page); +// } +// +// @ApiOperation("新增修改接口") +// @PostMapping("saveOrUpdate") +// public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { +// if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ +// return new ResultData(Result.ERROR,"客户手机号不能为空"); +// } +// if (null == wxOfflineActivityRecord.getOrderMoney() ) { +// return new ResultData(Result.ERROR,"订单金额不能为空"); +// } +// TenantEntity tenantEntity = getTenantInfo(); +// wxOfflineActivityRecord.updateTenantInfo(tenantEntity); +// +// if(wxOfflineActivityRecord.getId() != null){ +// WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId()); +// if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ +// throw new MallinkException(Result.ERROR,"订单状态不允许修改"); +// } +// wxOfflineActivityRecord.setAuditRemark(""); +// } +// wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); +// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); +// wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); +// wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord); +// return new ResultData(); +// } +// +// @ApiOperation("查询当前信息详情") +// @GetMapping("getInfoById") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) +// public ResultData getInfoById(Long id) { +// TenantEntity tenantInfo = getTenantInfo(); +// WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId()); +// return new ResultData(activity); +// } +// +// @ApiOperation("查询当前信息统计") +// @GetMapping("statistics") +// public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { +// TenantEntity tenantInfo = getTenantInfo(); +// wxOfflineActivityRecord.updateTenantInfo(tenantInfo); +// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); +// Map statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); +// return new ResultData(statisticsMap); +// } +// +// +// +//} diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java new file mode 100644 index 000000000..e18377c39 --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java @@ -0,0 +1,106 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; +import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumOfflineActivityRecordStatus; +import com.iformall.exception.MallinkException; +import com.iformall.service.WxVtwoActivityOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/api/offlineRecord") +@Api(description = "线下活动订单相关接口") +public class WxVtwoActivityOrderController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxVtwoActivityOrder activityOrder, Integer pageNum, Integer pageSize) { + if (null == activityOrder) activityOrder = new WxVtwoActivityOrder(); + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setSortColumns(SortField.CreateDate_DESC); + activityOrder.setMerchantId(getLoginBUser().getMerchantId()); + final PageInfo page = wxVtwoActivityOrderService.listAsPage(activityOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxVtwoActivityOrder activityOrder) { + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"客户手机号不能为空"); + } + if (null == activityOrder.getOrderMoney() ) { + return new ResultData(Result.ERROR,"订单金额不能为空"); + } + TenantEntity tenantEntity = getTenantInfo(); + activityOrder.updateTenantInfo(tenantEntity); + + if(activityOrder.getId() != null){ + WxVtwoActivityOrder record = wxVtwoActivityOrderService.getById(activityOrder.getId(),activityOrder.getTenantId()); + if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ + throw new MallinkException(Result.ERROR,"订单状态不允许修改"); + } + activityOrder.setAuditRemark(""); + } + activityOrder.setCreateBy(getMerchantBUserId()); + activityOrder.setMerchantId(getLoginBUser().getMerchantId()); + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + wxVtwoActivityOrderService.saveOrUpdate(activityOrder); + return new ResultData(); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询当前信息详情") + @GetMapping("getInfoById") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getInfoById(Long id) { + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderService.getById(id, tenantInfo.getTenantId()); + return new ResultData(activityOrder); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("查询当前信息统计") + @GetMapping("statistics") + public ResultData statisticsCount(@ModelAttribute WxVtwoActivityOrder activityOrder) { + TenantEntity tenantInfo = getTenantInfo(); + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setMerchantId(getLoginBUser().getMerchantId()); + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + return new ResultData(statisticsMap); + } + + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java index 8fdf8b65f..762c88cff 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java @@ -1,6 +1,8 @@ package com.iformall.domain.po; import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -34,12 +36,14 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 会员卡号 */ + @Excel(name = "Vip卡号", width = 20, orderNum = "17") @TableField(value = "vip_num") private String vipNum; /** * 客户姓名 */ + @Excel(name = "客户姓名", width = 20, orderNum = "15") @TableField(value = "cus_name") private String cusName; @@ -52,6 +56,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 客户电话 */ + @Excel(name = "客户电话", width = 20, orderNum = "16") @TableField(value = "cus_phone") private String cusPhone; @@ -64,6 +69,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 客户地址 */ + @Excel(name = "订单地址", width = 20, orderNum = "4") @TableField(value = "cus_address") private String cusAddress; @@ -76,6 +82,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * */ + @Excel(name = "所属军团", width = 20, orderNum = "18") @TableField(value = "legion_name") private String legionName; @@ -88,6 +95,7 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * */ + @Excel(name = "所属联盟", width = 20, orderNum = "19") @TableField(value = "union_name") private String unionName; @@ -100,14 +108,16 @@ public class WxVtwoActivityOrder extends TenantEntity { /** * 订单号 */ + @Excel(name = "订单号", width = 20, orderNum = "1") @TableField(value = "order_no") private String orderNo; /** * 订单金额 */ - @TableField(value = "order_amount") - private BigDecimal orderAmount; + @Excel(name = "订单金额(元)", width = 20, orderNum = "2") + @TableField(value = "order_money") + private BigDecimal orderMoney; /** * 商户编号 @@ -115,10 +125,10 @@ public class WxVtwoActivityOrder extends TenantEntity { @TableField(value = "merchant_id") private Long merchantId; -// @Excel(name = "商户名称", width = 20, orderNum = "6") + @Excel(name = "商户名称", width = 20, orderNum = "5") @TableField(exist = false) private String merchantName; -// @Excel(name="商铺号",width = 20,orderNum = "7") + @Excel(name="商铺号",width = 20,orderNum = "6") @TableField(exist = false) private String shopNumber; @@ -132,6 +142,7 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "business_id") private Integer businessId; + @Excel(name="业态",width = 20,orderNum = "7") @TableField(exist = false) private String businessName; @@ -140,28 +151,54 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + }catch(Exception e){} + } + return lotteryNumList; + } + + @Excel(name = "抽奖券编码", width = 20, orderNum = "8") + @TableField(exist = false) + private String lotteryNumStr; + public String getLotteryNumStr() { + if(this.getLotteryNumList() != null && !lotteryNumList.isEmpty()){ + lotteryNumStr = String.join(",", lotteryNumList); + } + return lotteryNumStr; + } /** * 抽奖券数量 */ + @Excel(name = "抽奖券数量", width = 20, orderNum = "9") @TableField(value = "lottery_count") private Integer lotteryCount; /** * 周年庆抽奖编码 */ + @Excel(name = "周年庆抽奖编码", width = 20, orderNum = "10") @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; /** * 审批状态 */ + @Excel(name = "订单状态", width = 20, orderNum = "3", replace = {"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"}) @TableField(value = "audit_status") private Integer auditStatus; /** * 审批意见 */ + @Excel(name = "审核意见", width = 20, orderNum = "14") @TableField(value = "audit_remark") private String auditRemark; @@ -170,16 +207,21 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "audit_by") private Long auditBy; + @Excel(name = "审核人", width = 20, orderNum = "12") + @TableField(exist = false) + private String auditByName; /** * 审核时间 */ + @Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13") @TableField(value = "audit_time") private Date auditTime; /** * 积分变动值 */ + @Excel(name = "积分变动值", width = 20, orderNum = "20") @TableField(value = "increased_points") private Integer increasedPoints; @@ -188,13 +230,11 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "create_by") private Long createBy; - @Excel(name = "审核人", width = 20, orderNum = "14") - @TableField(exist = false) - private String auditByName; /** * 创建时间 */ + @Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "11") @TableField(value = "create_date") private Date createDate; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java index e20663f3a..946d03bb7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java @@ -12,5 +12,5 @@ public class WxVtwoActivityOrderStatistics implements Serializable { private Integer auditStatus; private Integer count; - private BigDecimal sumAmount; + private BigDecimal sumMoney; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java index 5b4027e2b..8a6f74128 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java @@ -14,7 +14,7 @@ public class WxVtwoOrderBusinessStatistics implements Serializable { private String businessName; private Integer businessCount; - private BigDecimal sumAmount; + private BigDecimal sumMoney; private Double moneyRatio; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java index 9e93a76d0..b5a592b39 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java @@ -14,6 +14,6 @@ public class WxVtwoOrderCountStatistics implements Serializable { private Integer userCount; private Integer orderCount; - private BigDecimal sumAmount; + private BigDecimal sumMoney; private Integer merchantCount; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java index e11b15ffa..50c78ad88 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import io.lettuce.core.dynamic.annotation.Param; +import java.util.Date; import java.util.List; /** @@ -20,6 +21,8 @@ public interface WxVtwoActivitySpecialTopicMapper extends CommonMapper activityList); List findList(WxVtwoSpecialTopicActivity specialTopicActivity); + + void updateByActivity(WxVtwoSpecialTopicActivity specialTopicActivity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java b/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java index 57a1adf1f..adfc45dcb 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java @@ -1,12 +1,10 @@ package com.iformall.service; -import com.iformall.domain.po.WxLegionActivity; -import com.iformall.domain.po.WxLegionActivityOfflineConfig; +import com.iformall.domain.po.*; import com.baomidou.mybatisplus.extension.service.IService; -import com.iformall.domain.po.WxLegionActivityOrder; -import com.iformall.domain.po.WxOfflineActivity; import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -15,11 +13,13 @@ import java.util.List; */ public interface WxLegionActivityOfflineConfigService { - void handleOfflineConfig(WxLegionActivity wxLegionActivity); - - List getOfflineActivityList(WxLegionActivity wxLegionActivity); +// void handleOfflineConfig(WxLegionActivity wxLegionActivity); +// +// List getOfflineActivityList(WxLegionActivity wxLegionActivity); void syncOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder); void syncOfflineActivityRecord(List wxLegionActivityOrders); + + void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map legionConfigMap); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index 834e70850..150f686e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -1,7 +1,14 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxVtwoActivityOrder; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.base.TenantEntity; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -10,4 +17,23 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityOrderService extends IService { + PageInfo listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize); + + void handlerList(TenantEntity tenantEntity, List recordList); + + WxVtwoActivityOrder getById(Long id, String tenantId); + WxVtwoActivityOrder getInfoById(Long id, String tenantId); + + Map getStatistics(WxVtwoActivityOrder record); + + void auditRecord(WxVtwoActivityOrder record, Long userId); + + void saveCreditHistory(WxVtwoActivityOrder record); + + Map orderStatistics(TenantEntity tenantInfo); + + void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record); + + Integer getWaitAudiCount(TenantEntity tenantInfo); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java index 00f4d3a2a..793548b0b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java @@ -1,8 +1,12 @@ 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 java.util.Date; /** * @author xiaohu @@ -16,4 +20,6 @@ public interface WxVtwoActivitySpecialTopicService extends IService legionActivityOfflineConfigList = new ArrayList<>(); - for (WxOfflineActivity wxOfflineActivity : wxLegionActivity.getOfflineActivityList()) { - WxLegionActivityOfflineConfig wxLegionActivityOfflineConfig = new WxLegionActivityOfflineConfig(); - wxLegionActivityOfflineConfig.setId(idWorker.nextId()); - wxLegionActivityOfflineConfig.updateTenantInfo(wxLegionActivity); - wxLegionActivityOfflineConfig.setLegionActivityId(wxLegionActivity.getId()); - wxLegionActivityOfflineConfig.setOfflineActivityId(wxOfflineActivity.getId()); - legionActivityOfflineConfigList.add(wxLegionActivityOfflineConfig); - } + private WxVtwoActivityOrderService wxVtwoActivityOrderService; - wxLegionActivityOfflineConfigMapper.insertList(legionActivityOfflineConfigList); - } - - @Override - public List getOfflineActivityList(WxLegionActivity wxLegionActivity) { - - List OfflineActivityIds = wxLegionActivityOfflineConfigMapper.getOfflineActivityIds(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); - if(OfflineActivityIds == null || OfflineActivityIds.isEmpty()){ - return Collections.emptyList(); - } - WxOfflineActivity wxOfflineActivity = new WxOfflineActivity(); - wxOfflineActivity.updateTenantInfo(wxLegionActivity); - wxOfflineActivity.setIds(OfflineActivityIds); + @Autowired + private WxMerchantService wxMerchantService; - return wxOfflineActivityMapper.findList(wxOfflineActivity); - } +// @Override +// public void handleOfflineConfig(WxLegionActivity wxLegionActivity) { +// wxLegionActivityOfflineConfigMapper.deleteByLegionActivity(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); +// if(wxLegionActivity.getOfflineActivityList() == null || wxLegionActivity.getOfflineActivityList().isEmpty()){ +// return; +// } +// final IdWorker idWorker = IdWorker.get(); +// List legionActivityOfflineConfigList = new ArrayList<>(); +// for (WxOfflineActivity wxOfflineActivity : wxLegionActivity.getOfflineActivityList()) { +// WxLegionActivityOfflineConfig wxLegionActivityOfflineConfig = new WxLegionActivityOfflineConfig(); +// wxLegionActivityOfflineConfig.setId(idWorker.nextId()); +// wxLegionActivityOfflineConfig.updateTenantInfo(wxLegionActivity); +// wxLegionActivityOfflineConfig.setLegionActivityId(wxLegionActivity.getId()); +// wxLegionActivityOfflineConfig.setOfflineActivityId(wxOfflineActivity.getId()); +// legionActivityOfflineConfigList.add(wxLegionActivityOfflineConfig); +// } +// +// wxLegionActivityOfflineConfigMapper.insertList(legionActivityOfflineConfigList); +// } +// +// @Override +// public List getOfflineActivityList(WxLegionActivity wxLegionActivity) { +// +// List OfflineActivityIds = wxLegionActivityOfflineConfigMapper.getOfflineActivityIds(wxLegionActivity.getId(),wxLegionActivity.getTenantId()); +// if(OfflineActivityIds == null || OfflineActivityIds.isEmpty()){ +// return Collections.emptyList(); +// } +// WxOfflineActivity wxOfflineActivity = new WxOfflineActivity(); +// wxOfflineActivity.updateTenantInfo(wxLegionActivity); +// wxOfflineActivity.setIds(OfflineActivityIds); +// +// return wxOfflineActivityMapper.findList(wxOfflineActivity); +// } @Override @Transactional(rollbackFor = Exception.class) @@ -126,7 +126,6 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit } - private WxOfflineActivityRecord createOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder) { WxOfflineActivityRecord activityRecord = new WxOfflineActivityRecord(); activityRecord.updateTenantInfo(legionActivityOrder); @@ -155,6 +154,48 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit return activityRecord; } + @Override + public void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map legionConfigMap) { + WxVtwoActivityOrder order = new WxVtwoActivityOrder(); + order.updateTenantInfo(legionActivityOrder); + order.setFromUserId(user.getId()); + order.setVipNum(user.getVipNum()); + order.setCusName(legionActivityOrder.getCusName()); + order.setRealCusName(user.getName()); + order.setCusPhone(user.getPhone()); + order.setCusAddress(legionActivityOrder.getCusAddress()); + order.setLegionId(user.getLegionId()); + if(order.getLegionId() == null || order.getLegionId() == 0){ + order.setLegionName("无军团"); + }else{ + order.setLegionName(legionConfigMap.get(order.getLegionId())); + } + order.setUnionId(user.getUnionId()); + if(order.getUnionId() == null || order.getUnionId() == 0){ + order.setUnionName("无联盟"); + }else{ + order.setUnionName(legionConfigMap.get(order.getUnionId())); + } + order.setFromOrderId(legionActivityOrder.getId()); + order.setOrderNo(legionActivityOrder.getOrderNo()); + order.setOrderMoney(legionActivityOrder.getOrderMoney()); + order.setMerchantId(legionActivityOrder.getMerchantId()); + order.setLotteryNum(legionActivityOrder.getLotteryNum()); + order.setLotteryCount(legionActivityOrder.getLotteryCount()); + order.setAnniversaryLotteryNum(legionActivityOrder.getAnniversaryLotteryNum()); + order.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + order.setAuditRemark(legionActivityOrder.getAuditRemark()); + order.setAuditBy(legionActivityOrder.getAuditBy()); + order.setAuditTime(legionActivityOrder.getAuditTime()); + order.setCreateBy(legionActivityOrder.getCreateBy()); + order.setCreateDate(legionActivityOrder.getCreateDate()); + order.setUpdateDate(legionActivityOrder.getUpdateDate()); + + wxVtwoActivityOrderService.saveOrUpdate(order); + + wxVtwoActivityOrderService.saveCreditHistory(order); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java index 86825a626..059cc9e87 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java @@ -368,8 +368,15 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrder); if(upd == 1 && EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode().equals(wxLegionActivityOrder.getAuditStatus())){ + //同步订单 WxLegionActivityOrder legionActivityOrder = wxLegionActivityOrderMapper.selectById(wxLegionActivityOrder.getId(), wxLegionActivityOrder.getTenantId()); + + WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); + legionConfigQ.updateTenantInfo(legionActivityOrder); + legionConfigQ.setActivityId(legionActivityOrder.getActivityId()); + Map legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); + WxLegionActivityUser user = wxLegionActivityUserMapper.selectById(legionActivityOrder.getCusId(), legionActivityOrder.getTenantId()); legionActivityOrder.setCusPhone(user.getPhone()); legionActivityOrder.setCusVipNum(user.getVipNum()); @@ -382,7 +389,7 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe legionActivityOrder.setAuditTime(wxLegionActivityOrder.getAuditTime()); legionActivityOrder.setUpdateDate(wxLegionActivityOrder.getUpdateDate()); - wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(legionActivityOrder); + wxLegionActivityOfflineConfigService.syncOfflineActivityOrder(user,legionActivityOrder,legionConfigMap); } } @@ -701,6 +708,11 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe wxLegionActivityOrderUpd.setUpdateDate(now); Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrderUpd); + WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); + legionConfigQ.updateTenantInfo(syncOrders.get(0)); + legionConfigQ.setActivityId(syncOrders.get(0).getActivityId()); + Map legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); + List userIds = syncOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); WxLegionActivityUser userQ = new WxLegionActivityUser(); userQ.updateTenantInfo(tenantEntity); @@ -714,8 +726,9 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe legionActivityOrder.setAuditBy(userId); legionActivityOrder.setAuditTime(now); legionActivityOrder.setUpdateDate(now); + + wxLegionActivityOfflineConfigService.syncOfflineActivityOrder(user,legionActivityOrder,legionConfigMap); } - wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(syncOrders); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java index 690dda55f..6689ca46a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java @@ -48,11 +48,8 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ @Autowired private WxLegionActivityMerchantConfigService wxLegionActivityMerchantConfigService; - @Autowired - private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper; - - @Autowired - private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService; +// @Autowired +// private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService; @Autowired private WxLegionActivityOrderService wxLegionActivityOrderService; @@ -187,7 +184,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ wxLegionActivityMapper.updateById(wxLegionActivity); } //处理线下活动配置 - wxLegionActivityOfflineConfigService.handleOfflineConfig(wxLegionActivity); +// wxLegionActivityOfflineConfigService.handleOfflineConfig(wxLegionActivity); //处理军团配置 wxLegionActivityConfigService.handleLegionConfig(wxLegionActivity); @@ -205,7 +202,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ return activity; } //获取活动发奖配置 - activity.setOfflineActivityList(wxLegionActivityOfflineConfigService.getOfflineActivityList(activity)); +// activity.setOfflineActivityList(wxLegionActivityOfflineConfigService.getOfflineActivityList(activity)); //获取军团配置 WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); legionConfigQ.updateTenantInfo(activity); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java index 982d86a5c..c5f70fb78 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -1,10 +1,30 @@ package com.iformall.service.impl; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.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.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; /** * @author xiaohu @@ -15,6 +35,303 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityOrderServiceImpl extends ServiceImpl implements WxVtwoActivityOrderService{ + @Autowired + private WxVtwoActivityOrderMapper wxVtwoActivityOrderMapper; + + @Autowired + private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService; + + @Autowired + private WxMerchantService wxMerchantService; + @Autowired + private WxShopService wxShopService; + @Autowired + private MallUserInfoService mallUserInfoService; + @Autowired + private WxBusinessService wxBusinessService; + + @Autowired + private WxCUserBasicInfoService wxCUserBasicInfoService; + @Autowired + private WxCreditHistoryService wxCreditHistoryService; + + @Autowired + private ExcelService excelService; + + @Override + public PageInfo listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize) { + handlerQuery(record); + PageInfo recordPage = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivityOrderMapper.findList(record)); + handlerList(record,recordPage.getList()); + return recordPage; + } + + private void handlerQuery(WxVtwoActivityOrder record) { + //商户处理 + if (StringUtils.isNotBlank(record.getMerchantName())) { + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(record); + merchant.setName(record.getMerchantName()); + List mids = wxMerchantService.findIdList(merchant); + if (null == mids || mids.size() <= 0 ) { + record.setId(-1L); + }else { + record.setMerchantIdList(mids); + } + } + } + + @Override + public void handlerList(TenantEntity tenantEntity, List recordList) { + if (recordList == null || recordList.size() <= 0) { + return; + } + List merchantIds = recordList.stream().map(WxVtwoActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + List userIds = recordList.stream().map(WxVtwoActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + Map idAndNamesMap = new HashMap<>(); + Map merchantShopNumberMap = new HashMap<>(); + if(!merchantIds.isEmpty()){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setIds(merchantIds); + idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); + merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(tenantEntity, merchantIds, EnumYesOrNo.NO.getCode()); + } + Map userMap = new HashMap<>(); + if(!userIds.isEmpty()){ + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(tenantEntity); + userMap = mallUserInfoService.getUserMap(userInfoQ); + } + + Map bussinessMap = wxBusinessService.findAllMap(tenantEntity); + + for (WxVtwoActivityOrder record : recordList) { + if(record.getMerchantId() != null){ + record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); + record.setShopNumber(merchantShopNumberMap.get(record.getMerchantId())); + } + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } + if(record.getBusinessId() != null){ + record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle()); + } + } + } + + @Override + public boolean saveOrUpdate(WxVtwoActivityOrder activityOrder) { + if(activityOrder.getMerchantId() != null){ + WxMerchant merchant = wxMerchantService.selectById(activityOrder.getMerchantId()); + activityOrder.setBusinessId(merchant.getBusinessId()); + } + Date now = new Date(); + if(activityOrder.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityOrder.setId(idWorker.nextId()); + if(activityOrder.getAuditStatus() == null){ + activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); + } + activityOrder.setCreateDate(now); + activityOrder.setUpdateDate(now); + wxVtwoActivityOrderMapper.insert(activityOrder); + } + else{ + activityOrder.setUpdateDate(now); + wxVtwoActivityOrderMapper.updateById(activityOrder); + } + return true; + } + + @Override + public WxVtwoActivityOrder getById(Long id, String tenantId) { + return wxVtwoActivityOrderMapper.selectById(id,tenantId); + } + + @Override + public WxVtwoActivityOrder getInfoById(Long id, String tenantId) { + WxVtwoActivityOrder record = getById(id, tenantId); + if(record != null){ + WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId()); + record.setMerchantName(merchant.getName()); + } + return record; + } + + @Override + public Map getStatistics(WxVtwoActivityOrder record) { + List auditStatusStatistics = wxVtwoActivityOrderMapper.auditStatusStatistics(record); + Map result = new HashMap<>(); + Integer audting = 0, audi_success = 0, audt_fail = 0, invalid = 0; + 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(); + } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { + audt_fail = statistics.getCount(); + } else if (EnumOfflineActivityRecordStatus.INVALID.getCode().equals(statistics.getAuditStatus())) { + invalid = statistics.getCount(); + } + } + result.put("audting",audting); + result.put("audi_success",audi_success); + result.put("audt_fail",audt_fail); + result.put("invalid",invalid); + result.put("sum_count",audting+audi_success+audt_fail+invalid); + return result; + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + public void auditRecord(WxVtwoActivityOrder record, Long userId) { + Date now = new Date(); + record.setUpdateDate(now); + record.setAuditTime(now); + record.setAuditBy(userId); + wxVtwoActivityOrderMapper.updateAuditStatus(record); + + WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderMapper.selectById(record.getId(), record.getTenantId()); + activityOrder.setAuditBy(record.getAuditBy()); + activityOrder.setAuditStatus(record.getAuditStatus()); + activityOrder.setAuditBy(record.getAuditBy()); + saveCreditHistory(activityOrder); + } + + @Override + public void saveCreditHistory(WxVtwoActivityOrder record){ + if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus()) + && !EnumOfflineActivityRecordStatus.INVALID.getCode().equals(record.getAuditStatus())){ + return; + } + + WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicService.selectCreditOne(record,record.getCreateDate()); + if(specialTopic == null){ + return; + } + + WxCreditHistory creditHistory = new WxCreditHistory(); + creditHistory.setTenantId(record.getFinalTenantId()); + creditHistory.setOperatorType(EnumUserType.MALLUSER.getCode()); + creditHistory.setOperatorId(record.getAuditBy()); + creditHistory.setCreateDate(record.getAuditTime()); + + creditHistory.setCouponId(record.getId()); + creditHistory.setBusinessId(record.getBusinessId()); + creditHistory.setMerchantId(record.getMerchantId()); + + WxCUserBasicInfo cuser = wxCUserBasicInfoService.findInfoByPhone(record, record.getCusPhone()); + if(cuser == null){ + return; + } + creditHistory.setCUserId(cuser.getId()); + creditHistory.setCreditType(EnumScoreType.POINT_CHANGE.getCode()); + + Integer increasedPoints = record.getIncreasedPoints(); + if(increasedPoints == null){ + increasedPoints = 0; + } + if(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){ + if(increasedPoints > 0){ + return; + } + //计算积分 + WxVtwoActivityCreditRule creditConfigObject = specialTopic.getCreditConfigObject(); + BigDecimal priceCondition = creditConfigObject.getStep(); + int baseScore = creditConfigObject.getScore(); + + if (record.getOrderMoney().compareTo(priceCondition) > 0) { + increasedPoints = record.getOrderMoney().divide(priceCondition,0, RoundingMode.DOWN) + .multiply(BigDecimal.valueOf(baseScore)).intValue(); + } + if(increasedPoints == 0){ + return; + } + creditHistory.setCreditNum(increasedPoints); + }else if(EnumOfflineActivityRecordStatus.INVALID.getCode().equals(record.getAuditStatus())){ + if(increasedPoints == 0){ + return; + } + creditHistory.setCreditNum(-increasedPoints); + increasedPoints = 0; + } + if(creditHistory.getCreditNum() > 0){ + creditHistory.setChangePurpose("活动订单("+record.getOrderNo()+")新增积分"+creditHistory.getCreditNum()); + }else if(creditHistory.getCreditNum() < 0){ + creditHistory.setChangePurpose("活动订单("+record.getOrderNo()+")退单-积分扣减"+creditHistory.getCreditNum()); + } + creditHistory = wxCreditHistoryService.saveOrUpdate(creditHistory,record); + + record.setIncreasedPoints(increasedPoints); + wxVtwoActivityOrderMapper.updateIncreasedPoints(record); + } + + @Override + public Map orderStatistics(TenantEntity tenantInfo) { + //最近30天 + Date now = new Date(); + String monthStartdate = DateUtils.getTimeBefore(30, now); + String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间 + String weekStartdate = DateUtils.getTimeBefore(7, now); + String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间 + String yesterdayDate = DateUtils.getTimeBefore(1, now); + String today = DateUtils.getTimeBefore(0, now); + + //最近30天数据 + WxVtwoActivityOrder recordQ = new WxVtwoActivityOrder(); + recordQ.updateTenantInfo(tenantInfo); + recordQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); + Integer monthCount = wxVtwoActivityOrderMapper.getCount(recordQ); + //一周前的昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate)); + Integer yesWeekCount = wxVtwoActivityOrderMapper.getCount(recordQ); + //昨天的昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate)); + Integer yesYesCount = wxVtwoActivityOrderMapper.getCount(recordQ); + //昨天 + recordQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate)); + recordQ.setCreateDateEnd(DateUtils.stringToDate(today)); + Integer yesCount = wxVtwoActivityOrderMapper.getCount(recordQ); + + Map result = new HashMap<>(); + result.put("monthCount",monthCount); + + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); + String dayPercentage = "--"; + if (yesYesCount > 0) { + Integer count = yesCount - yesYesCount; + dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue()); + } + result.put("dayPercentage",dayPercentage); + String weekPercentage = "--"; + if (yesWeekCount > 0) { + Integer count = yesCount - yesWeekCount; + weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue()); + } + result.put("weekPercentage",weekPercentage); + return result; + } + + @Override + public void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record) { + handlerQuery(record); + List list = wxVtwoActivityOrderMapper.findList(record); + handlerList(record,list); + excelService.exportExcel(list, null, "活动订单列表", WxOfflineActivityRecord.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); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java index 1d573a7dc..077f8ceda 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -7,6 +7,7 @@ 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.TenantEntity; import com.iformall.domain.vo.WxVtwoActivityCreditRule; import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; import com.iformall.domain.vo.WxVtwoActivityRule; @@ -136,6 +137,16 @@ public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl - + @@ -43,7 +43,7 @@ real_cus_name,cus_phone,cus_card, cus_address,legion_id,legion_name, union_id,union_name,from_order_id, - order_no,order_amount,merchant_id, + order_no,order_money,merchant_id, business_id,lottery_num,lottery_count, anniversary_lottery_num,audit_status,audit_remark, audit_by,audit_time,increased_points, @@ -136,7 +136,7 @@ select count(DISTINCT cus_phone) userCount, count(1) orderCount, - IFNULL(sum(order_amount),0) sumAmount, + IFNULL(sum(order_money),0) sumMoney, count(DISTINCT merchant_id) merchantCount from wx_vtwo_activity_order @@ -197,7 +197,7 @@ select DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, count(DISTINCT cus_phone) userCount, count(1) orderCount, - IFNULL(sum(order_amount),0) sumAmount, + IFNULL(sum(order_money),0) sumMoney, count(DISTINCT merchant_id) merchantCount from wx_vtwo_activity_order @@ -206,7 +206,7 @@ - select from wx_vtwo_activity_special_topic where `tenant_id` = #{tenantId} and credit_on_off = #{creditOnOff} diff --git a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml index c994cc0da..62f84b734 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml @@ -71,4 +71,29 @@ #{item.updateDate,jdbcType=TIMESTAMP}) + + + update wx_vtwo_activity_award + set + + `activity_name` = #{activityName}, + + + `activity_start_time` = #{activityStartTime}, + + + `activity_end_time` = #{activityEndTime}, + + + `activity_status` = #{activityStatus}, + + `update_date` = #{updateDate} + where `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + and `tenant_id` = #{tenantId} + +